Compare commits
395 Commits
feat/workf
...
stable24
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
93307bb247 | ||
|
|
45f2eedafe | ||
|
|
6fb0f6209c | ||
|
|
043327dc09 | ||
|
|
05aafd9ddb | ||
|
|
5f789962b4 | ||
|
|
ff2c11c796 | ||
|
|
3dee8587b7 | ||
|
|
86751c4b89 | ||
|
|
f70b31c449 | ||
|
|
52c5020ba4 | ||
|
|
1f71d1ab78 | ||
|
|
9119017ce8 | ||
|
|
0c0bb40515 | ||
|
|
0954d4d8a0 | ||
|
|
272da5406a | ||
|
|
aef06d833d | ||
|
|
71948d670e | ||
|
|
22a3efe445 | ||
|
|
6aca034222 | ||
|
|
b37ba6a409 | ||
|
|
ffb99b8010 | ||
|
|
7e33f38b4c | ||
|
|
5391689eb0 | ||
|
|
e289e05c98 | ||
|
|
efb0bef5e1 | ||
|
|
1825ae4711 | ||
|
|
c4bdffbce5 | ||
|
|
7eb57b0ed1 | ||
|
|
3516e7a9c2 | ||
|
|
5a5ee3cd4f | ||
|
|
574aa325a0 | ||
|
|
933e0b097e | ||
|
|
2a6023cf86 | ||
|
|
b1ee1ae156 | ||
|
|
892727fed0 | ||
|
|
cced84af3d | ||
|
|
f33477fe1a | ||
|
|
bafc3e5221 | ||
|
|
67ecf24d86 | ||
|
|
10bda7253e | ||
|
|
1713343dd4 | ||
|
|
c2cf3feb25 | ||
|
|
56792e048a | ||
|
|
dae3144c25 | ||
|
|
31b73fe6bb | ||
|
|
ef686bef34 | ||
|
|
50609944bc | ||
|
|
21727cfb3a | ||
|
|
a93b874b89 | ||
|
|
c573c33926 | ||
|
|
9ff9858e9e | ||
|
|
aa3c80e8d0 | ||
|
|
56c4d45712 | ||
|
|
4f67d2fe60 | ||
|
|
875ac0d6e9 | ||
|
|
741df20b49 | ||
|
|
0ac494df9d | ||
|
|
a8ce89d487 | ||
|
|
2fcbbbbc23 | ||
|
|
4f673fe598 | ||
|
|
02ba8f85ce | ||
|
|
f88d53d7f1 | ||
|
|
6a5eecea76 | ||
|
|
b61667c90b | ||
|
|
6864846d84 | ||
|
|
962256acb0 | ||
|
|
9db8c9af80 | ||
|
|
88bd868e76 | ||
|
|
3c88551ad5 | ||
|
|
0872b1b606 | ||
|
|
65242c2b6c | ||
|
|
a3527542f9 | ||
|
|
28e4b12428 | ||
|
|
628cd333f1 | ||
|
|
ccfaa4886a | ||
|
|
0ef238da0e | ||
|
|
333b904335 | ||
|
|
32a956af02 | ||
|
|
b7dad3134d | ||
|
|
42f76117f2 | ||
|
|
be1c646bd7 | ||
|
|
137fece0b8 | ||
|
|
81e5922dfd | ||
|
|
ccc216d388 | ||
|
|
3f7ab93df9 | ||
|
|
a621aacac0 | ||
|
|
bb7ed1bc31 | ||
|
|
4d0f7ddef3 | ||
|
|
bd13cc09d8 | ||
|
|
cb3925faeb | ||
|
|
ac11571a7d | ||
|
|
fd4564450b | ||
|
|
acbd42d6a4 | ||
|
|
458831dfc7 | ||
|
|
8a5098951c | ||
|
|
99260ae966 | ||
|
|
ea592251f9 | ||
|
|
6c80674ce0 | ||
|
|
060e8cd7db | ||
|
|
f05bd86be9 | ||
|
|
1ce7856cae | ||
|
|
678e4c9569 | ||
|
|
4fe4216cb5 | ||
|
|
85e7305d8d | ||
|
|
090378580c | ||
|
|
3f8efb5368 | ||
|
|
c1f2fd452b | ||
|
|
576c47bdef | ||
|
|
e907aeb8c0 | ||
|
|
c51119d051 | ||
|
|
ee72cb4660 | ||
|
|
d4f2ed263f | ||
|
|
e6f8796b63 | ||
|
|
846443d003 | ||
|
|
144c27d403 | ||
|
|
f374084989 | ||
|
|
0656e53508 | ||
|
|
7506126ef7 | ||
|
|
5214721875 | ||
|
|
34f7b726cd | ||
|
|
ea5baa5339 | ||
|
|
7c3aa301ac | ||
|
|
313bc90ce9 | ||
|
|
be06c7ab70 | ||
|
|
5964da382e | ||
|
|
eaa2facc29 | ||
|
|
13e836760a | ||
|
|
73815827e1 | ||
|
|
34107ad06f | ||
|
|
90535b3c30 | ||
|
|
312376e596 | ||
|
|
04dbe45f29 | ||
|
|
bc38340daf | ||
|
|
9b89897d74 | ||
|
|
f411181dcf | ||
|
|
080465d48a | ||
|
|
2358645037 | ||
|
|
c6545c7c00 | ||
|
|
3baa2fc1a0 | ||
|
|
fd297dc92e | ||
|
|
4608e4b77b | ||
|
|
524b8ba90e | ||
|
|
569e568136 | ||
|
|
d9c563d5bf | ||
|
|
f51956891e | ||
|
|
053ecdacee | ||
|
|
8f755ee3eb | ||
|
|
fa6d819409 | ||
|
|
fa17dfac3a | ||
|
|
92b20efa89 | ||
|
|
2849177998 | ||
|
|
0bbeedb7e3 | ||
|
|
918f22f7a6 | ||
|
|
ecac9b772b | ||
|
|
f0a4469be5 | ||
|
|
f47f4983d9 | ||
|
|
c9b8735804 | ||
|
|
c9d7647200 | ||
|
|
4a8410f0fc | ||
|
|
4fbb383c0f | ||
|
|
98361ff096 | ||
|
|
31f2ca49d5 | ||
|
|
e0e6f86801 | ||
|
|
0bc4e1fa7b | ||
|
|
0d137a372c | ||
|
|
2d1ad75f35 | ||
|
|
e381e021d6 | ||
|
|
59f0813aa5 | ||
|
|
90d14c544f | ||
|
|
02ca7acf4f | ||
|
|
0725b55773 | ||
|
|
1219c0aed0 | ||
|
|
da57b9c7e1 | ||
|
|
e67822167b | ||
|
|
20e3729b86 | ||
|
|
5c3d88dae0 | ||
|
|
2fb86b11ec | ||
|
|
5d9c504842 | ||
|
|
1610968ed7 | ||
|
|
aad4aafc03 | ||
|
|
40e3987ae6 | ||
|
|
d3a77e4a11 | ||
|
|
c93189ff9a | ||
|
|
bca7b3386c | ||
|
|
3c7cc0b09c | ||
|
|
8e35b67a0d | ||
|
|
bfb292c54d | ||
|
|
ab6c775f5c | ||
|
|
e3e9e4596a | ||
|
|
fefe77c245 | ||
|
|
42108cb223 | ||
|
|
72d7a245d2 | ||
|
|
e187a665d5 | ||
|
|
01ab23dc82 | ||
|
|
004814ace7 | ||
|
|
326a38557b | ||
|
|
6e43ed5fce | ||
|
|
8b92610f67 | ||
|
|
6cc919b62d | ||
|
|
3ff47580ad | ||
|
|
a1a2120d43 | ||
|
|
273222bb21 | ||
|
|
1255e5a6c9 | ||
|
|
dace366b6c | ||
|
|
a2f5414c48 | ||
|
|
1887527197 | ||
|
|
6d35c2f1c1 | ||
|
|
51626698c4 | ||
|
|
5ed2b23f76 | ||
|
|
502b5acb69 | ||
|
|
03b5257fea | ||
|
|
39b158f92d | ||
|
|
3163136b73 | ||
|
|
9791444167 | ||
|
|
77acf95106 | ||
|
|
6505cc99ce | ||
|
|
54d1a40eeb | ||
|
|
ab577a95eb | ||
|
|
8537d4acef | ||
|
|
d0fda8a546 | ||
|
|
031f69523d | ||
|
|
3864f29bbd | ||
|
|
ee1b32fcd7 | ||
|
|
6ad6b1680f | ||
|
|
b158d79403 | ||
|
|
2d823e3321 | ||
|
|
9a153356c2 | ||
|
|
eaf5e6ff29 | ||
|
|
585a02a3d2 | ||
|
|
30acd27c94 | ||
|
|
71db398e9a | ||
|
|
d8f44e2c94 | ||
|
|
20c8cb12e3 | ||
|
|
60eadb7035 | ||
|
|
17e71c5c9a | ||
|
|
289c0f72dd | ||
|
|
c2a326d538 | ||
|
|
438bb8cb0d | ||
|
|
b98f8e3b07 | ||
|
|
333206c549 | ||
|
|
5359ec34ef | ||
|
|
ab7da85964 | ||
|
|
7ecb215957 | ||
|
|
df89839b51 | ||
|
|
03ed40df67 | ||
|
|
ad1429b4a2 | ||
|
|
eb03cd6814 | ||
|
|
566846fe4d | ||
|
|
f4c09fefd9 | ||
|
|
bd6e632055 | ||
|
|
75ddc058b8 | ||
|
|
8558ce432a | ||
|
|
7586084980 | ||
|
|
863de715a4 | ||
|
|
04abf47653 | ||
|
|
45c9a8ba27 | ||
|
|
3d10521524 | ||
|
|
ef616f37bd | ||
|
|
e64c36ffce | ||
|
|
837d925536 | ||
|
|
feaeb90f76 | ||
|
|
2ea94a12ad | ||
|
|
c8cf8238b8 | ||
|
|
16f41f74b3 | ||
|
|
3a78eea105 | ||
|
|
8e158972f4 | ||
|
|
b12a1306eb | ||
|
|
1175c8b605 | ||
|
|
4b06ef3ac0 | ||
|
|
5f59f485f2 | ||
|
|
2f28015b91 | ||
|
|
675aff612d | ||
|
|
9ad65af60e | ||
|
|
2210c05e28 | ||
|
|
a189139a04 | ||
|
|
c6a209c63a | ||
|
|
1968d8493b | ||
|
|
a94eb0cd31 | ||
|
|
b2bbf31f46 | ||
|
|
2b959c10dd | ||
|
|
81669635c5 | ||
|
|
7350a2a811 | ||
|
|
e677cbcdac | ||
|
|
6d7461d0d1 | ||
|
|
86d94166f0 | ||
|
|
a664545ebf | ||
|
|
360bd4192b | ||
|
|
da3f2b8ee4 | ||
|
|
78aa411e09 | ||
|
|
2d318c0ac1 | ||
|
|
b58f598044 | ||
|
|
bad2a19be6 | ||
|
|
a89bdab5e3 | ||
|
|
5b2c03f733 | ||
|
|
552e10d79d | ||
|
|
40f39fa21a | ||
|
|
d5c1833638 | ||
|
|
36dd98c93e | ||
|
|
ccbec7f5ac | ||
|
|
0359e89b22 | ||
|
|
e9f8634334 | ||
|
|
1889c0c4f9 | ||
|
|
1ac501db79 | ||
|
|
c9ddd4f997 | ||
|
|
e8a0d7c47c | ||
|
|
8ace53bfe2 | ||
|
|
89c3490015 | ||
|
|
72bc2f438a | ||
|
|
1183459608 | ||
|
|
a4e6c7b746 | ||
|
|
b99fb6e8f6 | ||
|
|
f613a60f7c | ||
|
|
7c77cde669 | ||
|
|
9a7bde4cbd | ||
|
|
b807a71f1f | ||
|
|
33942236f0 | ||
|
|
3dd3301ffc | ||
|
|
0d310d317e | ||
|
|
82515e5731 | ||
|
|
4cd4707559 | ||
|
|
90c14861c4 | ||
|
|
17a51501ec | ||
|
|
86707f18dd | ||
|
|
a28cd746f1 | ||
|
|
10ad995cd0 | ||
|
|
856c5f50c4 | ||
|
|
0a9d96d964 | ||
|
|
1d15921a57 | ||
|
|
b9826cb29f | ||
|
|
94c13bbbdb | ||
|
|
549f9c9045 | ||
|
|
ac16521404 | ||
|
|
4be298f537 | ||
|
|
10dead9d9f | ||
|
|
f9cb601a99 | ||
|
|
efdd3b0056 | ||
|
|
a18f550dc1 | ||
|
|
d808b9fef7 | ||
|
|
f4742259f2 | ||
|
|
3fe5da0ee1 | ||
|
|
17ae3a9a39 | ||
|
|
1ff588a15a | ||
|
|
2bb04ef298 | ||
|
|
055dda909e | ||
|
|
f364709318 | ||
|
|
84de1c0198 | ||
|
|
413017d333 | ||
|
|
5c069e5413 | ||
|
|
9d9cdb0f95 | ||
|
|
74f45e2e54 | ||
|
|
f82c48ad29 | ||
|
|
ece052a20d | ||
|
|
8a9a36ed10 | ||
|
|
82f2a2c363 | ||
|
|
3016659c81 | ||
|
|
b9ab0f14ab | ||
|
|
2d90ed7414 | ||
|
|
5d87f05994 | ||
|
|
9ef183bcaa | ||
|
|
34f18fbd7d | ||
|
|
27fa2bbc54 | ||
|
|
03a88327a5 | ||
|
|
67ac21e688 | ||
|
|
e90f32ca32 | ||
|
|
b21e65027c | ||
|
|
b628532def | ||
|
|
e0b2755b7c | ||
|
|
9e1fbb9852 | ||
|
|
047ca3e203 | ||
|
|
bfcd5357e3 | ||
|
|
461ed6b81f | ||
|
|
ee2969fc5b | ||
|
|
ca32ebd9cb | ||
|
|
4a29617fed | ||
|
|
8eab97a92a | ||
|
|
f453f69cce | ||
|
|
8ca84147e8 | ||
|
|
5e3ddd83fc | ||
|
|
6b985463d8 | ||
|
|
25e0ae2670 | ||
|
|
614c6fbdba | ||
|
|
8efe415558 | ||
|
|
f3ad2a3709 | ||
|
|
25dd71ba04 | ||
|
|
a514e6e168 | ||
|
|
cb5553ea94 | ||
|
|
335ee31c7c | ||
|
|
9b4379727d | ||
|
|
a5fe2f59be | ||
|
|
1b58f7854e | ||
|
|
b6effa468f | ||
|
|
2b512b88c4 | ||
|
|
5cb61cba90 | ||
|
|
0657efe239 |
@@ -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
|
|
||||||
@@ -3,10 +3,7 @@ root = true
|
|||||||
[*]
|
[*]
|
||||||
charset = utf-8
|
charset = utf-8
|
||||||
end_of_line = lf
|
end_of_line = lf
|
||||||
indent_size = tab
|
|
||||||
indent_style = tab
|
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
trim_trailing_whitespace = true
|
|
||||||
|
|
||||||
[*.{js,vue}]
|
[*.{js,vue}]
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
root: true,
|
|
||||||
extends: [
|
extends: [
|
||||||
'@nextcloud',
|
'@nextcloud',
|
||||||
],
|
],
|
||||||
@@ -8,7 +7,6 @@ module.exports = {
|
|||||||
'jsdoc/require-param-type': ['off'],
|
'jsdoc/require-param-type': ['off'],
|
||||||
'jsdoc/check-param-names': ['off'],
|
'jsdoc/check-param-names': ['off'],
|
||||||
'jsdoc/no-undefined-types': ['off'],
|
'jsdoc/no-undefined-types': ['off'],
|
||||||
'jsdoc/require-property-description': ['off'],
|
'jsdoc/require-property-description' : ['off']
|
||||||
'import/no-named-as-default-member': ['off'],
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
71
.github/dependabot.yml
vendored
@@ -2,7 +2,7 @@ version: 2
|
|||||||
updates:
|
updates:
|
||||||
- package-ecosystem: npm
|
- package-ecosystem: npm
|
||||||
directory: "/"
|
directory: "/"
|
||||||
target-branch: "main"
|
target-branch: "master"
|
||||||
schedule:
|
schedule:
|
||||||
interval: weekly
|
interval: weekly
|
||||||
day: saturday
|
day: saturday
|
||||||
@@ -11,75 +11,6 @@ updates:
|
|||||||
open-pull-requests-limit: 10
|
open-pull-requests-limit: 10
|
||||||
reviewers:
|
reviewers:
|
||||||
- juliushaertl
|
- juliushaertl
|
||||||
|
|
||||||
- package-ecosystem: npm
|
|
||||||
target-branch: stable27
|
|
||||||
versioning-strategy: lockfile-only
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: weekly
|
|
||||||
day: saturday
|
|
||||||
time: "03:00"
|
|
||||||
timezone: Europe/Paris
|
|
||||||
ignore:
|
|
||||||
- dependency-name: "*"
|
|
||||||
update-types: ["version-update:semver-major"]
|
|
||||||
open-pull-requests-limit: 30
|
|
||||||
labels:
|
|
||||||
- 3. to review
|
|
||||||
- dependencies
|
|
||||||
|
|
||||||
- package-ecosystem: npm
|
|
||||||
target-branch: stable26
|
|
||||||
versioning-strategy: lockfile-only
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: weekly
|
|
||||||
day: saturday
|
|
||||||
time: "03:00"
|
|
||||||
timezone: Europe/Paris
|
|
||||||
ignore:
|
|
||||||
- dependency-name: "*"
|
|
||||||
update-types: ["version-update:semver-major"]
|
|
||||||
open-pull-requests-limit: 30
|
|
||||||
labels:
|
|
||||||
- 3. to review
|
|
||||||
- dependencies
|
|
||||||
|
|
||||||
- package-ecosystem: npm
|
|
||||||
target-branch: stable25
|
|
||||||
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: stable24
|
|
||||||
versioning-strategy: lockfile-only
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: weekly
|
|
||||||
day: saturday
|
|
||||||
time: "03:00"
|
|
||||||
timezone: Europe/Paris
|
|
||||||
ignore:
|
|
||||||
- dependency-name: "*"
|
|
||||||
update-types: ["version-update:semver-major"]
|
|
||||||
open-pull-requests-limit: 30
|
|
||||||
labels:
|
|
||||||
- 3. to review
|
|
||||||
- dependencies
|
|
||||||
|
|
||||||
- package-ecosystem: composer
|
- package-ecosystem: composer
|
||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
|
|||||||
2
.github/pull_request_template.md
vendored
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
* Resolves: # <!-- related github issue -->
|
* Resolves: # <!-- related github issue -->
|
||||||
* Target version: main
|
* Target version: master
|
||||||
|
|
||||||
### Summary
|
### Summary
|
||||||
|
|
||||||
|
|||||||
43
.github/workflows/appbuild.yml
vendored
@@ -1,43 +0,0 @@
|
|||||||
name: Package build
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- master
|
|
||||||
- stable*
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
node-version: [16.x]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@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.25.4
|
|
||||||
with:
|
|
||||||
php-version: '7.4'
|
|
||||||
tools: composer
|
|
||||||
- name: install dependencies
|
|
||||||
run: |
|
|
||||||
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb
|
|
||||||
sudo dpkg -i krankerl_0.14.0_amd64.deb
|
|
||||||
- name: package
|
|
||||||
run: |
|
|
||||||
uname -a
|
|
||||||
RUST_BACKTRACE=1 krankerl --version
|
|
||||||
RUST_BACKTRACE=1 krankerl package
|
|
||||||
- uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: Deck app tarball
|
|
||||||
path: build/artifacts/deck.tar.gz
|
|
||||||
52
.github/workflows/appstore-build-publish.yml
vendored
@@ -10,7 +10,7 @@ on:
|
|||||||
types: [published]
|
types: [published]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
PHP_VERSION: 8.1
|
PHP_VERSION: 7.4
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_and_publish:
|
build_and_publish:
|
||||||
@@ -21,7 +21,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check actor permission
|
- name: Check actor permission
|
||||||
uses: skjnldsv/check-actor-permission@e591dbfe838300c007028e1219ca82cc26e8d7c5 # v2.1
|
uses: skjnldsv/check-actor-permission@v2
|
||||||
with:
|
with:
|
||||||
require: write
|
require: write
|
||||||
|
|
||||||
@@ -32,31 +32,31 @@ jobs:
|
|||||||
echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
|
echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
path: ${{ env.APP_NAME }}
|
path: ${{ env.APP_NAME }}
|
||||||
|
|
||||||
- name: Get appinfo data
|
- name: Get appinfo data
|
||||||
id: appinfo
|
id: appinfo
|
||||||
uses: skjnldsv/xpath-action@7e6a7c379d0e9abc8acaef43df403ab4fc4f770c # master
|
uses: skjnldsv/xpath-action@master
|
||||||
with:
|
with:
|
||||||
filename: ${{ env.APP_NAME }}/appinfo/info.xml
|
filename: ${{ env.APP_NAME }}/appinfo/info.xml
|
||||||
expression: "//info//dependencies//nextcloud/@min-version"
|
expression: "//info//dependencies//nextcloud/@min-version"
|
||||||
|
|
||||||
- name: Read package.json node and npm engines version
|
- name: Read package.json node and npm engines version
|
||||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
|
uses: skjnldsv/read-package-engines-version-actions@v1.2
|
||||||
id: versions
|
id: versions
|
||||||
# Continue if no package.json
|
# Continue if no package.json
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
with:
|
with:
|
||||||
path: ${{ env.APP_NAME }}
|
path: ${{ env.APP_NAME }}
|
||||||
fallbackNode: "^16"
|
fallbackNode: "^12"
|
||||||
fallbackNpm: "^7"
|
fallbackNpm: "^6"
|
||||||
|
|
||||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||||
# Skip if no package.json
|
# Skip if no package.json
|
||||||
if: ${{ steps.versions.outputs.nodeVersion }}
|
if: ${{ steps.versions.outputs.nodeVersion }}
|
||||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||||
|
|
||||||
@@ -66,16 +66,14 @@ jobs:
|
|||||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
||||||
|
|
||||||
- name: Set up php ${{ env.PHP_VERSION }}
|
- name: Set up php ${{ env.PHP_VERSION }}
|
||||||
uses: shivammathur/setup-php@2.25.4 # v2
|
uses: shivammathur/setup-php@2.18.0
|
||||||
with:
|
with:
|
||||||
php-version: ${{ env.PHP_VERSION }}
|
php-version: ${{ env.PHP_VERSION }}
|
||||||
coverage: none
|
coverage: none
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Check composer.json
|
- name: Check composer.json
|
||||||
id: check_composer
|
id: check_composer
|
||||||
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
|
uses: andstor/file-existence-action@v1
|
||||||
with:
|
with:
|
||||||
files: "${{ env.APP_NAME }}/composer.json"
|
files: "${{ env.APP_NAME }}/composer.json"
|
||||||
|
|
||||||
@@ -93,29 +91,16 @@ jobs:
|
|||||||
npm ci
|
npm ci
|
||||||
npm run build
|
npm run build
|
||||||
|
|
||||||
- name: Check Krankerl config
|
|
||||||
id: krankerl
|
|
||||||
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
|
|
||||||
with:
|
|
||||||
files: ${{ env.APP_NAME }}/krankerl.toml
|
|
||||||
|
|
||||||
- name: Install Krankerl
|
- name: Install Krankerl
|
||||||
if: steps.krankerl.outputs.files_exists == 'true'
|
|
||||||
run: |
|
run: |
|
||||||
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb
|
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.13.0/krankerl_0.13.0_amd64.deb
|
||||||
sudo dpkg -i krankerl_0.14.0_amd64.deb
|
sudo dpkg -i krankerl_0.13.0_amd64.deb
|
||||||
|
|
||||||
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with krankerl
|
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }}
|
||||||
if: steps.krankerl.outputs.files_exists == 'true'
|
# Try krankerl, fallback to makefile
|
||||||
run: |
|
run: |
|
||||||
cd ${{ env.APP_NAME }}
|
cd ${{ env.APP_NAME }}
|
||||||
krankerl package
|
krankerl package || make appstore
|
||||||
|
|
||||||
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with makefile
|
|
||||||
if: steps.krankerl.outputs.files_exists != 'true'
|
|
||||||
run: |
|
|
||||||
cd ${{ env.APP_NAME }}
|
|
||||||
make appstore
|
|
||||||
|
|
||||||
- name: Checkout server ${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }}
|
- name: Checkout server ${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }}
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
@@ -126,10 +111,9 @@ jobs:
|
|||||||
unzip latest-$NCVERSION.zip
|
unzip latest-$NCVERSION.zip
|
||||||
|
|
||||||
- name: Checkout server master fallback
|
- name: Checkout server master fallback
|
||||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
uses: actions/checkout@v3
|
||||||
if: ${{ steps.server-checkout.outcome != 'success' }}
|
if: ${{ steps.server-checkout.outcome != 'success' }}
|
||||||
with:
|
with:
|
||||||
submodules: true
|
|
||||||
repository: nextcloud/server
|
repository: nextcloud/server
|
||||||
path: nextcloud
|
path: nextcloud
|
||||||
|
|
||||||
@@ -149,7 +133,7 @@ jobs:
|
|||||||
tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }}
|
tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }}
|
||||||
|
|
||||||
- name: Attach tarball to github release
|
- name: Attach tarball to github release
|
||||||
uses: svenstaro/upload-release-action@2b9d2847a97b04d02ad5c3df2d3a27baa97ce689 # v2
|
uses: svenstaro/upload-release-action@v2
|
||||||
id: attach_to_release
|
id: attach_to_release
|
||||||
with:
|
with:
|
||||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -159,7 +143,7 @@ jobs:
|
|||||||
overwrite: true
|
overwrite: true
|
||||||
|
|
||||||
- name: Upload app to Nextcloud appstore
|
- name: Upload app to Nextcloud appstore
|
||||||
uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1
|
uses: nextcloud-releases/nextcloud-appstore-push-action@v1
|
||||||
with:
|
with:
|
||||||
app_name: ${{ env.APP_NAME }}
|
app_name: ${{ env.APP_NAME }}
|
||||||
appstore_token: ${{ secrets.APPSTORE_TOKEN }}
|
appstore_token: ${{ secrets.APPSTORE_TOKEN }}
|
||||||
|
|||||||
13
.github/workflows/command-rebase.yml
vendored
@@ -9,21 +9,16 @@ on:
|
|||||||
issue_comment:
|
issue_comment:
|
||||||
types: created
|
types: created
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
rebase:
|
rebase:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
|
||||||
contents: none
|
|
||||||
|
|
||||||
# On pull requests and if the comment starts with `/rebase`
|
# On pull requests and if the comment starts with `/rebase`
|
||||||
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase')
|
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase')
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Add reaction on start
|
- name: Add reaction on start
|
||||||
uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.2
|
uses: peter-evans/create-or-update-comment@v2
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||||
repository: ${{ github.event.repository.full_name }}
|
repository: ${{ github.event.repository.full_name }}
|
||||||
@@ -31,18 +26,18 @@ jobs:
|
|||||||
reaction-type: "+1"
|
reaction-type: "+1"
|
||||||
|
|
||||||
- name: Checkout the latest code
|
- name: Checkout the latest code
|
||||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||||
|
|
||||||
- name: Automatic Rebase
|
- name: Automatic Rebase
|
||||||
uses: cirrus-actions/rebase@b87d48154a87a85666003575337e27b8cd65f691 # 1.8
|
uses: cirrus-actions/rebase@1.5
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
|
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
|
||||||
|
|
||||||
- name: Add reaction on failure
|
- name: Add reaction on failure
|
||||||
uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.2
|
uses: peter-evans/create-or-update-comment@v2
|
||||||
if: failure()
|
if: failure()
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||||
|
|||||||
146
.github/workflows/cypress.yml
vendored
@@ -1,146 +0,0 @@
|
|||||||
name: Cypress
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- master
|
|
||||||
- stable*
|
|
||||||
|
|
||||||
env:
|
|
||||||
# Adjust APP_NAME if your repository name is different
|
|
||||||
APP_NAME: ${{ github.event.repository.name }}
|
|
||||||
|
|
||||||
# This represents the server branch to checkout.
|
|
||||||
# Usually it's the base branch of the PR, but for pushes it's the branch itself.
|
|
||||||
# e.g. 'main', 'stable27' or 'feature/my-feature
|
|
||||||
# n.b. server will use head_ref, as we want to test the PR branch.
|
|
||||||
BRANCH: ${{ github.base_ref || github.ref_name }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
init:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
outputs:
|
|
||||||
nodeVersion: ${{ steps.versions.outputs.nodeVersion }}
|
|
||||||
npmVersion: ${{ steps.versions.outputs.npmVersion }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout app
|
|
||||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
|
||||||
|
|
||||||
- name: Check composer.json
|
|
||||||
id: check_composer
|
|
||||||
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
|
|
||||||
with:
|
|
||||||
files: "composer.json"
|
|
||||||
|
|
||||||
- name: Install composer dependencies
|
|
||||||
if: steps.check_composer.outputs.files_exists == 'true'
|
|
||||||
run: composer install --no-dev
|
|
||||||
|
|
||||||
- name: Read package.json node and npm engines version
|
|
||||||
uses: skjnldsv/read-package-engines-version-actions@0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7 # v2.1
|
|
||||||
id: versions
|
|
||||||
with:
|
|
||||||
fallbackNode: "^20"
|
|
||||||
fallbackNpm: "^9"
|
|
||||||
|
|
||||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
|
||||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
|
|
||||||
with:
|
|
||||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
|
||||||
|
|
||||||
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
|
|
||||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
|
||||||
|
|
||||||
- name: Install node dependencies & build app
|
|
||||||
run: |
|
|
||||||
npm ci
|
|
||||||
TESTING=true npm run build --if-present
|
|
||||||
|
|
||||||
- name: Save context
|
|
||||||
uses: buildjet/cache/save@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3
|
|
||||||
with:
|
|
||||||
key: cypress-context-${{ github.run_id }}
|
|
||||||
path: ./
|
|
||||||
|
|
||||||
cypress:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: init
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
# Run multiple copies of the current job in parallel
|
|
||||||
# Please increase the number or runners as your tests suite grows
|
|
||||||
containers: ["component", 1, 2, 3]
|
|
||||||
|
|
||||||
name: runner ${{ matrix.containers }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Restore context
|
|
||||||
uses: buildjet/cache/restore@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3
|
|
||||||
with:
|
|
||||||
fail-on-cache-miss: true
|
|
||||||
key: cypress-context-${{ github.run_id }}
|
|
||||||
path: ./
|
|
||||||
|
|
||||||
- name: Set up node ${{ needs.init.outputs.nodeVersion }}
|
|
||||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
|
|
||||||
with:
|
|
||||||
node-version: ${{ needs.init.outputs.nodeVersion }}
|
|
||||||
|
|
||||||
- name: Set up npm ${{ needs.init.outputs.npmVersion }}
|
|
||||||
run: npm i -g npm@"${{ needs.init.outputs.npmVersion }}"
|
|
||||||
|
|
||||||
- name: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }} cypress tests
|
|
||||||
uses: cypress-io/github-action@db1693016f23ccf9043f4b2428f9b04e5d502a73 # v5.8.1
|
|
||||||
with:
|
|
||||||
record: true
|
|
||||||
parallel: true
|
|
||||||
# cypress run type
|
|
||||||
component: ${{ matrix.containers == 'component' }}
|
|
||||||
group: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }}
|
|
||||||
# cypress env
|
|
||||||
ci-build-id: ${{ github.sha }}-${{ github.run_number }}
|
|
||||||
tag: ${{ github.event_name }}
|
|
||||||
env:
|
|
||||||
# Needs to be prefixed with CYPRESS_
|
|
||||||
CYPRESS_BRANCH: ${{ env.BRANCH }}
|
|
||||||
# https://github.com/cypress-io/github-action/issues/124
|
|
||||||
COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }}
|
|
||||||
# Needed for some specific code workarounds
|
|
||||||
TESTING: true
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
|
|
||||||
|
|
||||||
- name: Upload snapshots
|
|
||||||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
|
||||||
if: always()
|
|
||||||
with:
|
|
||||||
name: snapshots_${{ matrix.containers }}
|
|
||||||
path: cypress/snapshots
|
|
||||||
|
|
||||||
- name: Extract NC logs
|
|
||||||
if: failure() && matrix.containers != 'component'
|
|
||||||
run: docker logs nextcloud-cypress-tests-${{ env.APP_NAME }} > nextcloud.log
|
|
||||||
|
|
||||||
- name: Upload NC logs
|
|
||||||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
|
||||||
if: failure() && matrix.containers != 'component'
|
|
||||||
with:
|
|
||||||
name: nc_logs_${{ matrix.containers }}
|
|
||||||
path: nextcloud.log
|
|
||||||
|
|
||||||
summary:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [init, cypress]
|
|
||||||
|
|
||||||
if: always()
|
|
||||||
|
|
||||||
name: cypress-summary
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Summary status
|
|
||||||
run: if ${{ needs.init.result != 'success' || ( needs.cypress.result != 'success' && needs.cypress.result != 'skipped' ) }}; then exit 1; fi
|
|
||||||
15
.github/workflows/dependabot-approve-merge.yml
vendored
@@ -8,33 +8,22 @@ name: Dependabot
|
|||||||
on:
|
on:
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
branches:
|
branches:
|
||||||
- main
|
|
||||||
- master
|
- master
|
||||||
- stable*
|
- stable*
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: dependabot-approve-merge-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
auto-approve-merge:
|
auto-approve-merge:
|
||||||
if: github.actor == 'dependabot[bot]'
|
if: github.actor == 'dependabot[bot]'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
|
||||||
# for hmarr/auto-approve-action to approve PRs
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
# Github actions bot approve
|
# Github actions bot approve
|
||||||
- uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
|
- uses: hmarr/auto-approve-action@v2
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
# Nextcloud bot approve and merge request
|
# Nextcloud bot approve and merge request
|
||||||
- uses: ahmadnassri/action-dependabot-auto-merge@45fc124d949b19b6b8bf6645b6c9d55f4f9ac61a # v2
|
- uses: ahmadnassri/action-dependabot-auto-merge@v2
|
||||||
with:
|
with:
|
||||||
target: minor
|
target: minor
|
||||||
github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }}
|
github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }}
|
||||||
|
|||||||
76
.github/workflows/integration.yml
vendored
@@ -2,17 +2,8 @@ name: Integration tests
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
|
||||||
- '.github/workflows/integration.yml'
|
|
||||||
- 'appinfo/**'
|
|
||||||
- 'lib/**'
|
|
||||||
- 'templates/**'
|
|
||||||
- 'tests/**'
|
|
||||||
- 'composer.json'
|
|
||||||
- 'composer.lock'
|
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
|
||||||
- master
|
- master
|
||||||
- stable*
|
- stable*
|
||||||
|
|
||||||
@@ -26,9 +17,9 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['8.1']
|
php-versions: ['7.4']
|
||||||
databases: ['sqlite', 'mysql', 'pgsql']
|
databases: ['sqlite', 'mysql', 'pgsql']
|
||||||
server-versions: ['master']
|
server-versions: ['stable24']
|
||||||
|
|
||||||
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
|
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
|
||||||
|
|
||||||
@@ -63,18 +54,25 @@ jobs:
|
|||||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||||
git submodule sync --recursive
|
git submodule sync --recursive
|
||||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||||
cd build/integration && composer require --dev phpunit/phpunit:~9
|
cd build/integration && composer require --dev phpunit/phpunit:~8
|
||||||
|
|
||||||
- name: Checkout app
|
- name: Checkout app
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
path: apps/${{ env.APP_NAME }}
|
path: apps/${{ env.APP_NAME }}
|
||||||
|
|
||||||
|
- name: Checkout activity
|
||||||
|
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
||||||
|
with:
|
||||||
|
repository: nextcloud/activity
|
||||||
|
ref: ${{ matrix.server-versions }}
|
||||||
|
path: apps/activity
|
||||||
|
|
||||||
- name: Set up php ${{ matrix.php-versions }}
|
- name: Set up php ${{ matrix.php-versions }}
|
||||||
uses: shivammathur/setup-php@2.25.4
|
uses: shivammathur/setup-php@2.25.4
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql, apcu
|
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql, apcu
|
||||||
ini-values:
|
ini-values:
|
||||||
apc.enable_cli=on
|
apc.enable_cli=on
|
||||||
coverage: none
|
coverage: none
|
||||||
@@ -92,63 +90,11 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
mkdir data
|
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 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 config:system:set hashing_default_password --value=true --type=boolean
|
|
||||||
./occ config:system:set memcache.local --value="\\OC\\Memcache\\APCu"
|
|
||||||
./occ config:system:set memcache.distributed --value="\\OC\\Memcache\\APCu"
|
|
||||||
cat config/config.php
|
cat config/config.php
|
||||||
./occ user:list
|
./occ user:list
|
||||||
./occ app:enable --force ${{ env.APP_NAME }}
|
./occ app:enable --force ${{ env.APP_NAME }}
|
||||||
./occ config:system:set query_log_file --value '/home/runner/work/${{ env.APP_NAME }}/${{ env.APP_NAME }}/query.log'
|
|
||||||
php -S localhost:8080 &
|
php -S localhost:8080 &
|
||||||
|
|
||||||
- name: Run behat
|
- name: Run behat
|
||||||
working-directory: apps/${{ env.APP_NAME }}/tests/integration
|
working-directory: apps/${{ env.APP_NAME }}/tests/integration
|
||||||
run: ./run.sh
|
run: ./run.sh
|
||||||
|
|
||||||
- name: Query count
|
|
||||||
if: ${{ matrix.databases == 'mysql' }}
|
|
||||||
uses: actions/github-script@v6
|
|
||||||
with:
|
|
||||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
|
||||||
script: |
|
|
||||||
let myOutput = ''
|
|
||||||
let myError = ''
|
|
||||||
|
|
||||||
const options = {}
|
|
||||||
options.listeners = {
|
|
||||||
stdout: (data) => {
|
|
||||||
myOutput += data.toString()
|
|
||||||
},
|
|
||||||
stderr: (data) => {
|
|
||||||
myError += data.toString()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
await exec.exec(`/bin/bash -c "cat /home/runner/work/${{ env.APP_NAME }}/${{ env.APP_NAME }}/query.log | wc -l"`, [], options)
|
|
||||||
msg = myOutput
|
|
||||||
const queryCount = parseInt(myOutput, 10)
|
|
||||||
|
|
||||||
myOutput = ''
|
|
||||||
await exec.exec('cat', ['/home/runner/work/${{ env.APP_NAME }}/${{ env.APP_NAME }}/apps/${{ env.APP_NAME }}/tests/integration/base-query-count.txt'], options)
|
|
||||||
const baseCount = parseInt(myOutput, 10)
|
|
||||||
|
|
||||||
const absoluteIncrease = queryCount - baseCount
|
|
||||||
const relativeIncrease = baseCount <= 0 ? 100 : (parseInt((absoluteIncrease / baseCount * 10000), 10) / 100)
|
|
||||||
|
|
||||||
if (absoluteIncrease >= 100 || relativeIncrease > 5) {
|
|
||||||
const comment = `🐢 Performance warning.\nIt looks like the query count of the integration tests increased with this PR.\nDatabase query count is now ` + queryCount + ' was ' + baseCount + ' (+' + relativeIncrease + '%)\nPlease check your code again. If you added a new test this can be expected and the base value in tests/integration/base-query-count.txt can be increased.'
|
|
||||||
github.rest.issues.createComment({
|
|
||||||
issue_number: context.issue.number,
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
body: comment
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if (queryCount < 100) {
|
|
||||||
const comment = `🐈 Performance messuring seems broken. Failed to get query count.`
|
|
||||||
github.rest.issues.createComment({
|
|
||||||
issue_number: context.issue.number,
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
body: comment
|
|
||||||
})
|
|
||||||
}
|
|
||||||
62
.github/workflows/lint-eslint.yml
vendored
@@ -1,62 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
#
|
|
||||||
# Use lint-eslint together with lint-eslint-when-unrelated to make eslint a required check for GitHub actions
|
|
||||||
# https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks
|
|
||||||
|
|
||||||
name: Lint eslint
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- '.github/workflows/**'
|
|
||||||
- 'src/**'
|
|
||||||
- 'appinfo/info.xml'
|
|
||||||
- 'package.json'
|
|
||||||
- 'package-lock.json'
|
|
||||||
- 'tsconfig.json'
|
|
||||||
- '.eslintrc.*'
|
|
||||||
- '.eslintignore'
|
|
||||||
- '**.js'
|
|
||||||
- '**.ts'
|
|
||||||
- '**.vue'
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: lint-eslint-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
name: eslint
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
|
||||||
|
|
||||||
- name: Read package.json node and npm engines version
|
|
||||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
|
|
||||||
id: versions
|
|
||||||
with:
|
|
||||||
fallbackNode: '^16'
|
|
||||||
fallbackNpm: '^7'
|
|
||||||
|
|
||||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
|
||||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
|
||||||
with:
|
|
||||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
|
||||||
|
|
||||||
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
|
|
||||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: npm ci
|
|
||||||
|
|
||||||
- name: Lint
|
|
||||||
run: npm run lint
|
|
||||||
40
.github/workflows/lint-php-cs.yml
vendored
@@ -1,40 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
|
|
||||||
name: Lint php-cs
|
|
||||||
|
|
||||||
on: pull_request
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: lint-php-cs-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
name: php-cs
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
|
||||||
|
|
||||||
- name: Set up php
|
|
||||||
uses: shivammathur/setup-php@2.25.4 # v2
|
|
||||||
with:
|
|
||||||
php-version: 8.1
|
|
||||||
coverage: none
|
|
||||||
ini-file: development
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: composer i
|
|
||||||
|
|
||||||
- name: Lint
|
|
||||||
run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 )
|
|
||||||
60
.github/workflows/lint-php.yml
vendored
@@ -1,60 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
|
|
||||||
name: Lint php
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- master
|
|
||||||
- stable*
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: lint-php-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
php-lint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
php-versions: [ "8.0", "8.1", "8.2" ]
|
|
||||||
|
|
||||||
name: php-lint
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
|
||||||
|
|
||||||
- name: Set up php ${{ matrix.php-versions }}
|
|
||||||
uses: shivammathur/setup-php@2.25.4 # v2
|
|
||||||
with:
|
|
||||||
php-version: ${{ matrix.php-versions }}
|
|
||||||
coverage: none
|
|
||||||
ini-file: development
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Lint
|
|
||||||
run: composer run lint
|
|
||||||
|
|
||||||
summary:
|
|
||||||
permissions:
|
|
||||||
contents: none
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: php-lint
|
|
||||||
|
|
||||||
if: always()
|
|
||||||
|
|
||||||
name: php-lint-summary
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Summary status
|
|
||||||
run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi
|
|
||||||
46
.github/workflows/lint-stylelint.yml
vendored
@@ -1,46 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
|
|
||||||
name: Lint stylelint
|
|
||||||
|
|
||||||
on: pull_request
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: lint-stylelint-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
name: stylelint
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
|
||||||
|
|
||||||
- name: Read package.json node and npm engines version
|
|
||||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
|
|
||||||
id: versions
|
|
||||||
with:
|
|
||||||
fallbackNode: '^16'
|
|
||||||
fallbackNpm: '^7'
|
|
||||||
|
|
||||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
|
||||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
|
||||||
with:
|
|
||||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
|
||||||
|
|
||||||
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
|
|
||||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: npm ci
|
|
||||||
|
|
||||||
- name: Lint
|
|
||||||
run: npm run stylelint
|
|
||||||
88
.github/workflows/lint.yml
vendored
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
name: Lint
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- stable*
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
php:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
php-versions: ['7.4', '8.0', '8.1']
|
||||||
|
|
||||||
|
name: php${{ matrix.php-versions }} lint
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Set up php${{ matrix.php-versions }}
|
||||||
|
uses: shivammathur/setup-php@2.18.0
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
coverage: none
|
||||||
|
- name: Lint
|
||||||
|
run: composer run lint
|
||||||
|
|
||||||
|
php-cs-fixer:
|
||||||
|
name: php-cs check
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Set up php
|
||||||
|
uses: shivammathur/setup-php@2.18.0
|
||||||
|
with:
|
||||||
|
php-version: 7.4
|
||||||
|
coverage: none
|
||||||
|
- name: Install dependencies
|
||||||
|
run: composer i
|
||||||
|
- name: Run coding standards check
|
||||||
|
run: composer run cs:check
|
||||||
|
|
||||||
|
node:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node-version: [14.x]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Use node ${{ matrix.node-version }}
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
- name: Set up npm7
|
||||||
|
run: npm i -g npm@7
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
- name: ESLint
|
||||||
|
run: npm run lint
|
||||||
|
|
||||||
|
stylelint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node-version: [14.x]
|
||||||
|
|
||||||
|
name: stylelint node${{ matrix.node-version }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up node ${{ matrix.node-version }}
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
|
||||||
|
- name: Set up npm7
|
||||||
|
run: npm i -g npm@7
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Lint
|
||||||
|
run: npm run stylelint
|
||||||
6
.github/workflows/nightly.yml
vendored
@@ -25,7 +25,7 @@ jobs:
|
|||||||
- name: Set up npm7
|
- name: Set up npm7
|
||||||
run: npm i -g npm@7
|
run: npm i -g npm@7
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@2.25.4
|
uses: shivammathur/setup-php@2.18.0
|
||||||
with:
|
with:
|
||||||
php-version: '7.4'
|
php-version: '7.4'
|
||||||
tools: composer
|
tools: composer
|
||||||
@@ -44,14 +44,14 @@ jobs:
|
|||||||
git config --local user.name "GitHub Action"
|
git config --local user.name "GitHub Action"
|
||||||
git tag -f nightly
|
git tag -f nightly
|
||||||
- name: Push tag
|
- name: Push tag
|
||||||
uses: juliushaertl/github-push-action@main
|
uses: juliushaertl/github-push-action@master
|
||||||
with:
|
with:
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
tags: true
|
tags: true
|
||||||
force: true
|
force: true
|
||||||
- name: Create Release
|
- name: Create Release
|
||||||
id: create_release
|
id: create_release
|
||||||
uses: juliushaertl/action-release@main
|
uses: juliushaertl/action-release@master
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
tag: nightly
|
tag: nightly
|
||||||
|
|||||||
71
.github/workflows/npm-audit-fix.yml
vendored
@@ -1,71 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
|
|
||||||
name: Npm audit fix and compile
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
schedule:
|
|
||||||
# At 2:30 on Sundays
|
|
||||||
- cron: '30 2 * * 0'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
branches: ["main", "master", "stable27", "stable26", "stable25", "stable24"]
|
|
||||||
|
|
||||||
name: npm-audit-fix-${{ matrix.branches }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
|
||||||
with:
|
|
||||||
ref: ${{ matrix.branches }}
|
|
||||||
|
|
||||||
- name: Read package.json node and npm engines version
|
|
||||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
|
|
||||||
id: versions
|
|
||||||
with:
|
|
||||||
fallbackNode: '^16'
|
|
||||||
fallbackNpm: '^7'
|
|
||||||
|
|
||||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
|
||||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
|
||||||
with:
|
|
||||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
|
||||||
|
|
||||||
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
|
|
||||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
|
||||||
|
|
||||||
- name: Fix npm audit
|
|
||||||
run: |
|
|
||||||
npm audit fix
|
|
||||||
|
|
||||||
- name: Run npm ci and npm run build
|
|
||||||
if: always()
|
|
||||||
run: |
|
|
||||||
npm ci
|
|
||||||
npm run build --if-present
|
|
||||||
|
|
||||||
- name: Create Pull Request
|
|
||||||
if: always()
|
|
||||||
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 # v5
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
|
||||||
commit-message: "chore(deps): fix npm audit"
|
|
||||||
committer: GitHub <noreply@github.com>
|
|
||||||
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
|
|
||||||
signoff: true
|
|
||||||
branch: automated/noid/${{ matrix.branches }}-fix-npm-audit
|
|
||||||
title: "[${{ matrix.branches }}] Fix npm audit"
|
|
||||||
body: |
|
|
||||||
Auto-generated fix of npm audit
|
|
||||||
labels: |
|
|
||||||
dependencies
|
|
||||||
3. to review
|
|
||||||
15
.github/workflows/phpunit.yml
vendored
@@ -2,14 +2,6 @@ name: PHPUnit
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
|
||||||
- '.github/workflows/phpunit.yml'
|
|
||||||
- 'appinfo/**'
|
|
||||||
- 'lib/**'
|
|
||||||
- 'templates/**'
|
|
||||||
- 'tests/**'
|
|
||||||
- 'composer.json'
|
|
||||||
- 'composer.lock'
|
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
@@ -26,9 +18,9 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['8.0', '8.1', '8.2']
|
php-versions: ['7.4', '8.0']
|
||||||
databases: ['sqlite', 'mysql', 'pgsql']
|
databases: ['sqlite', 'mysql', 'pgsql']
|
||||||
server-versions: ['master']
|
server-versions: ['stable24']
|
||||||
|
|
||||||
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
|
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
|
||||||
|
|
||||||
@@ -70,11 +62,12 @@ jobs:
|
|||||||
path: apps/${{ env.APP_NAME }}
|
path: apps/${{ env.APP_NAME }}
|
||||||
|
|
||||||
- name: Set up php ${{ matrix.php-versions }}
|
- name: Set up php ${{ matrix.php-versions }}
|
||||||
uses: shivammathur/setup-php@2.25.4
|
uses: shivammathur/setup-php@2.24.0
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
tools: phpunit
|
tools: phpunit
|
||||||
extensions: zip, gd, mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql
|
extensions: zip, gd, mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql
|
||||||
|
ini-file: development
|
||||||
coverage: none
|
coverage: none
|
||||||
|
|
||||||
- name: Set up PHPUnit
|
- name: Set up PHPUnit
|
||||||
|
|||||||
13
.github/workflows/psalm.yml
vendored
@@ -13,10 +13,6 @@ on:
|
|||||||
- main
|
- main
|
||||||
- stable*
|
- stable*
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: psalm-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
static-analysis:
|
static-analysis:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -24,16 +20,13 @@ jobs:
|
|||||||
name: Nextcloud
|
name: Nextcloud
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Set up php
|
- name: Set up php
|
||||||
uses: shivammathur/setup-php@2.25.4 # v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: 8.1
|
php-version: 7.4
|
||||||
coverage: none
|
coverage: none
|
||||||
ini-file: development
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer i
|
run: composer i
|
||||||
|
|||||||
40
.github/workflows/update-nextcloud-ocp.yml
vendored
@@ -17,60 +17,42 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
branches: ["main", "master", "stable27", "stable26", "stable25"]
|
branches: ["master", "stable25", "stable24", "stable23"]
|
||||||
|
|
||||||
name: update-nextcloud-ocp-${{ matrix.branches }}
|
name: update-nextcloud-ocp-${{ matrix.branches }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
ref: ${{ matrix.branches }}
|
ref: ${{ matrix.branches }}
|
||||||
submodules: true
|
submodules: true
|
||||||
|
|
||||||
- name: Set up php8.1
|
- name: Set up php7.4
|
||||||
uses: shivammathur/setup-php@2.25.4 # v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: 8.1
|
php-version: 7.4
|
||||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||||
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
|
coverage: none
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Composer install
|
- name: Composer install
|
||||||
run: composer install
|
run: composer install
|
||||||
|
|
||||||
- name: Composer update nextcloud/ocp
|
- name: Composer update nextcloud/ocp
|
||||||
if: matrix.branches != 'main'
|
|
||||||
run: composer require --dev nextcloud/ocp:dev-${{ matrix.branches }}
|
run: composer require --dev nextcloud/ocp:dev-${{ matrix.branches }}
|
||||||
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Composer update nextcloud/ocp
|
- name: Reset checkout dirs
|
||||||
if: matrix.branches == 'main'
|
|
||||||
run: composer require --dev nextcloud/ocp:dev-master
|
|
||||||
|
|
||||||
- name: Reset checkout 3rdparty
|
|
||||||
run: |
|
run: |
|
||||||
git clean -f 3rdparty
|
git clean -f 3rdparty
|
||||||
git checkout 3rdparty
|
|
||||||
continue-on-error: true
|
|
||||||
|
|
||||||
- name: Reset checkout vendor
|
|
||||||
run: |
|
|
||||||
git clean -f vendor
|
git clean -f vendor
|
||||||
git checkout vendor
|
git checkout 3rdparty vendor
|
||||||
continue-on-error: true
|
|
||||||
|
|
||||||
- name: Reset checkout vendor-bin
|
|
||||||
run: |
|
|
||||||
git clean -f vendor-bin
|
|
||||||
git checkout vendor-bin
|
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 # v3
|
uses: peter-evans/create-pull-request@v3
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||||
commit-message: "chore(dev-deps): Bump nextcloud/ocp package"
|
commit-message: Update psalm baseline
|
||||||
committer: GitHub <noreply@github.com>
|
committer: GitHub <noreply@github.com>
|
||||||
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
|
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
|
||||||
signoff: true
|
signoff: true
|
||||||
|
|||||||
2
.gitignore
vendored
@@ -3,11 +3,9 @@ js/
|
|||||||
build/
|
build/
|
||||||
css/style.css
|
css/style.css
|
||||||
css/vendor.css
|
css/vendor.css
|
||||||
cypress/videos/
|
|
||||||
tests/integration/vendor/
|
tests/integration/vendor/
|
||||||
tests/integration/composer.lock
|
tests/integration/composer.lock
|
||||||
tests/.phpunit.result.cache
|
tests/.phpunit.result.cache
|
||||||
vendor/
|
vendor/
|
||||||
.php_cs.cache
|
.php_cs.cache
|
||||||
\.idea/
|
\.idea/
|
||||||
settings.json
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[main]
|
[main]
|
||||||
host = https://www.transifex.com
|
host = https://www.transifex.com
|
||||||
lang_map = hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja, bg_BG: bg, cs_CZ: cs, fi_FI: fi
|
lang_map = bg_BG: bg, cs_CZ: cs, fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja
|
||||||
|
|
||||||
[o:nextcloud:p:nextcloud:r:deck]
|
[o:nextcloud:p:nextcloud:r:deck]
|
||||||
file_filter = translationfiles/<lang>/deck.po
|
file_filter = translationfiles/<lang>/deck.po
|
||||||
|
|||||||
125
CHANGELOG.md
@@ -1,102 +1,59 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
## 1.10.0-beta.1
|
## 1.7.5
|
||||||
|
|
||||||
### Added
|
|
||||||
|
|
||||||
- Compatibility with Nextcloud 27
|
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- fix(references): Mute NoPermissionException as it is expected to happen for references @juliushaertl [#4514](https://github.com/nextcloud/deck/pull/4514)
|
- Fix(occ): set user id for permission sevice from board service [#5074](https://github.com/nextcloud/deck/pull/5074)
|
||||||
- fix(cards): Fix card sizing by limiting too wide style rules @juliushaertl [#4512](https://github.com/nextcloud/deck/pull/4512)
|
- Fix small issues around delete/undo @juliushaertl [#5446](https://github.com/nextcloud/deck/pull/5446)
|
||||||
- fix: Adapt NcEmptyContent usages to new slots @juliushaertl [#4561](https://github.com/nextcloud/deck/pull/4561)
|
- Fix deleted card/board issues @juliushaertl [#5449](https://github.com/nextcloud/deck/pull/5449)
|
||||||
- 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.7.4
|
||||||
## 1.9.0-beta.1
|
|
||||||
|
|
||||||
### Added
|
|
||||||
|
|
||||||
- Export Board @david-loe [#3065](https://github.com/nextcloud/deck/pull/3065)
|
|
||||||
- basic notify_push usage with session handling @alangecker [#3876](https://github.com/nextcloud/deck/pull/3876)
|
|
||||||
- feat(Description): Use text as editor if available @juliushaertl [#4399](https://github.com/nextcloud/deck/pull/4399)
|
|
||||||
- Improve reference provider and add reference widgets @julien-nc [#4422](https://github.com/nextcloud/deck/pull/4422)
|
|
||||||
- live updates 🎉 @alangecker [#4273](https://github.com/nextcloud/deck/pull/4273)
|
|
||||||
- Tag creation from card view @juliushaertl [#4344](https://github.com/nextcloud/deck/pull/4344)
|
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Fix component renaming so that acl works on shares again @small1 [#4315](https://github.com/nextcloud/deck/pull/4315)
|
- Gracefully handle not found card for a share [#4569](https://github.com/nextcloud/deck/pull/4569)
|
||||||
- fix(Sidebar): Only close sidebar on v-click-outside for specific targets @juliushaertl [#4350](https://github.com/nextcloud/deck/pull/4350)
|
- fix: Use passed userid when getting attachment folder [#4541](https://github.com/nextcloud/deck/pull/4541)
|
||||||
- add basic e2e tests for stack title @shoetten [#4206](https://github.com/nextcloud/deck/pull/4206)
|
- fix: Append datetime picker to body to avoid cut off [#4646](https://github.com/nextcloud/deck/pull/4646)
|
||||||
- App metadata: add links to user and developer documentation @p-bo [#4356](https://github.com/nextcloud/deck/pull/4356)
|
- Permanently delete deck cards marked as deleted after 5 min in a cron job [#4302](https://github.com/nextcloud/deck/pull/4302)
|
||||||
- Update signature of Entity::markFieldUpdated @nickvergessen [#4398](https://github.com/nextcloud/deck/pull/4398)
|
- Fix : Overlapping expiry dates on tags [#4538](https://github.com/nextcloud/deck/pull/4538)
|
||||||
- Remove updated nightly information @xf- [#4419](https://github.com/nextcloud/deck/pull/4419)
|
- Update dependencies
|
||||||
- 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
|
## 1.7.3
|
||||||
- Dependency updates
|
|
||||||
|
|
||||||
|
|
||||||
## 1.8.0-beta.1
|
|
||||||
### Enhancements
|
|
||||||
|
|
||||||
- Nextcloud 25 compatibility
|
|
||||||
- Performance improvements
|
|
||||||
- Use capped memory cache for board permissions @juliushaertl [#3980](https://github.com/nextcloud/deck/pull/3980)
|
|
||||||
- Improve CalDAV integration performance @juliushaertl [#3982](https://github.com/nextcloud/deck/pull/3982)
|
|
||||||
- Simpify query for getting shared files @juliushaertl [#3983](https://github.com/nextcloud/deck/pull/3983)
|
|
||||||
- Accessibility improvements
|
|
||||||
- Add a11y label for sidebar button @marcelklehr [#3986](https://github.com/nextcloud/deck/pull/3986)
|
|
||||||
- Improve filter popover accessibility @juliushaertl [#3820](https://github.com/nextcloud/deck/pull/3820)
|
|
||||||
- Set ids to skip to content/navigation @juliushaertl [#3924](https://github.com/nextcloud/deck/pull/3924)
|
|
||||||
- Invert icons properly in dark mode @juliushaertl [#3939](https://github.com/nextcloud/deck/pull/3939)
|
|
||||||
- Bump dependencies
|
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- set last modified when the card was found. Fixes #3763 @ylebre [#3796](https://github.com/nextcloud/deck/pull/3796)
|
- feat: add validators to check values in services @juliushaertl [#4176](https://github.com/nextcloud/deck/pull/4176)
|
||||||
- Increase file count after sharing @luka-nextcloud [#3682](https://github.com/nextcloud/deck/pull/3682)
|
- Add integration test for attachment handling on cards [#4178](https://github.com/nextcloud/deck/pull/4178)
|
||||||
- Align Duedate-delete icon properly - fixes nextcloud/deck#3791 @Ben-Ro [#3811](https://github.com/nextcloud/deck/pull/3811)
|
- disables autocomplete on card creation @juliushaertl [#4182](https://github.com/nextcloud/deck/pull/4182)
|
||||||
- Fix for issue #3637 @flummer [#3833](https://github.com/nextcloud/deck/pull/3833)
|
- minor style fixes [#4202](https://github.com/nextcloud/deck/pull/4202)
|
||||||
- Switch to 'markdown-it-task-checkbox' for rendering of task lists @q-wertz [#3898](https://github.com/nextcloud/deck/pull/3898)
|
|
||||||
- Make rename functions accessibly by keyboard navigation @juliushaertl [#3813](https://github.com/nextcloud/deck/pull/3813)
|
|
||||||
- Prevent opening card and applyLabelFilter on card drag end @eneiluj [#3916](https://github.com/nextcloud/deck/pull/3916)
|
|
||||||
- Inserted required property in the rename list field, to prevent the l… @mstolf [#3862](https://github.com/nextcloud/deck/pull/3862)
|
|
||||||
- Fix share provider for master changes @nickvergessen [#3942](https://github.com/nextcloud/deck/pull/3942)
|
|
||||||
- Fetch attachment folder for the correct user during cron job @juliushaertl [#3952](https://github.com/nextcloud/deck/pull/3952)
|
|
||||||
- Fix z-index for deck sidebar @Raudius [#3884](https://github.com/nextcloud/deck/pull/3884)
|
|
||||||
|
|
||||||
### Other
|
|
||||||
|
|
||||||
- Switch from OC::$server->get to OCP\Server::get @CarlSchwan [#3801](https://github.com/nextcloud/deck/pull/3801)
|
## 1.7.2
|
||||||
- Add performance section in README @eneiluj [#3830](https://github.com/nextcloud/deck/pull/3830)
|
|
||||||
- Fix static analysis by stubbing more circle methods @juliushaertl [#3900](https://github.com/nextcloud/deck/pull/3900)
|
### Fixed
|
||||||
- fix(docs): fix links to JSON schemas for Trello @wiktor2200 [#3872](https://github.com/nextcloud/deck/pull/3872)
|
|
||||||
- Move to OCP\Collaboration\Resources\LoadAdditionalScriptsEvent @juliushaertl [#3818](https://github.com/nextcloud/deck/pull/3818)
|
- Cache user membership for circles [#4132](https://github.com/nextcloud/deck/pull/4132)
|
||||||
- Rename settings to deck settings @PVince81 [#3928](https://github.com/nextcloud/deck/pull/3928)
|
- Set event link also for notifications that get emitted from activities [#4118](https://github.com/nextcloud/deck/pull/4118)
|
||||||
- SCSS cleanup @juliushaertl [#3803](https://github.com/nextcloud/deck/pull/3803)
|
- Fix Card menu not displaying when description is not set [#4103](https://github.com/nextcloud/deck/pull/4103)
|
||||||
- Hide deprecated projects in sidebar and card details by default @Pytal [#3984](https://github.com/nextcloud/deck/pull/3984)
|
- disable Create card button while no stack is chosen [#4019](https://github.com/nextcloud/deck/pull/4019)
|
||||||
|
- to nextcloud/OCP package in stable24 [#4093](https://github.com/nextcloud/deck/pull/4093)
|
||||||
|
- Fix attachment creator name: show display name [#4037](https://github.com/nextcloud/deck/pull/4037)
|
||||||
|
- Use capped memory cache for board permissions [#3997](https://github.com/nextcloud/deck/pull/3997)
|
||||||
|
- Improve CalDAV integration performance [#3995](https://github.com/nextcloud/deck/pull/3995)
|
||||||
|
- Fetch attachment folder for the correct user during cron job [#3959](https://github.com/nextcloud/deck/pull/3959)
|
||||||
|
- Switch to 'markdown-it-task-checkbox' for rendering of task lists [#3925](https://github.com/nextcloud/deck/pull/3925)
|
||||||
|
- Prevent opening card and applyLabelFilter on card drag end [#3917](https://github.com/nextcloud/deck/pull/3917)
|
||||||
|
- Fix for issue #3637 [#3901](https://github.com/nextcloud/deck/pull/3901)
|
||||||
|
- Fix z-index for deck sidebar [#3885](https://github.com/nextcloud/deck/pull/3885)
|
||||||
|
|
||||||
|
## 1.7.1
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Align Duedate-delete icon properly - fixes nextcloud/deck#3791 [#3817](https://github.com/nextcloud/deck/pull/3817)
|
||||||
|
- Increase file count after sharing [#3806](https://github.com/nextcloud/deck/pull/3806)
|
||||||
|
- Fetch full board data after cloning [#3781](https://github.com/nextcloud/deck/pull/3781)
|
||||||
|
|
||||||
## 1.7.0
|
## 1.7.0
|
||||||
|
|
||||||
@@ -148,7 +105,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
- Adapt the card modal to upstream changes [#3764](https://github.com/nextcloud/deck/pull/3764)
|
- Adapt the card modal to upstream changes [#3764](https://github.com/nextcloud/deck/pull/3764)
|
||||||
- Fix text selection in dark mode and modal view [#3765](https://github.com/nextcloud/deck/pull/3765)
|
- Fix text selection in dark mode and modal view [#3765](https://github.com/nextcloud/deck/pull/3765)
|
||||||
- Add missing indices [#3754](https://github.com/nextcloud/deck/pull/3754)
|
- Add missing indices [#3754](https://github.com/nextcloud/deck/pull/3754)
|
||||||
|
- Handle qb mapper exception messages properly @juliushaertl [#3769](https://github.com/nextcloud/deck/pull/3769)
|
||||||
|
|
||||||
## 1.6.0-beta1
|
## 1.6.0-beta1
|
||||||
|
|
||||||
|
|||||||
10
Makefile
@@ -30,16 +30,6 @@ build: clean-dist install-deps build-js
|
|||||||
|
|
||||||
release: clean-dist install-deps-nodev build-js
|
release: clean-dist install-deps-nodev build-js
|
||||||
|
|
||||||
lint: lint-js lint-php
|
|
||||||
|
|
||||||
lint-js:
|
|
||||||
npm run lint
|
|
||||||
npm run stylelint
|
|
||||||
|
|
||||||
lint-php:
|
|
||||||
composer run lint 1>/dev/null
|
|
||||||
composer run cs:check
|
|
||||||
|
|
||||||
build-js: install-deps-js
|
build-js: install-deps-js
|
||||||
npm run build
|
npm run build
|
||||||
|
|
||||||
|
|||||||
88
README.md
@@ -1,6 +1,6 @@
|
|||||||
# Deck
|
# Deck
|
||||||
|
|
||||||
[](https://travis-ci.org/nextcloud/deck) [](https://codecov.io/github/nextcloud/deck) [](https://www.codacy.com/app/juliushaertl/deck?utm_source=github.com&utm_medium=referral&utm_content=nextcloud/deck&utm_campaign=Badge_Grade) [](https://scrutinizer-ci.com/g/nextcloud/deck/?branch=main) [](https://webchat.freenode.net/?channels=nextcloud-deck)
|
[](https://travis-ci.org/nextcloud/deck) [](https://codecov.io/github/nextcloud/deck) [](https://www.codacy.com/app/juliushaertl/deck?utm_source=github.com&utm_medium=referral&utm_content=nextcloud/deck&utm_campaign=Badge_Grade) [](https://scrutinizer-ci.com/g/nextcloud/deck/?branch=master) [](https://webchat.freenode.net/?channels=nextcloud-deck)
|
||||||
|
|
||||||
|
|
||||||
Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.
|
Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.
|
||||||
@@ -20,80 +20,68 @@ Deck is a kanban style organization tool aimed at personal planning and project
|
|||||||
### Mobile apps
|
### Mobile apps
|
||||||
|
|
||||||
- [Nextcloud Deck app for Android](https://github.com/stefan-niedermann/nextcloud-deck) - It is available in [F-Droid](https://f-droid.org/de/packages/it.niedermann.nextcloud.deck/) and the [Google Play Store](https://play.google.com/store/apps/details?id=it.niedermann.nextcloud.deck.play)
|
- [Nextcloud Deck app for Android](https://github.com/stefan-niedermann/nextcloud-deck) - It is available in [F-Droid](https://f-droid.org/de/packages/it.niedermann.nextcloud.deck/) and the [Google Play Store](https://play.google.com/store/apps/details?id=it.niedermann.nextcloud.deck.play)
|
||||||
- [deck NG for Android and iOS](https://github.com/meltzow/deck-ng) - It is available in [Google Play Store](https://play.google.com/store/apps/details?id=net.meltzow.deckng) and [Apple App Store](https://apps.apple.com/us/app/deck-ng/id6443334702)
|
|
||||||
|
|
||||||
### 3rd-Party Integrations
|
### 3rd-Party Integrations
|
||||||
|
|
||||||
- [trello-to-deck](https://github.com/maxammann/trello-to-deck) - Migrates cards from Trello
|
- [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
|
- [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
|
- [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
|
## 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.
|
||||||
|
|
||||||
## Performance limitations
|
### Install latest release
|
||||||
|
|
||||||
Deck is not yet ready for intensive usage.
|
You can download and install the latest release from the [Nextcloud app store](https://apps.nextcloud.com/apps/deck)
|
||||||
A lot of database queries are generated when the number of boards, cards and attachments is high.
|
|
||||||
For example, a user having access to 13 boards, with each board having on average 100 cards,
|
|
||||||
and each card having on average 5 attachments,
|
|
||||||
would generate 6500 database queries when doing the file related queries
|
|
||||||
which would increase the page loading time significantly.
|
|
||||||
|
|
||||||
Improvements on Nextcloud server and Deck itself will improve the situation.
|
### Install from git
|
||||||
|
|
||||||
|
If you want to run the latest development version from git source, you need to clone the repo to your apps folder:
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://github.com/nextcloud/deck.git
|
||||||
|
cd deck
|
||||||
|
make install-deps
|
||||||
|
make build
|
||||||
|
```
|
||||||
|
|
||||||
|
Please make sure you have installed the following dependencies: `make, which, tar, npm, curl, composer`
|
||||||
|
|
||||||
|
### Install the nightly builds
|
||||||
|
|
||||||
|
Instead of setting everything up manually, you can just [download the nightly build](https://github.com/nextcloud/deck/releases/tag/nightly) instead. These builds are updated every 24 hours, and are pre-configured with all the needed dependencies.
|
||||||
|
|
||||||
## Developing
|
## Developing
|
||||||
|
|
||||||
There are multiple ways to develop on Deck. As you will need a Nextcloud server running, the individual options are described below.
|
### PHP
|
||||||
|
|
||||||
### General build instructions
|
Nothing to prepare, just dig into the code.
|
||||||
|
|
||||||
General build instructions for the app itself are the same for all options.
|
### JavaScript
|
||||||
|
|
||||||
To build you will need to have [Node.js](https://nodejs.org/en/) and [Composer](https://getcomposer.org/) installed.
|
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.
|
||||||
|
|
||||||
- Install PHP dependencies: `composer install --no-dev`
|
#### Hot reloading
|
||||||
- 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`
|
|
||||||
|
|
||||||
### Faster frontend developing with HMR
|
Enable debug mode in your config.php `'debug' => true,`
|
||||||
|
|
||||||
You can enable HMR (Hot module replacement) to avoid page reloads when working on the frontend:
|
|
||||||
|
|
||||||
1. ☑️ Install and enable [`hmr_enabler` app](https://github.com/nextcloud/hmr_enabler)
|
|
||||||
2. 🏁 Run `npm run serve`
|
|
||||||
3. 🌍 Open the normal Nextcloud server URL (not the URL given by above command)
|
|
||||||
|
|
||||||
### GitHub Codespaces / VS Code devcontainer
|
|
||||||
|
|
||||||
- Open code spaces or the repository in VS Code to start the dev container
|
|
||||||
- The container will automatically install all dependencies and build the app
|
|
||||||
- Nextcloud will be installed from the master development branch and be available on a port exposed by the container
|
|
||||||
|
|
||||||
### Docker: Simple app development container
|
|
||||||
|
|
||||||
- Fork the app
|
|
||||||
- Clone the repository: `git clone https://github.com/nextcloud/deck.git`
|
|
||||||
- Go into deck directory: `cd deck`
|
|
||||||
- Build the app as described in the general build instructions
|
|
||||||
- Run Nextcloud development container and mount the apps source code into it
|
|
||||||
|
|
||||||
|
Without SSL:
|
||||||
```
|
```
|
||||||
docker run --rm \
|
npx webpack-dev-server --config webpack.hot.js \
|
||||||
-p 8080:80 \
|
--public localhost:3000 \
|
||||||
-v ~/path/to/app:/var/www/html/apps-extra/app \
|
--output-public-path 'http://localhost:3000/js/'
|
||||||
ghcr.io/juliushaertl/nextcloud-dev-php80:latest
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 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
|
### Running tests
|
||||||
You can use the provided Makefile to run all tests by using:
|
You can use the provided Makefile to run all tests by using:
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ Your report should include:
|
|||||||
- Reproduction steps
|
- Reproduction steps
|
||||||
|
|
||||||
A member of the security team will confirm the vulnerability, determine its impact, and develop a fix.
|
A member of the security team will confirm the vulnerability, determine its impact, and develop a fix.
|
||||||
The fix will be applied to the main branch, tested, and packaged in the next security release.
|
The fix will be applied to the master branch, tested, and packaged in the next security release.
|
||||||
The vulnerability will be publicly announced after the release. Finally, your name will be added
|
The vulnerability will be publicly announced after the release. Finally, your name will be added
|
||||||
to the [hall of fame](https://hackerone.com/nextcloud/thanks) as a thank you from the entire Nextcloud community. Note our
|
to the [hall of fame](https://hackerone.com/nextcloud/thanks) as a thank you from the entire Nextcloud community. Note our
|
||||||
[threat model](https://nextcloud.com/security/threat-model) to know what is expected behavior.
|
[threat model](https://nextcloud.com/security/threat-model) to know what is expected behavior.
|
||||||
|
|||||||
@@ -16,13 +16,9 @@
|
|||||||
- 🚀 Get your project organized
|
- 🚀 Get your project organized
|
||||||
|
|
||||||
</description>
|
</description>
|
||||||
<version>1.11.0-dev</version>
|
<version>1.7.5</version>
|
||||||
<licence>agpl</licence>
|
<licence>agpl</licence>
|
||||||
<author>Julius Härtl</author>
|
<author>Julius Härtl</author>
|
||||||
<documentation>
|
|
||||||
<user>https://deck.readthedocs.io/en/latest/User_documentation_en/</user>
|
|
||||||
<developer>https://deck.readthedocs.io/en/latest/API/</developer>
|
|
||||||
</documentation>
|
|
||||||
<namespace>Deck</namespace>
|
<namespace>Deck</namespace>
|
||||||
<types>
|
<types>
|
||||||
<dav/>
|
<dav/>
|
||||||
@@ -38,19 +34,13 @@
|
|||||||
<database min-version="9.4">pgsql</database>
|
<database min-version="9.4">pgsql</database>
|
||||||
<database>sqlite</database>
|
<database>sqlite</database>
|
||||||
<database min-version="8.0">mysql</database>
|
<database min-version="8.0">mysql</database>
|
||||||
<nextcloud min-version="28" max-version="28"/>
|
<nextcloud min-version="24" max-version="24"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<background-jobs>
|
<background-jobs>
|
||||||
<job>OCA\Deck\Cron\DeleteCron</job>
|
<job>OCA\Deck\Cron\DeleteCron</job>
|
||||||
<job>OCA\Deck\Cron\ScheduledNotifications</job>
|
<job>OCA\Deck\Cron\ScheduledNotifications</job>
|
||||||
<job>OCA\Deck\Cron\CardDescriptionActivity</job>
|
<job>OCA\Deck\Cron\CardDescriptionActivity</job>
|
||||||
<job>OCA\Deck\Cron\SessionsCleanup</job>
|
|
||||||
</background-jobs>
|
</background-jobs>
|
||||||
<repair-steps>
|
|
||||||
<live-migration>
|
|
||||||
<step>OCA\Deck\Migration\DeletedCircleCleanup</step>
|
|
||||||
</live-migration>
|
|
||||||
</repair-steps>
|
|
||||||
<commands>
|
<commands>
|
||||||
<command>OCA\Deck\Command\UserExport</command>
|
<command>OCA\Deck\Command\UserExport</command>
|
||||||
<command>OCA\Deck\Command\BoardImport</command>
|
<command>OCA\Deck\Command\BoardImport</command>
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ return [
|
|||||||
['name' => 'board#deleteAcl', 'url' => '/boards/{boardId}/acl/{aclId}', 'verb' => 'DELETE'],
|
['name' => 'board#deleteAcl', 'url' => '/boards/{boardId}/acl/{aclId}', 'verb' => 'DELETE'],
|
||||||
['name' => 'board#clone', 'url' => '/boards/{boardId}/clone', 'verb' => 'POST'],
|
['name' => 'board#clone', 'url' => '/boards/{boardId}/clone', 'verb' => 'POST'],
|
||||||
['name' => 'board#transferOwner', 'url' => '/boards/{boardId}/transferOwner', 'verb' => 'PUT'],
|
['name' => 'board#transferOwner', 'url' => '/boards/{boardId}/transferOwner', 'verb' => 'PUT'],
|
||||||
['name' => 'board#export', 'url' => '/boards/{boardId}/export', 'verb' => 'GET'],
|
|
||||||
|
|
||||||
// stacks
|
// stacks
|
||||||
['name' => 'stack#index', 'url' => '/stacks/{boardId}', 'verb' => 'GET'],
|
['name' => 'stack#index', 'url' => '/stacks/{boardId}', 'verb' => 'GET'],
|
||||||
@@ -150,10 +149,5 @@ return [
|
|||||||
['name' => 'overview_api#upcomingCards', 'url' => '/api/v{apiVersion}/overview/upcoming', 'verb' => 'GET'],
|
['name' => 'overview_api#upcomingCards', 'url' => '/api/v{apiVersion}/overview/upcoming', 'verb' => 'GET'],
|
||||||
|
|
||||||
['name' => 'search#search', 'url' => '/api/v{apiVersion}/search', 'verb' => 'GET'],
|
['name' => 'search#search', 'url' => '/api/v{apiVersion}/search', 'verb' => 'GET'],
|
||||||
|
|
||||||
// sessions
|
|
||||||
['name' => 'Session#create', 'url' => '/api/v{apiVersion}/session/create', 'verb' => 'PUT'],
|
|
||||||
['name' => 'Session#sync', 'url' => '/api/v{apiVersion}/session/sync', 'verb' => 'POST'],
|
|
||||||
['name' => 'Session#close', 'url' => '/api/v{apiVersion}/session/close', 'verb' => 'POST'],
|
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -17,17 +17,18 @@
|
|||||||
"phpunit/phpunit": "^9",
|
"phpunit/phpunit": "^9",
|
||||||
"nextcloud/coding-standard": "^1.0.0",
|
"nextcloud/coding-standard": "^1.0.0",
|
||||||
"symfony/event-dispatcher": "^4.0",
|
"symfony/event-dispatcher": "^4.0",
|
||||||
"vimeo/psalm": "^5.4",
|
"vimeo/psalm": "^4.3",
|
||||||
"php-parallel-lint/php-parallel-lint": "^1.2",
|
"php-parallel-lint/php-parallel-lint": "^1.2",
|
||||||
"nextcloud/ocp": "dev-master"
|
"nextcloud/ocp": "dev-stable24"
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"optimize-autoloader": true,
|
"optimize-autoloader": true,
|
||||||
|
"classmap-authoritative": true,
|
||||||
"allow-plugins": {
|
"allow-plugins": {
|
||||||
"composer/package-versions-deprecated": true
|
"composer/package-versions-deprecated": true
|
||||||
},
|
},
|
||||||
"platform": {
|
"platform": {
|
||||||
"php": "8.0"
|
"php": "7.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -35,14 +36,14 @@
|
|||||||
"cs:check": "php-cs-fixer fix --dry-run --diff",
|
"cs:check": "php-cs-fixer fix --dry-run --diff",
|
||||||
"cs:fix": "php-cs-fixer fix",
|
"cs:fix": "php-cs-fixer fix",
|
||||||
"psalm": "psalm",
|
"psalm": "psalm",
|
||||||
"psalm:update-baseline": "psalm --update-baseline",
|
|
||||||
"psalm:fix": "psalm --alter --issues=InvalidReturnType,InvalidNullableReturnType,MismatchingDocblockParamType,MismatchingDocblockReturnType,MissingParamType,InvalidFalsableReturnType",
|
"psalm:fix": "psalm --alter --issues=InvalidReturnType,InvalidNullableReturnType,MismatchingDocblockParamType,MismatchingDocblockReturnType,MissingParamType,InvalidFalsableReturnType",
|
||||||
"test": [
|
"test": [
|
||||||
"@test:unit",
|
"@test:unit",
|
||||||
"@test:integration"
|
"@test:integration"
|
||||||
],
|
],
|
||||||
"test:unit": "vendor/bin/phpunit -c tests/phpunit.xml",
|
"test:unit": "phpunit -c tests/phpunit.xml",
|
||||||
"test:integration": "vendor/bin/phpunit -c tests/phpunit.integration.xml && cd tests/integration && ./run.sh"
|
"test:integration": "phpunit -c tests/phpunit.integration.xml",
|
||||||
|
"test:api": "cd tests/integration && ./run.sh"
|
||||||
},
|
},
|
||||||
"autoload-dev": {
|
"autoload-dev": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
|
|||||||
1552
composer.lock
generated
@@ -1,9 +0,0 @@
|
|||||||
.icon-deck {
|
|
||||||
background-image: url(../img/deck-dark.svg);
|
|
||||||
filter: var(--background-invert-if-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-deck-white, .icon-deck.icon-white {
|
|
||||||
background-image: url(../img/deck.svg);
|
|
||||||
filter: var(--background-invert-if-dark);
|
|
||||||
}
|
|
||||||
1
css/deck.scss
Normal file
@@ -0,0 +1 @@
|
|||||||
|
@include icon-black-white('deck', 'deck', 1);
|
||||||
@@ -1,8 +1,11 @@
|
|||||||
<?php
|
/*
|
||||||
/**
|
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
|
||||||
* @copyright Copyright (c) 2022 Raul Ferreira Fuentes <raul@nextcloud.com>
|
|
||||||
*
|
*
|
||||||
* @author Raul Ferreira Fuentes <raul@nextcloud.com>
|
* @author Julius Härtl <jus@bitgrid.net>
|
||||||
|
* @author Artem Anufrij <artem.anufrij@live.de>
|
||||||
|
* @author Marin Treselj <marin@pixelipo.com>
|
||||||
|
* @author Oskar Kurz <oskar.kurz@gmail.com>
|
||||||
|
* @author Ryan Fletcher <ryan.fletcher@codepassion.ca>
|
||||||
*
|
*
|
||||||
* @license GNU AGPL version 3 or any later version
|
* @license GNU AGPL version 3 or any later version
|
||||||
*
|
*
|
||||||
@@ -20,30 +23,6 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
namespace OCA\Deck\Model;
|
|
||||||
|
|
||||||
use OCA\Deck\Db\Board;
|
@import 'icons';
|
||||||
|
@import 'print';
|
||||||
class BoardSummary extends Board {
|
|
||||||
private Board $board;
|
|
||||||
|
|
||||||
public function __construct(Board $board) {
|
|
||||||
parent::__construct();
|
|
||||||
$this->board = $board;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function jsonSerialize(): array {
|
|
||||||
return [
|
|
||||||
'id' => $this->getId(),
|
|
||||||
'title' => $this->getTitle()
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getter(string $name): mixed {
|
|
||||||
return $this->board->getter($name);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function __call($name, $arguments) {
|
|
||||||
return $this->board->__call($name, $arguments);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
41
css/icons.scss
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
/**
|
||||||
|
* Custom icons
|
||||||
|
*/
|
||||||
|
@include icon-black-white('deck', 'deck', 1);
|
||||||
|
@include icon-black-white('archive', 'deck', 1);
|
||||||
|
@include icon-black-white('circles', 'deck', 1);
|
||||||
|
@include icon-black-white('clone', 'deck', 1);
|
||||||
|
@include icon-black-white('filter', 'deck', 1);
|
||||||
|
@include icon-black-white('filter_set', 'deck', 1);
|
||||||
|
@include icon-black-white('attach', 'deck', 1);
|
||||||
|
@include icon-black-white('reply', 'deck', 1);
|
||||||
|
@include icon-black-white('notifications-dark', 'deck', 1);
|
||||||
|
@include icon-black-white('description', 'deck', 1);
|
||||||
|
|
||||||
|
.icon-toggle-compact-collapsed {
|
||||||
|
@include icon-color('toggle-view-expand', 'deck', $color-black);
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-toggle-compact-expanded {
|
||||||
|
@include icon-color('toggle-view-collapse', 'deck', $color-black);
|
||||||
|
}
|
||||||
|
.icon-activity {
|
||||||
|
@include icon-color('activity-dark', 'activity', $color-black);
|
||||||
|
}
|
||||||
|
.icon-comment--unread {
|
||||||
|
@include icon-color('comment', 'actions', $color-primary, 1, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatardiv.circles {
|
||||||
|
background: var(--color-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-circles {
|
||||||
|
opacity: 1;
|
||||||
|
background-size: 20px;
|
||||||
|
background-position: center center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-colorpicker {
|
||||||
|
background-image: url('../img/color_picker.svg');
|
||||||
|
}
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
const { defineConfig } = require('cypress')
|
|
||||||
|
|
||||||
module.exports = defineConfig({
|
|
||||||
projectId: '1s7wkc',
|
|
||||||
viewportWidth: 1280,
|
|
||||||
viewportHeight: 720,
|
|
||||||
e2e: {
|
|
||||||
// We've imported your old cypress plugins here.
|
|
||||||
// You may want to clean this up later by importing these.
|
|
||||||
setupNodeEvents(on, config) {
|
|
||||||
return require('./cypress/plugins/index.js')(on, config)
|
|
||||||
},
|
|
||||||
baseUrl: 'http://nextcloud.local/index.php',
|
|
||||||
specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
extends: [
|
|
||||||
'plugin:cypress/recommended',
|
|
||||||
],
|
|
||||||
}
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
import { randUser } from '../utils/index.js'
|
|
||||||
const user = randUser()
|
|
||||||
const recipient = randUser()
|
|
||||||
|
|
||||||
describe('Board', function() {
|
|
||||||
|
|
||||||
before(function() {
|
|
||||||
cy.createUser(user)
|
|
||||||
cy.createUser(recipient)
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(function() {
|
|
||||||
cy.login(user)
|
|
||||||
cy.visit('/apps/deck')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can create a board', function() {
|
|
||||||
const board = 'TestBoard'
|
|
||||||
|
|
||||||
cy.intercept({
|
|
||||||
method: 'POST',
|
|
||||||
url: '/index.php/apps/deck/boards',
|
|
||||||
}).as('createBoardRequest')
|
|
||||||
|
|
||||||
// Click "Add board"
|
|
||||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
|
||||||
.eq(3).find('a').first().click({ force: true })
|
|
||||||
|
|
||||||
// Type the board title
|
|
||||||
cy.get('.board-create form input[type=text]')
|
|
||||||
.type(board, { force: true })
|
|
||||||
|
|
||||||
// Submit
|
|
||||||
cy.get('.board-create form input[type=submit]')
|
|
||||||
.first().click({ force: true })
|
|
||||||
|
|
||||||
cy.wait('@createBoardRequest').its('response.statusCode').should('equal', 200)
|
|
||||||
|
|
||||||
cy.get('.app-navigation__list .app-navigation-entry__children .app-navigation-entry')
|
|
||||||
.contains(board).should('be.visible')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Shows and hides the navigation', () => {
|
|
||||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
|
||||||
.contains('Upcoming cards')
|
|
||||||
.should('be.visible')
|
|
||||||
cy.openLeftSidebar()
|
|
||||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
|
||||||
.contains('Upcoming cards')
|
|
||||||
.should('not.be.visible')
|
|
||||||
cy.openLeftSidebar()
|
|
||||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
|
||||||
.contains('Upcoming cards')
|
|
||||||
.should('be.visible')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -1,129 +0,0 @@
|
|||||||
import { randUser } from '../utils/index.js'
|
|
||||||
import { sampleBoard } from '../utils/sampleBoard'
|
|
||||||
|
|
||||||
const user = randUser()
|
|
||||||
const boardData = sampleBoard()
|
|
||||||
|
|
||||||
const auth = {
|
|
||||||
user: user.userId,
|
|
||||||
password: user.password,
|
|
||||||
}
|
|
||||||
|
|
||||||
const useModal = (useModal) => {
|
|
||||||
return cy.request({
|
|
||||||
method: 'POST',
|
|
||||||
url: `${Cypress.env('baseUrl')}/ocs/v2.php/apps/deck/api/v1.0/config/cardDetailsInModal?format=json`,
|
|
||||||
auth,
|
|
||||||
body: { value: useModal },
|
|
||||||
}).then((response) => {
|
|
||||||
expect(response.status).to.eq(200)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
describe('Card', function() {
|
|
||||||
let boardId
|
|
||||||
before(function() {
|
|
||||||
cy.createUser(user)
|
|
||||||
cy.login(user)
|
|
||||||
cy.createExampleBoard({
|
|
||||||
user,
|
|
||||||
board: boardData,
|
|
||||||
}).then((board) => {
|
|
||||||
boardId = board.id
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(function() {
|
|
||||||
cy.login(user)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can add a card', function() {
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
const newCardTitle = 'Write some cypress tests'
|
|
||||||
|
|
||||||
cy.getNavigationEntry(boardData.title)
|
|
||||||
.first().click({ force: true })
|
|
||||||
|
|
||||||
cy.get('.board .stack').eq(0).within(() => {
|
|
||||||
cy.get('.card:contains("Hello world")').should('be.visible')
|
|
||||||
|
|
||||||
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')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('Modal', () => {
|
|
||||||
beforeEach(function() {
|
|
||||||
cy.login(user)
|
|
||||||
useModal(true).then(() => {
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can show card details modal', function() {
|
|
||||||
cy.getNavigationEntry(boardData.title)
|
|
||||||
.first().click({ force: true })
|
|
||||||
|
|
||||||
cy.get('.board .stack').eq(0).within(() => {
|
|
||||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
|
||||||
})
|
|
||||||
|
|
||||||
cy.get('.modal__card').should('be.visible')
|
|
||||||
cy.get('.app-sidebar-header__maintitle').contains('Hello world')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Attachment from files app', () => {
|
|
||||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
|
||||||
cy.get('.modal__card').should('be.visible')
|
|
||||||
cy.get('.app-sidebar-tabs__tab [data-id="attachments"]').click()
|
|
||||||
cy.get('button.icon-upload').should('be.visible')
|
|
||||||
cy.get('button.icon-folder').should('be.visible')
|
|
||||||
.click()
|
|
||||||
cy.get('.oc-dialog #picker-filestable tr[data-entryname="welcome.txt"] td.filename').should('be.visible')
|
|
||||||
.click()
|
|
||||||
cy.get('.oc-dialog button.primary').click()
|
|
||||||
cy.get('.attachment-list .basename').contains('welcome.txt')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Shows the modal with the editor', () => {
|
|
||||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
|
||||||
cy.intercept({ method: 'PUT', url: '**/apps/deck/cards/*' }).as('save')
|
|
||||||
cy.get('.modal__card').should('be.visible')
|
|
||||||
cy.get('.app-sidebar-header__maintitle').contains('Hello world')
|
|
||||||
cy.get('.modal__card .ProseMirror h1').contains('Hello world').should('be.visible')
|
|
||||||
cy.get('.modal__card .ProseMirror h1')
|
|
||||||
.click()
|
|
||||||
.type(' writing more text{enter}- List item{enter}with entries{enter}{enter}Paragraph')
|
|
||||||
cy.wait('@save', { timeout: 7000 })
|
|
||||||
|
|
||||||
cy.reload()
|
|
||||||
cy.get('.modal__card').should('be.visible')
|
|
||||||
cy.get('.modal__card .ProseMirror h1').contains('Hello world writing more text').should('be.visible')
|
|
||||||
cy.get('.modal__card .ProseMirror li').eq(0).contains('List item').should('be.visible')
|
|
||||||
cy.get('.modal__card .ProseMirror li').eq(1).contains('with entries').should('be.visible')
|
|
||||||
cy.get('.modal__card .ProseMirror p').contains('Paragraph').should('be.visible')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('Sidebar', () => {
|
|
||||||
beforeEach(function() {
|
|
||||||
cy.login(user)
|
|
||||||
useModal(false).then(() => {
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Show the sidebar', () => {
|
|
||||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
|
||||||
cy.get('#app-sidebar-vue')
|
|
||||||
.find('.ProseMirror h1').contains('Hello world writing more text').should('be.visible')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
})
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
import { randUser } from '../utils/index.js'
|
|
||||||
const user = randUser()
|
|
||||||
|
|
||||||
describe('Deck dashboard', function() {
|
|
||||||
before(function() {
|
|
||||||
cy.createUser(user)
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(function() {
|
|
||||||
cy.login(user)
|
|
||||||
cy.visit('/apps/deck')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can show the right title on the dashboard', function() {
|
|
||||||
cy.get('.board-title h2')
|
|
||||||
.should('have.length', 1).first()
|
|
||||||
.should('have.text', 'Upcoming cards')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can see the default "Personal Board" created for user by default', function() {
|
|
||||||
const defaultBoard = 'Personal'
|
|
||||||
|
|
||||||
cy.get('.app-navigation-entry-wrapper[icon=icon-deck]')
|
|
||||||
.find('ul.app-navigation-entry__children .app-navigation-entry:contains(' + defaultBoard + ')')
|
|
||||||
.first()
|
|
||||||
.contains(defaultBoard)
|
|
||||||
.should('be.visible')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
import { randUser } from '../utils/index.js'
|
|
||||||
import { sampleBoard } from '../utils/sampleBoard'
|
|
||||||
const user = randUser()
|
|
||||||
const recipient = randUser()
|
|
||||||
|
|
||||||
describe('Board', function() {
|
|
||||||
before(function() {
|
|
||||||
cy.createUser(user)
|
|
||||||
cy.createUser(recipient)
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(function() {
|
|
||||||
cy.login(user)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Share a board to a user', function() {
|
|
||||||
const board = sampleBoard('Read only board')
|
|
||||||
cy.createExampleBoard({ user, board }).then((board) => {
|
|
||||||
const boardId = board.id
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
cy.get('.board-title').contains(board.title)
|
|
||||||
|
|
||||||
cy.shareBoardWithUi(recipient.userId)
|
|
||||||
|
|
||||||
cy.login(recipient)
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
cy.get('.board-title').contains(board.title)
|
|
||||||
cy.get('.button-vue[aria-label*="Add card"]')
|
|
||||||
.should('not.exist')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Share a board to a user as writable', function() {
|
|
||||||
const board = sampleBoard('Editable board')
|
|
||||||
cy.createExampleBoard({ user, board }).then((board) => {
|
|
||||||
const boardId = board.id
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
cy.get('.board-title').contains(board.title)
|
|
||||||
|
|
||||||
cy.shareBoardWithUi(recipient.userId)
|
|
||||||
cy.get(`[data-cy="acl-participant:${recipient.userId}"]`).find('[data-cy="action:permission-edit"]').click()
|
|
||||||
|
|
||||||
cy.login(recipient)
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
cy.get('.board-title').contains(board.title)
|
|
||||||
cy.get('.button-vue[aria-label*="Add card"]')
|
|
||||||
.first().click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
import { randUser } from '../utils/index.js'
|
|
||||||
const user = randUser()
|
|
||||||
|
|
||||||
const boardTitle = 'TestBoard'
|
|
||||||
const testBoardData = {
|
|
||||||
title: boardTitle,
|
|
||||||
stacks: [
|
|
||||||
{ title: 'Existing Stack1' },
|
|
||||||
{ title: 'Existing Stack2' },
|
|
||||||
],
|
|
||||||
}
|
|
||||||
|
|
||||||
describe('Stack', function() {
|
|
||||||
|
|
||||||
before(function() {
|
|
||||||
cy.createUser(user)
|
|
||||||
cy.login(user)
|
|
||||||
cy.createExampleBoard({
|
|
||||||
user,
|
|
||||||
board: testBoardData,
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(function() {
|
|
||||||
cy.login(user)
|
|
||||||
cy.visit('/apps/deck')
|
|
||||||
|
|
||||||
cy.openLeftSidebar()
|
|
||||||
cy.getNavigationEntry(boardTitle)
|
|
||||||
.click({ force: true })
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can create a stack', function() {
|
|
||||||
cy.get('#stack-add button').first().click()
|
|
||||||
cy.focused().type('List 1')
|
|
||||||
cy.get('#stack-add form input[type=submit]').first().click()
|
|
||||||
|
|
||||||
cy.contains('List 1').should('be.visible')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can edit a stack title', function() {
|
|
||||||
cy.contains('Existing Stack1')
|
|
||||||
cy.get('[data-cy-stack="Existing Stack1"]').within(() => {
|
|
||||||
cy.contains('Existing Stack1').click()
|
|
||||||
cy.focused().type(' renamed')
|
|
||||||
cy.get('[data-cy="editStackTitleForm"] input[type="submit"]').click()
|
|
||||||
})
|
|
||||||
cy.contains('Existing Stack1 renamed').should('be.visible')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can abort a stack title edit via esc', function() {
|
|
||||||
cy.contains('Existing Stack2').click()
|
|
||||||
cy.focused().type(' with a new title, maybe?')
|
|
||||||
cy.focused().type('{esc}')
|
|
||||||
|
|
||||||
cy.contains('Existing Stack2').should('be.visible')
|
|
||||||
cy.contains('Existing Stack2 with a new title, maybe?').should('not.exist')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can abort a stack title edit via click outside', function() {
|
|
||||||
cy.contains('Existing Stack2').click()
|
|
||||||
cy.focused().type(' with a new title, maybe?')
|
|
||||||
cy.get('[data-cy-stack="Existing Stack2"]').click('bottom')
|
|
||||||
|
|
||||||
cy.contains('Existing Stack2').should('be.visible')
|
|
||||||
cy.contains('Existing Stack2 with a new title, maybe?').should('not.exist')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Using fixtures to represent data",
|
|
||||||
"email": "hello@cypress.io",
|
|
||||||
"body": "Fixtures are a great way to mock data for responses to routes"
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
/// <reference types="cypress" />
|
|
||||||
// ***********************************************************
|
|
||||||
// This example plugins/index.js can be used to load plugins
|
|
||||||
//
|
|
||||||
// You can change the location of this file or turn off loading
|
|
||||||
// the plugins file with the 'pluginsFile' configuration option.
|
|
||||||
//
|
|
||||||
// You can read more here:
|
|
||||||
// https://on.cypress.io/plugins-guide
|
|
||||||
// ***********************************************************
|
|
||||||
|
|
||||||
// This function is called when a project is opened or re-opened (e.g. due to
|
|
||||||
// the project's config changing)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @type {Cypress.PluginConfig}
|
|
||||||
*/
|
|
||||||
// eslint-disable-next-line no-unused-vars
|
|
||||||
module.exports = (on, config) => {
|
|
||||||
// `on` is used to hook into various events Cypress emits
|
|
||||||
// `config` is the resolved Cypress config
|
|
||||||
}
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
/**
|
|
||||||
* @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>
|
|
||||||
*
|
|
||||||
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
|
||||||
*
|
|
||||||
* @license GNU AGPL version 3 or any later version
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as
|
|
||||||
* published by the Free Software Foundation, either version 3 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { addCommands } from '@nextcloud/cypress'
|
|
||||||
|
|
||||||
addCommands()
|
|
||||||
|
|
||||||
const url = Cypress.config('baseUrl').replace(/\/index.php\/?$/g, '')
|
|
||||||
Cypress.env('baseUrl', url)
|
|
||||||
|
|
||||||
Cypress.Commands.add('openLeftSidebar', () => {
|
|
||||||
cy.get('.app-navigation button.app-navigation-toggle').click()
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add('deckCreateBoard', ({ user, password }, title) => {
|
|
||||||
cy.login(user, password)
|
|
||||||
|
|
||||||
cy.get('.app-navigation button.app-navigation-toggle').click()
|
|
||||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
|
||||||
.eq(3)
|
|
||||||
.find('a')
|
|
||||||
.first()
|
|
||||||
.click({ force: true })
|
|
||||||
|
|
||||||
cy.get('.board-create form input[type=text]').type(title, { force: true })
|
|
||||||
|
|
||||||
cy.get('.board-create form input[type=submit]')
|
|
||||||
.first()
|
|
||||||
.click({ force: true })
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add('deckCreateList', ({ user, password }, title) => {
|
|
||||||
cy.login(user, password)
|
|
||||||
|
|
||||||
cy.get('.app-navigation button.app-navigation-toggle').click()
|
|
||||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
|
||||||
.eq(3)
|
|
||||||
.find('a.app-navigation-entry-link')
|
|
||||||
.first()
|
|
||||||
.click({ force: true })
|
|
||||||
|
|
||||||
cy.get('#stack-add button').first().click()
|
|
||||||
cy.get('#stack-add form input#new-stack-input-main').type(title)
|
|
||||||
cy.get('#stack-add form input[type=submit]').first().click()
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add('createExampleBoard', ({ user, board }) => {
|
|
||||||
const auth = {
|
|
||||||
user: user.userId,
|
|
||||||
password: user.password,
|
|
||||||
}
|
|
||||||
cy.request({
|
|
||||||
method: 'POST',
|
|
||||||
url: `${Cypress.env('baseUrl')}/index.php/apps/deck/api/v1.0/boards`,
|
|
||||||
auth,
|
|
||||||
body: { title: board.title, color: board.color ?? 'ff0000' },
|
|
||||||
}).then((boardResponse) => {
|
|
||||||
expect(boardResponse.status).to.eq(200)
|
|
||||||
const boardData = boardResponse.body
|
|
||||||
for (const stackIndex in board.stacks) {
|
|
||||||
const stack = board.stacks[stackIndex]
|
|
||||||
cy.request({
|
|
||||||
method: 'POST',
|
|
||||||
url: `${Cypress.env('baseUrl')}/index.php/apps/deck/api/v1.0/boards/${boardData.id}/stacks`,
|
|
||||||
auth,
|
|
||||||
body: { title: stack.title, order: 0 },
|
|
||||||
}).then((stackResponse) => {
|
|
||||||
const stackData = stackResponse.body
|
|
||||||
for (const cardIndex in stack.cards) {
|
|
||||||
const card = stack.cards[cardIndex]
|
|
||||||
cy.request({
|
|
||||||
method: 'POST',
|
|
||||||
url: `${Cypress.env('baseUrl')}/index.php/apps/deck/api/v1.0/boards/${boardData.id}/stacks/${stackData.id}/cards`,
|
|
||||||
auth,
|
|
||||||
body: { title: card.title, description: card.description ?? '' },
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
cy.wrap(boardData)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add('getNavigationEntry', (boardTitle) => {
|
|
||||||
return cy.get('.app-navigation-entry-wrapper[icon=icon-deck]')
|
|
||||||
.find('ul.app-navigation-entry__children .app-navigation-entry:contains(' + boardTitle + ')')
|
|
||||||
.find('a.app-navigation-entry-link')
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add('shareBoardWithUi', (userId) => {
|
|
||||||
cy.get('[aria-label="Open details"]').click()
|
|
||||||
cy.get('.app-sidebar').should('be.visible')
|
|
||||||
cy.get('.multiselect__input').type(`${userId}`)
|
|
||||||
cy.get('.multiselect__content .multiselect__element').first().contains(userId)
|
|
||||||
cy.get('.multiselect__input').type('{enter}')
|
|
||||||
|
|
||||||
cy.get('.shareWithList').contains(userId)
|
|
||||||
})
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
||||||
<title>Components App</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div data-cy-root></div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
// ***********************************************************
|
|
||||||
// This example support/component.js is processed and
|
|
||||||
// loaded automatically before your test files.
|
|
||||||
//
|
|
||||||
// This is a great place to put global configuration and
|
|
||||||
// behavior that modifies Cypress.
|
|
||||||
//
|
|
||||||
// You can change the location of this file or turn off
|
|
||||||
// automatically serving support files with the
|
|
||||||
// 'supportFile' configuration option.
|
|
||||||
//
|
|
||||||
// You can read more here:
|
|
||||||
// https://on.cypress.io/configuration
|
|
||||||
// ***********************************************************
|
|
||||||
|
|
||||||
// Import commands.js using ES2015 syntax:
|
|
||||||
import './commands'
|
|
||||||
|
|
||||||
// Alternatively you can use CommonJS syntax:
|
|
||||||
// require('./commands')
|
|
||||||
|
|
||||||
import { mount } from 'cypress/vue2'
|
|
||||||
|
|
||||||
Cypress.Commands.add('mount', mount)
|
|
||||||
|
|
||||||
// Example use:
|
|
||||||
// cy.mount(MyComponent)
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
// ***********************************************************
|
|
||||||
// This example support/index.js is processed and
|
|
||||||
// loaded automatically before your test files.
|
|
||||||
//
|
|
||||||
// This is a great place to put global configuration and
|
|
||||||
// behavior that modifies Cypress.
|
|
||||||
//
|
|
||||||
// You can change the location of this file or turn off
|
|
||||||
// automatically serving support files with the
|
|
||||||
// 'supportFile' configuration option.
|
|
||||||
//
|
|
||||||
// You can read more here:
|
|
||||||
// https://on.cypress.io/configuration
|
|
||||||
// ***********************************************************
|
|
||||||
|
|
||||||
// Import commands.js using ES2015 syntax:
|
|
||||||
import './commands.js'
|
|
||||||
|
|
||||||
// Alternatively you can use CommonJS syntax:
|
|
||||||
// require('./commands')
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { User } from '@nextcloud/cypress'
|
|
||||||
|
|
||||||
export const randHash = () => Math.random().toString(36).replace(/[^a-z]+/g, '').slice(0, 10)
|
|
||||||
export const randUser = () => new User(randHash(), randHash())
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
/*
|
|
||||||
* @copyright Copyright (c) 2022 Julius Härtl <jus@bitgrid.net>
|
|
||||||
*
|
|
||||||
* @author Julius Härtl <jus@bitgrid.net>
|
|
||||||
*
|
|
||||||
* @license GNU AGPL version 3 or any later version
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as
|
|
||||||
* published by the Free Software Foundation, either version 3 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export const sampleBoard = (title = 'MyTestBoard') => {
|
|
||||||
return {
|
|
||||||
title: title,
|
|
||||||
color: '00ff00',
|
|
||||||
stacks: [
|
|
||||||
{
|
|
||||||
title: 'TestList',
|
|
||||||
cards: [
|
|
||||||
{
|
|
||||||
title: 'Hello world',
|
|
||||||
description: '# Hello world',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
110
docs/API.md
@@ -1066,7 +1066,6 @@ Deck stores user and app configuration values globally and per board. The GET en
|
|||||||
| --- | --- |
|
| --- | --- |
|
||||||
| calendar | Determines if the calendar/tasks integration through the CalDAV backend is enabled for the user (boolean) |
|
| 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) |
|
| 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)|
|
| 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)|
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -1080,7 +1079,6 @@ Deck stores user and app configuration values globally and per board. The GET en
|
|||||||
"data": {
|
"data": {
|
||||||
"calendar": true,
|
"calendar": true,
|
||||||
"cardDetailsInModal": true,
|
"cardDetailsInModal": true,
|
||||||
"cardIdBadge": true,
|
|
||||||
"groupLimit": [
|
"groupLimit": [
|
||||||
{
|
{
|
||||||
"id": "admin",
|
"id": "admin",
|
||||||
@@ -1111,7 +1109,6 @@ Deck stores user and app configuration values globally and per board. The GET en
|
|||||||
| notify-due | `off`, `assigned` or `all` |
|
| notify-due | `off`, `assigned` or `all` |
|
||||||
| calendar | Boolean |
|
| calendar | Boolean |
|
||||||
| cardDetailsInModal | Boolean |
|
| cardDetailsInModal | Boolean |
|
||||||
| cardIdBadge | Boolean |
|
|
||||||
|
|
||||||
#### Example request
|
#### Example request
|
||||||
|
|
||||||
@@ -1394,110 +1391,3 @@ A bad request response is returned if invalid input values are provided. The res
|
|||||||
A not found response might be returned if:
|
A not found response might be returned if:
|
||||||
- The card for the given cardId could not be found
|
- The card for the given cardId could not be found
|
||||||
- The comment could not be found
|
- The comment could not be found
|
||||||
|
|
||||||
|
|
||||||
## Sessions
|
|
||||||
|
|
||||||
### PUT /session/create - creates a new session
|
|
||||||
|
|
||||||
#### Request parameters
|
|
||||||
|
|
||||||
| Parameter | Type | Description |
|
|
||||||
| --------- | ------- | ---------------------------------------------------- |
|
|
||||||
| boardId | Integer | The id of the opened board |
|
|
||||||
|
|
||||||
```
|
|
||||||
curl -X PUT 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/session/create' \
|
|
||||||
-H 'Accept: application/json' -H 'OCS-APIRequest: true' \
|
|
||||||
-H 'Content-Type: application/json;charset=utf-8' \
|
|
||||||
--data '{"boardId":1}'
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Response
|
|
||||||
|
|
||||||
##### 200 Success
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"ocs": {
|
|
||||||
"meta": {
|
|
||||||
"status": "ok",
|
|
||||||
"statuscode": 200,
|
|
||||||
"message": "OK"
|
|
||||||
},
|
|
||||||
"data": {
|
|
||||||
"token": "+zcJHf4rC6dobVSbuNa3delkCSfTW8OvYWTyLFvSpIv80FjtgLIj0ARlxspsazNQ"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
### POST /session/sync - notifies the server, that the session is still open
|
|
||||||
|
|
||||||
#### Request body
|
|
||||||
|
|
||||||
| Parameter | Type | Description |
|
|
||||||
| --------- | ------- | ---------------------------------------------------- |
|
|
||||||
| boardId | Integer | The id of the opened board |
|
|
||||||
| token | String | The session token from the /sessions/create response |
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
curl -X POST 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/session/create' \
|
|
||||||
-H 'Accept: application/json' -H 'OCS-APIRequest: true' \
|
|
||||||
-H 'Content-Type: application/json;charset=utf-8' \
|
|
||||||
--data '{"boardId":1, "token":"X3DyyoFslArF0t0NBZXzZXzcy8feoX/OEytSNXZtPg9TpUgO5wrkJ38IW3T/FfpV"}'
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Response
|
|
||||||
|
|
||||||
##### 200 Success
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"ocs": {
|
|
||||||
"meta": {
|
|
||||||
"status": "ok",
|
|
||||||
"statuscode": 200,
|
|
||||||
"message": "OK"
|
|
||||||
},
|
|
||||||
"data": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
##### 404 Not Found
|
|
||||||
the provided token is invalid or expired
|
|
||||||
|
|
||||||
|
|
||||||
### POST /session/close - closes the session
|
|
||||||
|
|
||||||
#### Request body
|
|
||||||
|
|
||||||
| Parameter | Type | Description |
|
|
||||||
| --------- | ------- | ---------------------------------------------------- |
|
|
||||||
| boardId | Integer | The id of the opened board |
|
|
||||||
| token | String | The session token from the /sessions/create response |
|
|
||||||
|
|
||||||
```
|
|
||||||
curl -X POST 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/session/close' \
|
|
||||||
-H 'Accept: application/json' -H 'OCS-APIRequest: true' \
|
|
||||||
-H 'Content-Type: application/json;charset=utf-8' \
|
|
||||||
--data '{"boardId":1, "token":"X3DyyoFslArF0t0NBZXzZXzcy8feoX/OEytSNXZtPg9TpUgO5wrkJ38IW3T/FfpV"}'
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Response
|
|
||||||
|
|
||||||
##### 200 Success
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"ocs": {
|
|
||||||
"meta": {
|
|
||||||
"status": "ok",
|
|
||||||
"statuscode": 200,
|
|
||||||
"message": "OK"
|
|
||||||
},
|
|
||||||
"data": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ Steps:
|
|||||||
* Create the configuration file
|
* Create the configuration file
|
||||||
* Execute the import informing the import file path, data file and source as `Trello JSON`
|
* Execute the import informing the import file path, data file and source as `Trello JSON`
|
||||||
|
|
||||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloJson-schema.json) for import `Trello JSON`
|
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/master/lib/Service/fixtures/config-trelloJson-schema.json) for import `Trello JSON`
|
||||||
|
|
||||||
Example configuration file:
|
Example configuration file:
|
||||||
```json
|
```json
|
||||||
@@ -120,7 +120,7 @@ https://api.trello.com/1/members/me/boards?key={yourKey}&token={yourToken}&field
|
|||||||
This ID you will use in the configuration file in the `board` property
|
This ID you will use in the configuration file in the `board` property
|
||||||
* Create the configuration file
|
* Create the configuration file
|
||||||
|
|
||||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloApi-schema.json) for import `Trello JSON`
|
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/master/lib/Service/fixtures/config-trelloApi-schema.json) for import `Trello JSON`
|
||||||
|
|
||||||
Example configuration file:
|
Example configuration file:
|
||||||
```json
|
```json
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" version="1.0" viewbox="0 0 32 32">
|
|
||||||
<path d="m16 1-10 18h11l-1 12 10-18h-11z"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 205 B |
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" version="1.0" viewBox="0 0 32 32">
|
|
||||||
<path d="m16 1-10 18h11l-1 12 10-18h-11z" fill="#FFF"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 217 B |
1
img/archive-white.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><g transform="translate(0 -1036.362)" fill="#fff"><path d="M1.93 1041.296c-.185 0-.336.138-.336.31v9.842c0 .172.15.313.336.313h12.517c.185 0 .333-.14.333-.313v-9.842c0-.172-.148-.31-.333-.31H1.93zm4.124 1.507h4.223c.39 0 .705.314.705.704v.43c0 .39-.315.705-.705.705H6.054a.703.703 0 0 1-.705-.705v-.43c0-.39.314-.704.705-.704z"/><rect width="15.742" height="2.296" x=".136" y="1037.543" ry="0"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 488 B |
@@ -1,3 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" style="height: 240px; width: 240px;" viewBox="0 0 24 24">
|
|
||||||
<path fill="currentColor" d="M12,15H10V13H12V15M18,15H14V13H18V15M8,11H6V9H8V11M18,11H10V9H18V11M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M4,6V18H20V6H4Z" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 298 B |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 58 58" width="512" height="512"><g fill="#000"><path d="M54.319 37.839C54.762 35.918 55 33.96 55 32c0-9.095-4.631-17.377-12.389-22.153a1 1 0 1 0-1.049 1.703C48.724 15.96 53 23.604 53 32c0 1.726-.2 3.451-.573 5.147A6.992 6.992 0 0 0 51 37c-3.86 0-7 3.141-7 7s3.14 7 7 7 7-3.141 7-7a7.006 7.006 0 0 0-3.681-6.161zM38.171 54.182A23.867 23.867 0 0 1 29 56a24.047 24.047 0 0 1-17.017-7.092A6.974 6.974 0 0 0 14 44c0-3.859-3.14-7-7-7s-7 3.141-7 7 3.14 7 7 7a6.952 6.952 0 0 0 3.381-.875C15.26 55.136 21.994 58 29 58c3.435 0 6.778-.663 9.936-1.971.51-.211.753-.796.542-1.307a1.001 1.001 0 0 0-1.307-.54zM4 31.213a1 1 0 0 0 1.068-.927c.712-10.089 7.586-18.52 17.22-21.314C23.142 11.874 25.825 14 29 14c3.86 0 7-3.141 7-7s-3.14-7-7-7c-3.851 0-6.985 3.127-6.999 6.975C11.42 9.922 3.851 19.12 3.073 30.146A.999.999 0 0 0 4 31.213z"/></g></svg>
|
|
||||||
|
Before Width: | Height: | Size: 885 B |
@@ -1 +1 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 58 58" width="512" height="512"><g fill="#fff"><path d="M54.319 37.839C54.762 35.918 55 33.96 55 32c0-9.095-4.631-17.377-12.389-22.153a1 1 0 1 0-1.049 1.703C48.724 15.96 53 23.604 53 32c0 1.726-.2 3.451-.573 5.147A6.992 6.992 0 0 0 51 37c-3.86 0-7 3.141-7 7s3.14 7 7 7 7-3.141 7-7a7.006 7.006 0 0 0-3.681-6.161zM38.171 54.182A23.867 23.867 0 0 1 29 56a24.047 24.047 0 0 1-17.017-7.092A6.974 6.974 0 0 0 14 44c0-3.859-3.14-7-7-7s-7 3.141-7 7 3.14 7 7 7a6.952 6.952 0 0 0 3.381-.875C15.26 55.136 21.994 58 29 58c3.435 0 6.778-.663 9.936-1.971.51-.211.753-.796.542-1.307a1.001 1.001 0 0 0-1.307-.54zM4 31.213a1 1 0 0 0 1.068-.927c.712-10.089 7.586-18.52 17.22-21.314C23.142 11.874 25.825 14 29 14c3.86 0 7-3.141 7-7s-3.14-7-7-7c-3.851 0-6.985 3.127-6.999 6.975C11.42 9.922 3.851 19.12 3.073 30.146A.999.999 0 0 0 4 31.213z"/></g></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 58 58" width="512" height="512"><g fill="#000"><path d="M54.319 37.839C54.762 35.918 55 33.96 55 32c0-9.095-4.631-17.377-12.389-22.153a1 1 0 1 0-1.049 1.703C48.724 15.96 53 23.604 53 32c0 1.726-.2 3.451-.573 5.147A6.992 6.992 0 0 0 51 37c-3.86 0-7 3.141-7 7s3.14 7 7 7 7-3.141 7-7a7.006 7.006 0 0 0-3.681-6.161zM38.171 54.182A23.867 23.867 0 0 1 29 56a24.047 24.047 0 0 1-17.017-7.092A6.974 6.974 0 0 0 14 44c0-3.859-3.14-7-7-7s-7 3.141-7 7 3.14 7 7 7a6.952 6.952 0 0 0 3.381-.875C15.26 55.136 21.994 58 29 58c3.435 0 6.778-.663 9.936-1.971.51-.211.753-.796.542-1.307a1.001 1.001 0 0 0-1.307-.54zM4 31.213a1 1 0 0 0 1.068-.927c.712-10.089 7.586-18.52 17.22-21.314C23.142 11.874 25.825 14 29 14c3.86 0 7-3.141 7-7s-3.14-7-7-7c-3.851 0-6.985 3.127-6.999 6.975C11.42 9.922 3.851 19.12 3.073 30.146A.999.999 0 0 0 4 31.213z"/></g></svg>
|
||||||
|
Before Width: | Height: | Size: 885 B After Width: | Height: | Size: 885 B |
1
img/clone.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg width="16" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M11.8 13.8H2.2V4.2h9.6m1.2 0c0-.67-.53-1.2-1.2-1.2H2.2C1.53 3 1 3.53 1 4.2v9.6c0 .67.53 1.2 1.2 1.2h9.6c.67 0 1.2-.53 1.2-1.2"/><path d="m4.2 1c-0.67 0-1.2 0.54-1.2 1.2h10.8v10.8c0.67 0 1.2-0.53 1.2-1.2v-9.6c0-0.67-0.53-1.2-1.2-1.2z"/></svg>
|
||||||
|
After Width: | Height: | Size: 327 B |
1
img/reply.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><path d="M15 15s-.4-7.8-7-10V1L1 8l7 7v-4c5.1 0 7 4 7 4z"/></svg>
|
||||||
|
After Width: | Height: | Size: 128 B |
35
l10n/ar.js
@@ -68,7 +68,6 @@ OC.L10N.register(
|
|||||||
"Changes in the <strong>Deck app</strong>" : "تغييرات في <strong>تطبيق Deck</strong> ",
|
"Changes in the <strong>Deck app</strong>" : "تغييرات في <strong>تطبيق Deck</strong> ",
|
||||||
"A <strong>comment</strong> was created on a card" : "<strong>تعليق</strong> تم إنشاؤه على بطاقة",
|
"A <strong>comment</strong> was created on a card" : "<strong>تعليق</strong> تم إنشاؤه على بطاقة",
|
||||||
"Upcoming cards" : "البطاقات القادمة",
|
"Upcoming cards" : "البطاقات القادمة",
|
||||||
"Load more" : "حمّل أكثر",
|
|
||||||
"Personal" : "شخصي",
|
"Personal" : "شخصي",
|
||||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "البطاقة \"%s\" على \"%s\" كُلفت بها من قبل %s.",
|
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "البطاقة \"%s\" على \"%s\" كُلفت بها من قبل %s.",
|
||||||
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} قام بتكليف البطاقة {deck-board} على {deck-board} لك",
|
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} قام بتكليف البطاقة {deck-board} على {deck-board} لك",
|
||||||
@@ -79,12 +78,8 @@ OC.L10N.register(
|
|||||||
"The board \"%s\" has been shared with you by %s." : "تمت مشاركة اللوح \"%s\" معك من قبل %s.",
|
"The board \"%s\" has been shared with you by %s." : "تمت مشاركة اللوح \"%s\" معك من قبل %s.",
|
||||||
"{user} has shared {deck-board} with you." : "{user} قام بمشاركة {deck-board} معك.",
|
"{user} has shared {deck-board} with you." : "{user} قام بمشاركة {deck-board} معك.",
|
||||||
"Deck board" : "لوح Deck",
|
"Deck board" : "لوح Deck",
|
||||||
"Owned by %1$s" : "يملكها %1$s",
|
|
||||||
"Deck boards, cards and comments" : "الرُّقع و البطاقات و الملاحظات",
|
|
||||||
"From %1$s, in %2$s/%3$s, owned by %4$s" : " من %1$s، في %2$s/%3$s، يملكها %4$s",
|
|
||||||
"Card comments" : "تعليقات البطاقة ",
|
"Card comments" : "تعليقات البطاقة ",
|
||||||
"%s on %s" : "%s على %s",
|
"%s on %s" : "%s على %s",
|
||||||
"Deck boards and cards" : "الرُّقع و البطاقات",
|
|
||||||
"No data was provided to create an attachment." : "لا بيانات تم تقديمها لانشاء مرفق",
|
"No data was provided to create an attachment." : "لا بيانات تم تقديمها لانشاء مرفق",
|
||||||
"Finished" : "اكتمل",
|
"Finished" : "اكتمل",
|
||||||
"To review" : "لإعادة المراجعة",
|
"To review" : "لإعادة المراجعة",
|
||||||
@@ -106,12 +101,10 @@ OC.L10N.register(
|
|||||||
"Could not write file to disk" : "لم يستطع كتابة ملف للقرص",
|
"Could not write file to disk" : "لم يستطع كتابة ملف للقرص",
|
||||||
"A PHP extension stopped the file upload" : "إضافة البي اچ بي PHP أوقفت رفع الملف",
|
"A PHP extension stopped the file upload" : "إضافة البي اچ بي PHP أوقفت رفع الملف",
|
||||||
"No file uploaded or file size exceeds maximum of %s" : "لم يتم تحميل أي ملف أو أن يتجاوز حجم الملف الحد الأقصى %s",
|
"No file uploaded or file size exceeds maximum of %s" : "لم يتم تحميل أي ملف أو أن يتجاوز حجم الملف الحد الأقصى %s",
|
||||||
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : " هذه الملاحظات فيها أكثر من %s حرفاً.\n تمّت إضافتها كمُرفق إلى البطاقة التي اسمها%s.\n الموجودة على الرابط %s.",
|
|
||||||
"Card not found" : "لم يتم العثور على البطاقة ",
|
"Card not found" : "لم يتم العثور على البطاقة ",
|
||||||
"Path is already shared with this card" : "تم مشاركة المسار بالفعل مع هذه البطاقة ",
|
"Path is already shared with this card" : "تم مشاركة المسار بالفعل مع هذه البطاقة ",
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "تاريخ غير صحيح, يجب أن يكون تنسيق التاريخ YYYY-MM-DD",
|
"Invalid date, date format must be YYYY-MM-DD" : "تاريخ غير صحيح, يجب أن يكون تنسيق التاريخ YYYY-MM-DD",
|
||||||
"Personal planning and team project organization" : "التخطيط الشخصي و تنظيم مشروع الفريق",
|
"Personal planning and team project organization" : "التخطيط الشخصي و تنظيم مشروع الفريق",
|
||||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "التطبيق Deck \"الرُّقعة\" هو أداة لتنظيم المهام الشخصية و الجماعية في نكست كلاود على نمط \"خطوط التصنيع أو التجميع في المصانع\" و المعروف بـ kanban.\n\n\n- 📥 أكتب مهمتك او مهمة فريقك على بطاقة و ضع البطاقة في الرُّقعة على كدسة البطاقات من ذات التصنيف أو المرحلة من الإنجاز\n- 📄 دوّن ملاحظاتك الإضافية على البطاقة بصيغة ماركداون markdown\n- 🔖 و يمكنك أيضاً إسناد البطاقة أي المهمة إلى شخص أو أشخاص في فريقك\n- 👥 شارك البطاقة مع من ترغب من أعضاء فريقك أو عائلتك أو أصدقائك\n- 📎 إرفاق ملفات و تضمينها بصيغة ماركداون في البطاقة\n- 💬ناقش البطاقة مع زملائك في خانة الملاحظات\n- ⚡ تابع ما يُستجد من عمليات و تطوّرات على البطاقة أو المهمة\n- 🚀 حافظ على مشروعك مُنسّقاً باستمرار.",
|
|
||||||
"Add board" : "إضافة لوح",
|
"Add board" : "إضافة لوح",
|
||||||
"Select the board to link to a project" : "تحديد اللوح لربطه بمشروع",
|
"Select the board to link to a project" : "تحديد اللوح لربطه بمشروع",
|
||||||
"Search by board title" : "بحث بواسطة عنوان اللوح",
|
"Search by board title" : "بحث بواسطة عنوان اللوح",
|
||||||
@@ -140,7 +133,6 @@ OC.L10N.register(
|
|||||||
"Archived cards" : "البطاقات المؤرشفة",
|
"Archived cards" : "البطاقات المؤرشفة",
|
||||||
"Add list" : "إضافة قائمة",
|
"Add list" : "إضافة قائمة",
|
||||||
"List name" : "قامة اسماء",
|
"List name" : "قامة اسماء",
|
||||||
"Active filters" : "فلاتر نشطة",
|
|
||||||
"Apply filter" : "تطبيق التصفية",
|
"Apply filter" : "تطبيق التصفية",
|
||||||
"Filter by tag" : "تصفية بواسطة الوسم",
|
"Filter by tag" : "تصفية بواسطة الوسم",
|
||||||
"Filter by assigned user" : "تصفية بواسطة المستخدم الموكل اليه",
|
"Filter by assigned user" : "تصفية بواسطة المستخدم الموكل اليه",
|
||||||
@@ -157,7 +149,6 @@ OC.L10N.register(
|
|||||||
"Toggle compact mode" : "تبديل النمط المضغوط",
|
"Toggle compact mode" : "تبديل النمط المضغوط",
|
||||||
"Open details" : "افتح التفاصيل",
|
"Open details" : "افتح التفاصيل",
|
||||||
"Details" : "التفاصيل",
|
"Details" : "التفاصيل",
|
||||||
"Currently present people" : "أشخاص معروضون حاليّاً",
|
|
||||||
"Loading board" : "جارِ تحميل اللوح..",
|
"Loading board" : "جارِ تحميل اللوح..",
|
||||||
"No lists available" : "لا يوجد قائمة متاحه ",
|
"No lists available" : "لا يوجد قائمة متاحه ",
|
||||||
"Create a new list to add cards to this board" : "إنشاء قائمة جديدة لإضافة البطاقات على هذا اللوح",
|
"Create a new list to add cards to this board" : "إنشاء قائمة جديدة لإضافة البطاقات على هذا اللوح",
|
||||||
@@ -181,17 +172,10 @@ OC.L10N.register(
|
|||||||
"Owner" : "المالك",
|
"Owner" : "المالك",
|
||||||
"Delete" : "حذف ",
|
"Delete" : "حذف ",
|
||||||
"Failed to create share with {displayName}" : "فشل في إنشاء المشاركة مع {displayName}",
|
"Failed to create share with {displayName}" : "فشل في إنشاء المشاركة مع {displayName}",
|
||||||
"Are you sure you want to transfer the board {title} to {user}?" : "هل أنت متأكد أنك تريد نقل الرُّقعة {title} إلى {user} ؟",
|
|
||||||
"Transfer the board." : "نقل الرُّقعة.",
|
|
||||||
"Transfer" : "نقل",
|
"Transfer" : "نقل",
|
||||||
"The board has been transferred to {user}" : "تمّ نقل الرُّقعة إلى {user}",
|
|
||||||
"Failed to transfer the board to {user}" : "إخفاق في نقل الرُّقعة إلى {user}",
|
|
||||||
"Edit list title" : "عدّل اسم القائمة",
|
|
||||||
"Archive all cards" : "أرشفة جميع البطاقات ",
|
"Archive all cards" : "أرشفة جميع البطاقات ",
|
||||||
"Unarchive all cards" : "تراجع عن أرشفة كل البطاقات",
|
|
||||||
"Delete list" : "حذف القائمة",
|
"Delete list" : "حذف القائمة",
|
||||||
"Archive all cards in this list" : "أرشفة جميع البطاقات في القائمة ",
|
"Archive all cards in this list" : "أرشفة جميع البطاقات في القائمة ",
|
||||||
"Unarchive all cards in this list" : "تراجع عن أرشفة كل البطاقات في هذه القائمة",
|
|
||||||
"Add a new card" : "إضافة بطاقة جديدة",
|
"Add a new card" : "إضافة بطاقة جديدة",
|
||||||
"Card name" : "اسم البطاقة ",
|
"Card name" : "اسم البطاقة ",
|
||||||
"List deleted" : "القائمة حٌذفت ",
|
"List deleted" : "القائمة حٌذفت ",
|
||||||
@@ -202,11 +186,9 @@ OC.L10N.register(
|
|||||||
"Members" : "الاعضاء",
|
"Members" : "الاعضاء",
|
||||||
"Upload new files" : "رفع ملفات جديدة",
|
"Upload new files" : "رفع ملفات جديدة",
|
||||||
"Share from Files" : "مشاركة من الملفات",
|
"Share from Files" : "مشاركة من الملفات",
|
||||||
"Pending share" : "مشاركة مُعلّقة",
|
|
||||||
"Add this attachment" : "إضافة هذا المرفق",
|
"Add this attachment" : "إضافة هذا المرفق",
|
||||||
"Show in Files" : "عرض في الملفات ",
|
"Show in Files" : "عرض في الملفات ",
|
||||||
"Download" : "تنزيل",
|
"Download" : "تنزيل",
|
||||||
"Remove attachment" : "حذف المُرفق",
|
|
||||||
"Delete Attachment" : "مسح المرفق",
|
"Delete Attachment" : "مسح المرفق",
|
||||||
"Restore Attachment" : "إستعادة المرفق",
|
"Restore Attachment" : "إستعادة المرفق",
|
||||||
"File to share" : "ملف للمشاركة",
|
"File to share" : "ملف للمشاركة",
|
||||||
@@ -249,9 +231,7 @@ OC.L10N.register(
|
|||||||
"Write a description …" : "كتابة وصف...",
|
"Write a description …" : "كتابة وصف...",
|
||||||
"Choose attachment" : "اختيار مرفق",
|
"Choose attachment" : "اختيار مرفق",
|
||||||
"(group)" : "(مجموعة)",
|
"(group)" : "(مجموعة)",
|
||||||
"Todo items" : "قائمة المهام",
|
|
||||||
"{count} comments, {unread} unread" : "{عدد} التعليقات، {غير مقروءة} غير مقروءة",
|
"{count} comments, {unread} unread" : "{عدد} التعليقات، {غير مقروءة} غير مقروءة",
|
||||||
"Edit card title" : "تعديل اسم القائمة",
|
|
||||||
"Assign to me" : "ينسب لي",
|
"Assign to me" : "ينسب لي",
|
||||||
"Unassign myself" : "إلغاء تعييني ",
|
"Unassign myself" : "إلغاء تعييني ",
|
||||||
"Move card" : "حرك البطاقة",
|
"Move card" : "حرك البطاقة",
|
||||||
@@ -260,15 +240,12 @@ OC.L10N.register(
|
|||||||
"Archive card" : "أرشفة البطاقة",
|
"Archive card" : "أرشفة البطاقة",
|
||||||
"Delete card" : "حذف البطاقة",
|
"Delete card" : "حذف البطاقة",
|
||||||
"Move card to another board" : "حرك البطاقة الى لوح اخر",
|
"Move card to another board" : "حرك البطاقة الى لوح اخر",
|
||||||
"List is empty" : "القائمة فارغة",
|
|
||||||
"Card deleted" : "البطاقة حٌذفت ",
|
"Card deleted" : "البطاقة حٌذفت ",
|
||||||
"seconds ago" : "ثوانٍ مضت",
|
"seconds ago" : "ثوانٍ مضت",
|
||||||
"All boards" : "جميع الالواح",
|
"All boards" : "جميع الالواح",
|
||||||
"Archived boards" : "الالواح المؤرشفة",
|
"Archived boards" : "الالواح المؤرشفة",
|
||||||
"Shared with you" : "تم مشاركتها معك",
|
"Shared with you" : "تم مشاركتها معك",
|
||||||
"Deck settings" : "إعدادات الرُّقعة",
|
|
||||||
"Use bigger card view" : "استخدام بطاقة عرض أكبر ",
|
"Use bigger card view" : "استخدام بطاقة عرض أكبر ",
|
||||||
"Show card ID badge" : "أعرض شارة رقم البطاقة",
|
|
||||||
"Show boards in calendar/tasks" : "إظهار اللوح في التقويم/المهام",
|
"Show boards in calendar/tasks" : "إظهار اللوح في التقويم/المهام",
|
||||||
"Limit deck usage of groups" : "تقييد استخدام Deck للمجموعات",
|
"Limit deck usage of groups" : "تقييد استخدام Deck للمجموعات",
|
||||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم.",
|
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم.",
|
||||||
@@ -277,7 +254,6 @@ OC.L10N.register(
|
|||||||
"Clone board" : "استنسخ اللوح",
|
"Clone board" : "استنسخ اللوح",
|
||||||
"Unarchive board" : "إلغاء أرشفة اللوح",
|
"Unarchive board" : "إلغاء أرشفة اللوح",
|
||||||
"Archive board" : "أرشفة اللوح ",
|
"Archive board" : "أرشفة اللوح ",
|
||||||
"Export board" : "صدّر الرُّقعة",
|
|
||||||
"Turn on due date reminders" : "تفعيل التذكيرات للموعد المحدد ",
|
"Turn on due date reminders" : "تفعيل التذكيرات للموعد المحدد ",
|
||||||
"Turn off due date reminders" : "إيقاف تشغيل التذكيرات للموعد المحددد",
|
"Turn off due date reminders" : "إيقاف تشغيل التذكيرات للموعد المحددد",
|
||||||
"Due date reminders" : "تذكيرات الموعد المحدد ",
|
"Due date reminders" : "تذكيرات الموعد المحدد ",
|
||||||
@@ -289,22 +265,14 @@ OC.L10N.register(
|
|||||||
"Only assigned cards" : "البطاقات المخصصة فقط",
|
"Only assigned cards" : "البطاقات المخصصة فقط",
|
||||||
"No reminder" : "لا يوجد تذكير ",
|
"No reminder" : "لا يوجد تذكير ",
|
||||||
"An error occurred" : "حدث خطأ",
|
"An error occurred" : "حدث خطأ",
|
||||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "هل أنت متأكد من حذف الرقعة {title}؟ هذا سيؤدي إلى حذف كل بيانات هذه الرُّقعة بما في ذلك البطاقات المؤرشفة.",
|
|
||||||
"Delete the board?" : "مسح اللوح؟",
|
"Delete the board?" : "مسح اللوح؟",
|
||||||
"Loading filtered view" : "جارِ تحميل التصفية ",
|
"Loading filtered view" : "جارِ تحميل التصفية ",
|
||||||
"No due" : "غير محدد",
|
"No due" : "غير محدد",
|
||||||
"Search for {searchQuery} in all boards" : "البحث عن {searchQuery} في جميع اللوح",
|
"Search for {searchQuery} in all boards" : "البحث عن {searchQuery} في جميع اللوح",
|
||||||
"No results found" : "لا يتم العثور على أي نتائج ",
|
"No results found" : "لا يتم العثور على أي نتائج ",
|
||||||
"Deck board {name}\n* Last modified on {lastMod}" : "اسم الرُّقعة {name} \n* آخر تعديل لها في {lastMod}",
|
|
||||||
"{stack} in {board}" : "{stack} في {board}",
|
"{stack} in {board}" : "{stack} في {board}",
|
||||||
"Click to expand description" : "إضعط للتوسّع في الوصف",
|
|
||||||
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* أُنشأت في {created}\n* آخر تعديل لها في {lastMod}\n* {nbAttachments} مُرفقات\n* {nbComments} مُلاحظات",
|
|
||||||
"{nbCards} cards" : "{nbCards} بطاقات",
|
|
||||||
"Click to expand comment" : "إضغط للتوسع في الملاحظات",
|
|
||||||
"No upcoming cards" : "لا يوجد بطاقات قادمة ",
|
"No upcoming cards" : "لا يوجد بطاقات قادمة ",
|
||||||
"upcoming cards" : "البطاقات القادمة",
|
"upcoming cards" : "البطاقات القادمة",
|
||||||
"New card" : "بطاقة جديدة",
|
|
||||||
"Due on {date}" : "مطلوب في {date}",
|
|
||||||
"Link to a board" : "ربط بلوح",
|
"Link to a board" : "ربط بلوح",
|
||||||
"Link to a card" : "ربط ببطاقة",
|
"Link to a card" : "ربط ببطاقة",
|
||||||
"Create a card" : "أنشى بطاقة ",
|
"Create a card" : "أنشى بطاقة ",
|
||||||
@@ -316,6 +284,7 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "مشاركة مع بطاقة Deck",
|
"Share with a Deck card" : "مشاركة مع بطاقة Deck",
|
||||||
"Share {file} with a Deck card" : "مشاركة الملف {file} مع بطاقة Deck",
|
"Share {file} with a Deck card" : "مشاركة الملف {file} مع بطاقة Deck",
|
||||||
"Share" : "مشاركة ",
|
"Share" : "مشاركة ",
|
||||||
"Add a new list" : "اضف قائمة جديدة"
|
"Add a new list" : "اضف قائمة جديدة",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "هل انت متأكد تريد مسح اللوح {title}؟ هذا سوف يمسح جميع بيانات هذا اللوح."
|
||||||
},
|
},
|
||||||
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
|
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
|
||||||
|
|||||||
35
l10n/ar.json
@@ -66,7 +66,6 @@
|
|||||||
"Changes in the <strong>Deck app</strong>" : "تغييرات في <strong>تطبيق Deck</strong> ",
|
"Changes in the <strong>Deck app</strong>" : "تغييرات في <strong>تطبيق Deck</strong> ",
|
||||||
"A <strong>comment</strong> was created on a card" : "<strong>تعليق</strong> تم إنشاؤه على بطاقة",
|
"A <strong>comment</strong> was created on a card" : "<strong>تعليق</strong> تم إنشاؤه على بطاقة",
|
||||||
"Upcoming cards" : "البطاقات القادمة",
|
"Upcoming cards" : "البطاقات القادمة",
|
||||||
"Load more" : "حمّل أكثر",
|
|
||||||
"Personal" : "شخصي",
|
"Personal" : "شخصي",
|
||||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "البطاقة \"%s\" على \"%s\" كُلفت بها من قبل %s.",
|
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "البطاقة \"%s\" على \"%s\" كُلفت بها من قبل %s.",
|
||||||
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} قام بتكليف البطاقة {deck-board} على {deck-board} لك",
|
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} قام بتكليف البطاقة {deck-board} على {deck-board} لك",
|
||||||
@@ -77,12 +76,8 @@
|
|||||||
"The board \"%s\" has been shared with you by %s." : "تمت مشاركة اللوح \"%s\" معك من قبل %s.",
|
"The board \"%s\" has been shared with you by %s." : "تمت مشاركة اللوح \"%s\" معك من قبل %s.",
|
||||||
"{user} has shared {deck-board} with you." : "{user} قام بمشاركة {deck-board} معك.",
|
"{user} has shared {deck-board} with you." : "{user} قام بمشاركة {deck-board} معك.",
|
||||||
"Deck board" : "لوح Deck",
|
"Deck board" : "لوح Deck",
|
||||||
"Owned by %1$s" : "يملكها %1$s",
|
|
||||||
"Deck boards, cards and comments" : "الرُّقع و البطاقات و الملاحظات",
|
|
||||||
"From %1$s, in %2$s/%3$s, owned by %4$s" : " من %1$s، في %2$s/%3$s، يملكها %4$s",
|
|
||||||
"Card comments" : "تعليقات البطاقة ",
|
"Card comments" : "تعليقات البطاقة ",
|
||||||
"%s on %s" : "%s على %s",
|
"%s on %s" : "%s على %s",
|
||||||
"Deck boards and cards" : "الرُّقع و البطاقات",
|
|
||||||
"No data was provided to create an attachment." : "لا بيانات تم تقديمها لانشاء مرفق",
|
"No data was provided to create an attachment." : "لا بيانات تم تقديمها لانشاء مرفق",
|
||||||
"Finished" : "اكتمل",
|
"Finished" : "اكتمل",
|
||||||
"To review" : "لإعادة المراجعة",
|
"To review" : "لإعادة المراجعة",
|
||||||
@@ -104,12 +99,10 @@
|
|||||||
"Could not write file to disk" : "لم يستطع كتابة ملف للقرص",
|
"Could not write file to disk" : "لم يستطع كتابة ملف للقرص",
|
||||||
"A PHP extension stopped the file upload" : "إضافة البي اچ بي PHP أوقفت رفع الملف",
|
"A PHP extension stopped the file upload" : "إضافة البي اچ بي PHP أوقفت رفع الملف",
|
||||||
"No file uploaded or file size exceeds maximum of %s" : "لم يتم تحميل أي ملف أو أن يتجاوز حجم الملف الحد الأقصى %s",
|
"No file uploaded or file size exceeds maximum of %s" : "لم يتم تحميل أي ملف أو أن يتجاوز حجم الملف الحد الأقصى %s",
|
||||||
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : " هذه الملاحظات فيها أكثر من %s حرفاً.\n تمّت إضافتها كمُرفق إلى البطاقة التي اسمها%s.\n الموجودة على الرابط %s.",
|
|
||||||
"Card not found" : "لم يتم العثور على البطاقة ",
|
"Card not found" : "لم يتم العثور على البطاقة ",
|
||||||
"Path is already shared with this card" : "تم مشاركة المسار بالفعل مع هذه البطاقة ",
|
"Path is already shared with this card" : "تم مشاركة المسار بالفعل مع هذه البطاقة ",
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "تاريخ غير صحيح, يجب أن يكون تنسيق التاريخ YYYY-MM-DD",
|
"Invalid date, date format must be YYYY-MM-DD" : "تاريخ غير صحيح, يجب أن يكون تنسيق التاريخ YYYY-MM-DD",
|
||||||
"Personal planning and team project organization" : "التخطيط الشخصي و تنظيم مشروع الفريق",
|
"Personal planning and team project organization" : "التخطيط الشخصي و تنظيم مشروع الفريق",
|
||||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "التطبيق Deck \"الرُّقعة\" هو أداة لتنظيم المهام الشخصية و الجماعية في نكست كلاود على نمط \"خطوط التصنيع أو التجميع في المصانع\" و المعروف بـ kanban.\n\n\n- 📥 أكتب مهمتك او مهمة فريقك على بطاقة و ضع البطاقة في الرُّقعة على كدسة البطاقات من ذات التصنيف أو المرحلة من الإنجاز\n- 📄 دوّن ملاحظاتك الإضافية على البطاقة بصيغة ماركداون markdown\n- 🔖 و يمكنك أيضاً إسناد البطاقة أي المهمة إلى شخص أو أشخاص في فريقك\n- 👥 شارك البطاقة مع من ترغب من أعضاء فريقك أو عائلتك أو أصدقائك\n- 📎 إرفاق ملفات و تضمينها بصيغة ماركداون في البطاقة\n- 💬ناقش البطاقة مع زملائك في خانة الملاحظات\n- ⚡ تابع ما يُستجد من عمليات و تطوّرات على البطاقة أو المهمة\n- 🚀 حافظ على مشروعك مُنسّقاً باستمرار.",
|
|
||||||
"Add board" : "إضافة لوح",
|
"Add board" : "إضافة لوح",
|
||||||
"Select the board to link to a project" : "تحديد اللوح لربطه بمشروع",
|
"Select the board to link to a project" : "تحديد اللوح لربطه بمشروع",
|
||||||
"Search by board title" : "بحث بواسطة عنوان اللوح",
|
"Search by board title" : "بحث بواسطة عنوان اللوح",
|
||||||
@@ -138,7 +131,6 @@
|
|||||||
"Archived cards" : "البطاقات المؤرشفة",
|
"Archived cards" : "البطاقات المؤرشفة",
|
||||||
"Add list" : "إضافة قائمة",
|
"Add list" : "إضافة قائمة",
|
||||||
"List name" : "قامة اسماء",
|
"List name" : "قامة اسماء",
|
||||||
"Active filters" : "فلاتر نشطة",
|
|
||||||
"Apply filter" : "تطبيق التصفية",
|
"Apply filter" : "تطبيق التصفية",
|
||||||
"Filter by tag" : "تصفية بواسطة الوسم",
|
"Filter by tag" : "تصفية بواسطة الوسم",
|
||||||
"Filter by assigned user" : "تصفية بواسطة المستخدم الموكل اليه",
|
"Filter by assigned user" : "تصفية بواسطة المستخدم الموكل اليه",
|
||||||
@@ -155,7 +147,6 @@
|
|||||||
"Toggle compact mode" : "تبديل النمط المضغوط",
|
"Toggle compact mode" : "تبديل النمط المضغوط",
|
||||||
"Open details" : "افتح التفاصيل",
|
"Open details" : "افتح التفاصيل",
|
||||||
"Details" : "التفاصيل",
|
"Details" : "التفاصيل",
|
||||||
"Currently present people" : "أشخاص معروضون حاليّاً",
|
|
||||||
"Loading board" : "جارِ تحميل اللوح..",
|
"Loading board" : "جارِ تحميل اللوح..",
|
||||||
"No lists available" : "لا يوجد قائمة متاحه ",
|
"No lists available" : "لا يوجد قائمة متاحه ",
|
||||||
"Create a new list to add cards to this board" : "إنشاء قائمة جديدة لإضافة البطاقات على هذا اللوح",
|
"Create a new list to add cards to this board" : "إنشاء قائمة جديدة لإضافة البطاقات على هذا اللوح",
|
||||||
@@ -179,17 +170,10 @@
|
|||||||
"Owner" : "المالك",
|
"Owner" : "المالك",
|
||||||
"Delete" : "حذف ",
|
"Delete" : "حذف ",
|
||||||
"Failed to create share with {displayName}" : "فشل في إنشاء المشاركة مع {displayName}",
|
"Failed to create share with {displayName}" : "فشل في إنشاء المشاركة مع {displayName}",
|
||||||
"Are you sure you want to transfer the board {title} to {user}?" : "هل أنت متأكد أنك تريد نقل الرُّقعة {title} إلى {user} ؟",
|
|
||||||
"Transfer the board." : "نقل الرُّقعة.",
|
|
||||||
"Transfer" : "نقل",
|
"Transfer" : "نقل",
|
||||||
"The board has been transferred to {user}" : "تمّ نقل الرُّقعة إلى {user}",
|
|
||||||
"Failed to transfer the board to {user}" : "إخفاق في نقل الرُّقعة إلى {user}",
|
|
||||||
"Edit list title" : "عدّل اسم القائمة",
|
|
||||||
"Archive all cards" : "أرشفة جميع البطاقات ",
|
"Archive all cards" : "أرشفة جميع البطاقات ",
|
||||||
"Unarchive all cards" : "تراجع عن أرشفة كل البطاقات",
|
|
||||||
"Delete list" : "حذف القائمة",
|
"Delete list" : "حذف القائمة",
|
||||||
"Archive all cards in this list" : "أرشفة جميع البطاقات في القائمة ",
|
"Archive all cards in this list" : "أرشفة جميع البطاقات في القائمة ",
|
||||||
"Unarchive all cards in this list" : "تراجع عن أرشفة كل البطاقات في هذه القائمة",
|
|
||||||
"Add a new card" : "إضافة بطاقة جديدة",
|
"Add a new card" : "إضافة بطاقة جديدة",
|
||||||
"Card name" : "اسم البطاقة ",
|
"Card name" : "اسم البطاقة ",
|
||||||
"List deleted" : "القائمة حٌذفت ",
|
"List deleted" : "القائمة حٌذفت ",
|
||||||
@@ -200,11 +184,9 @@
|
|||||||
"Members" : "الاعضاء",
|
"Members" : "الاعضاء",
|
||||||
"Upload new files" : "رفع ملفات جديدة",
|
"Upload new files" : "رفع ملفات جديدة",
|
||||||
"Share from Files" : "مشاركة من الملفات",
|
"Share from Files" : "مشاركة من الملفات",
|
||||||
"Pending share" : "مشاركة مُعلّقة",
|
|
||||||
"Add this attachment" : "إضافة هذا المرفق",
|
"Add this attachment" : "إضافة هذا المرفق",
|
||||||
"Show in Files" : "عرض في الملفات ",
|
"Show in Files" : "عرض في الملفات ",
|
||||||
"Download" : "تنزيل",
|
"Download" : "تنزيل",
|
||||||
"Remove attachment" : "حذف المُرفق",
|
|
||||||
"Delete Attachment" : "مسح المرفق",
|
"Delete Attachment" : "مسح المرفق",
|
||||||
"Restore Attachment" : "إستعادة المرفق",
|
"Restore Attachment" : "إستعادة المرفق",
|
||||||
"File to share" : "ملف للمشاركة",
|
"File to share" : "ملف للمشاركة",
|
||||||
@@ -247,9 +229,7 @@
|
|||||||
"Write a description …" : "كتابة وصف...",
|
"Write a description …" : "كتابة وصف...",
|
||||||
"Choose attachment" : "اختيار مرفق",
|
"Choose attachment" : "اختيار مرفق",
|
||||||
"(group)" : "(مجموعة)",
|
"(group)" : "(مجموعة)",
|
||||||
"Todo items" : "قائمة المهام",
|
|
||||||
"{count} comments, {unread} unread" : "{عدد} التعليقات، {غير مقروءة} غير مقروءة",
|
"{count} comments, {unread} unread" : "{عدد} التعليقات، {غير مقروءة} غير مقروءة",
|
||||||
"Edit card title" : "تعديل اسم القائمة",
|
|
||||||
"Assign to me" : "ينسب لي",
|
"Assign to me" : "ينسب لي",
|
||||||
"Unassign myself" : "إلغاء تعييني ",
|
"Unassign myself" : "إلغاء تعييني ",
|
||||||
"Move card" : "حرك البطاقة",
|
"Move card" : "حرك البطاقة",
|
||||||
@@ -258,15 +238,12 @@
|
|||||||
"Archive card" : "أرشفة البطاقة",
|
"Archive card" : "أرشفة البطاقة",
|
||||||
"Delete card" : "حذف البطاقة",
|
"Delete card" : "حذف البطاقة",
|
||||||
"Move card to another board" : "حرك البطاقة الى لوح اخر",
|
"Move card to another board" : "حرك البطاقة الى لوح اخر",
|
||||||
"List is empty" : "القائمة فارغة",
|
|
||||||
"Card deleted" : "البطاقة حٌذفت ",
|
"Card deleted" : "البطاقة حٌذفت ",
|
||||||
"seconds ago" : "ثوانٍ مضت",
|
"seconds ago" : "ثوانٍ مضت",
|
||||||
"All boards" : "جميع الالواح",
|
"All boards" : "جميع الالواح",
|
||||||
"Archived boards" : "الالواح المؤرشفة",
|
"Archived boards" : "الالواح المؤرشفة",
|
||||||
"Shared with you" : "تم مشاركتها معك",
|
"Shared with you" : "تم مشاركتها معك",
|
||||||
"Deck settings" : "إعدادات الرُّقعة",
|
|
||||||
"Use bigger card view" : "استخدام بطاقة عرض أكبر ",
|
"Use bigger card view" : "استخدام بطاقة عرض أكبر ",
|
||||||
"Show card ID badge" : "أعرض شارة رقم البطاقة",
|
|
||||||
"Show boards in calendar/tasks" : "إظهار اللوح في التقويم/المهام",
|
"Show boards in calendar/tasks" : "إظهار اللوح في التقويم/المهام",
|
||||||
"Limit deck usage of groups" : "تقييد استخدام Deck للمجموعات",
|
"Limit deck usage of groups" : "تقييد استخدام Deck للمجموعات",
|
||||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم.",
|
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم.",
|
||||||
@@ -275,7 +252,6 @@
|
|||||||
"Clone board" : "استنسخ اللوح",
|
"Clone board" : "استنسخ اللوح",
|
||||||
"Unarchive board" : "إلغاء أرشفة اللوح",
|
"Unarchive board" : "إلغاء أرشفة اللوح",
|
||||||
"Archive board" : "أرشفة اللوح ",
|
"Archive board" : "أرشفة اللوح ",
|
||||||
"Export board" : "صدّر الرُّقعة",
|
|
||||||
"Turn on due date reminders" : "تفعيل التذكيرات للموعد المحدد ",
|
"Turn on due date reminders" : "تفعيل التذكيرات للموعد المحدد ",
|
||||||
"Turn off due date reminders" : "إيقاف تشغيل التذكيرات للموعد المحددد",
|
"Turn off due date reminders" : "إيقاف تشغيل التذكيرات للموعد المحددد",
|
||||||
"Due date reminders" : "تذكيرات الموعد المحدد ",
|
"Due date reminders" : "تذكيرات الموعد المحدد ",
|
||||||
@@ -287,22 +263,14 @@
|
|||||||
"Only assigned cards" : "البطاقات المخصصة فقط",
|
"Only assigned cards" : "البطاقات المخصصة فقط",
|
||||||
"No reminder" : "لا يوجد تذكير ",
|
"No reminder" : "لا يوجد تذكير ",
|
||||||
"An error occurred" : "حدث خطأ",
|
"An error occurred" : "حدث خطأ",
|
||||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "هل أنت متأكد من حذف الرقعة {title}؟ هذا سيؤدي إلى حذف كل بيانات هذه الرُّقعة بما في ذلك البطاقات المؤرشفة.",
|
|
||||||
"Delete the board?" : "مسح اللوح؟",
|
"Delete the board?" : "مسح اللوح؟",
|
||||||
"Loading filtered view" : "جارِ تحميل التصفية ",
|
"Loading filtered view" : "جارِ تحميل التصفية ",
|
||||||
"No due" : "غير محدد",
|
"No due" : "غير محدد",
|
||||||
"Search for {searchQuery} in all boards" : "البحث عن {searchQuery} في جميع اللوح",
|
"Search for {searchQuery} in all boards" : "البحث عن {searchQuery} في جميع اللوح",
|
||||||
"No results found" : "لا يتم العثور على أي نتائج ",
|
"No results found" : "لا يتم العثور على أي نتائج ",
|
||||||
"Deck board {name}\n* Last modified on {lastMod}" : "اسم الرُّقعة {name} \n* آخر تعديل لها في {lastMod}",
|
|
||||||
"{stack} in {board}" : "{stack} في {board}",
|
"{stack} in {board}" : "{stack} في {board}",
|
||||||
"Click to expand description" : "إضعط للتوسّع في الوصف",
|
|
||||||
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* أُنشأت في {created}\n* آخر تعديل لها في {lastMod}\n* {nbAttachments} مُرفقات\n* {nbComments} مُلاحظات",
|
|
||||||
"{nbCards} cards" : "{nbCards} بطاقات",
|
|
||||||
"Click to expand comment" : "إضغط للتوسع في الملاحظات",
|
|
||||||
"No upcoming cards" : "لا يوجد بطاقات قادمة ",
|
"No upcoming cards" : "لا يوجد بطاقات قادمة ",
|
||||||
"upcoming cards" : "البطاقات القادمة",
|
"upcoming cards" : "البطاقات القادمة",
|
||||||
"New card" : "بطاقة جديدة",
|
|
||||||
"Due on {date}" : "مطلوب في {date}",
|
|
||||||
"Link to a board" : "ربط بلوح",
|
"Link to a board" : "ربط بلوح",
|
||||||
"Link to a card" : "ربط ببطاقة",
|
"Link to a card" : "ربط ببطاقة",
|
||||||
"Create a card" : "أنشى بطاقة ",
|
"Create a card" : "أنشى بطاقة ",
|
||||||
@@ -314,6 +282,7 @@
|
|||||||
"Share with a Deck card" : "مشاركة مع بطاقة Deck",
|
"Share with a Deck card" : "مشاركة مع بطاقة Deck",
|
||||||
"Share {file} with a Deck card" : "مشاركة الملف {file} مع بطاقة Deck",
|
"Share {file} with a Deck card" : "مشاركة الملف {file} مع بطاقة Deck",
|
||||||
"Share" : "مشاركة ",
|
"Share" : "مشاركة ",
|
||||||
"Add a new list" : "اضف قائمة جديدة"
|
"Add a new list" : "اضف قائمة جديدة",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "هل انت متأكد تريد مسح اللوح {title}؟ هذا سوف يمسح جميع بيانات هذا اللوح."
|
||||||
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
|
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
|
||||||
}
|
}
|
||||||
@@ -316,6 +316,10 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "Споделяне с Deck карта",
|
"Share with a Deck card" : "Споделяне с Deck карта",
|
||||||
"Share {file} with a Deck card" : "Споделяне {file} с Deck карта",
|
"Share {file} with a Deck card" : "Споделяне {file} с Deck карта",
|
||||||
"Share" : "Споделяне",
|
"Share" : "Споделяне",
|
||||||
"Add a new list" : "Добавяне на нов списък"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Сигурни ли сте че искате да прехвърлите таблото {title} на {user}?",
|
||||||
|
"Transfer the board for {user} successfully" : "Успешно прехвърляне на таблото към {user} ",
|
||||||
|
"Failed to transfer the board for {user}" : "Неуспешно прехвърляне на таблото към {user}",
|
||||||
|
"Add a new list" : "Добавяне на нов списък",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Сигурни ли сте, че искате да изтриете таблото {title}? Това ще изтрие всички данни на това табло."
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
@@ -314,6 +314,10 @@
|
|||||||
"Share with a Deck card" : "Споделяне с Deck карта",
|
"Share with a Deck card" : "Споделяне с Deck карта",
|
||||||
"Share {file} with a Deck card" : "Споделяне {file} с Deck карта",
|
"Share {file} with a Deck card" : "Споделяне {file} с Deck карта",
|
||||||
"Share" : "Споделяне",
|
"Share" : "Споделяне",
|
||||||
"Add a new list" : "Добавяне на нов списък"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Сигурни ли сте че искате да прехвърлите таблото {title} на {user}?",
|
||||||
|
"Transfer the board for {user} successfully" : "Успешно прехвърляне на таблото към {user} ",
|
||||||
|
"Failed to transfer the board for {user}" : "Неуспешно прехвърляне на таблото към {user}",
|
||||||
|
"Add a new list" : "Добавяне на нов списък",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Сигурни ли сте, че искате да изтриете таблото {title}? Това ще изтрие всички данни на това табло."
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
@@ -266,7 +266,7 @@ OC.L10N.register(
|
|||||||
"All boards" : "Tots els taulers",
|
"All boards" : "Tots els taulers",
|
||||||
"Archived boards" : "Taulers arxivats",
|
"Archived boards" : "Taulers arxivats",
|
||||||
"Shared with you" : "Us han compartit",
|
"Shared with you" : "Us han compartit",
|
||||||
"Deck settings" : "Paràmetres de Targetes",
|
"Deck settings" : "Paràmetres del Tauler",
|
||||||
"Use bigger card view" : "Utilitza la visualització de targetes més gran",
|
"Use bigger card view" : "Utilitza la visualització de targetes més gran",
|
||||||
"Show card ID badge" : "Mostra el distintiu d’ID de la targeta",
|
"Show card ID badge" : "Mostra el distintiu d’ID de la targeta",
|
||||||
"Show boards in calendar/tasks" : "Mostra els taulers al calendari/tasques",
|
"Show boards in calendar/tasks" : "Mostra els taulers al calendari/tasques",
|
||||||
@@ -316,6 +316,10 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "Compartir amb una targeta de Deck",
|
"Share with a Deck card" : "Compartir amb una targeta de Deck",
|
||||||
"Share {file} with a Deck card" : "Compartir {file} amb una targeta de Deck",
|
"Share {file} with a Deck card" : "Compartir {file} amb una targeta de Deck",
|
||||||
"Share" : "Compartir",
|
"Share" : "Compartir",
|
||||||
"Add a new list" : "Afegeix una llista nova"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Esteu segur que voleu transferir el tauler {title} per a {user}?",
|
||||||
|
"Transfer the board for {user} successfully" : "Transfereix el tauler per a {user} correctament",
|
||||||
|
"Failed to transfer the board for {user}" : "No s'ha pogut transferir el tauler per a {user}",
|
||||||
|
"Add a new list" : "Afegeix una llista nova",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Esteu segur que voleu suprimir el tauler {title}? Això eliminarà totes les dades d'aquest tauler."
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
@@ -264,7 +264,7 @@
|
|||||||
"All boards" : "Tots els taulers",
|
"All boards" : "Tots els taulers",
|
||||||
"Archived boards" : "Taulers arxivats",
|
"Archived boards" : "Taulers arxivats",
|
||||||
"Shared with you" : "Us han compartit",
|
"Shared with you" : "Us han compartit",
|
||||||
"Deck settings" : "Paràmetres de Targetes",
|
"Deck settings" : "Paràmetres del Tauler",
|
||||||
"Use bigger card view" : "Utilitza la visualització de targetes més gran",
|
"Use bigger card view" : "Utilitza la visualització de targetes més gran",
|
||||||
"Show card ID badge" : "Mostra el distintiu d’ID de la targeta",
|
"Show card ID badge" : "Mostra el distintiu d’ID de la targeta",
|
||||||
"Show boards in calendar/tasks" : "Mostra els taulers al calendari/tasques",
|
"Show boards in calendar/tasks" : "Mostra els taulers al calendari/tasques",
|
||||||
@@ -314,6 +314,10 @@
|
|||||||
"Share with a Deck card" : "Compartir amb una targeta de Deck",
|
"Share with a Deck card" : "Compartir amb una targeta de Deck",
|
||||||
"Share {file} with a Deck card" : "Compartir {file} amb una targeta de Deck",
|
"Share {file} with a Deck card" : "Compartir {file} amb una targeta de Deck",
|
||||||
"Share" : "Compartir",
|
"Share" : "Compartir",
|
||||||
"Add a new list" : "Afegeix una llista nova"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Esteu segur que voleu transferir el tauler {title} per a {user}?",
|
||||||
|
"Transfer the board for {user} successfully" : "Transfereix el tauler per a {user} correctament",
|
||||||
|
"Failed to transfer the board for {user}" : "No s'ha pogut transferir el tauler per a {user}",
|
||||||
|
"Add a new list" : "Afegeix una llista nova",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Esteu segur que voleu suprimir el tauler {title}? Això eliminarà totes les dades d'aquest tauler."
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
@@ -316,6 +316,10 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "Sdílet s kartou aplikace Deck",
|
"Share with a Deck card" : "Sdílet s kartou aplikace Deck",
|
||||||
"Share {file} with a Deck card" : "Sdílet {file} s kartou aplikace Deck",
|
"Share {file} with a Deck card" : "Sdílet {file} s kartou aplikace Deck",
|
||||||
"Share" : "Sdílet",
|
"Share" : "Sdílet",
|
||||||
"Add a new list" : "Přidat nový sloupec"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Opravdu chcete předat vlastnictví tabule {title} uživateli {user}?",
|
||||||
|
"Transfer the board for {user} successfully" : "Předání vlastnictví tabule uživateli {user} úspěšné",
|
||||||
|
"Failed to transfer the board for {user}" : "Nepodařilo se předat vlastnictví tabule uživateli {user}",
|
||||||
|
"Add a new list" : "Přidat nový sloupec",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Opravdu chcete tabuly {title} smazat? Toto smaže veškerá data této tabule."
|
||||||
},
|
},
|
||||||
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
|
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
|
||||||
|
|||||||
@@ -314,6 +314,10 @@
|
|||||||
"Share with a Deck card" : "Sdílet s kartou aplikace Deck",
|
"Share with a Deck card" : "Sdílet s kartou aplikace Deck",
|
||||||
"Share {file} with a Deck card" : "Sdílet {file} s kartou aplikace Deck",
|
"Share {file} with a Deck card" : "Sdílet {file} s kartou aplikace Deck",
|
||||||
"Share" : "Sdílet",
|
"Share" : "Sdílet",
|
||||||
"Add a new list" : "Přidat nový sloupec"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Opravdu chcete předat vlastnictví tabule {title} uživateli {user}?",
|
||||||
|
"Transfer the board for {user} successfully" : "Předání vlastnictví tabule uživateli {user} úspěšné",
|
||||||
|
"Failed to transfer the board for {user}" : "Nepodařilo se předat vlastnictví tabule uživateli {user}",
|
||||||
|
"Add a new list" : "Přidat nový sloupec",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Opravdu chcete tabuly {title} smazat? Toto smaže veškerá data této tabule."
|
||||||
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
|
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
|
||||||
}
|
}
|
||||||
@@ -230,6 +230,7 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "Del med et Deck kort",
|
"Share with a Deck card" : "Del med et Deck kort",
|
||||||
"Share {file} with a Deck card" : "Del {file} med et Deck kort",
|
"Share {file} with a Deck card" : "Del {file} med et Deck kort",
|
||||||
"Share" : "Del",
|
"Share" : "Del",
|
||||||
"Add a new list" : "Tilføj en ny kolonne"
|
"Add a new list" : "Tilføj en ny kolonne",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Er du sikker på du vil slette tavlen {title}? Dette vil slette alt data på tavlen."
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
@@ -228,6 +228,7 @@
|
|||||||
"Share with a Deck card" : "Del med et Deck kort",
|
"Share with a Deck card" : "Del med et Deck kort",
|
||||||
"Share {file} with a Deck card" : "Del {file} med et Deck kort",
|
"Share {file} with a Deck card" : "Del {file} med et Deck kort",
|
||||||
"Share" : "Del",
|
"Share" : "Del",
|
||||||
"Add a new list" : "Tilføj en ny kolonne"
|
"Add a new list" : "Tilføj en ny kolonne",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Er du sikker på du vil slette tavlen {title}? Dette vil slette alt data på tavlen."
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
@@ -316,6 +316,10 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "Mit einer Deck-Karte teilen",
|
"Share with a Deck card" : "Mit einer Deck-Karte teilen",
|
||||||
"Share {file} with a Deck card" : "{file} mit einer Deck-Karte teilen",
|
"Share {file} with a Deck card" : "{file} mit einer Deck-Karte teilen",
|
||||||
"Share" : "Freigeben",
|
"Share" : "Freigeben",
|
||||||
"Add a new list" : "Eine neue Liste hinzufügen"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Möchtest du wirklich das Board {title} an {user} übertragen?",
|
||||||
|
"Transfer the board for {user} successfully" : "Das Board wurde erfolgreich an {user} übertragen",
|
||||||
|
"Failed to transfer the board for {user}" : "Board konnte nicht an {user} übertragen werden",
|
||||||
|
"Add a new list" : "Eine neue Liste hinzufügen",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Möchtest du wirklich das Board {title} mit all seinen Daten löschen?"
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
@@ -314,6 +314,10 @@
|
|||||||
"Share with a Deck card" : "Mit einer Deck-Karte teilen",
|
"Share with a Deck card" : "Mit einer Deck-Karte teilen",
|
||||||
"Share {file} with a Deck card" : "{file} mit einer Deck-Karte teilen",
|
"Share {file} with a Deck card" : "{file} mit einer Deck-Karte teilen",
|
||||||
"Share" : "Freigeben",
|
"Share" : "Freigeben",
|
||||||
"Add a new list" : "Eine neue Liste hinzufügen"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Möchtest du wirklich das Board {title} an {user} übertragen?",
|
||||||
|
"Transfer the board for {user} successfully" : "Das Board wurde erfolgreich an {user} übertragen",
|
||||||
|
"Failed to transfer the board for {user}" : "Board konnte nicht an {user} übertragen werden",
|
||||||
|
"Add a new list" : "Eine neue Liste hinzufügen",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Möchtest du wirklich das Board {title} mit all seinen Daten löschen?"
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
@@ -316,6 +316,10 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "Mit einer Deck-Karte teilen",
|
"Share with a Deck card" : "Mit einer Deck-Karte teilen",
|
||||||
"Share {file} with a Deck card" : "{file} mit einer Deck-Karte teilen",
|
"Share {file} with a Deck card" : "{file} mit einer Deck-Karte teilen",
|
||||||
"Share" : "Freigeben",
|
"Share" : "Freigeben",
|
||||||
"Add a new list" : "Eine neue Liste hinzufügen"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Möchten Sie wirklich das Board {title} an {user} übertragen?",
|
||||||
|
"Transfer the board for {user} successfully" : "Das Board wurde an {user} übertragen",
|
||||||
|
"Failed to transfer the board for {user}" : "Board konnte nicht an {user} übertragen werden",
|
||||||
|
"Add a new list" : "Eine neue Liste hinzufügen",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Möchten Sie wirklich dieses Board {title} mit all seinen Daten löschen?"
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
@@ -314,6 +314,10 @@
|
|||||||
"Share with a Deck card" : "Mit einer Deck-Karte teilen",
|
"Share with a Deck card" : "Mit einer Deck-Karte teilen",
|
||||||
"Share {file} with a Deck card" : "{file} mit einer Deck-Karte teilen",
|
"Share {file} with a Deck card" : "{file} mit einer Deck-Karte teilen",
|
||||||
"Share" : "Freigeben",
|
"Share" : "Freigeben",
|
||||||
"Add a new list" : "Eine neue Liste hinzufügen"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Möchten Sie wirklich das Board {title} an {user} übertragen?",
|
||||||
|
"Transfer the board for {user} successfully" : "Das Board wurde an {user} übertragen",
|
||||||
|
"Failed to transfer the board for {user}" : "Board konnte nicht an {user} übertragen werden",
|
||||||
|
"Add a new list" : "Eine neue Liste hinzufügen",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Möchten Sie wirklich dieses Board {title} mit all seinen Daten löschen?"
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
@@ -313,6 +313,10 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "Μοιραστείτε με μια καρτέλα Deck",
|
"Share with a Deck card" : "Μοιραστείτε με μια καρτέλα Deck",
|
||||||
"Share {file} with a Deck card" : "Μοιραστείτε το {file} με μια καρτέλα Deck",
|
"Share {file} with a Deck card" : "Μοιραστείτε το {file} με μια καρτέλα Deck",
|
||||||
"Share" : "Μοιραστείτε",
|
"Share" : "Μοιραστείτε",
|
||||||
"Add a new list" : "Προσθήκη νέας λίστας"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Είστε σίγουροι ότι θέλετε να μεταφέρετε τον πίνακα {title} για {user}? ",
|
||||||
|
"Transfer the board for {user} successfully" : "Επιτυχής μεταφορά του πίνακα για τον χρήστη {user}",
|
||||||
|
"Failed to transfer the board for {user}" : "Απέτυχε η μεταφορά του πίνακα για τον χρήστη {user}",
|
||||||
|
"Add a new list" : "Προσθήκη νέας λίστας",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Είστε βέβαιοι ότι θέλετε να διαγράψετε τον πίνακα {title}; Θα διαγραφούν όλα τα δεδομένα."
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
@@ -311,6 +311,10 @@
|
|||||||
"Share with a Deck card" : "Μοιραστείτε με μια καρτέλα Deck",
|
"Share with a Deck card" : "Μοιραστείτε με μια καρτέλα Deck",
|
||||||
"Share {file} with a Deck card" : "Μοιραστείτε το {file} με μια καρτέλα Deck",
|
"Share {file} with a Deck card" : "Μοιραστείτε το {file} με μια καρτέλα Deck",
|
||||||
"Share" : "Μοιραστείτε",
|
"Share" : "Μοιραστείτε",
|
||||||
"Add a new list" : "Προσθήκη νέας λίστας"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Είστε σίγουροι ότι θέλετε να μεταφέρετε τον πίνακα {title} για {user}? ",
|
||||||
|
"Transfer the board for {user} successfully" : "Επιτυχής μεταφορά του πίνακα για τον χρήστη {user}",
|
||||||
|
"Failed to transfer the board for {user}" : "Απέτυχε η μεταφορά του πίνακα για τον χρήστη {user}",
|
||||||
|
"Add a new list" : "Προσθήκη νέας λίστας",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Είστε βέβαιοι ότι θέλετε να διαγράψετε τον πίνακα {title}; Θα διαγραφούν όλα τα δεδομένα."
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
@@ -316,6 +316,10 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "Share with a Deck card",
|
"Share with a Deck card" : "Share with a Deck card",
|
||||||
"Share {file} with a Deck card" : "Share {file} with a Deck card",
|
"Share {file} with a Deck card" : "Share {file} with a Deck card",
|
||||||
"Share" : "Share",
|
"Share" : "Share",
|
||||||
"Add a new list" : "Add a new list"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Are you sure you want to transfer the board {title} for {user}?",
|
||||||
|
"Transfer the board for {user} successfully" : "Transfer the board for {user} successfully",
|
||||||
|
"Failed to transfer the board for {user}" : "Failed to transfer the board for {user}",
|
||||||
|
"Add a new list" : "Add a new list",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Are you sure you want to delete the board {title}? This will delete all the data of this board."
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
@@ -314,6 +314,10 @@
|
|||||||
"Share with a Deck card" : "Share with a Deck card",
|
"Share with a Deck card" : "Share with a Deck card",
|
||||||
"Share {file} with a Deck card" : "Share {file} with a Deck card",
|
"Share {file} with a Deck card" : "Share {file} with a Deck card",
|
||||||
"Share" : "Share",
|
"Share" : "Share",
|
||||||
"Add a new list" : "Add a new list"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Are you sure you want to transfer the board {title} for {user}?",
|
||||||
|
"Transfer the board for {user} successfully" : "Transfer the board for {user} successfully",
|
||||||
|
"Failed to transfer the board for {user}" : "Failed to transfer the board for {user}",
|
||||||
|
"Add a new list" : "Add a new list",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Are you sure you want to delete the board {title}? This will delete all the data of this board."
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
@@ -316,6 +316,10 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "Compartir con una tarjeta de Deck",
|
"Share with a Deck card" : "Compartir con una tarjeta de Deck",
|
||||||
"Share {file} with a Deck card" : "Compartir {file} con una tarjeta de Deck",
|
"Share {file} with a Deck card" : "Compartir {file} con una tarjeta de Deck",
|
||||||
"Share" : "Compartir",
|
"Share" : "Compartir",
|
||||||
"Add a new list" : "Añadir una lista nueva"
|
"Are you sure you want to transfer the board {title} for {user}?" : "¿Estás seguro de que quieres transferir el tablero {título} a {usuario}?",
|
||||||
|
"Transfer the board for {user} successfully" : "Transferir el tablero para {usuario} con éxito",
|
||||||
|
"Failed to transfer the board for {user}" : "No se ha podido transferir el tablero para {usuario}",
|
||||||
|
"Add a new list" : "Añadir una lista nueva",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "¿Estas seguro de que quieres eliminar el tablero {title}? Esto eliminará todos los datos del tablero."
|
||||||
},
|
},
|
||||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||||
|
|||||||
@@ -314,6 +314,10 @@
|
|||||||
"Share with a Deck card" : "Compartir con una tarjeta de Deck",
|
"Share with a Deck card" : "Compartir con una tarjeta de Deck",
|
||||||
"Share {file} with a Deck card" : "Compartir {file} con una tarjeta de Deck",
|
"Share {file} with a Deck card" : "Compartir {file} con una tarjeta de Deck",
|
||||||
"Share" : "Compartir",
|
"Share" : "Compartir",
|
||||||
"Add a new list" : "Añadir una lista nueva"
|
"Are you sure you want to transfer the board {title} for {user}?" : "¿Estás seguro de que quieres transferir el tablero {título} a {usuario}?",
|
||||||
|
"Transfer the board for {user} successfully" : "Transferir el tablero para {usuario} con éxito",
|
||||||
|
"Failed to transfer the board for {user}" : "No se ha podido transferir el tablero para {usuario}",
|
||||||
|
"Add a new list" : "Añadir una lista nueva",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "¿Estas seguro de que quieres eliminar el tablero {title}? Esto eliminará todos los datos del tablero."
|
||||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,6 @@ OC.L10N.register(
|
|||||||
"Personal" : "Isiklik",
|
"Personal" : "Isiklik",
|
||||||
"Finished" : "Lõpetatud",
|
"Finished" : "Lõpetatud",
|
||||||
"Later" : "Hiljem",
|
"Later" : "Hiljem",
|
||||||
"copy" : "koopia",
|
|
||||||
"Done" : "Valmis",
|
"Done" : "Valmis",
|
||||||
"The file was uploaded" : "Fail laaditi üles",
|
"The file was uploaded" : "Fail laaditi üles",
|
||||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaetud fail on suurem, kui php.ini failis määratud upload_max_filesize",
|
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaetud fail on suurem, kui php.ini failis määratud upload_max_filesize",
|
||||||
@@ -13,7 +12,6 @@ OC.L10N.register(
|
|||||||
"No file was uploaded" : "Ühtegi faili ei latud üles",
|
"No file was uploaded" : "Ühtegi faili ei latud üles",
|
||||||
"Missing a temporary folder" : "Ajutine kausta on puudu",
|
"Missing a temporary folder" : "Ajutine kausta on puudu",
|
||||||
"Could not write file to disk" : "Faili kirjutamine kettale ebaõnnestus",
|
"Could not write file to disk" : "Faili kirjutamine kettale ebaõnnestus",
|
||||||
"A PHP extension stopped the file upload" : "PHP laiendus peatas faili üleslaadimise",
|
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD",
|
"Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD",
|
||||||
"Cancel" : "Loobu",
|
"Cancel" : "Loobu",
|
||||||
"Close" : "Sulge",
|
"Close" : "Sulge",
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
"Personal" : "Isiklik",
|
"Personal" : "Isiklik",
|
||||||
"Finished" : "Lõpetatud",
|
"Finished" : "Lõpetatud",
|
||||||
"Later" : "Hiljem",
|
"Later" : "Hiljem",
|
||||||
"copy" : "koopia",
|
|
||||||
"Done" : "Valmis",
|
"Done" : "Valmis",
|
||||||
"The file was uploaded" : "Fail laaditi üles",
|
"The file was uploaded" : "Fail laaditi üles",
|
||||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaetud fail on suurem, kui php.ini failis määratud upload_max_filesize",
|
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaetud fail on suurem, kui php.ini failis määratud upload_max_filesize",
|
||||||
@@ -11,7 +10,6 @@
|
|||||||
"No file was uploaded" : "Ühtegi faili ei latud üles",
|
"No file was uploaded" : "Ühtegi faili ei latud üles",
|
||||||
"Missing a temporary folder" : "Ajutine kausta on puudu",
|
"Missing a temporary folder" : "Ajutine kausta on puudu",
|
||||||
"Could not write file to disk" : "Faili kirjutamine kettale ebaõnnestus",
|
"Could not write file to disk" : "Faili kirjutamine kettale ebaõnnestus",
|
||||||
"A PHP extension stopped the file upload" : "PHP laiendus peatas faili üleslaadimise",
|
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD",
|
"Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD",
|
||||||
"Cancel" : "Loobu",
|
"Cancel" : "Loobu",
|
||||||
"Close" : "Sulge",
|
"Close" : "Sulge",
|
||||||
|
|||||||
@@ -316,6 +316,10 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "Partekatu Deck txartel baten bidez",
|
"Share with a Deck card" : "Partekatu Deck txartel baten bidez",
|
||||||
"Share {file} with a Deck card" : "Partekatu {file} Deck txartel baten bidez",
|
"Share {file} with a Deck card" : "Partekatu {file} Deck txartel baten bidez",
|
||||||
"Share" : "Partekatu",
|
"Share" : "Partekatu",
|
||||||
"Add a new list" : "Gehitu zerrenda berria"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Ziur {title} taula transferitu nahi duzula {user}?",
|
||||||
|
"Transfer the board for {user} successfully" : "Transferitu {user}-ren panela behar bezala",
|
||||||
|
"Failed to transfer the board for {user}" : "Ezin izan da transferitu {user}-ren panela",
|
||||||
|
"Add a new list" : "Gehitu zerrenda berria",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Ziur zaude «{title}» taula ezabatu nahi duzula? Honek taula honen datu guztiak ezabatuko ditu."
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
@@ -314,6 +314,10 @@
|
|||||||
"Share with a Deck card" : "Partekatu Deck txartel baten bidez",
|
"Share with a Deck card" : "Partekatu Deck txartel baten bidez",
|
||||||
"Share {file} with a Deck card" : "Partekatu {file} Deck txartel baten bidez",
|
"Share {file} with a Deck card" : "Partekatu {file} Deck txartel baten bidez",
|
||||||
"Share" : "Partekatu",
|
"Share" : "Partekatu",
|
||||||
"Add a new list" : "Gehitu zerrenda berria"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Ziur {title} taula transferitu nahi duzula {user}?",
|
||||||
|
"Transfer the board for {user} successfully" : "Transferitu {user}-ren panela behar bezala",
|
||||||
|
"Failed to transfer the board for {user}" : "Ezin izan da transferitu {user}-ren panela",
|
||||||
|
"Add a new list" : "Gehitu zerrenda berria",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Ziur zaude «{title}» taula ezabatu nahi duzula? Honek taula honen datu guztiak ezabatuko ditu."
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
@@ -316,6 +316,10 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "Partager avec Deck en tant que carte",
|
"Share with a Deck card" : "Partager avec Deck en tant que carte",
|
||||||
"Share {file} with a Deck card" : "Partager {file} avec Deck en tant que carte",
|
"Share {file} with a Deck card" : "Partager {file} avec Deck en tant que carte",
|
||||||
"Share" : "Partager",
|
"Share" : "Partager",
|
||||||
"Add a new list" : "Ajouter une nouvelle liste"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Êtes-vous sûr de vouloir transférer le tableau {title} pour {user} ?",
|
||||||
|
"Transfer the board for {user} successfully" : "Transfert du tableau pour {user} avec succès",
|
||||||
|
"Failed to transfer the board for {user}" : "Échec du transfert du tableau pour {user}",
|
||||||
|
"Add a new list" : "Ajouter une nouvelle liste",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Êtes-vous certain de vouloir supprimer le tableau {title} ? Cela supprimera l'ensemble des données de ce tableau."
|
||||||
},
|
},
|
||||||
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||||
|
|||||||
@@ -314,6 +314,10 @@
|
|||||||
"Share with a Deck card" : "Partager avec Deck en tant que carte",
|
"Share with a Deck card" : "Partager avec Deck en tant que carte",
|
||||||
"Share {file} with a Deck card" : "Partager {file} avec Deck en tant que carte",
|
"Share {file} with a Deck card" : "Partager {file} avec Deck en tant que carte",
|
||||||
"Share" : "Partager",
|
"Share" : "Partager",
|
||||||
"Add a new list" : "Ajouter une nouvelle liste"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Êtes-vous sûr de vouloir transférer le tableau {title} pour {user} ?",
|
||||||
|
"Transfer the board for {user} successfully" : "Transfert du tableau pour {user} avec succès",
|
||||||
|
"Failed to transfer the board for {user}" : "Échec du transfert du tableau pour {user}",
|
||||||
|
"Add a new list" : "Ajouter une nouvelle liste",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Êtes-vous certain de vouloir supprimer le tableau {title} ? Cela supprimera l'ensemble des données de ce tableau."
|
||||||
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||||
}
|
}
|
||||||
64
l10n/gl.js
@@ -63,35 +63,27 @@ OC.L10N.register(
|
|||||||
"{user} has restored the attachment {attachment} to card {card}" : "{user} restaurou o anexo {attachment} da tarxeta {card}",
|
"{user} has restored the attachment {attachment} to card {card}" : "{user} restaurou o anexo {attachment} da tarxeta {card}",
|
||||||
"You have commented on card {card}" : "Vostede comentou na tarxeta {card}",
|
"You have commented on card {card}" : "Vostede comentou na tarxeta {card}",
|
||||||
"{user} has commented on card {card}" : "{user} comentou na tarxeta {card}",
|
"{user} has commented on card {card}" : "{user} comentou na tarxeta {card}",
|
||||||
"A <strong>card description</strong> inside the Deck app has been changed" : "Cambiouse a <strong>descripción da tarxeta</strong> dentro da aplicación Tarxeteiro",
|
"A <strong>card description</strong> inside the Deck app has been changed" : "Cambiouse a <strong>descripción da tarxeta</strong> dentro da aplicación Deck",
|
||||||
"Deck" : "Tarxeteiro",
|
"Deck" : "Deck",
|
||||||
"Changes in the <strong>Deck app</strong>" : "Cambios na <strong>aplicación Tarxeteiro</strong>",
|
"Changes in the <strong>Deck app</strong>" : "Cambios na <strong>aplicación Deck</strong>",
|
||||||
"A <strong>comment</strong> was created on a card" : "Creouse un <strong>comentario</strong> nunha tarxeta",
|
"A <strong>comment</strong> was created on a card" : "Creouse un <strong>comentario</strong> nunha tarxeta",
|
||||||
"Upcoming cards" : "Tarxetas próximas",
|
"Upcoming cards" : "Tarxetas próximas",
|
||||||
"Load more" : "Cargar máis",
|
"Load more" : "Cargar máis",
|
||||||
"Personal" : "Persoal",
|
"Personal" : "Persoal",
|
||||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "A tarxeta «%s» en «%s» foi asignada a vostede por %s.",
|
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "A tarxeta «%s» en «%s» foi asignada a vostede por %s.",
|
||||||
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} asignoulle a tarxeta {deck-card} en {deck-board} a vostede.",
|
"The card \"%s\" on \"%s\" has reached its due date." : "A tarxeta «%s» en «%s» chegou á súa data de caducidade.",
|
||||||
"The card \"%s\" on \"%s\" has reached its due date." : "A tarxeta «%s» en «%s» acadou a súa data de caducidade.",
|
|
||||||
"The card {deck-card} on {deck-board} has reached its due date." : "A tarxeta {deck-card} en {deck-board} chegou á súa data de caducidade.",
|
|
||||||
"%s has mentioned you in a comment on \"%s\"." : "%s mencionouno a vostede nun comentario en «%s».",
|
"%s has mentioned you in a comment on \"%s\"." : "%s mencionouno a vostede nun comentario en «%s».",
|
||||||
"{user} has mentioned you in a comment on {deck-card}." : "{user} mencionouno a vostede nun comentario en {deck-card}.",
|
|
||||||
"The board \"%s\" has been shared with you by %s." : "O taboleiro «%s» foi compartido con vostede por %s.",
|
"The board \"%s\" has been shared with you by %s." : "O taboleiro «%s» foi compartido con vostede por %s.",
|
||||||
"{user} has shared {deck-board} with you." : "{user} compartiu {deck-board} con vostede.",
|
"Deck board" : "Taboleiro do Deck",
|
||||||
"Deck board" : "Taboleiro do Tarxeteiro",
|
|
||||||
"Owned by %1$s" : "Propiedade de %1$s",
|
|
||||||
"Deck boards, cards and comments" : "Taboleiros do Tarxeteiro, tarxetas e comentarios",
|
|
||||||
"From %1$s, in %2$s/%3$s, owned by %4$s" : "De %1$s, en %2$s/%3$s, propiedade de %4$s",
|
|
||||||
"Card comments" : "Comentarios da tarxeta",
|
"Card comments" : "Comentarios da tarxeta",
|
||||||
"%s on %s" : "%s en %s",
|
"%s on %s" : "%s en %s",
|
||||||
"Deck boards and cards" : "Taboleiros do Tarxeteiro e tarxetas",
|
|
||||||
"No data was provided to create an attachment." : "Non se forneceu ningún dato para crear un anexo.",
|
"No data was provided to create an attachment." : "Non se forneceu ningún dato para crear un anexo.",
|
||||||
"Finished" : "Rematado",
|
"Finished" : "Rematado",
|
||||||
"To review" : "Para revisar",
|
"To review" : "Para revisar",
|
||||||
"Action needed" : "Necesita unha acción",
|
"Action needed" : "Necesita unha acción",
|
||||||
"Later" : "Após",
|
"Later" : "Despois",
|
||||||
"copy" : "copiar",
|
"copy" : "copiar",
|
||||||
"To do" : "Tarefa pendente",
|
"To do" : "Para facer",
|
||||||
"Doing" : "Facendo",
|
"Doing" : "Facendo",
|
||||||
"Done" : "Feito",
|
"Done" : "Feito",
|
||||||
"Example Task 3" : "Tarefa de exemplo 3",
|
"Example Task 3" : "Tarefa de exemplo 3",
|
||||||
@@ -106,12 +98,10 @@ OC.L10N.register(
|
|||||||
"Could not write file to disk" : "Non foi posíbel escribir o ficheiro no disco",
|
"Could not write file to disk" : "Non foi posíbel escribir o ficheiro no disco",
|
||||||
"A PHP extension stopped the file upload" : "Unha extensión PHP detivo o envío de ficheiros",
|
"A PHP extension stopped the file upload" : "Unha extensión PHP detivo o envío de ficheiros",
|
||||||
"No file uploaded or file size exceeds maximum of %s" : "Non se enviou ningún ficheiro ou o tamaño do ficheiro supera o máximo de %s",
|
"No file uploaded or file size exceeds maximum of %s" : "Non se enviou ningún ficheiro ou o tamaño do ficheiro supera o máximo de %s",
|
||||||
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Este comentario ten máis de %s caracteres.\nEngadido como anexo á tarxeta co nome %s.\nAccesíbel no URL: %s.",
|
|
||||||
"Card not found" : "Non se atopou a tarxeta",
|
"Card not found" : "Non se atopou a tarxeta",
|
||||||
"Path is already shared with this card" : "A ruta xa está compartida con esta tarxeta",
|
"Path is already shared with this card" : "A ruta xa está compartida con esta tarxeta",
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "Data incorrecta, o formato da date debe ser AAAA-MM-DD",
|
"Invalid date, date format must be YYYY-MM-DD" : "Data incorrecta, o formato da date debe ser AAAA-MM-DD",
|
||||||
"Personal planning and team project organization" : "Planificación persoal e organización de proxectos de equipo",
|
"Personal planning and team project organization" : "Planificación persoal e organización de proxectos de equipo",
|
||||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Tarxeteiro é unha ferramenta de organización de estilo kanban dirixida a planificación persoal e organización de proxectos para equipos integrados con Nextcloud. \n\n\n- 📥 Engada as súas tarefas ás tarxetas e fagas ordenadas\n- 📄 Escriba notas adicionais en Markdown\n- 🔖 Asigne etiquetas para unha mellor organización\n- 👥 Comparta co seu equipo, amigos ou a súa familia\n- 📎 Anexe ficheiros e insíraos na súa descrición de Markdown\n- 💬 Debata co seu equipo usando os comentarios\n- ⚡ Faga un seguimento dos cambios no fluxo de actividade\n- 🚀 Teña o seu proxecto organizado",
|
|
||||||
"Add board" : "Engadir taboleiro",
|
"Add board" : "Engadir taboleiro",
|
||||||
"Select the board to link to a project" : "Seleccione o taboleiro para ligar a un proxecto",
|
"Select the board to link to a project" : "Seleccione o taboleiro para ligar a un proxecto",
|
||||||
"Search by board title" : "Buscar polo título do taboleiro",
|
"Search by board title" : "Buscar polo título do taboleiro",
|
||||||
@@ -121,8 +111,6 @@ OC.L10N.register(
|
|||||||
"Select a list" : "Seleccionar unha lista",
|
"Select a list" : "Seleccionar unha lista",
|
||||||
"Card title" : "Título da tarxeta",
|
"Card title" : "Título da tarxeta",
|
||||||
"Cancel" : "Cancelar",
|
"Cancel" : "Cancelar",
|
||||||
"Creating the new card …" : "Creando unha nova tarxeta…",
|
|
||||||
"Card \"{card}\" was added to \"{board}\"" : "A tarxeta «{card}» foi engdida a «{board}»",
|
|
||||||
"Open card" : "Abrir a tarxeta",
|
"Open card" : "Abrir a tarxeta",
|
||||||
"Close" : "Pechar",
|
"Close" : "Pechar",
|
||||||
"Create card" : "Crear tarxeta",
|
"Create card" : "Crear tarxeta",
|
||||||
@@ -140,7 +128,6 @@ OC.L10N.register(
|
|||||||
"Archived cards" : "Tarxetas arquivadas",
|
"Archived cards" : "Tarxetas arquivadas",
|
||||||
"Add list" : "Engadir unha lista",
|
"Add list" : "Engadir unha lista",
|
||||||
"List name" : "Nome da lista",
|
"List name" : "Nome da lista",
|
||||||
"Active filters" : "Filtros activos",
|
|
||||||
"Apply filter" : "Aplicar filtro",
|
"Apply filter" : "Aplicar filtro",
|
||||||
"Filter by tag" : "Filtrar pola etiqueta",
|
"Filter by tag" : "Filtrar pola etiqueta",
|
||||||
"Filter by assigned user" : "Filtrar polo usuario asignado",
|
"Filter by assigned user" : "Filtrar polo usuario asignado",
|
||||||
@@ -157,7 +144,6 @@ OC.L10N.register(
|
|||||||
"Toggle compact mode" : "Alternar o modo compacto",
|
"Toggle compact mode" : "Alternar o modo compacto",
|
||||||
"Open details" : "Abrir detalles",
|
"Open details" : "Abrir detalles",
|
||||||
"Details" : "Detalles",
|
"Details" : "Detalles",
|
||||||
"Currently present people" : "Persoas presentes na actualidade",
|
|
||||||
"Loading board" : "Cargando o taboleiro",
|
"Loading board" : "Cargando o taboleiro",
|
||||||
"No lists available" : "Non hai listas dispoñíbeis",
|
"No lists available" : "Non hai listas dispoñíbeis",
|
||||||
"Create a new list to add cards to this board" : "Crear unha nova lista para engadir tarxetas a este taboleiro",
|
"Create a new list to add cards to this board" : "Crear unha nova lista para engadir tarxetas a este taboleiro",
|
||||||
@@ -181,17 +167,10 @@ OC.L10N.register(
|
|||||||
"Owner" : "Propietario",
|
"Owner" : "Propietario",
|
||||||
"Delete" : "Eliminar",
|
"Delete" : "Eliminar",
|
||||||
"Failed to create share with {displayName}" : "Produciuse un fallo ao crear o uso compartido con {displayName}",
|
"Failed to create share with {displayName}" : "Produciuse un fallo ao crear o uso compartido con {displayName}",
|
||||||
"Are you sure you want to transfer the board {title} to {user}?" : "Confirma que quere transferir o taboleiro {title} a {user}?",
|
|
||||||
"Transfer the board." : "Transferir o taboleiro.",
|
|
||||||
"Transfer" : "Transferencia",
|
"Transfer" : "Transferencia",
|
||||||
"The board has been transferred to {user}" : "O taboleiro foi transferido a {user}",
|
|
||||||
"Failed to transfer the board to {user}" : "Produciuse un fallo ao transferir o taboleiro a {user}",
|
|
||||||
"Edit list title" : "Editar o título da lista",
|
|
||||||
"Archive all cards" : "Arquivar todas as tarxetas",
|
"Archive all cards" : "Arquivar todas as tarxetas",
|
||||||
"Unarchive all cards" : "Desarquivar todas as tarxetas",
|
|
||||||
"Delete list" : "Eliminar lista",
|
"Delete list" : "Eliminar lista",
|
||||||
"Archive all cards in this list" : "Arquivar todas as tarxetas desta lista",
|
"Archive all cards in this list" : "Arquivar todas as tarxetas desta lista",
|
||||||
"Unarchive all cards in this list" : "Desarquivar todas as tarxetas desta lista",
|
|
||||||
"Add a new card" : "Engadir unha nova tarxeta",
|
"Add a new card" : "Engadir unha nova tarxeta",
|
||||||
"Card name" : "Nome da tarxeta",
|
"Card name" : "Nome da tarxeta",
|
||||||
"List deleted" : "Lista eliminada",
|
"List deleted" : "Lista eliminada",
|
||||||
@@ -202,11 +181,9 @@ OC.L10N.register(
|
|||||||
"Members" : "Membros",
|
"Members" : "Membros",
|
||||||
"Upload new files" : "Enviar novos ficheiros",
|
"Upload new files" : "Enviar novos ficheiros",
|
||||||
"Share from Files" : "Compartir dende «Ficheiros»",
|
"Share from Files" : "Compartir dende «Ficheiros»",
|
||||||
"Pending share" : "Recurso compartido pendente",
|
|
||||||
"Add this attachment" : "Engadir este anexo",
|
"Add this attachment" : "Engadir este anexo",
|
||||||
"Show in Files" : "Amosar en Ficheiros",
|
"Show in Files" : "Amosar en Ficheiros",
|
||||||
"Download" : "Descargar",
|
"Download" : "Descargar",
|
||||||
"Remove attachment" : "Retirar o anexo",
|
|
||||||
"Delete Attachment" : "Eliminar o anexo",
|
"Delete Attachment" : "Eliminar o anexo",
|
||||||
"Restore Attachment" : "Restaurar o anexo",
|
"Restore Attachment" : "Restaurar o anexo",
|
||||||
"File to share" : "Ficheiro para compartir",
|
"File to share" : "Ficheiro para compartir",
|
||||||
@@ -219,7 +196,6 @@ OC.L10N.register(
|
|||||||
"Created" : "Creado",
|
"Created" : "Creado",
|
||||||
"The title cannot be empty." : "O título non pode estar baleiro.",
|
"The title cannot be empty." : "O título non pode estar baleiro.",
|
||||||
"No comments yet. Begin the discussion!" : "Aínda non hai comentarios. Comece o debate!",
|
"No comments yet. Begin the discussion!" : "Aínda non hai comentarios. Comece o debate!",
|
||||||
"Failed to load comments" : "Produciuse un fallo ao cargar os comentarios",
|
|
||||||
"Assign a tag to this card…" : "Asignar unha etiqueta a esta tarxeta…",
|
"Assign a tag to this card…" : "Asignar unha etiqueta a esta tarxeta…",
|
||||||
"Assign to users" : "Asignar a usuarios",
|
"Assign to users" : "Asignar a usuarios",
|
||||||
"Assign to users/groups/circles" : "Asignar a usuarios/grupos/círculos",
|
"Assign to users/groups/circles" : "Asignar a usuarios/grupos/círculos",
|
||||||
@@ -236,7 +212,6 @@ OC.L10N.register(
|
|||||||
"The comment cannot be empty." : "O comentario non pode estar baleiro",
|
"The comment cannot be empty." : "O comentario non pode estar baleiro",
|
||||||
"The comment cannot be longer than 1000 characters." : "O comentario non pode ter máis de 1000 caracteres.",
|
"The comment cannot be longer than 1000 characters." : "O comentario non pode ter máis de 1000 caracteres.",
|
||||||
"In reply to" : "En resposta a",
|
"In reply to" : "En resposta a",
|
||||||
"Cancel reply" : "Cancelar a resposta",
|
|
||||||
"Reply" : "Responder",
|
"Reply" : "Responder",
|
||||||
"Update" : "Actualizar",
|
"Update" : "Actualizar",
|
||||||
"Description" : "Descrición",
|
"Description" : "Descrición",
|
||||||
@@ -249,9 +224,6 @@ OC.L10N.register(
|
|||||||
"Write a description …" : "Escriba unha descrición…",
|
"Write a description …" : "Escriba unha descrición…",
|
||||||
"Choose attachment" : "Escoller o anexo",
|
"Choose attachment" : "Escoller o anexo",
|
||||||
"(group)" : "(grupo)",
|
"(group)" : "(grupo)",
|
||||||
"Todo items" : "Elementos pendentes",
|
|
||||||
"{count} comments, {unread} unread" : "{count} comentarios, {unread} sen ler",
|
|
||||||
"Edit card title" : "Editar o título da tarxeta",
|
|
||||||
"Assign to me" : "Asignarme",
|
"Assign to me" : "Asignarme",
|
||||||
"Unassign myself" : "Desasignarme",
|
"Unassign myself" : "Desasignarme",
|
||||||
"Move card" : "Mover a tarxeta",
|
"Move card" : "Mover a tarxeta",
|
||||||
@@ -262,22 +234,19 @@ OC.L10N.register(
|
|||||||
"Move card to another board" : "Mover a tarxeta a outro taboleiro",
|
"Move card to another board" : "Mover a tarxeta a outro taboleiro",
|
||||||
"List is empty" : "A lista está baleira",
|
"List is empty" : "A lista está baleira",
|
||||||
"Card deleted" : "Tarxeta eliminada",
|
"Card deleted" : "Tarxeta eliminada",
|
||||||
"seconds ago" : "segundos atrás",
|
"seconds ago" : "hai uns segundos",
|
||||||
"All boards" : "Todos os taboleiros",
|
"All boards" : "Todos os taboleiros",
|
||||||
"Archived boards" : "Taboleiros arquivados",
|
"Archived boards" : "Taboleiros arquivados",
|
||||||
"Shared with you" : "Compartido con vostede",
|
"Shared with you" : "Compartido con vostede",
|
||||||
"Deck settings" : "Axustes do Tarxeteiro",
|
|
||||||
"Use bigger card view" : "Usa a vista de tarxeta máis grande",
|
"Use bigger card view" : "Usa a vista de tarxeta máis grande",
|
||||||
"Show card ID badge" : "Amosar o distintivo de identificación da tarxeta",
|
|
||||||
"Show boards in calendar/tasks" : "Amosar taboleiros no calendario/tarefas",
|
"Show boards in calendar/tasks" : "Amosar taboleiros no calendario/tarefas",
|
||||||
"Limit deck usage of groups" : "Limitar o uso da plataforma a grupos",
|
"Limit deck usage of groups" : "Limitar o uso da plataforma a grupos",
|
||||||
"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." : "Limitando o Tarxeteiro bloqueará os usuarios que non formen parte destes grupos, para crear os seus propios taboleiros. Os usuarios aínda así poderán traballar en taboleiros compartidos con eles.",
|
"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." : "Limitando Deck bloqueará os usuarios que non formen parte destes grupos, para crear os seus propios taboleiros. Os usuarios aínda así poderán traballar en taboleiros compartidos con eles.",
|
||||||
"Board details" : "Detalles do taboleiro",
|
"Board details" : "Detalles do taboleiro",
|
||||||
"Edit board" : "Editar taboleiro",
|
"Edit board" : "Editar taboleiro",
|
||||||
"Clone board" : "Clonar taboleiro",
|
"Clone board" : "Clonar taboleiro",
|
||||||
"Unarchive board" : "Desarquivar taboleiro",
|
"Unarchive board" : "Desarquivar taboleiro",
|
||||||
"Archive board" : "Arquivar taboleiro",
|
"Archive board" : "Arquivar taboleiro",
|
||||||
"Export board" : "Exportar taboleiro",
|
|
||||||
"Turn on due date reminders" : "Activar os lembretes de data de caducidade",
|
"Turn on due date reminders" : "Activar os lembretes de data de caducidade",
|
||||||
"Turn off due date reminders" : "Desctivar os lembretes de data de caducidade",
|
"Turn off due date reminders" : "Desctivar os lembretes de data de caducidade",
|
||||||
"Due date reminders" : "Lembretes de data de caducidade",
|
"Due date reminders" : "Lembretes de data de caducidade",
|
||||||
@@ -289,22 +258,14 @@ OC.L10N.register(
|
|||||||
"Only assigned cards" : "Só as tarxetas asignadas",
|
"Only assigned cards" : "Só as tarxetas asignadas",
|
||||||
"No reminder" : "Non hai lembretes",
|
"No reminder" : "Non hai lembretes",
|
||||||
"An error occurred" : "Produciuse un erro",
|
"An error occurred" : "Produciuse un erro",
|
||||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Confirma que quere eliminar o taboleiro {title}? Isto eliminará todos os datos deste taboleiro, incluídas as tarxetas arquivadas.",
|
|
||||||
"Delete the board?" : "Eliminar o taboleiro?",
|
"Delete the board?" : "Eliminar o taboleiro?",
|
||||||
"Loading filtered view" : "Cargando a vista filtrada",
|
"Loading filtered view" : "Cargando a vista filtrada",
|
||||||
"No due" : "Sen caducidade",
|
"No due" : "Sen caducidade",
|
||||||
"Search for {searchQuery} in all boards" : "Resultados de busca para {searchQuery} en todos os taboleiros",
|
"Search for {searchQuery} in all boards" : "Resultados de busca para {searchQuery} en todos os taboleiros",
|
||||||
"No results found" : "Non se atoparon resultados",
|
"No results found" : "Non se atoparon resultados",
|
||||||
"Deck board {name}\n* Last modified on {lastMod}" : "Taboleiro do Tarxeteiro {nome}\n* Última modificación en {lastMod}",
|
|
||||||
"{stack} in {board}" : "{stack} en {board}",
|
"{stack} in {board}" : "{stack} en {board}",
|
||||||
"Click to expand description" : "Prema para ampliar a descrición",
|
|
||||||
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Creado o {created}\n* Última modificación o {lastMod}\n* {nbAttachments} anexos\n* {nbComments} comentarios",
|
|
||||||
"{nbCards} cards" : "{nbCards} tarxetas",
|
|
||||||
"Click to expand comment" : "Prema para ampliar o comentario",
|
|
||||||
"No upcoming cards" : "Non hai tarxetas próximas",
|
"No upcoming cards" : "Non hai tarxetas próximas",
|
||||||
"upcoming cards" : "tarxetas próximas",
|
"upcoming cards" : "tarxetas próximas",
|
||||||
"New card" : "Nova tarxeta",
|
|
||||||
"Due on {date}" : "Caduca o {date}",
|
|
||||||
"Link to a board" : "Ligar a un taboleiro",
|
"Link to a board" : "Ligar a un taboleiro",
|
||||||
"Link to a card" : "Ligar a unha tarxeta",
|
"Link to a card" : "Ligar a unha tarxeta",
|
||||||
"Create a card" : "Crear unha tarxeta",
|
"Create a card" : "Crear unha tarxeta",
|
||||||
@@ -313,9 +274,10 @@ OC.L10N.register(
|
|||||||
"Failed to upload {name}" : "Produciuse un fallo ao actualizar {name}",
|
"Failed to upload {name}" : "Produciuse un fallo ao actualizar {name}",
|
||||||
"Maximum file size of {size} exceeded" : "Excedeuse o tamaño máximo de ficheiro de {size}",
|
"Maximum file size of {size} exceeded" : "Excedeuse o tamaño máximo de ficheiro de {size}",
|
||||||
"Error creating the share" : "Produciuse un erro ao crear a compartición",
|
"Error creating the share" : "Produciuse un erro ao crear a compartición",
|
||||||
"Share with a Deck card" : "Compartir cunha tarxeta de Tarxeteiro",
|
"Share with a Deck card" : "Compartir cunha tarxeta Deck",
|
||||||
"Share {file} with a Deck card" : "Compartir {file} cunha tarxeta de Tarxeteiro",
|
"Share {file} with a Deck card" : "Compartir {file} cunha tarxeta Deck",
|
||||||
"Share" : "Compartir",
|
"Share" : "Compartir",
|
||||||
"Add a new list" : "Engadir unha lista nova"
|
"Add a new list" : "Engadir unha lista nova",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Confirma que quere eliminar o taboleiro {title}? Isto eliminará todos os datos deste taboleiro."
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
64
l10n/gl.json
@@ -61,35 +61,27 @@
|
|||||||
"{user} has restored the attachment {attachment} to card {card}" : "{user} restaurou o anexo {attachment} da tarxeta {card}",
|
"{user} has restored the attachment {attachment} to card {card}" : "{user} restaurou o anexo {attachment} da tarxeta {card}",
|
||||||
"You have commented on card {card}" : "Vostede comentou na tarxeta {card}",
|
"You have commented on card {card}" : "Vostede comentou na tarxeta {card}",
|
||||||
"{user} has commented on card {card}" : "{user} comentou na tarxeta {card}",
|
"{user} has commented on card {card}" : "{user} comentou na tarxeta {card}",
|
||||||
"A <strong>card description</strong> inside the Deck app has been changed" : "Cambiouse a <strong>descripción da tarxeta</strong> dentro da aplicación Tarxeteiro",
|
"A <strong>card description</strong> inside the Deck app has been changed" : "Cambiouse a <strong>descripción da tarxeta</strong> dentro da aplicación Deck",
|
||||||
"Deck" : "Tarxeteiro",
|
"Deck" : "Deck",
|
||||||
"Changes in the <strong>Deck app</strong>" : "Cambios na <strong>aplicación Tarxeteiro</strong>",
|
"Changes in the <strong>Deck app</strong>" : "Cambios na <strong>aplicación Deck</strong>",
|
||||||
"A <strong>comment</strong> was created on a card" : "Creouse un <strong>comentario</strong> nunha tarxeta",
|
"A <strong>comment</strong> was created on a card" : "Creouse un <strong>comentario</strong> nunha tarxeta",
|
||||||
"Upcoming cards" : "Tarxetas próximas",
|
"Upcoming cards" : "Tarxetas próximas",
|
||||||
"Load more" : "Cargar máis",
|
"Load more" : "Cargar máis",
|
||||||
"Personal" : "Persoal",
|
"Personal" : "Persoal",
|
||||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "A tarxeta «%s» en «%s» foi asignada a vostede por %s.",
|
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "A tarxeta «%s» en «%s» foi asignada a vostede por %s.",
|
||||||
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} asignoulle a tarxeta {deck-card} en {deck-board} a vostede.",
|
"The card \"%s\" on \"%s\" has reached its due date." : "A tarxeta «%s» en «%s» chegou á súa data de caducidade.",
|
||||||
"The card \"%s\" on \"%s\" has reached its due date." : "A tarxeta «%s» en «%s» acadou a súa data de caducidade.",
|
|
||||||
"The card {deck-card} on {deck-board} has reached its due date." : "A tarxeta {deck-card} en {deck-board} chegou á súa data de caducidade.",
|
|
||||||
"%s has mentioned you in a comment on \"%s\"." : "%s mencionouno a vostede nun comentario en «%s».",
|
"%s has mentioned you in a comment on \"%s\"." : "%s mencionouno a vostede nun comentario en «%s».",
|
||||||
"{user} has mentioned you in a comment on {deck-card}." : "{user} mencionouno a vostede nun comentario en {deck-card}.",
|
|
||||||
"The board \"%s\" has been shared with you by %s." : "O taboleiro «%s» foi compartido con vostede por %s.",
|
"The board \"%s\" has been shared with you by %s." : "O taboleiro «%s» foi compartido con vostede por %s.",
|
||||||
"{user} has shared {deck-board} with you." : "{user} compartiu {deck-board} con vostede.",
|
"Deck board" : "Taboleiro do Deck",
|
||||||
"Deck board" : "Taboleiro do Tarxeteiro",
|
|
||||||
"Owned by %1$s" : "Propiedade de %1$s",
|
|
||||||
"Deck boards, cards and comments" : "Taboleiros do Tarxeteiro, tarxetas e comentarios",
|
|
||||||
"From %1$s, in %2$s/%3$s, owned by %4$s" : "De %1$s, en %2$s/%3$s, propiedade de %4$s",
|
|
||||||
"Card comments" : "Comentarios da tarxeta",
|
"Card comments" : "Comentarios da tarxeta",
|
||||||
"%s on %s" : "%s en %s",
|
"%s on %s" : "%s en %s",
|
||||||
"Deck boards and cards" : "Taboleiros do Tarxeteiro e tarxetas",
|
|
||||||
"No data was provided to create an attachment." : "Non se forneceu ningún dato para crear un anexo.",
|
"No data was provided to create an attachment." : "Non se forneceu ningún dato para crear un anexo.",
|
||||||
"Finished" : "Rematado",
|
"Finished" : "Rematado",
|
||||||
"To review" : "Para revisar",
|
"To review" : "Para revisar",
|
||||||
"Action needed" : "Necesita unha acción",
|
"Action needed" : "Necesita unha acción",
|
||||||
"Later" : "Após",
|
"Later" : "Despois",
|
||||||
"copy" : "copiar",
|
"copy" : "copiar",
|
||||||
"To do" : "Tarefa pendente",
|
"To do" : "Para facer",
|
||||||
"Doing" : "Facendo",
|
"Doing" : "Facendo",
|
||||||
"Done" : "Feito",
|
"Done" : "Feito",
|
||||||
"Example Task 3" : "Tarefa de exemplo 3",
|
"Example Task 3" : "Tarefa de exemplo 3",
|
||||||
@@ -104,12 +96,10 @@
|
|||||||
"Could not write file to disk" : "Non foi posíbel escribir o ficheiro no disco",
|
"Could not write file to disk" : "Non foi posíbel escribir o ficheiro no disco",
|
||||||
"A PHP extension stopped the file upload" : "Unha extensión PHP detivo o envío de ficheiros",
|
"A PHP extension stopped the file upload" : "Unha extensión PHP detivo o envío de ficheiros",
|
||||||
"No file uploaded or file size exceeds maximum of %s" : "Non se enviou ningún ficheiro ou o tamaño do ficheiro supera o máximo de %s",
|
"No file uploaded or file size exceeds maximum of %s" : "Non se enviou ningún ficheiro ou o tamaño do ficheiro supera o máximo de %s",
|
||||||
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Este comentario ten máis de %s caracteres.\nEngadido como anexo á tarxeta co nome %s.\nAccesíbel no URL: %s.",
|
|
||||||
"Card not found" : "Non se atopou a tarxeta",
|
"Card not found" : "Non se atopou a tarxeta",
|
||||||
"Path is already shared with this card" : "A ruta xa está compartida con esta tarxeta",
|
"Path is already shared with this card" : "A ruta xa está compartida con esta tarxeta",
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "Data incorrecta, o formato da date debe ser AAAA-MM-DD",
|
"Invalid date, date format must be YYYY-MM-DD" : "Data incorrecta, o formato da date debe ser AAAA-MM-DD",
|
||||||
"Personal planning and team project organization" : "Planificación persoal e organización de proxectos de equipo",
|
"Personal planning and team project organization" : "Planificación persoal e organización de proxectos de equipo",
|
||||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Tarxeteiro é unha ferramenta de organización de estilo kanban dirixida a planificación persoal e organización de proxectos para equipos integrados con Nextcloud. \n\n\n- 📥 Engada as súas tarefas ás tarxetas e fagas ordenadas\n- 📄 Escriba notas adicionais en Markdown\n- 🔖 Asigne etiquetas para unha mellor organización\n- 👥 Comparta co seu equipo, amigos ou a súa familia\n- 📎 Anexe ficheiros e insíraos na súa descrición de Markdown\n- 💬 Debata co seu equipo usando os comentarios\n- ⚡ Faga un seguimento dos cambios no fluxo de actividade\n- 🚀 Teña o seu proxecto organizado",
|
|
||||||
"Add board" : "Engadir taboleiro",
|
"Add board" : "Engadir taboleiro",
|
||||||
"Select the board to link to a project" : "Seleccione o taboleiro para ligar a un proxecto",
|
"Select the board to link to a project" : "Seleccione o taboleiro para ligar a un proxecto",
|
||||||
"Search by board title" : "Buscar polo título do taboleiro",
|
"Search by board title" : "Buscar polo título do taboleiro",
|
||||||
@@ -119,8 +109,6 @@
|
|||||||
"Select a list" : "Seleccionar unha lista",
|
"Select a list" : "Seleccionar unha lista",
|
||||||
"Card title" : "Título da tarxeta",
|
"Card title" : "Título da tarxeta",
|
||||||
"Cancel" : "Cancelar",
|
"Cancel" : "Cancelar",
|
||||||
"Creating the new card …" : "Creando unha nova tarxeta…",
|
|
||||||
"Card \"{card}\" was added to \"{board}\"" : "A tarxeta «{card}» foi engdida a «{board}»",
|
|
||||||
"Open card" : "Abrir a tarxeta",
|
"Open card" : "Abrir a tarxeta",
|
||||||
"Close" : "Pechar",
|
"Close" : "Pechar",
|
||||||
"Create card" : "Crear tarxeta",
|
"Create card" : "Crear tarxeta",
|
||||||
@@ -138,7 +126,6 @@
|
|||||||
"Archived cards" : "Tarxetas arquivadas",
|
"Archived cards" : "Tarxetas arquivadas",
|
||||||
"Add list" : "Engadir unha lista",
|
"Add list" : "Engadir unha lista",
|
||||||
"List name" : "Nome da lista",
|
"List name" : "Nome da lista",
|
||||||
"Active filters" : "Filtros activos",
|
|
||||||
"Apply filter" : "Aplicar filtro",
|
"Apply filter" : "Aplicar filtro",
|
||||||
"Filter by tag" : "Filtrar pola etiqueta",
|
"Filter by tag" : "Filtrar pola etiqueta",
|
||||||
"Filter by assigned user" : "Filtrar polo usuario asignado",
|
"Filter by assigned user" : "Filtrar polo usuario asignado",
|
||||||
@@ -155,7 +142,6 @@
|
|||||||
"Toggle compact mode" : "Alternar o modo compacto",
|
"Toggle compact mode" : "Alternar o modo compacto",
|
||||||
"Open details" : "Abrir detalles",
|
"Open details" : "Abrir detalles",
|
||||||
"Details" : "Detalles",
|
"Details" : "Detalles",
|
||||||
"Currently present people" : "Persoas presentes na actualidade",
|
|
||||||
"Loading board" : "Cargando o taboleiro",
|
"Loading board" : "Cargando o taboleiro",
|
||||||
"No lists available" : "Non hai listas dispoñíbeis",
|
"No lists available" : "Non hai listas dispoñíbeis",
|
||||||
"Create a new list to add cards to this board" : "Crear unha nova lista para engadir tarxetas a este taboleiro",
|
"Create a new list to add cards to this board" : "Crear unha nova lista para engadir tarxetas a este taboleiro",
|
||||||
@@ -179,17 +165,10 @@
|
|||||||
"Owner" : "Propietario",
|
"Owner" : "Propietario",
|
||||||
"Delete" : "Eliminar",
|
"Delete" : "Eliminar",
|
||||||
"Failed to create share with {displayName}" : "Produciuse un fallo ao crear o uso compartido con {displayName}",
|
"Failed to create share with {displayName}" : "Produciuse un fallo ao crear o uso compartido con {displayName}",
|
||||||
"Are you sure you want to transfer the board {title} to {user}?" : "Confirma que quere transferir o taboleiro {title} a {user}?",
|
|
||||||
"Transfer the board." : "Transferir o taboleiro.",
|
|
||||||
"Transfer" : "Transferencia",
|
"Transfer" : "Transferencia",
|
||||||
"The board has been transferred to {user}" : "O taboleiro foi transferido a {user}",
|
|
||||||
"Failed to transfer the board to {user}" : "Produciuse un fallo ao transferir o taboleiro a {user}",
|
|
||||||
"Edit list title" : "Editar o título da lista",
|
|
||||||
"Archive all cards" : "Arquivar todas as tarxetas",
|
"Archive all cards" : "Arquivar todas as tarxetas",
|
||||||
"Unarchive all cards" : "Desarquivar todas as tarxetas",
|
|
||||||
"Delete list" : "Eliminar lista",
|
"Delete list" : "Eliminar lista",
|
||||||
"Archive all cards in this list" : "Arquivar todas as tarxetas desta lista",
|
"Archive all cards in this list" : "Arquivar todas as tarxetas desta lista",
|
||||||
"Unarchive all cards in this list" : "Desarquivar todas as tarxetas desta lista",
|
|
||||||
"Add a new card" : "Engadir unha nova tarxeta",
|
"Add a new card" : "Engadir unha nova tarxeta",
|
||||||
"Card name" : "Nome da tarxeta",
|
"Card name" : "Nome da tarxeta",
|
||||||
"List deleted" : "Lista eliminada",
|
"List deleted" : "Lista eliminada",
|
||||||
@@ -200,11 +179,9 @@
|
|||||||
"Members" : "Membros",
|
"Members" : "Membros",
|
||||||
"Upload new files" : "Enviar novos ficheiros",
|
"Upload new files" : "Enviar novos ficheiros",
|
||||||
"Share from Files" : "Compartir dende «Ficheiros»",
|
"Share from Files" : "Compartir dende «Ficheiros»",
|
||||||
"Pending share" : "Recurso compartido pendente",
|
|
||||||
"Add this attachment" : "Engadir este anexo",
|
"Add this attachment" : "Engadir este anexo",
|
||||||
"Show in Files" : "Amosar en Ficheiros",
|
"Show in Files" : "Amosar en Ficheiros",
|
||||||
"Download" : "Descargar",
|
"Download" : "Descargar",
|
||||||
"Remove attachment" : "Retirar o anexo",
|
|
||||||
"Delete Attachment" : "Eliminar o anexo",
|
"Delete Attachment" : "Eliminar o anexo",
|
||||||
"Restore Attachment" : "Restaurar o anexo",
|
"Restore Attachment" : "Restaurar o anexo",
|
||||||
"File to share" : "Ficheiro para compartir",
|
"File to share" : "Ficheiro para compartir",
|
||||||
@@ -217,7 +194,6 @@
|
|||||||
"Created" : "Creado",
|
"Created" : "Creado",
|
||||||
"The title cannot be empty." : "O título non pode estar baleiro.",
|
"The title cannot be empty." : "O título non pode estar baleiro.",
|
||||||
"No comments yet. Begin the discussion!" : "Aínda non hai comentarios. Comece o debate!",
|
"No comments yet. Begin the discussion!" : "Aínda non hai comentarios. Comece o debate!",
|
||||||
"Failed to load comments" : "Produciuse un fallo ao cargar os comentarios",
|
|
||||||
"Assign a tag to this card…" : "Asignar unha etiqueta a esta tarxeta…",
|
"Assign a tag to this card…" : "Asignar unha etiqueta a esta tarxeta…",
|
||||||
"Assign to users" : "Asignar a usuarios",
|
"Assign to users" : "Asignar a usuarios",
|
||||||
"Assign to users/groups/circles" : "Asignar a usuarios/grupos/círculos",
|
"Assign to users/groups/circles" : "Asignar a usuarios/grupos/círculos",
|
||||||
@@ -234,7 +210,6 @@
|
|||||||
"The comment cannot be empty." : "O comentario non pode estar baleiro",
|
"The comment cannot be empty." : "O comentario non pode estar baleiro",
|
||||||
"The comment cannot be longer than 1000 characters." : "O comentario non pode ter máis de 1000 caracteres.",
|
"The comment cannot be longer than 1000 characters." : "O comentario non pode ter máis de 1000 caracteres.",
|
||||||
"In reply to" : "En resposta a",
|
"In reply to" : "En resposta a",
|
||||||
"Cancel reply" : "Cancelar a resposta",
|
|
||||||
"Reply" : "Responder",
|
"Reply" : "Responder",
|
||||||
"Update" : "Actualizar",
|
"Update" : "Actualizar",
|
||||||
"Description" : "Descrición",
|
"Description" : "Descrición",
|
||||||
@@ -247,9 +222,6 @@
|
|||||||
"Write a description …" : "Escriba unha descrición…",
|
"Write a description …" : "Escriba unha descrición…",
|
||||||
"Choose attachment" : "Escoller o anexo",
|
"Choose attachment" : "Escoller o anexo",
|
||||||
"(group)" : "(grupo)",
|
"(group)" : "(grupo)",
|
||||||
"Todo items" : "Elementos pendentes",
|
|
||||||
"{count} comments, {unread} unread" : "{count} comentarios, {unread} sen ler",
|
|
||||||
"Edit card title" : "Editar o título da tarxeta",
|
|
||||||
"Assign to me" : "Asignarme",
|
"Assign to me" : "Asignarme",
|
||||||
"Unassign myself" : "Desasignarme",
|
"Unassign myself" : "Desasignarme",
|
||||||
"Move card" : "Mover a tarxeta",
|
"Move card" : "Mover a tarxeta",
|
||||||
@@ -260,22 +232,19 @@
|
|||||||
"Move card to another board" : "Mover a tarxeta a outro taboleiro",
|
"Move card to another board" : "Mover a tarxeta a outro taboleiro",
|
||||||
"List is empty" : "A lista está baleira",
|
"List is empty" : "A lista está baleira",
|
||||||
"Card deleted" : "Tarxeta eliminada",
|
"Card deleted" : "Tarxeta eliminada",
|
||||||
"seconds ago" : "segundos atrás",
|
"seconds ago" : "hai uns segundos",
|
||||||
"All boards" : "Todos os taboleiros",
|
"All boards" : "Todos os taboleiros",
|
||||||
"Archived boards" : "Taboleiros arquivados",
|
"Archived boards" : "Taboleiros arquivados",
|
||||||
"Shared with you" : "Compartido con vostede",
|
"Shared with you" : "Compartido con vostede",
|
||||||
"Deck settings" : "Axustes do Tarxeteiro",
|
|
||||||
"Use bigger card view" : "Usa a vista de tarxeta máis grande",
|
"Use bigger card view" : "Usa a vista de tarxeta máis grande",
|
||||||
"Show card ID badge" : "Amosar o distintivo de identificación da tarxeta",
|
|
||||||
"Show boards in calendar/tasks" : "Amosar taboleiros no calendario/tarefas",
|
"Show boards in calendar/tasks" : "Amosar taboleiros no calendario/tarefas",
|
||||||
"Limit deck usage of groups" : "Limitar o uso da plataforma a grupos",
|
"Limit deck usage of groups" : "Limitar o uso da plataforma a grupos",
|
||||||
"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." : "Limitando o Tarxeteiro bloqueará os usuarios que non formen parte destes grupos, para crear os seus propios taboleiros. Os usuarios aínda así poderán traballar en taboleiros compartidos con eles.",
|
"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." : "Limitando Deck bloqueará os usuarios que non formen parte destes grupos, para crear os seus propios taboleiros. Os usuarios aínda así poderán traballar en taboleiros compartidos con eles.",
|
||||||
"Board details" : "Detalles do taboleiro",
|
"Board details" : "Detalles do taboleiro",
|
||||||
"Edit board" : "Editar taboleiro",
|
"Edit board" : "Editar taboleiro",
|
||||||
"Clone board" : "Clonar taboleiro",
|
"Clone board" : "Clonar taboleiro",
|
||||||
"Unarchive board" : "Desarquivar taboleiro",
|
"Unarchive board" : "Desarquivar taboleiro",
|
||||||
"Archive board" : "Arquivar taboleiro",
|
"Archive board" : "Arquivar taboleiro",
|
||||||
"Export board" : "Exportar taboleiro",
|
|
||||||
"Turn on due date reminders" : "Activar os lembretes de data de caducidade",
|
"Turn on due date reminders" : "Activar os lembretes de data de caducidade",
|
||||||
"Turn off due date reminders" : "Desctivar os lembretes de data de caducidade",
|
"Turn off due date reminders" : "Desctivar os lembretes de data de caducidade",
|
||||||
"Due date reminders" : "Lembretes de data de caducidade",
|
"Due date reminders" : "Lembretes de data de caducidade",
|
||||||
@@ -287,22 +256,14 @@
|
|||||||
"Only assigned cards" : "Só as tarxetas asignadas",
|
"Only assigned cards" : "Só as tarxetas asignadas",
|
||||||
"No reminder" : "Non hai lembretes",
|
"No reminder" : "Non hai lembretes",
|
||||||
"An error occurred" : "Produciuse un erro",
|
"An error occurred" : "Produciuse un erro",
|
||||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Confirma que quere eliminar o taboleiro {title}? Isto eliminará todos os datos deste taboleiro, incluídas as tarxetas arquivadas.",
|
|
||||||
"Delete the board?" : "Eliminar o taboleiro?",
|
"Delete the board?" : "Eliminar o taboleiro?",
|
||||||
"Loading filtered view" : "Cargando a vista filtrada",
|
"Loading filtered view" : "Cargando a vista filtrada",
|
||||||
"No due" : "Sen caducidade",
|
"No due" : "Sen caducidade",
|
||||||
"Search for {searchQuery} in all boards" : "Resultados de busca para {searchQuery} en todos os taboleiros",
|
"Search for {searchQuery} in all boards" : "Resultados de busca para {searchQuery} en todos os taboleiros",
|
||||||
"No results found" : "Non se atoparon resultados",
|
"No results found" : "Non se atoparon resultados",
|
||||||
"Deck board {name}\n* Last modified on {lastMod}" : "Taboleiro do Tarxeteiro {nome}\n* Última modificación en {lastMod}",
|
|
||||||
"{stack} in {board}" : "{stack} en {board}",
|
"{stack} in {board}" : "{stack} en {board}",
|
||||||
"Click to expand description" : "Prema para ampliar a descrición",
|
|
||||||
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Creado o {created}\n* Última modificación o {lastMod}\n* {nbAttachments} anexos\n* {nbComments} comentarios",
|
|
||||||
"{nbCards} cards" : "{nbCards} tarxetas",
|
|
||||||
"Click to expand comment" : "Prema para ampliar o comentario",
|
|
||||||
"No upcoming cards" : "Non hai tarxetas próximas",
|
"No upcoming cards" : "Non hai tarxetas próximas",
|
||||||
"upcoming cards" : "tarxetas próximas",
|
"upcoming cards" : "tarxetas próximas",
|
||||||
"New card" : "Nova tarxeta",
|
|
||||||
"Due on {date}" : "Caduca o {date}",
|
|
||||||
"Link to a board" : "Ligar a un taboleiro",
|
"Link to a board" : "Ligar a un taboleiro",
|
||||||
"Link to a card" : "Ligar a unha tarxeta",
|
"Link to a card" : "Ligar a unha tarxeta",
|
||||||
"Create a card" : "Crear unha tarxeta",
|
"Create a card" : "Crear unha tarxeta",
|
||||||
@@ -311,9 +272,10 @@
|
|||||||
"Failed to upload {name}" : "Produciuse un fallo ao actualizar {name}",
|
"Failed to upload {name}" : "Produciuse un fallo ao actualizar {name}",
|
||||||
"Maximum file size of {size} exceeded" : "Excedeuse o tamaño máximo de ficheiro de {size}",
|
"Maximum file size of {size} exceeded" : "Excedeuse o tamaño máximo de ficheiro de {size}",
|
||||||
"Error creating the share" : "Produciuse un erro ao crear a compartición",
|
"Error creating the share" : "Produciuse un erro ao crear a compartición",
|
||||||
"Share with a Deck card" : "Compartir cunha tarxeta de Tarxeteiro",
|
"Share with a Deck card" : "Compartir cunha tarxeta Deck",
|
||||||
"Share {file} with a Deck card" : "Compartir {file} cunha tarxeta de Tarxeteiro",
|
"Share {file} with a Deck card" : "Compartir {file} cunha tarxeta Deck",
|
||||||
"Share" : "Compartir",
|
"Share" : "Compartir",
|
||||||
"Add a new list" : "Engadir unha lista nova"
|
"Add a new list" : "Engadir unha lista nova",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Confirma que quere eliminar o taboleiro {title}? Isto eliminará todos os datos deste taboleiro."
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
@@ -268,6 +268,7 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "שיתוף עם כרטיס חפיסה",
|
"Share with a Deck card" : "שיתוף עם כרטיס חפיסה",
|
||||||
"Share {file} with a Deck card" : "שיתוף {file} עם כרטיס חפיסה",
|
"Share {file} with a Deck card" : "שיתוף {file} עם כרטיס חפיסה",
|
||||||
"Share" : "שיתוף",
|
"Share" : "שיתוף",
|
||||||
"Add a new list" : "הוסף רשימה חדשה"
|
"Add a new list" : "הוסף רשימה חדשה",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "למחוק את הלוח {title}? פעולה זו תמחק את כל הנתונים של הלוח הזה."
|
||||||
},
|
},
|
||||||
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;");
|
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;");
|
||||||
|
|||||||
@@ -266,6 +266,7 @@
|
|||||||
"Share with a Deck card" : "שיתוף עם כרטיס חפיסה",
|
"Share with a Deck card" : "שיתוף עם כרטיס חפיסה",
|
||||||
"Share {file} with a Deck card" : "שיתוף {file} עם כרטיס חפיסה",
|
"Share {file} with a Deck card" : "שיתוף {file} עם כרטיס חפיסה",
|
||||||
"Share" : "שיתוף",
|
"Share" : "שיתוף",
|
||||||
"Add a new list" : "הוסף רשימה חדשה"
|
"Add a new list" : "הוסף רשימה חדשה",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "למחוק את הלוח {title}? פעולה זו תמחק את כל הנתונים של הלוח הזה."
|
||||||
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
|
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
|
||||||
}
|
}
|
||||||
@@ -286,6 +286,7 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "Dijeli s Deck karticom",
|
"Share with a Deck card" : "Dijeli s Deck karticom",
|
||||||
"Share {file} with a Deck card" : "Dijeli {file} s Deck karticom",
|
"Share {file} with a Deck card" : "Dijeli {file} s Deck karticom",
|
||||||
"Share" : "Dijeli",
|
"Share" : "Dijeli",
|
||||||
"Add a new list" : "Dodaj novi popis"
|
"Add a new list" : "Dodaj novi popis",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Jeste li sigurni da želite izbrisati ploču {title}? Time ćete izbrisati sve podatke ploče."
|
||||||
},
|
},
|
||||||
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
|
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
|
||||||
|
|||||||
@@ -284,6 +284,7 @@
|
|||||||
"Share with a Deck card" : "Dijeli s Deck karticom",
|
"Share with a Deck card" : "Dijeli s Deck karticom",
|
||||||
"Share {file} with a Deck card" : "Dijeli {file} s Deck karticom",
|
"Share {file} with a Deck card" : "Dijeli {file} s Deck karticom",
|
||||||
"Share" : "Dijeli",
|
"Share" : "Dijeli",
|
||||||
"Add a new list" : "Dodaj novi popis"
|
"Add a new list" : "Dodaj novi popis",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Jeste li sigurni da želite izbrisati ploču {title}? Time ćete izbrisati sve podatke ploče."
|
||||||
},"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"
|
},"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"
|
||||||
}
|
}
|
||||||
@@ -316,6 +316,10 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "Megosztás kártyával",
|
"Share with a Deck card" : "Megosztás kártyával",
|
||||||
"Share {file} with a Deck card" : "A(z) {file} megosztása egy kártyával",
|
"Share {file} with a Deck card" : "A(z) {file} megosztása egy kártyával",
|
||||||
"Share" : "Megosztás",
|
"Share" : "Megosztás",
|
||||||
"Add a new list" : "Új lista hozzáadása"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Biztos, hogy átadja a(z) {board} tábla tulajdonjogát {user} számára?",
|
||||||
|
"Transfer the board for {user} successfully" : "A tábla átadása {user} számára sikeres",
|
||||||
|
"Failed to transfer the board for {user}" : "A tábla átadása {user} számára sikertelen",
|
||||||
|
"Add a new list" : "Új lista hozzáadása",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Biztos, hogy törli a(z) {title} táblát? Ez törölni fogja a tábla összes adatát."
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
@@ -314,6 +314,10 @@
|
|||||||
"Share with a Deck card" : "Megosztás kártyával",
|
"Share with a Deck card" : "Megosztás kártyával",
|
||||||
"Share {file} with a Deck card" : "A(z) {file} megosztása egy kártyával",
|
"Share {file} with a Deck card" : "A(z) {file} megosztása egy kártyával",
|
||||||
"Share" : "Megosztás",
|
"Share" : "Megosztás",
|
||||||
"Add a new list" : "Új lista hozzáadása"
|
"Are you sure you want to transfer the board {title} for {user}?" : "Biztos, hogy átadja a(z) {board} tábla tulajdonjogát {user} számára?",
|
||||||
|
"Transfer the board for {user} successfully" : "A tábla átadása {user} számára sikeres",
|
||||||
|
"Failed to transfer the board for {user}" : "A tábla átadása {user} számára sikertelen",
|
||||||
|
"Add a new list" : "Új lista hozzáadása",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Biztos, hogy törli a(z) {title} táblát? Ez törölni fogja a tábla összes adatát."
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
@@ -225,6 +225,7 @@ OC.L10N.register(
|
|||||||
"Something went wrong" : "Ada yang salah",
|
"Something went wrong" : "Ada yang salah",
|
||||||
"Maximum file size of {size} exceeded" : "Melampaui batas ukuran maksimal {size}",
|
"Maximum file size of {size} exceeded" : "Melampaui batas ukuran maksimal {size}",
|
||||||
"Share" : "Bagikan",
|
"Share" : "Bagikan",
|
||||||
"Add a new list" : "Tambah daftar baru"
|
"Add a new list" : "Tambah daftar baru",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Apakah Anda yakin ingin menghapus papan {title}? Aksi ini akan menghapus seluruh data pada papan ini."
|
||||||
},
|
},
|
||||||
"nplurals=1; plural=0;");
|
"nplurals=1; plural=0;");
|
||||||
|
|||||||
@@ -223,6 +223,7 @@
|
|||||||
"Something went wrong" : "Ada yang salah",
|
"Something went wrong" : "Ada yang salah",
|
||||||
"Maximum file size of {size} exceeded" : "Melampaui batas ukuran maksimal {size}",
|
"Maximum file size of {size} exceeded" : "Melampaui batas ukuran maksimal {size}",
|
||||||
"Share" : "Bagikan",
|
"Share" : "Bagikan",
|
||||||
"Add a new list" : "Tambah daftar baru"
|
"Add a new list" : "Tambah daftar baru",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Apakah Anda yakin ingin menghapus papan {title}? Aksi ini akan menghapus seluruh data pada papan ini."
|
||||||
},"pluralForm" :"nplurals=1; plural=0;"
|
},"pluralForm" :"nplurals=1; plural=0;"
|
||||||
}
|
}
|
||||||
@@ -291,6 +291,9 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "Condividi con una scheda di Deck",
|
"Share with a Deck card" : "Condividi con una scheda di Deck",
|
||||||
"Share {file} with a Deck card" : "Condividi {file} con una scheda di Deck",
|
"Share {file} with a Deck card" : "Condividi {file} con una scheda di Deck",
|
||||||
"Share" : "Condividi",
|
"Share" : "Condividi",
|
||||||
"Add a new list" : "Aggiungi un nuovo elenco"
|
"Transfer the board for {user} successfully" : "Trasferimento della bacheca per {user} avvenuta con successo.",
|
||||||
|
"Failed to transfer the board for {user}" : "Trasferimento della bacheca per {user} fallito",
|
||||||
|
"Add a new list" : "Aggiungi un nuovo elenco",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Sei sicuro di voler eliminare la lavagna {title}? Questo eliminerà tutti i dati di questa lavagna?"
|
||||||
},
|
},
|
||||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||||
|
|||||||
@@ -289,6 +289,9 @@
|
|||||||
"Share with a Deck card" : "Condividi con una scheda di Deck",
|
"Share with a Deck card" : "Condividi con una scheda di Deck",
|
||||||
"Share {file} with a Deck card" : "Condividi {file} con una scheda di Deck",
|
"Share {file} with a Deck card" : "Condividi {file} con una scheda di Deck",
|
||||||
"Share" : "Condividi",
|
"Share" : "Condividi",
|
||||||
"Add a new list" : "Aggiungi un nuovo elenco"
|
"Transfer the board for {user} successfully" : "Trasferimento della bacheca per {user} avvenuta con successo.",
|
||||||
|
"Failed to transfer the board for {user}" : "Trasferimento della bacheca per {user} fallito",
|
||||||
|
"Add a new list" : "Aggiungi un nuovo elenco",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Sei sicuro di voler eliminare la lavagna {title}? Questo eliminerà tutti i dati di questa lavagna?"
|
||||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||||
}
|
}
|
||||||
@@ -295,6 +295,10 @@ OC.L10N.register(
|
|||||||
"Share with a Deck card" : "デッキのカードで共有する",
|
"Share with a Deck card" : "デッキのカードで共有する",
|
||||||
"Share {file} with a Deck card" : "{file}をデッキのカードで共有する",
|
"Share {file} with a Deck card" : "{file}をデッキのカードで共有する",
|
||||||
"Share" : "共有",
|
"Share" : "共有",
|
||||||
"Add a new list" : "新しいリストを追加"
|
"Are you sure you want to transfer the board {title} for {user}?" : "本当に、 {user} のボード {title} を転送してもよろしいですか?",
|
||||||
|
"Transfer the board for {user} successfully" : "{user} のボードの転送に成功しました",
|
||||||
|
"Failed to transfer the board for {user}" : "{user} のボードの転送に失敗しました",
|
||||||
|
"Add a new list" : "新しいリストを追加",
|
||||||
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "このボード{title}を削除してもよろしいですか?この操作はこのボードのデータすべてを削除します。"
|
||||||
},
|
},
|
||||||
"nplurals=1; plural=0;");
|
"nplurals=1; plural=0;");
|
||||||
|
|||||||