Compare commits
389 Commits
dependabot
...
stable30-f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fb32f66752 | ||
|
|
211182e5ee | ||
|
|
7f28cd730c | ||
|
|
dadd92a378 | ||
|
|
8d14a6571c | ||
|
|
e57f106dcf | ||
|
|
b57cf8e4fe | ||
|
|
d0740cf0ae | ||
|
|
886bbc9a4c | ||
|
|
18265357e6 | ||
|
|
495bd0a55d | ||
|
|
1a6e66aabf | ||
|
|
456726251a | ||
|
|
98d0c35789 | ||
|
|
23343c5514 | ||
|
|
b5aa9c3ed3 | ||
|
|
540f35a22c | ||
|
|
c8ae989380 | ||
|
|
9a610f5d6f | ||
|
|
16930c5e7a | ||
|
|
6ecb740508 | ||
|
|
ea46f02833 | ||
|
|
315987f888 | ||
|
|
0b0724d833 | ||
|
|
053556d554 | ||
|
|
cd0cef7494 | ||
|
|
eef27c4fb3 | ||
|
|
051aa2afd6 | ||
|
|
5b1c9f8b4e | ||
|
|
8bd61286b6 | ||
|
|
640be2d26a | ||
|
|
e8cd367334 | ||
|
|
cf4aa5926a | ||
|
|
4fe7079c09 | ||
|
|
a6cc83fcf0 | ||
|
|
cfe346503c | ||
|
|
de9d9e5e68 | ||
|
|
2fde8eaf2e | ||
|
|
508cf46909 | ||
|
|
3c9403bef3 | ||
|
|
4b17dc9813 | ||
|
|
1fb221e5d3 | ||
|
|
c465d15fb2 | ||
|
|
07d4184d47 | ||
|
|
039992dfe5 | ||
|
|
fe2bcda335 | ||
|
|
7bd65078be | ||
|
|
7a80acb77f | ||
|
|
445942e1c9 | ||
|
|
24539a6a1c | ||
|
|
56ceb4d889 | ||
|
|
69442f217b | ||
|
|
0764bd9724 | ||
|
|
7318c3291d | ||
|
|
835e7fa69e | ||
|
|
1ac098b418 | ||
|
|
fa8af18f82 | ||
|
|
20aff5bbc3 | ||
|
|
18efab07a2 | ||
|
|
8f698a29f6 | ||
|
|
dd0818382a | ||
|
|
a14e5685a3 | ||
|
|
9af4c58506 | ||
|
|
28de118ee2 | ||
|
|
c163a608a6 | ||
|
|
6f1352d018 | ||
|
|
a6b2d207ee | ||
|
|
2dfb3d6379 | ||
|
|
83922f26b3 | ||
|
|
2d96431bdc | ||
|
|
6f5df944ad | ||
|
|
021e9e3bfd | ||
|
|
e3de1ed923 | ||
|
|
734964e77a | ||
|
|
a5f8a73f6b | ||
|
|
7e54d0d6c8 | ||
|
|
e1fc729275 | ||
|
|
032029357b | ||
|
|
07f04be59d | ||
|
|
21d26a4536 | ||
|
|
697ef8d187 | ||
|
|
87f4117164 | ||
|
|
c2b08b7e2f | ||
|
|
74ea201db0 | ||
|
|
65c3404d39 | ||
|
|
2742273f5c | ||
|
|
72917dfa28 | ||
|
|
e83cc8f6e2 | ||
|
|
adefe30352 | ||
|
|
9314e3a2c3 | ||
|
|
5812050f10 | ||
|
|
09f6a39e7c | ||
|
|
b840d9b1e0 | ||
|
|
ac347e8a84 | ||
|
|
67e297084d | ||
|
|
135a1a007b | ||
|
|
7de5b241d2 | ||
|
|
62e1839485 | ||
|
|
035e45735c | ||
|
|
c3394ed72d | ||
|
|
5aaa5903dd | ||
|
|
08fc1d1f21 | ||
|
|
1a8591a1f3 | ||
|
|
a74a6badbe | ||
|
|
7a32e1ff61 | ||
|
|
a782fe63c6 | ||
|
|
4b59fbdda7 | ||
|
|
b2f36b1687 | ||
|
|
d900537f7d | ||
|
|
20752f53cd | ||
|
|
5cde5f834f | ||
|
|
6f45de6bde | ||
|
|
6034cc3838 | ||
|
|
bf71460c62 | ||
|
|
fb59063e1c | ||
|
|
a4e40ec11e | ||
|
|
a0da308164 | ||
|
|
2fdbf7dd01 | ||
|
|
bc5fd69969 | ||
|
|
f1c0b03d58 | ||
|
|
1555c6c277 | ||
|
|
609ecb8d78 | ||
|
|
838d29093a | ||
|
|
1e44b744a5 | ||
|
|
3059fa42ca | ||
|
|
8741ac0728 | ||
|
|
724ed2e78d | ||
|
|
cdc51e7d94 | ||
|
|
8fc2e02e29 | ||
|
|
b0f58331af | ||
|
|
136cbdf2cb | ||
|
|
9852a3ccf8 | ||
|
|
c2787f2500 | ||
|
|
81a67e84b3 | ||
|
|
44d6981ec6 | ||
|
|
ba841069e5 | ||
|
|
39867846a7 | ||
|
|
17bd927f85 | ||
|
|
ecec14bf53 | ||
|
|
c94e8d9199 | ||
|
|
95970a2f94 | ||
|
|
5cb1afac84 | ||
|
|
4bf0f33234 | ||
|
|
c22181cc2e | ||
|
|
b6bf1ced09 | ||
|
|
5a45a1cd4c | ||
|
|
1bc35e8f4e | ||
|
|
986abc2e49 | ||
|
|
50234f35bf | ||
|
|
4fda41741d | ||
|
|
54df23741b | ||
|
|
bcbcd191a1 | ||
|
|
75b0c568cc | ||
|
|
acc16b57c8 | ||
|
|
3fb15c5fc5 | ||
|
|
e78f70302d | ||
|
|
5e6596a949 | ||
|
|
6672844704 | ||
|
|
43cff1c3f6 | ||
|
|
4d59da0513 | ||
|
|
3d8cfbab85 | ||
|
|
c4ed5198a9 | ||
|
|
5cf65cfed7 | ||
|
|
7af03f1a1d | ||
|
|
70a1d52fd3 | ||
|
|
229c6dd752 | ||
|
|
1d84ceed4e | ||
|
|
633c60592f | ||
|
|
5126de1719 | ||
|
|
0407d2109c | ||
|
|
4819771561 | ||
|
|
df064d07da | ||
|
|
b9a013d364 | ||
|
|
c7b30b0df2 | ||
|
|
5d109684fc | ||
|
|
dfdc148593 | ||
|
|
c76545e410 | ||
|
|
bd169f9229 | ||
|
|
54568805cb | ||
|
|
6c16c307a7 | ||
|
|
6114626e29 | ||
|
|
016f471516 | ||
|
|
8535f7fe98 | ||
|
|
06eb2cf20d | ||
|
|
ed9896ca79 | ||
|
|
eb21f79323 | ||
|
|
dfc472fb0e | ||
|
|
b022d4a007 | ||
|
|
6bf3104419 | ||
|
|
562a491f2e | ||
|
|
3b07fbcaac | ||
|
|
c4f1abd3e2 | ||
|
|
7ad37067bc | ||
|
|
81bd5e279a | ||
|
|
9be1a0ed90 | ||
|
|
22470ee050 | ||
|
|
f76f8e54d7 | ||
|
|
9608b6ac48 | ||
|
|
06c2a4da3b | ||
|
|
25d9206c38 | ||
|
|
f16aa05258 | ||
|
|
e7c5306b59 | ||
|
|
438f741eca | ||
|
|
147b3facfd | ||
|
|
46ca498bd1 | ||
|
|
fb9b9b37be | ||
|
|
9d4f9ad55e | ||
|
|
cdd806910c | ||
|
|
b348d63e9b | ||
|
|
905efa307c | ||
|
|
e70e31c843 | ||
|
|
c9570631e6 | ||
|
|
68a6cf7eb5 | ||
|
|
d446bb528f | ||
|
|
450f60730e | ||
|
|
8ff3839de3 | ||
|
|
c30c0ea10f | ||
|
|
d4572e3c0b | ||
|
|
8ce6adf276 | ||
|
|
f95252e8a6 | ||
|
|
048ba91ca7 | ||
|
|
ba983d6fbf | ||
|
|
b1249aa364 | ||
|
|
ae775a4a7f | ||
|
|
819a5c4715 | ||
|
|
f29cd18c1e | ||
|
|
6d4097ed93 | ||
|
|
98a0dc82f3 | ||
|
|
8ad36025c9 | ||
|
|
3150ba9fe3 | ||
|
|
ee73876d2e | ||
|
|
4efc819f31 | ||
|
|
6fdd55993c | ||
|
|
f1cae1d706 | ||
|
|
e0abc77943 | ||
|
|
2aa082ea57 | ||
|
|
395889331a | ||
|
|
c61f361e47 | ||
|
|
30743a31d9 | ||
|
|
a392507cc5 | ||
|
|
fc96100022 | ||
|
|
9cc4be0dbb | ||
|
|
7274ae23e6 | ||
|
|
7d9362ef50 | ||
|
|
667be29233 | ||
|
|
c438a665ae | ||
|
|
b6bba78541 | ||
|
|
3a5c865bbb | ||
|
|
14503d2f3d | ||
|
|
2c49c4e1ea | ||
|
|
847fc3bd32 | ||
|
|
3cd0e8c324 | ||
|
|
ba8fe8ba1f | ||
|
|
34566c6542 | ||
|
|
835d61985a | ||
|
|
03cfe95073 | ||
|
|
37b0c376ed | ||
|
|
4e954fce21 | ||
|
|
814ad66f4a | ||
|
|
519f92c7e7 | ||
|
|
c1f7d7dd44 | ||
|
|
09973e01b4 | ||
|
|
c899278c23 | ||
|
|
16627c17eb | ||
|
|
4d607987d2 | ||
|
|
af6a588f10 | ||
|
|
caadc7959a | ||
|
|
69d480f0c0 | ||
|
|
a5995ffa84 | ||
|
|
6eaac5d5a2 | ||
|
|
19d37ab123 | ||
|
|
b56f161484 | ||
|
|
9175ec7a19 | ||
|
|
46b07513a7 | ||
|
|
8c27b7341f | ||
|
|
e11a4a646f | ||
|
|
c46659e9ee | ||
|
|
fb8127b449 | ||
|
|
b030b0fc28 | ||
|
|
bd45b525b8 | ||
|
|
b207755e37 | ||
|
|
7a429d8ffb | ||
|
|
c8ec8828b0 | ||
|
|
94eda67f70 | ||
|
|
aa33327fd7 | ||
|
|
97c326c340 | ||
|
|
633f14ccce | ||
|
|
d4e93e8317 | ||
|
|
511ad4238e | ||
|
|
d086ef50b1 | ||
|
|
f61f2a667c | ||
|
|
45718d6bd9 | ||
|
|
422ee80946 | ||
|
|
9eacfa07e5 | ||
|
|
8714ef3a88 | ||
|
|
f3bafd9b44 | ||
|
|
a18da4b2d5 | ||
|
|
d9c468229c | ||
|
|
80224267cc | ||
|
|
23ad6b3e65 | ||
|
|
360c07af58 | ||
|
|
df38d09840 | ||
|
|
0ab6d7ccd3 | ||
|
|
70054ec65e | ||
|
|
9a57c891ca | ||
|
|
e4135337d7 | ||
|
|
bb9d539813 | ||
|
|
9e04f88a1d | ||
|
|
4873735ab2 | ||
|
|
818e8e9eb7 | ||
|
|
b490633a3d | ||
|
|
fad889db15 | ||
|
|
94d0225f52 | ||
|
|
f26bc92612 | ||
|
|
e8f536fbb5 | ||
|
|
8ec5def76f | ||
|
|
1e8ce54361 | ||
|
|
bbc4b80d56 | ||
|
|
4fc8ea196d | ||
|
|
07b0716d33 | ||
|
|
aca6b9d969 | ||
|
|
16592324a0 | ||
|
|
6b315f95a7 | ||
|
|
500662f8ce | ||
|
|
b8e05284eb | ||
|
|
c665cfb03d | ||
|
|
dc7a41ee35 | ||
|
|
90664cf869 | ||
|
|
c0084a6b5b | ||
|
|
9227f9e9a1 | ||
|
|
95117be03a | ||
|
|
80c428e114 | ||
|
|
03c712c965 | ||
|
|
4f59de7498 | ||
|
|
5f7709af93 | ||
|
|
79497b061a | ||
|
|
f402181db6 | ||
|
|
0275ecf3ad | ||
|
|
ba8294bdce | ||
|
|
80ed3c5e87 | ||
|
|
9efc73ce41 | ||
|
|
0c4d366950 | ||
|
|
c624b4cda0 | ||
|
|
b3b9b0d18f | ||
|
|
c846880a1e | ||
|
|
acaaccda05 | ||
|
|
67b378fda5 | ||
|
|
827b7da7c2 | ||
|
|
e01149cd81 | ||
|
|
4b594be8f0 | ||
|
|
b570dd8880 | ||
|
|
afc92908fd | ||
|
|
58bc1a87b1 | ||
|
|
7936dd6b56 | ||
|
|
dbbd57e443 | ||
|
|
0d42750d19 | ||
|
|
c56170f76f | ||
|
|
c56aeba3d3 | ||
|
|
ca4e0c122b | ||
|
|
05939792a1 | ||
|
|
5cbd91649b | ||
|
|
61d58fb4eb | ||
|
|
5aa2428e2d | ||
|
|
d35d8e5a50 | ||
|
|
71fe340fad | ||
|
|
6f3f391a04 | ||
|
|
50dea78147 | ||
|
|
3f3b1a11d7 | ||
|
|
c29686feec | ||
|
|
086617563d | ||
|
|
c7d7f2e5fe | ||
|
|
ac19f517c5 | ||
|
|
9a738ee7ac | ||
|
|
b81c249164 | ||
|
|
20f74812ea | ||
|
|
63709be9ad | ||
|
|
a94efb4905 | ||
|
|
412a5d183e | ||
|
|
e144303e26 | ||
|
|
fdb3a29256 | ||
|
|
de760ac6fa | ||
|
|
1e20832cd6 | ||
|
|
8e77849027 | ||
|
|
147dadd1ab | ||
|
|
bd39df04f6 | ||
|
|
12f30e946e | ||
|
|
01a6f93730 | ||
|
|
c72bec7220 | ||
|
|
c9a5f9e79b |
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"image": "ghcr.io/juliusknorr/nextcloud-dev-php81:latest",
|
||||
"image": "ghcr.io/juliushaertl/nextcloud-dev-php81:latest",
|
||||
"forwardPorts": [80],
|
||||
"containerEnv": {
|
||||
"NEXTCLOUD_AUTOINSTALL_APPS": "deck",
|
||||
|
||||
2
.github/CODEOWNERS
vendored
2
.github/CODEOWNERS
vendored
@@ -1,2 +0,0 @@
|
||||
# App maintainers
|
||||
* @luka-nextcloud @grnd-alt @elzody
|
||||
31
.github/dependabot.yml
vendored
31
.github/dependabot.yml
vendored
@@ -14,13 +14,13 @@ updates:
|
||||
- luka-nextcloud
|
||||
|
||||
- package-ecosystem: npm
|
||||
target-branch: stable31
|
||||
target-branch: stable29
|
||||
versioning-strategy: lockfile-only
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:15"
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
@@ -31,13 +31,30 @@ updates:
|
||||
- dependencies
|
||||
|
||||
- package-ecosystem: npm
|
||||
target-branch: stable30
|
||||
target-branch: stable28
|
||||
versioning-strategy: lockfile-only
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:30"
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major"]
|
||||
open-pull-requests-limit: 30
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
|
||||
- package-ecosystem: npm
|
||||
target-branch: stable27
|
||||
versioning-strategy: lockfile-only
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
@@ -52,7 +69,7 @@ updates:
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:45"
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
open-pull-requests-limit: 10
|
||||
reviewers:
|
||||
@@ -64,7 +81,7 @@ updates:
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "04:00"
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
open-pull-requests-limit: 10
|
||||
reviewers:
|
||||
@@ -76,7 +93,7 @@ updates:
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "04:15"
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
open-pull-requests-limit: 10
|
||||
reviewers:
|
||||
|
||||
6
.github/workflows/appbuild.yml
vendored
6
.github/workflows/appbuild.yml
vendored
@@ -16,15 +16,15 @@ jobs:
|
||||
node-version: [16.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4.2.2
|
||||
- uses: actions/checkout@v4.1.7
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.4.0
|
||||
uses: actions/setup-node@v4.0.3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Set up npm7
|
||||
run: npm i -g npm@7
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@2.33.0
|
||||
uses: shivammathur/setup-php@2.31.1
|
||||
with:
|
||||
php-version: '7.4'
|
||||
tools: composer
|
||||
|
||||
8
.github/workflows/appstore-build-publish.yml
vendored
8
.github/workflows/appstore-build-publish.yml
vendored
@@ -35,7 +35,7 @@ jobs:
|
||||
echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
with:
|
||||
persist-credentials: false
|
||||
path: ${{ env.APP_NAME }}
|
||||
@@ -71,7 +71,7 @@ jobs:
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
# Skip if no package.json
|
||||
if: ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.1.0
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -87,7 +87,7 @@ jobs:
|
||||
filename: ${{ env.APP_NAME }}/appinfo/info.xml
|
||||
|
||||
- name: Set up php ${{ steps.php-versions.outputs.php-min }}
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
|
||||
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2.31.1
|
||||
with:
|
||||
php-version: ${{ steps.php-versions.outputs.php-min }}
|
||||
coverage: none
|
||||
@@ -149,7 +149,7 @@ jobs:
|
||||
unzip latest-$NCVERSION.zip
|
||||
|
||||
- name: Checkout server master fallback
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
if: ${{ steps.server-checkout.outcome != 'success' }}
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
51
.github/workflows/command-rebase.yml
vendored
Normal file
51
.github/workflows/command-rebase.yml
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
# 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: Rebase command
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: created
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
rebase:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: none
|
||||
|
||||
# On pull requests and if the comment starts with `/rebase`
|
||||
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase')
|
||||
|
||||
steps:
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reaction-type: "+1"
|
||||
|
||||
- name: Checkout the latest code
|
||||
uses: actions/checkout@v4.1.7 # v3.5.2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Automatic Rebase
|
||||
uses: cirrus-actions/rebase@b87d48154a87a85666003575337e27b8cd65f691 # 1.8
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reaction-type: "-1"
|
||||
12
.github/workflows/cypress-e2e.yml
vendored
12
.github/workflows/cypress-e2e.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
||||
node-version: [20.x]
|
||||
# containers: [1, 2, 3]
|
||||
php-versions: [ '8.2' ]
|
||||
server-versions: [ 'master' ]
|
||||
server-versions: [ 'stable30' ]
|
||||
|
||||
env:
|
||||
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd, apcu
|
||||
@@ -41,7 +41,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.4.0
|
||||
uses: actions/setup-node@v4.0.3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
|
||||
@@ -51,7 +51,7 @@ jobs:
|
||||
echo "text_app_ref=$text_app_ref" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v4.2.2
|
||||
uses: actions/checkout@v4.1.7
|
||||
with:
|
||||
repository: nextcloud/server
|
||||
ref: ${{ matrix.server-versions }}
|
||||
@@ -64,12 +64,12 @@ jobs:
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
|
||||
- name: Checkout ${{ env.APP_NAME }}
|
||||
uses: actions/checkout@v4.2.2
|
||||
uses: actions/checkout@v4.1.7
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Checkout text
|
||||
uses: actions/checkout@v4.2.2
|
||||
uses: actions/checkout@v4.1.7
|
||||
with:
|
||||
repository: nextcloud/text
|
||||
ref: ${{ env.text_app_ref }}
|
||||
@@ -91,7 +91,7 @@ jobs:
|
||||
restore-keys: ${{ steps.extcache.outputs.key }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@2.33.0
|
||||
uses: shivammathur/setup-php@2.31.1
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: ${{ env.extensions }}
|
||||
|
||||
14
.github/workflows/integration.yml
vendored
14
.github/workflows/integration.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
||||
matrix:
|
||||
php-versions: ['8.1']
|
||||
databases: ['sqlite', 'mysql', 'pgsql']
|
||||
server-versions: ['master']
|
||||
server-versions: ['stable30']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
|
||||
|
||||
@@ -52,7 +52,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v4.2.2
|
||||
uses: actions/checkout@v4.1.7
|
||||
with:
|
||||
repository: nextcloud/server
|
||||
ref: ${{ matrix.server-versions }}
|
||||
@@ -66,19 +66,19 @@ jobs:
|
||||
cd build/integration && composer require --dev phpunit/phpunit:~9
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@v4.2.2
|
||||
uses: actions/checkout@v4.1.7
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Checkout activity
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
with:
|
||||
repository: nextcloud/activity
|
||||
ref: ${{ matrix.server-versions }}
|
||||
path: apps/activity
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@2.33.0
|
||||
uses: shivammathur/setup-php@2.31.1
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql, apcu, gd
|
||||
@@ -112,10 +112,6 @@ jobs:
|
||||
working-directory: apps/${{ env.APP_NAME }}/tests/integration
|
||||
run: ./run.sh
|
||||
|
||||
- name: Print log
|
||||
if: always()
|
||||
run: cat data/nextcloud.log
|
||||
|
||||
- name: Query count
|
||||
if: ${{ matrix.databases == 'mysql' }}
|
||||
uses: actions/github-script@v7
|
||||
|
||||
6
.github/workflows/lint-eslint.yml
vendored
6
.github/workflows/lint-eslint.yml
vendored
@@ -56,9 +56,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
|
||||
@@ -68,7 +66,7 @@ jobs:
|
||||
fallbackNpm: '^10'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.1.0
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
8
.github/workflows/lint-php-cs.yml
vendored
8
.github/workflows/lint-php-cs.yml
vendored
@@ -25,16 +25,14 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: Get php version
|
||||
id: versions
|
||||
uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1
|
||||
|
||||
- name: Set up php${{ steps.versions.outputs.php-min }}
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
|
||||
- name: Set up php${{ steps.versions.outputs.php-available }}
|
||||
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2.31.1
|
||||
with:
|
||||
php-version: ${{ steps.versions.outputs.php-min }}
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
|
||||
11
.github/workflows/lint-php.yml
vendored
11
.github/workflows/lint-php.yml
vendored
@@ -24,10 +24,7 @@ jobs:
|
||||
php-versions: ${{ steps.versions.outputs.php-versions }}
|
||||
steps:
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
- name: Get version matrix
|
||||
id: versions
|
||||
uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.0.0
|
||||
@@ -43,12 +40,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
|
||||
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2.31.1
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
|
||||
6
.github/workflows/lint-stylelint.yml
vendored
6
.github/workflows/lint-stylelint.yml
vendored
@@ -25,9 +25,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
|
||||
@@ -37,7 +35,7 @@ jobs:
|
||||
fallbackNpm: '^10'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.1.0
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
4
.github/workflows/nodejs.yml
vendored
4
.github/workflows/nodejs.yml
vendored
@@ -12,9 +12,9 @@ jobs:
|
||||
node-version: [14.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4.2.2
|
||||
- uses: actions/checkout@v4.1.7
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.4.0
|
||||
uses: actions/setup-node@v4.0.3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Set up npm7
|
||||
|
||||
20
.github/workflows/npm-audit-fix.yml
vendored
20
.github/workflows/npm-audit-fix.yml
vendored
@@ -14,9 +14,6 @@ on:
|
||||
# At 2:30 on Sundays
|
||||
- cron: '30 2 * * 0'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -24,18 +21,15 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
branches: ['main', 'master', 'stable31', 'stable30', 'stable29']
|
||||
branches: ['main', 'master', 'stable29', 'stable28', 'stable27']
|
||||
|
||||
name: npm-audit-fix-${{ matrix.branches }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
id: checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
with:
|
||||
persist-credentials: false
|
||||
ref: ${{ matrix.branches }}
|
||||
continue-on-error: true
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
|
||||
@@ -45,7 +39,7 @@ jobs:
|
||||
fallbackNpm: '^10'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.1.0
|
||||
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -54,10 +48,10 @@ jobs:
|
||||
|
||||
- name: Fix npm audit
|
||||
id: npm-audit
|
||||
uses: nextcloud-libraries/npm-audit-action@1b1728b2b4a7a78d69de65608efcf4db0e3e42d0 # v0.2.0
|
||||
uses: nextcloud-libraries/npm-audit-action@2a60bd2e79cc77f2cc4d9a3fe40f1a69896f3a87 # v0.1.0
|
||||
|
||||
- name: Run npm ci and npm run build
|
||||
if: steps.checkout.outcome == 'success'
|
||||
if: always()
|
||||
env:
|
||||
CYPRESS_INSTALL_BINARY: 0
|
||||
run: |
|
||||
@@ -65,8 +59,8 @@ jobs:
|
||||
npm run build --if-present
|
||||
|
||||
- name: Create Pull Request
|
||||
if: steps.checkout.outcome == 'success'
|
||||
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
|
||||
if: always()
|
||||
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
commit-message: 'fix(deps): Fix npm audit'
|
||||
|
||||
10
.github/workflows/phpunit-mysql.yml
vendored
10
.github/workflows/phpunit-mysql.yml
vendored
@@ -24,9 +24,7 @@ jobs:
|
||||
matrix: ${{ steps.versions.outputs.sparse-matrix }}
|
||||
steps:
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: Get version matrix
|
||||
id: versions
|
||||
@@ -89,7 +87,7 @@ jobs:
|
||||
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: true
|
||||
@@ -97,13 +95,13 @@ jobs:
|
||||
ref: ${{ matrix.server-versions }}
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
with:
|
||||
persist-credentials: false
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
|
||||
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2.31.1
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
|
||||
10
.github/workflows/phpunit-pgsql.yml
vendored
10
.github/workflows/phpunit-pgsql.yml
vendored
@@ -25,9 +25,7 @@ jobs:
|
||||
server-max: ${{ steps.versions.outputs.branches-max-list }}
|
||||
steps:
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: Get version matrix
|
||||
id: versions
|
||||
@@ -92,7 +90,7 @@ jobs:
|
||||
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: true
|
||||
@@ -100,13 +98,13 @@ jobs:
|
||||
ref: ${{ matrix.server-versions }}
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
with:
|
||||
persist-credentials: false
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
|
||||
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2.31.1
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
|
||||
10
.github/workflows/phpunit-sqlite.yml
vendored
10
.github/workflows/phpunit-sqlite.yml
vendored
@@ -25,9 +25,7 @@ jobs:
|
||||
server-max: ${{ steps.versions.outputs.branches-max-list }}
|
||||
steps:
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: Get version matrix
|
||||
id: versions
|
||||
@@ -81,7 +79,7 @@ jobs:
|
||||
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: true
|
||||
@@ -89,13 +87,13 @@ jobs:
|
||||
ref: ${{ matrix.server-versions }}
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
with:
|
||||
persist-credentials: false
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
|
||||
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2.31.1
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
|
||||
7
.github/workflows/pr-feedback.yml
vendored
7
.github/workflows/pr-feedback.yml
vendored
@@ -15,17 +15,12 @@ on:
|
||||
schedule:
|
||||
- cron: '30 1 * * *'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
pr-feedback:
|
||||
if: ${{ github.repository_owner == 'nextcloud' }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: The get-github-handles-from-website action
|
||||
uses: marcelklehr/get-github-handles-from-website-action@06b2239db0a48fe1484ba0bfd966a3ab81a08308 # v1.0.1
|
||||
uses: marcelklehr/get-github-handles-from-website-action@a739600f6b91da4957f51db0792697afbb2f143c # v1.0.0
|
||||
id: scrape
|
||||
with:
|
||||
website: 'https://nextcloud.com/team/'
|
||||
|
||||
8
.github/workflows/psalm.yml
vendored
8
.github/workflows/psalm.yml
vendored
@@ -24,9 +24,7 @@ jobs:
|
||||
name: static-psalm-analysis
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: Get php version
|
||||
id: versions
|
||||
@@ -35,8 +33,8 @@ jobs:
|
||||
- name: Check enforcement of minimum PHP version ${{ steps.versions.outputs.php-min }} in psalm.xml
|
||||
run: grep 'phpVersion="${{ steps.versions.outputs.php-min }}' psalm.xml
|
||||
|
||||
- name: Set up php${{ steps.versions.outputs.php-min }}
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
|
||||
- name: Set up php${{ steps.versions.outputs.php-available }}
|
||||
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2.31.1
|
||||
with:
|
||||
php-version: ${{ steps.versions.outputs.php-min }}
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
|
||||
6
.github/workflows/reuse.yml
vendored
6
.github/workflows/reuse.yml
vendored
@@ -19,9 +19,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
|
||||
- name: REUSE Compliance Check
|
||||
uses: fsfe/reuse-action@bb774aa972c2a89ff34781233d275075cbddf542 # v5.0.0
|
||||
uses: fsfe/reuse-action@3ae3c6bdf1257ab19397fab11fd3312144692083 # v4.0.0
|
||||
|
||||
8
.github/workflows/update-nextcloud-ocp.yml
vendored
8
.github/workflows/update-nextcloud-ocp.yml
vendored
@@ -23,13 +23,13 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
branches: ['main', 'master', 'stable31', 'stable30', 'stable29']
|
||||
branches: ['main', 'master', 'stable29', 'stable28', 'stable27']
|
||||
|
||||
name: update-nextcloud-ocp-${{ matrix.branches }}
|
||||
|
||||
steps:
|
||||
- id: checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
with:
|
||||
persist-credentials: false
|
||||
ref: ${{ matrix.branches }}
|
||||
@@ -38,7 +38,7 @@ jobs:
|
||||
|
||||
- name: Set up php8.2
|
||||
if: steps.checkout.outcome == 'success'
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
|
||||
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2.31.1
|
||||
with:
|
||||
php-version: 8.2
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -107,7 +107,7 @@ jobs:
|
||||
|
||||
- name: Create Pull Request
|
||||
if: steps.checkout.outcome == 'success'
|
||||
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
|
||||
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
commit-message: 'chore(dev-deps): Bump nextcloud/ocp package'
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
/.editorconfig
|
||||
/.eslintrc.js
|
||||
/.nextcloudignore
|
||||
/webpack.js
|
||||
/webpack.*.js
|
||||
/.codecov.yml
|
||||
/composer.json
|
||||
/composer.lock
|
||||
@@ -26,10 +26,3 @@
|
||||
/package-lock.json
|
||||
/node_modules/
|
||||
/src/
|
||||
/cypress/
|
||||
/cypress.config.js
|
||||
/.devcontainer/
|
||||
/.php-cs-fixer.dist.php
|
||||
/psalm.xml
|
||||
/relativeci.config.js
|
||||
/stylelint.config.js
|
||||
|
||||
80
CHANGELOG.md
80
CHANGELOG.md
@@ -5,20 +5,74 @@
|
||||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## 1.15.0-beta.1
|
||||
## 1.14.5
|
||||
### Fixed
|
||||
- fix: Catch not found card @juliusknorr [#6646](https://github.com/nextcloud/deck/pull/6646)
|
||||
- fix: Avoid failing on public dav URLs @juliusknorr [#6642](https://github.com/nextcloud/deck/pull/6642)
|
||||
- fix: Proper rich object formats @juliusknorr [#6641](https://github.com/nextcloud/deck/pull/6641)
|
||||
- fix(notifications): Notifier::prepare() threw \InvalidArgumentExcepti… @nickvergessen [#6623](https://github.com/nextcloud/deck/pull/6623)
|
||||
- fix: close modal after deleting card @ludij [#6617](https://github.com/nextcloud/deck/pull/6617)
|
||||
- fix: Use new query builder @juliusknorr [#6611](https://github.com/nextcloud/deck/pull/6611)
|
||||
- fix: new card input spacing @luka-nextcloud [#6574](https://github.com/nextcloud/deck/pull/6574)
|
||||
* [stable30] Clear selected stack when selected board changed by @backportbot in https://github.com/nextcloud/deck/pull/6914
|
||||
* [stable30] perf: Skip doing a query just to check if a board is deleted by @backportbot in https://github.com/nextcloud/deck/pull/6895
|
||||
* [stable30] fix: only delete assignments on unshared board by @grnd-alt in https://github.com/nextcloud/deck/pull/6935
|
||||
* [stable30] fix: Limit label actions to labels of the cards board by @backportbot in https://github.com/nextcloud/deck/pull/6953
|
||||
|
||||
## 1.14.0-beta.1
|
||||
### Maintenance
|
||||
* Chore(deps): Bump @babel/runtime from 7.26.10 to 7.27.0 by @dependabot in https://github.com/nextcloud/deck/pull/6866
|
||||
* Chore(deps): Bump dompurify from 3.2.4 to 3.2.5 by @dependabot in https://github.com/nextcloud/deck/pull/6881
|
||||
* Chore(deps): Bump @nextcloud/vue from 8.23.1 to 8.24.0 by @dependabot in https://github.com/nextcloud/deck/pull/6882
|
||||
* [stable30] Fix npm audit by @nextcloud-command in https://github.com/nextcloud/deck/pull/6887
|
||||
* Chore(deps-dev): Bump @nextcloud/webpack-vue-config from 6.2.0 to 6.3.0 by @dependabot in https://github.com/nextcloud/deck/pull/6909
|
||||
* [stable30] Fix npm audit by @nextcloud-command in https://github.com/nextcloud/deck/pull/6911
|
||||
* Chore(deps): Bump @nextcloud/vue from 8.24.0 to 8.25.1 by @dependabot in https://github.com/nextcloud/deck/pull/6923
|
||||
* [stable30] chore: update workflows from templates by @backportbot in https://github.com/nextcloud/deck/pull/6921
|
||||
* Chore(deps): Bump @nextcloud/vue from 8.25.1 to 8.26.0 by @dependabot in https://github.com/nextcloud/deck/pull/6939
|
||||
* [stable30] Fix npm audit by @nextcloud-command in https://github.com/nextcloud/deck/pull/6948
|
||||
|
||||
## 1.14.4
|
||||
### Fixed
|
||||
- fix: skip exporting a deleted card #6722
|
||||
- fix: Properly show attachment extension #6673
|
||||
|
||||
### Maintenance
|
||||
- Update nextcloud/ocp dependency #6769
|
||||
- Update nextcloud/ocp dependency #6718
|
||||
- Update nextcloud/ocp dependency #6700
|
||||
- Update nextcloud/ocp dependency #6656
|
||||
|
||||
## 1.14.3
|
||||
### Fixed
|
||||
- fix: two close buttons on card modal @app/backportbot [#6659](https://github.com/nextcloud/deck/pull/6659)
|
||||
- fix: Catch not found card @app/backportbot [#6652](https://github.com/nextcloud/deck/pull/6652)
|
||||
- fix: close modal after deleting card @app/backportbot [#6619](https://github.com/nextcloud/deck/pull/6619)
|
||||
- fix: Use new query builder @app/backportbot [#6612](https://github.com/nextcloud/deck/pull/6612)
|
||||
- fix: new card input spacing @app/backportbot [#6576](https://github.com/nextcloud/deck/pull/6576)
|
||||
- fix(sharing): list accounts with matches in email @app/backportbot [#6524](https://github.com/nextcloud/deck/pull/6524)
|
||||
|
||||
## 1.14.2
|
||||
### Fixed
|
||||
|
||||
- fix: board bubble preview widget [#6477](https://github.com/nextcloud/deck/pull/6477)
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Update nextcloud/ocp dependency @nextcloud-command [#6470](https://github.com/nextcloud/deck/pull/6470)
|
||||
- Fix npm audit @nextcloud-command [#6450](https://github.com/nextcloud/deck/pull/6450)
|
||||
|
||||
## 1.14.1
|
||||
### Fixed
|
||||
- fix: Load archived card if URL is opened directly #6326
|
||||
- Update nextcloud/ocp dependency #6322
|
||||
|
||||
## 1.14.0
|
||||
|
||||
### Added
|
||||
|
||||
- export json data of commments @grnd-alt [#6119](https://github.com/nextcloud/deck/pull/6119)
|
||||
|
||||
### Fixed
|
||||
|
||||
- fix: losing focus while editing title field @luka-nextcloud [#6140](https://github.com/nextcloud/deck/pull/6140)
|
||||
- Fix UI with the new compact design [#6258](https://github.com/nextcloud/deck/pull/6258)
|
||||
- Translation call fix [#6261](https://github.com/nextcloud/deck/pull/6261)
|
||||
- fix: 30 design issues [#6265](https://github.com/nextcloud/deck/pull/6265)
|
||||
- copy labels when moving cards between boards [#6289](https://github.com/nextcloud/deck/pull/6289)
|
||||
- Bug fix collection [#6307](https://github.com/nextcloud/deck/pull/6307)
|
||||
- fix: card details focus issue with screen reader @luka-nextcloud [#5858](https://github.com/nextcloud/deck/pull/5858)
|
||||
- Cleaning up unused indicies @mintsoft [#5612](https://github.com/nextcloud/deck/pull/5612)
|
||||
- Change import command's config default argument @JimMadge [#5722](https://github.com/nextcloud/deck/pull/5722)
|
||||
@@ -31,12 +85,17 @@ All notable changes to this project will be documented in this file.
|
||||
- fix: remove redundant log @luka-nextcloud [#6115](https://github.com/nextcloud/deck/pull/6115)
|
||||
- fix: Adjust dependencies to fix filepicker @susnux [#5964](https://github.com/nextcloud/deck/pull/5964)
|
||||
- fix: Remove bindParam usage with simpler query @juliushaertl [#6065](https://github.com/nextcloud/deck/pull/6065)
|
||||
- add Order when cloning board @grnd-alt [#6117](https://github.com/nextcloud/deck/pull/6117)
|
||||
- use deleted_users for users that do not exist @grnd-alt [#6201](https://github.com/nextcloud/deck/pull/6201)
|
||||
- chore: Clean up permission service @juliushaertl [#6011](https://github.com/nextcloud/deck/pull/6011)
|
||||
|
||||
### Other
|
||||
|
||||
- fix(files): fix appstore-build-publish.yml @JuliaKirschenheuter [#6142](https://github.com/nextcloud/deck/pull/6142)
|
||||
- tests: Add environment variable and document commands to run behat tests locally @juliushaertl [#6137](https://github.com/nextcloud/deck/pull/6137)
|
||||
- chore(CI): Adjust testing matrix for Nextcloud 30 on stable30 @nickvergessen [#6205](https://github.com/nextcloud/deck/pull/6205)
|
||||
- Adds link to Nextcloud Deck for iOS in README.md file @StCyr [#5886](https://github.com/nextcloud/deck/pull/5886)
|
||||
- choir(i18n): Change filter title @rakekniven [#5957](https://github.com/nextcloud/deck/pull/5957)
|
||||
- chore: Clean up permission service @juliushaertl [#6011](https://github.com/nextcloud/deck/pull/6011)
|
||||
- Update User_documentation_en.md @StCyr [#6029](https://github.com/nextcloud/deck/pull/6029)
|
||||
- chore: Move comments event handler to use proper event dispatcher @juliushaertl [#6008](https://github.com/nextcloud/deck/pull/6008)
|
||||
- Migrate REUSE to TOML format @AndyScherzinger [#6084](https://github.com/nextcloud/deck/pull/6084)
|
||||
@@ -872,4 +931,3 @@ Android app team for helping to improve our REST API:
|
||||
- Assign labels
|
||||
- Markdown notes for each card
|
||||
- Archive cards
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ Deck is a kanban style organization tool aimed at personal planning and project
|
||||
|
||||
- [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 iOS](https://github.com/StCyr/deck-react-native) - It is available in [Apple App store](https://apps.apple.com/ml/app/nextcloud-deck/id1570892788)
|
||||
- [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
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ SPDX-FileCopyrightText = "none"
|
||||
SPDX-License-Identifier = "CC0-1.0"
|
||||
|
||||
[[annotations]]
|
||||
path = ["l10n/**.js", "l10n/**.json", "js/**.js.map", "js/**.js", "js/**.mjs", "js/**.mjs.map", "js/templates/**.handlebars", "lib/Service/Importer/fixtures/config-deckJson-schema.json", "lib/Service/Importer/fixtures/config-trelloApi-schema.json", "lib/Service/Importer/fixtures/config-trelloJson-schema.json", "lib/Service/fixtures/default-board.json", "screenshots/screenshot1.png", "src/assets/file-placeholder.svg", "img/favicon.ico", "img/favicon.png", "img/favicon.svg", "img/activity.svg", "img/activity-dark.svg", "img/deck.svg", "img/deck-current.svg", "img/deck-dark.svg", "img/details-white.svg", "img/card.svg", "img/sample-image.jpg"]
|
||||
path = ["l10n/**.js", "l10n/**.json", "js/**.js.map", "js/**.js", "js/**.mjs", "js/**.mjs.map", "js/templates/**.handlebars", "lib/Service/Importer/fixtures/config-deckJson-schema.json", "lib/Service/Importer/fixtures/config-trelloApi-schema.json", "lib/Service/Importer/fixtures/config-trelloJson-schema.json", "screenshots/screenshot1.png", "src/assets/file-placeholder.svg", "img/favicon.ico", "img/favicon.png", "img/favicon.svg", "img/activity.svg", "img/activity-dark.svg", "img/deck.svg", "img/deck-current.svg", "img/deck-dark.svg", "img/details-white.svg", "img/card.svg"]
|
||||
precedence = "aggregate"
|
||||
SPDX-FileCopyrightText = "2019 Nextcloud GmbH and Nextcloud contributors"
|
||||
SPDX-License-Identifier = "AGPL-3.0-or-later"
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -20,17 +20,17 @@
|
||||
- 🚀 Get your project organized
|
||||
|
||||
</description>
|
||||
<version>2.0.0-dev.0</version>
|
||||
<version>1.14.5</version>
|
||||
<licence>agpl</licence>
|
||||
<author>Julius Härtl</author>
|
||||
<namespace>Deck</namespace>
|
||||
<types>
|
||||
<dav/>
|
||||
</types>
|
||||
<documentation>
|
||||
<user>https://deck.readthedocs.io/en/latest/User_documentation_en/</user>
|
||||
<developer>https://deck.readthedocs.io/en/latest/API/</developer>
|
||||
</documentation>
|
||||
<namespace>Deck</namespace>
|
||||
<types>
|
||||
<dav/>
|
||||
</types>
|
||||
<category>organization</category>
|
||||
<category>office</category>
|
||||
<website>https://github.com/nextcloud/deck</website>
|
||||
@@ -42,7 +42,7 @@
|
||||
<database min-version="9.4">pgsql</database>
|
||||
<database>sqlite</database>
|
||||
<database min-version="8.0">mysql</database>
|
||||
<nextcloud min-version="32" max-version="32"/>
|
||||
<nextcloud min-version="30" max-version="30"/>
|
||||
</dependencies>
|
||||
<background-jobs>
|
||||
<job>OCA\Deck\Cron\DeleteCron</job>
|
||||
@@ -54,9 +54,6 @@
|
||||
<live-migration>
|
||||
<step>OCA\Deck\Migration\DeletedCircleCleanup</step>
|
||||
</live-migration>
|
||||
<post-migration>
|
||||
<step>OCA\Deck\Migration\LabelMismatchCleanup</step>
|
||||
</post-migration>
|
||||
</repair-steps>
|
||||
<commands>
|
||||
<command>OCA\Deck\Command\UserExport</command>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -29,7 +28,6 @@ return [
|
||||
['name' => 'board#clone', 'url' => '/boards/{boardId}/clone', 'verb' => 'POST'],
|
||||
['name' => 'board#transferOwner', 'url' => '/boards/{boardId}/transferOwner', 'verb' => 'PUT'],
|
||||
['name' => 'board#export', 'url' => '/boards/{boardId}/export', 'verb' => 'GET'],
|
||||
['name' => 'board#import', 'url' => '/boards/import', 'verb' => 'POST'],
|
||||
|
||||
// stacks
|
||||
['name' => 'stack#index', 'url' => '/stacks/{boardId}', 'verb' => 'GET'],
|
||||
@@ -104,8 +102,6 @@ return [
|
||||
['name' => 'card_api#assignUser', 'url' => '/api/v{apiVersion}/boards/{boardId}/stacks/{stackId}/cards/{cardId}/assignUser', 'verb' => 'PUT'],
|
||||
['name' => 'card_api#unassignUser', 'url' => '/api/v{apiVersion}/boards/{boardId}/stacks/{stackId}/cards/{cardId}/unassignUser', 'verb' => 'PUT'],
|
||||
['name' => 'card_api#reorder', 'url' => '/api/v{apiVersion}/boards/{boardId}/stacks/{stackId}/cards/{cardId}/reorder', 'verb' => 'PUT'],
|
||||
['name' => 'card_api#archive', 'url' => '/api/v{apiVersion}/boards/{boardId}/stacks/{stackId}/cards/{cardId}/archive', 'verb' => 'PUT'],
|
||||
['name' => 'card_api#unarchive', 'url' => '/api/v{apiVersion}/boards/{boardId}/stacks/{stackId}/cards/{cardId}/unarchive', 'verb' => 'PUT'],
|
||||
['name' => 'card_api#delete', 'url' => '/api/v{apiVersion}/boards/{boardId}/stacks/{stackId}/cards/{cardId}', 'verb' => 'DELETE'],
|
||||
|
||||
['name' => 'card_api#findAllWithDue', 'url' => '/api/v{apiVersion}/dashboard/due', 'verb' => 'GET'],
|
||||
@@ -140,8 +136,6 @@ return [
|
||||
['name' => 'comments_api#update', 'url' => '/api/v{apiVersion}/cards/{cardId}/comments/{commentId}', 'verb' => 'PUT'],
|
||||
['name' => 'comments_api#delete', 'url' => '/api/v{apiVersion}/cards/{cardId}/comments/{commentId}', 'verb' => 'DELETE'],
|
||||
|
||||
['name' => 'card#clone', 'url' => '/api/v{apiVersion}/cards/{cardId}/clone', 'verb' => 'POST'],
|
||||
|
||||
['name' => 'overview_api#upcomingCards', 'url' => '/api/v{apiVersion}/overview/upcoming', 'verb' => 'GET'],
|
||||
|
||||
['name' => 'search#search', 'url' => '/api/v{apiVersion}/search', 'verb' => 'GET'],
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"roave/security-advisories": "dev-master",
|
||||
"phpunit/phpunit": "^9",
|
||||
"nextcloud/coding-standard": "^1.1",
|
||||
"nextcloud/ocp": "dev-master",
|
||||
"nextcloud/ocp": "dev-stable30",
|
||||
"psalm/phar": "^5.13"
|
||||
},
|
||||
"config": {
|
||||
@@ -24,7 +24,7 @@
|
||||
"composer/package-versions-deprecated": true
|
||||
},
|
||||
"platform": {
|
||||
"php": "8.1"
|
||||
"php": "8.0"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
909
composer.lock
generated
909
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -5,7 +5,6 @@
|
||||
import { randUser } from '../utils/index.js'
|
||||
const user = randUser()
|
||||
const recipient = randUser()
|
||||
import { sampleBoard } from '../utils/sampleBoard'
|
||||
|
||||
describe('Board', function() {
|
||||
|
||||
@@ -59,151 +58,3 @@ describe('Board', function() {
|
||||
.should('be.visible')
|
||||
})
|
||||
})
|
||||
|
||||
describe('Board cloning', function() {
|
||||
before(function() {
|
||||
cy.createUser(user)
|
||||
})
|
||||
|
||||
it('Clones a board without cards', function() {
|
||||
const boardName = 'Clone board original'
|
||||
const board = sampleBoard(boardName)
|
||||
cy.createExampleBoard({ user, board }).then((board) => {
|
||||
const boardId = board.id
|
||||
cy.visit(`/apps/deck/board/${boardId}`)
|
||||
cy.get('.app-navigation__list .app-navigation-entry:contains("' + boardName + '")')
|
||||
.parent()
|
||||
.find('button[aria-label="Actions"]')
|
||||
.click()
|
||||
cy.get('button:contains("Clone board")')
|
||||
.click()
|
||||
|
||||
cy.get('.modal-container button:contains("Clone")')
|
||||
.click()
|
||||
|
||||
cy.get('.app-navigation__list .app-navigation-entry:contains("' + boardName + '")')
|
||||
.should('be.visible')
|
||||
|
||||
cy.get('.app-navigation__list .app-navigation-entry:contains("' + boardName + ' (copy)")')
|
||||
.should('be.visible')
|
||||
|
||||
cy.get('.board-title h2').contains(boardName + ' (copy)')
|
||||
|
||||
cy.get('h3[aria-label="TestList"]')
|
||||
.should('be.visible')
|
||||
})
|
||||
})
|
||||
|
||||
it('Clones a board with cards', function() {
|
||||
const boardName = 'Clone with cards'
|
||||
const board = sampleBoard(boardName)
|
||||
cy.createExampleBoard({ user, board }).then((board) => {
|
||||
const boardId = board.id
|
||||
cy.visit(`/apps/deck/board/${boardId}`)
|
||||
cy.get('.app-navigation__list .app-navigation-entry:contains("' + boardName + '")')
|
||||
.parent()
|
||||
.find('button[aria-label="Actions"]')
|
||||
.click()
|
||||
cy.get('button:contains("Clone board")')
|
||||
.click()
|
||||
|
||||
cy.get('.checkbox-content__text:contains("Clone cards")')
|
||||
.click()
|
||||
|
||||
cy.get('.modal-container button:contains("Clone")')
|
||||
.click()
|
||||
|
||||
cy.get('.app-navigation__list .app-navigation-entry:contains("' + boardName + '")')
|
||||
.should('be.visible')
|
||||
|
||||
cy.get('.app-navigation__list .app-navigation-entry:contains("' + boardName + ' (copy)")')
|
||||
.should('be.visible')
|
||||
|
||||
cy.get('.board-title h2').contains(boardName + ' (copy)')
|
||||
|
||||
cy.get('h3[aria-label="TestList"]')
|
||||
.should('be.visible')
|
||||
|
||||
cy.get('.card:contains("Hello world")')
|
||||
.should('be.visible')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('Board export', function() {
|
||||
before(function() {
|
||||
cy.createUser(user)
|
||||
})
|
||||
|
||||
it('Exports a board as JSON', function() {
|
||||
const boardName = 'Export JSON board'
|
||||
const board = sampleBoard(boardName)
|
||||
cy.createExampleBoard({ user, board }).then((board) => {
|
||||
const boardId = board.id
|
||||
cy.visit(`/apps/deck/board/${boardId}`)
|
||||
cy.get('.app-navigation__list .app-navigation-entry:contains("' + boardName + '")')
|
||||
.parent()
|
||||
.find('button[aria-label="Actions"]')
|
||||
.click()
|
||||
cy.get('button:contains("Export board")')
|
||||
.click()
|
||||
cy.get('.modal-container .checkbox-radio-switch__text:contains("Export as JSON")')
|
||||
.click()
|
||||
cy.get('.modal-container button:contains("Export")')
|
||||
.click()
|
||||
|
||||
const downloadsFolder = Cypress.config('downloadsFolder')
|
||||
cy.readFile(`${downloadsFolder}/${boardName}.json`)
|
||||
})
|
||||
})
|
||||
|
||||
it('Exports a board as CSV', function() {
|
||||
const boardName = 'Export CSV board'
|
||||
const board = sampleBoard(boardName)
|
||||
cy.createExampleBoard({ user, board }).then((board) => {
|
||||
const boardId = board.id
|
||||
cy.visit(`/apps/deck/board/${boardId}`)
|
||||
cy.get('.app-navigation__list .app-navigation-entry:contains("' + boardName + '")')
|
||||
.parent()
|
||||
.find('button[aria-label="Actions"]')
|
||||
.click()
|
||||
cy.get('button:contains("Export board")')
|
||||
.click()
|
||||
cy.get('.modal-container .checkbox-radio-switch__text:contains("Export as CSV")')
|
||||
.click()
|
||||
cy.get('.modal-container button:contains("Export")')
|
||||
.click()
|
||||
|
||||
const downloadsFolder = Cypress.config('downloadsFolder')
|
||||
cy.readFile(`${downloadsFolder}/${boardName}.csv`)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('Board import', function() {
|
||||
before(function () {
|
||||
cy.createUser(user)
|
||||
})
|
||||
beforeEach(function() {
|
||||
cy.login(user)
|
||||
cy.visit('/apps/deck')
|
||||
})
|
||||
|
||||
it('Imports a board from JSON', function() {
|
||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry:contains("Import board")')
|
||||
.should('be.visible')
|
||||
.click()
|
||||
|
||||
// Upload a JSON file
|
||||
cy.get('input[type="file"]')
|
||||
.selectFile([
|
||||
{
|
||||
contents: 'cypress/fixtures/import-board.json',
|
||||
fileName: 'import-board.json',
|
||||
},
|
||||
], { force: true })
|
||||
|
||||
cy.get('.app-navigation__list .app-navigation-entry:contains("Imported board")')
|
||||
.should('be.visible')
|
||||
})
|
||||
})
|
||||
|
||||
@@ -25,9 +25,9 @@ const useModal = (useModal) => {
|
||||
})
|
||||
}
|
||||
|
||||
describe('Card', function () {
|
||||
describe('Card', function() {
|
||||
let boardId
|
||||
before(function () {
|
||||
before(function() {
|
||||
cy.createUser(user)
|
||||
cy.login(user)
|
||||
cy.createExampleBoard({
|
||||
@@ -38,11 +38,11 @@ describe('Card', function () {
|
||||
})
|
||||
})
|
||||
|
||||
beforeEach(function () {
|
||||
beforeEach(function() {
|
||||
cy.login(user)
|
||||
})
|
||||
|
||||
it('Can add a card', function () {
|
||||
it('Can add a card', function() {
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
const newCardTitle = 'Write some cypress tests'
|
||||
|
||||
@@ -63,7 +63,7 @@ describe('Card', function () {
|
||||
})
|
||||
})
|
||||
|
||||
it('Create card from overview', function () {
|
||||
it('Create card from overview', function() {
|
||||
cy.visit(`/apps/deck/#/`)
|
||||
const newCardTitle = 'Test create from overview'
|
||||
cy.intercept({ method: 'POST', url: '**/apps/deck/cards' }).as('save')
|
||||
@@ -71,10 +71,6 @@ describe('Card', function () {
|
||||
|
||||
cy.get('.button-vue[aria-label*="Add card"]')
|
||||
.first().click()
|
||||
|
||||
// Somehow this avoids the electron crash
|
||||
cy.wait(2000)
|
||||
|
||||
cy.get('.modal-mask.card-selector .card-title').should('be.visible').click().type(newCardTitle)
|
||||
cy.get('.modal-mask.card-selector .multiselect-board').should('be.visible').click()
|
||||
cy.get('.vs__dropdown-menu [data-cy="board-select-title"]:contains("' + boardData.title + '")').should('be.visible').click()
|
||||
@@ -87,85 +83,22 @@ describe('Card', function () {
|
||||
cy.get('.modal-mask.card-selector button.button-vue--vue-primary').should('be.visible').click()
|
||||
cy.wait('@save', { timeout: 7000 })
|
||||
|
||||
cy.reload()
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
cy.reload()
|
||||
cy.get('.board .stack').eq(0).within(() => {
|
||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible')
|
||||
})
|
||||
})
|
||||
|
||||
it('Card with link reference', () => {
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
const absoluteUrl = `https://example.com`
|
||||
cy.get('.board .stack').eq(0).within(() => {
|
||||
cy.get('.button-vue[aria-label*="Add card"]')
|
||||
.first().click()
|
||||
|
||||
cy.get('.stack__card-add form input#new-stack-input-main')
|
||||
.type(absoluteUrl)
|
||||
cy.get('.stack__card-add form input[type=submit]')
|
||||
.first().click()
|
||||
cy.get('.card:contains("Example Domain")')
|
||||
.should('be.visible')
|
||||
.click()
|
||||
})
|
||||
|
||||
cy.get('.app-sidebar-header', { timeout: 10000 })
|
||||
.should('be.visible')
|
||||
.find('h2').contains('Example Domain').should('be.visible')
|
||||
})
|
||||
|
||||
it('Rename card with link', () => {
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
const absoluteUrl = `https://example.com`
|
||||
const plainTitle = 'New title'
|
||||
cy.get('.board .stack').eq(0).within(() => {
|
||||
cy.get('.button-vue[aria-label*="Add card"]')
|
||||
.first().click()
|
||||
|
||||
cy.get('.stack__card-add form input#new-stack-input-main')
|
||||
.type(absoluteUrl)
|
||||
cy.get('.stack__card-add form input[type=submit]')
|
||||
.first().click()
|
||||
cy.get('.card:contains("Example Domain")')
|
||||
.should('be.visible')
|
||||
})
|
||||
|
||||
// Rename link to plain title
|
||||
cy.get('.card:contains("Example Domain")')
|
||||
.last() // A duplicate card might be created in other test case, so we select the last one
|
||||
.find('.action-item__menutoggle')
|
||||
.click()
|
||||
cy.get('.v-popper__popper button:contains("Edit title")')
|
||||
.click()
|
||||
cy.get(`h4:contains("${absoluteUrl}") span[contenteditable="true"]`)
|
||||
.type(`{selectAll}${plainTitle}{enter}`)
|
||||
cy.get(`.card:contains("${plainTitle}")`)
|
||||
.should('be.visible')
|
||||
|
||||
// Rename plain title to link
|
||||
cy.get('.card:contains("New title")')
|
||||
.find('.action-item__menutoggle')
|
||||
.click()
|
||||
cy.get('.v-popper__popper button:contains("Edit title")')
|
||||
.click()
|
||||
cy.get('h4:contains("New title") span[contenteditable="true"]')
|
||||
.type(`{selectAll}${absoluteUrl}{enter}`)
|
||||
cy.get('.board').click()
|
||||
cy.get('.card:contains("Example Domain")')
|
||||
.should('be.visible')
|
||||
|
||||
})
|
||||
|
||||
describe('Modal', () => {
|
||||
beforeEach(function () {
|
||||
beforeEach(function() {
|
||||
cy.login(user)
|
||||
useModal(true).then(() => {
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
})
|
||||
})
|
||||
|
||||
it('Can show card details modal', function () {
|
||||
it('Can show card details modal', function() {
|
||||
cy.getNavigationEntry(boardData.title)
|
||||
.first().click({ force: true })
|
||||
|
||||
@@ -188,11 +121,10 @@ describe('Card', function () {
|
||||
cy.get('.file-picker__main [data-filename="welcome.txt"]', { timeout: 30000 }).should('be.visible')
|
||||
.click()
|
||||
cy.get('.dialog__actions button.button-vue--vue-primary').click()
|
||||
cy.get('.attachment-list .filename').contains('welcome')
|
||||
cy.get('.attachment-list .filename .extension').contains('txt')
|
||||
cy.get('.attachment-list .basename').contains('welcome.txt')
|
||||
})
|
||||
|
||||
it('Shows the modal with the editor', () => {
|
||||
it.only('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')
|
||||
@@ -229,9 +161,9 @@ describe('Card', function () {
|
||||
cy.get('.reference-picker-modal--content .reference-picker .multiselect-list').should('be.visible').contains(boardData.stacks[0].title)
|
||||
cy.get('.reference-picker-modal--content .reference-picker button.button-vue--vue-primary').should('be.visible').click()
|
||||
cy.wait('@save', { timeout: 7000 })
|
||||
cy.get('.modal__card .ProseMirror').contains('/index.php/apps/deck/card/').should('have.length', 1)
|
||||
cy.get('.modal__card .ProseMirror').contains('/index.php/apps/deck/card/').should('be.visible')
|
||||
|
||||
cy.visit(`/apps/deck/board/${boardId}`)
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
cy.reload()
|
||||
cy.get('.board .stack').eq(0).within(() => {
|
||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible')
|
||||
@@ -240,7 +172,7 @@ describe('Card', function () {
|
||||
})
|
||||
|
||||
describe('Sidebar', () => {
|
||||
beforeEach(function () {
|
||||
beforeEach(function() {
|
||||
cy.login(user)
|
||||
useModal(false).then(() => {
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
@@ -253,7 +185,7 @@ describe('Card', function () {
|
||||
.find('.ProseMirror h1').contains('Hello world writing more text').should('be.visible')
|
||||
})
|
||||
|
||||
it('Set a due date', function () {
|
||||
it('Set a due date', function() {
|
||||
const newCardTitle = 'Card with a due date'
|
||||
|
||||
cy.get('.button-vue[aria-label*="Add card"]')
|
||||
@@ -291,7 +223,7 @@ describe('Card', function () {
|
||||
cy.get(`.card:contains("${newCardTitle}")`).find('[data-due-state]').should('not.exist')
|
||||
})
|
||||
|
||||
it('Add a label', function () {
|
||||
it('Add a label', function() {
|
||||
const newCardTitle = 'Card with labels'
|
||||
|
||||
cy.get('.button-vue[aria-label*="Add card"]')
|
||||
@@ -302,12 +234,12 @@ describe('Card', function () {
|
||||
.first().click()
|
||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible').click()
|
||||
|
||||
cy.get('#app-sidebar-vue [data-test="tag-selector"] .vs__dropdown-toggle').should('be.visible').click()
|
||||
cy.get('#app-sidebar-vue [data-test="tag-selector"]').should('be.visible').click()
|
||||
cy.get('.vs__dropdown-menu .tag:contains("Action needed")').should('be.visible').click()
|
||||
cy.get('.vs__selected .tag:contains("Action needed")').should('be.visible')
|
||||
cy.get('.vs__dropdown-menu .tag:contains("Later")').should('be.visible').click()
|
||||
|
||||
cy.get('.vs__selected .tag:contains("Action needed")').should('be.visible')
|
||||
cy.get('.vs__selected .tag:contains("Later")').should('be.visible')
|
||||
cy.get('.vs__selected .tag:contains("Action needed")')
|
||||
.parent().find('button').click()
|
||||
|
||||
@@ -320,7 +252,7 @@ describe('Card', function () {
|
||||
})
|
||||
|
||||
describe('Card actions', () => {
|
||||
beforeEach(function () {
|
||||
beforeEach(function() {
|
||||
cy.login(user)
|
||||
useModal(false).then(() => {
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
@@ -366,21 +298,5 @@ describe('Card', function () {
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
it('clone card', () => {
|
||||
cy.intercept({ method: 'POST', url: '**/apps/deck/**/cards/*/clone' }).as('clone')
|
||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
||||
cy.get('#app-sidebar-vue')
|
||||
.find('.ProseMirror h1').contains('Hello world').should('be.visible')
|
||||
|
||||
cy.get('.app-sidebar-header .action-item__menutoggle').click()
|
||||
cy.get('.v-popper__popper button:contains("Move/copy card")').click()
|
||||
cy.get('.vs__dropdown-menu span[title="MyTestBoard"]').should('be.visible').click()
|
||||
cy.get('[data-cy="select-stack"] .vs__dropdown-toggle').should('be.visible').click()
|
||||
cy.get('.vs__dropdown-menu span[title="TestList"]').should('be.visible').click()
|
||||
cy.get('.modal-container button:contains("Copy card")').click()
|
||||
cy.wait('@clone', { timeout: 7000 })
|
||||
cy.get('.card:contains("Hello world")').should('have.length', 2)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -22,10 +22,10 @@ describe('Deck dashboard', function() {
|
||||
.should($el => expect($el.text().trim()).to.equal('Upcoming cards'))
|
||||
})
|
||||
|
||||
it('Can see the default "Welcome Board" created for user by default', function() {
|
||||
it('Can see the default "Personal Board" created for user by default', function() {
|
||||
cy.visit('/apps/deck')
|
||||
|
||||
const defaultBoard = 'Welcome to Nextcloud Deck!'
|
||||
const defaultBoard = 'Personal'
|
||||
|
||||
cy.get('.app-navigation-entry-wrapper[icon=icon-deck]')
|
||||
.find('ul.app-navigation-entry__children .app-navigation-entry:contains(' + defaultBoard + ')')
|
||||
|
||||
@@ -1,102 +0,0 @@
|
||||
{
|
||||
"boards": [
|
||||
{
|
||||
"id": 70,
|
||||
"title": "Imported board",
|
||||
"owner": "unvjrmwuag",
|
||||
"color": "00ff00",
|
||||
"archived": false,
|
||||
"labels": [
|
||||
{
|
||||
"id": 293,
|
||||
"title": "Finished",
|
||||
"color": "31CC7C",
|
||||
"boardId": 70,
|
||||
"cardId": null,
|
||||
"lastModified": 0,
|
||||
"ETag": "cfcd208495d565ef66e7dff9f98764da"
|
||||
},
|
||||
{
|
||||
"id": 294,
|
||||
"title": "To review",
|
||||
"color": "317CCC",
|
||||
"boardId": 70,
|
||||
"cardId": null,
|
||||
"lastModified": 0,
|
||||
"ETag": "cfcd208495d565ef66e7dff9f98764da"
|
||||
},
|
||||
{
|
||||
"id": 295,
|
||||
"title": "Action needed",
|
||||
"color": "FF7A66",
|
||||
"boardId": 70,
|
||||
"cardId": null,
|
||||
"lastModified": 0,
|
||||
"ETag": "cfcd208495d565ef66e7dff9f98764da"
|
||||
},
|
||||
{
|
||||
"id": 296,
|
||||
"title": "Later",
|
||||
"color": "F1DB50",
|
||||
"boardId": 70,
|
||||
"cardId": null,
|
||||
"lastModified": 0,
|
||||
"ETag": "cfcd208495d565ef66e7dff9f98764da"
|
||||
}
|
||||
],
|
||||
"acl": [],
|
||||
"permissions": [],
|
||||
"users": [],
|
||||
"stacks": {
|
||||
"114": {
|
||||
"id": 114,
|
||||
"title": "TestList",
|
||||
"boardId": 70,
|
||||
"deletedAt": 0,
|
||||
"lastModified": 1743495533,
|
||||
"cards": [
|
||||
{
|
||||
"id": 124,
|
||||
"title": "Hello world",
|
||||
"description": "# Hello world",
|
||||
"descriptionPrev": null,
|
||||
"stackId": 114,
|
||||
"type": "plain",
|
||||
"lastModified": 1743495533,
|
||||
"lastEditor": null,
|
||||
"createdAt": 1743495533,
|
||||
"labels": [],
|
||||
"assignedUsers": null,
|
||||
"attachments": null,
|
||||
"attachmentCount": null,
|
||||
"owner": {
|
||||
"primaryKey": "unvjrmwuag",
|
||||
"uid": "unvjrmwuag",
|
||||
"displayname": "unvjrmwuag",
|
||||
"type": 0
|
||||
},
|
||||
"order": 999,
|
||||
"archived": false,
|
||||
"done": null,
|
||||
"duedate": null,
|
||||
"notified": false,
|
||||
"deletedAt": 0,
|
||||
"commentsUnread": 0,
|
||||
"commentsCount": 0,
|
||||
"relatedStack": null,
|
||||
"relatedBoard": null,
|
||||
"ETag": "aa85bb973089e7fbc0bbf122e926c23f"
|
||||
}
|
||||
],
|
||||
"order": 0,
|
||||
"ETag": "aa85bb973089e7fbc0bbf122e926c23f"
|
||||
}
|
||||
},
|
||||
"activeSessions": [],
|
||||
"deletedAt": 0,
|
||||
"lastModified": 1743495533,
|
||||
"settings": [],
|
||||
"ETag": "aa85bb973089e7fbc0bbf122e926c23f"
|
||||
}
|
||||
]
|
||||
}
|
||||
47
docs/API.md
47
docs/API.md
@@ -347,34 +347,6 @@ A 403 response might be returned if the users ability to create new boards has b
|
||||
|
||||
##### 200 Success
|
||||
|
||||
### PUT /boards/{boardId}/stacks/{stackId}/cards/{cardId}/archive - Archive a card
|
||||
|
||||
#### Request parameters
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ------- | --------------------------------------- |
|
||||
| boardId | Integer | The id of the board the card belongs to |
|
||||
| stackId | Integer | The id of the stack the card belongs to |
|
||||
| cardId | Integer | The id of the card |
|
||||
|
||||
#### Response
|
||||
|
||||
##### 200 Success
|
||||
|
||||
### PUT /boards/{boardId}/stacks/{stackId}/cards/{cardId}/unarchive - Unarchive a card
|
||||
|
||||
#### Request parameters
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ------- | --------------------------------------- |
|
||||
| boardId | Integer | The id of the board the card belongs to |
|
||||
| stackId | Integer | The id of the stack the card belongs to |
|
||||
| cardId | Integer | The id of the card |
|
||||
|
||||
#### Response
|
||||
|
||||
##### 200 Success
|
||||
|
||||
### DELETE /boards/{boardId} - Delete a board
|
||||
|
||||
#### Request parameters
|
||||
@@ -451,25 +423,6 @@ A 403 response might be returned if the users ability to create new boards has b
|
||||
|
||||
##### 200 Success
|
||||
|
||||
### POST /boards/{boardId}/clone - Clone a board
|
||||
|
||||
Creates a copy of the board.
|
||||
|
||||
#### Request body
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ------ | ---------------------------------------------------- |
|
||||
| withCards | Bool | Setting if the cards should be copied (Default: false) |
|
||||
| withAssignments | Bool | Setting if the card assignments should be cloned (Default: false) |
|
||||
| withLabels | Bool | Setting if the card labels should be cloned (Default: false) |
|
||||
| withDueDate | Bool | Setting if the card due dates should be cloned (Default: false) |
|
||||
| moveCardsToLeftStack | Bool | Setting if all cards should be moved to the most left column (useful for To-Do / Doing / Done boards) (Default: false) |
|
||||
| restoreArchivedCards | Bool | Setting if the archived cards should be unarchived (Default: false) |
|
||||
|
||||
#### Response
|
||||
|
||||
##### 200 Success
|
||||
|
||||
### DELETE /boards/{boardId}/acl/{aclId} - Delete an acl rule
|
||||
|
||||
#### Response
|
||||
|
||||
@@ -13,7 +13,7 @@ The Deck application plugin uses the [markdown-it](https://github.com/markdown-i
|
||||
|
||||
## Supported Markdown
|
||||
|
||||
Markdown comes in many flavors. The best way to learn markdown and understand how to use it, is simply to [try it](https://markdown-it.github.io) on the original script official playground.
|
||||
Markdown comes in may flavors. The best way to learn markdown and understand how to use it, is simply to [try it](https://markdown-it.github.io) on the original script official playground.
|
||||
That same link offers also a comprehensive list of what is supported, and what is not - rendering it unnecessary to duplicate that content in here.
|
||||
|
||||
[CommonMark Markdown Reference](http://commonmark.org/help/)
|
||||
|
||||
@@ -105,21 +105,17 @@ It is possible to import from the following sources:
|
||||
|
||||
#### Trello JSON
|
||||
|
||||
**Limitations:**
|
||||
* Comments with more than 1000 characters are placed as attached files to the card.
|
||||
Steps:
|
||||
* Create the data file
|
||||
* Access Trello
|
||||
* go to the board you want to export
|
||||
* Follow the steps in [Trello documentation](https://help.trello.com/article/747-exporting-data-from-trello-1) and export as JSON
|
||||
* Create the configuration file
|
||||
* Execute the import informing the import file path, data file and source as `Trello JSON`
|
||||
|
||||
**Steps:**
|
||||
1. Create the data file:
|
||||
* Access Trello.
|
||||
* Go to the board you want to export.
|
||||
* Follow the steps in [Trello documentation](https://help.trello.com/article/747-exporting-data-from-trello-1) and export as JSON.
|
||||
2. Create the configuration file.
|
||||
3. Execute the import, specifying 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 importing `Trello JSON`.
|
||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloJson-schema.json) for import `Trello JSON`
|
||||
|
||||
Example configuration file:
|
||||
|
||||
```json
|
||||
{
|
||||
"owner": "admin",
|
||||
@@ -130,22 +126,26 @@ Example configuration file:
|
||||
}
|
||||
```
|
||||
|
||||
**Additional Limitations**:
|
||||
* Importing from a JSON file imports up to 1000 actions. To find out how many actions the board to be imported has, check the number of actions in the JSON.
|
||||
**Limitations**:
|
||||
|
||||
Importing from a JSON file imports up to 1000 actions. To find out how many actions the board to be imported has, identify how many actions the JSON has.
|
||||
|
||||
#### Trello API
|
||||
|
||||
Importing via API is recommended for boards with more than 1000 actions. Trello allows attaching links to a card, but Deck does not support this feature. Attachment links are instead added in a markdown table at the end of the description for each imported card.
|
||||
Import using API is recommended for boards with more than 1000 actions.
|
||||
|
||||
1. Get the API Key and Token [here](https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/#authentication-and-authorization).
|
||||
2. Obtain the ID of the board you want to import by making a request to:
|
||||
```
|
||||
https://api.trello.com/1/members/me/boards?key={yourKey}&token={yourToken}&fields=id,name
|
||||
```
|
||||
3. Create the configuration file, ensuring it follows the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloApi-schema.json) for `Trello JSON`.
|
||||
Trello makes it possible to attach links to a card. Deck does not have this feature. Attachments and attachment links are added in a markdown table at the end of the description for every imported card that has attachments in Trello.
|
||||
|
||||
* Get the API Key and API Token [here](https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/#authentication-and-authorization)
|
||||
* Get the ID of the board you want to import by making a request to:
|
||||
https://api.trello.com/1/members/me/boards?key={yourKey}&token={yourToken}&fields=id,name
|
||||
|
||||
This ID you will use in the configuration file in the `board` property
|
||||
* Create the configuration file
|
||||
|
||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloApi-schema.json) for import `Trello JSON`
|
||||
|
||||
Example configuration file:
|
||||
|
||||
```json
|
||||
{
|
||||
"owner": "admin",
|
||||
|
||||
@@ -4,19 +4,18 @@
|
||||
-->
|
||||
## Export
|
||||
|
||||
Deck currently supports exporting all boards a user owns in a single JSON file. The format is based on the database schema that Deck uses. It can be used to re-import boards on the same or other instances.
|
||||
Deck currently supports exporting all boards a user owns in a single JSON file. The format is based on the database schema that deck uses. It can be used to re-import boards on the same or other instances.
|
||||
|
||||
The export currently has some known limitations in terms of specific data not included:
|
||||
The export currently has some kown limitations in terms of specific data not included:
|
||||
- Activity information
|
||||
- File attachments to Deck cards
|
||||
- File attachments to deck cards
|
||||
- Comments
|
||||
|
||||
-
|
||||
```
|
||||
occ deck:export userid > userid-deck-export.json
|
||||
occ deck:export > my-file.json
|
||||
```
|
||||
*(`userid` = username as seen in the admin user accounts page)*
|
||||
|
||||
## Import Boards
|
||||
## Import boards
|
||||
|
||||
Importing can be done using the API or the `occ` `deck:import` command.
|
||||
|
||||
@@ -24,57 +23,39 @@ It is possible to import from the following sources:
|
||||
|
||||
### Deck JSON
|
||||
|
||||
A JSON file that has been obtained from the above-described `occ deck:export [userid] > userid-deck-export.json` command can be imported.
|
||||
A json file that has been obtained from the above described `occ deck:export [userid]` command can be imported.
|
||||
|
||||
```
|
||||
occ deck:import userid-deck-export.json
|
||||
occ deck:import my-file.json
|
||||
```
|
||||
|
||||
You will be asked to provide a path to a config file.
|
||||
In case you are importing from a different instance you may use an additional config file to provide custom user id mapping in case users have different identifiers.
|
||||
|
||||
To know what to put in there:
|
||||
- Have a look at your `userid-deck-export.json`
|
||||
- Near the top, you will see `"uid"` with a username.
|
||||
- Search for additional `"uid"` entries to find all the usernames involved and note them.
|
||||
- Search for `"acl"`, where `"uid"`s of groups are also present; note them too.
|
||||
|
||||
If you are importing from a different instance, you must provide custom user ID mapping in case users have different identifiers.
|
||||
|
||||
Create a config file, e.g., `deck-import-config-file-userid.json`, and adjust the content of this example as described above. User IDs on the new instance can be seen in the admin user accounts page.
|
||||
|
||||
```json
|
||||
```
|
||||
{
|
||||
"owner": "useridofnewownerofallboards",
|
||||
"owner": "admin",
|
||||
"uidRelation": {
|
||||
"userid1onoldinstance": "userid1onnewinstance",
|
||||
"userid2onoldinstance": "userid2onnewinstance",
|
||||
"groupid1onoldinstance": "groupid1onnewinstance"
|
||||
"johndoe": "test-user-1"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
After pressing enter, everything will be imported.
|
||||
|
||||
Additional info:
|
||||
- If you export a user’s boards, all boards that the user has access to will be exported (including those shared with that user).
|
||||
|
||||
#### Trello JSON
|
||||
|
||||
**Limitations:**
|
||||
Limitations:
|
||||
* Comments with more than 1000 characters are placed as attached files to the card.
|
||||
|
||||
**Steps:**
|
||||
1. Create the data file:
|
||||
* Access Trello.
|
||||
* Go to the board you want to export.
|
||||
* Follow the steps in [Trello documentation](https://help.trello.com/article/747-exporting-data-from-trello-1) and export as JSON.
|
||||
2. Create the configuration file.
|
||||
3. Execute the import, specifying the import file path, data file, and source as `Trello JSON`.
|
||||
Steps:
|
||||
* Create the data file
|
||||
* Access Trello
|
||||
* go to the board you want to export
|
||||
* Follow the steps in [Trello documentation](https://help.trello.com/article/747-exporting-data-from-trello-1) and export as JSON
|
||||
* Create the configuration file
|
||||
* Execute the import informing the import file path, data file and source as `Trello JSON`
|
||||
|
||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloJson-schema.json) for importing `Trello JSON`.
|
||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloJson-schema.json) for import `Trello JSON`
|
||||
|
||||
Example configuration file:
|
||||
|
||||
```json
|
||||
{
|
||||
"owner": "admin",
|
||||
@@ -85,22 +66,26 @@ Example configuration file:
|
||||
}
|
||||
```
|
||||
|
||||
**Additional Limitations**:
|
||||
* Importing from a JSON file imports up to 1000 actions. To find out how many actions the board to be imported has, check the number of actions in the JSON.
|
||||
**Limitations**:
|
||||
|
||||
Importing from a JSON file imports up to 1000 actions. To find out how many actions the board to be imported has, identify how many actions the JSON has.
|
||||
|
||||
#### Trello API
|
||||
|
||||
Importing via API is recommended for boards with more than 1000 actions. Trello allows attaching links to a card, but Deck does not support this feature. Attachment links are instead added in a markdown table at the end of the description for each imported card.
|
||||
Import using API is recommended for boards with more than 1000 actions.
|
||||
|
||||
1. Get the API Key and Token [here](https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/#authentication-and-authorization).
|
||||
2. Obtain the ID of the board you want to import by making a request to:
|
||||
```
|
||||
https://api.trello.com/1/members/me/boards?key={yourKey}&token={yourToken}&fields=id,name
|
||||
```
|
||||
3. Create the configuration file, ensuring it follows the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloApi-schema.json) for `Trello JSON`.
|
||||
Trello makes it possible to attach links to a card. Deck does not have this feature. Attachments and attachment links are added in a markdown table at the end of the description for every imported card that has attachments in Trello.
|
||||
|
||||
* Get the API Key and API Token [here](https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/#authentication-and-authorization)
|
||||
* Get the ID of the board you want to import by making a request to:
|
||||
https://api.trello.com/1/members/me/boards?key={yourKey}&token={yourToken}&fields=id,name
|
||||
|
||||
This ID you will use in the configuration file in the `board` property
|
||||
* Create the configuration file
|
||||
|
||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloApi-schema.json) for import `Trello JSON`
|
||||
|
||||
Example configuration file:
|
||||
|
||||
```json
|
||||
{
|
||||
"owner": "admin",
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 188 KiB |
10
l10n/bg.js
10
l10n/bg.js
@@ -63,7 +63,7 @@ OC.L10N.register(
|
||||
"{user} has restored the attachment {attachment} to card {card}" : "{user} възстанови прикачения файл {attachment} към карта {card}",
|
||||
"You have commented on card {card}" : "Коментирали сте карта {card}",
|
||||
"{user} has commented on card {card}" : "{user} коментира карта {card}",
|
||||
"Deck" : "Deck",
|
||||
"Deck" : "Набор",
|
||||
"Changes in the <strong>Deck app</strong>" : "Промени в <strong>приложението Deck</strong>",
|
||||
"A <strong>comment</strong> was created on a card" : "На картата е създаден <strong>коментар</strong>",
|
||||
"The file was uploaded" : "Файлът е качен",
|
||||
@@ -75,11 +75,8 @@ OC.L10N.register(
|
||||
"Could not write file to disk" : " Файлът не можа да бъде записан на диск",
|
||||
"A PHP extension stopped the file upload" : "PHP разширение спря качването на файла",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Няма качен файл или размерът на файла надвишава максимума от %s",
|
||||
"Cards due today" : "Карти изтичащи днес",
|
||||
"Cards due tomorrow" : "Карти изтичащи утре",
|
||||
"Upcoming cards" : "Предстоящи карти",
|
||||
"Load more" : "Зареждане на още",
|
||||
"Welcome to Nextcloud Deck!" : "Добре дошли в Nextcloud Deck!",
|
||||
"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-card} на {deck-board} на Вас.",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Картата \"%s\" on \"%s\" е достигнала датата на падежа си.",
|
||||
@@ -230,14 +227,9 @@ OC.L10N.register(
|
||||
"Add Attachment" : "Добавяне на прикачен файл",
|
||||
"Choose attachment" : "Избор на прикачен файл",
|
||||
"Select Date" : "Изберете дата",
|
||||
"Later today – {timeLocale}" : "По-късно днес - {timeLocale}",
|
||||
"Tomorrow – {timeLocale}" : "Утре - {timeLocale}",
|
||||
"This weekend – {timeLocale}" : "Този уикенд - {timeLocale}",
|
||||
"Next week – {timeLocale}" : "Следващата седмица - {timeLocale}",
|
||||
"Set a due date" : "Задаване на крайна дата",
|
||||
"Remove due date" : "Премахни крайната дата",
|
||||
"Mark as done" : "Маркирай като готово",
|
||||
"Not done" : "Незавършен",
|
||||
"Unarchive card" : "Разархивиране на карта",
|
||||
"Archive card" : "Архивиране на карта",
|
||||
"Assign a tag to this card…" : "Присвояване на етикет на тази карта ...",
|
||||
|
||||
10
l10n/bg.json
10
l10n/bg.json
@@ -61,7 +61,7 @@
|
||||
"{user} has restored the attachment {attachment} to card {card}" : "{user} възстанови прикачения файл {attachment} към карта {card}",
|
||||
"You have commented on card {card}" : "Коментирали сте карта {card}",
|
||||
"{user} has commented on card {card}" : "{user} коментира карта {card}",
|
||||
"Deck" : "Deck",
|
||||
"Deck" : "Набор",
|
||||
"Changes in the <strong>Deck app</strong>" : "Промени в <strong>приложението Deck</strong>",
|
||||
"A <strong>comment</strong> was created on a card" : "На картата е създаден <strong>коментар</strong>",
|
||||
"The file was uploaded" : "Файлът е качен",
|
||||
@@ -73,11 +73,8 @@
|
||||
"Could not write file to disk" : " Файлът не можа да бъде записан на диск",
|
||||
"A PHP extension stopped the file upload" : "PHP разширение спря качването на файла",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Няма качен файл или размерът на файла надвишава максимума от %s",
|
||||
"Cards due today" : "Карти изтичащи днес",
|
||||
"Cards due tomorrow" : "Карти изтичащи утре",
|
||||
"Upcoming cards" : "Предстоящи карти",
|
||||
"Load more" : "Зареждане на още",
|
||||
"Welcome to Nextcloud Deck!" : "Добре дошли в Nextcloud Deck!",
|
||||
"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-card} на {deck-board} на Вас.",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Картата \"%s\" on \"%s\" е достигнала датата на падежа си.",
|
||||
@@ -228,14 +225,9 @@
|
||||
"Add Attachment" : "Добавяне на прикачен файл",
|
||||
"Choose attachment" : "Избор на прикачен файл",
|
||||
"Select Date" : "Изберете дата",
|
||||
"Later today – {timeLocale}" : "По-късно днес - {timeLocale}",
|
||||
"Tomorrow – {timeLocale}" : "Утре - {timeLocale}",
|
||||
"This weekend – {timeLocale}" : "Този уикенд - {timeLocale}",
|
||||
"Next week – {timeLocale}" : "Следващата седмица - {timeLocale}",
|
||||
"Set a due date" : "Задаване на крайна дата",
|
||||
"Remove due date" : "Премахни крайната дата",
|
||||
"Mark as done" : "Маркирай като готово",
|
||||
"Not done" : "Незавършен",
|
||||
"Unarchive card" : "Разархивиране на карта",
|
||||
"Archive card" : "Архивиране на карта",
|
||||
"Assign a tag to this card…" : "Присвояване на етикет на тази карта ...",
|
||||
|
||||
@@ -13,7 +13,6 @@ OC.L10N.register(
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Faili ei laaditud üles või selle suurus ületab maksimaalse %s",
|
||||
"Invalid file type. Only JSON files are allowed." : "Vigane failitüüp. Vaid JSON-failid on lubatud.",
|
||||
"Invalid JSON data" : "Vigased JSON-i andmed",
|
||||
"Failed to import board" : "Tahvli importimine ei õnnestunud",
|
||||
"Load more" : "Laadi veel",
|
||||
"Deck board" : "Kanbani tahvel",
|
||||
"%s on %s" : "%s %s-l",
|
||||
@@ -21,21 +20,14 @@ OC.L10N.register(
|
||||
"Later" : "Hiljem",
|
||||
"copy" : "koopia",
|
||||
"To Do" : "Tegemiseks",
|
||||
"In Progress" : "Töös",
|
||||
"Done" : "Valmis",
|
||||
"Create your first card!" : "Koosta oma esimene kaart!",
|
||||
"Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD",
|
||||
"Move/copy card" : "Teisalda või kopeeri kaart",
|
||||
"Copy card" : "Kopeeri kaart",
|
||||
"Cancel" : "Loobu",
|
||||
"Drop your files to upload" : "Üleslaadimiseks lohista failid siia",
|
||||
"File already exists" : "Fail on juba olemas",
|
||||
"Add list" : "Lisa loend",
|
||||
"List name" : "Nimekirja nimi",
|
||||
"Active filters" : "Aktiivsed filtrid",
|
||||
"Unassigned" : "Täitja on määramata",
|
||||
"Filter by status" : "Filtreeri oleku järgi",
|
||||
"Open and completed" : "Avatud ja lõpetatud",
|
||||
"Open" : "Ava",
|
||||
"Completed" : "Lõpetatud",
|
||||
"Overdue" : "Üle tähtaja",
|
||||
@@ -45,27 +37,18 @@ OC.L10N.register(
|
||||
"Details" : "Üksikasjad",
|
||||
"Sharing" : "Jagamine",
|
||||
"Tags" : "Sildid",
|
||||
"Deleted items" : "Kustutatud kirjed",
|
||||
"Activity" : "Tegevus",
|
||||
"Deleted lists" : "Kustutatud loendis",
|
||||
"Undo" : "Tühista",
|
||||
"Transfer" : "Teisalda",
|
||||
"Share board with a user, group or team …" : "Jaga tahvlit kasutaja, grupi või tiimidega…",
|
||||
"Searching for users, groups and teams …" : "Otsin kasutajaid, gruppe või tiime…",
|
||||
"No participants found" : "Osalejaid ei leidu",
|
||||
"(Group)" : "(Grupp)",
|
||||
"(Team)" : "(Tiim)",
|
||||
"Can edit" : "Võib muuta",
|
||||
"Can share" : "Võib jagada",
|
||||
"Can manage" : "Võib hallata",
|
||||
"Can edit" : "Võib redigeerida",
|
||||
"Can share" : "Can share",
|
||||
"Owner" : "Omanik",
|
||||
"Delete" : "Kustuta",
|
||||
"List deleted" : "Loend on kustutatud",
|
||||
"Edit list title" : "Muuda loendi pealkirja",
|
||||
"Delete list" : "Kustuta loend",
|
||||
"Edit" : "Redigeeri",
|
||||
"Members" : "Liikmed",
|
||||
"Select a user to assign to this card…" : "Vali kasutaja, kellele sa tahad selle kaardi ülesandeks anda…",
|
||||
"File to share" : "Jagatav fail",
|
||||
"Invalid path selected" : "Vigane asukoht on valitud",
|
||||
"Upload new files" : "Laadi uued failid üles",
|
||||
@@ -98,7 +81,6 @@ OC.L10N.register(
|
||||
"Next week – {timeLocale}" : "Järgmisel nädalal – {timeLocale}",
|
||||
"Mark as done" : "Märgi tehtuks",
|
||||
"Not done" : "Pole valmis",
|
||||
"Select or create a tag…" : "Vali või koosta silt…",
|
||||
"(group)" : "(grupp)",
|
||||
"Open link" : "Ava link",
|
||||
"Edit title" : "Muuda pealkirja",
|
||||
@@ -110,31 +92,15 @@ OC.L10N.register(
|
||||
"Shift" : "Nihuta",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Otsi",
|
||||
"Open card details" : "Ava kaardi üksikasjad",
|
||||
"Edit the card title" : "Muuda kaardi pealkirja",
|
||||
"Shared with you" : "Sinuga jagatud",
|
||||
"Cancel edit" : "Loobu muutmisest",
|
||||
"Save board" : "Salvesta tahvel",
|
||||
"No reminder" : "Meeldetuletust pole",
|
||||
"An error occurred" : "Tekkis tõrge",
|
||||
"Exporting board..." : "Ekspordin tahvlit...",
|
||||
"No notifications" : "Märguandeid pole",
|
||||
"Importing board..." : "Impordin tahvlit...",
|
||||
"Board imported successfully" : "Tahvli importimine õnnestus",
|
||||
"Import board" : "Impordi tahvel",
|
||||
"Clone {boardTitle}" : "Tee tahvlist koopia: {boardTitle}",
|
||||
"Clone cards" : "Tee kaartidest koopia",
|
||||
"Clone assignments" : "Tee ülesannetest koopia",
|
||||
"Clone labels" : "Tee siltidest koopia",
|
||||
"Clone due dates" : "Tee tähtaegadest koopia",
|
||||
"Advanced options" : "Täpsemad valikud",
|
||||
"Move all cards to the first list" : "Tõsta kõik kaardid esimesse loendisse",
|
||||
"Restore archived cards" : "Taasta arhiveeritud kaardid",
|
||||
"Clone" : "Tee koopia",
|
||||
"Export {boardTitle}" : "Ekspordi „{boardTitle}“",
|
||||
"Export as JSON" : "Ekspordi JSON-failina",
|
||||
"Export as CSV" : "Ekspordi CSV-failina",
|
||||
"Note: Only the JSON format is supported for importing back into the Deck app." : "Märkus: vaid JSON-vorming on toetatud tagasi importimiseks kanbani-rakendusse.",
|
||||
"Export" : "Ekspordi",
|
||||
"Today" : "Täna",
|
||||
"Tomorrow" : "Homme",
|
||||
@@ -144,7 +110,6 @@ OC.L10N.register(
|
||||
"Close" : "Sulge",
|
||||
"Message from {author} in {conversationName}" : "Sõnum kasutajalt „{author}“ „{conversationName}“ vestluses",
|
||||
"Failed to upload {name}" : "„{name}“ üleslaadimine ei õnnestunud",
|
||||
"Assigned users" : "Ülesannetega kasutajad",
|
||||
"Due date" : "Tähtaeg",
|
||||
"Error creating the share" : "Viga jaosmeedia loomisel",
|
||||
"Share" : "Jaga",
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Faili ei laaditud üles või selle suurus ületab maksimaalse %s",
|
||||
"Invalid file type. Only JSON files are allowed." : "Vigane failitüüp. Vaid JSON-failid on lubatud.",
|
||||
"Invalid JSON data" : "Vigased JSON-i andmed",
|
||||
"Failed to import board" : "Tahvli importimine ei õnnestunud",
|
||||
"Load more" : "Laadi veel",
|
||||
"Deck board" : "Kanbani tahvel",
|
||||
"%s on %s" : "%s %s-l",
|
||||
@@ -19,21 +18,14 @@
|
||||
"Later" : "Hiljem",
|
||||
"copy" : "koopia",
|
||||
"To Do" : "Tegemiseks",
|
||||
"In Progress" : "Töös",
|
||||
"Done" : "Valmis",
|
||||
"Create your first card!" : "Koosta oma esimene kaart!",
|
||||
"Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD",
|
||||
"Move/copy card" : "Teisalda või kopeeri kaart",
|
||||
"Copy card" : "Kopeeri kaart",
|
||||
"Cancel" : "Loobu",
|
||||
"Drop your files to upload" : "Üleslaadimiseks lohista failid siia",
|
||||
"File already exists" : "Fail on juba olemas",
|
||||
"Add list" : "Lisa loend",
|
||||
"List name" : "Nimekirja nimi",
|
||||
"Active filters" : "Aktiivsed filtrid",
|
||||
"Unassigned" : "Täitja on määramata",
|
||||
"Filter by status" : "Filtreeri oleku järgi",
|
||||
"Open and completed" : "Avatud ja lõpetatud",
|
||||
"Open" : "Ava",
|
||||
"Completed" : "Lõpetatud",
|
||||
"Overdue" : "Üle tähtaja",
|
||||
@@ -43,27 +35,18 @@
|
||||
"Details" : "Üksikasjad",
|
||||
"Sharing" : "Jagamine",
|
||||
"Tags" : "Sildid",
|
||||
"Deleted items" : "Kustutatud kirjed",
|
||||
"Activity" : "Tegevus",
|
||||
"Deleted lists" : "Kustutatud loendis",
|
||||
"Undo" : "Tühista",
|
||||
"Transfer" : "Teisalda",
|
||||
"Share board with a user, group or team …" : "Jaga tahvlit kasutaja, grupi või tiimidega…",
|
||||
"Searching for users, groups and teams …" : "Otsin kasutajaid, gruppe või tiime…",
|
||||
"No participants found" : "Osalejaid ei leidu",
|
||||
"(Group)" : "(Grupp)",
|
||||
"(Team)" : "(Tiim)",
|
||||
"Can edit" : "Võib muuta",
|
||||
"Can share" : "Võib jagada",
|
||||
"Can manage" : "Võib hallata",
|
||||
"Can edit" : "Võib redigeerida",
|
||||
"Can share" : "Can share",
|
||||
"Owner" : "Omanik",
|
||||
"Delete" : "Kustuta",
|
||||
"List deleted" : "Loend on kustutatud",
|
||||
"Edit list title" : "Muuda loendi pealkirja",
|
||||
"Delete list" : "Kustuta loend",
|
||||
"Edit" : "Redigeeri",
|
||||
"Members" : "Liikmed",
|
||||
"Select a user to assign to this card…" : "Vali kasutaja, kellele sa tahad selle kaardi ülesandeks anda…",
|
||||
"File to share" : "Jagatav fail",
|
||||
"Invalid path selected" : "Vigane asukoht on valitud",
|
||||
"Upload new files" : "Laadi uued failid üles",
|
||||
@@ -96,7 +79,6 @@
|
||||
"Next week – {timeLocale}" : "Järgmisel nädalal – {timeLocale}",
|
||||
"Mark as done" : "Märgi tehtuks",
|
||||
"Not done" : "Pole valmis",
|
||||
"Select or create a tag…" : "Vali või koosta silt…",
|
||||
"(group)" : "(grupp)",
|
||||
"Open link" : "Ava link",
|
||||
"Edit title" : "Muuda pealkirja",
|
||||
@@ -108,31 +90,15 @@
|
||||
"Shift" : "Nihuta",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Otsi",
|
||||
"Open card details" : "Ava kaardi üksikasjad",
|
||||
"Edit the card title" : "Muuda kaardi pealkirja",
|
||||
"Shared with you" : "Sinuga jagatud",
|
||||
"Cancel edit" : "Loobu muutmisest",
|
||||
"Save board" : "Salvesta tahvel",
|
||||
"No reminder" : "Meeldetuletust pole",
|
||||
"An error occurred" : "Tekkis tõrge",
|
||||
"Exporting board..." : "Ekspordin tahvlit...",
|
||||
"No notifications" : "Märguandeid pole",
|
||||
"Importing board..." : "Impordin tahvlit...",
|
||||
"Board imported successfully" : "Tahvli importimine õnnestus",
|
||||
"Import board" : "Impordi tahvel",
|
||||
"Clone {boardTitle}" : "Tee tahvlist koopia: {boardTitle}",
|
||||
"Clone cards" : "Tee kaartidest koopia",
|
||||
"Clone assignments" : "Tee ülesannetest koopia",
|
||||
"Clone labels" : "Tee siltidest koopia",
|
||||
"Clone due dates" : "Tee tähtaegadest koopia",
|
||||
"Advanced options" : "Täpsemad valikud",
|
||||
"Move all cards to the first list" : "Tõsta kõik kaardid esimesse loendisse",
|
||||
"Restore archived cards" : "Taasta arhiveeritud kaardid",
|
||||
"Clone" : "Tee koopia",
|
||||
"Export {boardTitle}" : "Ekspordi „{boardTitle}“",
|
||||
"Export as JSON" : "Ekspordi JSON-failina",
|
||||
"Export as CSV" : "Ekspordi CSV-failina",
|
||||
"Note: Only the JSON format is supported for importing back into the Deck app." : "Märkus: vaid JSON-vorming on toetatud tagasi importimiseks kanbani-rakendusse.",
|
||||
"Export" : "Ekspordi",
|
||||
"Today" : "Täna",
|
||||
"Tomorrow" : "Homme",
|
||||
@@ -142,7 +108,6 @@
|
||||
"Close" : "Sulge",
|
||||
"Message from {author} in {conversationName}" : "Sõnum kasutajalt „{author}“ „{conversationName}“ vestluses",
|
||||
"Failed to upload {name}" : "„{name}“ üleslaadimine ei õnnestunud",
|
||||
"Assigned users" : "Ülesannetega kasutajad",
|
||||
"Due date" : "Tähtaeg",
|
||||
"Error creating the share" : "Viga jaosmeedia loomisel",
|
||||
"Share" : "Jaga",
|
||||
|
||||
@@ -391,7 +391,7 @@ OC.L10N.register(
|
||||
"No upcoming cards" : "Pas de cartes à venir",
|
||||
"upcoming cards today" : "cartes à venir aujourd'hui",
|
||||
"upcoming cards tomorrow" : "cartes à venir demain",
|
||||
"upcoming cards" : "cartes à venir",
|
||||
"upcoming cards" : "prochaines cartes",
|
||||
"New card" : "Nouvelle carte",
|
||||
"Link to a board" : "Relier à un tableau",
|
||||
"Link to a card" : "Relier à une carte",
|
||||
|
||||
@@ -389,7 +389,7 @@
|
||||
"No upcoming cards" : "Pas de cartes à venir",
|
||||
"upcoming cards today" : "cartes à venir aujourd'hui",
|
||||
"upcoming cards tomorrow" : "cartes à venir demain",
|
||||
"upcoming cards" : "cartes à venir",
|
||||
"upcoming cards" : "prochaines cartes",
|
||||
"New card" : "Nouvelle carte",
|
||||
"Link to a board" : "Relier à un tableau",
|
||||
"Link to a card" : "Relier à une carte",
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"You have renamed the board {before} to {board}" : "Tu pārdēvēji dēli {before} par {board}",
|
||||
"{user} has renamed the board {before} to {board}" : "{user} pārdēvēja dēli {before} par {board}",
|
||||
"You have renamed list {before} to {stack} on board {board}" : "Tu pārdēvēji dēļa {board} sarakstu {before} par {stack}",
|
||||
"{user} has renamed list {before} to {stack} on board {board}" : "{user} pārdēvēja dēļa {board} sarakstu {before} par {stack}",
|
||||
"You have renamed the card {before} to {card}" : "Tu pārdēvēji kartīti {before} par {card}",
|
||||
"{user} has renamed the card {before} to {card}" : "{user} pārdēvēja kartīti {before} par {card}",
|
||||
"You have added a description to card {card} in list {stack} on board {board}" : "Tu pievienoji kartītes {card} aprakstu dēļa {board} sarakstā {stack}",
|
||||
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} pievienoja kartītes {card} aprakstu dēļa {board} sarakstā {stack}",
|
||||
"The file was uploaded" : "Datne tika augšupielādēta",
|
||||
@@ -23,7 +17,6 @@ OC.L10N.register(
|
||||
"Action needed" : "Nepieciešama darbība",
|
||||
"Later" : "Vēlāk",
|
||||
"copy" : "kopēt",
|
||||
"Custom lists - click to rename!" : "Pielāgoti saraksti - klikšķināt, lai pārdēvētu.",
|
||||
"Done" : "Pabeigts",
|
||||
"Invalid date, date format must be YYYY-MM-DD" : "Nederīgs datums, datuma formātam jābūt YYYY-MM-DD",
|
||||
"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 ir kanban veida organizēšanas rīks, kas paredzēts personīgai plānošanai un projektu orgenizēšanai komandām, kas ir iekļauts Nextcloud.\n\n\n- 📥 Uzdevumu pievienošana kartītēm un to sakārtošana\n- 📄 Papildu piezīmes var pierakstīt ar Markdown\n- 🔖 Vēl labākai pārraudzībai var piešķirt iezīmes\n- 👥 Koplietošana ar savu komandu, draugiem vai ģimeni\n- 📎 Datņu pievienošana un iekļaušana Markdown aprakstā\n- 💬 Apspriešana ar savu komandu ar piebildēm\n- ⚡ Izmaiņu izsekošana darbību plūsmā\n- 🚀 Sava projekta sakārtošana",
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
{ "translations": {
|
||||
"You have renamed the board {before} to {board}" : "Tu pārdēvēji dēli {before} par {board}",
|
||||
"{user} has renamed the board {before} to {board}" : "{user} pārdēvēja dēli {before} par {board}",
|
||||
"You have renamed list {before} to {stack} on board {board}" : "Tu pārdēvēji dēļa {board} sarakstu {before} par {stack}",
|
||||
"{user} has renamed list {before} to {stack} on board {board}" : "{user} pārdēvēja dēļa {board} sarakstu {before} par {stack}",
|
||||
"You have renamed the card {before} to {card}" : "Tu pārdēvēji kartīti {before} par {card}",
|
||||
"{user} has renamed the card {before} to {card}" : "{user} pārdēvēja kartīti {before} par {card}",
|
||||
"You have added a description to card {card} in list {stack} on board {board}" : "Tu pievienoji kartītes {card} aprakstu dēļa {board} sarakstā {stack}",
|
||||
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} pievienoja kartītes {card} aprakstu dēļa {board} sarakstā {stack}",
|
||||
"The file was uploaded" : "Datne tika augšupielādēta",
|
||||
@@ -21,7 +15,6 @@
|
||||
"Action needed" : "Nepieciešama darbība",
|
||||
"Later" : "Vēlāk",
|
||||
"copy" : "kopēt",
|
||||
"Custom lists - click to rename!" : "Pielāgoti saraksti - klikšķināt, lai pārdēvētu.",
|
||||
"Done" : "Pabeigts",
|
||||
"Invalid date, date format must be YYYY-MM-DD" : "Nederīgs datums, datuma formātam jābūt YYYY-MM-DD",
|
||||
"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 ir kanban veida organizēšanas rīks, kas paredzēts personīgai plānošanai un projektu orgenizēšanai komandām, kas ir iekļauts Nextcloud.\n\n\n- 📥 Uzdevumu pievienošana kartītēm un to sakārtošana\n- 📄 Papildu piezīmes var pierakstīt ar Markdown\n- 🔖 Vēl labākai pārraudzībai var piešķirt iezīmes\n- 👥 Koplietošana ar savu komandu, draugiem vai ģimeni\n- 📎 Datņu pievienošana un iekļaušana Markdown aprakstā\n- 💬 Apspriešana ar savu komandu ar piebildēm\n- ⚡ Izmaiņu izsekošana darbību plūsmā\n- 🚀 Sava projekta sakārtošana",
|
||||
|
||||
@@ -195,8 +195,8 @@ OC.L10N.register(
|
||||
"Transfer" : "Transferir",
|
||||
"The board has been transferred to {user}" : "A painel foi transferida para {user}",
|
||||
"Failed to transfer the board to {user}" : "Não foi possível transferir o painel para {user}",
|
||||
"Share board with a user, group or team …" : "Compartilhar painel com um usuário, grupo ou equipe…",
|
||||
"Searching for users, groups and teams …" : "Pesquisando usuários, grupos e equipes …",
|
||||
"Share board with a user, group or team …" : "Compartilhe o quadro com um usuário, grupo ou equipe…",
|
||||
"Searching for users, groups and teams …" : "Procurando usuários, grupos e equipes…",
|
||||
"No participants found" : "Nenhum participante encontrado",
|
||||
"Board owner" : "Proprietário do painel",
|
||||
"(Group)" : "(Grupo)",
|
||||
@@ -262,14 +262,14 @@ OC.L10N.register(
|
||||
"Choose attachment" : "Escolher anexo",
|
||||
"Select Date" : "Selecionar Data",
|
||||
"Later today – {timeLocale}" : "Hoje mais tarde – {timeLocale}",
|
||||
"Set due date for later today" : "Definir a data de vencimento para hoje mais tarde",
|
||||
"Set due date for later today" : "Defina a data de vencimento para hoje mais tarde",
|
||||
"Tomorrow – {timeLocale}" : "Amanhã – {timeLocale}",
|
||||
"Set due date for tomorrow" : "Defina a data de vencimento para amanhã",
|
||||
"This weekend – {timeLocale}" : "Este fim de semana – {timeLocale}",
|
||||
"Set due date for this weekend" : "Defina a data de vencimento para este fim de semana",
|
||||
"Next week – {timeLocale}" : "Semana que vem – {timeLocale}",
|
||||
"Set due date for next week" : "Defina a data de vencimento para a próxima semana",
|
||||
"Assign a due date to this card…" : "Atribuir uma data de vencimento a este cartão…",
|
||||
"Assign a due date to this card…" : "Atribua uma data de vencimento a este cartão...",
|
||||
"Set a due date" : "Definir uma data de vencimento",
|
||||
"Add due date" : "Adicionar data de vencimento",
|
||||
"Choose a date" : "Escolha uma data",
|
||||
@@ -280,8 +280,8 @@ OC.L10N.register(
|
||||
"Unarchive card" : "Desarquivar cartão",
|
||||
"Archive card" : "Arquivar cartão",
|
||||
"Assign a tag to this card…" : "Atribuir uma etiqueta a este cartão...",
|
||||
"Select or create a tag…" : "Selecionar ou criar uma etiqueta…",
|
||||
"Create a new tag:" : "Criar uma nova etiqueta:",
|
||||
"Select or create a tag…" : "Selecione ou crie uma etiqueta…",
|
||||
"Create a new tag:" : "Defina a data de vencimento para a próxima semana",
|
||||
"(group)" : "(grupo)",
|
||||
"{count} comments, {unread} unread" : "{count} comentários, {unread} não lidos",
|
||||
"Todo items" : "Itens a fazer",
|
||||
@@ -296,13 +296,13 @@ OC.L10N.register(
|
||||
"seconds ago" : "segundos atrás",
|
||||
"Keyboard shortcuts" : "Atalhos do teclado",
|
||||
"Boost your productivity using Deck with keyboard shortcuts." : "Aumente sua produtividade usando o Deck com atalhos de teclado.",
|
||||
"Board actions" : "Ações de painel",
|
||||
"Board actions" : "Ações do conselho",
|
||||
"Keyboard shortcut" : "Atalhos do teclado",
|
||||
"Action" : "Ação",
|
||||
"Shift" : "Shift",
|
||||
"Scroll" : "Rolar",
|
||||
"Scroll sideways" : "Rolar para o lado",
|
||||
"Navigate between cards" : "Navegar entre os cartões",
|
||||
"Scroll" : "Rolagem",
|
||||
"Scroll sideways" : "Role para o lado",
|
||||
"Navigate between cards" : "Navegue entre os cartões",
|
||||
"Esc" : "Esc",
|
||||
"Close card details" : "Fechar detalhes do cartão",
|
||||
"Ctrl" : "Ctrl",
|
||||
@@ -312,7 +312,7 @@ OC.L10N.register(
|
||||
"Show help dialog" : "Mostrar caixa de diálogo de ajuda",
|
||||
"Card actions" : "Ações de cartão",
|
||||
"The following actions can be triggered on the currently highlighted card" : "As seguintes ações podem ser acionadas no cartão atualmente destacado",
|
||||
"Enter" : "Enter",
|
||||
"Enter" : "Entrar",
|
||||
"Space" : "Espaço",
|
||||
"Open card details" : "Abrir detalhes do cartão",
|
||||
"Edit the card title" : "Editar o título do cartão",
|
||||
@@ -327,10 +327,10 @@ OC.L10N.register(
|
||||
"Use bigger card view" : "Use uma exibição de cartão maior",
|
||||
"Show card ID badge" : "Exibir o distintivo de identificação do cartão",
|
||||
"Show boards in calendar/tasks" : "Exibir os painéis em calendários/tarefas",
|
||||
"Limit board creation to some groups" : "Limitar a criação de painéis a alguns grupos",
|
||||
"Limit board creation to some groups" : "Limitar a criação de quadros a alguns grupos",
|
||||
"Users outside of those groups will not be able to create their own boards, but will still be able to work on boards that have been shared with them." : "Os usuários fora desses grupos não poderão criar seus próprios painéis, mas ainda poderão trabalhar nos painéis que foram compartilhados com eles.",
|
||||
"Cancel edit" : "Cancelar edição",
|
||||
"Save board" : "Salvar painel",
|
||||
"Save board" : "Salvar quadro",
|
||||
"Board {0} deleted" : "Painel {0} excluído",
|
||||
"All cards" : "Todos os cartões",
|
||||
"Only assigned cards" : "Apenas cartões atribuídos",
|
||||
@@ -344,7 +344,7 @@ OC.L10N.register(
|
||||
"Clone board" : "Clonar painel",
|
||||
"Unarchive board" : "Desarquivar painel",
|
||||
"Archive board" : "Arquivar painel",
|
||||
"Export board" : "Exportar painel",
|
||||
"Export board" : "Quadro de exportação",
|
||||
"Turn on due date reminders" : "Ativar lembretes de vencimento",
|
||||
"Turn off due date reminders" : "Desativar lembretes de vencimento",
|
||||
"Due date reminders" : "Lembretes de vencimento",
|
||||
@@ -360,7 +360,7 @@ OC.L10N.register(
|
||||
"Clone labels" : "Clonar rótulos",
|
||||
"Clone due dates" : "Clonar datas de vencimento",
|
||||
"Advanced options" : "Opções avançadas",
|
||||
"Move all cards to the first list" : "Mover todos os cartões para a primeira lista",
|
||||
"Move all cards to the first list" : "Mova todos os cartões para a primeira lista",
|
||||
"Restore archived cards" : "Restaurar cartões arquivados",
|
||||
"Clone" : "Clonar",
|
||||
"Export {boardTitle}" : "Exportar {boardTitle}",
|
||||
|
||||
@@ -193,8 +193,8 @@
|
||||
"Transfer" : "Transferir",
|
||||
"The board has been transferred to {user}" : "A painel foi transferida para {user}",
|
||||
"Failed to transfer the board to {user}" : "Não foi possível transferir o painel para {user}",
|
||||
"Share board with a user, group or team …" : "Compartilhar painel com um usuário, grupo ou equipe…",
|
||||
"Searching for users, groups and teams …" : "Pesquisando usuários, grupos e equipes …",
|
||||
"Share board with a user, group or team …" : "Compartilhe o quadro com um usuário, grupo ou equipe…",
|
||||
"Searching for users, groups and teams …" : "Procurando usuários, grupos e equipes…",
|
||||
"No participants found" : "Nenhum participante encontrado",
|
||||
"Board owner" : "Proprietário do painel",
|
||||
"(Group)" : "(Grupo)",
|
||||
@@ -260,14 +260,14 @@
|
||||
"Choose attachment" : "Escolher anexo",
|
||||
"Select Date" : "Selecionar Data",
|
||||
"Later today – {timeLocale}" : "Hoje mais tarde – {timeLocale}",
|
||||
"Set due date for later today" : "Definir a data de vencimento para hoje mais tarde",
|
||||
"Set due date for later today" : "Defina a data de vencimento para hoje mais tarde",
|
||||
"Tomorrow – {timeLocale}" : "Amanhã – {timeLocale}",
|
||||
"Set due date for tomorrow" : "Defina a data de vencimento para amanhã",
|
||||
"This weekend – {timeLocale}" : "Este fim de semana – {timeLocale}",
|
||||
"Set due date for this weekend" : "Defina a data de vencimento para este fim de semana",
|
||||
"Next week – {timeLocale}" : "Semana que vem – {timeLocale}",
|
||||
"Set due date for next week" : "Defina a data de vencimento para a próxima semana",
|
||||
"Assign a due date to this card…" : "Atribuir uma data de vencimento a este cartão…",
|
||||
"Assign a due date to this card…" : "Atribua uma data de vencimento a este cartão...",
|
||||
"Set a due date" : "Definir uma data de vencimento",
|
||||
"Add due date" : "Adicionar data de vencimento",
|
||||
"Choose a date" : "Escolha uma data",
|
||||
@@ -278,8 +278,8 @@
|
||||
"Unarchive card" : "Desarquivar cartão",
|
||||
"Archive card" : "Arquivar cartão",
|
||||
"Assign a tag to this card…" : "Atribuir uma etiqueta a este cartão...",
|
||||
"Select or create a tag…" : "Selecionar ou criar uma etiqueta…",
|
||||
"Create a new tag:" : "Criar uma nova etiqueta:",
|
||||
"Select or create a tag…" : "Selecione ou crie uma etiqueta…",
|
||||
"Create a new tag:" : "Defina a data de vencimento para a próxima semana",
|
||||
"(group)" : "(grupo)",
|
||||
"{count} comments, {unread} unread" : "{count} comentários, {unread} não lidos",
|
||||
"Todo items" : "Itens a fazer",
|
||||
@@ -294,13 +294,13 @@
|
||||
"seconds ago" : "segundos atrás",
|
||||
"Keyboard shortcuts" : "Atalhos do teclado",
|
||||
"Boost your productivity using Deck with keyboard shortcuts." : "Aumente sua produtividade usando o Deck com atalhos de teclado.",
|
||||
"Board actions" : "Ações de painel",
|
||||
"Board actions" : "Ações do conselho",
|
||||
"Keyboard shortcut" : "Atalhos do teclado",
|
||||
"Action" : "Ação",
|
||||
"Shift" : "Shift",
|
||||
"Scroll" : "Rolar",
|
||||
"Scroll sideways" : "Rolar para o lado",
|
||||
"Navigate between cards" : "Navegar entre os cartões",
|
||||
"Scroll" : "Rolagem",
|
||||
"Scroll sideways" : "Role para o lado",
|
||||
"Navigate between cards" : "Navegue entre os cartões",
|
||||
"Esc" : "Esc",
|
||||
"Close card details" : "Fechar detalhes do cartão",
|
||||
"Ctrl" : "Ctrl",
|
||||
@@ -310,7 +310,7 @@
|
||||
"Show help dialog" : "Mostrar caixa de diálogo de ajuda",
|
||||
"Card actions" : "Ações de cartão",
|
||||
"The following actions can be triggered on the currently highlighted card" : "As seguintes ações podem ser acionadas no cartão atualmente destacado",
|
||||
"Enter" : "Enter",
|
||||
"Enter" : "Entrar",
|
||||
"Space" : "Espaço",
|
||||
"Open card details" : "Abrir detalhes do cartão",
|
||||
"Edit the card title" : "Editar o título do cartão",
|
||||
@@ -325,10 +325,10 @@
|
||||
"Use bigger card view" : "Use uma exibição de cartão maior",
|
||||
"Show card ID badge" : "Exibir o distintivo de identificação do cartão",
|
||||
"Show boards in calendar/tasks" : "Exibir os painéis em calendários/tarefas",
|
||||
"Limit board creation to some groups" : "Limitar a criação de painéis a alguns grupos",
|
||||
"Limit board creation to some groups" : "Limitar a criação de quadros a alguns grupos",
|
||||
"Users outside of those groups will not be able to create their own boards, but will still be able to work on boards that have been shared with them." : "Os usuários fora desses grupos não poderão criar seus próprios painéis, mas ainda poderão trabalhar nos painéis que foram compartilhados com eles.",
|
||||
"Cancel edit" : "Cancelar edição",
|
||||
"Save board" : "Salvar painel",
|
||||
"Save board" : "Salvar quadro",
|
||||
"Board {0} deleted" : "Painel {0} excluído",
|
||||
"All cards" : "Todos os cartões",
|
||||
"Only assigned cards" : "Apenas cartões atribuídos",
|
||||
@@ -342,7 +342,7 @@
|
||||
"Clone board" : "Clonar painel",
|
||||
"Unarchive board" : "Desarquivar painel",
|
||||
"Archive board" : "Arquivar painel",
|
||||
"Export board" : "Exportar painel",
|
||||
"Export board" : "Quadro de exportação",
|
||||
"Turn on due date reminders" : "Ativar lembretes de vencimento",
|
||||
"Turn off due date reminders" : "Desativar lembretes de vencimento",
|
||||
"Due date reminders" : "Lembretes de vencimento",
|
||||
@@ -358,7 +358,7 @@
|
||||
"Clone labels" : "Clonar rótulos",
|
||||
"Clone due dates" : "Clonar datas de vencimento",
|
||||
"Advanced options" : "Opções avançadas",
|
||||
"Move all cards to the first list" : "Mover todos os cartões para a primeira lista",
|
||||
"Move all cards to the first list" : "Mova todos os cartões para a primeira lista",
|
||||
"Restore archived cards" : "Restaurar cartões arquivados",
|
||||
"Clone" : "Clonar",
|
||||
"Export {boardTitle}" : "Exportar {boardTitle}",
|
||||
|
||||
417
l10n/sw.js
417
l10n/sw.js
@@ -1,417 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"You have created a new board {board}" : "Umetengeneza bodi mpya {board}",
|
||||
"{user} has created a new board {board}" : "{user} ametengeneza bodi mpya {board}",
|
||||
"You have deleted the board {board}" : "Umefuta bodi {board}",
|
||||
"{user} has deleted the board {board}" : "{user} amefuta bodi {board}",
|
||||
"You have restored the board {board}" : "Umefifadhi bodi upya {board}",
|
||||
"{user} has restored the board {board}" : "{user} amehifadhi bodi upya {board}",
|
||||
"You have shared the board {board} with {acl}" : "Umeshirikisha bodi{board} kwa {acl}",
|
||||
"{user} has shared the board {board} with {acl}" : "{user} ameshirikisha bodi {board} kwa {acl}",
|
||||
"You have removed {acl} from the board {board}" : "Umeondoa {acl} kutoka katika bodi {board}",
|
||||
"{user} has removed {acl} from the board {board}" : "{user}ameondoa {acl}kutoka katika bodi{board}",
|
||||
"You have renamed the board {before} to {board}" : "Umeita jina jipya bodi {before} kwa {board}",
|
||||
"{user} has renamed the board {before} to {board}" : "{user} ameita jina jipya bodi {before} kwa {board}",
|
||||
"You have archived the board {board}" : "Umefikia malengo ya bodi {board}",
|
||||
"{user} has archived the board {before}" : "{user} amefikia malengo ya bodi {before}",
|
||||
"You have unarchived the board {board}" : "Hujafikia malengo ya bodi {board}",
|
||||
"{user} has unarchived the board {before}" : "{user}hajafikia malengo ya bodi {before}",
|
||||
"You have created a new list {stack} on board {board}" : "Umetengeneza orodha mpya {stack} katika bodi {board}",
|
||||
"{user} has created a new list {stack} on board {board}" : "{user} ametengeneza orodha mpya {stack} katika bodi {board}",
|
||||
"You have renamed list {before} to {stack} on board {board}" : "Umeiita orodha jina jipya {before} kwa {stack} katika bodi {board}",
|
||||
"{user} has renamed list {before} to {stack} on board {board}" : "{user}ameiita orodha jina jipya {before}kwa {stack} katika bodi {board}",
|
||||
"You have deleted list {stack} on board {board}" : "Umefuta orodha {stack} katika bodi {board}",
|
||||
"{user} has deleted list {stack} on board {board}" : "{user} amefuta orodha {stack} katika bodi {board}",
|
||||
"You have created card {card} in list {stack} on board {board}" : "Umetengeneza kadi {card} katka orodha {stack} juu ya bodi {board}",
|
||||
"{user} has created card {card} in list {stack} on board {board}" : "{user} ametengeneza kaadi {card} katika orodha {stack} juu ya bodi {board}",
|
||||
"You have deleted card {card} in list {stack} on board {board}" : "Umefuta kadi {card}katika orodha {stack} kwenye bodi {board}",
|
||||
"{user} has deleted card {card} in list {stack} on board {board}" : "{user} amefuta kadi {card} katika orodha {stack} juu ya bodi {board}",
|
||||
"You have renamed the card {before} to {card}" : "Umeiita kadi jina jipya {before}kwa {card} ",
|
||||
"{user} has renamed the card {before} to {card}" : " {user}ameiita kadi jina jipya {before} hadi {card} ",
|
||||
"You have added a description to card {card} in list {stack} on board {board}" : "Umeongeza maelezo katika kadi {card}katika orodha {stack}juu ya bodi {board}",
|
||||
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} ameongeza maelezo katika kadi {card}katika orodha {stack} juu ya bodi {board}",
|
||||
"You have updated the description of card {card} in list {stack} on board {board}" : "Umesasisha maelezo ya kadi{card} katika orodha {stack}juu ya bodi {board}",
|
||||
"{user} has updated the description of the card {card} in list {stack} on board {board}" : "{user} amesasisha maelezo ya kadi{card} katika orodha {stack}juu ya bodi {board}",
|
||||
"You have archived card {card} in list {stack} on board {board}" : "Umefikia malengo ya kadi {card} katika orodha {stack}juu ya bodi{board}",
|
||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user}amefikia malengo ya kadi {card}katika orodha{stack}juu ya bodi{board}",
|
||||
"You have unarchived card {card} in list {stack} on board {board}" : "Una kadi ambayo haijafikia malengo {card} katika orodha {stack} juu ya bodi {board}",
|
||||
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user}ana kadi ambayo haijafikia malengo {card} katika orodha{stack}juu ya bodi {board}",
|
||||
"You have marked the card {card} as done in list {stack} on board {board}" : "Una kadi iliyotiwa alama {card}kama orodha iliyofanyika {stack}juu ya bodi {board}",
|
||||
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} ana kadi iliyotiwa alama{card} kama orodha iliyofanyika {stack}juu ya bodi {board}",
|
||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "Umeitia alama kadi {card}kama orodha ambayo haikufanyika{stack} juu ya bodi {board}",
|
||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} ameitia alama kadi{card} kama orodha ambayo haikufanyika{stack} juu ua bodi {board}",
|
||||
"You have removed the due date of card {card}" : "Umeondoa tarehe ya mwisho ya kadi{card}",
|
||||
"{user} has removed the due date of card {card}" : "{user}ameondoa tarehe ya mwisho ya kadi {card}",
|
||||
"You have set the due date of card {card} to {after}" : "Umepangilia tarehe ya mwisho ya kadi {card}hadi{after}",
|
||||
"{user} has set the due date of card {card} to {after}" : "{user} amepangilia tarehe ya mwisho ya kadi{card} hadi {after}",
|
||||
"You have updated the due date of card {card} to {after}" : "Umesasisha tarehe ya mwisho ya kadi {card} hadi {after}",
|
||||
"{user} has updated the due date of card {card} to {after}" : "{user} amesasisha tarehe ya mwisho ya kadi{card} hadi {after}",
|
||||
"You have added the tag {label} to card {card} in list {stack} on board {board}" : "Umeongeza lebo{label}kwenye kadi{card}katika orodha{stack} juu ya bodi {board}",
|
||||
"{user} has added the tag {label} to card {card} in list {stack} on board {board}" : "{user}ameongeza lebo{label} kwenye kadi{card} katika orodha {stack}juu ya bodi {board}",
|
||||
"You have removed the tag {label} from card {card} in list {stack} on board {board}" : "Umeondoa lebo {label}kutoka katika kadi{card} katika orodha {stack}juu ya bodi {board}",
|
||||
"{user} has removed the tag {label} from card {card} in list {stack} on board {board}" : "{user}ameondoa lebo{label}kutoka katika kadi{card}katika orodha{stack}juu ya bodi{board}",
|
||||
"You have assigned {assigneduser} to card {card} on board {board}" : "Umekabidhi {assigneduser}kwenda katika kadi {card}juu ya bodi{board}",
|
||||
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} amekabidhi {assigneduser}kwenye kadi{card} juu ya bodi {board}",
|
||||
"You have unassigned {assigneduser} from card {card} on board {board}" : "Umeondoa ukabithi {assigneduser}kutoka katika kadi{card}juu ya bodi {board}",
|
||||
"{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user}ameondoa ukabidhi wa {assigneduser}kutoka katika kadi {card}juu ya bodi {board}",
|
||||
"You have moved the card {card} from list {stackBefore} to {stack}" : "Umeondoa kadi{card}kutoka katika orodha {stackBefore}mpaka{stack}",
|
||||
"{user} has moved the card {card} from list {stackBefore} to {stack}" : "{user}ameondoa kadi {card} kutoka katika orodha {stackBefore}hadi {stack}",
|
||||
"You have added the attachment {attachment} to card {card}" : "Umeongeza kiambatanisho{attachment} katika kadi {card}",
|
||||
"{user} has added the attachment {attachment} to card {card}" : "{user} ameongeza kiambatanisho {attachment} katika kadi {card}",
|
||||
"You have updated the attachment {attachment} on card {card}" : "Umesasisha kiambatanisho {attachment} katika kadi {card}",
|
||||
"{user} has updated the attachment {attachment} on card {card}" : "{user}amesasisha kiambatanisho {attachment}katika kadi {card}",
|
||||
"You have deleted the attachment {attachment} from card {card}" : "Umefuta kiambatanisho {attachment}kutoka kadi {card}",
|
||||
"{user} has deleted the attachment {attachment} from card {card}" : "{user} amefuta kiambatanisho {attachment}kutoka kadi {card}",
|
||||
"You have restored the attachment {attachment} to card {card}" : "Umehifadhi kiambatanisho {attachment} katika kadi {card}",
|
||||
"{user} has restored the attachment {attachment} to card {card}" : "{user}amehifadhi kiambatanisho {attachment} katika kadi {card}",
|
||||
"You have commented on card {card}" : "Umetoa maoni kwa kadi{card}",
|
||||
"{user} has commented on card {card}" : "{user}ametoa maoni kwa kadi {card}",
|
||||
"Deck" : "Deki",
|
||||
"Changes in the <strong>Deck app</strong>" : "Mabadiliko katika 1 app ya deki 1",
|
||||
"A <strong>board, list or card</strong> was changed" : "1 bodi, orodha au kadi 1 ilibadilishwa",
|
||||
"A <strong>comment</strong> was created on a card" : "1 maoni 1 yalitengenezwa katika kadi",
|
||||
"A <strong>card description</strong> has been changed" : "1 maelezo ya kadi 1 yamebadilika",
|
||||
"The file was uploaded" : "Faili lilipakiwa",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Faili lililopakiwa linazidi kiwango cha juu cha ukubwa wa faili linalielekea katika php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Faili iliyopakiliwa imezidi kiwango cha ukubwa wa faili iliyoelekezwa maalum katika fomu ya HTML",
|
||||
"The file was only partially uploaded" : "Faili lilipakiwa kwa sehemu ndogo tu",
|
||||
"No file was uploaded" : "Hakuna faili lililopakiwa",
|
||||
"Missing a temporary folder" : "Imekosa faili la muda",
|
||||
"Could not write file to disk" : "Haikuweza kuandika faili kwenye disk",
|
||||
"A PHP extension stopped the file upload" : "Uongezaji wa PHP umesimamisha upakiaji wa faili",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Hakuna faili lililopakiwa au faili lilizidi kiwango cha juu cha %s",
|
||||
"Invalid file type. Only JSON files are allowed." : "Aina ya faili si halisi. Mafaili ya JSON tu yanaruhusiwa",
|
||||
"Invalid JSON data" : "Data za JSON si halisi",
|
||||
"Failed to import board" : "Imeshindwa kuagiza bodi",
|
||||
"Cards due today" : "Kadi zitalipwa leo",
|
||||
"Cards due tomorrow" : "Kadi zitalipwa kesho",
|
||||
"Upcoming cards" : "Kadi zinazofuata",
|
||||
"Load more" : "Pakia zaidi",
|
||||
"Welcome to Nextcloud Deck!" : "Karibu katika deki ya Nextcloud",
|
||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kadi \"%s\" katika \"%s\" imekabithiwa kwako na %s",
|
||||
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} amekabithi kadi {deck-card}juu ya {deck-board} kwako",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Kadi \"%s\" katika \"%s\" imefikia tarehe yake ya mwisho",
|
||||
"The card {deck-card} on {deck-board} has reached its due date." : "Kadi {deck-card}katika {deck-board}imefikia tarehe yake ya mwisho",
|
||||
"%s has mentioned you in a comment on \"%s\"." : "%s amekutaja kwenye maoni katika \"%s\"",
|
||||
"{user} has mentioned you in a comment on {deck-card}." : "{user} amekutaja katika maoni katika {deck-card}",
|
||||
"The board \"%s\" has been shared with you by %s." : "Bodi \"%s imekushirikisha %s",
|
||||
"{user} has shared {deck-board} with you." : "{user} ameshirikisha {deck-board} kwako",
|
||||
"Deck board" : "Bodi ya deck",
|
||||
"Owned by %1$s" : "Inamilikiwa na %1$s",
|
||||
"Deck boards, cards and comments" : "Bodi za deki, kadi na maoni",
|
||||
"From %1$s, in %2$s/%3$s, owned by %4$s" : "Kutoka %1$skatika%2$s/%3$s inayomilikiwa na %4$s",
|
||||
"Create a new deck card" : "Kadi mpya ya deki imetengenezwa",
|
||||
"Card comments" : "Maoni ya kadi",
|
||||
"%s on %s" : "%sjuu ya %s",
|
||||
"Deck boards and cards" : "Bodi za deki na kadi",
|
||||
"No data was provided to create an attachment." : "Hakuna data iliyotolewa kutengeneza kiambatanisho",
|
||||
"Finished" : "Imemalizika",
|
||||
"To review" : "Kuangalia",
|
||||
"Action needed" : "Matendo yanahitajika",
|
||||
"Later" : "Baadaye",
|
||||
"copy" : "Nakili",
|
||||
"Read more inside" : "Soma ndani zaidi",
|
||||
"Custom lists - click to rename!" : "Orodha za wateja-bonyeza kuandika jina upya",
|
||||
"To Do" : "Kufanya",
|
||||
"In Progress" : "Katika mwendelezo",
|
||||
"Done" : "Imefanyika",
|
||||
"1. Open to learn more about boards and cards" : "1. Fungua kujifunza zaidi kuhusu bodi na kadi",
|
||||
"2. Drag cards left and right, up and down" : "2. Buruza kadi kushoto na kulia, juu na chini",
|
||||
"3. Apply rich formatting and link content" : "3. Omba uumbizaji kamilifu na kiungo ",
|
||||
"4. Share, comment and collaborate!" : "4. Shirikisha, toa maoni na shirikiana",
|
||||
"Create your first card!" : "Tengeneza kadi yako ya kwanza",
|
||||
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Maoni haya yana vibambo zaidi ya %s\nVimeongezwa kama kiambatanisho kwenye kadi na jina%s\nInapatikana katika URL%s",
|
||||
"Card not found" : "Kadi haipatikani",
|
||||
"Path is already shared with this card" : "Njia tayari imeshirikishwa na kadi hii",
|
||||
"Invalid date, date format must be YYYY-MM-DD" : "Tarehe batili, umbizo la tarehe lazima liwe YYYY-MM-DD",
|
||||
"Personal planning and team project organization" : "Mpango wa kibinafsi na mradi wa timu ya shirika",
|
||||
"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 ni chombo cha mtindo wa shirika cha kanban kilicholenga katika mpango binafsi na mradi wa shirika kwa timu zilizounganishwa na Nextcloud.\n\n\n-📥Ongeza kazi zako kwenye kadi na zipange katika mpangilio\n-📄Andika chini nukuu za nyongeza katika alama ya chini\n-🔖 Wekw lebo kwa shirika bora zaidi\n- 👥 Shirikisha timu yako, marafiki au familia\n- 📎 Ambatanisha faili na uzipachike katika maelezo yako ya alama\n- 💬 Jadiliana na timu yako kwa kutumia maoni\n- ⚡ Fuatilia mabadiliko katika mtiririko wa shughuli\n- 🚀 Panga mradi wako",
|
||||
"Add board" : "Ongeza bodi",
|
||||
"Card details" : "Maeleza ya kadi",
|
||||
"Select the board to link to a project" : "Chagua bodi ya kuunga kwenye mradi",
|
||||
"Search by board title" : "Chagua bodi kwa kichwa cha habari",
|
||||
"Select board" : "Chagua bodi",
|
||||
"Move/copy card" : "Ondoa/nakili kadi",
|
||||
"Select a board" : "Chagua bodi",
|
||||
"No lists available" : "Hakuna orodha inayopatikana",
|
||||
"Select a list" : "Chagua orodha",
|
||||
"Move card" : "Ondoa kadi",
|
||||
"Copy card" : "Nakili kadi",
|
||||
"Select the card to link to a project" : "Chagua kadi kuunganisha na mradi",
|
||||
"Link to card" : "Unga kwenye kadi",
|
||||
"Select a card" : "Chagua kadi",
|
||||
"Cancel" : "Cancel",
|
||||
"This board is read only" : "Bodi hii inasomwa tu",
|
||||
"Drop your files to upload" : "Dondosha mafaili yako kupakia",
|
||||
"File already exists" : "Faili lipo tayari",
|
||||
"A file with the name {filename} already exists." : "Faili lenye jina {filename}limetokea tayari",
|
||||
"Do you want to overwrite it?" : "Unahitaji kulibatilisha?",
|
||||
"Overwrite file" : "Batilisha faili",
|
||||
"Keep existing file" : "Weka faili liendelee kuwepo",
|
||||
"Add card" : "Ongeza kadi",
|
||||
"Archived cards" : "Kadi iliyohifadhiwa",
|
||||
"Add list" : "Ongeza orodha",
|
||||
"List name" : "Orodhesha majina",
|
||||
"Active filters" : "Vichujio vinavyotumika",
|
||||
"Apply filter" : "Tumia kichujio",
|
||||
"Filter by tag" : "Chuja kwa lebo ",
|
||||
"Filter by assigned user" : "Chuja kulingana na mtumiaji aleyekabidhiwa",
|
||||
"Unassigned" : "Hakukabidhiwa",
|
||||
"Filter by status" : "Chuja kwa wadhifa",
|
||||
"Open and completed" : "Iliyofunguliwa na kukamilika",
|
||||
"Open" : "Fungua",
|
||||
"Completed" : "Kamilika",
|
||||
"Filter by due date" : "Chuja kwa tarehe ya mwisho",
|
||||
"Overdue" : "Imepitwa na wakati",
|
||||
"Next 24 hours" : "Masaa 24 yajayo",
|
||||
"Next 7 days" : "Siku 7 zijazo",
|
||||
"Next 30 days" : "Siku 30 zijazo",
|
||||
"No due date" : "Hakuna tarehe ya mwisho",
|
||||
"Clear filter" : "Futa kichujio",
|
||||
"View Modes" : "Njia za kutazama",
|
||||
"Toggle View Modes" : "Geuza njia za kutazama",
|
||||
"Hide archived cards" : "Ficha kadi zilizohifadhiwa",
|
||||
"Show archived cards" : "Onesha kadi zilizohifadhiwa",
|
||||
"Toggle compact mode" : "Geuza hali ya makubaliano",
|
||||
"Hide card cover images" : "Ficha picha ya jalada la kadi",
|
||||
"Show card cover images" : "Onesha picha ya jalada la kadi",
|
||||
"Open details" : "Fungua maelezo",
|
||||
"Details" : "Maelezo ya kina",
|
||||
"Currently present people" : "Watu wa sasa hivi",
|
||||
"Loading board" : "Bodi inapakia",
|
||||
"Board not found" : "Bodi haipatikani",
|
||||
"Create a new list to add cards to this board" : "Tengeneza orodha mpya kuongeza kadi kwenye bodi hii",
|
||||
"Sharing" : "inashirikisha",
|
||||
"Tags" : "Maoni",
|
||||
"Deleted items" : "Vifungu vilivyofutwa",
|
||||
"Activity" : "Shughuli",
|
||||
"Deleted lists" : "Orodha zilizofutwa",
|
||||
"Undo" : "Tendua",
|
||||
"Deleted cards" : "Kadi zilizifutwa",
|
||||
"Failed to create share with {displayName}" : "Imeshindwa kutengeneza ushiriki na {displayName}",
|
||||
"Are you sure you want to transfer the board {title} to {user}?" : "Una uhakika unahutaji kuhamisha bodi {title} kwenda {user}",
|
||||
"Transfer the board." : "Hamisha bodi",
|
||||
"Transfer" : "Hamisha",
|
||||
"The board has been transferred to {user}" : "Bodi imehamishwa kwenda {user}",
|
||||
"Failed to transfer the board to {user}" : "Imeshindwa kuhamisha bodi kwenda {user}",
|
||||
"Share board with a user, group or team …" : "Shirikisha bodi na watumiaji, kundi au timu",
|
||||
"Searching for users, groups and teams …" : "Inatafuta watumiaji, vikundi na timu",
|
||||
"No participants found" : "Hakuna mshiriki aliyepatikana",
|
||||
"Board owner" : "Mmiliki wa bodi",
|
||||
"(Group)" : "(Kundi)",
|
||||
"(Team)" : "(Timu)",
|
||||
"Can edit" : "Inaweza kuhariri",
|
||||
"Can share" : "Inaweza kushiikisha",
|
||||
"Can manage" : "Inaweza kusimamia",
|
||||
"Owner" : "Mmiliki",
|
||||
"Delete" : "Futa",
|
||||
"List deleted" : "Orodha imefutwa",
|
||||
"Edit list title" : "Hariri kichwa cha orodha",
|
||||
"Archive all cards" : "Hifadhi kadi zote",
|
||||
"Unarchive all cards" : "Usihifadhi kadi zote",
|
||||
"Delete list" : "Futa orodha",
|
||||
"Archive all cards in this list" : "Hifadhi kadi zote katika orodha hii",
|
||||
"Unarchive all cards in this list" : "Usihifadhi kadi zote katika orodha hii",
|
||||
"Add a new card" : "Ongeza kadi mpya",
|
||||
"Card name" : "Jina la kadi",
|
||||
"title and color value must be provided" : "Kichwa cha habari na thamani ya rangi lazima igawiwe",
|
||||
"Edit" : "Hariri",
|
||||
"Add a new tag" : "Ongeza maoni mapya",
|
||||
"Board name" : "Jina la bodi",
|
||||
"Members" : "Wanachama",
|
||||
"Assign to users/groups/team" : "Kabidhi kwa watumiaji/makundi/timu",
|
||||
"Assign a user to this card…" : "Mkabithi mtumiaji kwa kadi hii",
|
||||
"Select a user to assign to this card…" : "Chagua mtumiaji wa kumkabithi kwa kadi hii",
|
||||
"File to share" : "Faili la kushirikisha",
|
||||
"Invalid path selected" : "Njia iliyochaguliwa si halali",
|
||||
"Upload new files" : "Pakia mafaili mapya",
|
||||
"Share from Files" : "Shirikisha kutoka katika mafaili",
|
||||
"Pending share" : "Ushirikishaji unasubiri",
|
||||
"Add this attachment" : "Ongeza kiambatanisho hiki",
|
||||
"Show in Files" : "Onesha katika mafaili",
|
||||
"Download" : "Pakua",
|
||||
"Remove attachment" : "Ondoa kiambatanisho",
|
||||
"Delete Attachment" : "Futa kiambatanisho",
|
||||
"Restore Attachment" : "Hifadhi kiambatanisho upya",
|
||||
"Modified" : "Boresha",
|
||||
"Created" : "Imetengenezwa",
|
||||
"The title cannot be empty." : "Kichwa cha habari hakiwezi kuwa tupu",
|
||||
"Open in sidebar view" : "Fungua katika mwonekano wa utepe",
|
||||
"Open in bigger view" : "Fungua katika mwonekeno mkubwa",
|
||||
"Attachments" : "Viambatanisho",
|
||||
"Comments" : "Maoni",
|
||||
"Failed to load comments" : "Imeshindwa kupakia maoni",
|
||||
"No comments yet. Begin the discussion!" : "Hakuna maoni bado. Anza mjadala",
|
||||
"The comment cannot be empty." : "Maoni hayawezi kuwa tupu",
|
||||
"The comment cannot be longer than 1000 characters." : "Maoni hayawezi kuwa marefu zaidi ya vibambo 1000",
|
||||
"Save" : "Hifadhi",
|
||||
"Created:" : "Imetengenezwa:",
|
||||
"In reply to" : "Kwa kujibu",
|
||||
"Cancel reply" : "Ghairi jibu",
|
||||
"Reply" : "Jibu",
|
||||
"Update" : "Sasisha",
|
||||
"Write a description …" : "Andika maelezo",
|
||||
"Description" : "Maelezo",
|
||||
"(Unsaved)" : "(Isiyihifadhiwa)",
|
||||
"(Saving…)" : "(Uhifadhi....)",
|
||||
"Formatting help" : "Uasidizi wa uambizaji",
|
||||
"Edit description" : "Hariri maelezo",
|
||||
"View description" : "Tazama maelezo",
|
||||
"Add Attachment" : "Ongeza kiambatanisho",
|
||||
"Choose attachment" : "Chagua kiambatanisho",
|
||||
"Select Date" : "Chagua tarehe",
|
||||
"Later today – {timeLocale}" : "Baadaye leo-{timeLocale}",
|
||||
"Set due date for later today" : "Pangilia tarehe ya mwisho baadaye leo",
|
||||
"Tomorrow – {timeLocale}" : "Kesho-{timeLocale}",
|
||||
"Set due date for tomorrow" : "Pangilia tarehe ya mwisho kwa kesho",
|
||||
"This weekend – {timeLocale}" : "Wikendi-{timeLocale}",
|
||||
"Set due date for this weekend" : "Pangilia tarehe ya mwisho kwa wiki hii",
|
||||
"Next week – {timeLocale}" : "Wiki ijayo-{timeLocale}",
|
||||
"Set due date for next week" : "Pangilia tarehe ya mwisho kwa wiki ijayo",
|
||||
"Assign a due date to this card…" : "Kabidhi tarehe ya mwisho katika kadi hii",
|
||||
"Set a due date" : "Pangilia tarehe ya mwisho",
|
||||
"Add due date" : "Ongeza tarehe ya mwisho",
|
||||
"Choose a date" : "Chagua tarehe",
|
||||
"Remove due date" : "Ondoa tarehe ya mwisho",
|
||||
"Mark as done" : "Weka alama kama iliyotendeka",
|
||||
"Due at:" : "Mwisho katika",
|
||||
"Not done" : "Haijatendeka",
|
||||
"Unarchive card" : "Kadi ambayo haijahifadhiwa",
|
||||
"Archive card" : "Hifadhi kadi",
|
||||
"Assign a tag to this card…" : "Kabidhi maoni katika kadi hii",
|
||||
"Select or create a tag…" : "Chagua au tengeneza maoni",
|
||||
"Create a new tag:" : "Tengeneza oni jipya",
|
||||
"(group)" : "(kundi)",
|
||||
"{count} comments, {unread} unread" : "{count}maoni, {unread}hayajasomwa",
|
||||
"Todo items" : "Vitu vya kufanya",
|
||||
"Edit card title" : "Hariri kichwa cha habari cha kadi",
|
||||
"Open link" : "Fungua kiungio",
|
||||
"Card deleted" : "Kadi imefutwa",
|
||||
"Edit title" : "Hariri kichwa cha habari",
|
||||
"Assign to me" : "Kabidhi kwangu",
|
||||
"Unassign myself" : "Sijajikabidhi mwenyewe",
|
||||
"Mark as not done" : "Weka alama kama haijatendeka",
|
||||
"Delete card" : "Futa kadi",
|
||||
"seconds ago" : "sukunde zilizopita",
|
||||
"Keyboard shortcuts" : "Mikato ya keyboard",
|
||||
"Boost your productivity using Deck with keyboard shortcuts." : "Ongeza uzalishaji wako kwa kutumia deck na mikatato ya kibodi",
|
||||
"Board actions" : "Matendo ya bodi",
|
||||
"Keyboard shortcut" : "Mikato ya kibodi",
|
||||
"Action" : "Vitendo",
|
||||
"Shift" : "Hamisha",
|
||||
"Scroll" : "Tembeza",
|
||||
"Scroll sideways" : "Tembeza pembeni",
|
||||
"Navigate between cards" : "Nenda kati ya kadi",
|
||||
"Esc" : "Toroka",
|
||||
"Close card details" : "Funga maelezo ya kadi",
|
||||
"Ctrl" : "Dhibiti",
|
||||
"Search" : "Tafuta",
|
||||
"Show card filters" : "Onesha vichungi vya kadi",
|
||||
"Clear card filters" : "Futa vichungi vya kadi",
|
||||
"Show help dialog" : "Onesha mazungumzo ya msaada",
|
||||
"Card actions" : "Matendo ya kadi",
|
||||
"The following actions can be triggered on the currently highlighted card" : "Matendo yafuatayo yanaweza kuanzishwa kwenye kadi iliyoangaziwa kwa sasa",
|
||||
"Enter" : "Ingiza",
|
||||
"Space" : "Nafasi",
|
||||
"Open card details" : "Fungua maelezo ya kadi",
|
||||
"Edit the card title" : "Hariri kichwa cha habari cha kadi",
|
||||
"Assign yourself to the current card" : "Jisajili kwenye kadi ya sasa",
|
||||
"Archive/unarchive the current card" : "Hifadhi/ondoa kadi ya sasa kwenye kumbukumbu",
|
||||
"Mark card as completed/not completed" : "Weka alama kadi kama iliyokamilika/haikukamilika",
|
||||
"Open card menu" : "Fungua menyu ya kadi",
|
||||
"All boards" : "Bodi zote",
|
||||
"Archived boards" : "Bodi zilizohifadhiwa",
|
||||
"Shared with you" : "Imeshirikiwa na wewe",
|
||||
"Deck settings" : "Mipangilio ya deck",
|
||||
"Use bigger card view" : "Tumia mwonekano mkubwa wa kadi",
|
||||
"Show card ID badge" : "Onesha beji ya kitambulisho cha kadi",
|
||||
"Show boards in calendar/tasks" : "Onesha bodi katika kalenda/shughuli",
|
||||
"Limit board creation to some groups" : "Zuia matengenezo ya bodi kwenye makundi kadhaa",
|
||||
"Users outside of those groups will not be able to create their own boards, but will still be able to work on boards that have been shared with them." : "Watumiaji nje ya makundi hayo hawataweza kutengeneza bodi zao wenyewe, lakini bado wataweza kufanya kazi juu ya bodi ambazo zimeshirikishwa na wao.",
|
||||
"Cancel edit" : "Sistisha uhariri",
|
||||
"Save board" : "Hifadhi bodi",
|
||||
"Board {0} deleted" : "Bodi {0}futa",
|
||||
"All cards" : "Kadi zote",
|
||||
"Only assigned cards" : "Kadi zilizosajiliwa tu",
|
||||
"No reminder" : "Hakuna ukumbushaji",
|
||||
"An error occurred" : "Hitilafu imetokea",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Una uhakika unataka kufuta bodi {title}? Hii itafuta data zote za bodi ikijumuisha kadi zilizohifadhiwa",
|
||||
"Delete the board?" : "Futa bodi?",
|
||||
"Exporting board..." : "Safirisha bodi...",
|
||||
"Board details" : "Maelezo ya bodi",
|
||||
"Edit board" : "Hariri bodi",
|
||||
"Clone board" : "Zalisha bodi",
|
||||
"Unarchive board" : "Bodi isiyohifadhiwa",
|
||||
"Archive board" : "Hifadhi bodi",
|
||||
"Export board" : "Safirisha bodi",
|
||||
"Turn on due date reminders" : "Washa ukumbushaji wa tarehe kikomo",
|
||||
"Turn off due date reminders" : "Zima ukumbushaji wa tarehe kikomo",
|
||||
"Due date reminders" : "Ukumbushaji wa tarehe kikomo",
|
||||
"Assigned cards" : "Kadi zilizokabidhiwa",
|
||||
"No notifications" : "Hakuna taarifa",
|
||||
"Delete board" : "Futa bodi",
|
||||
"Importing board..." : "Inaingiza bodi....",
|
||||
"Board imported successfully" : "Bodi imeingizwa kikamilifu",
|
||||
"Import board" : "Ingiza bodi",
|
||||
"Clone {boardTitle}" : "Zalisha {boardTitle}",
|
||||
"Clone cards" : "Zalisha kadi",
|
||||
"Clone assignments" : "Zalisha kazi",
|
||||
"Clone labels" : "Zalisha lebo",
|
||||
"Clone due dates" : "Zalisha tarehe kikomo",
|
||||
"Advanced options" : "Chaguzi za juu",
|
||||
"Move all cards to the first list" : "Hamishia kadi zote kwenye orodha ya kwanza",
|
||||
"Restore archived cards" : "Hifadhi upya kadi zilizohifadhiwa",
|
||||
"Clone" : "Zalisha",
|
||||
"Export {boardTitle}" : "Agiza {boardTitle}",
|
||||
"Export as JSON" : "Safirisha kama JSON",
|
||||
"Export as CSV" : "Safirisha kama CSV",
|
||||
"Note: Only the JSON format is supported for importing back into the Deck app." : "Nukuu: Umbizo la JSON pekee ndilo linalotumika kuleta tena kwenye app ya Deck",
|
||||
"Export" : "Safirisha",
|
||||
"Loading filtered view" : "Inapakia mwonekano uliochujwa",
|
||||
"Today" : "Leo",
|
||||
"Tomorrow" : "Kesho",
|
||||
"No due" : "Hakuna ukomo",
|
||||
"Search for {searchQuery} in all boards" : "Tafuta kwa {searchQuery}katika bodi zote",
|
||||
"No results found" : "Hakuna matokeo yaliyopatikana",
|
||||
"Deck board {name}\n* Last modified on {lastMod}" : "Bodi ya deki{name}\nMaboresho ya mwisho katika {lastMod}",
|
||||
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "*Imetengenezwa kwenye {created}\nImeboreshwa katika {lastMod}\n{nbAttachments}viambatanisho\n{nbComments}maoni",
|
||||
"{nbCards} cards" : "{nbCards}kadi",
|
||||
"Due on {date}" : "Ukomo katika {date}",
|
||||
"{stack} in {board}" : "{stack} katika {board}",
|
||||
"Click to expand description" : "Bonyeza kupanua maelezo",
|
||||
"Click to expand comment" : "Bonyeza kupanua maoni",
|
||||
"Create card" : "Tengeneza kadi",
|
||||
"Create a new card" : "Tengeneza kadi mpya ",
|
||||
"Card title" : "Kichwa cha habari cha kadi",
|
||||
"Creating the new card …" : "Inatengeneza kadi mpya",
|
||||
"Card \"{card}\" was added to \"{board}\"" : "Kadi \"{card}\" iliongezwa katika \"{board}\"",
|
||||
"Open card" : "Fungua kadi",
|
||||
"Close" : "Funga",
|
||||
"No upcoming cards" : "Hakuna kadi zijazo",
|
||||
"upcoming cards today" : "Kadi zijazo leo",
|
||||
"upcoming cards tomorrow" : "Kadi zijazo kesho",
|
||||
"upcoming cards" : "Kadi zijazo",
|
||||
"New card" : "Kadi mpya",
|
||||
"Link to a board" : "Unga kwenye bodi",
|
||||
"Link to a card" : "Unga kwenye kadi",
|
||||
"Create a card" : "Tengeneza kadi",
|
||||
"Message from {author} in {conversationName}" : "Ujumbe kutoka {author}katika{conversationName}",
|
||||
"Something went wrong" : "Kitu fulani kimeenda vibaya",
|
||||
"Failed to upload {name}" : "Imeshindwa kupakia {name}",
|
||||
"Maximum file size of {size} exceeded" : "Kiwango cha juu cha ukubwa wa faili {size}kimezidi",
|
||||
"Assigned users" : "Watumiaji waliokabidhiwa",
|
||||
"Due date" : "Tarehe ya ukomo",
|
||||
"Error creating the share" : "Hitilafu katika kutengeneza ushiriki",
|
||||
"Share with a Deck card" : "Shirikisha na kadi za deck",
|
||||
"Share {file} with a Deck card" : "Shirikisha {file}na kadi za deck",
|
||||
"Share" : "Shirikisha",
|
||||
"Personal" : "Binafsi",
|
||||
"To do" : "Ya kutenda",
|
||||
"Doing" : "Utendaji",
|
||||
"Example Task 3" : "Kazi ya mfano 3",
|
||||
"Example Task 2" : "Kazi ya mfano 2",
|
||||
"Example Task 1" : "Kazi ya mfano 1",
|
||||
"Move card to another board" : "Hamisha kadi kwenye bodi nyingine"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
415
l10n/sw.json
415
l10n/sw.json
@@ -1,415 +0,0 @@
|
||||
{ "translations": {
|
||||
"You have created a new board {board}" : "Umetengeneza bodi mpya {board}",
|
||||
"{user} has created a new board {board}" : "{user} ametengeneza bodi mpya {board}",
|
||||
"You have deleted the board {board}" : "Umefuta bodi {board}",
|
||||
"{user} has deleted the board {board}" : "{user} amefuta bodi {board}",
|
||||
"You have restored the board {board}" : "Umefifadhi bodi upya {board}",
|
||||
"{user} has restored the board {board}" : "{user} amehifadhi bodi upya {board}",
|
||||
"You have shared the board {board} with {acl}" : "Umeshirikisha bodi{board} kwa {acl}",
|
||||
"{user} has shared the board {board} with {acl}" : "{user} ameshirikisha bodi {board} kwa {acl}",
|
||||
"You have removed {acl} from the board {board}" : "Umeondoa {acl} kutoka katika bodi {board}",
|
||||
"{user} has removed {acl} from the board {board}" : "{user}ameondoa {acl}kutoka katika bodi{board}",
|
||||
"You have renamed the board {before} to {board}" : "Umeita jina jipya bodi {before} kwa {board}",
|
||||
"{user} has renamed the board {before} to {board}" : "{user} ameita jina jipya bodi {before} kwa {board}",
|
||||
"You have archived the board {board}" : "Umefikia malengo ya bodi {board}",
|
||||
"{user} has archived the board {before}" : "{user} amefikia malengo ya bodi {before}",
|
||||
"You have unarchived the board {board}" : "Hujafikia malengo ya bodi {board}",
|
||||
"{user} has unarchived the board {before}" : "{user}hajafikia malengo ya bodi {before}",
|
||||
"You have created a new list {stack} on board {board}" : "Umetengeneza orodha mpya {stack} katika bodi {board}",
|
||||
"{user} has created a new list {stack} on board {board}" : "{user} ametengeneza orodha mpya {stack} katika bodi {board}",
|
||||
"You have renamed list {before} to {stack} on board {board}" : "Umeiita orodha jina jipya {before} kwa {stack} katika bodi {board}",
|
||||
"{user} has renamed list {before} to {stack} on board {board}" : "{user}ameiita orodha jina jipya {before}kwa {stack} katika bodi {board}",
|
||||
"You have deleted list {stack} on board {board}" : "Umefuta orodha {stack} katika bodi {board}",
|
||||
"{user} has deleted list {stack} on board {board}" : "{user} amefuta orodha {stack} katika bodi {board}",
|
||||
"You have created card {card} in list {stack} on board {board}" : "Umetengeneza kadi {card} katka orodha {stack} juu ya bodi {board}",
|
||||
"{user} has created card {card} in list {stack} on board {board}" : "{user} ametengeneza kaadi {card} katika orodha {stack} juu ya bodi {board}",
|
||||
"You have deleted card {card} in list {stack} on board {board}" : "Umefuta kadi {card}katika orodha {stack} kwenye bodi {board}",
|
||||
"{user} has deleted card {card} in list {stack} on board {board}" : "{user} amefuta kadi {card} katika orodha {stack} juu ya bodi {board}",
|
||||
"You have renamed the card {before} to {card}" : "Umeiita kadi jina jipya {before}kwa {card} ",
|
||||
"{user} has renamed the card {before} to {card}" : " {user}ameiita kadi jina jipya {before} hadi {card} ",
|
||||
"You have added a description to card {card} in list {stack} on board {board}" : "Umeongeza maelezo katika kadi {card}katika orodha {stack}juu ya bodi {board}",
|
||||
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} ameongeza maelezo katika kadi {card}katika orodha {stack} juu ya bodi {board}",
|
||||
"You have updated the description of card {card} in list {stack} on board {board}" : "Umesasisha maelezo ya kadi{card} katika orodha {stack}juu ya bodi {board}",
|
||||
"{user} has updated the description of the card {card} in list {stack} on board {board}" : "{user} amesasisha maelezo ya kadi{card} katika orodha {stack}juu ya bodi {board}",
|
||||
"You have archived card {card} in list {stack} on board {board}" : "Umefikia malengo ya kadi {card} katika orodha {stack}juu ya bodi{board}",
|
||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user}amefikia malengo ya kadi {card}katika orodha{stack}juu ya bodi{board}",
|
||||
"You have unarchived card {card} in list {stack} on board {board}" : "Una kadi ambayo haijafikia malengo {card} katika orodha {stack} juu ya bodi {board}",
|
||||
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user}ana kadi ambayo haijafikia malengo {card} katika orodha{stack}juu ya bodi {board}",
|
||||
"You have marked the card {card} as done in list {stack} on board {board}" : "Una kadi iliyotiwa alama {card}kama orodha iliyofanyika {stack}juu ya bodi {board}",
|
||||
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} ana kadi iliyotiwa alama{card} kama orodha iliyofanyika {stack}juu ya bodi {board}",
|
||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "Umeitia alama kadi {card}kama orodha ambayo haikufanyika{stack} juu ya bodi {board}",
|
||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} ameitia alama kadi{card} kama orodha ambayo haikufanyika{stack} juu ua bodi {board}",
|
||||
"You have removed the due date of card {card}" : "Umeondoa tarehe ya mwisho ya kadi{card}",
|
||||
"{user} has removed the due date of card {card}" : "{user}ameondoa tarehe ya mwisho ya kadi {card}",
|
||||
"You have set the due date of card {card} to {after}" : "Umepangilia tarehe ya mwisho ya kadi {card}hadi{after}",
|
||||
"{user} has set the due date of card {card} to {after}" : "{user} amepangilia tarehe ya mwisho ya kadi{card} hadi {after}",
|
||||
"You have updated the due date of card {card} to {after}" : "Umesasisha tarehe ya mwisho ya kadi {card} hadi {after}",
|
||||
"{user} has updated the due date of card {card} to {after}" : "{user} amesasisha tarehe ya mwisho ya kadi{card} hadi {after}",
|
||||
"You have added the tag {label} to card {card} in list {stack} on board {board}" : "Umeongeza lebo{label}kwenye kadi{card}katika orodha{stack} juu ya bodi {board}",
|
||||
"{user} has added the tag {label} to card {card} in list {stack} on board {board}" : "{user}ameongeza lebo{label} kwenye kadi{card} katika orodha {stack}juu ya bodi {board}",
|
||||
"You have removed the tag {label} from card {card} in list {stack} on board {board}" : "Umeondoa lebo {label}kutoka katika kadi{card} katika orodha {stack}juu ya bodi {board}",
|
||||
"{user} has removed the tag {label} from card {card} in list {stack} on board {board}" : "{user}ameondoa lebo{label}kutoka katika kadi{card}katika orodha{stack}juu ya bodi{board}",
|
||||
"You have assigned {assigneduser} to card {card} on board {board}" : "Umekabidhi {assigneduser}kwenda katika kadi {card}juu ya bodi{board}",
|
||||
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} amekabidhi {assigneduser}kwenye kadi{card} juu ya bodi {board}",
|
||||
"You have unassigned {assigneduser} from card {card} on board {board}" : "Umeondoa ukabithi {assigneduser}kutoka katika kadi{card}juu ya bodi {board}",
|
||||
"{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user}ameondoa ukabidhi wa {assigneduser}kutoka katika kadi {card}juu ya bodi {board}",
|
||||
"You have moved the card {card} from list {stackBefore} to {stack}" : "Umeondoa kadi{card}kutoka katika orodha {stackBefore}mpaka{stack}",
|
||||
"{user} has moved the card {card} from list {stackBefore} to {stack}" : "{user}ameondoa kadi {card} kutoka katika orodha {stackBefore}hadi {stack}",
|
||||
"You have added the attachment {attachment} to card {card}" : "Umeongeza kiambatanisho{attachment} katika kadi {card}",
|
||||
"{user} has added the attachment {attachment} to card {card}" : "{user} ameongeza kiambatanisho {attachment} katika kadi {card}",
|
||||
"You have updated the attachment {attachment} on card {card}" : "Umesasisha kiambatanisho {attachment} katika kadi {card}",
|
||||
"{user} has updated the attachment {attachment} on card {card}" : "{user}amesasisha kiambatanisho {attachment}katika kadi {card}",
|
||||
"You have deleted the attachment {attachment} from card {card}" : "Umefuta kiambatanisho {attachment}kutoka kadi {card}",
|
||||
"{user} has deleted the attachment {attachment} from card {card}" : "{user} amefuta kiambatanisho {attachment}kutoka kadi {card}",
|
||||
"You have restored the attachment {attachment} to card {card}" : "Umehifadhi kiambatanisho {attachment} katika kadi {card}",
|
||||
"{user} has restored the attachment {attachment} to card {card}" : "{user}amehifadhi kiambatanisho {attachment} katika kadi {card}",
|
||||
"You have commented on card {card}" : "Umetoa maoni kwa kadi{card}",
|
||||
"{user} has commented on card {card}" : "{user}ametoa maoni kwa kadi {card}",
|
||||
"Deck" : "Deki",
|
||||
"Changes in the <strong>Deck app</strong>" : "Mabadiliko katika 1 app ya deki 1",
|
||||
"A <strong>board, list or card</strong> was changed" : "1 bodi, orodha au kadi 1 ilibadilishwa",
|
||||
"A <strong>comment</strong> was created on a card" : "1 maoni 1 yalitengenezwa katika kadi",
|
||||
"A <strong>card description</strong> has been changed" : "1 maelezo ya kadi 1 yamebadilika",
|
||||
"The file was uploaded" : "Faili lilipakiwa",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Faili lililopakiwa linazidi kiwango cha juu cha ukubwa wa faili linalielekea katika php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Faili iliyopakiliwa imezidi kiwango cha ukubwa wa faili iliyoelekezwa maalum katika fomu ya HTML",
|
||||
"The file was only partially uploaded" : "Faili lilipakiwa kwa sehemu ndogo tu",
|
||||
"No file was uploaded" : "Hakuna faili lililopakiwa",
|
||||
"Missing a temporary folder" : "Imekosa faili la muda",
|
||||
"Could not write file to disk" : "Haikuweza kuandika faili kwenye disk",
|
||||
"A PHP extension stopped the file upload" : "Uongezaji wa PHP umesimamisha upakiaji wa faili",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Hakuna faili lililopakiwa au faili lilizidi kiwango cha juu cha %s",
|
||||
"Invalid file type. Only JSON files are allowed." : "Aina ya faili si halisi. Mafaili ya JSON tu yanaruhusiwa",
|
||||
"Invalid JSON data" : "Data za JSON si halisi",
|
||||
"Failed to import board" : "Imeshindwa kuagiza bodi",
|
||||
"Cards due today" : "Kadi zitalipwa leo",
|
||||
"Cards due tomorrow" : "Kadi zitalipwa kesho",
|
||||
"Upcoming cards" : "Kadi zinazofuata",
|
||||
"Load more" : "Pakia zaidi",
|
||||
"Welcome to Nextcloud Deck!" : "Karibu katika deki ya Nextcloud",
|
||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kadi \"%s\" katika \"%s\" imekabithiwa kwako na %s",
|
||||
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} amekabithi kadi {deck-card}juu ya {deck-board} kwako",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Kadi \"%s\" katika \"%s\" imefikia tarehe yake ya mwisho",
|
||||
"The card {deck-card} on {deck-board} has reached its due date." : "Kadi {deck-card}katika {deck-board}imefikia tarehe yake ya mwisho",
|
||||
"%s has mentioned you in a comment on \"%s\"." : "%s amekutaja kwenye maoni katika \"%s\"",
|
||||
"{user} has mentioned you in a comment on {deck-card}." : "{user} amekutaja katika maoni katika {deck-card}",
|
||||
"The board \"%s\" has been shared with you by %s." : "Bodi \"%s imekushirikisha %s",
|
||||
"{user} has shared {deck-board} with you." : "{user} ameshirikisha {deck-board} kwako",
|
||||
"Deck board" : "Bodi ya deck",
|
||||
"Owned by %1$s" : "Inamilikiwa na %1$s",
|
||||
"Deck boards, cards and comments" : "Bodi za deki, kadi na maoni",
|
||||
"From %1$s, in %2$s/%3$s, owned by %4$s" : "Kutoka %1$skatika%2$s/%3$s inayomilikiwa na %4$s",
|
||||
"Create a new deck card" : "Kadi mpya ya deki imetengenezwa",
|
||||
"Card comments" : "Maoni ya kadi",
|
||||
"%s on %s" : "%sjuu ya %s",
|
||||
"Deck boards and cards" : "Bodi za deki na kadi",
|
||||
"No data was provided to create an attachment." : "Hakuna data iliyotolewa kutengeneza kiambatanisho",
|
||||
"Finished" : "Imemalizika",
|
||||
"To review" : "Kuangalia",
|
||||
"Action needed" : "Matendo yanahitajika",
|
||||
"Later" : "Baadaye",
|
||||
"copy" : "Nakili",
|
||||
"Read more inside" : "Soma ndani zaidi",
|
||||
"Custom lists - click to rename!" : "Orodha za wateja-bonyeza kuandika jina upya",
|
||||
"To Do" : "Kufanya",
|
||||
"In Progress" : "Katika mwendelezo",
|
||||
"Done" : "Imefanyika",
|
||||
"1. Open to learn more about boards and cards" : "1. Fungua kujifunza zaidi kuhusu bodi na kadi",
|
||||
"2. Drag cards left and right, up and down" : "2. Buruza kadi kushoto na kulia, juu na chini",
|
||||
"3. Apply rich formatting and link content" : "3. Omba uumbizaji kamilifu na kiungo ",
|
||||
"4. Share, comment and collaborate!" : "4. Shirikisha, toa maoni na shirikiana",
|
||||
"Create your first card!" : "Tengeneza kadi yako ya kwanza",
|
||||
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Maoni haya yana vibambo zaidi ya %s\nVimeongezwa kama kiambatanisho kwenye kadi na jina%s\nInapatikana katika URL%s",
|
||||
"Card not found" : "Kadi haipatikani",
|
||||
"Path is already shared with this card" : "Njia tayari imeshirikishwa na kadi hii",
|
||||
"Invalid date, date format must be YYYY-MM-DD" : "Tarehe batili, umbizo la tarehe lazima liwe YYYY-MM-DD",
|
||||
"Personal planning and team project organization" : "Mpango wa kibinafsi na mradi wa timu ya shirika",
|
||||
"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 ni chombo cha mtindo wa shirika cha kanban kilicholenga katika mpango binafsi na mradi wa shirika kwa timu zilizounganishwa na Nextcloud.\n\n\n-📥Ongeza kazi zako kwenye kadi na zipange katika mpangilio\n-📄Andika chini nukuu za nyongeza katika alama ya chini\n-🔖 Wekw lebo kwa shirika bora zaidi\n- 👥 Shirikisha timu yako, marafiki au familia\n- 📎 Ambatanisha faili na uzipachike katika maelezo yako ya alama\n- 💬 Jadiliana na timu yako kwa kutumia maoni\n- ⚡ Fuatilia mabadiliko katika mtiririko wa shughuli\n- 🚀 Panga mradi wako",
|
||||
"Add board" : "Ongeza bodi",
|
||||
"Card details" : "Maeleza ya kadi",
|
||||
"Select the board to link to a project" : "Chagua bodi ya kuunga kwenye mradi",
|
||||
"Search by board title" : "Chagua bodi kwa kichwa cha habari",
|
||||
"Select board" : "Chagua bodi",
|
||||
"Move/copy card" : "Ondoa/nakili kadi",
|
||||
"Select a board" : "Chagua bodi",
|
||||
"No lists available" : "Hakuna orodha inayopatikana",
|
||||
"Select a list" : "Chagua orodha",
|
||||
"Move card" : "Ondoa kadi",
|
||||
"Copy card" : "Nakili kadi",
|
||||
"Select the card to link to a project" : "Chagua kadi kuunganisha na mradi",
|
||||
"Link to card" : "Unga kwenye kadi",
|
||||
"Select a card" : "Chagua kadi",
|
||||
"Cancel" : "Cancel",
|
||||
"This board is read only" : "Bodi hii inasomwa tu",
|
||||
"Drop your files to upload" : "Dondosha mafaili yako kupakia",
|
||||
"File already exists" : "Faili lipo tayari",
|
||||
"A file with the name {filename} already exists." : "Faili lenye jina {filename}limetokea tayari",
|
||||
"Do you want to overwrite it?" : "Unahitaji kulibatilisha?",
|
||||
"Overwrite file" : "Batilisha faili",
|
||||
"Keep existing file" : "Weka faili liendelee kuwepo",
|
||||
"Add card" : "Ongeza kadi",
|
||||
"Archived cards" : "Kadi iliyohifadhiwa",
|
||||
"Add list" : "Ongeza orodha",
|
||||
"List name" : "Orodhesha majina",
|
||||
"Active filters" : "Vichujio vinavyotumika",
|
||||
"Apply filter" : "Tumia kichujio",
|
||||
"Filter by tag" : "Chuja kwa lebo ",
|
||||
"Filter by assigned user" : "Chuja kulingana na mtumiaji aleyekabidhiwa",
|
||||
"Unassigned" : "Hakukabidhiwa",
|
||||
"Filter by status" : "Chuja kwa wadhifa",
|
||||
"Open and completed" : "Iliyofunguliwa na kukamilika",
|
||||
"Open" : "Fungua",
|
||||
"Completed" : "Kamilika",
|
||||
"Filter by due date" : "Chuja kwa tarehe ya mwisho",
|
||||
"Overdue" : "Imepitwa na wakati",
|
||||
"Next 24 hours" : "Masaa 24 yajayo",
|
||||
"Next 7 days" : "Siku 7 zijazo",
|
||||
"Next 30 days" : "Siku 30 zijazo",
|
||||
"No due date" : "Hakuna tarehe ya mwisho",
|
||||
"Clear filter" : "Futa kichujio",
|
||||
"View Modes" : "Njia za kutazama",
|
||||
"Toggle View Modes" : "Geuza njia za kutazama",
|
||||
"Hide archived cards" : "Ficha kadi zilizohifadhiwa",
|
||||
"Show archived cards" : "Onesha kadi zilizohifadhiwa",
|
||||
"Toggle compact mode" : "Geuza hali ya makubaliano",
|
||||
"Hide card cover images" : "Ficha picha ya jalada la kadi",
|
||||
"Show card cover images" : "Onesha picha ya jalada la kadi",
|
||||
"Open details" : "Fungua maelezo",
|
||||
"Details" : "Maelezo ya kina",
|
||||
"Currently present people" : "Watu wa sasa hivi",
|
||||
"Loading board" : "Bodi inapakia",
|
||||
"Board not found" : "Bodi haipatikani",
|
||||
"Create a new list to add cards to this board" : "Tengeneza orodha mpya kuongeza kadi kwenye bodi hii",
|
||||
"Sharing" : "inashirikisha",
|
||||
"Tags" : "Maoni",
|
||||
"Deleted items" : "Vifungu vilivyofutwa",
|
||||
"Activity" : "Shughuli",
|
||||
"Deleted lists" : "Orodha zilizofutwa",
|
||||
"Undo" : "Tendua",
|
||||
"Deleted cards" : "Kadi zilizifutwa",
|
||||
"Failed to create share with {displayName}" : "Imeshindwa kutengeneza ushiriki na {displayName}",
|
||||
"Are you sure you want to transfer the board {title} to {user}?" : "Una uhakika unahutaji kuhamisha bodi {title} kwenda {user}",
|
||||
"Transfer the board." : "Hamisha bodi",
|
||||
"Transfer" : "Hamisha",
|
||||
"The board has been transferred to {user}" : "Bodi imehamishwa kwenda {user}",
|
||||
"Failed to transfer the board to {user}" : "Imeshindwa kuhamisha bodi kwenda {user}",
|
||||
"Share board with a user, group or team …" : "Shirikisha bodi na watumiaji, kundi au timu",
|
||||
"Searching for users, groups and teams …" : "Inatafuta watumiaji, vikundi na timu",
|
||||
"No participants found" : "Hakuna mshiriki aliyepatikana",
|
||||
"Board owner" : "Mmiliki wa bodi",
|
||||
"(Group)" : "(Kundi)",
|
||||
"(Team)" : "(Timu)",
|
||||
"Can edit" : "Inaweza kuhariri",
|
||||
"Can share" : "Inaweza kushiikisha",
|
||||
"Can manage" : "Inaweza kusimamia",
|
||||
"Owner" : "Mmiliki",
|
||||
"Delete" : "Futa",
|
||||
"List deleted" : "Orodha imefutwa",
|
||||
"Edit list title" : "Hariri kichwa cha orodha",
|
||||
"Archive all cards" : "Hifadhi kadi zote",
|
||||
"Unarchive all cards" : "Usihifadhi kadi zote",
|
||||
"Delete list" : "Futa orodha",
|
||||
"Archive all cards in this list" : "Hifadhi kadi zote katika orodha hii",
|
||||
"Unarchive all cards in this list" : "Usihifadhi kadi zote katika orodha hii",
|
||||
"Add a new card" : "Ongeza kadi mpya",
|
||||
"Card name" : "Jina la kadi",
|
||||
"title and color value must be provided" : "Kichwa cha habari na thamani ya rangi lazima igawiwe",
|
||||
"Edit" : "Hariri",
|
||||
"Add a new tag" : "Ongeza maoni mapya",
|
||||
"Board name" : "Jina la bodi",
|
||||
"Members" : "Wanachama",
|
||||
"Assign to users/groups/team" : "Kabidhi kwa watumiaji/makundi/timu",
|
||||
"Assign a user to this card…" : "Mkabithi mtumiaji kwa kadi hii",
|
||||
"Select a user to assign to this card…" : "Chagua mtumiaji wa kumkabithi kwa kadi hii",
|
||||
"File to share" : "Faili la kushirikisha",
|
||||
"Invalid path selected" : "Njia iliyochaguliwa si halali",
|
||||
"Upload new files" : "Pakia mafaili mapya",
|
||||
"Share from Files" : "Shirikisha kutoka katika mafaili",
|
||||
"Pending share" : "Ushirikishaji unasubiri",
|
||||
"Add this attachment" : "Ongeza kiambatanisho hiki",
|
||||
"Show in Files" : "Onesha katika mafaili",
|
||||
"Download" : "Pakua",
|
||||
"Remove attachment" : "Ondoa kiambatanisho",
|
||||
"Delete Attachment" : "Futa kiambatanisho",
|
||||
"Restore Attachment" : "Hifadhi kiambatanisho upya",
|
||||
"Modified" : "Boresha",
|
||||
"Created" : "Imetengenezwa",
|
||||
"The title cannot be empty." : "Kichwa cha habari hakiwezi kuwa tupu",
|
||||
"Open in sidebar view" : "Fungua katika mwonekano wa utepe",
|
||||
"Open in bigger view" : "Fungua katika mwonekeno mkubwa",
|
||||
"Attachments" : "Viambatanisho",
|
||||
"Comments" : "Maoni",
|
||||
"Failed to load comments" : "Imeshindwa kupakia maoni",
|
||||
"No comments yet. Begin the discussion!" : "Hakuna maoni bado. Anza mjadala",
|
||||
"The comment cannot be empty." : "Maoni hayawezi kuwa tupu",
|
||||
"The comment cannot be longer than 1000 characters." : "Maoni hayawezi kuwa marefu zaidi ya vibambo 1000",
|
||||
"Save" : "Hifadhi",
|
||||
"Created:" : "Imetengenezwa:",
|
||||
"In reply to" : "Kwa kujibu",
|
||||
"Cancel reply" : "Ghairi jibu",
|
||||
"Reply" : "Jibu",
|
||||
"Update" : "Sasisha",
|
||||
"Write a description …" : "Andika maelezo",
|
||||
"Description" : "Maelezo",
|
||||
"(Unsaved)" : "(Isiyihifadhiwa)",
|
||||
"(Saving…)" : "(Uhifadhi....)",
|
||||
"Formatting help" : "Uasidizi wa uambizaji",
|
||||
"Edit description" : "Hariri maelezo",
|
||||
"View description" : "Tazama maelezo",
|
||||
"Add Attachment" : "Ongeza kiambatanisho",
|
||||
"Choose attachment" : "Chagua kiambatanisho",
|
||||
"Select Date" : "Chagua tarehe",
|
||||
"Later today – {timeLocale}" : "Baadaye leo-{timeLocale}",
|
||||
"Set due date for later today" : "Pangilia tarehe ya mwisho baadaye leo",
|
||||
"Tomorrow – {timeLocale}" : "Kesho-{timeLocale}",
|
||||
"Set due date for tomorrow" : "Pangilia tarehe ya mwisho kwa kesho",
|
||||
"This weekend – {timeLocale}" : "Wikendi-{timeLocale}",
|
||||
"Set due date for this weekend" : "Pangilia tarehe ya mwisho kwa wiki hii",
|
||||
"Next week – {timeLocale}" : "Wiki ijayo-{timeLocale}",
|
||||
"Set due date for next week" : "Pangilia tarehe ya mwisho kwa wiki ijayo",
|
||||
"Assign a due date to this card…" : "Kabidhi tarehe ya mwisho katika kadi hii",
|
||||
"Set a due date" : "Pangilia tarehe ya mwisho",
|
||||
"Add due date" : "Ongeza tarehe ya mwisho",
|
||||
"Choose a date" : "Chagua tarehe",
|
||||
"Remove due date" : "Ondoa tarehe ya mwisho",
|
||||
"Mark as done" : "Weka alama kama iliyotendeka",
|
||||
"Due at:" : "Mwisho katika",
|
||||
"Not done" : "Haijatendeka",
|
||||
"Unarchive card" : "Kadi ambayo haijahifadhiwa",
|
||||
"Archive card" : "Hifadhi kadi",
|
||||
"Assign a tag to this card…" : "Kabidhi maoni katika kadi hii",
|
||||
"Select or create a tag…" : "Chagua au tengeneza maoni",
|
||||
"Create a new tag:" : "Tengeneza oni jipya",
|
||||
"(group)" : "(kundi)",
|
||||
"{count} comments, {unread} unread" : "{count}maoni, {unread}hayajasomwa",
|
||||
"Todo items" : "Vitu vya kufanya",
|
||||
"Edit card title" : "Hariri kichwa cha habari cha kadi",
|
||||
"Open link" : "Fungua kiungio",
|
||||
"Card deleted" : "Kadi imefutwa",
|
||||
"Edit title" : "Hariri kichwa cha habari",
|
||||
"Assign to me" : "Kabidhi kwangu",
|
||||
"Unassign myself" : "Sijajikabidhi mwenyewe",
|
||||
"Mark as not done" : "Weka alama kama haijatendeka",
|
||||
"Delete card" : "Futa kadi",
|
||||
"seconds ago" : "sukunde zilizopita",
|
||||
"Keyboard shortcuts" : "Mikato ya keyboard",
|
||||
"Boost your productivity using Deck with keyboard shortcuts." : "Ongeza uzalishaji wako kwa kutumia deck na mikatato ya kibodi",
|
||||
"Board actions" : "Matendo ya bodi",
|
||||
"Keyboard shortcut" : "Mikato ya kibodi",
|
||||
"Action" : "Vitendo",
|
||||
"Shift" : "Hamisha",
|
||||
"Scroll" : "Tembeza",
|
||||
"Scroll sideways" : "Tembeza pembeni",
|
||||
"Navigate between cards" : "Nenda kati ya kadi",
|
||||
"Esc" : "Toroka",
|
||||
"Close card details" : "Funga maelezo ya kadi",
|
||||
"Ctrl" : "Dhibiti",
|
||||
"Search" : "Tafuta",
|
||||
"Show card filters" : "Onesha vichungi vya kadi",
|
||||
"Clear card filters" : "Futa vichungi vya kadi",
|
||||
"Show help dialog" : "Onesha mazungumzo ya msaada",
|
||||
"Card actions" : "Matendo ya kadi",
|
||||
"The following actions can be triggered on the currently highlighted card" : "Matendo yafuatayo yanaweza kuanzishwa kwenye kadi iliyoangaziwa kwa sasa",
|
||||
"Enter" : "Ingiza",
|
||||
"Space" : "Nafasi",
|
||||
"Open card details" : "Fungua maelezo ya kadi",
|
||||
"Edit the card title" : "Hariri kichwa cha habari cha kadi",
|
||||
"Assign yourself to the current card" : "Jisajili kwenye kadi ya sasa",
|
||||
"Archive/unarchive the current card" : "Hifadhi/ondoa kadi ya sasa kwenye kumbukumbu",
|
||||
"Mark card as completed/not completed" : "Weka alama kadi kama iliyokamilika/haikukamilika",
|
||||
"Open card menu" : "Fungua menyu ya kadi",
|
||||
"All boards" : "Bodi zote",
|
||||
"Archived boards" : "Bodi zilizohifadhiwa",
|
||||
"Shared with you" : "Imeshirikiwa na wewe",
|
||||
"Deck settings" : "Mipangilio ya deck",
|
||||
"Use bigger card view" : "Tumia mwonekano mkubwa wa kadi",
|
||||
"Show card ID badge" : "Onesha beji ya kitambulisho cha kadi",
|
||||
"Show boards in calendar/tasks" : "Onesha bodi katika kalenda/shughuli",
|
||||
"Limit board creation to some groups" : "Zuia matengenezo ya bodi kwenye makundi kadhaa",
|
||||
"Users outside of those groups will not be able to create their own boards, but will still be able to work on boards that have been shared with them." : "Watumiaji nje ya makundi hayo hawataweza kutengeneza bodi zao wenyewe, lakini bado wataweza kufanya kazi juu ya bodi ambazo zimeshirikishwa na wao.",
|
||||
"Cancel edit" : "Sistisha uhariri",
|
||||
"Save board" : "Hifadhi bodi",
|
||||
"Board {0} deleted" : "Bodi {0}futa",
|
||||
"All cards" : "Kadi zote",
|
||||
"Only assigned cards" : "Kadi zilizosajiliwa tu",
|
||||
"No reminder" : "Hakuna ukumbushaji",
|
||||
"An error occurred" : "Hitilafu imetokea",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Una uhakika unataka kufuta bodi {title}? Hii itafuta data zote za bodi ikijumuisha kadi zilizohifadhiwa",
|
||||
"Delete the board?" : "Futa bodi?",
|
||||
"Exporting board..." : "Safirisha bodi...",
|
||||
"Board details" : "Maelezo ya bodi",
|
||||
"Edit board" : "Hariri bodi",
|
||||
"Clone board" : "Zalisha bodi",
|
||||
"Unarchive board" : "Bodi isiyohifadhiwa",
|
||||
"Archive board" : "Hifadhi bodi",
|
||||
"Export board" : "Safirisha bodi",
|
||||
"Turn on due date reminders" : "Washa ukumbushaji wa tarehe kikomo",
|
||||
"Turn off due date reminders" : "Zima ukumbushaji wa tarehe kikomo",
|
||||
"Due date reminders" : "Ukumbushaji wa tarehe kikomo",
|
||||
"Assigned cards" : "Kadi zilizokabidhiwa",
|
||||
"No notifications" : "Hakuna taarifa",
|
||||
"Delete board" : "Futa bodi",
|
||||
"Importing board..." : "Inaingiza bodi....",
|
||||
"Board imported successfully" : "Bodi imeingizwa kikamilifu",
|
||||
"Import board" : "Ingiza bodi",
|
||||
"Clone {boardTitle}" : "Zalisha {boardTitle}",
|
||||
"Clone cards" : "Zalisha kadi",
|
||||
"Clone assignments" : "Zalisha kazi",
|
||||
"Clone labels" : "Zalisha lebo",
|
||||
"Clone due dates" : "Zalisha tarehe kikomo",
|
||||
"Advanced options" : "Chaguzi za juu",
|
||||
"Move all cards to the first list" : "Hamishia kadi zote kwenye orodha ya kwanza",
|
||||
"Restore archived cards" : "Hifadhi upya kadi zilizohifadhiwa",
|
||||
"Clone" : "Zalisha",
|
||||
"Export {boardTitle}" : "Agiza {boardTitle}",
|
||||
"Export as JSON" : "Safirisha kama JSON",
|
||||
"Export as CSV" : "Safirisha kama CSV",
|
||||
"Note: Only the JSON format is supported for importing back into the Deck app." : "Nukuu: Umbizo la JSON pekee ndilo linalotumika kuleta tena kwenye app ya Deck",
|
||||
"Export" : "Safirisha",
|
||||
"Loading filtered view" : "Inapakia mwonekano uliochujwa",
|
||||
"Today" : "Leo",
|
||||
"Tomorrow" : "Kesho",
|
||||
"No due" : "Hakuna ukomo",
|
||||
"Search for {searchQuery} in all boards" : "Tafuta kwa {searchQuery}katika bodi zote",
|
||||
"No results found" : "Hakuna matokeo yaliyopatikana",
|
||||
"Deck board {name}\n* Last modified on {lastMod}" : "Bodi ya deki{name}\nMaboresho ya mwisho katika {lastMod}",
|
||||
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "*Imetengenezwa kwenye {created}\nImeboreshwa katika {lastMod}\n{nbAttachments}viambatanisho\n{nbComments}maoni",
|
||||
"{nbCards} cards" : "{nbCards}kadi",
|
||||
"Due on {date}" : "Ukomo katika {date}",
|
||||
"{stack} in {board}" : "{stack} katika {board}",
|
||||
"Click to expand description" : "Bonyeza kupanua maelezo",
|
||||
"Click to expand comment" : "Bonyeza kupanua maoni",
|
||||
"Create card" : "Tengeneza kadi",
|
||||
"Create a new card" : "Tengeneza kadi mpya ",
|
||||
"Card title" : "Kichwa cha habari cha kadi",
|
||||
"Creating the new card …" : "Inatengeneza kadi mpya",
|
||||
"Card \"{card}\" was added to \"{board}\"" : "Kadi \"{card}\" iliongezwa katika \"{board}\"",
|
||||
"Open card" : "Fungua kadi",
|
||||
"Close" : "Funga",
|
||||
"No upcoming cards" : "Hakuna kadi zijazo",
|
||||
"upcoming cards today" : "Kadi zijazo leo",
|
||||
"upcoming cards tomorrow" : "Kadi zijazo kesho",
|
||||
"upcoming cards" : "Kadi zijazo",
|
||||
"New card" : "Kadi mpya",
|
||||
"Link to a board" : "Unga kwenye bodi",
|
||||
"Link to a card" : "Unga kwenye kadi",
|
||||
"Create a card" : "Tengeneza kadi",
|
||||
"Message from {author} in {conversationName}" : "Ujumbe kutoka {author}katika{conversationName}",
|
||||
"Something went wrong" : "Kitu fulani kimeenda vibaya",
|
||||
"Failed to upload {name}" : "Imeshindwa kupakia {name}",
|
||||
"Maximum file size of {size} exceeded" : "Kiwango cha juu cha ukubwa wa faili {size}kimezidi",
|
||||
"Assigned users" : "Watumiaji waliokabidhiwa",
|
||||
"Due date" : "Tarehe ya ukomo",
|
||||
"Error creating the share" : "Hitilafu katika kutengeneza ushiriki",
|
||||
"Share with a Deck card" : "Shirikisha na kadi za deck",
|
||||
"Share {file} with a Deck card" : "Shirikisha {file}na kadi za deck",
|
||||
"Share" : "Shirikisha",
|
||||
"Personal" : "Binafsi",
|
||||
"To do" : "Ya kutenda",
|
||||
"Doing" : "Utendaji",
|
||||
"Example Task 3" : "Kazi ya mfano 3",
|
||||
"Example Task 2" : "Kazi ya mfano 2",
|
||||
"Example Task 1" : "Kazi ya mfano 1",
|
||||
"Move card to another board" : "Hamisha kadi kwenye bodi nyingine"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -101,7 +100,7 @@ class ActivityManager {
|
||||
StackMapper $stackMapper,
|
||||
AclMapper $aclMapper,
|
||||
IFactory $l10nFactory,
|
||||
?string $userId,
|
||||
?string $userId
|
||||
) {
|
||||
$this->manager = $manager;
|
||||
$this->permissionService = $permissionsService;
|
||||
@@ -485,7 +484,7 @@ class ActivityManager {
|
||||
$objectId = $entity->getObjectId();
|
||||
break;
|
||||
default:
|
||||
throw new InvalidArgumentException('No entity relation present for ' . $className . ' to ' . $objectType);
|
||||
throw new InvalidArgumentException('No entity relation present for '. $className . ' to ' . $objectType);
|
||||
}
|
||||
return $this->cardMapper->find($objectId);
|
||||
}
|
||||
@@ -500,11 +499,11 @@ class ActivityManager {
|
||||
$objectId = $entity->getBoardId();
|
||||
break;
|
||||
default:
|
||||
throw new InvalidArgumentException('No entity relation present for ' . $className . ' to ' . $objectType);
|
||||
throw new InvalidArgumentException('No entity relation present for '. $className . ' to ' . $objectType);
|
||||
}
|
||||
return $this->boardMapper->find($objectId);
|
||||
}
|
||||
throw new InvalidArgumentException('No entity relation present for ' . $className . ' to ' . $objectType);
|
||||
throw new InvalidArgumentException('No entity relation present for '. $className . ' to ' . $objectType);
|
||||
}
|
||||
|
||||
private function findDetailsForStack($stackId) {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -109,7 +108,7 @@ class DeckProvider implements IProvider {
|
||||
}
|
||||
$board = [
|
||||
'type' => 'highlight',
|
||||
'id' => (string)$event->getObjectId(),
|
||||
'id' => $event->getObjectId(),
|
||||
'name' => $event->getObjectName(),
|
||||
'link' => $this->deckUrl('/board/' . $event->getObjectId()),
|
||||
];
|
||||
@@ -126,12 +125,12 @@ class DeckProvider implements IProvider {
|
||||
}
|
||||
$card = [
|
||||
'type' => 'highlight',
|
||||
'id' => (string)$event->getObjectId(),
|
||||
'id' => $event->getObjectId(),
|
||||
'name' => $event->getObjectName(),
|
||||
];
|
||||
|
||||
if (array_key_exists('board', $subjectParams)) {
|
||||
$card['link'] = $this->cardService->getCardUrl($event->getObjectId());
|
||||
$card['link'] = $this->cardService->getRedirectUrlForCard($event->getObjectId());
|
||||
$event->setLink($card['link']);
|
||||
}
|
||||
$params['card'] = $card;
|
||||
@@ -213,7 +212,7 @@ class DeckProvider implements IProvider {
|
||||
if (array_key_exists($paramName, $subjectParams)) {
|
||||
$params[$paramName] = [
|
||||
'type' => 'highlight',
|
||||
'id' => (string)$subjectParams[$paramName]['id'],
|
||||
'id' => $subjectParams[$paramName]['id'],
|
||||
'name' => $subjectParams[$paramName]['title'],
|
||||
'link' => $this->deckUrl('/board/' . $subjectParams[$paramName]['id'] . '/'),
|
||||
];
|
||||
@@ -224,7 +223,7 @@ class DeckProvider implements IProvider {
|
||||
if (array_key_exists($paramName, $subjectParams)) {
|
||||
$params[$paramName] = [
|
||||
'type' => 'highlight',
|
||||
'id' => (string)$subjectParams[$paramName]['id'],
|
||||
'id' => $subjectParams[$paramName]['id'],
|
||||
'name' => $subjectParams[$paramName]['title'],
|
||||
];
|
||||
}
|
||||
@@ -235,7 +234,7 @@ class DeckProvider implements IProvider {
|
||||
if (array_key_exists($paramName, $subjectParams)) {
|
||||
$params[$paramName] = [
|
||||
'type' => 'highlight',
|
||||
'id' => (string)$subjectParams[$paramName]['id'],
|
||||
'id' => $subjectParams[$paramName]['id'],
|
||||
'name' => $subjectParams[$paramName]['data'],
|
||||
'link' => $this->urlGenerator->linkToRoute('deck.attachment.display', ['cardId' => $subjectParams['card']['id'], 'attachmentId' => $subjectParams['attachment']['id']]),
|
||||
];
|
||||
@@ -259,7 +258,7 @@ class DeckProvider implements IProvider {
|
||||
if (array_key_exists('label', $subjectParams)) {
|
||||
$params['label'] = [
|
||||
'type' => 'highlight',
|
||||
'id' => (string)$subjectParams['label']['id'],
|
||||
'id' => $subjectParams['label']['id'],
|
||||
'name' => $subjectParams['label']['title']
|
||||
];
|
||||
}
|
||||
@@ -278,7 +277,7 @@ class DeckProvider implements IProvider {
|
||||
} else {
|
||||
$params['acl'] = [
|
||||
'type' => 'highlight',
|
||||
'id' => (string)$subjectParams['acl']['participant'],
|
||||
'id' => $subjectParams['acl']['participant'],
|
||||
'name' => $subjectParams['acl']['participant']
|
||||
];
|
||||
}
|
||||
@@ -294,7 +293,7 @@ class DeckProvider implements IProvider {
|
||||
$event->setParsedMessage($comment->getMessage());
|
||||
$params['comment'] = [
|
||||
'type' => 'highlight',
|
||||
'id' => (string)$subjectParams['comment'],
|
||||
'id' => $subjectParams['comment'],
|
||||
'name' => $comment->getMessage()
|
||||
];
|
||||
} catch (NotFoundException $e) {
|
||||
@@ -343,28 +342,28 @@ class DeckProvider implements IProvider {
|
||||
if (array_key_exists('before', $subjectParams)) {
|
||||
$params['before'] = [
|
||||
'type' => 'highlight',
|
||||
'id' => (string)$subjectParams['before'],
|
||||
'name' => $subjectParams['before'] ?? ''
|
||||
'id' => $subjectParams['before'],
|
||||
'name' => $subjectParams['before']
|
||||
];
|
||||
}
|
||||
if (array_key_exists('after', $subjectParams)) {
|
||||
$params['after'] = [
|
||||
'type' => 'highlight',
|
||||
'id' => (string)$subjectParams['after'],
|
||||
'name' => $subjectParams['after'] ?? ''
|
||||
'id' => $subjectParams['after'],
|
||||
'name' => $subjectParams['after']
|
||||
];
|
||||
}
|
||||
if (array_key_exists('card', $subjectParams) && $event->getSubject() === ActivityManager::SUBJECT_CARD_UPDATE_TITLE) {
|
||||
$params['card'] = [
|
||||
'type' => 'highlight',
|
||||
'id' => (string)$subjectParams['after'],
|
||||
'name' => $subjectParams['after'] ?? ''
|
||||
'id' => $subjectParams['after'],
|
||||
'name' => $subjectParams['after']
|
||||
];
|
||||
}
|
||||
return $params;
|
||||
}
|
||||
|
||||
public function deckUrl($endpoint) {
|
||||
return $this->urlGenerator->linkToRouteAbsolute('deck.page.index') . trim($endpoint, '/');
|
||||
return $this->urlGenerator->linkToRouteAbsolute('deck.page.index') . '#' . $endpoint;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -16,7 +15,7 @@ class Filter implements \OCP\Activity\IFilter {
|
||||
|
||||
public function __construct(
|
||||
IL10N $l10n,
|
||||
IURLGenerator $urlGenerator,
|
||||
IURLGenerator $urlGenerator
|
||||
) {
|
||||
$this->l10n = $l10n;
|
||||
$this->urlGenerator = $urlGenerator;
|
||||
@@ -40,8 +39,8 @@ class Filter implements \OCP\Activity\IFilter {
|
||||
|
||||
/**
|
||||
* @return int whether the filter should be rather on the top or bottom of
|
||||
* the admin section. The filters are arranged in ascending order of the
|
||||
* priority values. It is required to return a value between 0 and 100.
|
||||
* the admin section. The filters are arranged in ascending order of the
|
||||
* priority values. It is required to return a value between 0 and 100.
|
||||
* @since 11.0.0
|
||||
*/
|
||||
public function getPriority(): int {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -48,8 +47,8 @@ abstract class SettingBase extends ActivitySettings {
|
||||
|
||||
/**
|
||||
* @return int whether the filter should be rather on the top or bottom of
|
||||
* the admin section. The filters are arranged in ascending order of the
|
||||
* priority values. It is required to return a value between 0 and 100.
|
||||
* the admin section. The filters are arranged in ascending order of the
|
||||
* priority values. It is required to return a value between 0 and 100.
|
||||
* @since 11.0.0
|
||||
*/
|
||||
public function getPriority(): int {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -26,8 +25,8 @@ class SettingChanges extends SettingBase {
|
||||
|
||||
/**
|
||||
* @return int whether the filter should be rather on the top or bottom of
|
||||
* the admin section. The filters are arranged in ascending order of the
|
||||
* priority values. It is required to return a value between 0 and 100.
|
||||
* the admin section. The filters are arranged in ascending order of the
|
||||
* priority values. It is required to return a value between 0 and 100.
|
||||
* @since 11.0.0
|
||||
*/
|
||||
public function getPriority(): int {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -177,7 +176,7 @@ class Application extends App implements IBootstrap {
|
||||
$permissionService = $this->getContainer()->get(PermissionService::class);
|
||||
|
||||
try {
|
||||
return $permissionService->checkPermission($cardMapper, (int)$name, Acl::PERMISSION_READ);
|
||||
return $permissionService->checkPermission($cardMapper, (int) $name, Acl::PERMISSION_READ);
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -15,7 +14,7 @@ class Capabilities implements ICapability {
|
||||
|
||||
/** @var IAppManager */
|
||||
private $appManager;
|
||||
/** @var PermissionService */
|
||||
/** @var PermissionService */
|
||||
private $permissionService;
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -57,7 +56,7 @@ class ResourceProvider implements IProvider {
|
||||
*/
|
||||
public function getResourceRichObject(IResource $resource): array {
|
||||
$board = $this->getBoard($resource);
|
||||
$link = $this->urlGenerator->linkToRoute('deck.page.indexBoard', ['boardId' => $resource->getId()]);
|
||||
$link = $this->urlGenerator->linkToRoute('deck.page.index') . '#/board/' . $resource->getId();
|
||||
|
||||
return [
|
||||
'type' => self::RESOURCE_TYPE,
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -66,10 +65,7 @@ class ResourceProviderCard implements IProvider {
|
||||
throw new ResourceException('No unique card found for resource, this should never happen');
|
||||
}
|
||||
|
||||
$link = $this->urlGenerator->linkToRoute('deck.page.indexCard', [
|
||||
'boardId' => $board->getId(),
|
||||
'cardId' => $card->getId()
|
||||
]);
|
||||
$link = $this->urlGenerator->linkToRoute('deck.page.index') . '#/board/' . $board->getId() . '/card/' . $resource->getId();
|
||||
|
||||
return [
|
||||
'type' => self::RESOURCE_TYPE,
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -16,7 +15,7 @@ use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
class BoardImport extends Command {
|
||||
public function __construct(
|
||||
private BoardImportCommandService $boardImportCommandService,
|
||||
private BoardImportCommandService $boardImportCommandService
|
||||
) {
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -73,17 +72,17 @@ final class TransferOwnership extends Command {
|
||||
try {
|
||||
$board = $boardId ? $this->boardMapper->find($boardId) : null;
|
||||
} catch (\Exception $e) {
|
||||
$output->writeln('Could not find a board for the provided id.');
|
||||
$output->writeln("Could not find a board for the provided id.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ($boardId !== null && $board->getOwner() !== $owner) {
|
||||
$output->writeln("$owner is not the owner of the board $boardId (" . $board->getTitle() . ')');
|
||||
$output->writeln("$owner is not the owner of the board $boardId (" . $board->getTitle() . ")");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ($boardId) {
|
||||
$output->writeln('Transfer board ' . $board->getTitle() . ' from ' . $board->getOwner() . " to $newOwner");
|
||||
$output->writeln("Transfer board " . $board->getTitle() . " from ". $board->getOwner() ." to $newOwner");
|
||||
} else {
|
||||
$output->writeln("Transfer all boards from $owner to $newOwner");
|
||||
}
|
||||
@@ -95,12 +94,12 @@ final class TransferOwnership extends Command {
|
||||
|
||||
if ($boardId) {
|
||||
$this->boardService->transferBoardOwnership($boardId, $newOwner, $remapAssignment);
|
||||
$output->writeln('<info>Board ' . $board->getTitle() . ' from ' . $board->getOwner() . " transferred to $newOwner completed</info>");
|
||||
$output->writeln("<info>Board " . $board->getTitle() . " from ". $board->getOwner() ." transferred to $newOwner completed</info>");
|
||||
return 0;
|
||||
}
|
||||
|
||||
foreach ($this->boardService->transferOwnership($owner, $newOwner, $remapAssignment) as $board) {
|
||||
$output->writeln(' - ' . $board->getTitle() . ' transferred');
|
||||
$output->writeln(" - " . $board->getTitle() . " transferred");
|
||||
}
|
||||
$output->writeln("<info>All boards from $owner to $newOwner transferred</info>");
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -164,13 +163,4 @@ class BoardApiController extends ApiController {
|
||||
$acl = $this->boardService->deleteAcl($aclId);
|
||||
return new DataResponse($acl, HTTP::STATUS_OK);
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
*/
|
||||
public function clone(int $boardId, bool $withCards = false, bool $withAssignments = false, bool $withLabels = false, bool $withDueDate = false, bool $moveCardsToLeftStack = false, bool $restoreArchivedCards = false): DataResponse {
|
||||
return new DataResponse(
|
||||
$this->boardService->clone($boardId, $this->userId, $withCards, $withAssignments, $withLabels, $withDueDate, $moveCardsToLeftStack, $restoreArchivedCards)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -10,12 +9,10 @@ namespace OCA\Deck\Controller;
|
||||
use OCA\Deck\Db\Acl;
|
||||
use OCA\Deck\Db\Board;
|
||||
use OCA\Deck\Service\BoardService;
|
||||
use OCA\Deck\Service\Importer\BoardImportService;
|
||||
use OCA\Deck\Service\PermissionService;
|
||||
use OCP\AppFramework\ApiController;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\DataResponse;
|
||||
use OCP\IL10N;
|
||||
use OCP\IRequest;
|
||||
|
||||
class BoardController extends ApiController {
|
||||
@@ -24,8 +21,6 @@ class BoardController extends ApiController {
|
||||
IRequest $request,
|
||||
private BoardService $boardService,
|
||||
private PermissionService $permissionService,
|
||||
private BoardImportService $boardImportService,
|
||||
private IL10N $l10n,
|
||||
private $userId,
|
||||
) {
|
||||
parent::__construct($appName, $request);
|
||||
@@ -139,11 +134,11 @@ class BoardController extends ApiController {
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
* @param $boardId
|
||||
* @return Board
|
||||
*/
|
||||
public function clone(int $boardId, bool $withCards = false, bool $withAssignments = false, bool $withLabels = false, bool $withDueDate = false, bool $moveCardsToLeftStack = false, bool $restoreArchivedCards = false): DataResponse {
|
||||
return new DataResponse(
|
||||
$this->boardService->clone($boardId, $this->userId, $withCards, $withAssignments, $withLabels, $withDueDate, $moveCardsToLeftStack, $restoreArchivedCards)
|
||||
);
|
||||
public function clone($boardId) {
|
||||
return $this->boardService->clone($boardId, $this->userId);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -167,62 +162,4 @@ class BoardController extends ApiController {
|
||||
public function export($boardId) {
|
||||
return $this->boardService->export($boardId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
*/
|
||||
public function import(): DataResponse {
|
||||
$file = $this->request->getUploadedFile('file');
|
||||
$error = null;
|
||||
$phpFileUploadErrors = [
|
||||
UPLOAD_ERR_OK => $this->l10n->t('The file was uploaded'),
|
||||
UPLOAD_ERR_INI_SIZE => $this->l10n->t('The uploaded file exceeds the upload_max_filesize directive in php.ini'),
|
||||
UPLOAD_ERR_FORM_SIZE => $this->l10n->t('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'),
|
||||
UPLOAD_ERR_PARTIAL => $this->l10n->t('The file was only partially uploaded'),
|
||||
UPLOAD_ERR_NO_FILE => $this->l10n->t('No file was uploaded'),
|
||||
UPLOAD_ERR_NO_TMP_DIR => $this->l10n->t('Missing a temporary folder'),
|
||||
UPLOAD_ERR_CANT_WRITE => $this->l10n->t('Could not write file to disk'),
|
||||
UPLOAD_ERR_EXTENSION => $this->l10n->t('A PHP extension stopped the file upload'),
|
||||
];
|
||||
|
||||
if (empty($file)) {
|
||||
$error = $this->l10n->t('No file uploaded or file size exceeds maximum of %s', [\OCP\Util::humanFileSize(\OCP\Util::uploadLimit())]);
|
||||
}
|
||||
if (!empty($file) && array_key_exists('error', $file) && $file['error'] !== UPLOAD_ERR_OK) {
|
||||
$error = $phpFileUploadErrors[$file['error']];
|
||||
}
|
||||
if (!empty($file) && $file['error'] === UPLOAD_ERR_OK && !in_array($file['type'], ['application/json', 'text/plain'])) {
|
||||
$error = $this->l10n->t('Invalid file type. Only JSON files are allowed.');
|
||||
}
|
||||
if ($error !== null) {
|
||||
return new DataResponse([
|
||||
'status' => 'error',
|
||||
'message' => $error,
|
||||
], Http::STATUS_BAD_REQUEST);
|
||||
}
|
||||
|
||||
try {
|
||||
$fileContent = file_get_contents($file['tmp_name']);
|
||||
$this->boardImportService->setSystem('DeckJson');
|
||||
$config = new \stdClass();
|
||||
$config->owner = $this->userId;
|
||||
$this->boardImportService->setConfigInstance($config);
|
||||
$this->boardImportService->setData(json_decode($fileContent));
|
||||
$this->boardImportService->import();
|
||||
$importedBoard = $this->boardImportService->getBoard();
|
||||
$board = $this->boardService->find($importedBoard->getId());
|
||||
|
||||
return new DataResponse($board, Http::STATUS_OK);
|
||||
} catch (\TypeError $e) {
|
||||
return new DataResponse([
|
||||
'status' => 'error',
|
||||
'message' => $this->l10n->t('Invalid JSON data'),
|
||||
], Http::STATUS_BAD_REQUEST);
|
||||
} catch (\Exception $e) {
|
||||
return new DataResponse([
|
||||
'status' => 'error',
|
||||
'message' => $this->l10n->t('Failed to import board'),
|
||||
], Http::STATUS_BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -153,30 +152,6 @@ class CardApiController extends ApiController {
|
||||
return new DataResponse($card, HTTP::STATUS_OK);
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
* @CORS
|
||||
* @NoCSRFRequired
|
||||
*
|
||||
* Archive card
|
||||
*/
|
||||
public function archive($cardId) {
|
||||
$card = $this->cardService->archive($cardId);
|
||||
return new DataResponse($card, HTTP::STATUS_OK);
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
* @CORS
|
||||
* @NoCSRFRequired
|
||||
*
|
||||
* Unarchive card
|
||||
*/
|
||||
public function unarchive($cardId) {
|
||||
$card = $this->cardService->unarchive($cardId);
|
||||
return new DataResponse($card, HTTP::STATUS_OK);
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
* @CORS
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -90,15 +89,6 @@ class CardController extends Controller {
|
||||
public function update($id, $title, $stackId, $type, $order, $description, $duedate, $deletedAt) {
|
||||
return $this->cardService->update($id, $title, $stackId, $type, $this->userId, $description, $order, $duedate, $deletedAt);
|
||||
}
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
* @param $cardId
|
||||
* @param $targetStackId
|
||||
* @return \OCP\AppFramework\Db\Entity
|
||||
*/
|
||||
public function clone(int $cardId, ?int $targetStackId = null) {
|
||||
return $this->cardService->cloneCard($cardId, $targetStackId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -21,8 +21,7 @@ use OCP\AppFramework\OCSController;
|
||||
use OCP\IRequest;
|
||||
|
||||
class SessionController extends OCSController {
|
||||
public function __construct(
|
||||
$appName,
|
||||
public function __construct($appName,
|
||||
IRequest $request,
|
||||
private SessionService $sessionService,
|
||||
private PermissionService $permissionService,
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -11,7 +10,6 @@ namespace OCA\Deck\Cron;
|
||||
use OCA\Deck\Db\AttachmentMapper;
|
||||
use OCA\Deck\Db\BoardMapper;
|
||||
use OCA\Deck\Db\CardMapper;
|
||||
use OCA\Deck\Db\StackMapper;
|
||||
use OCA\Deck\InvalidAttachmentType;
|
||||
use OCA\Deck\Service\AttachmentService;
|
||||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
@@ -28,16 +26,13 @@ class DeleteCron extends TimedJob {
|
||||
private $attachmentService;
|
||||
/** @var AttachmentMapper */
|
||||
private $attachmentMapper;
|
||||
/** @var StackMapper */
|
||||
private $stackMapper;
|
||||
|
||||
public function __construct(ITimeFactory $time, BoardMapper $boardMapper, CardMapper $cardMapper, AttachmentService $attachmentService, AttachmentMapper $attachmentMapper, StackMapper $stackMapper) {
|
||||
public function __construct(ITimeFactory $time, BoardMapper $boardMapper, CardMapper $cardMapper, AttachmentService $attachmentService, AttachmentMapper $attachmentMapper) {
|
||||
parent::__construct($time);
|
||||
$this->boardMapper = $boardMapper;
|
||||
$this->cardMapper = $cardMapper;
|
||||
$this->attachmentService = $attachmentService;
|
||||
$this->attachmentMapper = $attachmentMapper;
|
||||
$this->stackMapper = $stackMapper;
|
||||
|
||||
$this->setInterval(60 * 60 * 24);
|
||||
$this->setTimeSensitivity(IJob::TIME_INSENSITIVE);
|
||||
@@ -69,10 +64,5 @@ class DeleteCron extends TimedJob {
|
||||
}
|
||||
$this->attachmentMapper->delete($attachment);
|
||||
}
|
||||
|
||||
$stacks = $this->stackMapper->findToDelete();
|
||||
foreach ($stacks as $stack) {
|
||||
$this->stackMapper->delete($stack);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -13,17 +12,27 @@ use OCA\Deck\Notification\NotificationHelper;
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\BackgroundJob\Job;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use OCP\ILogger;
|
||||
|
||||
class ScheduledNotifications extends Job {
|
||||
|
||||
/** @var CardMapper */
|
||||
protected $cardMapper;
|
||||
/** @var NotificationHelper */
|
||||
protected $notificationHelper;
|
||||
/** @var ILogger */
|
||||
protected $logger;
|
||||
|
||||
public function __construct(
|
||||
ITimeFactory $time,
|
||||
protected CardMapper $cardMapper,
|
||||
protected NotificationHelper $notificationHelper,
|
||||
protected LoggerInterface $logger,
|
||||
CardMapper $cardMapper,
|
||||
NotificationHelper $notificationHelper,
|
||||
ILogger $logger
|
||||
) {
|
||||
parent::__construct($time);
|
||||
$this->cardMapper = $cardMapper;
|
||||
$this->notificationHelper = $notificationHelper;
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -14,19 +14,21 @@ namespace OCA\Deck\Cron;
|
||||
use OCA\Deck\Service\SessionService;
|
||||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\BackgroundJob\TimedJob;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use OCP\ILogger;
|
||||
|
||||
class SessionsCleanup extends TimedJob {
|
||||
private $sessionService;
|
||||
private $documentService;
|
||||
private $logger;
|
||||
private $imageService;
|
||||
|
||||
|
||||
public function __construct(
|
||||
ITimeFactory $time,
|
||||
private SessionService $sessionService,
|
||||
private LoggerInterface $logger,
|
||||
) {
|
||||
public function __construct(ITimeFactory $time,
|
||||
SessionService $sessionService,
|
||||
ILogger $logger) {
|
||||
parent::__construct($time);
|
||||
$this->sessionService = $sessionService;
|
||||
$this->logger = $logger;
|
||||
$this->setInterval(SessionService::SESSION_VALID_TIME);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -26,7 +25,7 @@ class Calendar extends ExternalCalendar {
|
||||
private $children;
|
||||
/** @var DeckCalendarBackend */
|
||||
private $backend;
|
||||
/** @var Board */
|
||||
/** @var Board */
|
||||
private $board;
|
||||
|
||||
public function __construct(string $principalUri, string $calendarUri, Board $board, DeckCalendarBackend $backend) {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -33,7 +32,7 @@ class DeckCalendarBackend {
|
||||
|
||||
public function __construct(
|
||||
BoardService $boardService, StackService $stackService, CardService $cardService, PermissionService $permissionService,
|
||||
BoardMapper $boardMapper,
|
||||
BoardMapper $boardMapper
|
||||
) {
|
||||
$this->boardService = $boardService;
|
||||
$this->stackService = $stackService;
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -76,7 +75,7 @@ class AclMapper extends DeckMapper implements IPermissionMapper {
|
||||
try {
|
||||
$entity = $this->find($id);
|
||||
return $entity->getBoardId();
|
||||
} catch (DoesNotExistException|MultipleObjectsReturnedException $e) {
|
||||
} catch (DoesNotExistException | MultipleObjectsReturnedException $e) {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -62,9 +61,9 @@ class AttachmentMapper extends DeckMapper implements IPermissionMapper {
|
||||
public function findByData($cardId, $data) {
|
||||
$qb = $this->db->getQueryBuilder();
|
||||
$qb->select('*')
|
||||
->from($this->getTableName())
|
||||
->where($qb->expr()->eq('card_id', $qb->createNamedParameter($cardId, IQueryBuilder::PARAM_INT)))
|
||||
->andWhere($qb->expr()->eq('data', $qb->createNamedParameter($data, IQueryBuilder::PARAM_STR)));
|
||||
->from($this->getTableName())
|
||||
->where($qb->expr()->eq('card_id', $qb->createNamedParameter($cardId, IQueryBuilder::PARAM_INT)))
|
||||
->andWhere($qb->expr()->eq('data', $qb->createNamedParameter($data, IQueryBuilder::PARAM_STR)));
|
||||
|
||||
return $this->findEntity($qb);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user