Compare commits
1 Commits
v1.13.0-be
...
release/wo
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
139092d855 |
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
"image": "ghcr.io/juliushaertl/nextcloud-dev-php80:latest",
|
|
||||||
"forwardPorts": [80],
|
|
||||||
"containerEnv": {
|
|
||||||
"NEXTCLOUD_AUTOINSTALL_APPS": "deck",
|
|
||||||
"XDEBUG_MODE": "debug"
|
|
||||||
},
|
|
||||||
"customizations": {
|
|
||||||
"vscode": {
|
|
||||||
"extensions": [
|
|
||||||
"felixfbecker.php-intellisense",
|
|
||||||
"octref.vetur"
|
|
||||||
],
|
|
||||||
"settings": {
|
|
||||||
"php.suggest.basic": false,
|
|
||||||
"git.alwaysSignOff": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"workspaceMount": "source=${localWorkspaceFolder},target=/var/www/html/apps-extra/deck,type=bind",
|
|
||||||
"workspaceFolder": "/var/www/html/apps-extra/deck",
|
|
||||||
"overrideCommand": true,
|
|
||||||
"postAttachCommand": "bash ./.devcontainer/setup.sh",
|
|
||||||
"portsAttributes": {
|
|
||||||
"80": {
|
|
||||||
"label": "Webserver"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
(
|
|
||||||
cd /tmp && /usr/local/bin/bootstrap.sh apache2ctl start
|
|
||||||
)
|
|
||||||
|
|
||||||
composer install --no-dev
|
|
||||||
npm ci
|
|
||||||
npm run dev
|
|
||||||
@@ -3,10 +3,7 @@ root = true
|
|||||||
[*]
|
[*]
|
||||||
charset = utf-8
|
charset = utf-8
|
||||||
end_of_line = lf
|
end_of_line = lf
|
||||||
indent_size = tab
|
|
||||||
indent_style = tab
|
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
trim_trailing_whitespace = true
|
|
||||||
|
|
||||||
[*.{js,vue}]
|
[*.{js,vue}]
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
root: true,
|
|
||||||
extends: [
|
extends: [
|
||||||
'@nextcloud',
|
'@nextcloud',
|
||||||
],
|
],
|
||||||
@@ -8,7 +7,6 @@ module.exports = {
|
|||||||
'jsdoc/require-param-type': ['off'],
|
'jsdoc/require-param-type': ['off'],
|
||||||
'jsdoc/check-param-names': ['off'],
|
'jsdoc/check-param-names': ['off'],
|
||||||
'jsdoc/no-undefined-types': ['off'],
|
'jsdoc/no-undefined-types': ['off'],
|
||||||
'jsdoc/require-property-description': ['off'],
|
'jsdoc/require-property-description' : ['off']
|
||||||
'import/no-named-as-default-member': ['off'],
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
71
.github/dependabot.yml
vendored
@@ -2,7 +2,7 @@ version: 2
|
|||||||
updates:
|
updates:
|
||||||
- package-ecosystem: npm
|
- package-ecosystem: npm
|
||||||
directory: "/"
|
directory: "/"
|
||||||
target-branch: "main"
|
target-branch: "master"
|
||||||
schedule:
|
schedule:
|
||||||
interval: weekly
|
interval: weekly
|
||||||
day: saturday
|
day: saturday
|
||||||
@@ -11,42 +11,19 @@ updates:
|
|||||||
open-pull-requests-limit: 10
|
open-pull-requests-limit: 10
|
||||||
reviewers:
|
reviewers:
|
||||||
- juliushaertl
|
- juliushaertl
|
||||||
- luka-nextcloud
|
- jakobroehrl
|
||||||
|
#- package-ecosystem: npm
|
||||||
- package-ecosystem: npm
|
# directory: "/"
|
||||||
target-branch: stable28
|
# target-branch: "stable1.1"
|
||||||
versioning-strategy: lockfile-only
|
# schedule:
|
||||||
directory: "/"
|
# interval: weekly
|
||||||
schedule:
|
# day: saturday
|
||||||
interval: weekly
|
# time: "03:00"
|
||||||
day: saturday
|
# timezone: Europe/Paris
|
||||||
time: "03:00"
|
# open-pull-requests-limit: 10
|
||||||
timezone: Europe/Paris
|
# reviewers:
|
||||||
ignore:
|
# - juliushaertl
|
||||||
- dependency-name: "*"
|
# - jakobroehrl
|
||||||
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: "*"
|
|
||||||
update-types: ["version-update:semver-major"]
|
|
||||||
open-pull-requests-limit: 30
|
|
||||||
labels:
|
|
||||||
- 3. to review
|
|
||||||
- dependencies
|
|
||||||
|
|
||||||
- package-ecosystem: composer
|
- package-ecosystem: composer
|
||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
@@ -57,20 +34,11 @@ updates:
|
|||||||
open-pull-requests-limit: 10
|
open-pull-requests-limit: 10
|
||||||
reviewers:
|
reviewers:
|
||||||
- juliushaertl
|
- juliushaertl
|
||||||
- luka-nextcloud
|
ignore:
|
||||||
|
- dependency-name: christophwurst/nextcloud
|
||||||
- package-ecosystem: composer
|
versions:
|
||||||
directory: "/tests/integration"
|
- "< 16"
|
||||||
schedule:
|
- ">= 15.a"
|
||||||
interval: weekly
|
|
||||||
day: saturday
|
|
||||||
time: "03:00"
|
|
||||||
timezone: Europe/Paris
|
|
||||||
open-pull-requests-limit: 10
|
|
||||||
reviewers:
|
|
||||||
- juliushaertl
|
|
||||||
- luka-nextcloud
|
|
||||||
|
|
||||||
- package-ecosystem: github-actions
|
- package-ecosystem: github-actions
|
||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
@@ -81,4 +49,3 @@ updates:
|
|||||||
open-pull-requests-limit: 10
|
open-pull-requests-limit: 10
|
||||||
reviewers:
|
reviewers:
|
||||||
- juliushaertl
|
- juliushaertl
|
||||||
- luka-nextcloud
|
|
||||||
|
|||||||
2
.github/pull_request_template.md
vendored
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
* Resolves: # <!-- related github issue -->
|
* Resolves: # <!-- related github issue -->
|
||||||
* Target version: main
|
* Target version: master
|
||||||
|
|
||||||
### Summary
|
### Summary
|
||||||
|
|
||||||
|
|||||||
22
.github/workflows/appbuild.yml
vendored
@@ -1,43 +1,39 @@
|
|||||||
name: Package build
|
name: Package build
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
pull_request:
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- master
|
|
||||||
- stable*
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-18.04
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
node-version: [16.x]
|
node-version: [14.x]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.1
|
- uses: actions/checkout@v2.4.0
|
||||||
- name: Use Node.js ${{ matrix.node-version }}
|
- name: Use Node.js ${{ matrix.node-version }}
|
||||||
uses: actions/setup-node@v4.0.2
|
uses: actions/setup-node@v2.4.1
|
||||||
with:
|
with:
|
||||||
node-version: ${{ matrix.node-version }}
|
node-version: ${{ matrix.node-version }}
|
||||||
- name: Set up npm7
|
- name: Set up npm7
|
||||||
run: npm i -g npm@7
|
run: npm i -g npm@7
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@2.30.0
|
uses: shivammathur/setup-php@2.16.0
|
||||||
with:
|
with:
|
||||||
php-version: '7.4'
|
php-version: '7.4'
|
||||||
tools: composer
|
tools: composer
|
||||||
- name: install dependencies
|
- name: install dependencies
|
||||||
run: |
|
run: |
|
||||||
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb
|
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.12.2/krankerl_0.12.2_amd64.deb
|
||||||
sudo dpkg -i krankerl_0.14.0_amd64.deb
|
sudo dpkg -i krankerl_0.12.2_amd64.deb
|
||||||
- name: package
|
- name: package
|
||||||
run: |
|
run: |
|
||||||
uname -a
|
uname -a
|
||||||
RUST_BACKTRACE=1 krankerl --version
|
RUST_BACKTRACE=1 krankerl --version
|
||||||
RUST_BACKTRACE=1 krankerl package
|
RUST_BACKTRACE=1 krankerl package
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: Deck app tarball
|
name: Deck app tarball
|
||||||
path: build/artifacts/deck.tar.gz
|
path: build/artifacts/deck.tar.gz
|
||||||
|
|||||||
56
.github/workflows/appstore-build-publish.yml
vendored
@@ -10,7 +10,7 @@ on:
|
|||||||
types: [published]
|
types: [published]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
PHP_VERSION: 8.2
|
PHP_VERSION: 7.4
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_and_publish:
|
build_and_publish:
|
||||||
@@ -21,9 +21,9 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check actor permission
|
- name: Check actor permission
|
||||||
uses: skjnldsv/check-actor-permission@69e92a3c4711150929bca9fcf34448c5bf5526e7 # v3.0
|
uses: skjnldsv/check-actor-permission@v2
|
||||||
with:
|
with:
|
||||||
require: write
|
require: admin
|
||||||
|
|
||||||
- name: Set app env
|
- name: Set app env
|
||||||
run: |
|
run: |
|
||||||
@@ -32,31 +32,31 @@ jobs:
|
|||||||
echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
|
echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ env.APP_NAME }}
|
path: ${{ env.APP_NAME }}
|
||||||
|
|
||||||
- name: Get appinfo data
|
- name: Get appinfo data
|
||||||
id: appinfo
|
id: appinfo
|
||||||
uses: skjnldsv/xpath-action@7e6a7c379d0e9abc8acaef43df403ab4fc4f770c # master
|
uses: skjnldsv/xpath-action@master
|
||||||
with:
|
with:
|
||||||
filename: ${{ env.APP_NAME }}/appinfo/info.xml
|
filename: ${{ env.APP_NAME }}/appinfo/info.xml
|
||||||
expression: "//info//dependencies//nextcloud/@min-version"
|
expression: "//info//dependencies//nextcloud/@min-version"
|
||||||
|
|
||||||
- name: Read package.json node and npm engines version
|
- name: Read package.json node and npm engines version
|
||||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
|
uses: skjnldsv/read-package-engines-version-actions@v1.1
|
||||||
id: versions
|
id: versions
|
||||||
# Continue if no package.json
|
# Continue if no package.json
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
with:
|
with:
|
||||||
path: ${{ env.APP_NAME }}
|
path: ${{ env.APP_NAME }}
|
||||||
fallbackNode: '^20'
|
fallbackNode: "^12"
|
||||||
fallbackNpm: '^9'
|
fallbackNpm: "^6"
|
||||||
|
|
||||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||||
# Skip if no package.json
|
# Skip if no package.json
|
||||||
if: ${{ steps.versions.outputs.nodeVersion }}
|
if: ${{ steps.versions.outputs.nodeVersion }}
|
||||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
|
uses: actions/setup-node@v2
|
||||||
with:
|
with:
|
||||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||||
|
|
||||||
@@ -66,16 +66,14 @@ jobs:
|
|||||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
||||||
|
|
||||||
- name: Set up php ${{ env.PHP_VERSION }}
|
- name: Set up php ${{ env.PHP_VERSION }}
|
||||||
uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: ${{ env.PHP_VERSION }}
|
php-version: ${{ env.PHP_VERSION }}
|
||||||
coverage: none
|
coverage: none
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Check composer.json
|
- name: Check composer.json
|
||||||
id: check_composer
|
id: check_composer
|
||||||
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v2
|
uses: andstor/file-existence-action@v1
|
||||||
with:
|
with:
|
||||||
files: "${{ env.APP_NAME }}/composer.json"
|
files: "${{ env.APP_NAME }}/composer.json"
|
||||||
|
|
||||||
@@ -88,36 +86,21 @@ jobs:
|
|||||||
- name: Build ${{ env.APP_NAME }}
|
- name: Build ${{ env.APP_NAME }}
|
||||||
# Skip if no package.json
|
# Skip if no package.json
|
||||||
if: ${{ steps.versions.outputs.nodeVersion }}
|
if: ${{ steps.versions.outputs.nodeVersion }}
|
||||||
env:
|
|
||||||
CYPRESS_INSTALL_BINARY: 0
|
|
||||||
run: |
|
run: |
|
||||||
cd ${{ env.APP_NAME }}
|
cd ${{ env.APP_NAME }}
|
||||||
npm ci
|
npm ci
|
||||||
npm run build
|
npm run build
|
||||||
|
|
||||||
- name: Check Krankerl config
|
|
||||||
id: krankerl
|
|
||||||
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v2
|
|
||||||
with:
|
|
||||||
files: ${{ env.APP_NAME }}/krankerl.toml
|
|
||||||
|
|
||||||
- name: Install Krankerl
|
- name: Install Krankerl
|
||||||
if: steps.krankerl.outputs.files_exists == 'true'
|
|
||||||
run: |
|
run: |
|
||||||
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb
|
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.13.0/krankerl_0.13.0_amd64.deb
|
||||||
sudo dpkg -i krankerl_0.14.0_amd64.deb
|
sudo dpkg -i krankerl_0.13.0_amd64.deb
|
||||||
|
|
||||||
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with krankerl
|
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }}
|
||||||
if: steps.krankerl.outputs.files_exists == 'true'
|
# Try krankerl, fallback to makefile
|
||||||
run: |
|
run: |
|
||||||
cd ${{ env.APP_NAME }}
|
cd ${{ env.APP_NAME }}
|
||||||
krankerl package
|
krankerl package || make appstore
|
||||||
|
|
||||||
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with makefile
|
|
||||||
if: steps.krankerl.outputs.files_exists != 'true'
|
|
||||||
run: |
|
|
||||||
cd ${{ env.APP_NAME }}
|
|
||||||
make appstore
|
|
||||||
|
|
||||||
- name: Checkout server ${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }}
|
- name: Checkout server ${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }}
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
@@ -128,10 +111,9 @@ jobs:
|
|||||||
unzip latest-$NCVERSION.zip
|
unzip latest-$NCVERSION.zip
|
||||||
|
|
||||||
- name: Checkout server master fallback
|
- name: Checkout server master fallback
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
uses: actions/checkout@v2
|
||||||
if: ${{ steps.server-checkout.outcome != 'success' }}
|
if: ${{ steps.server-checkout.outcome != 'success' }}
|
||||||
with:
|
with:
|
||||||
submodules: true
|
|
||||||
repository: nextcloud/server
|
repository: nextcloud/server
|
||||||
path: nextcloud
|
path: nextcloud
|
||||||
|
|
||||||
@@ -151,7 +133,7 @@ jobs:
|
|||||||
tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }}
|
tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }}
|
||||||
|
|
||||||
- name: Attach tarball to github release
|
- name: Attach tarball to github release
|
||||||
uses: svenstaro/upload-release-action@04733e069f2d7f7f0b4aebc4fbdbce8613b03ccd # v2
|
uses: svenstaro/upload-release-action@v2
|
||||||
id: attach_to_release
|
id: attach_to_release
|
||||||
with:
|
with:
|
||||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -161,7 +143,7 @@ jobs:
|
|||||||
overwrite: true
|
overwrite: true
|
||||||
|
|
||||||
- name: Upload app to Nextcloud appstore
|
- name: Upload app to Nextcloud appstore
|
||||||
uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1
|
uses: nextcloud-releases/nextcloud-appstore-push-action@v1
|
||||||
with:
|
with:
|
||||||
app_name: ${{ env.APP_NAME }}
|
app_name: ${{ env.APP_NAME }}
|
||||||
appstore_token: ${{ secrets.APPSTORE_TOKEN }}
|
appstore_token: ${{ secrets.APPSTORE_TOKEN }}
|
||||||
|
|||||||
13
.github/workflows/command-rebase.yml
vendored
@@ -9,21 +9,16 @@ on:
|
|||||||
issue_comment:
|
issue_comment:
|
||||||
types: created
|
types: created
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
rebase:
|
rebase:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
|
||||||
contents: none
|
|
||||||
|
|
||||||
# On pull requests and if the comment starts with `/rebase`
|
# On pull requests and if the comment starts with `/rebase`
|
||||||
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase')
|
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase')
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Add reaction on start
|
- name: Add reaction on start
|
||||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
|
uses: peter-evans/create-or-update-comment@v1
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||||
repository: ${{ github.event.repository.full_name }}
|
repository: ${{ github.event.repository.full_name }}
|
||||||
@@ -31,18 +26,18 @@ jobs:
|
|||||||
reaction-type: "+1"
|
reaction-type: "+1"
|
||||||
|
|
||||||
- name: Checkout the latest code
|
- name: Checkout the latest code
|
||||||
uses: actions/checkout@v4.1.1 # v3.5.2
|
uses: actions/checkout@v2.4.0
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||||
|
|
||||||
- name: Automatic Rebase
|
- name: Automatic Rebase
|
||||||
uses: cirrus-actions/rebase@b87d48154a87a85666003575337e27b8cd65f691 # 1.8
|
uses: cirrus-actions/rebase@1.5
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
|
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
|
||||||
|
|
||||||
- name: Add reaction on failure
|
- name: Add reaction on failure
|
||||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
|
uses: peter-evans/create-or-update-comment@v1
|
||||||
if: failure()
|
if: failure()
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||||
|
|||||||
122
.github/workflows/cypress.yml
vendored
@@ -1,122 +0,0 @@
|
|||||||
name: Cypress
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- stable*
|
|
||||||
|
|
||||||
env:
|
|
||||||
APP_NAME: deck
|
|
||||||
CYPRESS_baseUrl: http://localhost:8081/index.php
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
cypress:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
node-version: [20.x]
|
|
||||||
# containers: [1, 2, 3]
|
|
||||||
php-versions: [ '8.0' ]
|
|
||||||
databases: [ 'sqlite' ]
|
|
||||||
server-versions: [ 'master' ]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Use Node.js ${{ matrix.node-version }}
|
|
||||||
uses: actions/setup-node@v4.0.2
|
|
||||||
with:
|
|
||||||
node-version: ${{ matrix.node-version }}
|
|
||||||
|
|
||||||
- name: Register text Git reference
|
|
||||||
run: |
|
|
||||||
text_app_ref="$(if [ "${{ matrix.server-versions }}" = "master" ]; then echo -n "main"; else echo -n "${{ matrix.server-versions }}"; fi)"
|
|
||||||
echo "text_app_ref=$text_app_ref" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Checkout server
|
|
||||||
uses: actions/checkout@v4.1.1
|
|
||||||
with:
|
|
||||||
repository: nextcloud/server
|
|
||||||
ref: ${{ matrix.server-versions }}
|
|
||||||
|
|
||||||
- name: Checkout submodules
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
|
||||||
git submodule sync --recursive
|
|
||||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
|
||||||
|
|
||||||
- name: Checkout ${{ env.APP_NAME }}
|
|
||||||
uses: actions/checkout@v4.1.1
|
|
||||||
with:
|
|
||||||
path: apps/${{ env.APP_NAME }}
|
|
||||||
|
|
||||||
- name: Checkout text
|
|
||||||
uses: actions/checkout@v4.1.1
|
|
||||||
with:
|
|
||||||
repository: nextcloud/text
|
|
||||||
ref: ${{ env.text_app_ref }}
|
|
||||||
path: apps/text
|
|
||||||
|
|
||||||
- name: Set up php ${{ matrix.php-versions }}
|
|
||||||
uses: shivammathur/setup-php@2.30.0
|
|
||||||
with:
|
|
||||||
php-version: ${{ matrix.php-versions }}
|
|
||||||
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd, apcu
|
|
||||||
ini-values:
|
|
||||||
apc.enable_cli=on
|
|
||||||
coverage: none
|
|
||||||
|
|
||||||
- name: Set up Nextcloud
|
|
||||||
env:
|
|
||||||
DB_PORT: 4444
|
|
||||||
PHP_CLI_SERVER_WORKERS: 10
|
|
||||||
run: |
|
|
||||||
mkdir data
|
|
||||||
php occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
|
||||||
php occ config:system:set memcache.local --value="\\OC\\Memcache\\APCu"
|
|
||||||
php occ config:system:set debug --value=true --type=boolean
|
|
||||||
php -f index.php
|
|
||||||
php -S 0.0.0.0:8081 &
|
|
||||||
export OC_PASS=1234561
|
|
||||||
php occ user:add --password-from-env user1
|
|
||||||
php occ user:add --password-from-env user2
|
|
||||||
php occ app:enable deck
|
|
||||||
php occ app:list
|
|
||||||
cd apps/deck
|
|
||||||
composer install --no-dev
|
|
||||||
npm ci
|
|
||||||
npm run build
|
|
||||||
cd ../../
|
|
||||||
curl -v http://localhost:8081/index.php/login
|
|
||||||
|
|
||||||
- name: Cypress run
|
|
||||||
uses: cypress-io/github-action@v6
|
|
||||||
with:
|
|
||||||
record: false
|
|
||||||
parallel: false
|
|
||||||
wait-on: '${{ env.CYPRESS_baseUrl }}'
|
|
||||||
working-directory: 'apps/${{ env.APP_NAME }}'
|
|
||||||
config: defaultCommandTimeout=10000,video=false
|
|
||||||
env:
|
|
||||||
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
|
|
||||||
npm_package_name: ${{ env.APP_NAME }}
|
|
||||||
|
|
||||||
- name: Upload test failure screenshots
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
if: failure()
|
|
||||||
with:
|
|
||||||
name: Upload screenshots
|
|
||||||
path: apps/${{ env.APP_NAME }}/cypress/screenshots/
|
|
||||||
retention-days: 5
|
|
||||||
|
|
||||||
- name: Upload nextcloud logs
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
if: failure()
|
|
||||||
with:
|
|
||||||
name: Upload nextcloud log
|
|
||||||
path: data/nextcloud.log
|
|
||||||
retention-days: 5
|
|
||||||
17
.github/workflows/dependabot-approve-merge.yml
vendored
@@ -8,33 +8,22 @@ name: Dependabot
|
|||||||
on:
|
on:
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
branches:
|
branches:
|
||||||
- main
|
|
||||||
- master
|
- master
|
||||||
- stable*
|
- stable*
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: dependabot-approve-merge-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
auto-approve-merge:
|
auto-approve-merge:
|
||||||
if: github.actor == 'dependabot[bot]'
|
if: github.actor == 'dependabot[bot]'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
|
||||||
# for hmarr/auto-approve-action to approve PRs
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
# Github actions bot approve
|
# Github actions bot approve
|
||||||
- uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
|
- uses: hmarr/auto-approve-action@v2
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
# Nextcloud bot approve and merge request
|
# Nextcloud bot approve and merge request
|
||||||
- uses: ahmadnassri/action-dependabot-auto-merge@45fc124d949b19b6b8bf6645b6c9d55f4f9ac61a # v2
|
- uses: ahmadnassri/action-dependabot-auto-merge@v2
|
||||||
with:
|
with:
|
||||||
target: minor
|
target: patch
|
||||||
github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }}
|
github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }}
|
||||||
|
|||||||
19
.github/workflows/fixup.yml
vendored
@@ -3,31 +3,18 @@
|
|||||||
# https://github.com/nextcloud/.github
|
# https://github.com/nextcloud/.github
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||||
|
|
||||||
name: Block fixup and squash commits
|
name: Pull request checks
|
||||||
|
|
||||||
on:
|
on: pull_request
|
||||||
pull_request:
|
|
||||||
types: [opened, ready_for_review, reopened, synchronize]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: fixup-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
commit-message-check:
|
commit-message-check:
|
||||||
if: github.event.pull_request.draft == false
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
pull-requests: write
|
|
||||||
name: Block fixup and squash commits
|
name: Block fixup and squash commits
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Run check
|
- name: Run check
|
||||||
uses: skjnldsv/block-fixup-merge-action@42d26e1b536ce61e5cf467d65fb76caf4aa85acf # v1
|
uses: xt0rted/block-autosquash-commits-action@v2
|
||||||
with:
|
with:
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|||||||
88
.github/workflows/integration.yml
vendored
@@ -2,17 +2,8 @@ name: Integration tests
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
|
||||||
- '.github/workflows/integration.yml'
|
|
||||||
- 'appinfo/**'
|
|
||||||
- 'lib/**'
|
|
||||||
- 'templates/**'
|
|
||||||
- 'tests/**'
|
|
||||||
- 'composer.json'
|
|
||||||
- 'composer.lock'
|
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
|
||||||
- master
|
- master
|
||||||
- stable*
|
- stable*
|
||||||
|
|
||||||
@@ -26,7 +17,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['8.1']
|
php-versions: ['7.4']
|
||||||
databases: ['sqlite', 'mysql', 'pgsql']
|
databases: ['sqlite', 'mysql', 'pgsql']
|
||||||
server-versions: ['master']
|
server-versions: ['master']
|
||||||
|
|
||||||
@@ -34,7 +25,7 @@ jobs:
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:14
|
image: postgres
|
||||||
ports:
|
ports:
|
||||||
- 4445:5432/tcp
|
- 4445:5432/tcp
|
||||||
env:
|
env:
|
||||||
@@ -52,7 +43,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout server
|
- name: Checkout server
|
||||||
uses: actions/checkout@v4.1.1
|
uses: actions/checkout@v2.4.0
|
||||||
with:
|
with:
|
||||||
repository: nextcloud/server
|
repository: nextcloud/server
|
||||||
ref: ${{ matrix.server-versions }}
|
ref: ${{ matrix.server-versions }}
|
||||||
@@ -63,32 +54,23 @@ jobs:
|
|||||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||||
git submodule sync --recursive
|
git submodule sync --recursive
|
||||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||||
cd build/integration && composer require --dev phpunit/phpunit:~9
|
|
||||||
|
|
||||||
- name: Checkout app
|
- name: Checkout app
|
||||||
uses: actions/checkout@v4.1.1
|
uses: actions/checkout@v2.4.0
|
||||||
with:
|
with:
|
||||||
path: apps/${{ env.APP_NAME }}
|
path: apps/${{ env.APP_NAME }}
|
||||||
|
|
||||||
- name: Checkout activity
|
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
||||||
with:
|
|
||||||
repository: nextcloud/activity
|
|
||||||
ref: ${{ matrix.server-versions }}
|
|
||||||
path: apps/activity
|
|
||||||
|
|
||||||
- name: Set up php ${{ matrix.php-versions }}
|
- name: Set up php ${{ matrix.php-versions }}
|
||||||
uses: shivammathur/setup-php@2.30.0
|
uses: shivammathur/setup-php@2.16.0
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql, apcu
|
tools: phpunit
|
||||||
ini-values:
|
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql,
|
||||||
apc.enable_cli=on
|
|
||||||
coverage: none
|
coverage: none
|
||||||
|
|
||||||
- name: Set up dependencies
|
- name: Set up PHPUnit
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
working-directory: apps/${{ env.APP_NAME }}
|
||||||
run: composer i --no-dev
|
run: composer i
|
||||||
|
|
||||||
- name: Set up Nextcloud
|
- name: Set up Nextcloud
|
||||||
run: |
|
run: |
|
||||||
@@ -99,63 +81,11 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
mkdir data
|
mkdir data
|
||||||
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||||
./occ config:system:set hashing_default_password --value=true --type=boolean
|
|
||||||
./occ config:system:set memcache.local --value="\\OC\\Memcache\\APCu"
|
|
||||||
./occ config:system:set memcache.distributed --value="\\OC\\Memcache\\APCu"
|
|
||||||
cat config/config.php
|
cat config/config.php
|
||||||
./occ user:list
|
./occ user:list
|
||||||
./occ app:enable --force ${{ env.APP_NAME }}
|
./occ app:enable --force ${{ env.APP_NAME }}
|
||||||
./occ config:system:set query_log_file --value "$PWD/query.log"
|
|
||||||
php -S localhost:8080 &
|
php -S localhost:8080 &
|
||||||
|
|
||||||
- name: Run behat
|
- name: Run behat
|
||||||
working-directory: apps/${{ env.APP_NAME }}/tests/integration
|
working-directory: apps/${{ env.APP_NAME }}/tests/integration
|
||||||
run: ./run.sh
|
run: ./run.sh
|
||||||
|
|
||||||
- name: Query count
|
|
||||||
if: ${{ matrix.databases == 'mysql' }}
|
|
||||||
uses: actions/github-script@v7
|
|
||||||
with:
|
|
||||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
|
||||||
script: |
|
|
||||||
let myOutput = ''
|
|
||||||
let myError = ''
|
|
||||||
|
|
||||||
const options = {}
|
|
||||||
options.listeners = {
|
|
||||||
stdout: (data) => {
|
|
||||||
myOutput += data.toString()
|
|
||||||
},
|
|
||||||
stderr: (data) => {
|
|
||||||
myError += data.toString()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
await exec.exec(`/bin/bash -c "cat query.log | wc -l"`, [], options)
|
|
||||||
msg = myOutput
|
|
||||||
const queryCount = parseInt(myOutput, 10)
|
|
||||||
|
|
||||||
myOutput = ''
|
|
||||||
await exec.exec('cat', ['apps/${{ env.APP_NAME }}/tests/integration/base-query-count.txt'], options)
|
|
||||||
const baseCount = parseInt(myOutput, 10)
|
|
||||||
|
|
||||||
const absoluteIncrease = queryCount - baseCount
|
|
||||||
const relativeIncrease = baseCount <= 0 ? 100 : (parseInt((absoluteIncrease / baseCount * 10000), 10) / 100)
|
|
||||||
|
|
||||||
if (absoluteIncrease >= 100 || relativeIncrease > 5) {
|
|
||||||
const comment = `🐢 Performance warning.\nIt looks like the query count of the integration tests increased with this PR.\nDatabase query count is now ` + queryCount + ' was ' + baseCount + ' (+' + relativeIncrease + '%)\nPlease check your code again. If you added a new test this can be expected and the base value in tests/integration/base-query-count.txt can be increased.'
|
|
||||||
github.rest.issues.createComment({
|
|
||||||
issue_number: context.issue.number,
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
body: comment
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if (queryCount < 100) {
|
|
||||||
const comment = `🐈 Performance messuring seems broken. Failed to get query count.`
|
|
||||||
github.rest.issues.createComment({
|
|
||||||
issue_number: context.issue.number,
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
body: comment
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|||||||
95
.github/workflows/lint-eslint.yml
vendored
@@ -1,95 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
#
|
|
||||||
# Use lint-eslint together with lint-eslint-when-unrelated to make eslint a required check for GitHub actions
|
|
||||||
# https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks
|
|
||||||
|
|
||||||
name: Lint eslint
|
|
||||||
|
|
||||||
on: pull_request
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: lint-eslint-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
changes:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
src: ${{ steps.changes.outputs.src}}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # v3.0.1
|
|
||||||
id: changes
|
|
||||||
continue-on-error: true
|
|
||||||
with:
|
|
||||||
filters: |
|
|
||||||
src:
|
|
||||||
- '.github/workflows/**'
|
|
||||||
- 'src/**'
|
|
||||||
- 'appinfo/info.xml'
|
|
||||||
- 'package.json'
|
|
||||||
- 'package-lock.json'
|
|
||||||
- 'tsconfig.json'
|
|
||||||
- '.eslintrc.*'
|
|
||||||
- '.eslintignore'
|
|
||||||
- '**.js'
|
|
||||||
- '**.ts'
|
|
||||||
- '**.vue'
|
|
||||||
|
|
||||||
lint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
needs: changes
|
|
||||||
if: needs.changes.outputs.src != 'false'
|
|
||||||
|
|
||||||
name: NPM lint
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
||||||
|
|
||||||
- name: Read package.json node and npm engines version
|
|
||||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
|
|
||||||
id: versions
|
|
||||||
with:
|
|
||||||
fallbackNode: '^20'
|
|
||||||
fallbackNpm: '^9'
|
|
||||||
|
|
||||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
|
||||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
|
|
||||||
with:
|
|
||||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
|
||||||
|
|
||||||
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
|
|
||||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
env:
|
|
||||||
CYPRESS_INSTALL_BINARY: 0
|
|
||||||
PUPPETEER_SKIP_DOWNLOAD: true
|
|
||||||
run: npm ci
|
|
||||||
|
|
||||||
- name: Lint
|
|
||||||
run: npm run lint
|
|
||||||
|
|
||||||
summary:
|
|
||||||
permissions:
|
|
||||||
contents: none
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [changes, lint]
|
|
||||||
|
|
||||||
if: always()
|
|
||||||
|
|
||||||
# This is the summary, we just avoid to rename it so that branch protection rules still match
|
|
||||||
name: eslint
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Summary status
|
|
||||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi
|
|
||||||
40
.github/workflows/lint-php-cs.yml
vendored
@@ -1,40 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
|
|
||||||
name: Lint php-cs
|
|
||||||
|
|
||||||
on: pull_request
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: lint-php-cs-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
name: php-cs
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
||||||
|
|
||||||
- name: Set up php8.2
|
|
||||||
uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2
|
|
||||||
with:
|
|
||||||
php-version: 8.2
|
|
||||||
coverage: none
|
|
||||||
ini-file: development
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: composer i
|
|
||||||
|
|
||||||
- name: Lint
|
|
||||||
run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 )
|
|
||||||
54
.github/workflows/lint-php.yml
vendored
@@ -1,54 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
|
|
||||||
name: Lint php
|
|
||||||
|
|
||||||
on: pull_request
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: lint-php-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
php-lint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
php-versions: [ '8.0', '8.1', '8.2', '8.3' ]
|
|
||||||
|
|
||||||
name: php-lint
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
||||||
|
|
||||||
- name: Set up php ${{ matrix.php-versions }}
|
|
||||||
uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2
|
|
||||||
with:
|
|
||||||
php-version: ${{ matrix.php-versions }}
|
|
||||||
coverage: none
|
|
||||||
ini-file: development
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Lint
|
|
||||||
run: composer run lint
|
|
||||||
|
|
||||||
summary:
|
|
||||||
permissions:
|
|
||||||
contents: none
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: php-lint
|
|
||||||
|
|
||||||
if: always()
|
|
||||||
|
|
||||||
name: php-lint-summary
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Summary status
|
|
||||||
run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi
|
|
||||||
48
.github/workflows/lint-stylelint.yml
vendored
@@ -1,48 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
|
|
||||||
name: Lint stylelint
|
|
||||||
|
|
||||||
on: pull_request
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: lint-stylelint-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
name: stylelint
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
||||||
|
|
||||||
- name: Read package.json node and npm engines version
|
|
||||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
|
|
||||||
id: versions
|
|
||||||
with:
|
|
||||||
fallbackNode: '^20'
|
|
||||||
fallbackNpm: '^9'
|
|
||||||
|
|
||||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
|
||||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
|
|
||||||
with:
|
|
||||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
|
||||||
|
|
||||||
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
|
|
||||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
env:
|
|
||||||
CYPRESS_INSTALL_BINARY: 0
|
|
||||||
run: npm ci
|
|
||||||
|
|
||||||
- name: Lint
|
|
||||||
run: npm run stylelint
|
|
||||||
88
.github/workflows/lint.yml
vendored
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
name: Lint
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- stable*
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
php:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
|
|
||||||
|
name: php${{ matrix.php-versions }} lint
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2.4.0
|
||||||
|
- name: Set up php${{ matrix.php-versions }}
|
||||||
|
uses: shivammathur/setup-php@2.16.0
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
coverage: none
|
||||||
|
- name: Lint
|
||||||
|
run: composer run lint
|
||||||
|
|
||||||
|
php-cs-fixer:
|
||||||
|
name: php-cs check
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2.4.0
|
||||||
|
- name: Set up php
|
||||||
|
uses: shivammathur/setup-php@2.16.0
|
||||||
|
with:
|
||||||
|
php-version: 7.4
|
||||||
|
coverage: none
|
||||||
|
- name: Install dependencies
|
||||||
|
run: composer i
|
||||||
|
- name: Run coding standards check
|
||||||
|
run: composer run cs:check
|
||||||
|
|
||||||
|
node:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node-version: [14.x]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2.4.0
|
||||||
|
- name: Use node ${{ matrix.node-version }}
|
||||||
|
uses: actions/setup-node@v2.4.1
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
- name: Set up npm7
|
||||||
|
run: npm i -g npm@7
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
- name: ESLint
|
||||||
|
run: npm run lint
|
||||||
|
|
||||||
|
stylelint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node-version: [14.x]
|
||||||
|
|
||||||
|
name: stylelint node${{ matrix.node-version }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2.4.0
|
||||||
|
|
||||||
|
- name: Set up node ${{ matrix.node-version }}
|
||||||
|
uses: actions/setup-node@v2.4.1
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
|
||||||
|
- name: Set up npm7
|
||||||
|
run: npm i -g npm@7
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Lint
|
||||||
|
run: npm run stylelint
|
||||||
64
.github/workflows/nightly.yml
vendored
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
name: Package nightly
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- nightly
|
||||||
|
schedule:
|
||||||
|
- cron: '0 1 * * *' # run at 2 AM UTC
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node-version: [14.x]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2.4.0
|
||||||
|
- name: Use Node.js ${{ matrix.node-version }}
|
||||||
|
uses: actions/setup-node@v2.4.1
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
- name: Set up npm7
|
||||||
|
run: npm i -g npm@7
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@2.16.0
|
||||||
|
with:
|
||||||
|
php-version: '7.4'
|
||||||
|
tools: composer
|
||||||
|
- name: install dependencies
|
||||||
|
run: |
|
||||||
|
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.12.2/krankerl_0.12.2_amd64.deb
|
||||||
|
sudo dpkg -i krankerl_0.12.2_amd64.deb
|
||||||
|
- name: package
|
||||||
|
run: |
|
||||||
|
uname -a
|
||||||
|
RUST_BACKTRACE=1 krankerl --version
|
||||||
|
RUST_BACKTRACE=1 krankerl package
|
||||||
|
- name: Set git config
|
||||||
|
run: |
|
||||||
|
git config --local user.email "action@github.com"
|
||||||
|
git config --local user.name "GitHub Action"
|
||||||
|
git tag -f nightly
|
||||||
|
- name: Push tag
|
||||||
|
uses: juliushaertl/github-push-action@master
|
||||||
|
with:
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
tags: true
|
||||||
|
force: true
|
||||||
|
- name: Create Release
|
||||||
|
id: create_release
|
||||||
|
uses: juliushaertl/action-release@master
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
tag: nightly
|
||||||
|
files: ./build/artifacts/deck.tar.gz
|
||||||
|
name: Nightly build
|
||||||
|
body: |
|
||||||
|
Nightly release of deck
|
||||||
|
draft: false
|
||||||
|
prerelease: true
|
||||||
|
overwrite: true
|
||||||
4
.github/workflows/nodejs.yml
vendored
@@ -12,9 +12,9 @@ jobs:
|
|||||||
node-version: [14.x]
|
node-version: [14.x]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.1
|
- uses: actions/checkout@v2.4.0
|
||||||
- name: Use Node.js ${{ matrix.node-version }}
|
- name: Use Node.js ${{ matrix.node-version }}
|
||||||
uses: actions/setup-node@v4.0.2
|
uses: actions/setup-node@v2.4.1
|
||||||
with:
|
with:
|
||||||
node-version: ${{ matrix.node-version }}
|
node-version: ${{ matrix.node-version }}
|
||||||
- name: Set up npm7
|
- name: Set up npm7
|
||||||
|
|||||||
73
.github/workflows/npm-audit-fix.yml
vendored
@@ -1,73 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
|
|
||||||
name: Npm audit fix and compile
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
schedule:
|
|
||||||
# At 2:30 on Sundays
|
|
||||||
- cron: '30 2 * * 0'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
branches: ['main', 'master', 'stable28', 'stable27', 'stable26']
|
|
||||||
|
|
||||||
name: npm-audit-fix-${{ matrix.branches }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
||||||
with:
|
|
||||||
ref: ${{ matrix.branches }}
|
|
||||||
|
|
||||||
- name: Read package.json node and npm engines version
|
|
||||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
|
|
||||||
id: versions
|
|
||||||
with:
|
|
||||||
fallbackNode: '^20'
|
|
||||||
fallbackNpm: '^9'
|
|
||||||
|
|
||||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
|
||||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
|
|
||||||
with:
|
|
||||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
|
||||||
|
|
||||||
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
|
|
||||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
|
||||||
|
|
||||||
- name: Fix npm audit
|
|
||||||
run: |
|
|
||||||
npm audit fix
|
|
||||||
|
|
||||||
- name: Run npm ci and npm run build
|
|
||||||
if: always()
|
|
||||||
env:
|
|
||||||
CYPRESS_INSTALL_BINARY: 0
|
|
||||||
run: |
|
|
||||||
npm ci
|
|
||||||
npm run build --if-present
|
|
||||||
|
|
||||||
- name: Create Pull Request
|
|
||||||
if: always()
|
|
||||||
uses: peter-evans/create-pull-request@a4f52f8033a6168103c2538976c07b467e8163bc # v5
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
|
||||||
commit-message: "chore(deps): fix npm audit"
|
|
||||||
committer: GitHub <noreply@github.com>
|
|
||||||
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
|
|
||||||
signoff: true
|
|
||||||
branch: automated/noid/${{ matrix.branches }}-fix-npm-audit
|
|
||||||
title: "[${{ matrix.branches }}] Fix npm audit"
|
|
||||||
body: |
|
|
||||||
Auto-generated fix of npm audit
|
|
||||||
labels: |
|
|
||||||
dependencies
|
|
||||||
3. to review
|
|
||||||
174
.github/workflows/phpunit-mysql.yml
vendored
@@ -1,174 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
|
|
||||||
name: PHPUnit MySQL
|
|
||||||
|
|
||||||
on: pull_request
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: phpunit-mysql-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
changes:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
src: ${{ steps.changes.outputs.src}}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # v3.0.1
|
|
||||||
id: changes
|
|
||||||
continue-on-error: true
|
|
||||||
with:
|
|
||||||
filters: |
|
|
||||||
src:
|
|
||||||
- '.github/workflows/**'
|
|
||||||
- 'appinfo/**'
|
|
||||||
- 'lib/**'
|
|
||||||
- 'templates/**'
|
|
||||||
- 'tests/**'
|
|
||||||
- 'vendor/**'
|
|
||||||
- 'vendor-bin/**'
|
|
||||||
- '.php-cs-fixer.dist.php'
|
|
||||||
- 'composer.json'
|
|
||||||
- 'composer.lock'
|
|
||||||
|
|
||||||
phpunit-mysql:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
needs: changes
|
|
||||||
if: needs.changes.outputs.src != 'false'
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
php-versions: ['8.0', '8.1', '8.2', '8.3']
|
|
||||||
server-versions: ['master']
|
|
||||||
mysql-versions: ['8.1']
|
|
||||||
|
|
||||||
name: MySQL ${{ matrix.mysql-versions }} PHP ${{ matrix.php-versions }} Nextcloud ${{ matrix.server-versions }}
|
|
||||||
|
|
||||||
services:
|
|
||||||
mysql:
|
|
||||||
image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
|
|
||||||
ports:
|
|
||||||
- 4444:3306/tcp
|
|
||||||
env:
|
|
||||||
MYSQL_ROOT_PASSWORD: rootpassword
|
|
||||||
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 5
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Set app env
|
|
||||||
run: |
|
|
||||||
# Split and keep last
|
|
||||||
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Checkout server
|
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
||||||
with:
|
|
||||||
submodules: true
|
|
||||||
repository: nextcloud/server
|
|
||||||
ref: ${{ matrix.server-versions }}
|
|
||||||
|
|
||||||
- name: Checkout app
|
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
||||||
with:
|
|
||||||
path: apps/${{ env.APP_NAME }}
|
|
||||||
|
|
||||||
- name: Set up php ${{ matrix.php-versions }}
|
|
||||||
uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2
|
|
||||||
with:
|
|
||||||
php-version: ${{ matrix.php-versions }}
|
|
||||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
|
||||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, mysql, pdo_mysql
|
|
||||||
coverage: none
|
|
||||||
ini-file: development
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Enable ONLY_FULL_GROUP_BY MySQL option
|
|
||||||
run: |
|
|
||||||
echo "SET GLOBAL sql_mode=(SELECT CONCAT(@@sql_mode,',ONLY_FULL_GROUP_BY'));" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
|
|
||||||
echo "SELECT @@sql_mode;" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
|
|
||||||
|
|
||||||
- name: Check composer file existence
|
|
||||||
id: check_composer
|
|
||||||
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v2
|
|
||||||
with:
|
|
||||||
files: apps/${{ env.APP_NAME }}/composer.json
|
|
||||||
|
|
||||||
- name: Set up dependencies
|
|
||||||
# Only run if phpunit config file exists
|
|
||||||
if: steps.check_composer.outputs.files_exists == 'true'
|
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
|
||||||
run: composer i
|
|
||||||
|
|
||||||
- name: Set up Nextcloud
|
|
||||||
env:
|
|
||||||
DB_PORT: 4444
|
|
||||||
run: |
|
|
||||||
mkdir data
|
|
||||||
./occ maintenance:install --verbose --database=mysql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
|
||||||
./occ app:enable --force ${{ env.APP_NAME }}
|
|
||||||
|
|
||||||
- name: Check PHPUnit script is defined
|
|
||||||
id: check_phpunit
|
|
||||||
continue-on-error: true
|
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
|
||||||
run: |
|
|
||||||
composer run --list | grep "^ test:unit " | wc -l | grep 1
|
|
||||||
|
|
||||||
- name: PHPUnit
|
|
||||||
# Only run if phpunit config file exists
|
|
||||||
if: steps.check_phpunit.outcome == 'success'
|
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
|
||||||
run: composer run test:unit
|
|
||||||
|
|
||||||
- name: Check PHPUnit integration script is defined
|
|
||||||
id: check_integration
|
|
||||||
continue-on-error: true
|
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
|
||||||
run: |
|
|
||||||
composer run --list | grep "^ test:integration " | wc -l | grep 1
|
|
||||||
|
|
||||||
- name: Run Nextcloud
|
|
||||||
# Only run if phpunit integration config file exists
|
|
||||||
if: steps.check_integration.outcome == 'success'
|
|
||||||
run: php -S localhost:8080 &
|
|
||||||
|
|
||||||
- name: PHPUnit integration
|
|
||||||
# Only run if phpunit integration config file exists
|
|
||||||
if: steps.check_integration.outcome == 'success'
|
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
|
||||||
run: composer run test:integration
|
|
||||||
|
|
||||||
- name: Print logs
|
|
||||||
if: always()
|
|
||||||
run: |
|
|
||||||
cat data/nextcloud.log
|
|
||||||
|
|
||||||
- name: Skipped
|
|
||||||
# Fail the action when neither unit nor integration tests ran
|
|
||||||
if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure'
|
|
||||||
run: |
|
|
||||||
echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts'
|
|
||||||
exit 1
|
|
||||||
|
|
||||||
summary:
|
|
||||||
permissions:
|
|
||||||
contents: none
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [changes, phpunit-mysql]
|
|
||||||
|
|
||||||
if: always()
|
|
||||||
|
|
||||||
name: phpunit-mysql-summary
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Summary status
|
|
||||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-mysql.result != 'success' }}; then exit 1; fi
|
|
||||||
168
.github/workflows/phpunit-pgsql.yml
vendored
@@ -1,168 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
|
|
||||||
name: PHPUnit pgsql
|
|
||||||
|
|
||||||
on: pull_request
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: phpunit-pgsql-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
changes:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
src: ${{ steps.changes.outputs.src}}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # v3.0.1
|
|
||||||
id: changes
|
|
||||||
continue-on-error: true
|
|
||||||
with:
|
|
||||||
filters: |
|
|
||||||
src:
|
|
||||||
- '.github/workflows/**'
|
|
||||||
- 'appinfo/**'
|
|
||||||
- 'lib/**'
|
|
||||||
- 'templates/**'
|
|
||||||
- 'tests/**'
|
|
||||||
- 'vendor/**'
|
|
||||||
- 'vendor-bin/**'
|
|
||||||
- '.php-cs-fixer.dist.php'
|
|
||||||
- 'composer.json'
|
|
||||||
- 'composer.lock'
|
|
||||||
|
|
||||||
phpunit-pgsql:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
needs: changes
|
|
||||||
if: needs.changes.outputs.src != 'false'
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
php-versions: ['8.2']
|
|
||||||
server-versions: ['master']
|
|
||||||
|
|
||||||
services:
|
|
||||||
postgres:
|
|
||||||
image: ghcr.io/nextcloud/continuous-integration-postgres-14:latest
|
|
||||||
ports:
|
|
||||||
- 4444:5432/tcp
|
|
||||||
env:
|
|
||||||
POSTGRES_USER: root
|
|
||||||
POSTGRES_PASSWORD: rootpassword
|
|
||||||
POSTGRES_DB: nextcloud
|
|
||||||
options: --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Set app env
|
|
||||||
run: |
|
|
||||||
# Split and keep last
|
|
||||||
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Checkout server
|
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
||||||
with:
|
|
||||||
submodules: true
|
|
||||||
repository: nextcloud/server
|
|
||||||
ref: ${{ matrix.server-versions }}
|
|
||||||
|
|
||||||
- name: Checkout app
|
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
||||||
with:
|
|
||||||
path: apps/${{ env.APP_NAME }}
|
|
||||||
|
|
||||||
- name: Set up php ${{ matrix.php-versions }}
|
|
||||||
uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2
|
|
||||||
with:
|
|
||||||
php-version: ${{ matrix.php-versions }}
|
|
||||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
|
||||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, pgsql, pdo_pgsql
|
|
||||||
coverage: none
|
|
||||||
ini-file: development
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Check composer file existence
|
|
||||||
id: check_composer
|
|
||||||
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v2
|
|
||||||
with:
|
|
||||||
files: apps/${{ env.APP_NAME }}/composer.json
|
|
||||||
|
|
||||||
- name: Set up dependencies
|
|
||||||
# Only run if phpunit config file exists
|
|
||||||
if: steps.check_composer.outputs.files_exists == 'true'
|
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
|
||||||
run: composer i
|
|
||||||
|
|
||||||
- name: Set up Nextcloud
|
|
||||||
env:
|
|
||||||
DB_PORT: 4444
|
|
||||||
run: |
|
|
||||||
mkdir data
|
|
||||||
./occ maintenance:install --verbose --database=pgsql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
|
||||||
./occ app:enable --force ${{ env.APP_NAME }}
|
|
||||||
|
|
||||||
- name: Check PHPUnit script is defined
|
|
||||||
id: check_phpunit
|
|
||||||
continue-on-error: true
|
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
|
||||||
run: |
|
|
||||||
composer run --list | grep "^ test:unit " | wc -l | grep 1
|
|
||||||
|
|
||||||
- name: PHPUnit
|
|
||||||
# Only run if phpunit config file exists
|
|
||||||
if: steps.check_phpunit.outcome == 'success'
|
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
|
||||||
run: composer run test:unit
|
|
||||||
|
|
||||||
- name: Check PHPUnit integration script is defined
|
|
||||||
id: check_integration
|
|
||||||
continue-on-error: true
|
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
|
||||||
run: |
|
|
||||||
composer run --list | grep "^ test:integration " | wc -l | grep 1
|
|
||||||
|
|
||||||
- name: Run Nextcloud
|
|
||||||
# Only run if phpunit integration config file exists
|
|
||||||
if: steps.check_integration.outcome == 'success'
|
|
||||||
run: php -S localhost:8080 &
|
|
||||||
|
|
||||||
- name: PHPUnit integration
|
|
||||||
# Only run if phpunit integration config file exists
|
|
||||||
if: steps.check_integration.outcome == 'success'
|
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
|
||||||
run: composer run test:integration
|
|
||||||
|
|
||||||
- name: Print logs
|
|
||||||
if: always()
|
|
||||||
run: |
|
|
||||||
cat data/nextcloud.log
|
|
||||||
|
|
||||||
- name: Skipped
|
|
||||||
# Fail the action when neither unit nor integration tests ran
|
|
||||||
if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure'
|
|
||||||
run: |
|
|
||||||
echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts'
|
|
||||||
exit 1
|
|
||||||
|
|
||||||
summary:
|
|
||||||
permissions:
|
|
||||||
contents: none
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [changes, phpunit-pgsql]
|
|
||||||
|
|
||||||
if: always()
|
|
||||||
|
|
||||||
name: phpunit-pgsql-summary
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Summary status
|
|
||||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-pgsql.result != 'success' }}; then exit 1; fi
|
|
||||||
157
.github/workflows/phpunit-sqlite.yml
vendored
@@ -1,157 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
|
|
||||||
name: PHPUnit sqlite
|
|
||||||
|
|
||||||
on: pull_request
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: phpunit-sqlite-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
changes:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
src: ${{ steps.changes.outputs.src}}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # v3.0.1
|
|
||||||
id: changes
|
|
||||||
continue-on-error: true
|
|
||||||
with:
|
|
||||||
filters: |
|
|
||||||
src:
|
|
||||||
- '.github/workflows/**'
|
|
||||||
- 'appinfo/**'
|
|
||||||
- 'lib/**'
|
|
||||||
- 'templates/**'
|
|
||||||
- 'tests/**'
|
|
||||||
- 'vendor/**'
|
|
||||||
- 'vendor-bin/**'
|
|
||||||
- '.php-cs-fixer.dist.php'
|
|
||||||
- 'composer.json'
|
|
||||||
- 'composer.lock'
|
|
||||||
|
|
||||||
phpunit-sqlite:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
needs: changes
|
|
||||||
if: needs.changes.outputs.src != 'false'
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
php-versions: ['8.2']
|
|
||||||
server-versions: ['master']
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Set app env
|
|
||||||
run: |
|
|
||||||
# Split and keep last
|
|
||||||
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Checkout server
|
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
||||||
with:
|
|
||||||
submodules: true
|
|
||||||
repository: nextcloud/server
|
|
||||||
ref: ${{ matrix.server-versions }}
|
|
||||||
|
|
||||||
- name: Checkout app
|
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
||||||
with:
|
|
||||||
path: apps/${{ env.APP_NAME }}
|
|
||||||
|
|
||||||
- name: Set up php ${{ matrix.php-versions }}
|
|
||||||
uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2
|
|
||||||
with:
|
|
||||||
php-version: ${{ matrix.php-versions }}
|
|
||||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
|
||||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
|
||||||
coverage: none
|
|
||||||
ini-file: development
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Check composer file existence
|
|
||||||
id: check_composer
|
|
||||||
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v2
|
|
||||||
with:
|
|
||||||
files: apps/${{ env.APP_NAME }}/composer.json
|
|
||||||
|
|
||||||
- name: Set up dependencies
|
|
||||||
# Only run if phpunit config file exists
|
|
||||||
if: steps.check_composer.outputs.files_exists == 'true'
|
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
|
||||||
run: composer i
|
|
||||||
|
|
||||||
- name: Set up Nextcloud
|
|
||||||
env:
|
|
||||||
DB_PORT: 4444
|
|
||||||
run: |
|
|
||||||
mkdir data
|
|
||||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
|
||||||
./occ app:enable --force ${{ env.APP_NAME }}
|
|
||||||
|
|
||||||
- name: Check PHPUnit script is defined
|
|
||||||
id: check_phpunit
|
|
||||||
continue-on-error: true
|
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
|
||||||
run: |
|
|
||||||
composer run --list | grep "^ test:unit " | wc -l | grep 1
|
|
||||||
|
|
||||||
- name: PHPUnit
|
|
||||||
# Only run if phpunit config file exists
|
|
||||||
if: steps.check_phpunit.outcome == 'success'
|
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
|
||||||
run: composer run test:unit
|
|
||||||
|
|
||||||
- name: Check PHPUnit integration script is defined
|
|
||||||
id: check_integration
|
|
||||||
continue-on-error: true
|
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
|
||||||
run: |
|
|
||||||
composer run --list | grep "^ test:integration " | wc -l | grep 1
|
|
||||||
|
|
||||||
- name: Run Nextcloud
|
|
||||||
# Only run if phpunit integration config file exists
|
|
||||||
if: steps.check_integration.outcome == 'success'
|
|
||||||
run: php -S localhost:8080 &
|
|
||||||
|
|
||||||
- name: PHPUnit integration
|
|
||||||
# Only run if phpunit integration config file exists
|
|
||||||
if: steps.check_integration.outcome == 'success'
|
|
||||||
working-directory: apps/${{ env.APP_NAME }}
|
|
||||||
run: composer run test:integration
|
|
||||||
|
|
||||||
- name: Print logs
|
|
||||||
if: always()
|
|
||||||
run: |
|
|
||||||
cat data/nextcloud.log
|
|
||||||
|
|
||||||
- name: Skipped
|
|
||||||
# Fail the action when neither unit nor integration tests ran
|
|
||||||
if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure'
|
|
||||||
run: |
|
|
||||||
echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts'
|
|
||||||
exit 1
|
|
||||||
|
|
||||||
summary:
|
|
||||||
permissions:
|
|
||||||
contents: none
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [changes, phpunit-sqlite]
|
|
||||||
|
|
||||||
if: always()
|
|
||||||
|
|
||||||
name: phpunit-sqlite-summary
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Summary status
|
|
||||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-sqlite.result != 'success' }}; then exit 1; fi
|
|
||||||
94
.github/workflows/phpunit.yml
vendored
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
name: PHPUnit
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- stable*
|
||||||
|
|
||||||
|
env:
|
||||||
|
APP_NAME: deck
|
||||||
|
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
integration:
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
php-versions: ['7.3', '7.4']
|
||||||
|
databases: ['sqlite', 'mysql', 'pgsql']
|
||||||
|
server-versions: ['master']
|
||||||
|
|
||||||
|
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres
|
||||||
|
ports:
|
||||||
|
- 4445:5432/tcp
|
||||||
|
env:
|
||||||
|
POSTGRES_USER: root
|
||||||
|
POSTGRES_PASSWORD: rootpassword
|
||||||
|
POSTGRES_DB: nextcloud
|
||||||
|
options: --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
|
||||||
|
mysql:
|
||||||
|
image: mariadb:10.5
|
||||||
|
ports:
|
||||||
|
- 4444:3306/tcp
|
||||||
|
env:
|
||||||
|
MYSQL_ROOT_PASSWORD: rootpassword
|
||||||
|
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 5
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout server
|
||||||
|
uses: actions/checkout@v2.4.0
|
||||||
|
with:
|
||||||
|
repository: nextcloud/server
|
||||||
|
ref: ${{ matrix.server-versions }}
|
||||||
|
|
||||||
|
- name: Checkout submodules
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||||
|
git submodule sync --recursive
|
||||||
|
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||||
|
|
||||||
|
- name: Checkout app
|
||||||
|
uses: actions/checkout@v2.4.0
|
||||||
|
with:
|
||||||
|
path: apps/${{ env.APP_NAME }}
|
||||||
|
|
||||||
|
- name: Set up php ${{ matrix.php-versions }}
|
||||||
|
uses: shivammathur/setup-php@2.16.0
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
tools: phpunit
|
||||||
|
extensions: zip, gd, mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql
|
||||||
|
coverage: none
|
||||||
|
|
||||||
|
- name: Set up PHPUnit
|
||||||
|
working-directory: apps/${{ env.APP_NAME }}
|
||||||
|
run: composer i
|
||||||
|
|
||||||
|
- name: Set up Nextcloud
|
||||||
|
run: |
|
||||||
|
if [ "${{ matrix.databases }}" = "mysql" ]; then
|
||||||
|
export DB_PORT=4444
|
||||||
|
elif [ "${{ matrix.databases }}" = "pgsql" ]; then
|
||||||
|
export DB_PORT=4445
|
||||||
|
fi
|
||||||
|
mkdir data
|
||||||
|
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||||
|
./occ app:enable --force ${{ env.APP_NAME }}
|
||||||
|
php -S localhost:8080 &
|
||||||
|
|
||||||
|
- name: PHPUnit
|
||||||
|
working-directory: apps/${{ env.APP_NAME }}
|
||||||
|
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.xml
|
||||||
|
|
||||||
|
- name: PHPUnit integration
|
||||||
|
working-directory: apps/${{ env.APP_NAME }}
|
||||||
|
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.integration.xml
|
||||||
34
.github/workflows/pr-feedback.yml
vendored
@@ -1,34 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
|
|
||||||
name: 'Ask for feedback on PRs'
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: '30 1 * * *'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
pr-feedback:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: The get-github-handles-from-website action
|
|
||||||
uses: marcelklehr/get-github-handles-from-website-action@a739600f6b91da4957f51db0792697afbb2f143c # v1.0.0
|
|
||||||
id: scrape
|
|
||||||
with:
|
|
||||||
website: 'https://nextcloud.com/team/'
|
|
||||||
- uses: marcelklehr/pr-feedback-action@601109aa729eb4c8d6d0ece7567b9d4901db4aef
|
|
||||||
with:
|
|
||||||
feedback-message: |
|
|
||||||
Hello there,
|
|
||||||
Thank you so much for taking the time and effort to create a pull request to our Nextcloud project.
|
|
||||||
|
|
||||||
We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process.
|
|
||||||
|
|
||||||
Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6
|
|
||||||
|
|
||||||
Thank you for contributing to Nextcloud and we hope to hear from you soon!
|
|
||||||
days-before-feedback: 14
|
|
||||||
start-date: "2023-07-10"
|
|
||||||
exempt-authors: "${{ steps.scrape.outputs.users }},nextcloud-command,nextcloud-android-bot,skjnldsv,datenangebot"
|
|
||||||
exempt-bots: true
|
|
||||||
36
.github/workflows/psalm.yml
vendored
@@ -1,36 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
|
|
||||||
name: Static analysis
|
|
||||||
|
|
||||||
on: pull_request
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: psalm-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
static-analysis:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
name: static-psalm-analysis
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
||||||
|
|
||||||
- name: Set up php8.2
|
|
||||||
uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2
|
|
||||||
with:
|
|
||||||
php-version: 8.2
|
|
||||||
coverage: none
|
|
||||||
ini-file: development
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: composer i
|
|
||||||
|
|
||||||
- name: Run coding standards check
|
|
||||||
run: composer run psalm
|
|
||||||
31
.github/workflows/static-analysis.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
name: Static analysis
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- stable*
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
static-psalm-analysis:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
ocp-version: [ 'dev-master' ]
|
||||||
|
name: Nextcloud ${{ matrix.ocp-version }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2.4.0
|
||||||
|
- name: Set up php
|
||||||
|
uses: shivammathur/setup-php@2.16.0
|
||||||
|
with:
|
||||||
|
php-version: 7.4
|
||||||
|
tools: composer:v1
|
||||||
|
coverage: none
|
||||||
|
- name: Install dependencies
|
||||||
|
run: composer i
|
||||||
|
- name: Install dependencies
|
||||||
|
run: composer require --dev christophwurst/nextcloud:${{ matrix.ocp-version }}
|
||||||
|
- name: Run coding standards check
|
||||||
|
run: composer run psalm
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
|
|
||||||
name: Auto approve nextcloud/ocp
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request_target:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- master
|
|
||||||
- stable*
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: update-nextcloud-ocp-approve-merge-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
auto-approve-merge:
|
|
||||||
if: github.actor == 'nextcloud-command'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
# for hmarr/auto-approve-action to approve PRs
|
|
||||||
pull-requests: write
|
|
||||||
# for alexwilson/enable-github-automerge-action to approve PRs
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: mdecoleman/pr-branch-name@bab4c71506bcd299fb350af63bb8e53f2940a599 # v2.0.0
|
|
||||||
id: branchname
|
|
||||||
with:
|
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
# GitHub actions bot approve
|
|
||||||
- uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
|
|
||||||
if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp')
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
# Enable GitHub auto merge
|
|
||||||
- name: Auto merge
|
|
||||||
uses: alexwilson/enable-github-automerge-action@5583839f2b22cf6240044f49fba229cd0540a8b8 # main
|
|
||||||
if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp')
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
116
.github/workflows/update-nextcloud-ocp.yml
vendored
@@ -1,116 +0,0 @@
|
|||||||
# This workflow is provided via the organization template repository
|
|
||||||
#
|
|
||||||
# https://github.com/nextcloud/.github
|
|
||||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
|
||||||
|
|
||||||
name: Update nextcloud/ocp
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
schedule:
|
|
||||||
- cron: "5 2 * * 0"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
update-nextcloud-ocp:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
branches: ['main', 'master', 'stable28', 'stable27', 'stable26']
|
|
||||||
|
|
||||||
name: update-nextcloud-ocp-${{ matrix.branches }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- id: checkout
|
|
||||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
||||||
with:
|
|
||||||
ref: ${{ matrix.branches }}
|
|
||||||
submodules: true
|
|
||||||
continue-on-error: true
|
|
||||||
|
|
||||||
- name: Set up php8.2
|
|
||||||
if: steps.checkout.outcome == 'success'
|
|
||||||
uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2
|
|
||||||
with:
|
|
||||||
php-version: 8.2
|
|
||||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
|
||||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
|
||||||
coverage: none
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Read codeowners
|
|
||||||
if: steps.checkout.outcome == 'success'
|
|
||||||
id: codeowners
|
|
||||||
run: |
|
|
||||||
grep '/appinfo/info.xml' .github/CODEOWNERS | cut -f 2- -d ' ' | xargs | awk '{ print "codeowners="$0 }' >> $GITHUB_OUTPUT
|
|
||||||
continue-on-error: true
|
|
||||||
|
|
||||||
- name: Composer install
|
|
||||||
if: steps.checkout.outcome == 'success'
|
|
||||||
run: composer install
|
|
||||||
|
|
||||||
- name: Composer update nextcloud/ocp
|
|
||||||
id: update_branch
|
|
||||||
if: ${{ steps.checkout.outcome == 'success' && matrix.branches != 'main' }}
|
|
||||||
run: composer require --dev nextcloud/ocp:dev-${{ matrix.branches }}
|
|
||||||
|
|
||||||
- name: Raise on issue on failure
|
|
||||||
uses: dacbd/create-issue-action@cdb57ab6ff8862aa09fee2be6ba77a59581921c2 # v2.0.0
|
|
||||||
if: ${{ steps.checkout.outcome == 'success' && failure() && steps.update_branch.conclusion == 'failure' }}
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
title: Failed to update nextcloud/ocp package on branch ${{ matrix.branches }}
|
|
||||||
body: Please check the output of the GitHub action and manually resolve the issues<br>${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}<br>${{ steps.codeowners.outputs.codeowners }}
|
|
||||||
|
|
||||||
- name: Composer update nextcloud/ocp
|
|
||||||
id: update_main
|
|
||||||
if: ${{ steps.checkout.outcome == 'success' && matrix.branches == 'main' }}
|
|
||||||
run: composer require --dev nextcloud/ocp:dev-master
|
|
||||||
|
|
||||||
- name: Raise on issue on failure
|
|
||||||
uses: dacbd/create-issue-action@cdb57ab6ff8862aa09fee2be6ba77a59581921c2 # v2.0.0
|
|
||||||
if: ${{ steps.checkout.outcome == 'success' && failure() && steps.update_main.conclusion == 'failure' }}
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
title: Failed to update nextcloud/ocp package on branch ${{ matrix.branches }}
|
|
||||||
body: Please check the output of the GitHub action and manually resolve the issues<br>${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}<br>${{ steps.codeowners.outputs.codeowners }}
|
|
||||||
|
|
||||||
- name: Reset checkout 3rdparty
|
|
||||||
if: steps.checkout.outcome == 'success'
|
|
||||||
run: |
|
|
||||||
git clean -f 3rdparty
|
|
||||||
git checkout 3rdparty
|
|
||||||
continue-on-error: true
|
|
||||||
|
|
||||||
- name: Reset checkout vendor
|
|
||||||
if: steps.checkout.outcome == 'success'
|
|
||||||
run: |
|
|
||||||
git clean -f vendor
|
|
||||||
git checkout vendor
|
|
||||||
continue-on-error: true
|
|
||||||
|
|
||||||
- name: Reset checkout vendor-bin
|
|
||||||
if: steps.checkout.outcome == 'success'
|
|
||||||
run: |
|
|
||||||
git clean -f vendor-bin
|
|
||||||
git checkout vendor-bin
|
|
||||||
continue-on-error: true
|
|
||||||
|
|
||||||
- name: Create Pull Request
|
|
||||||
if: steps.checkout.outcome == 'success'
|
|
||||||
uses: peter-evans/create-pull-request@a4f52f8033a6168103c2538976c07b467e8163bc # v3
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
|
||||||
commit-message: "chore(dev-deps): Bump nextcloud/ocp package"
|
|
||||||
committer: GitHub <noreply@github.com>
|
|
||||||
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
|
|
||||||
signoff: true
|
|
||||||
branch: automated/noid/${{ matrix.branches }}-update-nextcloud-ocp
|
|
||||||
title: "[${{ matrix.branches }}] Update nextcloud/ocp dependency"
|
|
||||||
body: |
|
|
||||||
Auto-generated update of [nextcloud/ocp](https://github.com/nextcloud-deps/ocp/) dependency
|
|
||||||
labels: |
|
|
||||||
dependencies
|
|
||||||
3. to review
|
|
||||||
2
.gitignore
vendored
@@ -3,11 +3,9 @@ js/
|
|||||||
build/
|
build/
|
||||||
css/style.css
|
css/style.css
|
||||||
css/vendor.css
|
css/vendor.css
|
||||||
cypress/videos/
|
|
||||||
tests/integration/vendor/
|
tests/integration/vendor/
|
||||||
tests/integration/composer.lock
|
tests/integration/composer.lock
|
||||||
tests/.phpunit.result.cache
|
tests/.phpunit.result.cache
|
||||||
vendor/
|
vendor/
|
||||||
.php_cs.cache
|
.php_cs.cache
|
||||||
\.idea/
|
\.idea/
|
||||||
settings.json
|
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
[main]
|
[main]
|
||||||
host = https://www.transifex.com
|
host = https://www.transifex.com
|
||||||
lang_map = hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja, bg_BG: bg, cs_CZ: cs, fi_FI: fi
|
lang_map = bg_BG: bg, cs_CZ: cs, fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja
|
||||||
|
|
||||||
[o:nextcloud:p:nextcloud:r:deck]
|
[nextcloud.deck]
|
||||||
file_filter = translationfiles/<lang>/deck.po
|
file_filter = translationfiles/<lang>/deck.po
|
||||||
source_file = translationfiles/templates/deck.pot
|
source_file = translationfiles/templates/deck.pot
|
||||||
source_lang = en
|
source_lang = en
|
||||||
type = PO
|
type = PO
|
||||||
|
|
||||||
|
|||||||
248
CHANGELOG.md
@@ -1,254 +1,6 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
## 1.13.0-beta.1
|
|
||||||
|
|
||||||
### Added
|
|
||||||
|
|
||||||
- feat: Rename to teams @juliushaertl [#5611](https://github.com/nextcloud/deck/pull/5611)
|
|
||||||
- feat: Implement a team resource provider @juliushaertl [#5625](https://github.com/nextcloud/deck/pull/5625)
|
|
||||||
- Interactive board widget @juliushaertl [#5630](https://github.com/nextcloud/deck/pull/5630)
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- Fix deleted card/board issues @juliushaertl [#5423](https://github.com/nextcloud/deck/pull/5423)
|
|
||||||
- Fixing #5451 @mintsoft [#5455](https://github.com/nextcloud/deck/pull/5455)
|
|
||||||
- fix: Add debounce to update due date @juliushaertl [#5458](https://github.com/nextcloud/deck/pull/5458)
|
|
||||||
- fix(done): Mark card as undone when updating card @stefan-niedermann [#5491](https://github.com/nextcloud/deck/pull/5491)
|
|
||||||
- fixed sorting for upcoming cards @elzody [#5493](https://github.com/nextcloud/deck/pull/5493)
|
|
||||||
- fix(PermissionService#getPermissions): Catch exceptions from getBoard method @marcelklehr [#5542](https://github.com/nextcloud/deck/pull/5542)
|
|
||||||
- fix(activity): Fix permission checks when rendering activities in bac… @nickvergessen [#5533](https://github.com/nextcloud/deck/pull/5533)
|
|
||||||
- fix: Safeguard sync requests to hopefully not spam then server @juliushaertl [#5590](https://github.com/nextcloud/deck/pull/5590)
|
|
||||||
- fix: card move dialog auto close @luka-nextcloud [#5537](https://github.com/nextcloud/deck/pull/5537)
|
|
||||||
- also filter by storage when getting shares in folder @icewind1991 [#5452](https://github.com/nextcloud/deck/pull/5452)
|
|
||||||
|
|
||||||
### Other
|
|
||||||
|
|
||||||
- fix(i18n): Improved wording @rakekniven [#5496](https://github.com/nextcloud/deck/pull/5496)
|
|
||||||
|
|
||||||
## 1.12.0-beta.3
|
|
||||||
|
|
||||||
### Added
|
|
||||||
|
|
||||||
- feat: Move to contenteditable for inline title editing @juliushaertl [#5282](https://github.com/nextcloud/deck/pull/5282)
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- fix: Properly get done state for dav @juliushaertl [#5287](https://github.com/nextcloud/deck/pull/5287)
|
|
||||||
- Fix upcoming cards and label input @juliushaertl [#5290](https://github.com/nextcloud/deck/pull/5290)
|
|
||||||
|
|
||||||
## 1.12.0-beta.2
|
|
||||||
|
|
||||||
### Added
|
|
||||||
|
|
||||||
- Card layout polishing @juliushaertl [#5264](https://github.com/nextcloud/deck/pull/5264)
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- fix: Properly handle adding new tags through multiselect @juliushaertl [#5285](https://github.com/nextcloud/deck/pull/5285)
|
|
||||||
- fix: Avoid throwing errors if no token provided on close @juliushaertl [#5284](https://github.com/nextcloud/deck/pull/5284)
|
|
||||||
- fix: Expose card actions in the card menu (fix #3180) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
|
||||||
- fix: Use full card menu everywhere (fix #3993) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
|
||||||
- fix: Detect end of the activity responses (fix #3395) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
|
||||||
- fix: Add title with absolute date time to activity (fix #4508, fix #2122) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
|
||||||
- fix: Disable dragging archived cards (fix #3271) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
|
||||||
- fix: Hide unavailable card menu entries for archived card view [#5280](https://github.com/nextcloud/deck/pull/5280)
|
|
||||||
- fix: Use localCompare to sort labels (fix #2736) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
|
||||||
- fix: More fitting click target for title editing [#5280](https://github.com/nextcloud/deck/pull/5280)
|
|
||||||
- fix: Always load proper dashboard js (fixes a log error) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
|
||||||
- fix: Set fixed height for card modal (fix #4296) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
|
||||||
- fix: Make sure to always update card description when navigating away (fix #5254 #2705) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
|
||||||
- perf: Already pass board list as initial state @juliushaertl [#5281](https://github.com/nextcloud/deck/pull/5281)
|
|
||||||
|
|
||||||
### Dependencies
|
|
||||||
|
|
||||||
- Fix npm audit @nextcloud-command [#5277](https://github.com/nextcloud/deck/pull/5277)
|
|
||||||
- Update nextcloud/ocp dependency @nextcloud-command [#5275](https://github.com/nextcloud/deck/pull/5275)
|
|
||||||
- Chore(deps): Bump @nextcloud/dialogs from 4.2.1 to 4.2.2 @dependabot[bot] [#5266](https://github.com/nextcloud/deck/pull/5266)
|
|
||||||
- Chore(deps-dev): Bump cypress from 13.4.0 to 13.5.0 @dependabot[bot] [#5267](https://github.com/nextcloud/deck/pull/5267)
|
|
||||||
- Chore(deps): Bump shivammathur/setup-php from 2.27.0 to 2.27.1 @dependabot[bot] [#5268](https://github.com/nextcloud/deck/pull/5268)
|
|
||||||
|
|
||||||
|
|
||||||
## 1.12.0-beta.1
|
|
||||||
|
|
||||||
### Added
|
|
||||||
|
|
||||||
- Added ability to mark a card as done @TehThanos [#4137](https://github.com/nextcloud/deck/pull/4137)
|
|
||||||
- Card Cover Images @jszeibert [#5035](https://github.com/nextcloud/deck/pull/5035)
|
|
||||||
- Upcoming/Today/Tomorrow dashboard widgets @BKapelari [#2658](https://github.com/nextcloud/deck/pull/2658)
|
|
||||||
- Enabled advanced fields option on tag color picker @faab007nl [#4362](https://github.com/nextcloud/deck/pull/4362)
|
|
||||||
- Remember last board, list for new card dialog @luka-nextcloud [#5046](https://github.com/nextcloud/deck/pull/5046)
|
|
||||||
- Add support for bidirectional text @jamazi [#5258](https://github.com/nextcloud/deck/pull/5258)
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- Deck card comment notification label improvement @Jerome-Herbinet [#4748](https://github.com/nextcloud/deck/pull/4748)
|
|
||||||
- update smart picker links @luka-nextcloud [#5047](https://github.com/nextcloud/deck/pull/5047)
|
|
||||||
- feat: Enhance dark mode @juliushaertl [#5045](https://github.com/nextcloud/deck/pull/5045)
|
|
||||||
- fix: export doesn't handle lists with no cards @magikmw [#5096](https://github.com/nextcloud/deck/pull/5096)
|
|
||||||
- add attributes aria-label= and title= to Filters & View Modes buttons @privatemaker [#5133](https://github.com/nextcloud/deck/pull/5133)
|
|
||||||
- fix: Check both card reference url patterns @juliushaertl [#5262](https://github.com/nextcloud/deck/pull/5262)
|
|
||||||
- fix: Avoid too large index on postgres as indexing just the last_editor column is enough @juliushaertl [#5260](https://github.com/nextcloud/deck/pull/5260)
|
|
||||||
- feat: error msg on CreateNewCardCustomPicker & only show available bo… @luka-nextcloud [#5029](https://github.com/nextcloud/deck/pull/5029)
|
|
||||||
- test: add cypress tests for create new deck card @luka-nextcloud [#5025](https://github.com/nextcloud/deck/pull/5025)
|
|
||||||
- Remove duplicate button @solracsf [#4850](https://github.com/nextcloud/deck/pull/4850)
|
|
||||||
- [stable27] fix cypress for new file picker [#5088](https://github.com/nextcloud/deck/pull/5088)
|
|
||||||
- Replace "Timeline" wording with "Activity" in order to be consistent with equivalent contexts throughout Nextcloud @Jerome-Herbinet [#5164](https://github.com/nextcloud/deck/pull/5164)
|
|
||||||
- Board creation limitation : More understandable wordings @Jerome-Herbinet [#5168](https://github.com/nextcloud/deck/pull/5168)
|
|
||||||
- ci(cypress): Fix file picker selector @juliushaertl [#5212](https://github.com/nextcloud/deck/pull/5212)
|
|
||||||
- Switch to native date picker @juliushaertl [#4668](https://github.com/nextcloud/deck/pull/4668)
|
|
||||||
- fixes minor spelling error @FundreasFrohsinn [#5216](https://github.com/nextcloud/deck/pull/5216)
|
|
||||||
- feat(card): tooltip for comment timestamp @fitrahfm [#5253](https://github.com/nextcloud/deck/pull/5253)
|
|
||||||
|
|
||||||
## 1.10.0-beta.1
|
|
||||||
|
|
||||||
### Added
|
|
||||||
|
|
||||||
- Compatibility with Nextcloud 27
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- fix(references): Mute NoPermissionException as it is expected to happen for references @juliushaertl [#4514](https://github.com/nextcloud/deck/pull/4514)
|
|
||||||
- fix(cards): Fix card sizing by limiting too wide style rules @juliushaertl [#4512](https://github.com/nextcloud/deck/pull/4512)
|
|
||||||
- fix: Adapt NcEmptyContent usages to new slots @juliushaertl [#4561](https://github.com/nextcloud/deck/pull/4561)
|
|
||||||
- Gracefully handle not found card for a share @mejo- [#4566](https://github.com/nextcloud/deck/pull/4566)
|
|
||||||
- Prevent tag itself being edit button if user lacks permissions @joshtrichards [#4574](https://github.com/nextcloud/deck/pull/4574)
|
|
||||||
- chore: Remove unused @nextcloud/vue-dashboard @juliushaertl [#4586](https://github.com/nextcloud/deck/pull/4586)
|
|
||||||
- Update Description.vue: Fixes the issue of hidden text by menu bar @pschopen [#4617](https://github.com/nextcloud/deck/pull/4617)
|
|
||||||
- allow user to toggle visibility of the calendar for a deck board @schiessle [#4622](https://github.com/nextcloud/deck/pull/4622)
|
|
||||||
- fix: Append datetime picker to body to avoid cut off @juliushaertl [#4643](https://github.com/nextcloud/deck/pull/4643)
|
|
||||||
- fix: Bring back overdue column by removing faulty condition @juliushaertl [#4660](https://github.com/nextcloud/deck/pull/4660)
|
|
||||||
- fix(sessions): Do not send close request without token @juliushaertl [#4510](https://github.com/nextcloud/deck/pull/4510)
|
|
||||||
- tests(integration): Add test for multiple board shares to the same user @juliushaertl [#4494](https://github.com/nextcloud/deck/pull/4494)
|
|
||||||
- fix(API): Fix board API details parameter to work as expected @nickvergessen [#4518](https://github.com/nextcloud/deck/pull/4518)
|
|
||||||
- Fix : Overlapping expiry dates on tags @Jerome-Herbinet [#4535](https://github.com/nextcloud/deck/pull/4535)
|
|
||||||
- Fix consistency of a "Create card" wording with its equivalent for Notes ("New card") @Jerome-Herbinet [#4534](https://github.com/nextcloud/deck/pull/4534)
|
|
||||||
- tests(integration): Add integration tests for due dates @juliushaertl [#4489](https://github.com/nextcloud/deck/pull/4489)
|
|
||||||
- Better display of card dates (creation and change dates) @Jerome-Herbinet [#4604](https://github.com/nextcloud/deck/pull/4604)
|
|
||||||
- Refactors lib\Activity\DeckProvider.php to improve code readability. @fsamapoor [#4648](https://github.com/nextcloud/deck/pull/4648)
|
|
||||||
- Converts 'strpos()' calls to improve code readability. @fsamapoor [#4657](https://github.com/nextcloud/deck/pull/4657)
|
|
||||||
|
|
||||||
|
|
||||||
## 1.9.0-beta.1
|
|
||||||
|
|
||||||
### Added
|
|
||||||
|
|
||||||
- Export Board @david-loe [#3065](https://github.com/nextcloud/deck/pull/3065)
|
|
||||||
- basic notify_push usage with session handling @alangecker [#3876](https://github.com/nextcloud/deck/pull/3876)
|
|
||||||
- feat(Description): Use text as editor if available @juliushaertl [#4399](https://github.com/nextcloud/deck/pull/4399)
|
|
||||||
- Improve reference provider and add reference widgets @julien-nc [#4422](https://github.com/nextcloud/deck/pull/4422)
|
|
||||||
- live updates 🎉 @alangecker [#4273](https://github.com/nextcloud/deck/pull/4273)
|
|
||||||
- Tag creation from card view @juliushaertl [#4344](https://github.com/nextcloud/deck/pull/4344)
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- Fix component renaming so that acl works on shares again @small1 [#4315](https://github.com/nextcloud/deck/pull/4315)
|
|
||||||
- fix(Sidebar): Only close sidebar on v-click-outside for specific targets @juliushaertl [#4350](https://github.com/nextcloud/deck/pull/4350)
|
|
||||||
- add basic e2e tests for stack title @shoetten [#4206](https://github.com/nextcloud/deck/pull/4206)
|
|
||||||
- App metadata: add links to user and developer documentation @p-bo [#4356](https://github.com/nextcloud/deck/pull/4356)
|
|
||||||
- Update signature of Entity::markFieldUpdated @nickvergessen [#4398](https://github.com/nextcloud/deck/pull/4398)
|
|
||||||
- Remove updated nightly information @xf- [#4419](https://github.com/nextcloud/deck/pull/4419)
|
|
||||||
- perf: Register notifier and resource listener lazy @juliushaertl [#4439](https://github.com/nextcloud/deck/pull/4439)
|
|
||||||
- perf: Lazy load dashboard components @juliushaertl [#4440](https://github.com/nextcloud/deck/pull/4440)
|
|
||||||
- Optimise upcomming overview creation @Raudius [#3793](https://github.com/nextcloud/deck/pull/3793)
|
|
||||||
- Performance boost @juliushaertl [#4452](https://github.com/nextcloud/deck/pull/4452)
|
|
||||||
|
|
||||||
### Other
|
|
||||||
- Dependency updates
|
|
||||||
|
|
||||||
|
|
||||||
## 1.8.0-beta.1
|
|
||||||
### Enhancements
|
|
||||||
|
|
||||||
- Nextcloud 25 compatibility
|
|
||||||
- Performance improvements
|
|
||||||
- Use capped memory cache for board permissions @juliushaertl [#3980](https://github.com/nextcloud/deck/pull/3980)
|
|
||||||
- Improve CalDAV integration performance @juliushaertl [#3982](https://github.com/nextcloud/deck/pull/3982)
|
|
||||||
- Simpify query for getting shared files @juliushaertl [#3983](https://github.com/nextcloud/deck/pull/3983)
|
|
||||||
- Accessibility improvements
|
|
||||||
- Add a11y label for sidebar button @marcelklehr [#3986](https://github.com/nextcloud/deck/pull/3986)
|
|
||||||
- Improve filter popover accessibility @juliushaertl [#3820](https://github.com/nextcloud/deck/pull/3820)
|
|
||||||
- Set ids to skip to content/navigation @juliushaertl [#3924](https://github.com/nextcloud/deck/pull/3924)
|
|
||||||
- Invert icons properly in dark mode @juliushaertl [#3939](https://github.com/nextcloud/deck/pull/3939)
|
|
||||||
- Bump dependencies
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- set last modified when the card was found. Fixes #3763 @ylebre [#3796](https://github.com/nextcloud/deck/pull/3796)
|
|
||||||
- Increase file count after sharing @luka-nextcloud [#3682](https://github.com/nextcloud/deck/pull/3682)
|
|
||||||
- Align Duedate-delete icon properly - fixes nextcloud/deck#3791 @Ben-Ro [#3811](https://github.com/nextcloud/deck/pull/3811)
|
|
||||||
- Fix for issue #3637 @flummer [#3833](https://github.com/nextcloud/deck/pull/3833)
|
|
||||||
- Switch to 'markdown-it-task-checkbox' for rendering of task lists @q-wertz [#3898](https://github.com/nextcloud/deck/pull/3898)
|
|
||||||
- Make rename functions accessibly by keyboard navigation @juliushaertl [#3813](https://github.com/nextcloud/deck/pull/3813)
|
|
||||||
- Prevent opening card and applyLabelFilter on card drag end @eneiluj [#3916](https://github.com/nextcloud/deck/pull/3916)
|
|
||||||
- Inserted required property in the rename list field, to prevent the l… @mstolf [#3862](https://github.com/nextcloud/deck/pull/3862)
|
|
||||||
- Fix share provider for master changes @nickvergessen [#3942](https://github.com/nextcloud/deck/pull/3942)
|
|
||||||
- Fetch attachment folder for the correct user during cron job @juliushaertl [#3952](https://github.com/nextcloud/deck/pull/3952)
|
|
||||||
- Fix z-index for deck sidebar @Raudius [#3884](https://github.com/nextcloud/deck/pull/3884)
|
|
||||||
|
|
||||||
### Other
|
|
||||||
|
|
||||||
- Switch from OC::$server->get to OCP\Server::get @CarlSchwan [#3801](https://github.com/nextcloud/deck/pull/3801)
|
|
||||||
- Add performance section in README @eneiluj [#3830](https://github.com/nextcloud/deck/pull/3830)
|
|
||||||
- Fix static analysis by stubbing more circle methods @juliushaertl [#3900](https://github.com/nextcloud/deck/pull/3900)
|
|
||||||
- fix(docs): fix links to JSON schemas for Trello @wiktor2200 [#3872](https://github.com/nextcloud/deck/pull/3872)
|
|
||||||
- Move to OCP\Collaboration\Resources\LoadAdditionalScriptsEvent @juliushaertl [#3818](https://github.com/nextcloud/deck/pull/3818)
|
|
||||||
- Rename settings to deck settings @PVince81 [#3928](https://github.com/nextcloud/deck/pull/3928)
|
|
||||||
- SCSS cleanup @juliushaertl [#3803](https://github.com/nextcloud/deck/pull/3803)
|
|
||||||
- Hide deprecated projects in sidebar and card details by default @Pytal [#3984](https://github.com/nextcloud/deck/pull/3984)
|
|
||||||
|
|
||||||
## 1.7.0
|
|
||||||
|
|
||||||
### Added
|
|
||||||
|
|
||||||
- Transfer ownership @matchish @luka-nextcloud @juliushaertl [#2496](https://github.com/nextcloud/deck/pull/2496)
|
|
||||||
- Import from trello via CLI @vitormattos [#3182](https://github.com/nextcloud/deck/pull/3182)
|
|
||||||
- Add app config to toggle the default calendar setting as an admin @juliushaertl [#3528](https://github.com/nextcloud/deck/pull/3528)
|
|
||||||
- Show board name in browser title @luka-nextcloud [#3499](https://github.com/nextcloud/deck/pull/3499)
|
|
||||||
- Move DeleteCron to be time insensitive @juliushaertl [#3599](https://github.com/nextcloud/deck/pull/3599)
|
|
||||||
- 🚸 Shows error on board fetchData @vinicius73 [#3653](https://github.com/nextcloud/deck/pull/3653)
|
|
||||||
- Add support for PHP 8.1 @juliushaertl [#3601](https://github.com/nextcloud/deck/pull/3601)
|
|
||||||
- Nextcloud 24 compatibility
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- CardApiController: Fix order of optional parameters @simonspa [#3512](https://github.com/nextcloud/deck/pull/3512)
|
|
||||||
- Exclude deleted boards in the selection for target @luka-nextcloud [#3502](https://github.com/nextcloud/deck/pull/3502)
|
|
||||||
- Fix CalDAV blocking and modernize circles API usage @juliushaertl [#3500](https://github.com/nextcloud/deck/pull/3500)
|
|
||||||
- Timestamps on created and modified at values @luka-nextcloud [#3532](https://github.com/nextcloud/deck/pull/3532)
|
|
||||||
- return the selector for collections @dartcafe [#3552](https://github.com/nextcloud/deck/pull/3552)
|
|
||||||
- Generate fixed link for activity emails @luka-nextcloud [#3611](https://github.com/nextcloud/deck/pull/3611)
|
|
||||||
- 🐛 Fix missing files sidebar @vinicius73 [#3635](https://github.com/nextcloud/deck/pull/3635)
|
|
||||||
- Handle description shortening more gracefully @juliushaertl [#3650](https://github.com/nextcloud/deck/pull/3650)
|
|
||||||
- Sort boards non case sensitive @Ben-Ro [#3560](https://github.com/nextcloud/deck/pull/3560)
|
|
||||||
- Remove unused argument from transfer ownership @juliushaertl [#3712](https://github.com/nextcloud/deck/pull/3712)
|
|
||||||
- Fix: Check all circle shares for permissions @bink [#3625](https://github.com/nextcloud/deck/pull/3625)
|
|
||||||
- Extend API changelog @juliushaertl [#3522](https://github.com/nextcloud/deck/pull/3522)
|
|
||||||
- Fix talk integration @nickvergessen [#3529](https://github.com/nextcloud/deck/pull/3529)
|
|
||||||
- Fix confusion between stackId and boardId in StackService @eneiluj [#3541](https://github.com/nextcloud/deck/pull/3541)
|
|
||||||
- Add horizontal scrollbar into the large table inside description @luka-nextcloud [#3531](https://github.com/nextcloud/deck/pull/3531)
|
|
||||||
- Make links in markdown note bolder @luka-nextcloud [#3530](https://github.com/nextcloud/deck/pull/3530)
|
|
||||||
- Update master php testing versions @nickvergessen [#3561](https://github.com/nextcloud/deck/pull/3561)
|
|
||||||
- Update master php enviroment @nickvergessen [#3582](https://github.com/nextcloud/deck/pull/3582)
|
|
||||||
- Make insert attachment buttom easy to click @luka-nextcloud [#3612](https://github.com/nextcloud/deck/pull/3612)
|
|
||||||
- Remove extra bullet @elitejake [#3613](https://github.com/nextcloud/deck/pull/3613)
|
|
||||||
- l10n: Delete space @Valdnet [#3666](https://github.com/nextcloud/deck/pull/3666)
|
|
||||||
- Update master php testing versions @nickvergessen [#3688](https://github.com/nextcloud/deck/pull/3688)
|
|
||||||
- Fix wording to represent the code behavior @q-wertz [#3685](https://github.com/nextcloud/deck/pull/3685)
|
|
||||||
- Fix cron jobs @nickvergessen [#3689](https://github.com/nextcloud/deck/pull/3689)
|
|
||||||
- Update master php testing versions @nickvergessen [#3695](https://github.com/nextcloud/deck/pull/3695)
|
|
||||||
- Optimise queries when preparing card related notifications @Raudius [#3690](https://github.com/nextcloud/deck/pull/3690)
|
|
||||||
- Properly check for the stack AND setting board permissions @juliushaertl [#3670](https://github.com/nextcloud/deck/pull/3670)
|
|
||||||
- Replace deprecated String.prototype.substr() @CommanderRoot [#3669](https://github.com/nextcloud/deck/pull/3669)
|
|
||||||
- Dependency updates
|
|
||||||
- Show cards after moving into another list [#3736](https://github.com/nextcloud/deck/pull/3736)
|
|
||||||
- Fix paramter replacements when creating deck cards from talk messages @nickvergessen [#3683](https://github.com/nextcloud/deck/pull/3683)
|
|
||||||
- Fix hidden attachment icon on archived cards [#3733](https://github.com/nextcloud/deck/pull/3733)
|
|
||||||
- Adapt the card modal to upstream changes [#3764](https://github.com/nextcloud/deck/pull/3764)
|
|
||||||
- Fix text selection in dark mode and modal view [#3765](https://github.com/nextcloud/deck/pull/3765)
|
|
||||||
- Add missing indices [#3754](https://github.com/nextcloud/deck/pull/3754)
|
|
||||||
|
|
||||||
|
|
||||||
## 1.6.0-beta1
|
## 1.6.0-beta1
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
13
Makefile
@@ -30,16 +30,6 @@ build: clean-dist install-deps build-js
|
|||||||
|
|
||||||
release: clean-dist install-deps-nodev build-js
|
release: clean-dist install-deps-nodev build-js
|
||||||
|
|
||||||
lint: lint-js lint-php
|
|
||||||
|
|
||||||
lint-js:
|
|
||||||
npm run lint
|
|
||||||
npm run stylelint
|
|
||||||
|
|
||||||
lint-php:
|
|
||||||
composer run lint 1>/dev/null
|
|
||||||
composer run cs:check
|
|
||||||
|
|
||||||
build-js: install-deps-js
|
build-js: install-deps-js
|
||||||
npm run build
|
npm run build
|
||||||
|
|
||||||
@@ -60,7 +50,8 @@ ifeq (, $(shell which phpunit 2> /dev/null))
|
|||||||
php $(build_tools_directory)/phpunit.phar -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
|
php $(build_tools_directory)/phpunit.phar -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
|
||||||
php $(build_tools_directory)/phpunit.phar -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
|
php $(build_tools_directory)/phpunit.phar -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
|
||||||
else
|
else
|
||||||
phpunit -c tests/phpunit.integration.xml --testsuite=integration-database --coverage-clover build/php-integration.coverage.xml
|
phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
|
||||||
|
phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
|
||||||
endif
|
endif
|
||||||
|
|
||||||
test-integration:
|
test-integration:
|
||||||
|
|||||||
90
README.md
@@ -1,6 +1,6 @@
|
|||||||
# Deck
|
# Deck
|
||||||
|
|
||||||
[](https://travis-ci.org/nextcloud/deck) [](https://codecov.io/github/nextcloud/deck) [](https://www.codacy.com/app/juliushaertl/deck?utm_source=github.com&utm_medium=referral&utm_content=nextcloud/deck&utm_campaign=Badge_Grade) [](https://scrutinizer-ci.com/g/nextcloud/deck/?branch=main) [](https://webchat.freenode.net/?channels=nextcloud-deck)
|
[](https://travis-ci.org/nextcloud/deck) [](https://codecov.io/github/nextcloud/deck) [](https://www.codacy.com/app/juliushaertl/deck?utm_source=github.com&utm_medium=referral&utm_content=nextcloud/deck&utm_campaign=Badge_Grade) [](https://scrutinizer-ci.com/g/nextcloud/deck/?branch=master) [](https://webchat.freenode.net/?channels=nextcloud-deck)
|
||||||
|
|
||||||
|
|
||||||
Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.
|
Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.
|
||||||
@@ -20,80 +20,68 @@ Deck is a kanban style organization tool aimed at personal planning and project
|
|||||||
### Mobile apps
|
### Mobile apps
|
||||||
|
|
||||||
- [Nextcloud Deck app for Android](https://github.com/stefan-niedermann/nextcloud-deck) - It is available in [F-Droid](https://f-droid.org/de/packages/it.niedermann.nextcloud.deck/) and the [Google Play Store](https://play.google.com/store/apps/details?id=it.niedermann.nextcloud.deck.play)
|
- [Nextcloud Deck app for Android](https://github.com/stefan-niedermann/nextcloud-deck) - It is available in [F-Droid](https://f-droid.org/de/packages/it.niedermann.nextcloud.deck/) and the [Google Play Store](https://play.google.com/store/apps/details?id=it.niedermann.nextcloud.deck.play)
|
||||||
- [deck NG for Android and iOS](https://github.com/meltzow/deck-ng) - It is available in [Google Play Store](https://play.google.com/store/apps/details?id=net.meltzow.deckng) and [Apple App Store](https://apps.apple.com/us/app/deck-ng/id6443334702)
|
|
||||||
|
|
||||||
### 3rd-Party Integrations
|
### 3rd-Party Integrations
|
||||||
|
|
||||||
- [trello-to-deck](https://github.com/maxammann/trello-to-deck) - Migrates cards from Trello
|
- [trello-to-deck](https://github.com/maxammann/trello-to-deck) - Migrates cards from Trello
|
||||||
- [mail2deck](https://github.com/newroco/mail2deck) - Provides an "email in" solution
|
- [mail2deck](https://github.com/newroco/mail2deck) - Provides an "email in" solution
|
||||||
- [A-deck](https://github.com/leoossa/A-deck) - Chrome Extension that allows to create new card in selected stack based on current tab
|
- [A-deck](https://github.com/leoossa/A-deck) - Chrome Extension that allows to create new card in selected stack based on current tab
|
||||||
- [QOwnNotes](https://github.com/pbek/QOwnNotes) - Quickly creates cards and links to them in Markdown notes
|
-
|
||||||
|
|
||||||
## Installation/Update
|
## Installation/Update
|
||||||
|
|
||||||
The app can be installed through the app store within Nextcloud. You can also download the latest release from the [release page](https://github.com/nextcloud-releases/deck/releases).
|
This app is supposed to work on the two latest Nextcloud versions.
|
||||||
|
|
||||||
## Performance limitations
|
### Install latest release
|
||||||
|
|
||||||
Deck is not yet ready for intensive usage.
|
You can download and install the latest release from the [Nextcloud app store](https://apps.nextcloud.com/apps/deck)
|
||||||
A lot of database queries are generated when the number of boards, cards and attachments is high.
|
|
||||||
For example, a user having access to 13 boards, with each board having on average 100 cards,
|
|
||||||
and each card having on average 5 attachments,
|
|
||||||
would generate 6500 database queries when doing the file related queries
|
|
||||||
which would increase the page loading time significantly.
|
|
||||||
|
|
||||||
Improvements on Nextcloud server and Deck itself will improve the situation.
|
### Install from git
|
||||||
|
|
||||||
|
If you want to run the latest development version from git source, you need to clone the repo to your apps folder:
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://github.com/nextcloud/deck.git
|
||||||
|
cd deck
|
||||||
|
make install-deps
|
||||||
|
make build
|
||||||
|
```
|
||||||
|
|
||||||
|
Please make sure you have installed the following dependencies: `make, which, tar, npm, curl, composer`
|
||||||
|
|
||||||
|
### Install the nightly builds
|
||||||
|
|
||||||
|
Instead of setting everything up manually, you can just [download the nightly build](https://github.com/nextcloud/deck/releases/tag/nightly) instead. These builds are updated every 24 hours, and are pre-configured with all the needed dependencies.
|
||||||
|
|
||||||
## Developing
|
## Developing
|
||||||
|
|
||||||
There are multiple ways to develop on Deck. As you will need a Nextcloud server running, the individual options are described below.
|
### PHP
|
||||||
|
|
||||||
### General build instructions
|
Nothing to prepare, just dig into the code.
|
||||||
|
|
||||||
General build instructions for the app itself are the same for all options.
|
### JavaScript
|
||||||
|
|
||||||
To build you will need to have [Node.js](https://nodejs.org/en/) and [Composer](https://getcomposer.org/) installed.
|
Deck requires running a `make build-js` to install npm dependencies and build the JavaScript code using webpack. While developing you can also use `make watch` to rebuild everytime the code changes.
|
||||||
|
|
||||||
- Install PHP dependencies: `composer install --no-dev`
|
#### Hot reloading
|
||||||
- Install JS dependencies: `npm ci`
|
|
||||||
- Build JavaScript for the frontend
|
|
||||||
- Development build `npm run dev`
|
|
||||||
- Watch for changes `npm run watch`
|
|
||||||
- Production build `npm run build`
|
|
||||||
|
|
||||||
### Faster frontend developing with HMR
|
Enable debug mode in your config.php `'debug' => true,`
|
||||||
|
|
||||||
You can enable HMR (Hot module replacement) to avoid page reloads when working on the frontend:
|
|
||||||
|
|
||||||
1. ☑️ Install and enable [`hmr_enabler` app](https://github.com/nextcloud/hmr_enabler)
|
|
||||||
2. 🏁 Run `npm run serve`
|
|
||||||
3. 🌍 Open the normal Nextcloud server URL (not the URL given by above command)
|
|
||||||
|
|
||||||
### GitHub Codespaces / VS Code devcontainer
|
|
||||||
|
|
||||||
- Open code spaces or the repository in VS Code to start the dev container
|
|
||||||
- The container will automatically install all dependencies and build the app
|
|
||||||
- Nextcloud will be installed from the master development branch and be available on a port exposed by the container
|
|
||||||
|
|
||||||
### Docker: Simple app development container
|
|
||||||
|
|
||||||
- Fork the app
|
|
||||||
- Clone the repository: `git clone https://github.com/nextcloud/deck.git`
|
|
||||||
- Go into deck directory: `cd deck`
|
|
||||||
- Build the app as described in the general build instructions
|
|
||||||
- Run Nextcloud development container and mount the apps source code into it
|
|
||||||
|
|
||||||
|
Without SSL:
|
||||||
```
|
```
|
||||||
docker run --rm \
|
npx webpack-dev-server --config webpack.hot.js \
|
||||||
-p 8080:80 \
|
--public localhost:3000 \
|
||||||
-v ~/path/to/app:/var/www/html/apps-extra/app \
|
--output-public-path 'http://localhost:3000/js/'
|
||||||
ghcr.io/juliushaertl/nextcloud-dev-php80:latest
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Full Nextcloud development environment
|
With SSL:
|
||||||
|
```
|
||||||
|
npx webpack-dev-server --config webpack.dev.js --https \
|
||||||
|
--cert ~/repos/nextcloud/nc-dev/data/ssl/nextcloud.local.crt \
|
||||||
|
--key ~/repos/nextcloud/nc-dev/data/ssl/nextcloud.local.key \
|
||||||
|
--public nextcloud.local:3000 \
|
||||||
|
--output-public-path 'https://nextcloud.local:3000/js/'
|
||||||
|
```
|
||||||
|
|
||||||
You need to setup a [development environment](https://docs.nextcloud.com/server/latest/developer_manual//getting_started/devenv.html) of the current Nextcloud version. You can also alternatively install & run the [nextcloud docker container](https://github.com/juliushaertl/nextcloud-docker-dev).
|
|
||||||
After the finished installation, you can clone the deck project directly in the `/[nextcloud-docker-dev-dir]/workspace/server/apps/` folder.
|
|
||||||
|
|
||||||
### Running tests
|
### Running tests
|
||||||
You can use the provided Makefile to run all tests by using:
|
You can use the provided Makefile to run all tests by using:
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ Your report should include:
|
|||||||
- Reproduction steps
|
- Reproduction steps
|
||||||
|
|
||||||
A member of the security team will confirm the vulnerability, determine its impact, and develop a fix.
|
A member of the security team will confirm the vulnerability, determine its impact, and develop a fix.
|
||||||
The fix will be applied to the main branch, tested, and packaged in the next security release.
|
The fix will be applied to the master branch, tested, and packaged in the next security release.
|
||||||
The vulnerability will be publicly announced after the release. Finally, your name will be added
|
The vulnerability will be publicly announced after the release. Finally, your name will be added
|
||||||
to the [hall of fame](https://hackerone.com/nextcloud/thanks) as a thank you from the entire Nextcloud community. Note our
|
to the [hall of fame](https://hackerone.com/nextcloud/thanks) as a thank you from the entire Nextcloud community. Note our
|
||||||
[threat model](https://nextcloud.com/security/threat-model) to know what is expected behavior.
|
[threat model](https://nextcloud.com/security/threat-model) to know what is expected behavior.
|
||||||
|
|||||||
@@ -7,22 +7,18 @@
|
|||||||
|
|
||||||
|
|
||||||
- 📥 Add your tasks to cards and put them in order
|
- 📥 Add your tasks to cards and put them in order
|
||||||
- 📄 Write down additional notes in Markdown
|
- 📄 Write down additional notes in markdown
|
||||||
- 🔖 Assign labels for even better organization
|
- 🔖 Assign labels for even better organization
|
||||||
- 👥 Share with your team, friends or family
|
- 👥 Share with your team, friends or family
|
||||||
- 📎 Attach files and embed them in your Markdown description
|
- 📎 Attach files and embed them in your markdown description
|
||||||
- 💬 Discuss with your team using comments
|
- 💬 Discuss with your team using comments
|
||||||
- ⚡ Keep track of changes in the activity stream
|
- ⚡ Keep track of changes in the activity stream
|
||||||
- 🚀 Get your project organized
|
- 🚀 Get your project organized
|
||||||
|
|
||||||
</description>
|
</description>
|
||||||
<version>1.13.0-beta.1</version>
|
<version>1.7.0-alpha1</version>
|
||||||
<licence>agpl</licence>
|
<licence>agpl</licence>
|
||||||
<author>Julius Härtl</author>
|
<author>Julius Härtl</author>
|
||||||
<documentation>
|
|
||||||
<user>https://deck.readthedocs.io/en/latest/User_documentation_en/</user>
|
|
||||||
<developer>https://deck.readthedocs.io/en/latest/API/</developer>
|
|
||||||
</documentation>
|
|
||||||
<namespace>Deck</namespace>
|
<namespace>Deck</namespace>
|
||||||
<types>
|
<types>
|
||||||
<dav/>
|
<dav/>
|
||||||
@@ -35,32 +31,25 @@
|
|||||||
<screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/1.0/Deck-1.png</screenshot>
|
<screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/1.0/Deck-1.png</screenshot>
|
||||||
<screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/1.0/Deck-2.png</screenshot>
|
<screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/1.0/Deck-2.png</screenshot>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<php min-version="7.3"/>
|
||||||
<database min-version="9.4">pgsql</database>
|
<database min-version="9.4">pgsql</database>
|
||||||
<database>sqlite</database>
|
<database>sqlite</database>
|
||||||
<database min-version="8.0">mysql</database>
|
<database min-version="8.0">mysql</database>
|
||||||
<nextcloud min-version="29" max-version="29"/>
|
<nextcloud min-version="24" max-version="24"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<background-jobs>
|
<background-jobs>
|
||||||
<job>OCA\Deck\Cron\DeleteCron</job>
|
<job>OCA\Deck\Cron\DeleteCron</job>
|
||||||
<job>OCA\Deck\Cron\ScheduledNotifications</job>
|
<job>OCA\Deck\Cron\ScheduledNotifications</job>
|
||||||
<job>OCA\Deck\Cron\CardDescriptionActivity</job>
|
<job>OCA\Deck\Cron\CardDescriptionActivity</job>
|
||||||
<job>OCA\Deck\Cron\SessionsCleanup</job>
|
|
||||||
</background-jobs>
|
</background-jobs>
|
||||||
<repair-steps>
|
|
||||||
<live-migration>
|
|
||||||
<step>OCA\Deck\Migration\DeletedCircleCleanup</step>
|
|
||||||
</live-migration>
|
|
||||||
</repair-steps>
|
|
||||||
<commands>
|
<commands>
|
||||||
<command>OCA\Deck\Command\UserExport</command>
|
<command>OCA\Deck\Command\UserExport</command>
|
||||||
<command>OCA\Deck\Command\BoardImport</command>
|
|
||||||
<command>OCA\Deck\Command\TransferOwnership</command>
|
|
||||||
</commands>
|
</commands>
|
||||||
<activity>
|
<activity>
|
||||||
<settings>
|
<settings>
|
||||||
<setting>OCA\Deck\Activity\SettingChanges</setting>
|
<setting>OCA\Deck\Activity\Setting</setting>
|
||||||
<setting>OCA\Deck\Activity\SettingDescription</setting>
|
|
||||||
<setting>OCA\Deck\Activity\SettingComment</setting>
|
<setting>OCA\Deck\Activity\SettingComment</setting>
|
||||||
|
<setting>OCA\Deck\Activity\DescriptionSetting</setting>
|
||||||
</settings>
|
</settings>
|
||||||
<filters>
|
<filters>
|
||||||
<filter>OCA\Deck\Activity\Filter</filter>
|
<filter>OCA\Deck\Activity\Filter</filter>
|
||||||
|
|||||||
@@ -25,12 +25,6 @@
|
|||||||
return [
|
return [
|
||||||
'routes' => [
|
'routes' => [
|
||||||
['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
|
['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
|
||||||
['name' => 'page#indexList', 'url' => '/board', 'verb' => 'GET'],
|
|
||||||
['name' => 'page#indexBoard', 'url' => '/board/{boardId}', 'verb' => 'GET'],
|
|
||||||
['name' => 'page#indexBoardDetails', 'url' => '/board/{boardId}/details', 'verb' => 'GET'],
|
|
||||||
['name' => 'page#indexCard', 'url' => '/board/{boardId}/card/{cardId}', 'verb' => 'GET'],
|
|
||||||
|
|
||||||
['name' => 'page#redirectToCard', 'url' => '/card/{cardId}', 'verb' => 'GET'],
|
|
||||||
|
|
||||||
// boards
|
// boards
|
||||||
['name' => 'board#index', 'url' => '/boards', 'verb' => 'GET'],
|
['name' => 'board#index', 'url' => '/boards', 'verb' => 'GET'],
|
||||||
@@ -44,8 +38,6 @@ return [
|
|||||||
['name' => 'board#updateAcl', 'url' => '/boards/{boardId}/acl/{aclId}', 'verb' => 'PUT'],
|
['name' => 'board#updateAcl', 'url' => '/boards/{boardId}/acl/{aclId}', 'verb' => 'PUT'],
|
||||||
['name' => 'board#deleteAcl', 'url' => '/boards/{boardId}/acl/{aclId}', 'verb' => 'DELETE'],
|
['name' => 'board#deleteAcl', 'url' => '/boards/{boardId}/acl/{aclId}', 'verb' => 'DELETE'],
|
||||||
['name' => 'board#clone', 'url' => '/boards/{boardId}/clone', 'verb' => 'POST'],
|
['name' => 'board#clone', 'url' => '/boards/{boardId}/clone', 'verb' => 'POST'],
|
||||||
['name' => 'board#transferOwner', 'url' => '/boards/{boardId}/transferOwner', 'verb' => 'PUT'],
|
|
||||||
['name' => 'board#export', 'url' => '/boards/{boardId}/export', 'verb' => 'GET'],
|
|
||||||
|
|
||||||
// stacks
|
// stacks
|
||||||
['name' => 'stack#index', 'url' => '/stacks/{boardId}', 'verb' => 'GET'],
|
['name' => 'stack#index', 'url' => '/stacks/{boardId}', 'verb' => 'GET'],
|
||||||
@@ -66,8 +58,6 @@ return [
|
|||||||
['name' => 'card#reorder', 'url' => '/cards/{cardId}/reorder', 'verb' => 'PUT'],
|
['name' => 'card#reorder', 'url' => '/cards/{cardId}/reorder', 'verb' => 'PUT'],
|
||||||
['name' => 'card#archive', 'url' => '/cards/{cardId}/archive', 'verb' => 'PUT'],
|
['name' => 'card#archive', 'url' => '/cards/{cardId}/archive', 'verb' => 'PUT'],
|
||||||
['name' => 'card#unarchive', 'url' => '/cards/{cardId}/unarchive', 'verb' => 'PUT'],
|
['name' => 'card#unarchive', 'url' => '/cards/{cardId}/unarchive', 'verb' => 'PUT'],
|
||||||
['name' => 'card#done', 'url' => '/cards/{cardId}/done', 'verb' => 'PUT'],
|
|
||||||
['name' => 'card#undone', 'url' => '/cards/{cardId}/undone', 'verb' => 'PUT'],
|
|
||||||
['name' => 'card#assignLabel', 'url' => '/cards/{cardId}/label/{labelId}', 'verb' => 'POST'],
|
['name' => 'card#assignLabel', 'url' => '/cards/{cardId}/label/{labelId}', 'verb' => 'POST'],
|
||||||
['name' => 'card#removeLabel', 'url' => '/cards/{cardId}/label/{labelId}', 'verb' => 'DELETE'],
|
['name' => 'card#removeLabel', 'url' => '/cards/{cardId}/label/{labelId}', 'verb' => 'DELETE'],
|
||||||
['name' => 'card#assignUser', 'url' => '/cards/{cardId}/assign', 'verb' => 'POST'],
|
['name' => 'card#assignUser', 'url' => '/cards/{cardId}/assign', 'verb' => 'POST'],
|
||||||
@@ -100,10 +90,6 @@ return [
|
|||||||
['name' => 'board_api#deleteAcl', 'url' => '/api/v{apiVersion}/boards/{boardId}/acl/{aclId}', 'verb' => 'DELETE'],
|
['name' => 'board_api#deleteAcl', 'url' => '/api/v{apiVersion}/boards/{boardId}/acl/{aclId}', 'verb' => 'DELETE'],
|
||||||
['name' => 'board_api#updateAcl', 'url' => '/api/v{apiVersion}/boards/{boardId}/acl/{aclId}', 'verb' => 'PUT'],
|
['name' => 'board_api#updateAcl', 'url' => '/api/v{apiVersion}/boards/{boardId}/acl/{aclId}', 'verb' => 'PUT'],
|
||||||
|
|
||||||
['name' => 'board_import_api#getAllowedSystems', 'url' => '/api/v{apiVersion}/boards/import/getSystems','verb' => 'GET'],
|
|
||||||
['name' => 'board_import_api#getConfigSchema', 'url' => '/api/v{apiVersion}/boards/import/config/schema/{name}','verb' => 'GET'],
|
|
||||||
['name' => 'board_import_api#import', 'url' => '/api/v{apiVersion}/boards/import','verb' => 'POST'],
|
|
||||||
|
|
||||||
|
|
||||||
['name' => 'stack_api#index', 'url' => '/api/v{apiVersion}/boards/{boardId}/stacks', 'verb' => 'GET'],
|
['name' => 'stack_api#index', 'url' => '/api/v{apiVersion}/boards/{boardId}/stacks', 'verb' => 'GET'],
|
||||||
['name' => 'stack_api#getArchived', 'url' => '/api/v{apiVersion}/boards/{boardId}/stacks/archived', 'verb' => 'GET'],
|
['name' => 'stack_api#getArchived', 'url' => '/api/v{apiVersion}/boards/{boardId}/stacks/archived', 'verb' => 'GET'],
|
||||||
@@ -157,10 +143,5 @@ return [
|
|||||||
['name' => 'overview_api#upcomingCards', 'url' => '/api/v{apiVersion}/overview/upcoming', 'verb' => 'GET'],
|
['name' => 'overview_api#upcomingCards', 'url' => '/api/v{apiVersion}/overview/upcoming', 'verb' => 'GET'],
|
||||||
|
|
||||||
['name' => 'search#search', 'url' => '/api/v{apiVersion}/search', 'verb' => 'GET'],
|
['name' => 'search#search', 'url' => '/api/v{apiVersion}/search', 'verb' => 'GET'],
|
||||||
|
|
||||||
// sessions
|
|
||||||
['name' => 'Session#create', 'url' => '/api/v{apiVersion}/session/create', 'verb' => 'PUT'],
|
|
||||||
['name' => 'Session#sync', 'url' => '/api/v{apiVersion}/session/sync', 'verb' => 'POST'],
|
|
||||||
['name' => 'Session#close', 'url' => '/api/v{apiVersion}/session/close', 'verb' => 'POST'],
|
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -9,42 +9,32 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"justinrainbow/json-schema": "^5.2"
|
"cogpowered/finediff": "0.3.*"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"roave/security-advisories": "dev-master",
|
"roave/security-advisories": "dev-master",
|
||||||
|
"christophwurst/nextcloud": "^21@dev",
|
||||||
"phpunit/phpunit": "^9",
|
"phpunit/phpunit": "^9",
|
||||||
"nextcloud/coding-standard": "^1.1",
|
"nextcloud/coding-standard": "^0.5.0",
|
||||||
"nextcloud/ocp": "dev-master",
|
"symfony/event-dispatcher": "^4.0",
|
||||||
"psalm/phar": "^5.13"
|
"vimeo/psalm": "^4.3",
|
||||||
|
"php-parallel-lint/php-parallel-lint": "^1.2"
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"optimize-autoloader": true,
|
"optimize-autoloader": true,
|
||||||
"allow-plugins": {
|
"classmap-authoritative": true
|
||||||
"composer/package-versions-deprecated": true
|
|
||||||
},
|
|
||||||
"platform": {
|
|
||||||
"php": "8.0"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l",
|
"lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l",
|
||||||
"cs:check": "php-cs-fixer fix --dry-run --diff",
|
"cs:check": "php-cs-fixer fix --dry-run --diff",
|
||||||
"cs:fix": "php-cs-fixer fix",
|
"cs:fix": "php-cs-fixer fix",
|
||||||
"psalm": "psalm.phar",
|
"psalm": "psalm",
|
||||||
"psalm:update-baseline": "psalm.phar --update-baseline",
|
"psalm:fix": "psalm --alter --issues=InvalidReturnType,InvalidNullableReturnType,MismatchingDocblockParamType,MismatchingDocblockReturnType,MissingParamType,InvalidFalsableReturnType",
|
||||||
"psalm:fix": "psalm.phar --alter --issues=InvalidReturnType,InvalidNullableReturnType,MismatchingDocblockParamType,MismatchingDocblockReturnType,MissingParamType,InvalidFalsableReturnType",
|
|
||||||
"test": [
|
"test": [
|
||||||
"@test:unit",
|
"@test:unit",
|
||||||
"@test:integration"
|
"@test:integration"
|
||||||
],
|
],
|
||||||
"test:unit": "vendor/bin/phpunit -c tests/phpunit.xml",
|
"test:unit": "phpunit -c tests/phpunit.xml",
|
||||||
"test:integration": "vendor/bin/phpunit -c tests/phpunit.integration.xml",
|
"test:integration": "phpunit -c tests/phpunit.integration.xml && cd tests/integration && ./run.sh"
|
||||||
"test:api": "cd tests/integration && ./run.sh"
|
|
||||||
},
|
|
||||||
"autoload-dev": {
|
|
||||||
"psr-4": {
|
|
||||||
"OCP\\": "vendor/nextcloud/ocp/OCP"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
4141
composer.lock
generated
@@ -1,9 +0,0 @@
|
|||||||
.icon-deck {
|
|
||||||
background-image: url(../img/deck-dark.svg);
|
|
||||||
filter: var(--background-invert-if-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-deck-white, .icon-deck.icon-white {
|
|
||||||
background-image: url(../img/deck.svg);
|
|
||||||
filter: var(--background-invert-if-dark);
|
|
||||||
}
|
|
||||||
1
css/deck.scss
Normal file
@@ -0,0 +1 @@
|
|||||||
|
@include icon-black-white('deck', 'deck', 1);
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
<?php
|
/*
|
||||||
/**
|
|
||||||
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
|
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
|
||||||
*
|
*
|
||||||
* @author Julius Härtl <jus@bitgrid.net>
|
* @author Julius Härtl <jus@bitgrid.net>
|
||||||
* @author Maxence Lange <maxence@artificial-owl.com>
|
* @author Artem Anufrij <artem.anufrij@live.de>
|
||||||
* @author Luka Trovic <luka.trovic@nextcloud.com>
|
* @author Marin Treselj <marin@pixelipo.com>
|
||||||
|
* @author Oskar Kurz <oskar.kurz@gmail.com>
|
||||||
|
* @author Ryan Fletcher <ryan.fletcher@codepassion.ca>
|
||||||
*
|
*
|
||||||
* @license GNU AGPL version 3 or any later version
|
* @license GNU AGPL version 3 or any later version
|
||||||
*
|
*
|
||||||
@@ -23,15 +24,5 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
@import 'icons';
|
||||||
|
@import 'print';
|
||||||
namespace OCA\Deck\Validators;
|
|
||||||
|
|
||||||
class AssignmentServiceValidator extends BaseValidator {
|
|
||||||
public function rules() {
|
|
||||||
return [
|
|
||||||
'cardId' => ['numeric'],
|
|
||||||
'userId' => ['not_empty', 'not_null', 'not_false', 'max:64'],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
41
css/icons.scss
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
/**
|
||||||
|
* Custom icons
|
||||||
|
*/
|
||||||
|
@include icon-black-white('deck', 'deck', 1);
|
||||||
|
@include icon-black-white('archive', 'deck', 1);
|
||||||
|
@include icon-black-white('circles', 'deck', 1);
|
||||||
|
@include icon-black-white('clone', 'deck', 1);
|
||||||
|
@include icon-black-white('filter', 'deck', 1);
|
||||||
|
@include icon-black-white('filter_set', 'deck', 1);
|
||||||
|
@include icon-black-white('attach', 'deck', 1);
|
||||||
|
@include icon-black-white('reply', 'deck', 1);
|
||||||
|
@include icon-black-white('notifications-dark', 'deck', 1);
|
||||||
|
@include icon-black-white('description', 'deck', 1);
|
||||||
|
|
||||||
|
.icon-toggle-compact-collapsed {
|
||||||
|
@include icon-color('toggle-view-expand', 'deck', $color-black);
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-toggle-compact-expanded {
|
||||||
|
@include icon-color('toggle-view-collapse', 'deck', $color-black);
|
||||||
|
}
|
||||||
|
.icon-activity {
|
||||||
|
@include icon-color('activity-dark', 'activity', $color-black);
|
||||||
|
}
|
||||||
|
.icon-comment--unread {
|
||||||
|
@include icon-color('comment', 'actions', $color-primary, 1, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatardiv.circles {
|
||||||
|
background: var(--color-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-circles {
|
||||||
|
opacity: 1;
|
||||||
|
background-size: 20px;
|
||||||
|
background-position: center center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-colorpicker {
|
||||||
|
background-image: url('../img/color_picker.svg');
|
||||||
|
}
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
const { defineConfig } = require('cypress')
|
|
||||||
|
|
||||||
module.exports = defineConfig({
|
|
||||||
projectId: '1s7wkc',
|
|
||||||
viewportWidth: 1280,
|
|
||||||
viewportHeight: 720,
|
|
||||||
e2e: {
|
|
||||||
// We've imported your old cypress plugins here.
|
|
||||||
// You may want to clean this up later by importing these.
|
|
||||||
setupNodeEvents(on, config) {
|
|
||||||
return require('./cypress/plugins/index.js')(on, config)
|
|
||||||
},
|
|
||||||
baseUrl: 'http://nextcloud.local/index.php',
|
|
||||||
specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
extends: [
|
|
||||||
'plugin:cypress/recommended',
|
|
||||||
],
|
|
||||||
}
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
import { randUser } from '../utils/index.js'
|
|
||||||
const user = randUser()
|
|
||||||
const recipient = randUser()
|
|
||||||
|
|
||||||
describe('Board', function() {
|
|
||||||
|
|
||||||
before(function() {
|
|
||||||
cy.createUser(user)
|
|
||||||
cy.createUser(recipient)
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(function() {
|
|
||||||
cy.login(user)
|
|
||||||
cy.visit('/apps/deck')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can create a board', function() {
|
|
||||||
const board = 'TestBoard'
|
|
||||||
|
|
||||||
cy.intercept({
|
|
||||||
method: 'POST',
|
|
||||||
url: '/index.php/apps/deck/boards',
|
|
||||||
}).as('createBoardRequest')
|
|
||||||
|
|
||||||
// Click "Add board"
|
|
||||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
|
||||||
.eq(3).find('a').first().click({ force: true })
|
|
||||||
|
|
||||||
// Type the board title
|
|
||||||
cy.get('.board-create form input[type=text]')
|
|
||||||
.type(board, { force: true })
|
|
||||||
|
|
||||||
// Submit
|
|
||||||
cy.get('.board-create form input[type=submit]')
|
|
||||||
.first().click({ force: true })
|
|
||||||
|
|
||||||
cy.wait('@createBoardRequest').its('response.statusCode').should('equal', 200)
|
|
||||||
|
|
||||||
cy.get('.app-navigation__list .app-navigation-entry__children .app-navigation-entry')
|
|
||||||
.contains(board).should('be.visible')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Shows and hides the navigation', () => {
|
|
||||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
|
||||||
.contains('Upcoming cards')
|
|
||||||
.should('be.visible')
|
|
||||||
cy.openLeftSidebar()
|
|
||||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
|
||||||
.contains('Upcoming cards')
|
|
||||||
.should('not.be.visible')
|
|
||||||
cy.openLeftSidebar()
|
|
||||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
|
||||||
.contains('Upcoming cards')
|
|
||||||
.should('be.visible')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -1,298 +0,0 @@
|
|||||||
import { randUser } from '../utils/index.js'
|
|
||||||
import { sampleBoard } from '../utils/sampleBoard'
|
|
||||||
import moment from '@nextcloud/moment'
|
|
||||||
|
|
||||||
const user = randUser()
|
|
||||||
const boardData = sampleBoard()
|
|
||||||
|
|
||||||
const auth = {
|
|
||||||
user: user.userId,
|
|
||||||
password: user.password,
|
|
||||||
}
|
|
||||||
|
|
||||||
const useModal = (useModal) => {
|
|
||||||
return cy.request({
|
|
||||||
method: 'POST',
|
|
||||||
url: `${Cypress.env('baseUrl')}/ocs/v2.php/apps/deck/api/v1.0/config/cardDetailsInModal?format=json`,
|
|
||||||
auth,
|
|
||||||
body: { value: useModal },
|
|
||||||
}).then((response) => {
|
|
||||||
expect(response.status).to.eq(200)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
describe('Card', function() {
|
|
||||||
let boardId
|
|
||||||
before(function() {
|
|
||||||
cy.createUser(user)
|
|
||||||
cy.login(user)
|
|
||||||
cy.createExampleBoard({
|
|
||||||
user,
|
|
||||||
board: boardData,
|
|
||||||
}).then((board) => {
|
|
||||||
boardId = board.id
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(function() {
|
|
||||||
cy.login(user)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can add a card', function() {
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
const newCardTitle = 'Write some cypress tests'
|
|
||||||
|
|
||||||
cy.getNavigationEntry(boardData.title)
|
|
||||||
.first().click({ force: true })
|
|
||||||
|
|
||||||
cy.get('.board .stack').eq(0).within(() => {
|
|
||||||
cy.get('.card:contains("Hello world")').should('be.visible')
|
|
||||||
|
|
||||||
cy.get('.button-vue[aria-label*="Add card"]')
|
|
||||||
.first().click()
|
|
||||||
|
|
||||||
cy.get('.stack__card-add form input#new-stack-input-main')
|
|
||||||
.type(newCardTitle)
|
|
||||||
cy.get('.stack__card-add form input[type=submit]')
|
|
||||||
.first().click()
|
|
||||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Create card from overview', function() {
|
|
||||||
cy.visit(`/apps/deck/#/`)
|
|
||||||
const newCardTitle = 'Test create from overview'
|
|
||||||
cy.intercept({ method: 'POST', url: '**/apps/deck/cards' }).as('save')
|
|
||||||
cy.intercept({ method: 'GET', url: '**/apps/deck/boards/*' }).as('getBoard')
|
|
||||||
|
|
||||||
cy.get('.button-vue[aria-label*="Add card"]')
|
|
||||||
.first().click()
|
|
||||||
cy.get('.modal-mask.card-selector .card-title').should('be.visible').click().type(newCardTitle)
|
|
||||||
cy.get('.modal-mask.card-selector .multiselect-board').should('be.visible').click()
|
|
||||||
cy.get('.vs__dropdown-menu [data-cy="board-select-title"]:contains("' + boardData.title + '")').should('be.visible').click()
|
|
||||||
|
|
||||||
cy.wait('@getBoard', { timeout: 7000 })
|
|
||||||
|
|
||||||
cy.get('.modal-mask.card-selector .multiselect-list').should('be.visible').click()
|
|
||||||
cy.get('.vs__dropdown-menu span[title="TestList"]').should('be.visible').click()
|
|
||||||
|
|
||||||
cy.get('.modal-mask.card-selector button.button-vue--vue-primary').should('be.visible').click()
|
|
||||||
cy.wait('@save', { timeout: 7000 })
|
|
||||||
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
cy.reload()
|
|
||||||
cy.get('.board .stack').eq(0).within(() => {
|
|
||||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('Modal', () => {
|
|
||||||
beforeEach(function() {
|
|
||||||
cy.login(user)
|
|
||||||
useModal(true).then(() => {
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can show card details modal', function() {
|
|
||||||
cy.getNavigationEntry(boardData.title)
|
|
||||||
.first().click({ force: true })
|
|
||||||
|
|
||||||
cy.get('.board .stack').eq(0).within(() => {
|
|
||||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
|
||||||
})
|
|
||||||
|
|
||||||
cy.get('.modal__card').should('be.visible')
|
|
||||||
cy.get('.app-sidebar-header__mainname').contains('Hello world')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Attachment from files app', () => {
|
|
||||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
|
||||||
cy.get('.modal__card').should('be.visible')
|
|
||||||
cy.get('#tab-button-attachments').click()
|
|
||||||
cy.get('button.icon-upload').should('be.visible')
|
|
||||||
cy.get('button.icon-folder').should('be.visible')
|
|
||||||
.click()
|
|
||||||
cy.get('.file-picker__main').should('be.visible')
|
|
||||||
cy.get('.file-picker__main [data-filename="welcome.txt"]', { timeout: 30000 }).should('be.visible')
|
|
||||||
.click()
|
|
||||||
cy.get('.dialog__actions button.button-vue--vue-primary').click()
|
|
||||||
cy.get('.attachment-list .basename').contains('welcome.txt')
|
|
||||||
})
|
|
||||||
|
|
||||||
it.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')
|
|
||||||
cy.get('.app-sidebar-header__mainname').contains('Hello world')
|
|
||||||
cy.get('.modal__card .ProseMirror h1').contains('Hello world').should('be.visible')
|
|
||||||
cy.get('.modal__card .ProseMirror h1')
|
|
||||||
.click()
|
|
||||||
.type(' writing more text{enter}- List item{enter}with entries{enter}{enter}Paragraph')
|
|
||||||
cy.wait('@save', { timeout: 7000 })
|
|
||||||
|
|
||||||
cy.reload()
|
|
||||||
cy.get('.modal__card').should('be.visible')
|
|
||||||
cy.get('.modal__card .ProseMirror h1').contains('Hello world writing more text').should('be.visible')
|
|
||||||
cy.get('.modal__card .ProseMirror li').eq(0).contains('List item').should('be.visible')
|
|
||||||
cy.get('.modal__card .ProseMirror li').eq(1).contains('with entries').should('be.visible')
|
|
||||||
cy.get('.modal__card .ProseMirror p').contains('Paragraph').should('be.visible')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Smart picker', () => {
|
|
||||||
const newCardTitle = 'Test smart picker'
|
|
||||||
cy.intercept({ method: 'POST', url: '**/apps/deck/cards' }).as('save')
|
|
||||||
cy.intercept({ method: 'GET', url: '**/apps/deck/boards/*' }).as('getBoard')
|
|
||||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
|
||||||
cy.get('.modal__card').should('be.visible')
|
|
||||||
cy.get('.modal__card .ProseMirror h1')
|
|
||||||
.click()
|
|
||||||
.type('{enter}/create')
|
|
||||||
cy.get('.suggestion-list__item.is-selected').should('be.visible').contains('Create a new deck card')
|
|
||||||
cy.get('.suggestion-list__item.is-selected .link-picker__item').click()
|
|
||||||
cy.get('.reference-picker-modal--content .reference-picker').should('be.visible')
|
|
||||||
cy.get('.reference-picker-modal--content .reference-picker').contains('Create a new card')
|
|
||||||
cy.get('.reference-picker-modal--content .reference-picker .card-title').should('be.visible').click().type(newCardTitle)
|
|
||||||
cy.get('.reference-picker-modal--content .reference-picker .multiselect-board').should('be.visible').contains(boardData.title)
|
|
||||||
cy.get('.reference-picker-modal--content .reference-picker .multiselect-list').should('be.visible').contains(boardData.stacks[0].title)
|
|
||||||
cy.get('.reference-picker-modal--content .reference-picker button.button-vue--vue-primary').should('be.visible').click()
|
|
||||||
cy.wait('@save', { timeout: 7000 })
|
|
||||||
cy.get('.modal__card .ProseMirror').contains('/index.php/apps/deck/card/').should('be.visible')
|
|
||||||
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
cy.reload()
|
|
||||||
cy.get('.board .stack').eq(0).within(() => {
|
|
||||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('Sidebar', () => {
|
|
||||||
beforeEach(function() {
|
|
||||||
cy.login(user)
|
|
||||||
useModal(false).then(() => {
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Show the sidebar', () => {
|
|
||||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
|
||||||
cy.get('#app-sidebar-vue')
|
|
||||||
.find('.ProseMirror h1').contains('Hello world writing more text').should('be.visible')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Set a due date', function() {
|
|
||||||
const newCardTitle = 'Card with a due date'
|
|
||||||
|
|
||||||
cy.get('.button-vue[aria-label*="Add card"]')
|
|
||||||
.first().click()
|
|
||||||
cy.get('.stack__card-add form input#new-stack-input-main')
|
|
||||||
.type(newCardTitle)
|
|
||||||
cy.get('.stack__card-add form input[type=submit]')
|
|
||||||
.first().click()
|
|
||||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible')
|
|
||||||
|
|
||||||
cy.get('.card:contains("Card with a due date")').should('be.visible').click()
|
|
||||||
|
|
||||||
cy.get('#app-sidebar-vue [data-cy-due-date-actions]').should('be.visible').click()
|
|
||||||
|
|
||||||
// Set a due date through shortcut
|
|
||||||
cy.get('[data-cy-due-date-shortcut="tomorrow"] button').should('be.visible').click()
|
|
||||||
|
|
||||||
const tomorrow = moment().add(1, 'days').hour(8).minutes(0).seconds(0)
|
|
||||||
cy.get('#card-duedate-picker').should('have.value', tomorrow.format('YYYY-MM-DDTHH:mm'))
|
|
||||||
|
|
||||||
const now = moment().hour(11).minutes(0).seconds(0).toDate()
|
|
||||||
cy.clock(now)
|
|
||||||
cy.log(now)
|
|
||||||
cy.tick(60_000)
|
|
||||||
|
|
||||||
cy.get(`.card:contains("${newCardTitle}")`).find('[data-due-state="Now"]').should('be.visible').should('contain', '21 hours')
|
|
||||||
|
|
||||||
|
|
||||||
// Remove the due date again
|
|
||||||
cy.get('#app-sidebar-vue [data-cy-due-date-actions]').should('be.visible').click()
|
|
||||||
// tick needed to show the popover menu
|
|
||||||
cy.tick(1_000)
|
|
||||||
cy.get('[data-cy-due-date-remove] button').should('be.visible').click()
|
|
||||||
|
|
||||||
cy.get(`.card:contains("${newCardTitle}")`).find('[data-due-state]').should('not.exist')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Add a label', function() {
|
|
||||||
const newCardTitle = 'Card with labels'
|
|
||||||
|
|
||||||
cy.get('.button-vue[aria-label*="Add card"]')
|
|
||||||
.first().click()
|
|
||||||
cy.get('.stack__card-add form input#new-stack-input-main')
|
|
||||||
.type(newCardTitle)
|
|
||||||
cy.get('.stack__card-add form input[type=submit]')
|
|
||||||
.first().click()
|
|
||||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible').click()
|
|
||||||
|
|
||||||
cy.get('#app-sidebar-vue [data-test="tag-selector"]').should('be.visible').click()
|
|
||||||
cy.get('.vs__dropdown-menu .tag:contains("Action needed")').should('be.visible').click()
|
|
||||||
cy.get('.vs__selected .tag:contains("Action needed")').should('be.visible')
|
|
||||||
cy.get('.vs__dropdown-menu .tag:contains("Later")').should('be.visible').click()
|
|
||||||
|
|
||||||
cy.get('.vs__selected .tag:contains("Action needed")').should('be.visible')
|
|
||||||
cy.get('.vs__selected .tag:contains("Action needed")')
|
|
||||||
.parent().find('button').click()
|
|
||||||
|
|
||||||
cy.get(`.card:contains("${newCardTitle}")`).find('.labels li:contains("Later")')
|
|
||||||
.should('be.visible')
|
|
||||||
cy.get(`.card:contains("${newCardTitle}")`).find('.labels li:contains("Action needed")')
|
|
||||||
.should('not.exist')
|
|
||||||
})
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('Card actions', () => {
|
|
||||||
beforeEach(function() {
|
|
||||||
cy.login(user)
|
|
||||||
useModal(false).then(() => {
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Custom card actions', () => {
|
|
||||||
const myAction = {
|
|
||||||
label: 'Test action',
|
|
||||||
icon: 'icon-user',
|
|
||||||
callback(card) {
|
|
||||||
console.log('Called callback', card)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
cy.spy(myAction, 'callback').as('myAction.callback')
|
|
||||||
|
|
||||||
cy.window().then(win => {
|
|
||||||
win.OCA.Deck.registerCardAction(myAction)
|
|
||||||
})
|
|
||||||
|
|
||||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
|
||||||
cy.get('#app-sidebar-vue')
|
|
||||||
.find('.ProseMirror h1').contains('Hello world').should('be.visible')
|
|
||||||
|
|
||||||
cy.get('.app-sidebar-header .action-item__menutoggle').click()
|
|
||||||
cy.get('.v-popper__popper button:contains("Test action")').click()
|
|
||||||
|
|
||||||
cy.get('@myAction.callback')
|
|
||||||
.should('be.called')
|
|
||||||
.its('firstCall.args.0')
|
|
||||||
.as('args')
|
|
||||||
|
|
||||||
cy.url().then(url => {
|
|
||||||
const cardId = url.split('/').pop()
|
|
||||||
cy.get('@args').should('have.property', 'name', 'Hello world')
|
|
||||||
cy.get('@args').should('have.property', 'stackname', 'TestList')
|
|
||||||
cy.get('@args').should('have.property', 'boardname', 'MyTestBoard')
|
|
||||||
cy.get('@args').its('link').then((url) => {
|
|
||||||
expect(url.split('/').pop() === cardId).to.be.true
|
|
||||||
cy.visit(url)
|
|
||||||
cy.get('#app-sidebar-vue')
|
|
||||||
.find('.ProseMirror h1').contains('Hello world').should('be.visible')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
import { randUser } from '../utils/index.js'
|
|
||||||
import { sampleBoard } from '../utils/sampleBoard'
|
|
||||||
const user = randUser()
|
|
||||||
|
|
||||||
describe('Deck dashboard', function() {
|
|
||||||
before(function() {
|
|
||||||
cy.createUser(user)
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(function() {
|
|
||||||
cy.login(user)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can show the right title on the dashboard', function() {
|
|
||||||
cy.visit('/apps/deck')
|
|
||||||
cy.get('.board-title h2')
|
|
||||||
.should('have.length', 1).first()
|
|
||||||
.should($el => expect($el.text().trim()).to.equal('Upcoming cards'))
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can see the default "Personal Board" created for user by default', function() {
|
|
||||||
cy.visit('/apps/deck')
|
|
||||||
|
|
||||||
const defaultBoard = 'Personal'
|
|
||||||
|
|
||||||
cy.get('.app-navigation-entry-wrapper[icon=icon-deck]')
|
|
||||||
.find('ul.app-navigation-entry__children .app-navigation-entry:contains(' + defaultBoard + ')')
|
|
||||||
.first()
|
|
||||||
.contains(defaultBoard)
|
|
||||||
.should('be.visible')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Shows a card with due date on the overview', function() {
|
|
||||||
cy.createExampleBoard({
|
|
||||||
user,
|
|
||||||
board: sampleBoard(),
|
|
||||||
}).then((board) => {
|
|
||||||
cy.visit(`/apps/deck/#/board/${board.id}`)
|
|
||||||
|
|
||||||
cy.intercept({ method: 'PUT', url: '**/apps/deck/cards/**' }).as('updateCard')
|
|
||||||
|
|
||||||
const newCardTitle = 'Hello world'
|
|
||||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible').click()
|
|
||||||
cy.get('#app-sidebar-vue [data-cy-due-date-actions]').should('be.visible').click()
|
|
||||||
cy.get('[data-cy-due-date-shortcut="tomorrow"] button').should('be.visible').click()
|
|
||||||
|
|
||||||
cy.wait('@updateCard')
|
|
||||||
|
|
||||||
cy.get('button[title="Close sidebar"]').click()
|
|
||||||
cy.get('.app-navigation-entry:contains("Upcoming cards") a').click()
|
|
||||||
|
|
||||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible')
|
|
||||||
cy.get('.dashboard-column:contains("Tomorrow")').should('be.visible')
|
|
||||||
cy.get('.dashboard-column:contains("Tomorrow") .card:contains("Hello world")').should('be.visible')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
import { randUser } from '../utils/index.js'
|
|
||||||
import { sampleBoard } from '../utils/sampleBoard'
|
|
||||||
const user = randUser()
|
|
||||||
const recipient = randUser()
|
|
||||||
|
|
||||||
describe('Board', function() {
|
|
||||||
before(function() {
|
|
||||||
cy.createUser(user)
|
|
||||||
cy.createUser(recipient)
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(function() {
|
|
||||||
cy.login(user)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Share a board to a user', function() {
|
|
||||||
const board = sampleBoard('Read only board')
|
|
||||||
cy.createExampleBoard({ user, board }).then((board) => {
|
|
||||||
const boardId = board.id
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
cy.get('.board-title').contains(board.title)
|
|
||||||
|
|
||||||
cy.shareBoardWithUi(recipient.userId)
|
|
||||||
|
|
||||||
cy.login(recipient)
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
cy.get('.board-title').contains(board.title)
|
|
||||||
cy.get('.button-vue[aria-label*="Add card"]')
|
|
||||||
.should('not.exist')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Share a board to a user as writable', function() {
|
|
||||||
const board = sampleBoard('Editable board')
|
|
||||||
cy.createExampleBoard({ user, board }).then((board) => {
|
|
||||||
const boardId = board.id
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
cy.get('.board-title').contains(board.title)
|
|
||||||
|
|
||||||
cy.shareBoardWithUi(recipient.userId)
|
|
||||||
|
|
||||||
cy.intercept({ method: 'PUT', url: '**/apps/deck/boards/*/acl/*' }).as('setAcl')
|
|
||||||
cy.get(`[data-cy="acl-participant:${recipient.userId}"]`).find('[data-cy="action:permission-edit"]').click()
|
|
||||||
cy.wait('@setAcl')
|
|
||||||
|
|
||||||
cy.login(recipient)
|
|
||||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
|
||||||
cy.get('.board-title').contains(board.title)
|
|
||||||
cy.get('.button-vue[aria-label*="Add card"]')
|
|
||||||
.first().click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
import { randUser } from '../utils/index.js'
|
|
||||||
const user = randUser()
|
|
||||||
|
|
||||||
const boardTitle = 'TestBoard'
|
|
||||||
const testBoardData = {
|
|
||||||
title: boardTitle,
|
|
||||||
stacks: [
|
|
||||||
{ title: 'Existing Stack1' },
|
|
||||||
{ title: 'Existing Stack2' },
|
|
||||||
],
|
|
||||||
}
|
|
||||||
|
|
||||||
describe('Stack', function() {
|
|
||||||
|
|
||||||
before(function() {
|
|
||||||
cy.createUser(user)
|
|
||||||
cy.login(user)
|
|
||||||
cy.createExampleBoard({
|
|
||||||
user,
|
|
||||||
board: testBoardData,
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(function() {
|
|
||||||
cy.login(user)
|
|
||||||
cy.visit('/apps/deck')
|
|
||||||
|
|
||||||
cy.openLeftSidebar()
|
|
||||||
cy.getNavigationEntry(boardTitle)
|
|
||||||
.click({ force: true })
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can create a stack', function() {
|
|
||||||
cy.get('#stack-add button').first().click()
|
|
||||||
cy.focused().type('List 1')
|
|
||||||
cy.get('#stack-add form input[type=submit]').first().click()
|
|
||||||
|
|
||||||
cy.contains('List 1').should('be.visible')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can edit a stack title', function() {
|
|
||||||
cy.contains('Existing Stack1')
|
|
||||||
cy.get('[data-cy-stack="Existing Stack1"]').within(() => {
|
|
||||||
cy.contains('Existing Stack1').click()
|
|
||||||
cy.focused().type(' renamed')
|
|
||||||
cy.get('[data-cy="editStackTitleForm"] input[type="submit"]').click()
|
|
||||||
})
|
|
||||||
cy.contains('Existing Stack1 renamed').should('be.visible')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can abort a stack title edit via esc', function() {
|
|
||||||
cy.contains('Existing Stack2').click()
|
|
||||||
cy.focused().type(' with a new title, maybe?')
|
|
||||||
cy.focused().type('{esc}')
|
|
||||||
|
|
||||||
cy.contains('Existing Stack2').should('be.visible')
|
|
||||||
cy.contains('Existing Stack2 with a new title, maybe?').should('not.exist')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Can abort a stack title edit via click outside', function() {
|
|
||||||
cy.contains('Existing Stack2').click()
|
|
||||||
cy.focused().type(' with a new title, maybe?')
|
|
||||||
cy.get('[data-cy-stack="Existing Stack2"]').click('bottom')
|
|
||||||
|
|
||||||
cy.contains('Existing Stack2').should('be.visible')
|
|
||||||
cy.contains('Existing Stack2 with a new title, maybe?').should('not.exist')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Using fixtures to represent data",
|
|
||||||
"email": "hello@cypress.io",
|
|
||||||
"body": "Fixtures are a great way to mock data for responses to routes"
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
/// <reference types="cypress" />
|
|
||||||
// ***********************************************************
|
|
||||||
// This example plugins/index.js can be used to load plugins
|
|
||||||
//
|
|
||||||
// You can change the location of this file or turn off loading
|
|
||||||
// the plugins file with the 'pluginsFile' configuration option.
|
|
||||||
//
|
|
||||||
// You can read more here:
|
|
||||||
// https://on.cypress.io/plugins-guide
|
|
||||||
// ***********************************************************
|
|
||||||
|
|
||||||
// This function is called when a project is opened or re-opened (e.g. due to
|
|
||||||
// the project's config changing)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @type {Cypress.PluginConfig}
|
|
||||||
*/
|
|
||||||
// eslint-disable-next-line no-unused-vars
|
|
||||||
module.exports = (on, config) => {
|
|
||||||
// `on` is used to hook into various events Cypress emits
|
|
||||||
// `config` is the resolved Cypress config
|
|
||||||
}
|
|
||||||
@@ -1,120 +0,0 @@
|
|||||||
/**
|
|
||||||
* @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>
|
|
||||||
*
|
|
||||||
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
|
||||||
*
|
|
||||||
* @license GNU AGPL version 3 or any later version
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as
|
|
||||||
* published by the Free Software Foundation, either version 3 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { addCommands } from '@nextcloud/cypress'
|
|
||||||
|
|
||||||
addCommands()
|
|
||||||
|
|
||||||
const url = Cypress.config('baseUrl').replace(/\/index.php\/?$/g, '')
|
|
||||||
Cypress.env('baseUrl', url)
|
|
||||||
|
|
||||||
Cypress.Commands.add('openLeftSidebar', () => {
|
|
||||||
cy.get('.app-navigation button.app-navigation-toggle').click()
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add('deckCreateBoard', ({ user, password }, title) => {
|
|
||||||
cy.login(user, password)
|
|
||||||
|
|
||||||
cy.get('.app-navigation button.app-navigation-toggle').click()
|
|
||||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
|
||||||
.eq(3)
|
|
||||||
.find('a')
|
|
||||||
.first()
|
|
||||||
.click({ force: true })
|
|
||||||
|
|
||||||
cy.get('.board-create form input[type=text]').type(title, { force: true })
|
|
||||||
|
|
||||||
cy.get('.board-create form input[type=submit]')
|
|
||||||
.first()
|
|
||||||
.click({ force: true })
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add('deckCreateList', ({ user, password }, title) => {
|
|
||||||
cy.login(user, password)
|
|
||||||
|
|
||||||
cy.get('.app-navigation button.app-navigation-toggle').click()
|
|
||||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
|
||||||
.eq(3)
|
|
||||||
.find('a.app-navigation-entry-link')
|
|
||||||
.first()
|
|
||||||
.click({ force: true })
|
|
||||||
|
|
||||||
cy.get('#stack-add button').first().click()
|
|
||||||
cy.get('#stack-add form input#new-stack-input-main').type(title)
|
|
||||||
cy.get('#stack-add form input[type=submit]').first().click()
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add('createExampleBoard', ({ user, board }) => {
|
|
||||||
const auth = {
|
|
||||||
user: user.userId,
|
|
||||||
password: user.password,
|
|
||||||
}
|
|
||||||
cy.request({
|
|
||||||
method: 'POST',
|
|
||||||
url: `${Cypress.env('baseUrl')}/index.php/apps/deck/api/v1.0/boards`,
|
|
||||||
auth,
|
|
||||||
body: { title: board.title, color: board.color ?? 'ff0000' },
|
|
||||||
}).then((boardResponse) => {
|
|
||||||
expect(boardResponse.status).to.eq(200)
|
|
||||||
const boardData = boardResponse.body
|
|
||||||
for (const stackIndex in board.stacks) {
|
|
||||||
const stack = board.stacks[stackIndex]
|
|
||||||
cy.request({
|
|
||||||
method: 'POST',
|
|
||||||
url: `${Cypress.env('baseUrl')}/index.php/apps/deck/api/v1.0/boards/${boardData.id}/stacks`,
|
|
||||||
auth,
|
|
||||||
body: { title: stack.title, order: 0 },
|
|
||||||
}).then((stackResponse) => {
|
|
||||||
const stackData = stackResponse.body
|
|
||||||
for (const cardIndex in stack.cards) {
|
|
||||||
const card = stack.cards[cardIndex]
|
|
||||||
cy.request({
|
|
||||||
method: 'POST',
|
|
||||||
url: `${Cypress.env('baseUrl')}/index.php/apps/deck/api/v1.0/boards/${boardData.id}/stacks/${stackData.id}/cards`,
|
|
||||||
auth,
|
|
||||||
body: { title: card.title, description: card.description ?? '' },
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
cy.wrap(boardData)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add('getNavigationEntry', (boardTitle) => {
|
|
||||||
return cy.get('.app-navigation-entry-wrapper[icon=icon-deck]')
|
|
||||||
.find('ul.app-navigation-entry__children .app-navigation-entry:contains(' + boardTitle + ')')
|
|
||||||
.find('a.app-navigation-entry-link')
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add('shareBoardWithUi', (userId) => {
|
|
||||||
cy.intercept({ method: 'GET', url: `**/ocs/v2.php/apps/files_sharing/api/v1/sharees?search=${userId}*` }).as('fetchRecipients')
|
|
||||||
cy.get('[aria-label="Open details"]').click()
|
|
||||||
cy.get('.app-sidebar').should('be.visible')
|
|
||||||
cy.get('.select input').type(`${userId}`)
|
|
||||||
cy.wait('@fetchRecipients', { timeout: 7000 })
|
|
||||||
|
|
||||||
cy.get('.vs__dropdown-menu .option').first().contains(userId)
|
|
||||||
cy.get('.select input').type('{enter}')
|
|
||||||
|
|
||||||
cy.get('.shareWithList').contains(userId)
|
|
||||||
})
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
||||||
<title>Components App</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div data-cy-root></div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
// ***********************************************************
|
|
||||||
// This example support/component.js is processed and
|
|
||||||
// loaded automatically before your test files.
|
|
||||||
//
|
|
||||||
// This is a great place to put global configuration and
|
|
||||||
// behavior that modifies Cypress.
|
|
||||||
//
|
|
||||||
// You can change the location of this file or turn off
|
|
||||||
// automatically serving support files with the
|
|
||||||
// 'supportFile' configuration option.
|
|
||||||
//
|
|
||||||
// You can read more here:
|
|
||||||
// https://on.cypress.io/configuration
|
|
||||||
// ***********************************************************
|
|
||||||
|
|
||||||
// Import commands.js using ES2015 syntax:
|
|
||||||
import './commands'
|
|
||||||
|
|
||||||
// Alternatively you can use CommonJS syntax:
|
|
||||||
// require('./commands')
|
|
||||||
|
|
||||||
import { mount } from 'cypress/vue2'
|
|
||||||
|
|
||||||
Cypress.Commands.add('mount', mount)
|
|
||||||
|
|
||||||
// Example use:
|
|
||||||
// cy.mount(MyComponent)
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
// ***********************************************************
|
|
||||||
// This example support/index.js is processed and
|
|
||||||
// loaded automatically before your test files.
|
|
||||||
//
|
|
||||||
// This is a great place to put global configuration and
|
|
||||||
// behavior that modifies Cypress.
|
|
||||||
//
|
|
||||||
// You can change the location of this file or turn off
|
|
||||||
// automatically serving support files with the
|
|
||||||
// 'supportFile' configuration option.
|
|
||||||
//
|
|
||||||
// You can read more here:
|
|
||||||
// https://on.cypress.io/configuration
|
|
||||||
// ***********************************************************
|
|
||||||
|
|
||||||
// Import commands.js using ES2015 syntax:
|
|
||||||
import './commands.js'
|
|
||||||
|
|
||||||
Cypress.on('uncaught:exception', (err) => {
|
|
||||||
return !err.message.includes('ResizeObserver loop limit exceeded')
|
|
||||||
})
|
|
||||||
|
|
||||||
// Alternatively you can use CommonJS syntax:
|
|
||||||
// require('./commands')
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { User } from '@nextcloud/cypress'
|
|
||||||
|
|
||||||
export const randHash = () => Math.random().toString(36).replace(/[^a-z]+/g, '').slice(0, 10)
|
|
||||||
export const randUser = () => new User(randHash(), randHash())
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
/*
|
|
||||||
* @copyright Copyright (c) 2022 Julius Härtl <jus@bitgrid.net>
|
|
||||||
*
|
|
||||||
* @author Julius Härtl <jus@bitgrid.net>
|
|
||||||
*
|
|
||||||
* @license GNU AGPL version 3 or any later version
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as
|
|
||||||
* published by the Free Software Foundation, either version 3 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export const sampleBoard = (title = 'MyTestBoard') => {
|
|
||||||
return {
|
|
||||||
title: title,
|
|
||||||
color: '00ff00',
|
|
||||||
stacks: [
|
|
||||||
{
|
|
||||||
title: 'TestList',
|
|
||||||
cards: [
|
|
||||||
{
|
|
||||||
title: 'Hello world',
|
|
||||||
description: '# Hello world',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
204
docs/API.md
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
The REST API provides access for authenticated users to their data inside the Deck app. To get a better understanding of Decks data models and their relations, please have a look at the [data structure](structure.md) documentation.
|
The REST API provides access for authenticated users to their data inside the Deck app. To get a better understanding of Decks data models and their relations, please have a look at the [data structure](structure.md) documentation.
|
||||||
|
|
||||||
# Prerequisites
|
# Prequisited
|
||||||
|
|
||||||
- All requests require a `OCS-APIRequest` HTTP header to be set to `true` and a `Content-Type` of `application/json`.
|
- All requests require a `OCS-APIRequest` HTTP header to be set to `true` and a `Content-Type` of `application/json`.
|
||||||
- The API is located at https://nextcloud.local/index.php/apps/deck/api/v1.0
|
- The API is located at https://nextcloud.local/index.php/apps/deck/api/v1.0
|
||||||
@@ -9,7 +9,7 @@ The REST API provides access for authenticated users to their data inside the De
|
|||||||
|
|
||||||
## Naming
|
## Naming
|
||||||
|
|
||||||
- Board is the project like grouping of tasks that can be shared to different users and groups
|
- Board is the the project like grouping of tasks that can be shared to different users and groups
|
||||||
|
|
||||||
- Stack is the grouping of cards which is rendered in vertical columns in the UI
|
- Stack is the grouping of cards which is rendered in vertical columns in the UI
|
||||||
|
|
||||||
@@ -96,28 +96,10 @@ If available the ETag will also be part of JSON response objects as shown below
|
|||||||
|
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## API version 1.0
|
## 1.0.0 (unreleased)
|
||||||
|
|
||||||
- Deck >=1.0.0: The maximum length of the card title has been extended from 100 to 255 characters
|
|
||||||
- Deck >=1.0.0: The API will now return a 400 Bad request response if the length limitation of a board, stack or card title is exceeded
|
|
||||||
|
|
||||||
## API version 1.1
|
|
||||||
|
|
||||||
This API version has become available with **Deck 1.3.0**.
|
|
||||||
|
|
||||||
- The maximum length of the card title has been extended from 100 to 255 characters
|
- The maximum length of the card title has been extended from 100 to 255 characters
|
||||||
- The API will now return a 400 Bad request response if the length limitation of a board, stack or card title is exceeded
|
- The API will now return a 400 Bad request response if the length limitation of a board, stack or card title is exceeded
|
||||||
- The attachments API endpoints will return other attachment types than deck_file
|
|
||||||
- Prior to Deck version v1.3.0 (API v1.0), attachments were stored within deck. For this type of attachments `deck_file` was used as the default type of attachments
|
|
||||||
- Starting with Deck version 1.3.0 (API v1.1) files are stored within the users regular Nextcloud files and the type `file` has been introduced for that
|
|
||||||
|
|
||||||
## API version 1.2 (unreleased)
|
|
||||||
|
|
||||||
- Endpoints for the new import functionality have been added:
|
|
||||||
- [GET /boards/import/getSystems - Import a board](#get-boardsimportgetsystems-import-a-board)
|
|
||||||
- [GET /boards/import/config/system/{schema} - Import a board](#get-boardsimportconfigsystemschema-import-a-board)
|
|
||||||
- [POST /boards/import - Import a board](#post-boardsimport-import-a-board)
|
|
||||||
- The `done` property was added to cards
|
|
||||||
|
|
||||||
# Endpoints
|
# Endpoints
|
||||||
|
|
||||||
@@ -602,7 +584,6 @@ The board list endpoint supports setting an `If-Modified-Since` header to limit
|
|||||||
"owner":"admin",
|
"owner":"admin",
|
||||||
"order":999,
|
"order":999,
|
||||||
"archived":false,
|
"archived":false,
|
||||||
"done":null,
|
|
||||||
"duedate": "2019-12-24T19:29:30+00:00",
|
"duedate": "2019-12-24T19:29:30+00:00",
|
||||||
"deletedAt":0,
|
"deletedAt":0,
|
||||||
"commentsUnread":0,
|
"commentsUnread":0,
|
||||||
@@ -625,16 +606,13 @@ The board list endpoint supports setting an `If-Modified-Since` header to limit
|
|||||||
|
|
||||||
#### Request data
|
#### Request data
|
||||||
|
|
||||||
| Parameter | Type | Description |
|
| Parameter | Type | Description |
|
||||||
|-------------|-----------------|-----------------------------------------------------------------------------------------------------|
|
|-------------|-----------|------------------------------------------------------|
|
||||||
| title | String | The title of the card, maximum length is limited to 255 characters |
|
| title | String | The title of the card, maximum length is limited to 255 characters |
|
||||||
| description | String | The markdown description of the card |
|
| description | String | The markdown description of the card |
|
||||||
| type | String | Type of the card (for later use) use 'plain' for now |
|
| type | String | Type of the card (for later use) use 'plain' for now |
|
||||||
| owner | String | The user that owns the card |
|
| order | Integer | Order for sorting the stacks |
|
||||||
| order | Integer | Order for sorting the stacks |
|
| duedate | timestamp | The ISO-8601 formatted duedate of the card or null |
|
||||||
| duedate | timestamp | The ISO-8601 formatted duedate of the card or null |
|
|
||||||
| archived | bool | Whether the card is archived or not |
|
|
||||||
| done | timestamp\|null | The ISO-8601 formatted date when the card is marked as done (optional, null indicates undone state) |
|
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -642,11 +620,8 @@ The board list endpoint supports setting an `If-Modified-Since` header to limit
|
|||||||
"title": "Test card",
|
"title": "Test card",
|
||||||
"description": "A card description",
|
"description": "A card description",
|
||||||
"type": "plain",
|
"type": "plain",
|
||||||
"owner": "admin",
|
|
||||||
"order": 999,
|
"order": 999,
|
||||||
"duedate": "2019-12-24T19:29:30+00:00",
|
"duedate": "2019-12-24T19:29:30+00:00",
|
||||||
"archived": false,
|
|
||||||
"done": null,
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -952,8 +927,7 @@ The request can fail with a bad request response for the following reasons:
|
|||||||
| type | String | The type of the attachement |
|
| type | String | The type of the attachement |
|
||||||
| file | Binary | File data to add as an attachment |
|
| file | Binary | File data to add as an attachment |
|
||||||
|
|
||||||
- Prior to Deck version v1.3.0 (API v1.0), attachments were stored within deck. For this type of attachments `deck_file` was used as the default type of attachments
|
For now only `deck_file` is supported as an attachment type.
|
||||||
- Starting with Deck version 1.3.0 (API v1.1) files are stored within the users regular Nextcloud files and the type `file` has been introduced for that
|
|
||||||
|
|
||||||
#### Response
|
#### Response
|
||||||
|
|
||||||
@@ -1014,49 +988,6 @@ For now only `deck_file` is supported as an attachment type.
|
|||||||
|
|
||||||
##### 200 Success
|
##### 200 Success
|
||||||
|
|
||||||
### GET /boards/import/getSystems - Import a board
|
|
||||||
|
|
||||||
#### Request parameters
|
|
||||||
|
|
||||||
| Parameter | Type | Description |
|
|
||||||
| ------------ | ------- | --------------------------------------------- |
|
|
||||||
| system | Integer | The system name. Example: trello |
|
|
||||||
|
|
||||||
#### Response
|
|
||||||
|
|
||||||
Make a request to see the json schema of system
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### GET /boards/import/config/system/{schema} - Import a board
|
|
||||||
|
|
||||||
#### Request parameters
|
|
||||||
|
|
||||||
#### Response
|
|
||||||
|
|
||||||
```json
|
|
||||||
[
|
|
||||||
"trello"
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
### POST /boards/import - Import a board
|
|
||||||
|
|
||||||
#### Request parameters
|
|
||||||
|
|
||||||
| Parameter | Type | Description |
|
|
||||||
| ------------ | ------- | --------------------------------------------- |
|
|
||||||
| system | string | The allowed name of system to import from |
|
|
||||||
| config | Object | The config object (JSON) |
|
|
||||||
| data | Object | The data object to import (JSON) |
|
|
||||||
|
|
||||||
#### Response
|
|
||||||
|
|
||||||
##### 200 Success
|
|
||||||
|
|
||||||
# OCS API
|
# OCS API
|
||||||
|
|
||||||
The following endpoints are available through the Nextcloud OCS endpoint, which is available at `/ocs/v2.php/apps/deck/api/v1.0/`.
|
The following endpoints are available through the Nextcloud OCS endpoint, which is available at `/ocs/v2.php/apps/deck/api/v1.0/`.
|
||||||
@@ -1073,8 +1004,6 @@ Deck stores user and app configuration values globally and per board. The GET en
|
|||||||
| Config key | Description |
|
| Config key | Description |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| calendar | Determines if the calendar/tasks integration through the CalDAV backend is enabled for the user (boolean) |
|
| calendar | Determines if the calendar/tasks integration through the CalDAV backend is enabled for the user (boolean) |
|
||||||
| cardDetailsInModal | Determines if the bigger view is used (boolean) |
|
|
||||||
| cardIdBadge | Determines if the ID badges are displayed on cards (boolean) |
|
|
||||||
| groupLimit | Determines if creating new boards is limited to certain groups of the instance. The resulting output is an array of group objects with the id and the displayname (Admin only)|
|
| groupLimit | Determines if creating new boards is limited to certain groups of the instance. The resulting output is an array of group objects with the id and the displayname (Admin only)|
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -1087,8 +1016,6 @@ Deck stores user and app configuration values globally and per board. The GET en
|
|||||||
},
|
},
|
||||||
"data": {
|
"data": {
|
||||||
"calendar": true,
|
"calendar": true,
|
||||||
"cardDetailsInModal": true,
|
|
||||||
"cardIdBadge": true,
|
|
||||||
"groupLimit": [
|
"groupLimit": [
|
||||||
{
|
{
|
||||||
"id": "admin",
|
"id": "admin",
|
||||||
@@ -1118,8 +1045,6 @@ Deck stores user and app configuration values globally and per board. The GET en
|
|||||||
| --- | ----- |
|
| --- | ----- |
|
||||||
| notify-due | `off`, `assigned` or `all` |
|
| notify-due | `off`, `assigned` or `all` |
|
||||||
| calendar | Boolean |
|
| calendar | Boolean |
|
||||||
| cardDetailsInModal | Boolean |
|
|
||||||
| cardIdBadge | Boolean |
|
|
||||||
|
|
||||||
#### Example request
|
#### Example request
|
||||||
|
|
||||||
@@ -1402,110 +1327,3 @@ A bad request response is returned if invalid input values are provided. The res
|
|||||||
A not found response might be returned if:
|
A not found response might be returned if:
|
||||||
- The card for the given cardId could not be found
|
- The card for the given cardId could not be found
|
||||||
- The comment could not be found
|
- The comment could not be found
|
||||||
|
|
||||||
|
|
||||||
## Sessions
|
|
||||||
|
|
||||||
### PUT /session/create - creates a new session
|
|
||||||
|
|
||||||
#### Request parameters
|
|
||||||
|
|
||||||
| Parameter | Type | Description |
|
|
||||||
| --------- | ------- | ---------------------------------------------------- |
|
|
||||||
| boardId | Integer | The id of the opened board |
|
|
||||||
|
|
||||||
```
|
|
||||||
curl -X PUT 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/session/create' \
|
|
||||||
-H 'Accept: application/json' -H 'OCS-APIRequest: true' \
|
|
||||||
-H 'Content-Type: application/json;charset=utf-8' \
|
|
||||||
--data '{"boardId":1}'
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Response
|
|
||||||
|
|
||||||
##### 200 Success
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"ocs": {
|
|
||||||
"meta": {
|
|
||||||
"status": "ok",
|
|
||||||
"statuscode": 200,
|
|
||||||
"message": "OK"
|
|
||||||
},
|
|
||||||
"data": {
|
|
||||||
"token": "+zcJHf4rC6dobVSbuNa3delkCSfTW8OvYWTyLFvSpIv80FjtgLIj0ARlxspsazNQ"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
### POST /session/sync - notifies the server, that the session is still open
|
|
||||||
|
|
||||||
#### Request body
|
|
||||||
|
|
||||||
| Parameter | Type | Description |
|
|
||||||
| --------- | ------- | ---------------------------------------------------- |
|
|
||||||
| boardId | Integer | The id of the opened board |
|
|
||||||
| token | String | The session token from the /sessions/create response |
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
curl -X POST 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/session/create' \
|
|
||||||
-H 'Accept: application/json' -H 'OCS-APIRequest: true' \
|
|
||||||
-H 'Content-Type: application/json;charset=utf-8' \
|
|
||||||
--data '{"boardId":1, "token":"X3DyyoFslArF0t0NBZXzZXzcy8feoX/OEytSNXZtPg9TpUgO5wrkJ38IW3T/FfpV"}'
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Response
|
|
||||||
|
|
||||||
##### 200 Success
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"ocs": {
|
|
||||||
"meta": {
|
|
||||||
"status": "ok",
|
|
||||||
"statuscode": 200,
|
|
||||||
"message": "OK"
|
|
||||||
},
|
|
||||||
"data": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
##### 404 Not Found
|
|
||||||
the provided token is invalid or expired
|
|
||||||
|
|
||||||
|
|
||||||
### POST /session/close - closes the session
|
|
||||||
|
|
||||||
#### Request body
|
|
||||||
|
|
||||||
| Parameter | Type | Description |
|
|
||||||
| --------- | ------- | ---------------------------------------------------- |
|
|
||||||
| boardId | Integer | The id of the opened board |
|
|
||||||
| token | String | The session token from the /sessions/create response |
|
|
||||||
|
|
||||||
```
|
|
||||||
curl -X POST 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/session/close' \
|
|
||||||
-H 'Accept: application/json' -H 'OCS-APIRequest: true' \
|
|
||||||
-H 'Content-Type: application/json;charset=utf-8' \
|
|
||||||
--data '{"boardId":1, "token":"X3DyyoFslArF0t0NBZXzZXzcy8feoX/OEytSNXZtPg9TpUgO5wrkJ38IW3T/FfpV"}'
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Response
|
|
||||||
|
|
||||||
##### 200 Success
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"ocs": {
|
|
||||||
"meta": {
|
|
||||||
"status": "ok",
|
|
||||||
"statuscode": 200,
|
|
||||||
"message": "OK"
|
|
||||||
},
|
|
||||||
"data": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -12,12 +12,8 @@ Overall, Deck is easy to use. You can create boards, add users, share the Deck,
|
|||||||
1. [Create my first board](#1-create-my-first-board)
|
1. [Create my first board](#1-create-my-first-board)
|
||||||
2. [Create stacks and cards](#2-create-stacks-and-cards)
|
2. [Create stacks and cards](#2-create-stacks-and-cards)
|
||||||
3. [Handle cards options](#3-handle-cards-options)
|
3. [Handle cards options](#3-handle-cards-options)
|
||||||
4. [Mark task as done](#4-mark-as-done)
|
4. [Archive old tasks](#4-archive-old-tasks)
|
||||||
5. [Archive old tasks](#5-archive-old-tasks)
|
5. [Manage your board](#5-manage-your-board)
|
||||||
6. [Manage your board](#6-manage-your-board)
|
|
||||||
7. [Import boards](#7-import-boards)
|
|
||||||
8. [Search](#8-search)
|
|
||||||
9. [New owner for the deck entities](#9-new-owner-for-the-deck-entities)
|
|
||||||
|
|
||||||
### 1. Create my first board
|
### 1. Create my first board
|
||||||
In this example, we're going to create a board and share it with an other nextcloud user.
|
In this example, we're going to create a board and share it with an other nextcloud user.
|
||||||
@@ -26,7 +22,7 @@ In this example, we're going to create a board and share it with an other nextcl
|
|||||||
|
|
||||||
|
|
||||||
### 2. Create stacks and cards
|
### 2. Create stacks and cards
|
||||||
Stacks are simply columns with list of cards. It can represent a category of tasks or any step in your projects for example.
|
Stacks are simply columns with list of cards. It can represent a category of tasks or an y step in your projects for example.
|
||||||
**Check this out :**
|
**Check this out :**
|
||||||
|
|
||||||

|

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

|

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

|

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

|
|
||||||
|
|
||||||
### 6. Manage your board
|
|
||||||
You can manage the settings of your Deck once you are inside it, by clicking on the small wheel at the top right.
|
You can manage the settings of your Deck once you are inside it, by clicking on the small wheel at the top right.
|
||||||
Once in this menu, you have access to several things:
|
Once in this menu, you have access to several things:
|
||||||
|
|
||||||
@@ -79,80 +69,14 @@ The **sharing tab** allows you to add users or even groups to your boards.
|
|||||||
**Deleted objects** allows you to return previously deleted stacks or cards.
|
**Deleted objects** allows you to return previously deleted stacks or cards.
|
||||||
The **Timeline** allows you to see everything that happened in your boards. Everything!
|
The **Timeline** allows you to see everything that happened in your boards. Everything!
|
||||||
|
|
||||||
### 7. Import boards
|
## Search
|
||||||
|
|
||||||
Importing can be done using the API or the `occ` `deck:import` command.
|
|
||||||
|
|
||||||
Comments with more than 1000 characters are placed as attached files to the card.
|
|
||||||
|
|
||||||
It is possible to import from the following sources:
|
|
||||||
|
|
||||||
#### 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 import `Trello JSON`
|
|
||||||
|
|
||||||
Example configuration file:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"owner": "admin",
|
|
||||||
"color": "0800fd",
|
|
||||||
"uidRelation": {
|
|
||||||
"johndoe": "johndoe"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**Limitations**:
|
|
||||||
|
|
||||||
Importing from a JSON file imports up to 1000 actions. To find out how many actions the board to be imported has, identify how many actions the JSON has.
|
|
||||||
|
|
||||||
#### Trello API
|
|
||||||
|
|
||||||
Import using API is recommended for boards with more than 1000 actions.
|
|
||||||
|
|
||||||
Trello makes it possible to attach links to a card. Deck does not have this feature. Attachments and attachment links are added in a markdown table at the end of the description for every imported card that has attachments in Trello.
|
|
||||||
|
|
||||||
* Get the API Key and API Token [here](https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/#authentication-and-authorization)
|
|
||||||
* Get the ID of the board you want to import by making a request to:
|
|
||||||
https://api.trello.com/1/members/me/boards?key={yourKey}&token={yourToken}&fields=id,name
|
|
||||||
|
|
||||||
This ID you will use in the configuration file in the `board` property
|
|
||||||
* Create the configuration file
|
|
||||||
|
|
||||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloApi-schema.json) for import `Trello JSON`
|
|
||||||
|
|
||||||
Example configuration file:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"owner": "admin",
|
|
||||||
"color": "0800fd",
|
|
||||||
"api": {
|
|
||||||
"key": "0cc175b9c0f1b6a831c399e269772661",
|
|
||||||
"token": "92eb5ffee6ae2fec3ad71c777531578f4a8a08f09d37b73795649038408b5f33"
|
|
||||||
},
|
|
||||||
"board": "8277e0910d750195b4487976",
|
|
||||||
"uidRelation": {
|
|
||||||
"johndoe": "johndoe"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 8. Search
|
|
||||||
|
|
||||||
Deck provides a global search either through the unified search in the Nextcloud header or with the inline search next to the board controls.
|
Deck provides a global search either through the unified search in the Nextcloud header or with the inline search next to the board controls.
|
||||||
This search allows advanced filtering of cards across all board of the logged in user.
|
This search allows advanced filtering of cards across all board of the logged in user.
|
||||||
|
|
||||||
For example the search `project tag:ToDo assigned:alice assigned:bob` will return all cards where the card title or description contains project **and** the tag ToDo is set **and** the user alice is assigned **and** the user bob is assigned.
|
For example the search `project tag:ToDo assigned:alice assigned:bob` will return all cards where the card title or description contains project **and** the tag ToDo is set **and** the user alice is assigned **and** the user bob is assigned.
|
||||||
|
|
||||||
#### Supported search filters
|
### Supported search filters
|
||||||
|
|
||||||
| Filter | Operators | Query |
|
| Filter | Operators | Query |
|
||||||
| ----------- | ----------------- | ------------------------------------------------------------ |
|
| ----------- | ----------------- | ------------------------------------------------------------ |
|
||||||
@@ -166,22 +90,4 @@ For example the search `project tag:ToDo assigned:alice assigned:bob` will retur
|
|||||||
|
|
||||||
Other text tokens will be used to perform a case-insensitive search on the card title and description
|
Other text tokens will be used to perform a case-insensitive search on the card title and description
|
||||||
|
|
||||||
In addition, quotes can be used to pass a query with spaces, e.g. `"Exact match with spaces"` or `title:"My card"`.
|
In addition wuotes can be used to pass a query with spaces, e.g. `"Exact match with spaces"` or `title:"My card"`.
|
||||||
|
|
||||||
### 9. New owner for the deck entities
|
|
||||||
You can transfer ownership of boards, cards, etc to a new user, using `occ` command `deck:transfer-ownership`
|
|
||||||
|
|
||||||
```bash
|
|
||||||
php occ deck:transfer-ownership previousOwner newOwner
|
|
||||||
```
|
|
||||||
|
|
||||||
The transfer will preserve card details linked to the old owner, which can also be remapped by using the `--remap` option on the occ command.
|
|
||||||
```bash
|
|
||||||
php occ deck:transfer-ownership --remap previousOwner newOwner
|
|
||||||
```
|
|
||||||
|
|
||||||
Individual boards can be transferred by adding the id of the board to the command:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
php occ deck:transfer-ownership previousOwner newOwner 123
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -1,98 +0,0 @@
|
|||||||
## Export
|
|
||||||
|
|
||||||
Deck currently supports exporting all boards a user owns in a single JSON file. The format is based on the database schema that deck uses. It can be used to re-import boards on the same or other instances.
|
|
||||||
|
|
||||||
The export currently has some kown limitations in terms of specific data not included:
|
|
||||||
- Activity information
|
|
||||||
- File attachments to deck cards
|
|
||||||
- Comments
|
|
||||||
-
|
|
||||||
```
|
|
||||||
occ deck:export > my-file.json
|
|
||||||
```
|
|
||||||
|
|
||||||
## Import boards
|
|
||||||
|
|
||||||
Importing can be done using the API or the `occ` `deck:import` command.
|
|
||||||
|
|
||||||
It is possible to import from the following sources:
|
|
||||||
|
|
||||||
### Deck JSON
|
|
||||||
|
|
||||||
A json file that has been obtained from the above described `occ deck:export [userid]` command can be imported.
|
|
||||||
|
|
||||||
```
|
|
||||||
occ deck:import my-file.json
|
|
||||||
```
|
|
||||||
|
|
||||||
In case you are importing from a different instance you may use an additional config file to provide custom user id mapping in case users have different identifiers.
|
|
||||||
|
|
||||||
```
|
|
||||||
{
|
|
||||||
"owner": "admin",
|
|
||||||
"uidRelation": {
|
|
||||||
"johndoe": "test-user-1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Trello JSON
|
|
||||||
|
|
||||||
Limitations:
|
|
||||||
* Comments with more than 1000 characters are placed as attached files to the card.
|
|
||||||
|
|
||||||
Steps:
|
|
||||||
* Create the data file
|
|
||||||
* Access Trello
|
|
||||||
* go to the board you want to export
|
|
||||||
* Follow the steps in [Trello documentation](https://help.trello.com/article/747-exporting-data-from-trello-1) and export as JSON
|
|
||||||
* Create the configuration file
|
|
||||||
* Execute the import informing the import file path, data file and source as `Trello JSON`
|
|
||||||
|
|
||||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloJson-schema.json) for import `Trello JSON`
|
|
||||||
|
|
||||||
Example configuration file:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"owner": "admin",
|
|
||||||
"color": "0800fd",
|
|
||||||
"uidRelation": {
|
|
||||||
"johndoe": "johndoe"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**Limitations**:
|
|
||||||
|
|
||||||
Importing from a JSON file imports up to 1000 actions. To find out how many actions the board to be imported has, identify how many actions the JSON has.
|
|
||||||
|
|
||||||
#### Trello API
|
|
||||||
|
|
||||||
Import using API is recommended for boards with more than 1000 actions.
|
|
||||||
|
|
||||||
Trello makes it possible to attach links to a card. Deck does not have this feature. Attachments and attachment links are added in a markdown table at the end of the description for every imported card that has attachments in Trello.
|
|
||||||
|
|
||||||
* Get the API Key and API Token [here](https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/#authentication-and-authorization)
|
|
||||||
* Get the ID of the board you want to import by making a request to:
|
|
||||||
https://api.trello.com/1/members/me/boards?key={yourKey}&token={yourToken}&fields=id,name
|
|
||||||
|
|
||||||
This ID you will use in the configuration file in the `board` property
|
|
||||||
* Create the configuration file
|
|
||||||
|
|
||||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloApi-schema.json) for import `Trello JSON`
|
|
||||||
|
|
||||||
Example configuration file:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"owner": "admin",
|
|
||||||
"color": "0800fd",
|
|
||||||
"api": {
|
|
||||||
"key": "0cc175b9c0f1b6a831c399e269772661",
|
|
||||||
"token": "92eb5ffee6ae2fec3ad71c777531578f4a8a08f09d37b73795649038408b5f33"
|
|
||||||
},
|
|
||||||
"board": "8277e0910d750195b4487976",
|
|
||||||
"uidRelation": {
|
|
||||||
"johndoe": "johndoe"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
## Implement import
|
|
||||||
|
|
||||||
* Create a new importer class extending `ABoardImportService`
|
|
||||||
* Create a listener for event `BoardImportGetAllowedEvent` to enable your importer.
|
|
||||||
> You can read more about listeners on [Nextcloud](https://docs.nextcloud.com/server/latest/developer_manual/basics/events.html?highlight=event#writing-a-listener) doc.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```php
|
|
||||||
class YourCustomImporterListener {
|
|
||||||
public function handle(Event $event): void {
|
|
||||||
if (!($event instanceof BoardImportGetAllowedEvent)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$event->getService()->addAllowedImportSystem([
|
|
||||||
'name' => YourCustomImporterService::$name,
|
|
||||||
'class' => YourCustomImporterService::class,
|
|
||||||
'internalName' => 'YourCustomImporter'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
* Register your listener on your `Application` class like this:
|
|
||||||
```php
|
|
||||||
$dispatcher = $this->getContainer()->query(IEventDispatcher::class);
|
|
||||||
$dispatcher->registerEventListener(
|
|
||||||
BoardImportGetAllowedEvent::class,
|
|
||||||
YourCustomImporterListener::class
|
|
||||||
);
|
|
||||||
```
|
|
||||||
* Use the `lib/Service/Importer/Systems/TrelloJsonService.php` class as inspiration
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
## Import class diagram
|
|
||||||
|
|
||||||
Importing boards to the Deck implements the class diagram below.
|
|
||||||
|
|
||||||
> **NOTE**: When making any changes to the structure of the classes or implementing import from other sources, edit the `BoardImport.yuml` file
|
|
||||||
|
|
||||||

|
|
||||||
@@ -1,214 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
|
||||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
||||||
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
|
|
||||||
-->
|
|
||||||
<!-- Title: G Pages: 1 -->
|
|
||||||
<svg width="417pt" height="830pt"
|
|
||||||
viewBox="0.00 0.00 417.01 830.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
||||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 826)">
|
|
||||||
<title>G</title>
|
|
||||||
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-826 413.012,-826 413.012,4 -4,4"/>
|
|
||||||
<!-- A0 -->
|
|
||||||
<g id="node1" class="node">
|
|
||||||
<title>A0</title>
|
|
||||||
<polygon fill="#fff8dc" stroke="#000000" points="165.909,-822 70.091,-822 70.091,-766 171.909,-766 171.909,-816 165.909,-822"/>
|
|
||||||
<polyline fill="none" stroke="#000000" points="165.909,-822 165.909,-816 "/>
|
|
||||||
<polyline fill="none" stroke="#000000" points="171.909,-816 165.909,-816 "/>
|
|
||||||
<text text-anchor="middle" x="121" y="-809" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">Classes used on</text>
|
|
||||||
<text text-anchor="middle" x="121" y="-797" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">board import.</text>
|
|
||||||
<text text-anchor="middle" x="121" y="-785" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">Methods just to</text>
|
|
||||||
<text text-anchor="middle" x="121" y="-773" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">illustrate.</text>
|
|
||||||
</g>
|
|
||||||
<!-- A1 -->
|
|
||||||
<g id="node2" class="node">
|
|
||||||
<title>A1</title>
|
|
||||||
<polygon fill="none" stroke="#000000" points="108.7773,-680 23.2227,-680 23.2227,-644 108.7773,-644 108.7773,-680"/>
|
|
||||||
<text text-anchor="middle" x="66" y="-659" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ApiController</text>
|
|
||||||
</g>
|
|
||||||
<!-- A2 -->
|
|
||||||
<g id="node3" class="node">
|
|
||||||
<title>A2</title>
|
|
||||||
<polygon fill="none" stroke="#000000" points="0,-514 0,-546 132,-546 132,-514 0,-514"/>
|
|
||||||
<text text-anchor="start" x="9.607" y="-527" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">BoardImportApiController</text>
|
|
||||||
<polygon fill="none" stroke="#000000" points="0,-458 0,-514 132,-514 132,-458 0,-458"/>
|
|
||||||
<text text-anchor="start" x="45.8645" y="-495" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+import()</text>
|
|
||||||
<text text-anchor="start" x="16.1335" y="-483" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+getAllowedSystems()</text>
|
|
||||||
<text text-anchor="start" x="20.0185" y="-471" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+getConfigSchema()</text>
|
|
||||||
</g>
|
|
||||||
<!-- A1->A2 -->
|
|
||||||
<g id="edge1" class="edge">
|
|
||||||
<title>A1->A2</title>
|
|
||||||
<path fill="none" stroke="#000000" d="M66,-633.6693C66,-609.4424 66,-574.1663 66,-546.2238"/>
|
|
||||||
<polygon fill="#000000" stroke="#000000" points="66,-643.957 61.5001,-633.9569 66,-638.957 66.0001,-633.957 66.0001,-633.957 66.0001,-633.957 66,-638.957 70.5001,-633.957 66,-643.957 66,-643.957"/>
|
|
||||||
</g>
|
|
||||||
<!-- A3 -->
|
|
||||||
<g id="node4" class="node">
|
|
||||||
<title>A3</title>
|
|
||||||
<polygon fill="none" stroke="#000000" points="92,-364 92,-396 200,-396 200,-364 92,-364"/>
|
|
||||||
<text text-anchor="start" x="101.828" y="-377" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">BoardImportService</text>
|
|
||||||
<polygon fill="none" stroke="#000000" points="92,-284 92,-364 200,-364 200,-284 92,-284"/>
|
|
||||||
<text text-anchor="start" x="125.8645" y="-345" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+import()</text>
|
|
||||||
<text text-anchor="start" x="118.9105" y="-333" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+bootstrap()</text>
|
|
||||||
<text text-anchor="start" x="105.857" y="-321" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+validateSystem()</text>
|
|
||||||
<text text-anchor="start" x="108.218" y="-309" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">#validateConfig()</text>
|
|
||||||
<text text-anchor="start" x="112.107" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">#validateData()</text>
|
|
||||||
</g>
|
|
||||||
<!-- A2->A3 -->
|
|
||||||
<g id="edge2" class="edge">
|
|
||||||
<title>A2->A3</title>
|
|
||||||
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M87.8604,-457.7328C95.8577,-441.5382 105.0823,-422.8583 113.7939,-405.2174"/>
|
|
||||||
<polygon fill="#000000" stroke="#000000" points="118.2935,-396.1057 117.9004,-407.0646 116.0795,-400.5889 113.8656,-405.072 113.8656,-405.072 113.8656,-405.072 116.0795,-400.5889 109.8308,-403.0795 118.2935,-396.1057 118.2935,-396.1057"/>
|
|
||||||
<text text-anchor="middle" x="88.3076" y="-434.7378" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">uses</text>
|
|
||||||
</g>
|
|
||||||
<!-- A7 -->
|
|
||||||
<g id="node8" class="node">
|
|
||||||
<title>A7</title>
|
|
||||||
<polygon fill="none" stroke="#000000" points="37,-196 37,-228 129,-228 129,-196 37,-196"/>
|
|
||||||
<text text-anchor="start" x="46.612" y="-209" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">TrelloApiService</text>
|
|
||||||
<polygon fill="none" stroke="#000000" points="37,-164 37,-196 129,-196 129,-164 37,-164"/>
|
|
||||||
<text text-anchor="start" x="53.9655" y="-177" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+name:string</text>
|
|
||||||
</g>
|
|
||||||
<!-- A3->A7 -->
|
|
||||||
<g id="edge6" class="edge">
|
|
||||||
<title>A3->A7</title>
|
|
||||||
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M114.8609,-283.9135C107.8316,-268.5143 100.7854,-252.0928 95.0404,-237.6613"/>
|
|
||||||
<polygon fill="#000000" stroke="#000000" points="91.2872,-228.0253 99.1098,-235.7102 93.1019,-232.6844 94.9167,-237.3434 94.9167,-237.3434 94.9167,-237.3434 93.1019,-232.6844 90.7235,-238.9767 91.2872,-228.0253 91.2872,-228.0253"/>
|
|
||||||
<text text-anchor="middle" x="99.6759" y="-267.8975" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">uses</text>
|
|
||||||
</g>
|
|
||||||
<!-- A9 -->
|
|
||||||
<g id="node10" class="node">
|
|
||||||
<title>A9</title>
|
|
||||||
<polygon fill="none" stroke="#000000" points="148,-202 148,-234 273,-234 273,-202 148,-202"/>
|
|
||||||
<text text-anchor="start" x="170.7765" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">TrelloJsonService</text>
|
|
||||||
<polygon fill="none" stroke="#000000" points="148,-158 148,-202 273,-202 273,-158 148,-158"/>
|
|
||||||
<text text-anchor="start" x="181.4655" y="-183" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+name:string</text>
|
|
||||||
<text text-anchor="start" x="157.981" y="-171" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">#needValidateData:true</text>
|
|
||||||
</g>
|
|
||||||
<!-- A3->A9 -->
|
|
||||||
<g id="edge9" class="edge">
|
|
||||||
<title>A3->A9</title>
|
|
||||||
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M164.3261,-283.9135C170.0039,-270.5688 176.3462,-256.4563 182.4816,-243.5365"/>
|
|
||||||
<polygon fill="#000000" stroke="#000000" points="186.9002,-234.3677 186.6126,-245.3298 184.7295,-238.872 182.5588,-243.3762 182.5588,-243.3762 182.5588,-243.3762 184.7295,-238.872 178.505,-241.4226 186.9002,-234.3677 186.9002,-234.3677"/>
|
|
||||||
<text text-anchor="middle" x="163.6874" y="-260.9237" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">uses</text>
|
|
||||||
</g>
|
|
||||||
<!-- A10 -->
|
|
||||||
<g id="node11" class="node">
|
|
||||||
<title>A10</title>
|
|
||||||
<polygon fill="#fff8dc" stroke="#000000" points="317.7872,-362 218.2128,-362 218.2128,-318 323.7872,-318 323.7872,-356 317.7872,-362"/>
|
|
||||||
<polyline fill="none" stroke="#000000" points="317.7872,-362 317.7872,-356 "/>
|
|
||||||
<polyline fill="none" stroke="#000000" points="323.7872,-356 317.7872,-356 "/>
|
|
||||||
<text text-anchor="middle" x="271" y="-349" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">validateSystem is</text>
|
|
||||||
<text text-anchor="middle" x="271" y="-337" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">public because is</text>
|
|
||||||
<text text-anchor="middle" x="271" y="-325" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">used on Api.</text>
|
|
||||||
</g>
|
|
||||||
<!-- A3->A10 -->
|
|
||||||
<g id="edge11" class="edge">
|
|
||||||
<title>A3->A10</title>
|
|
||||||
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M200.1992,-340C206.1915,-340 212.1837,-340 218.176,-340"/>
|
|
||||||
</g>
|
|
||||||
<!-- A4 -->
|
|
||||||
<g id="node5" class="node">
|
|
||||||
<title>A4</title>
|
|
||||||
<polygon fill="none" stroke="#000000" points="264.1131,-812 189.8869,-812 189.8869,-776 264.1131,-776 264.1131,-812"/>
|
|
||||||
<text text-anchor="middle" x="227" y="-791" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">Command</text>
|
|
||||||
</g>
|
|
||||||
<!-- A5 -->
|
|
||||||
<g id="node6" class="node">
|
|
||||||
<title>A5</title>
|
|
||||||
<polygon fill="none" stroke="#000000" points="148,-684 148,-716 307,-716 307,-684 148,-684"/>
|
|
||||||
<text text-anchor="start" x="199.9955" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">BoardImport</text>
|
|
||||||
<polygon fill="none" stroke="#000000" points="148,-652 148,-684 307,-684 307,-652 148,-652"/>
|
|
||||||
<text text-anchor="start" x="157.907" y="-665" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+boardImportCommandService</text>
|
|
||||||
<polygon fill="none" stroke="#000000" points="148,-608 148,-652 307,-652 307,-608 148,-608"/>
|
|
||||||
<text text-anchor="start" x="200.8305" y="-633" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">#configure()</text>
|
|
||||||
<text text-anchor="start" x="177.76" y="-621" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">#execute(input,output)</text>
|
|
||||||
</g>
|
|
||||||
<!-- A4->A5 -->
|
|
||||||
<g id="edge3" class="edge">
|
|
||||||
<title>A4->A5</title>
|
|
||||||
<path fill="none" stroke="#000000" d="M227,-765.6356C227,-751.1554 227,-733.0451 227,-716.0324"/>
|
|
||||||
<polygon fill="#000000" stroke="#000000" points="227,-775.9227 222.5001,-765.9227 227,-770.9227 227.0001,-765.9227 227.0001,-765.9227 227.0001,-765.9227 227,-770.9227 231.5001,-765.9228 227,-775.9227 227,-775.9227"/>
|
|
||||||
</g>
|
|
||||||
<!-- A6 -->
|
|
||||||
<g id="node7" class="node">
|
|
||||||
<title>A6</title>
|
|
||||||
<polygon fill="none" stroke="#000000" points="150,-526 150,-558 304,-558 304,-526 150,-526"/>
|
|
||||||
<text text-anchor="start" x="159.7715" y="-539" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">BoardImportCommandService</text>
|
|
||||||
<polygon fill="none" stroke="#000000" points="150,-446 150,-526 304,-526 304,-446 150,-446"/>
|
|
||||||
<text text-anchor="start" x="199.9105" y="-507" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+bootstrap()</text>
|
|
||||||
<text text-anchor="start" x="206.8645" y="-495" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+import()</text>
|
|
||||||
<text text-anchor="start" x="186.857" y="-483" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+validateSystem()</text>
|
|
||||||
<text text-anchor="start" x="189.218" y="-471" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">#validateConfig()</text>
|
|
||||||
<text text-anchor="start" x="193.107" y="-459" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">#validateData()</text>
|
|
||||||
</g>
|
|
||||||
<!-- A5->A6 -->
|
|
||||||
<g id="edge4" class="edge">
|
|
||||||
<title>A5->A6</title>
|
|
||||||
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M227,-607.8313C227,-595.0442 227,-581.2707 227,-568.0248"/>
|
|
||||||
<polygon fill="#000000" stroke="#000000" points="227,-558.0234 231.5001,-568.0234 227,-563.0234 227.0001,-568.0234 227.0001,-568.0234 227.0001,-568.0234 227,-563.0234 222.5001,-568.0235 227,-558.0234 227,-558.0234"/>
|
|
||||||
<text text-anchor="middle" x="218.5476" y="-586.7051" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">uses</text>
|
|
||||||
</g>
|
|
||||||
<!-- A6->A3 -->
|
|
||||||
<g id="edge5" class="edge">
|
|
||||||
<title>A6->A3</title>
|
|
||||||
<path fill="none" stroke="#000000" d="M198.8975,-445.7949C192.3634,-432.7268 185.3528,-418.7057 178.6417,-405.2834"/>
|
|
||||||
<polygon fill="#000000" stroke="#000000" points="174.0529,-396.1057 182.55,-403.0375 176.289,-400.5779 178.5251,-405.05 178.5251,-405.05 178.5251,-405.05 176.289,-400.5779 174.5001,-407.0625 174.0529,-396.1057 174.0529,-396.1057"/>
|
|
||||||
</g>
|
|
||||||
<!-- A7->A3 -->
|
|
||||||
<g id="edge7" class="edge">
|
|
||||||
<title>A7->A3</title>
|
|
||||||
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M102.735,-228.0253C109.5347,-241.763 117.1224,-258.3431 124.0627,-274.4849"/>
|
|
||||||
<polygon fill="#000000" stroke="#000000" points="128.0634,-283.9135 120.0148,-276.4657 126.1104,-279.3107 124.1573,-274.7079 124.1573,-274.7079 124.1573,-274.7079 126.1104,-279.3107 128.2998,-272.9502 128.0634,-283.9135 128.0634,-283.9135"/>
|
|
||||||
<text text-anchor="middle" x="118.307" y="-237.5757" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">uses</text>
|
|
||||||
</g>
|
|
||||||
<!-- A8 -->
|
|
||||||
<g id="node9" class="node">
|
|
||||||
<title>A8</title>
|
|
||||||
<polygon fill="none" stroke="#000000" points="80,-64 80,-108 213,-108 213,-64 80,-64"/>
|
|
||||||
<text text-anchor="start" x="117.04" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"><<abstract>></text>
|
|
||||||
<text text-anchor="start" x="98.9935" y="-77" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ABoardImportService</text>
|
|
||||||
<polygon fill="none" stroke="#000000" points="80,-32 80,-64 213,-64 213,-32 80,-32"/>
|
|
||||||
<text text-anchor="start" x="92.036" y="-45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">#needValidateData:false</text>
|
|
||||||
<polygon fill="none" stroke="#000000" points="80,0 80,-32 213,-32 213,0 80,0"/>
|
|
||||||
<text text-anchor="start" x="89.677" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+needValidateData():bool</text>
|
|
||||||
</g>
|
|
||||||
<!-- A7->A8 -->
|
|
||||||
<g id="edge8" class="edge">
|
|
||||||
<title>A7->A8</title>
|
|
||||||
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M97.2957,-163.778C103.3956,-150.029 110.7371,-133.4813 117.8485,-117.4527"/>
|
|
||||||
<polygon fill="none" stroke="#000000" points="121.1416,-118.6605 121.9978,-108.1003 114.743,-115.8216 121.1416,-118.6605"/>
|
|
||||||
<text text-anchor="middle" x="96.9205" y="-140.7815" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">implements</text>
|
|
||||||
</g>
|
|
||||||
<!-- A9->A3 -->
|
|
||||||
<g id="edge10" class="edge">
|
|
||||||
<title>A9->A3</title>
|
|
||||||
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M198.9952,-234.3677C194.0646,-246.7117 188.0483,-260.7568 181.8434,-274.4849"/>
|
|
||||||
<polygon fill="#000000" stroke="#000000" points="177.5286,-283.9135 177.598,-272.9478 179.6093,-279.367 181.6899,-274.8204 181.6899,-274.8204 181.6899,-274.8204 179.6093,-279.367 185.7818,-276.693 177.5286,-283.9135 177.5286,-283.9135"/>
|
|
||||||
<text text-anchor="middle" x="200.0654" y="-251.3391" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">uses</text>
|
|
||||||
</g>
|
|
||||||
<!-- A9->A8 -->
|
|
||||||
<g id="edge13" class="edge">
|
|
||||||
<title>A9->A8</title>
|
|
||||||
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M192.8492,-157.9466C187.2535,-145.5313 180.8796,-131.389 174.6742,-117.6209"/>
|
|
||||||
<polygon fill="none" stroke="#000000" points="177.7167,-115.8534 170.4168,-108.1747 171.3349,-118.7297 177.7167,-115.8534"/>
|
|
||||||
<text text-anchor="middle" x="177.6953" y="-141.8944" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">implements</text>
|
|
||||||
</g>
|
|
||||||
<!-- A11 -->
|
|
||||||
<g id="node12" class="node">
|
|
||||||
<title>A11</title>
|
|
||||||
<polygon fill="#fff8dc" stroke="#000000" points="403.024,-224 290.976,-224 290.976,-168 409.024,-168 409.024,-218 403.024,-224"/>
|
|
||||||
<polyline fill="none" stroke="#000000" points="403.024,-224 403.024,-218 "/>
|
|
||||||
<polyline fill="none" stroke="#000000" points="409.024,-218 403.024,-218 "/>
|
|
||||||
<text text-anchor="middle" x="350" y="-211" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">To create an import</text>
|
|
||||||
<text text-anchor="middle" x="350" y="-199" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">to another system,</text>
|
|
||||||
<text text-anchor="middle" x="350" y="-187" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">create another class</text>
|
|
||||||
<text text-anchor="middle" x="350" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">similar to this.</text>
|
|
||||||
</g>
|
|
||||||
<!-- A9->A11 -->
|
|
||||||
<g id="edge12" class="edge">
|
|
||||||
<title>A9->A11</title>
|
|
||||||
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M272.6172,-196C278.6627,-196 284.7083,-196 290.7538,-196"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 16 KiB |
@@ -1,24 +0,0 @@
|
|||||||
// Created using [yUML](https://github.com/jaime-olivares/vscode-yuml)
|
|
||||||
|
|
||||||
// {type:class}
|
|
||||||
// {direction:topDown}
|
|
||||||
// {generate:true}
|
|
||||||
|
|
||||||
[note: Classes used on board import. Methods just to illustrate. {bg:cornsilk}]
|
|
||||||
|
|
||||||
[ApiController]<-[BoardImportApiController|+import();+getAllowedSystems();+getConfigSchema()]
|
|
||||||
[BoardImportApiController]uses-.->[BoardImportService|+import();+bootstrap();+validateSystem();#validateConfig();#validateData();]
|
|
||||||
|
|
||||||
[Command]<-[BoardImport|+boardImportCommandService|#configure();#execute(input,output)]
|
|
||||||
[BoardImport]uses-.->[BoardImportCommandService|+bootstrap();+import();+validateSystem();#validateConfig();#validateData()]
|
|
||||||
[BoardImportCommandService]->[BoardImportService]
|
|
||||||
|
|
||||||
[BoardImportService]uses-.->[TrelloApiService|+name:string]
|
|
||||||
[TrelloApiService]uses-.->[BoardImportService]
|
|
||||||
[TrelloApiService]implements-.-^[<<abstract>> ABoardImportService|#needValidateData:false|+needValidateData():bool]
|
|
||||||
|
|
||||||
[BoardImportService]uses-.->[TrelloJsonService|+name:string;#needValidateData:true]
|
|
||||||
[TrelloJsonService]uses-.->[BoardImportService]
|
|
||||||
[BoardImportService]-[note: validateSystem is public because is used on Api. {bg:cornsilk}]
|
|
||||||
[TrelloJsonService]-[note: To create an import to another system, create another class similar to this. {bg:cornsilk}]
|
|
||||||
[TrelloJsonService]implements-.-^[<<abstract>> ABoardImportService]
|
|
||||||
|
Before Width: | Height: | Size: 88 KiB |
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" version="1.0" viewbox="0 0 32 32">
|
|
||||||
<path d="m16 1-10 18h11l-1 12 10-18h-11z"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 205 B |
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" version="1.0" viewBox="0 0 32 32">
|
|
||||||
<path d="m16 1-10 18h11l-1 12 10-18h-11z" fill="#FFF"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 217 B |
1
img/archive-white.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><g transform="translate(0 -1036.362)" fill="#fff"><path d="M1.93 1041.296c-.185 0-.336.138-.336.31v9.842c0 .172.15.313.336.313h12.517c.185 0 .333-.14.333-.313v-9.842c0-.172-.148-.31-.333-.31H1.93zm4.124 1.507h4.223c.39 0 .705.314.705.704v.43c0 .39-.315.705-.705.705H6.054a.703.703 0 0 1-.705-.705v-.43c0-.39.314-.704.705-.704z"/><rect width="15.742" height="2.296" x=".136" y="1037.543" ry="0"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 488 B |
@@ -1,3 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" style="height: 240px; width: 240px;" viewBox="0 0 24 24">
|
|
||||||
<path fill="currentColor" d="M12,15H10V13H12V15M18,15H14V13H18V15M8,11H6V9H8V11M18,11H10V9H18V11M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M4,6V18H20V6H4Z" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 298 B |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 58 58" width="512" height="512"><g fill="#000"><path d="M54.319 37.839C54.762 35.918 55 33.96 55 32c0-9.095-4.631-17.377-12.389-22.153a1 1 0 1 0-1.049 1.703C48.724 15.96 53 23.604 53 32c0 1.726-.2 3.451-.573 5.147A6.992 6.992 0 0 0 51 37c-3.86 0-7 3.141-7 7s3.14 7 7 7 7-3.141 7-7a7.006 7.006 0 0 0-3.681-6.161zM38.171 54.182A23.867 23.867 0 0 1 29 56a24.047 24.047 0 0 1-17.017-7.092A6.974 6.974 0 0 0 14 44c0-3.859-3.14-7-7-7s-7 3.141-7 7 3.14 7 7 7a6.952 6.952 0 0 0 3.381-.875C15.26 55.136 21.994 58 29 58c3.435 0 6.778-.663 9.936-1.971.51-.211.753-.796.542-1.307a1.001 1.001 0 0 0-1.307-.54zM4 31.213a1 1 0 0 0 1.068-.927c.712-10.089 7.586-18.52 17.22-21.314C23.142 11.874 25.825 14 29 14c3.86 0 7-3.141 7-7s-3.14-7-7-7c-3.851 0-6.985 3.127-6.999 6.975C11.42 9.922 3.851 19.12 3.073 30.146A.999.999 0 0 0 4 31.213z"/></g></svg>
|
|
||||||
|
Before Width: | Height: | Size: 885 B |
@@ -1 +1 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 58 58" width="512" height="512"><g fill="#fff"><path d="M54.319 37.839C54.762 35.918 55 33.96 55 32c0-9.095-4.631-17.377-12.389-22.153a1 1 0 1 0-1.049 1.703C48.724 15.96 53 23.604 53 32c0 1.726-.2 3.451-.573 5.147A6.992 6.992 0 0 0 51 37c-3.86 0-7 3.141-7 7s3.14 7 7 7 7-3.141 7-7a7.006 7.006 0 0 0-3.681-6.161zM38.171 54.182A23.867 23.867 0 0 1 29 56a24.047 24.047 0 0 1-17.017-7.092A6.974 6.974 0 0 0 14 44c0-3.859-3.14-7-7-7s-7 3.141-7 7 3.14 7 7 7a6.952 6.952 0 0 0 3.381-.875C15.26 55.136 21.994 58 29 58c3.435 0 6.778-.663 9.936-1.971.51-.211.753-.796.542-1.307a1.001 1.001 0 0 0-1.307-.54zM4 31.213a1 1 0 0 0 1.068-.927c.712-10.089 7.586-18.52 17.22-21.314C23.142 11.874 25.825 14 29 14c3.86 0 7-3.141 7-7s-3.14-7-7-7c-3.851 0-6.985 3.127-6.999 6.975C11.42 9.922 3.851 19.12 3.073 30.146A.999.999 0 0 0 4 31.213z"/></g></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 58 58" width="512" height="512"><g fill="#000"><path d="M54.319 37.839C54.762 35.918 55 33.96 55 32c0-9.095-4.631-17.377-12.389-22.153a1 1 0 1 0-1.049 1.703C48.724 15.96 53 23.604 53 32c0 1.726-.2 3.451-.573 5.147A6.992 6.992 0 0 0 51 37c-3.86 0-7 3.141-7 7s3.14 7 7 7 7-3.141 7-7a7.006 7.006 0 0 0-3.681-6.161zM38.171 54.182A23.867 23.867 0 0 1 29 56a24.047 24.047 0 0 1-17.017-7.092A6.974 6.974 0 0 0 14 44c0-3.859-3.14-7-7-7s-7 3.141-7 7 3.14 7 7 7a6.952 6.952 0 0 0 3.381-.875C15.26 55.136 21.994 58 29 58c3.435 0 6.778-.663 9.936-1.971.51-.211.753-.796.542-1.307a1.001 1.001 0 0 0-1.307-.54zM4 31.213a1 1 0 0 0 1.068-.927c.712-10.089 7.586-18.52 17.22-21.314C23.142 11.874 25.825 14 29 14c3.86 0 7-3.141 7-7s-3.14-7-7-7c-3.851 0-6.985 3.127-6.999 6.975C11.42 9.922 3.851 19.12 3.073 30.146A.999.999 0 0 0 4 31.213z"/></g></svg>
|
||||||
|
Before Width: | Height: | Size: 885 B After Width: | Height: | Size: 885 B |
1
img/clone.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg width="16" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M11.8 13.8H2.2V4.2h9.6m1.2 0c0-.67-.53-1.2-1.2-1.2H2.2C1.53 3 1 3.53 1 4.2v9.6c0 .67.53 1.2 1.2 1.2h9.6c.67 0 1.2-.53 1.2-1.2"/><path d="m4.2 1c-0.67 0-1.2 0.54-1.2 1.2h10.8v10.8c0.67 0 1.2-0.53 1.2-1.2v-9.6c0-0.67-0.53-1.2-1.2-1.2z"/></svg>
|
||||||
|
After Width: | Height: | Size: 327 B |
@@ -1,8 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" viewBox="0 0 16 16">
|
|
||||||
<g fill="currentColor">
|
|
||||||
<rect ry="1" height="8" width="14" y="7" x="1"/>
|
|
||||||
<rect ry=".5" height="1" width="12" y="5" x="2"/>
|
|
||||||
<rect ry=".5" height="1" width="10" y="3" x="3"/>
|
|
||||||
<rect ry=".5" height="1" width="8" y="1" x="4"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 372 B |
1
img/reply.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><path d="M15 15s-.4-7.8-7-10V1L1 8l7 7v-4c5.1 0 7 4 7 4z"/></svg>
|
||||||
|
After Width: | Height: | Size: 128 B |
22
l10n/af.js
@@ -2,7 +2,6 @@ OC.L10N.register(
|
|||||||
"deck",
|
"deck",
|
||||||
{
|
{
|
||||||
"Personal" : "Persoonlik",
|
"Personal" : "Persoonlik",
|
||||||
"Later" : "Later",
|
|
||||||
"copy" : "kopie",
|
"copy" : "kopie",
|
||||||
"Done" : "Gereed",
|
"Done" : "Gereed",
|
||||||
"The file was uploaded" : "Die lêer is opgelaai",
|
"The file was uploaded" : "Die lêer is opgelaai",
|
||||||
@@ -14,37 +13,26 @@ OC.L10N.register(
|
|||||||
"A PHP extension stopped the file upload" : "’n PHP-uitbreiding het die oplaai gestaak",
|
"A PHP extension stopped the file upload" : "’n PHP-uitbreiding het die oplaai gestaak",
|
||||||
"Cancel" : "Kanselleer",
|
"Cancel" : "Kanselleer",
|
||||||
"File already exists" : "Lêer bestaan reeds",
|
"File already exists" : "Lêer bestaan reeds",
|
||||||
"Open details" : "Open besonderhede",
|
|
||||||
"Details" : "Besonderhede",
|
"Details" : "Besonderhede",
|
||||||
"Tags" : "Etikette",
|
"Tags" : "Etikette",
|
||||||
"No participants found" : "Geen deelnemers gevind",
|
|
||||||
"Can edit" : "Kan redigeer",
|
"Can edit" : "Kan redigeer",
|
||||||
"Can share" : "Kan deel",
|
"Can share" : "Kan deel",
|
||||||
"Owner" : "Eienaar",
|
|
||||||
"Delete" : "Skrap",
|
"Delete" : "Skrap",
|
||||||
"Edit" : "Wysig",
|
"Edit" : "Wysig",
|
||||||
"Download" : "Laai af",
|
|
||||||
"Comments" : "Kommentare",
|
"Comments" : "Kommentare",
|
||||||
"Modified" : "Gewysig",
|
"Modified" : "Gewysig",
|
||||||
"Created" : "Geskep",
|
"Created" : "Geskep",
|
||||||
|
"Due date" : "Sperdatum",
|
||||||
|
"Select Date" : "Kies Datum",
|
||||||
|
"Today" : "Vandag",
|
||||||
|
"Tomorrow" : "Môre",
|
||||||
"Save" : "Stoor",
|
"Save" : "Stoor",
|
||||||
"Reply" : "Antwoord",
|
"Reply" : "Antwoord",
|
||||||
"Update" : "Werk by",
|
"Update" : "Werk by",
|
||||||
"Created:" : "Geskep:",
|
|
||||||
"Description" : "Beskrywing",
|
"Description" : "Beskrywing",
|
||||||
"Completed" : "Voltooid",
|
|
||||||
"Select Date" : "Kies Datum",
|
|
||||||
"seconds ago" : "sekondes gelede",
|
"seconds ago" : "sekondes gelede",
|
||||||
"Keyboard shortcuts" : "Sneltoetse",
|
|
||||||
"Keyboard shortcut" : "Snelsleutel",
|
|
||||||
"Search" : "Soek",
|
|
||||||
"Shared with you" : "Met u gedeel",
|
"Shared with you" : "Met u gedeel",
|
||||||
"No notifications" : "Geen kennisgewings",
|
|
||||||
"An error occurred" : "'n Fout het voorgekom",
|
"An error occurred" : "'n Fout het voorgekom",
|
||||||
"Today" : "Vandag",
|
"This week" : "Vandeesweek"
|
||||||
"Tomorrow" : "Môre",
|
|
||||||
"Close" : "Sluit",
|
|
||||||
"Share" : "Deel",
|
|
||||||
"Due date" : "Sperdatum"
|
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
22
l10n/af.json
@@ -1,6 +1,5 @@
|
|||||||
{ "translations": {
|
{ "translations": {
|
||||||
"Personal" : "Persoonlik",
|
"Personal" : "Persoonlik",
|
||||||
"Later" : "Later",
|
|
||||||
"copy" : "kopie",
|
"copy" : "kopie",
|
||||||
"Done" : "Gereed",
|
"Done" : "Gereed",
|
||||||
"The file was uploaded" : "Die lêer is opgelaai",
|
"The file was uploaded" : "Die lêer is opgelaai",
|
||||||
@@ -12,37 +11,26 @@
|
|||||||
"A PHP extension stopped the file upload" : "’n PHP-uitbreiding het die oplaai gestaak",
|
"A PHP extension stopped the file upload" : "’n PHP-uitbreiding het die oplaai gestaak",
|
||||||
"Cancel" : "Kanselleer",
|
"Cancel" : "Kanselleer",
|
||||||
"File already exists" : "Lêer bestaan reeds",
|
"File already exists" : "Lêer bestaan reeds",
|
||||||
"Open details" : "Open besonderhede",
|
|
||||||
"Details" : "Besonderhede",
|
"Details" : "Besonderhede",
|
||||||
"Tags" : "Etikette",
|
"Tags" : "Etikette",
|
||||||
"No participants found" : "Geen deelnemers gevind",
|
|
||||||
"Can edit" : "Kan redigeer",
|
"Can edit" : "Kan redigeer",
|
||||||
"Can share" : "Kan deel",
|
"Can share" : "Kan deel",
|
||||||
"Owner" : "Eienaar",
|
|
||||||
"Delete" : "Skrap",
|
"Delete" : "Skrap",
|
||||||
"Edit" : "Wysig",
|
"Edit" : "Wysig",
|
||||||
"Download" : "Laai af",
|
|
||||||
"Comments" : "Kommentare",
|
"Comments" : "Kommentare",
|
||||||
"Modified" : "Gewysig",
|
"Modified" : "Gewysig",
|
||||||
"Created" : "Geskep",
|
"Created" : "Geskep",
|
||||||
|
"Due date" : "Sperdatum",
|
||||||
|
"Select Date" : "Kies Datum",
|
||||||
|
"Today" : "Vandag",
|
||||||
|
"Tomorrow" : "Môre",
|
||||||
"Save" : "Stoor",
|
"Save" : "Stoor",
|
||||||
"Reply" : "Antwoord",
|
"Reply" : "Antwoord",
|
||||||
"Update" : "Werk by",
|
"Update" : "Werk by",
|
||||||
"Created:" : "Geskep:",
|
|
||||||
"Description" : "Beskrywing",
|
"Description" : "Beskrywing",
|
||||||
"Completed" : "Voltooid",
|
|
||||||
"Select Date" : "Kies Datum",
|
|
||||||
"seconds ago" : "sekondes gelede",
|
"seconds ago" : "sekondes gelede",
|
||||||
"Keyboard shortcuts" : "Sneltoetse",
|
|
||||||
"Keyboard shortcut" : "Snelsleutel",
|
|
||||||
"Search" : "Soek",
|
|
||||||
"Shared with you" : "Met u gedeel",
|
"Shared with you" : "Met u gedeel",
|
||||||
"No notifications" : "Geen kennisgewings",
|
|
||||||
"An error occurred" : "'n Fout het voorgekom",
|
"An error occurred" : "'n Fout het voorgekom",
|
||||||
"Today" : "Vandag",
|
"This week" : "Vandeesweek"
|
||||||
"Tomorrow" : "Môre",
|
|
||||||
"Close" : "Sluit",
|
|
||||||
"Share" : "Deel",
|
|
||||||
"Due date" : "Sperdatum"
|
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
25
l10n/an.js
@@ -1,25 +0,0 @@
|
|||||||
OC.L10N.register(
|
|
||||||
"deck",
|
|
||||||
{
|
|
||||||
"Done" : "Feito",
|
|
||||||
"The file was uploaded" : "O fichero estió puyato",
|
|
||||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "O fichero puyato sobrexe a directiva upload_max_filesize en php.ini",
|
|
||||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "O fichero cargau supera a directiva MAX_FILE_SIZE que s'espezificó en o formulario HTML",
|
|
||||||
"The file was only partially uploaded" : "O fichero nomás s'ha cargau parzialmén",
|
|
||||||
"No file was uploaded" : "No s'ha cargau garra fichero",
|
|
||||||
"Missing a temporary folder" : "Falta una carpeta temporal",
|
|
||||||
"Could not write file to disk" : "No se podió escribir o fichero en o disco",
|
|
||||||
"A PHP extension stopped the file upload" : "Una estensión de PHP aturó a carga de fichers",
|
|
||||||
"Cancel" : "Canzelar",
|
|
||||||
"Details" : "Detalles",
|
|
||||||
"Tags" : "Etiquetas",
|
|
||||||
"Activity" : "Actividat",
|
|
||||||
"Delete" : "Borrar",
|
|
||||||
"Download" : "Escargar",
|
|
||||||
"Modified" : "Modificau",
|
|
||||||
"Search" : "Buscar",
|
|
||||||
"Today" : "Hue",
|
|
||||||
"Close" : "Zarrar",
|
|
||||||
"Share" : "Compartir"
|
|
||||||
},
|
|
||||||
"nplurals=2; plural=(n != 1);");
|
|
||||||
23
l10n/an.json
@@ -1,23 +0,0 @@
|
|||||||
{ "translations": {
|
|
||||||
"Done" : "Feito",
|
|
||||||
"The file was uploaded" : "O fichero estió puyato",
|
|
||||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "O fichero puyato sobrexe a directiva upload_max_filesize en php.ini",
|
|
||||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "O fichero cargau supera a directiva MAX_FILE_SIZE que s'espezificó en o formulario HTML",
|
|
||||||
"The file was only partially uploaded" : "O fichero nomás s'ha cargau parzialmén",
|
|
||||||
"No file was uploaded" : "No s'ha cargau garra fichero",
|
|
||||||
"Missing a temporary folder" : "Falta una carpeta temporal",
|
|
||||||
"Could not write file to disk" : "No se podió escribir o fichero en o disco",
|
|
||||||
"A PHP extension stopped the file upload" : "Una estensión de PHP aturó a carga de fichers",
|
|
||||||
"Cancel" : "Canzelar",
|
|
||||||
"Details" : "Detalles",
|
|
||||||
"Tags" : "Etiquetas",
|
|
||||||
"Activity" : "Actividat",
|
|
||||||
"Delete" : "Borrar",
|
|
||||||
"Download" : "Escargar",
|
|
||||||
"Modified" : "Modificau",
|
|
||||||
"Search" : "Buscar",
|
|
||||||
"Today" : "Hue",
|
|
||||||
"Close" : "Zarrar",
|
|
||||||
"Share" : "Compartir"
|
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
|
||||||
}
|
|
||||||
176
l10n/ar.js
@@ -37,10 +37,6 @@ OC.L10N.register(
|
|||||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user} قام بأرشفة بطاقة {card} في القائمة {stack} على اللوح {board}",
|
"{user} has archived card {card} in list {stack} on board {board}" : "{user} قام بأرشفة بطاقة {card} في القائمة {stack} على اللوح {board}",
|
||||||
"You have unarchived card {card} in list {stack} on board {board}" : "لديك بطاقة غير مؤرشفة {card} في القائمة {stack} على اللوح {board}",
|
"You have unarchived card {card} in list {stack} on board {board}" : "لديك بطاقة غير مؤرشفة {card} في القائمة {stack} على اللوح {board}",
|
||||||
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} لديه بطاقة غير مؤرشفة {card} في القائمة {stack} على اللوح {board}",
|
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} لديه بطاقة غير مؤرشفة {card} في القائمة {stack} على اللوح {board}",
|
||||||
"You have marked the card {card} as done in list {stack} on board {board}" : "لقد قُمت بتمييز البطاقة {card} باعتبارها \"منتهية\" في القائمة {stack} على اللوح {board}",
|
|
||||||
"{user} has marked card {card} as done in list {stack} on board {board}" : "قام المستخدِم {user} بتمييز البطاقة {card} باعتبارها \"منتهية\" في القائمة {stack} على اللوح {board}",
|
|
||||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "لقد قُمت بتمييز البطاقة {card} باعتبارها \"غير منتهية\" في القائمة {stack} على اللوحة {board}",
|
|
||||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "قام المستخدِم {user} بتمييز البطاقة {card} باعتبارها \"غير منتهية\" في القائمة {stack} على اللوحة {board}",
|
|
||||||
"You have removed the due date of card {card}" : "قمت بإزالة التاريخ المحدد من البطاقة {card}",
|
"You have removed the due date of card {card}" : "قمت بإزالة التاريخ المحدد من البطاقة {card}",
|
||||||
"{user} has removed the due date of card {card}" : "{user} قام بإزالة التاريخ المحدد من البطاقة {card}",
|
"{user} has removed the due date of card {card}" : "{user} قام بإزالة التاريخ المحدد من البطاقة {card}",
|
||||||
"You have set the due date of card {card} to {after}" : "قمت بتعيين التاريخ المحدد للبطاقة {card} إلى {after}",
|
"You have set the due date of card {card} to {after}" : "قمت بتعيين التاريخ المحدد للبطاقة {card} إلى {after}",
|
||||||
@@ -67,15 +63,11 @@ OC.L10N.register(
|
|||||||
"{user} has restored the attachment {attachment} to card {card}" : "{user} قام باسترجاع المرفق {attachment} إلى البطاقة {card}",
|
"{user} has restored the attachment {attachment} to card {card}" : "{user} قام باسترجاع المرفق {attachment} إلى البطاقة {card}",
|
||||||
"You have commented on card {card}" : "لقد علقت على البطاقة {بطاقة}",
|
"You have commented on card {card}" : "لقد علقت على البطاقة {بطاقة}",
|
||||||
"{user} has commented on card {card}" : "{مستخدم} علق على بطاقة {بطاقة}",
|
"{user} has commented on card {card}" : "{مستخدم} علق على بطاقة {بطاقة}",
|
||||||
|
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>وصف البطاقة</strong>داخل تطبيق Deck قد تغيرت.",
|
||||||
"Deck" : "Deck",
|
"Deck" : "Deck",
|
||||||
"Changes in the <strong>Deck app</strong>" : "تغييرات في <strong>تطبيق Deck</strong> ",
|
"Changes in the <strong>Deck app</strong>" : "تغييرات في <strong>تطبيق Deck</strong> ",
|
||||||
"A <strong>board, list or card</strong> was changed" : "تمّ تغيير <strong>لوحة board أو قائمة list أو بطاقة card </strong>.",
|
|
||||||
"A <strong>comment</strong> was created on a card" : "<strong>تعليق</strong> تم إنشاؤه على بطاقة",
|
"A <strong>comment</strong> was created on a card" : "<strong>تعليق</strong> تم إنشاؤه على بطاقة",
|
||||||
"A <strong>card description</strong> has been changed" : "تمّ تغيير <strong>وصف بطاقة</strong>.",
|
|
||||||
"Cards due today" : "البطاقات المستحقة اليوم",
|
|
||||||
"Cards due tomorrow" : "البطاقات المستحقة غداً",
|
|
||||||
"Upcoming cards" : "البطاقات القادمة",
|
"Upcoming cards" : "البطاقات القادمة",
|
||||||
"Load more" : "حمّل أكثر",
|
|
||||||
"Personal" : "شخصي",
|
"Personal" : "شخصي",
|
||||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "البطاقة \"%s\" على \"%s\" كُلفت بها من قبل %s.",
|
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "البطاقة \"%s\" على \"%s\" كُلفت بها من قبل %s.",
|
||||||
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} قام بتكليف البطاقة {deck-board} على {deck-board} لك",
|
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} قام بتكليف البطاقة {deck-board} على {deck-board} لك",
|
||||||
@@ -85,14 +77,8 @@ OC.L10N.register(
|
|||||||
"{user} has mentioned you in a comment on {deck-card}." : "{user} أشار إليك في تعليق على {deck-card}",
|
"{user} has mentioned you in a comment on {deck-card}." : "{user} أشار إليك في تعليق على {deck-card}",
|
||||||
"The board \"%s\" has been shared with you by %s." : "تمت مشاركة اللوح \"%s\" معك من قبل %s.",
|
"The board \"%s\" has been shared with you by %s." : "تمت مشاركة اللوح \"%s\" معك من قبل %s.",
|
||||||
"{user} has shared {deck-board} with you." : "{user} قام بمشاركة {deck-board} معك.",
|
"{user} has shared {deck-board} with you." : "{user} قام بمشاركة {deck-board} معك.",
|
||||||
"Deck board" : "رُقعة اللوحات Deck board",
|
|
||||||
"Owned by %1$s" : "يملكها %1$s",
|
|
||||||
"Deck boards, cards and comments" : "رُقعة اللوحات و البطاقات و الملاحظات",
|
|
||||||
"From %1$s, in %2$s/%3$s, owned by %4$s" : " من %1$s، في %2$s/%3$s، يملكها %4$s",
|
|
||||||
"Create a new deck card" : "إنشاء بطاقة deck card جديدة",
|
|
||||||
"Card comments" : "تعليقات البطاقة ",
|
"Card comments" : "تعليقات البطاقة ",
|
||||||
"%s on %s" : "%s على %s",
|
"%s on %s" : "%s على %s",
|
||||||
"Deck boards and cards" : "رُقَع اللوحات و البطاقات",
|
|
||||||
"No data was provided to create an attachment." : "لا بيانات تم تقديمها لانشاء مرفق",
|
"No data was provided to create an attachment." : "لا بيانات تم تقديمها لانشاء مرفق",
|
||||||
"Finished" : "اكتمل",
|
"Finished" : "اكتمل",
|
||||||
"To review" : "لإعادة المراجعة",
|
"To review" : "لإعادة المراجعة",
|
||||||
@@ -114,22 +100,26 @@ OC.L10N.register(
|
|||||||
"Could not write file to disk" : "لم يستطع كتابة ملف للقرص",
|
"Could not write file to disk" : "لم يستطع كتابة ملف للقرص",
|
||||||
"A PHP extension stopped the file upload" : "إضافة البي اچ بي PHP أوقفت رفع الملف",
|
"A PHP extension stopped the file upload" : "إضافة البي اچ بي PHP أوقفت رفع الملف",
|
||||||
"No file uploaded or file size exceeds maximum of %s" : "لم يتم تحميل أي ملف أو أن يتجاوز حجم الملف الحد الأقصى %s",
|
"No file uploaded or file size exceeds maximum of %s" : "لم يتم تحميل أي ملف أو أن يتجاوز حجم الملف الحد الأقصى %s",
|
||||||
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : " هذه الملاحظات فيها أكثر من %s حرفاً.\n تمّت إضافتها كمُرفق إلى البطاقة التي اسمها%s.\n الموجودة على الرابط %s.",
|
|
||||||
"Card not found" : "لم يتم العثور على البطاقة ",
|
"Card not found" : "لم يتم العثور على البطاقة ",
|
||||||
"Path is already shared with this card" : "تم مشاركة المسار بالفعل مع هذه البطاقة ",
|
"Path is already shared with this card" : "تم مشاركة المسار بالفعل مع هذه البطاقة ",
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "تاريخ غير صحيح, يجب أن يكون تنسيق التاريخ YYYY-MM-DD",
|
"Invalid date, date format must be YYYY-MM-DD" : "تاريخ غير صحيح, يجب أن يكون تنسيق التاريخ YYYY-MM-DD",
|
||||||
"Personal planning and team project organization" : "التخطيط الشخصي و تنظيم مشروع الفريق",
|
"Personal planning and team project organization" : "التخطيط الشخصي و تنظيم مشروع الفريق",
|
||||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "التطبيق \"رِزَم البطاقات\" Deck هو أداة لتنظيم المهام الشخصية و الجماعية في نكست كلاود على نمط \"خطوط التصنيع أو التجميع في المصانع\" و المعروف بـ kanban.\n\n\n- 📥 أكتب مهمتك او مهمة فريقك على بطاقة و ضع البطاقة في الرُّقعة على كدسة البطاقات من ذات التصنيف أو المرحلة من الإنجاز\n- 📄 دوّن ملاحظاتك الإضافية على البطاقة بصيغة ماركداون markdown\n- 🔖 و يمكنك أيضاً إسناد البطاقة أي المهمة إلى شخص أو أشخاص في فريقك\n- 👥 شارك البطاقة مع من ترغب من أعضاء فريقك أو عائلتك أو أصدقائك\n- 📎 إرفاق ملفات و تضمينها بصيغة ماركداون في البطاقة\n- 💬ناقش البطاقة مع زملائك في خانة الملاحظات\n- ⚡ تابع ما يُستجد من عمليات و تطوّرات على البطاقة أو المهمة\n- 🚀 حافظ على مشروعك مُنسّقاً باستمرار.",
|
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "دك (Deck) هو أداة تنظيم باسلوب كانبان (kanban) تهدف إلى التخطيط الشخصي وتنظيم المشروع للفرق مع نيكست كلاود (Nextcloud).\n- 📥 إضافة مهامك إلى البطاقات وترتيبها\n- 📄 كتابة ملاحظات إضافية باستخدام مارك داون (markdown)\n- 🔖 تعيين تسميات لتنظيم أفضل\n- 👥 شارك مع فريقك أو أصدقائك أو عائلتك\n- 📎 إرفاق الملفات وتضمينها بالوصف المستخدم فيه مارك داون (markdown)\n- 💬 ناقش مع فريقك باستخدام التعليقات\n- ⚡ تتبع التغييرات في تيار النشاط\n- 🚀 اجعل مشروعك منظماً",
|
||||||
|
"Card details" : "تفاصيل البطاقة",
|
||||||
"Add board" : "إضافة لوح",
|
"Add board" : "إضافة لوح",
|
||||||
"Select the board to link to a project" : "تحديد اللوح لربطه بمشروع",
|
"Select the board to link to a project" : "تحديد اللوح لربطه بمشروع",
|
||||||
"Search by board title" : "بحث بواسطة عنوان اللوح",
|
"Search by board title" : "بحث بواسطة عنوان اللوح",
|
||||||
"Select board" : "حدد لوح",
|
"Select board" : "حدد لوح",
|
||||||
"Move card to another board" : "حرك البطاقة الى لوح اخر",
|
"Create a new card" : "أنشى بطاقة جديدة ",
|
||||||
"Select a board" : "حدد لوح",
|
"Select a board" : "حدد لوح",
|
||||||
"No lists available" : "لا يوجد قائمة متاحه ",
|
|
||||||
"Select a list" : "اختر قائمة ",
|
"Select a list" : "اختر قائمة ",
|
||||||
"Move card" : "حرك البطاقة",
|
"Card title" : "عنوان البطاقة ",
|
||||||
"Cancel" : "إلغاء",
|
"Cancel" : "إلغاء",
|
||||||
|
"Creating the new card …" : "أنشى البطاقة الجديدة ",
|
||||||
|
"Card \"{card}\" was added to \"{board}\"" : "\"{بطاقة}\" تمت إضافتها في \"{اللوح}\"",
|
||||||
|
"Open card" : "فتح البطاقة ",
|
||||||
|
"Close" : "إغلاق",
|
||||||
|
"Create card" : "أنشى بطاقة ",
|
||||||
"Select a card" : "حدد بطاقة",
|
"Select a card" : "حدد بطاقة",
|
||||||
"Select the card to link to a project" : "حدد البطاقة لربطها بمشروع",
|
"Select the card to link to a project" : "حدد البطاقة لربطها بمشروع",
|
||||||
"Link to card" : "اربط بطاقة",
|
"Link to card" : "اربط بطاقة",
|
||||||
@@ -144,7 +134,6 @@ OC.L10N.register(
|
|||||||
"Archived cards" : "البطاقات المؤرشفة",
|
"Archived cards" : "البطاقات المؤرشفة",
|
||||||
"Add list" : "إضافة قائمة",
|
"Add list" : "إضافة قائمة",
|
||||||
"List name" : "قامة اسماء",
|
"List name" : "قامة اسماء",
|
||||||
"Active filters" : "فلاتر نشطة",
|
|
||||||
"Apply filter" : "تطبيق التصفية",
|
"Apply filter" : "تطبيق التصفية",
|
||||||
"Filter by tag" : "تصفية بواسطة الوسم",
|
"Filter by tag" : "تصفية بواسطة الوسم",
|
||||||
"Filter by assigned user" : "تصفية بواسطة المستخدم الموكل اليه",
|
"Filter by assigned user" : "تصفية بواسطة المستخدم الموكل اليه",
|
||||||
@@ -156,49 +145,36 @@ OC.L10N.register(
|
|||||||
"Next 30 days" : "ال 30 يوم القادمة",
|
"Next 30 days" : "ال 30 يوم القادمة",
|
||||||
"No due date" : "لا تاريخ إنجاز",
|
"No due date" : "لا تاريخ إنجاز",
|
||||||
"Clear filter" : "ازل التصفية",
|
"Clear filter" : "ازل التصفية",
|
||||||
"View Modes" : "وضعيات العرض",
|
|
||||||
"Toggle View Modes" : "التبديل بين وضعيات العرض",
|
|
||||||
"Hide archived cards" : "إخفاء البطاقات المؤرشفة ",
|
"Hide archived cards" : "إخفاء البطاقات المؤرشفة ",
|
||||||
"Show archived cards" : "اظهر البطاقات المؤرشفة",
|
"Show archived cards" : "اظهر البطاقات المؤرشفة",
|
||||||
"Toggle compact mode" : "تبديل النمط المضغوط",
|
"Toggle compact mode" : "تبديل النمط المضغوط",
|
||||||
"Hide card cover images" : "إخفِ صور غلاف البطاقات",
|
|
||||||
"Show card cover images" : "أظهِر صور غلاف البطاقات",
|
|
||||||
"Open details" : "افتح التفاصيل",
|
|
||||||
"Details" : "التفاصيل",
|
"Details" : "التفاصيل",
|
||||||
"Currently present people" : "أشخاص معروضون حاليّاً",
|
|
||||||
"Loading board" : "جارِ تحميل اللوح..",
|
"Loading board" : "جارِ تحميل اللوح..",
|
||||||
"Board not found" : "اللوح غير موجود",
|
"No lists available" : "لا يوجد قائمة متاحه ",
|
||||||
"Create a new list to add cards to this board" : "إنشاء قائمة جديدة لإضافة البطاقات على هذا اللوح",
|
"Create a new list to add cards to this board" : "إنشاء قائمة جديدة لإضافة البطاقات على هذا اللوح",
|
||||||
|
"Board not found" : "اللوح غير موجود",
|
||||||
"Sharing" : "المشاركة",
|
"Sharing" : "المشاركة",
|
||||||
"Tags" : "الوسوم",
|
"Tags" : "الوسوم",
|
||||||
"Deleted items" : "العناصر الممسوحة",
|
"Deleted items" : "العناصر الممسوحة",
|
||||||
"Activity" : "النشاط",
|
"Timeline" : "الجدول الزمني",
|
||||||
"Deleted lists" : "القوائم المحذوفة",
|
"Deleted lists" : "القوائم المحذوفة",
|
||||||
"Undo" : "تراجع",
|
"Undo" : "تراجع",
|
||||||
"Deleted cards" : "البطاقات المحذوفة",
|
"Deleted cards" : "البطاقات المحذوفة",
|
||||||
"Share board with a user, group or team …" : "مشاركة اللوحة مع مستخدِم او مجموعة أو فريق ...",
|
"Share board with a user, group or circle …" : "مشاركة اللوح مع مستخدم،مجموعة أو دائرة ..",
|
||||||
"Searching for users, groups and teams …" : "البحث عن مستخدِمين، أو مجموعات، أو فِرَق",
|
"Searching for users, groups and circles …" : "ابحث عن أعضاء، مجموعات أو حلقات ...",
|
||||||
"No participants found" : "لم يتم العثور على مشاركين",
|
"No participants found" : "لم يتم العثور على مشاركين",
|
||||||
"Board owner" : "منشئ اللوح",
|
"Board owner" : "منشئ اللوح",
|
||||||
"(Group)" : "(مجموعة)",
|
"(Group)" : "(مجموعة)",
|
||||||
"(Team)" : "(الفريق)",
|
"(Circle)" : "(دائرة)",
|
||||||
"Can edit" : "يمكن تعديله",
|
"Can edit" : "يمكن تعديله",
|
||||||
"Can share" : "يمكن مشاركته",
|
"Can share" : "يمكن مشاركته",
|
||||||
"Can manage" : "يمكن إدارته",
|
"Can manage" : "يمكن إدارته",
|
||||||
"Owner" : "المالك",
|
|
||||||
"Delete" : "حذف ",
|
"Delete" : "حذف ",
|
||||||
"Failed to create share with {displayName}" : "فشل في إنشاء المشاركة مع {displayName}",
|
"Failed to create share with {displayName}" : "فشل في إنشاء المشاركة مع {displayName}",
|
||||||
"Are you sure you want to transfer the board {title} to {user}?" : "هل أنت متأكد أنك تريد نقل اللوحة {title} إلى {user} ؟",
|
"Add a new list" : "اضف قائمة جديدة",
|
||||||
"Transfer the board." : "نقل اللوحة.",
|
|
||||||
"Transfer" : "نقل",
|
|
||||||
"The board has been transferred to {user}" : "تمّ نقل اللوحة إلى {user}",
|
|
||||||
"Failed to transfer the board to {user}" : "تعذّر نقل اللوحة إلى {user}",
|
|
||||||
"Edit list title" : "عدّل اسم القائمة",
|
|
||||||
"Archive all cards" : "أرشفة جميع البطاقات ",
|
"Archive all cards" : "أرشفة جميع البطاقات ",
|
||||||
"Unarchive all cards" : "تراجع عن أرشفة كل البطاقات",
|
|
||||||
"Delete list" : "حذف القائمة",
|
"Delete list" : "حذف القائمة",
|
||||||
"Archive all cards in this list" : "أرشفة جميع البطاقات في القائمة ",
|
"Archive all cards in this list" : "أرشفة جميع البطاقات في القائمة ",
|
||||||
"Unarchive all cards in this list" : "تراجع عن أرشفة كل البطاقات في هذه القائمة",
|
|
||||||
"Add a new card" : "إضافة بطاقة جديدة",
|
"Add a new card" : "إضافة بطاقة جديدة",
|
||||||
"Card name" : "اسم البطاقة ",
|
"Card name" : "اسم البطاقة ",
|
||||||
"List deleted" : "القائمة حٌذفت ",
|
"List deleted" : "القائمة حٌذفت ",
|
||||||
@@ -207,16 +183,10 @@ OC.L10N.register(
|
|||||||
"title and color value must be provided" : "العنوان و قيمة اللون يجب تقديمها ",
|
"title and color value must be provided" : "العنوان و قيمة اللون يجب تقديمها ",
|
||||||
"Board name" : "اسم اللوح",
|
"Board name" : "اسم اللوح",
|
||||||
"Members" : "الاعضاء",
|
"Members" : "الاعضاء",
|
||||||
"Assign to users/groups/team" : "إسناد إلى مستخدِمين/مجموعات/فِرَق",
|
|
||||||
"Assign a user to this card…" : "انسب مستخدم الى هذه البطاقة..",
|
|
||||||
"Select a user to assign to this card…" : "حدِّد مستخدِماً ليتم إسناد هذه البطاقة له...",
|
|
||||||
"Upload new files" : "رفع ملفات جديدة",
|
"Upload new files" : "رفع ملفات جديدة",
|
||||||
"Share from Files" : "مشاركة من الملفات",
|
"Share from Files" : "مشاركة من الملفات",
|
||||||
"Pending share" : "مشاركة مُعلّقة",
|
|
||||||
"Add this attachment" : "إضافة هذا المرفق",
|
"Add this attachment" : "إضافة هذا المرفق",
|
||||||
"Show in Files" : "عرض في الملفات ",
|
"Show in Files" : "عرض في الملفات ",
|
||||||
"Download" : "تنزيل",
|
|
||||||
"Remove attachment" : "حذف المُرفق",
|
|
||||||
"Delete Attachment" : "مسح المرفق",
|
"Delete Attachment" : "مسح المرفق",
|
||||||
"Restore Attachment" : "إستعادة المرفق",
|
"Restore Attachment" : "إستعادة المرفق",
|
||||||
"File to share" : "ملف للمشاركة",
|
"File to share" : "ملف للمشاركة",
|
||||||
@@ -230,6 +200,16 @@ OC.L10N.register(
|
|||||||
"The title cannot be empty." : "لا يمكن ترك العنوان فارغًا.",
|
"The title cannot be empty." : "لا يمكن ترك العنوان فارغًا.",
|
||||||
"No comments yet. Begin the discussion!" : "لا يوجد تعليقات بعد, ابدأ النقاش الآن!",
|
"No comments yet. Begin the discussion!" : "لا يوجد تعليقات بعد, ابدأ النقاش الآن!",
|
||||||
"Failed to load comments" : "فشل في تحميل التعليقات ",
|
"Failed to load comments" : "فشل في تحميل التعليقات ",
|
||||||
|
"Assign a tag to this card…" : "انسب وسم الى هذه البطاقة..",
|
||||||
|
"Assign to users" : "انسب الى المتسخدمين",
|
||||||
|
"Assign to users/groups/circles" : "انسب الى المستخدمين،المجموعات،الدوائر",
|
||||||
|
"Assign a user to this card…" : "انسب مستخدم الى هذه البطاقة..",
|
||||||
|
"Due date" : "تاريخ الانجاز",
|
||||||
|
"Set a due date" : "تعيين تاريخ الانجاز",
|
||||||
|
"Remove due date" : "ازالة تاريخ الانجاز",
|
||||||
|
"Select Date" : "اختر التاريخ ",
|
||||||
|
"Today" : "اليوم",
|
||||||
|
"Tomorrow" : "غدا",
|
||||||
"Save" : "حفظ",
|
"Save" : "حفظ",
|
||||||
"The comment cannot be empty." : "التعليق لايمكن ان يكون فارغا.",
|
"The comment cannot be empty." : "التعليق لايمكن ان يكون فارغا.",
|
||||||
"The comment cannot be longer than 1000 characters." : "التعليق لا يمكن ان يكون اطول من 1000 حرف.",
|
"The comment cannot be longer than 1000 characters." : "التعليق لا يمكن ان يكون اطول من 1000 حرف.",
|
||||||
@@ -237,7 +217,6 @@ OC.L10N.register(
|
|||||||
"Cancel reply" : "إلغاء الرد",
|
"Cancel reply" : "إلغاء الرد",
|
||||||
"Reply" : "رد",
|
"Reply" : "رد",
|
||||||
"Update" : "تحديث",
|
"Update" : "تحديث",
|
||||||
"Created:" : "تاريخ الإنشاء :",
|
|
||||||
"Description" : "الوصف",
|
"Description" : "الوصف",
|
||||||
"(Unsaved)" : "(غير محفوظ)",
|
"(Unsaved)" : "(غير محفوظ)",
|
||||||
"(Saving…)" : "(يُحفظ..)",
|
"(Saving…)" : "(يُحفظ..)",
|
||||||
@@ -247,78 +226,29 @@ OC.L10N.register(
|
|||||||
"Add Attachment" : "أضف ملحق",
|
"Add Attachment" : "أضف ملحق",
|
||||||
"Write a description …" : "كتابة وصف...",
|
"Write a description …" : "كتابة وصف...",
|
||||||
"Choose attachment" : "اختيار مرفق",
|
"Choose attachment" : "اختيار مرفق",
|
||||||
"Assign a due date to this card…" : "تعيين تاريخ استحقاق لهذه البطاقة...",
|
|
||||||
"Set a due date" : "تعيين تاريخ الانجاز",
|
|
||||||
"Add due date" : "أضِف تاريخ الاستحقاق",
|
|
||||||
"Choose a date" : "إختَر تاريخاً",
|
|
||||||
"Remove due date" : "ازالة تاريخ الانجاز",
|
|
||||||
"Completed" : "مُكتمل",
|
|
||||||
"Due at:" : "تاريخ الاستحقاق:",
|
|
||||||
"Not completed" : "غير مكتمل",
|
|
||||||
"Unarchive card" : "إلغاء أرشفة البطاقة ",
|
|
||||||
"Archive card" : "أرشفة البطاقة",
|
|
||||||
"Select Date" : "اختر التاريخ ",
|
|
||||||
"Set due date for later today" : "عيِّن آخِرَ هذا اليوم كموعدٍ لاستحقاق البطاقة",
|
|
||||||
"Set due date for tomorrow" : "عيِّن يوم الغد كموعدٍ لاستحقاق البطاقة",
|
|
||||||
"Set due date for this weekend" : "عيِّن نهاية هذا الأسبوع كموعدٍ لاستحقاق البطاقة",
|
|
||||||
"Set due date for next week" : "عيِّن الأسبوع المُقبل كموعدٍ لاستحقاق البطاقة",
|
|
||||||
"Assign a tag to this card…" : "انسب وسم الى هذه البطاقة..",
|
|
||||||
"Select or create a tag…" : "إختَر أو أنشِئْ وسماً ...",
|
|
||||||
"Create a new tag:" : "إنشاء سِمَةٍ tag جديدة:",
|
|
||||||
"(group)" : "(مجموعة)",
|
"(group)" : "(مجموعة)",
|
||||||
"Next week – {timeLocale}" : "الأسبوع القادم – {timeLocale}",
|
|
||||||
"Todo items" : "قائمة المهام",
|
|
||||||
"{count} comments, {unread} unread" : "{عدد} التعليقات، {غير مقروءة} غير مقروءة",
|
"{count} comments, {unread} unread" : "{عدد} التعليقات، {غير مقروءة} غير مقروءة",
|
||||||
"Edit card title" : "تعديل اسم القائمة",
|
|
||||||
"Card details" : "تفاصيل البطاقة",
|
|
||||||
"Assign to me" : "ينسب لي",
|
"Assign to me" : "ينسب لي",
|
||||||
"Unassign myself" : "إلغاء تعييني ",
|
"Unassign myself" : "إلغاء تعييني ",
|
||||||
"Mark as not done" : "تمييز كـ \"غير منتهٍ\"",
|
"Move card" : "حرك البطاقة",
|
||||||
"Mark as done" : "تمييز كمُنجَز",
|
"Unarchive card" : "إلغاء أرشفة البطاقة ",
|
||||||
|
"Archive card" : "أرشفة البطاقة",
|
||||||
"Delete card" : "حذف البطاقة",
|
"Delete card" : "حذف البطاقة",
|
||||||
|
"Move card to another board" : "حرك البطاقة الى لوح اخر",
|
||||||
"Card deleted" : "البطاقة حٌذفت ",
|
"Card deleted" : "البطاقة حٌذفت ",
|
||||||
"seconds ago" : "ثوانٍ مضت",
|
"seconds ago" : "ثوانٍ مضت",
|
||||||
"Keyboard shortcuts" : "إختصارات لوحة المفاتيح",
|
|
||||||
"Boost your productivity using Deck with keyboard shortcuts." : "ضاعِف إنتاجيتك باستعمال \"رِزَم البطاقات\" Deck، و اختصارات لوحة المفاتيح ",
|
|
||||||
"Board actions" : "إجراءات اللوحة",
|
|
||||||
"Keyboard shortcut" : "إختصار لوحة المفاتيح",
|
|
||||||
"Action" : "الإجراء",
|
|
||||||
"Shift" : "العالي shift",
|
|
||||||
"Scroll" : "تحريك",
|
|
||||||
"Scroll sideways" : "تحريك للجنب",
|
|
||||||
"Navigate between cards" : "التنقُّل بين البطاقات",
|
|
||||||
"Esc" : "خروج",
|
|
||||||
"Close card details" : "أغلِق تفاصيل البطاقة",
|
|
||||||
"Ctrl" : "تحكم Ctrl",
|
|
||||||
"Search" : "بحث",
|
|
||||||
"Show card filters" : "أظهِر فلاتر البطاقة",
|
|
||||||
"Clear card filters" : "إمحُ فلاتر البطاقة",
|
|
||||||
"Show help dialog" : "أظهِر نافذة حوار المساعدة",
|
|
||||||
"Card actions" : "إجراءات البطاقة",
|
|
||||||
"The following actions can be triggered on the currently highlighted card" : "الإجراءات التالية يمكن تنفيذها على البطاقات المُعلّمة حالياً",
|
|
||||||
"Enter" : "إدخال",
|
|
||||||
"Space" : "المدى",
|
|
||||||
"Open card details" : "إفتَح تفاصيل البطاقة",
|
|
||||||
"Edit the card title" : "عدِّل عنوان البطاقة",
|
|
||||||
"Assign yourself to the current card" : "أسنِد هذه البطاقة إلى نفسِك",
|
|
||||||
"Archive/unarchive the current card" : "أرشِف أو ألغِ ترشيف البطاقة الحالية",
|
|
||||||
"Mark card as completed/not completed" : "علِّم بطاقة كـ\"منجزة\" أو \"غير منجزة\"",
|
|
||||||
"Open card menu" : "إفتَح قائمة البطاقات",
|
|
||||||
"All boards" : "جميع الالواح",
|
"All boards" : "جميع الالواح",
|
||||||
"Archived boards" : "الالواح المؤرشفة",
|
"Archived boards" : "الالواح المؤرشفة",
|
||||||
"Shared with you" : "تم مشاركتها معك",
|
"Shared with you" : "تم مشاركتها معك",
|
||||||
"Deck settings" : "إعدادات رِزَمِ البطاقات",
|
|
||||||
"Use bigger card view" : "استخدام بطاقة عرض أكبر ",
|
"Use bigger card view" : "استخدام بطاقة عرض أكبر ",
|
||||||
"Show card ID badge" : "أعرض شارة رقم البطاقة",
|
|
||||||
"Show boards in calendar/tasks" : "إظهار اللوح في التقويم/المهام",
|
"Show boards in calendar/tasks" : "إظهار اللوح في التقويم/المهام",
|
||||||
"Limit board creation to some groups" : "قَصْرُ حَقِّ إنشاء الألواح على بعض المجموعات ",
|
"Limit deck usage of groups" : "تقييد استخدام Deck للمجموعات",
|
||||||
"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." : "المستخدِمون من خارج تلك المجموعات لن يمكنكم إنشاء لوحاتهم الخاصة؛ لكن يمكنهم العمل على اللوحات التي تتمّ مشاركتها معهم.",
|
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم.",
|
||||||
"Board details" : "تفاصيل لوح",
|
"Board details" : "تفاصيل لوح",
|
||||||
"Edit board" : "تعديل اللوح",
|
"Edit board" : "تعديل اللوح",
|
||||||
"Clone board" : "استنسخ اللوح",
|
"Clone board" : "استنسخ اللوح",
|
||||||
"Unarchive board" : "إلغاء أرشفة اللوح",
|
"Unarchive board" : "إلغاء أرشفة اللوح",
|
||||||
"Archive board" : "أرشفة اللوح ",
|
"Archive board" : "أرشفة اللوح ",
|
||||||
"Export board" : "تصدير اللوحة",
|
|
||||||
"Turn on due date reminders" : "تفعيل التذكيرات للموعد المحدد ",
|
"Turn on due date reminders" : "تفعيل التذكيرات للموعد المحدد ",
|
||||||
"Turn off due date reminders" : "إيقاف تشغيل التذكيرات للموعد المحددد",
|
"Turn off due date reminders" : "إيقاف تشغيل التذكيرات للموعد المحددد",
|
||||||
"Due date reminders" : "تذكيرات الموعد المحدد ",
|
"Due date reminders" : "تذكيرات الموعد المحدد ",
|
||||||
@@ -330,36 +260,15 @@ OC.L10N.register(
|
|||||||
"Only assigned cards" : "البطاقات المخصصة فقط",
|
"Only assigned cards" : "البطاقات المخصصة فقط",
|
||||||
"No reminder" : "لا يوجد تذكير ",
|
"No reminder" : "لا يوجد تذكير ",
|
||||||
"An error occurred" : "حدث خطأ",
|
"An error occurred" : "حدث خطأ",
|
||||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "هل أنت متأكد من حذف اللوحة {title}؟ هذا سيؤدي إلى حذف كل بيانات هذه اللوحة بما في ذلك البطاقات المؤرشفة.",
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "هل انت متأكد تريد مسح اللوح {title}؟ هذا سوف يمسح جميع بيانات هذا اللوح.",
|
||||||
"Delete the board?" : "مسح اللوح؟",
|
"Delete the board?" : "مسح اللوح؟",
|
||||||
"Loading filtered view" : "جارِ تحميل التصفية ",
|
"Loading filtered view" : "جارِ تحميل التصفية ",
|
||||||
"Today" : "اليوم",
|
"This week" : "هذا الأسبوع",
|
||||||
"Tomorrow" : "غدا",
|
|
||||||
"No due" : "غير محدد",
|
"No due" : "غير محدد",
|
||||||
"Search for {searchQuery} in all boards" : "البحث عن {searchQuery} في جميع اللوح",
|
"Search for {searchQuery} in all boards" : "البحث عن {searchQuery} في جميع اللوح",
|
||||||
"No results found" : "لا يتم العثور على أي نتائج ",
|
"No results found" : "لا يتم العثور على أي نتائج ",
|
||||||
"This weekend – {timeLocale}" : "نهاية هذا الأسبوع – {timeLocale}",
|
|
||||||
"Deck board {name}\n* Last modified on {lastMod}" : "اسم اللوحة {name} \n* آخر تعديل لها في {lastMod}",
|
|
||||||
"{stack} in {board}" : "{stack} في {board}",
|
|
||||||
"Click to expand description" : "إضعط للتوسّع في الوصف",
|
|
||||||
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* أُنشأت في {created}\n* آخر تعديل لها في {lastMod}\n* {nbAttachments} مُرفقات\n* {nbComments} مُلاحظات",
|
|
||||||
"{nbCards} cards" : "{nbCards} بطاقات",
|
|
||||||
"Click to expand comment" : "إضغط للتوسع في الملاحظات",
|
|
||||||
"Create a new card" : "أنشى بطاقة جديدة ",
|
|
||||||
"Card title" : "عنوان البطاقة ",
|
|
||||||
"Create card" : "أنشى بطاقة ",
|
|
||||||
"Creating the new card …" : "أنشى البطاقة الجديدة ",
|
|
||||||
"Card \"{card}\" was added to \"{board}\"" : "\"{بطاقة}\" تمت إضافتها في \"{اللوح}\"",
|
|
||||||
"Open card" : "فتح البطاقة ",
|
|
||||||
"Close" : "إغلاق",
|
|
||||||
"No upcoming cards" : "لا يوجد بطاقات قادمة ",
|
"No upcoming cards" : "لا يوجد بطاقات قادمة ",
|
||||||
"upcoming cards today" : "البطاقات القادمة اليومَ",
|
|
||||||
"upcoming cards tomorrow" : "البطاقات القادمة غداً",
|
|
||||||
"upcoming cards" : "البطاقات القادمة",
|
"upcoming cards" : "البطاقات القادمة",
|
||||||
"New card" : "بطاقة جديدة",
|
|
||||||
"Due on {date}" : "مطلوب في {date}",
|
|
||||||
"Tomorrow – {timeLocale}" : "غداً – {timeLocale}",
|
|
||||||
"Later today – {timeLocale}" : "في وقت لاحقٍ اليوم – {timeLocale}",
|
|
||||||
"Link to a board" : "ربط بلوح",
|
"Link to a board" : "ربط بلوح",
|
||||||
"Link to a card" : "ربط ببطاقة",
|
"Link to a card" : "ربط ببطاقة",
|
||||||
"Create a card" : "أنشى بطاقة ",
|
"Create a card" : "أنشى بطاقة ",
|
||||||
@@ -370,19 +279,6 @@ OC.L10N.register(
|
|||||||
"Error creating the share" : "خطأ في إنشاء المشاركة",
|
"Error creating the share" : "خطأ في إنشاء المشاركة",
|
||||||
"Share with a Deck card" : "مشاركة مع بطاقة Deck",
|
"Share with a Deck card" : "مشاركة مع بطاقة Deck",
|
||||||
"Share {file} with a Deck card" : "مشاركة الملف {file} مع بطاقة Deck",
|
"Share {file} with a Deck card" : "مشاركة الملف {file} مع بطاقة Deck",
|
||||||
"Share" : "مشاركة ",
|
"Share" : "مشاركة "
|
||||||
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>وصف البطاقة</strong>داخل تطبيق Deck قد تغيرت.",
|
|
||||||
"Timeline" : "الجدول الزمني",
|
|
||||||
"Share board with a user, group or circle …" : "مشاركة اللوح مع مستخدم،مجموعة أو دائرة ..",
|
|
||||||
"Searching for users, groups and circles …" : "ابحث عن أعضاء، مجموعات أو حلقات ...",
|
|
||||||
"(Circle)" : "(دائرة)",
|
|
||||||
"Assign to users" : "انسب الى المتسخدمين",
|
|
||||||
"Assign to users/groups/circles" : "انسب الى المستخدمين،المجموعات،الدوائر",
|
|
||||||
"Due date" : "تاريخ الانجاز",
|
|
||||||
"Next week" : "الاسبوع القادم",
|
|
||||||
"Next month" : "الشهر القادم",
|
|
||||||
"List is empty" : "القائمة فارغة",
|
|
||||||
"Limit deck usage of groups" : "تقييد استخدام Deck للمجموعات",
|
|
||||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم."
|
|
||||||
},
|
},
|
||||||
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
|
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
|
||||||
|
|||||||
176
l10n/ar.json
@@ -35,10 +35,6 @@
|
|||||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user} قام بأرشفة بطاقة {card} في القائمة {stack} على اللوح {board}",
|
"{user} has archived card {card} in list {stack} on board {board}" : "{user} قام بأرشفة بطاقة {card} في القائمة {stack} على اللوح {board}",
|
||||||
"You have unarchived card {card} in list {stack} on board {board}" : "لديك بطاقة غير مؤرشفة {card} في القائمة {stack} على اللوح {board}",
|
"You have unarchived card {card} in list {stack} on board {board}" : "لديك بطاقة غير مؤرشفة {card} في القائمة {stack} على اللوح {board}",
|
||||||
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} لديه بطاقة غير مؤرشفة {card} في القائمة {stack} على اللوح {board}",
|
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} لديه بطاقة غير مؤرشفة {card} في القائمة {stack} على اللوح {board}",
|
||||||
"You have marked the card {card} as done in list {stack} on board {board}" : "لقد قُمت بتمييز البطاقة {card} باعتبارها \"منتهية\" في القائمة {stack} على اللوح {board}",
|
|
||||||
"{user} has marked card {card} as done in list {stack} on board {board}" : "قام المستخدِم {user} بتمييز البطاقة {card} باعتبارها \"منتهية\" في القائمة {stack} على اللوح {board}",
|
|
||||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "لقد قُمت بتمييز البطاقة {card} باعتبارها \"غير منتهية\" في القائمة {stack} على اللوحة {board}",
|
|
||||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "قام المستخدِم {user} بتمييز البطاقة {card} باعتبارها \"غير منتهية\" في القائمة {stack} على اللوحة {board}",
|
|
||||||
"You have removed the due date of card {card}" : "قمت بإزالة التاريخ المحدد من البطاقة {card}",
|
"You have removed the due date of card {card}" : "قمت بإزالة التاريخ المحدد من البطاقة {card}",
|
||||||
"{user} has removed the due date of card {card}" : "{user} قام بإزالة التاريخ المحدد من البطاقة {card}",
|
"{user} has removed the due date of card {card}" : "{user} قام بإزالة التاريخ المحدد من البطاقة {card}",
|
||||||
"You have set the due date of card {card} to {after}" : "قمت بتعيين التاريخ المحدد للبطاقة {card} إلى {after}",
|
"You have set the due date of card {card} to {after}" : "قمت بتعيين التاريخ المحدد للبطاقة {card} إلى {after}",
|
||||||
@@ -65,15 +61,11 @@
|
|||||||
"{user} has restored the attachment {attachment} to card {card}" : "{user} قام باسترجاع المرفق {attachment} إلى البطاقة {card}",
|
"{user} has restored the attachment {attachment} to card {card}" : "{user} قام باسترجاع المرفق {attachment} إلى البطاقة {card}",
|
||||||
"You have commented on card {card}" : "لقد علقت على البطاقة {بطاقة}",
|
"You have commented on card {card}" : "لقد علقت على البطاقة {بطاقة}",
|
||||||
"{user} has commented on card {card}" : "{مستخدم} علق على بطاقة {بطاقة}",
|
"{user} has commented on card {card}" : "{مستخدم} علق على بطاقة {بطاقة}",
|
||||||
|
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>وصف البطاقة</strong>داخل تطبيق Deck قد تغيرت.",
|
||||||
"Deck" : "Deck",
|
"Deck" : "Deck",
|
||||||
"Changes in the <strong>Deck app</strong>" : "تغييرات في <strong>تطبيق Deck</strong> ",
|
"Changes in the <strong>Deck app</strong>" : "تغييرات في <strong>تطبيق Deck</strong> ",
|
||||||
"A <strong>board, list or card</strong> was changed" : "تمّ تغيير <strong>لوحة board أو قائمة list أو بطاقة card </strong>.",
|
|
||||||
"A <strong>comment</strong> was created on a card" : "<strong>تعليق</strong> تم إنشاؤه على بطاقة",
|
"A <strong>comment</strong> was created on a card" : "<strong>تعليق</strong> تم إنشاؤه على بطاقة",
|
||||||
"A <strong>card description</strong> has been changed" : "تمّ تغيير <strong>وصف بطاقة</strong>.",
|
|
||||||
"Cards due today" : "البطاقات المستحقة اليوم",
|
|
||||||
"Cards due tomorrow" : "البطاقات المستحقة غداً",
|
|
||||||
"Upcoming cards" : "البطاقات القادمة",
|
"Upcoming cards" : "البطاقات القادمة",
|
||||||
"Load more" : "حمّل أكثر",
|
|
||||||
"Personal" : "شخصي",
|
"Personal" : "شخصي",
|
||||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "البطاقة \"%s\" على \"%s\" كُلفت بها من قبل %s.",
|
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "البطاقة \"%s\" على \"%s\" كُلفت بها من قبل %s.",
|
||||||
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} قام بتكليف البطاقة {deck-board} على {deck-board} لك",
|
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} قام بتكليف البطاقة {deck-board} على {deck-board} لك",
|
||||||
@@ -83,14 +75,8 @@
|
|||||||
"{user} has mentioned you in a comment on {deck-card}." : "{user} أشار إليك في تعليق على {deck-card}",
|
"{user} has mentioned you in a comment on {deck-card}." : "{user} أشار إليك في تعليق على {deck-card}",
|
||||||
"The board \"%s\" has been shared with you by %s." : "تمت مشاركة اللوح \"%s\" معك من قبل %s.",
|
"The board \"%s\" has been shared with you by %s." : "تمت مشاركة اللوح \"%s\" معك من قبل %s.",
|
||||||
"{user} has shared {deck-board} with you." : "{user} قام بمشاركة {deck-board} معك.",
|
"{user} has shared {deck-board} with you." : "{user} قام بمشاركة {deck-board} معك.",
|
||||||
"Deck board" : "رُقعة اللوحات Deck board",
|
|
||||||
"Owned by %1$s" : "يملكها %1$s",
|
|
||||||
"Deck boards, cards and comments" : "رُقعة اللوحات و البطاقات و الملاحظات",
|
|
||||||
"From %1$s, in %2$s/%3$s, owned by %4$s" : " من %1$s، في %2$s/%3$s، يملكها %4$s",
|
|
||||||
"Create a new deck card" : "إنشاء بطاقة deck card جديدة",
|
|
||||||
"Card comments" : "تعليقات البطاقة ",
|
"Card comments" : "تعليقات البطاقة ",
|
||||||
"%s on %s" : "%s على %s",
|
"%s on %s" : "%s على %s",
|
||||||
"Deck boards and cards" : "رُقَع اللوحات و البطاقات",
|
|
||||||
"No data was provided to create an attachment." : "لا بيانات تم تقديمها لانشاء مرفق",
|
"No data was provided to create an attachment." : "لا بيانات تم تقديمها لانشاء مرفق",
|
||||||
"Finished" : "اكتمل",
|
"Finished" : "اكتمل",
|
||||||
"To review" : "لإعادة المراجعة",
|
"To review" : "لإعادة المراجعة",
|
||||||
@@ -112,22 +98,26 @@
|
|||||||
"Could not write file to disk" : "لم يستطع كتابة ملف للقرص",
|
"Could not write file to disk" : "لم يستطع كتابة ملف للقرص",
|
||||||
"A PHP extension stopped the file upload" : "إضافة البي اچ بي PHP أوقفت رفع الملف",
|
"A PHP extension stopped the file upload" : "إضافة البي اچ بي PHP أوقفت رفع الملف",
|
||||||
"No file uploaded or file size exceeds maximum of %s" : "لم يتم تحميل أي ملف أو أن يتجاوز حجم الملف الحد الأقصى %s",
|
"No file uploaded or file size exceeds maximum of %s" : "لم يتم تحميل أي ملف أو أن يتجاوز حجم الملف الحد الأقصى %s",
|
||||||
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : " هذه الملاحظات فيها أكثر من %s حرفاً.\n تمّت إضافتها كمُرفق إلى البطاقة التي اسمها%s.\n الموجودة على الرابط %s.",
|
|
||||||
"Card not found" : "لم يتم العثور على البطاقة ",
|
"Card not found" : "لم يتم العثور على البطاقة ",
|
||||||
"Path is already shared with this card" : "تم مشاركة المسار بالفعل مع هذه البطاقة ",
|
"Path is already shared with this card" : "تم مشاركة المسار بالفعل مع هذه البطاقة ",
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "تاريخ غير صحيح, يجب أن يكون تنسيق التاريخ YYYY-MM-DD",
|
"Invalid date, date format must be YYYY-MM-DD" : "تاريخ غير صحيح, يجب أن يكون تنسيق التاريخ YYYY-MM-DD",
|
||||||
"Personal planning and team project organization" : "التخطيط الشخصي و تنظيم مشروع الفريق",
|
"Personal planning and team project organization" : "التخطيط الشخصي و تنظيم مشروع الفريق",
|
||||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "التطبيق \"رِزَم البطاقات\" Deck هو أداة لتنظيم المهام الشخصية و الجماعية في نكست كلاود على نمط \"خطوط التصنيع أو التجميع في المصانع\" و المعروف بـ kanban.\n\n\n- 📥 أكتب مهمتك او مهمة فريقك على بطاقة و ضع البطاقة في الرُّقعة على كدسة البطاقات من ذات التصنيف أو المرحلة من الإنجاز\n- 📄 دوّن ملاحظاتك الإضافية على البطاقة بصيغة ماركداون markdown\n- 🔖 و يمكنك أيضاً إسناد البطاقة أي المهمة إلى شخص أو أشخاص في فريقك\n- 👥 شارك البطاقة مع من ترغب من أعضاء فريقك أو عائلتك أو أصدقائك\n- 📎 إرفاق ملفات و تضمينها بصيغة ماركداون في البطاقة\n- 💬ناقش البطاقة مع زملائك في خانة الملاحظات\n- ⚡ تابع ما يُستجد من عمليات و تطوّرات على البطاقة أو المهمة\n- 🚀 حافظ على مشروعك مُنسّقاً باستمرار.",
|
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "دك (Deck) هو أداة تنظيم باسلوب كانبان (kanban) تهدف إلى التخطيط الشخصي وتنظيم المشروع للفرق مع نيكست كلاود (Nextcloud).\n- 📥 إضافة مهامك إلى البطاقات وترتيبها\n- 📄 كتابة ملاحظات إضافية باستخدام مارك داون (markdown)\n- 🔖 تعيين تسميات لتنظيم أفضل\n- 👥 شارك مع فريقك أو أصدقائك أو عائلتك\n- 📎 إرفاق الملفات وتضمينها بالوصف المستخدم فيه مارك داون (markdown)\n- 💬 ناقش مع فريقك باستخدام التعليقات\n- ⚡ تتبع التغييرات في تيار النشاط\n- 🚀 اجعل مشروعك منظماً",
|
||||||
|
"Card details" : "تفاصيل البطاقة",
|
||||||
"Add board" : "إضافة لوح",
|
"Add board" : "إضافة لوح",
|
||||||
"Select the board to link to a project" : "تحديد اللوح لربطه بمشروع",
|
"Select the board to link to a project" : "تحديد اللوح لربطه بمشروع",
|
||||||
"Search by board title" : "بحث بواسطة عنوان اللوح",
|
"Search by board title" : "بحث بواسطة عنوان اللوح",
|
||||||
"Select board" : "حدد لوح",
|
"Select board" : "حدد لوح",
|
||||||
"Move card to another board" : "حرك البطاقة الى لوح اخر",
|
"Create a new card" : "أنشى بطاقة جديدة ",
|
||||||
"Select a board" : "حدد لوح",
|
"Select a board" : "حدد لوح",
|
||||||
"No lists available" : "لا يوجد قائمة متاحه ",
|
|
||||||
"Select a list" : "اختر قائمة ",
|
"Select a list" : "اختر قائمة ",
|
||||||
"Move card" : "حرك البطاقة",
|
"Card title" : "عنوان البطاقة ",
|
||||||
"Cancel" : "إلغاء",
|
"Cancel" : "إلغاء",
|
||||||
|
"Creating the new card …" : "أنشى البطاقة الجديدة ",
|
||||||
|
"Card \"{card}\" was added to \"{board}\"" : "\"{بطاقة}\" تمت إضافتها في \"{اللوح}\"",
|
||||||
|
"Open card" : "فتح البطاقة ",
|
||||||
|
"Close" : "إغلاق",
|
||||||
|
"Create card" : "أنشى بطاقة ",
|
||||||
"Select a card" : "حدد بطاقة",
|
"Select a card" : "حدد بطاقة",
|
||||||
"Select the card to link to a project" : "حدد البطاقة لربطها بمشروع",
|
"Select the card to link to a project" : "حدد البطاقة لربطها بمشروع",
|
||||||
"Link to card" : "اربط بطاقة",
|
"Link to card" : "اربط بطاقة",
|
||||||
@@ -142,7 +132,6 @@
|
|||||||
"Archived cards" : "البطاقات المؤرشفة",
|
"Archived cards" : "البطاقات المؤرشفة",
|
||||||
"Add list" : "إضافة قائمة",
|
"Add list" : "إضافة قائمة",
|
||||||
"List name" : "قامة اسماء",
|
"List name" : "قامة اسماء",
|
||||||
"Active filters" : "فلاتر نشطة",
|
|
||||||
"Apply filter" : "تطبيق التصفية",
|
"Apply filter" : "تطبيق التصفية",
|
||||||
"Filter by tag" : "تصفية بواسطة الوسم",
|
"Filter by tag" : "تصفية بواسطة الوسم",
|
||||||
"Filter by assigned user" : "تصفية بواسطة المستخدم الموكل اليه",
|
"Filter by assigned user" : "تصفية بواسطة المستخدم الموكل اليه",
|
||||||
@@ -154,49 +143,36 @@
|
|||||||
"Next 30 days" : "ال 30 يوم القادمة",
|
"Next 30 days" : "ال 30 يوم القادمة",
|
||||||
"No due date" : "لا تاريخ إنجاز",
|
"No due date" : "لا تاريخ إنجاز",
|
||||||
"Clear filter" : "ازل التصفية",
|
"Clear filter" : "ازل التصفية",
|
||||||
"View Modes" : "وضعيات العرض",
|
|
||||||
"Toggle View Modes" : "التبديل بين وضعيات العرض",
|
|
||||||
"Hide archived cards" : "إخفاء البطاقات المؤرشفة ",
|
"Hide archived cards" : "إخفاء البطاقات المؤرشفة ",
|
||||||
"Show archived cards" : "اظهر البطاقات المؤرشفة",
|
"Show archived cards" : "اظهر البطاقات المؤرشفة",
|
||||||
"Toggle compact mode" : "تبديل النمط المضغوط",
|
"Toggle compact mode" : "تبديل النمط المضغوط",
|
||||||
"Hide card cover images" : "إخفِ صور غلاف البطاقات",
|
|
||||||
"Show card cover images" : "أظهِر صور غلاف البطاقات",
|
|
||||||
"Open details" : "افتح التفاصيل",
|
|
||||||
"Details" : "التفاصيل",
|
"Details" : "التفاصيل",
|
||||||
"Currently present people" : "أشخاص معروضون حاليّاً",
|
|
||||||
"Loading board" : "جارِ تحميل اللوح..",
|
"Loading board" : "جارِ تحميل اللوح..",
|
||||||
"Board not found" : "اللوح غير موجود",
|
"No lists available" : "لا يوجد قائمة متاحه ",
|
||||||
"Create a new list to add cards to this board" : "إنشاء قائمة جديدة لإضافة البطاقات على هذا اللوح",
|
"Create a new list to add cards to this board" : "إنشاء قائمة جديدة لإضافة البطاقات على هذا اللوح",
|
||||||
|
"Board not found" : "اللوح غير موجود",
|
||||||
"Sharing" : "المشاركة",
|
"Sharing" : "المشاركة",
|
||||||
"Tags" : "الوسوم",
|
"Tags" : "الوسوم",
|
||||||
"Deleted items" : "العناصر الممسوحة",
|
"Deleted items" : "العناصر الممسوحة",
|
||||||
"Activity" : "النشاط",
|
"Timeline" : "الجدول الزمني",
|
||||||
"Deleted lists" : "القوائم المحذوفة",
|
"Deleted lists" : "القوائم المحذوفة",
|
||||||
"Undo" : "تراجع",
|
"Undo" : "تراجع",
|
||||||
"Deleted cards" : "البطاقات المحذوفة",
|
"Deleted cards" : "البطاقات المحذوفة",
|
||||||
"Share board with a user, group or team …" : "مشاركة اللوحة مع مستخدِم او مجموعة أو فريق ...",
|
"Share board with a user, group or circle …" : "مشاركة اللوح مع مستخدم،مجموعة أو دائرة ..",
|
||||||
"Searching for users, groups and teams …" : "البحث عن مستخدِمين، أو مجموعات، أو فِرَق",
|
"Searching for users, groups and circles …" : "ابحث عن أعضاء، مجموعات أو حلقات ...",
|
||||||
"No participants found" : "لم يتم العثور على مشاركين",
|
"No participants found" : "لم يتم العثور على مشاركين",
|
||||||
"Board owner" : "منشئ اللوح",
|
"Board owner" : "منشئ اللوح",
|
||||||
"(Group)" : "(مجموعة)",
|
"(Group)" : "(مجموعة)",
|
||||||
"(Team)" : "(الفريق)",
|
"(Circle)" : "(دائرة)",
|
||||||
"Can edit" : "يمكن تعديله",
|
"Can edit" : "يمكن تعديله",
|
||||||
"Can share" : "يمكن مشاركته",
|
"Can share" : "يمكن مشاركته",
|
||||||
"Can manage" : "يمكن إدارته",
|
"Can manage" : "يمكن إدارته",
|
||||||
"Owner" : "المالك",
|
|
||||||
"Delete" : "حذف ",
|
"Delete" : "حذف ",
|
||||||
"Failed to create share with {displayName}" : "فشل في إنشاء المشاركة مع {displayName}",
|
"Failed to create share with {displayName}" : "فشل في إنشاء المشاركة مع {displayName}",
|
||||||
"Are you sure you want to transfer the board {title} to {user}?" : "هل أنت متأكد أنك تريد نقل اللوحة {title} إلى {user} ؟",
|
"Add a new list" : "اضف قائمة جديدة",
|
||||||
"Transfer the board." : "نقل اللوحة.",
|
|
||||||
"Transfer" : "نقل",
|
|
||||||
"The board has been transferred to {user}" : "تمّ نقل اللوحة إلى {user}",
|
|
||||||
"Failed to transfer the board to {user}" : "تعذّر نقل اللوحة إلى {user}",
|
|
||||||
"Edit list title" : "عدّل اسم القائمة",
|
|
||||||
"Archive all cards" : "أرشفة جميع البطاقات ",
|
"Archive all cards" : "أرشفة جميع البطاقات ",
|
||||||
"Unarchive all cards" : "تراجع عن أرشفة كل البطاقات",
|
|
||||||
"Delete list" : "حذف القائمة",
|
"Delete list" : "حذف القائمة",
|
||||||
"Archive all cards in this list" : "أرشفة جميع البطاقات في القائمة ",
|
"Archive all cards in this list" : "أرشفة جميع البطاقات في القائمة ",
|
||||||
"Unarchive all cards in this list" : "تراجع عن أرشفة كل البطاقات في هذه القائمة",
|
|
||||||
"Add a new card" : "إضافة بطاقة جديدة",
|
"Add a new card" : "إضافة بطاقة جديدة",
|
||||||
"Card name" : "اسم البطاقة ",
|
"Card name" : "اسم البطاقة ",
|
||||||
"List deleted" : "القائمة حٌذفت ",
|
"List deleted" : "القائمة حٌذفت ",
|
||||||
@@ -205,16 +181,10 @@
|
|||||||
"title and color value must be provided" : "العنوان و قيمة اللون يجب تقديمها ",
|
"title and color value must be provided" : "العنوان و قيمة اللون يجب تقديمها ",
|
||||||
"Board name" : "اسم اللوح",
|
"Board name" : "اسم اللوح",
|
||||||
"Members" : "الاعضاء",
|
"Members" : "الاعضاء",
|
||||||
"Assign to users/groups/team" : "إسناد إلى مستخدِمين/مجموعات/فِرَق",
|
|
||||||
"Assign a user to this card…" : "انسب مستخدم الى هذه البطاقة..",
|
|
||||||
"Select a user to assign to this card…" : "حدِّد مستخدِماً ليتم إسناد هذه البطاقة له...",
|
|
||||||
"Upload new files" : "رفع ملفات جديدة",
|
"Upload new files" : "رفع ملفات جديدة",
|
||||||
"Share from Files" : "مشاركة من الملفات",
|
"Share from Files" : "مشاركة من الملفات",
|
||||||
"Pending share" : "مشاركة مُعلّقة",
|
|
||||||
"Add this attachment" : "إضافة هذا المرفق",
|
"Add this attachment" : "إضافة هذا المرفق",
|
||||||
"Show in Files" : "عرض في الملفات ",
|
"Show in Files" : "عرض في الملفات ",
|
||||||
"Download" : "تنزيل",
|
|
||||||
"Remove attachment" : "حذف المُرفق",
|
|
||||||
"Delete Attachment" : "مسح المرفق",
|
"Delete Attachment" : "مسح المرفق",
|
||||||
"Restore Attachment" : "إستعادة المرفق",
|
"Restore Attachment" : "إستعادة المرفق",
|
||||||
"File to share" : "ملف للمشاركة",
|
"File to share" : "ملف للمشاركة",
|
||||||
@@ -228,6 +198,16 @@
|
|||||||
"The title cannot be empty." : "لا يمكن ترك العنوان فارغًا.",
|
"The title cannot be empty." : "لا يمكن ترك العنوان فارغًا.",
|
||||||
"No comments yet. Begin the discussion!" : "لا يوجد تعليقات بعد, ابدأ النقاش الآن!",
|
"No comments yet. Begin the discussion!" : "لا يوجد تعليقات بعد, ابدأ النقاش الآن!",
|
||||||
"Failed to load comments" : "فشل في تحميل التعليقات ",
|
"Failed to load comments" : "فشل في تحميل التعليقات ",
|
||||||
|
"Assign a tag to this card…" : "انسب وسم الى هذه البطاقة..",
|
||||||
|
"Assign to users" : "انسب الى المتسخدمين",
|
||||||
|
"Assign to users/groups/circles" : "انسب الى المستخدمين،المجموعات،الدوائر",
|
||||||
|
"Assign a user to this card…" : "انسب مستخدم الى هذه البطاقة..",
|
||||||
|
"Due date" : "تاريخ الانجاز",
|
||||||
|
"Set a due date" : "تعيين تاريخ الانجاز",
|
||||||
|
"Remove due date" : "ازالة تاريخ الانجاز",
|
||||||
|
"Select Date" : "اختر التاريخ ",
|
||||||
|
"Today" : "اليوم",
|
||||||
|
"Tomorrow" : "غدا",
|
||||||
"Save" : "حفظ",
|
"Save" : "حفظ",
|
||||||
"The comment cannot be empty." : "التعليق لايمكن ان يكون فارغا.",
|
"The comment cannot be empty." : "التعليق لايمكن ان يكون فارغا.",
|
||||||
"The comment cannot be longer than 1000 characters." : "التعليق لا يمكن ان يكون اطول من 1000 حرف.",
|
"The comment cannot be longer than 1000 characters." : "التعليق لا يمكن ان يكون اطول من 1000 حرف.",
|
||||||
@@ -235,7 +215,6 @@
|
|||||||
"Cancel reply" : "إلغاء الرد",
|
"Cancel reply" : "إلغاء الرد",
|
||||||
"Reply" : "رد",
|
"Reply" : "رد",
|
||||||
"Update" : "تحديث",
|
"Update" : "تحديث",
|
||||||
"Created:" : "تاريخ الإنشاء :",
|
|
||||||
"Description" : "الوصف",
|
"Description" : "الوصف",
|
||||||
"(Unsaved)" : "(غير محفوظ)",
|
"(Unsaved)" : "(غير محفوظ)",
|
||||||
"(Saving…)" : "(يُحفظ..)",
|
"(Saving…)" : "(يُحفظ..)",
|
||||||
@@ -245,78 +224,29 @@
|
|||||||
"Add Attachment" : "أضف ملحق",
|
"Add Attachment" : "أضف ملحق",
|
||||||
"Write a description …" : "كتابة وصف...",
|
"Write a description …" : "كتابة وصف...",
|
||||||
"Choose attachment" : "اختيار مرفق",
|
"Choose attachment" : "اختيار مرفق",
|
||||||
"Assign a due date to this card…" : "تعيين تاريخ استحقاق لهذه البطاقة...",
|
|
||||||
"Set a due date" : "تعيين تاريخ الانجاز",
|
|
||||||
"Add due date" : "أضِف تاريخ الاستحقاق",
|
|
||||||
"Choose a date" : "إختَر تاريخاً",
|
|
||||||
"Remove due date" : "ازالة تاريخ الانجاز",
|
|
||||||
"Completed" : "مُكتمل",
|
|
||||||
"Due at:" : "تاريخ الاستحقاق:",
|
|
||||||
"Not completed" : "غير مكتمل",
|
|
||||||
"Unarchive card" : "إلغاء أرشفة البطاقة ",
|
|
||||||
"Archive card" : "أرشفة البطاقة",
|
|
||||||
"Select Date" : "اختر التاريخ ",
|
|
||||||
"Set due date for later today" : "عيِّن آخِرَ هذا اليوم كموعدٍ لاستحقاق البطاقة",
|
|
||||||
"Set due date for tomorrow" : "عيِّن يوم الغد كموعدٍ لاستحقاق البطاقة",
|
|
||||||
"Set due date for this weekend" : "عيِّن نهاية هذا الأسبوع كموعدٍ لاستحقاق البطاقة",
|
|
||||||
"Set due date for next week" : "عيِّن الأسبوع المُقبل كموعدٍ لاستحقاق البطاقة",
|
|
||||||
"Assign a tag to this card…" : "انسب وسم الى هذه البطاقة..",
|
|
||||||
"Select or create a tag…" : "إختَر أو أنشِئْ وسماً ...",
|
|
||||||
"Create a new tag:" : "إنشاء سِمَةٍ tag جديدة:",
|
|
||||||
"(group)" : "(مجموعة)",
|
"(group)" : "(مجموعة)",
|
||||||
"Next week – {timeLocale}" : "الأسبوع القادم – {timeLocale}",
|
|
||||||
"Todo items" : "قائمة المهام",
|
|
||||||
"{count} comments, {unread} unread" : "{عدد} التعليقات، {غير مقروءة} غير مقروءة",
|
"{count} comments, {unread} unread" : "{عدد} التعليقات، {غير مقروءة} غير مقروءة",
|
||||||
"Edit card title" : "تعديل اسم القائمة",
|
|
||||||
"Card details" : "تفاصيل البطاقة",
|
|
||||||
"Assign to me" : "ينسب لي",
|
"Assign to me" : "ينسب لي",
|
||||||
"Unassign myself" : "إلغاء تعييني ",
|
"Unassign myself" : "إلغاء تعييني ",
|
||||||
"Mark as not done" : "تمييز كـ \"غير منتهٍ\"",
|
"Move card" : "حرك البطاقة",
|
||||||
"Mark as done" : "تمييز كمُنجَز",
|
"Unarchive card" : "إلغاء أرشفة البطاقة ",
|
||||||
|
"Archive card" : "أرشفة البطاقة",
|
||||||
"Delete card" : "حذف البطاقة",
|
"Delete card" : "حذف البطاقة",
|
||||||
|
"Move card to another board" : "حرك البطاقة الى لوح اخر",
|
||||||
"Card deleted" : "البطاقة حٌذفت ",
|
"Card deleted" : "البطاقة حٌذفت ",
|
||||||
"seconds ago" : "ثوانٍ مضت",
|
"seconds ago" : "ثوانٍ مضت",
|
||||||
"Keyboard shortcuts" : "إختصارات لوحة المفاتيح",
|
|
||||||
"Boost your productivity using Deck with keyboard shortcuts." : "ضاعِف إنتاجيتك باستعمال \"رِزَم البطاقات\" Deck، و اختصارات لوحة المفاتيح ",
|
|
||||||
"Board actions" : "إجراءات اللوحة",
|
|
||||||
"Keyboard shortcut" : "إختصار لوحة المفاتيح",
|
|
||||||
"Action" : "الإجراء",
|
|
||||||
"Shift" : "العالي shift",
|
|
||||||
"Scroll" : "تحريك",
|
|
||||||
"Scroll sideways" : "تحريك للجنب",
|
|
||||||
"Navigate between cards" : "التنقُّل بين البطاقات",
|
|
||||||
"Esc" : "خروج",
|
|
||||||
"Close card details" : "أغلِق تفاصيل البطاقة",
|
|
||||||
"Ctrl" : "تحكم Ctrl",
|
|
||||||
"Search" : "بحث",
|
|
||||||
"Show card filters" : "أظهِر فلاتر البطاقة",
|
|
||||||
"Clear card filters" : "إمحُ فلاتر البطاقة",
|
|
||||||
"Show help dialog" : "أظهِر نافذة حوار المساعدة",
|
|
||||||
"Card actions" : "إجراءات البطاقة",
|
|
||||||
"The following actions can be triggered on the currently highlighted card" : "الإجراءات التالية يمكن تنفيذها على البطاقات المُعلّمة حالياً",
|
|
||||||
"Enter" : "إدخال",
|
|
||||||
"Space" : "المدى",
|
|
||||||
"Open card details" : "إفتَح تفاصيل البطاقة",
|
|
||||||
"Edit the card title" : "عدِّل عنوان البطاقة",
|
|
||||||
"Assign yourself to the current card" : "أسنِد هذه البطاقة إلى نفسِك",
|
|
||||||
"Archive/unarchive the current card" : "أرشِف أو ألغِ ترشيف البطاقة الحالية",
|
|
||||||
"Mark card as completed/not completed" : "علِّم بطاقة كـ\"منجزة\" أو \"غير منجزة\"",
|
|
||||||
"Open card menu" : "إفتَح قائمة البطاقات",
|
|
||||||
"All boards" : "جميع الالواح",
|
"All boards" : "جميع الالواح",
|
||||||
"Archived boards" : "الالواح المؤرشفة",
|
"Archived boards" : "الالواح المؤرشفة",
|
||||||
"Shared with you" : "تم مشاركتها معك",
|
"Shared with you" : "تم مشاركتها معك",
|
||||||
"Deck settings" : "إعدادات رِزَمِ البطاقات",
|
|
||||||
"Use bigger card view" : "استخدام بطاقة عرض أكبر ",
|
"Use bigger card view" : "استخدام بطاقة عرض أكبر ",
|
||||||
"Show card ID badge" : "أعرض شارة رقم البطاقة",
|
|
||||||
"Show boards in calendar/tasks" : "إظهار اللوح في التقويم/المهام",
|
"Show boards in calendar/tasks" : "إظهار اللوح في التقويم/المهام",
|
||||||
"Limit board creation to some groups" : "قَصْرُ حَقِّ إنشاء الألواح على بعض المجموعات ",
|
"Limit deck usage of groups" : "تقييد استخدام Deck للمجموعات",
|
||||||
"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." : "المستخدِمون من خارج تلك المجموعات لن يمكنكم إنشاء لوحاتهم الخاصة؛ لكن يمكنهم العمل على اللوحات التي تتمّ مشاركتها معهم.",
|
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم.",
|
||||||
"Board details" : "تفاصيل لوح",
|
"Board details" : "تفاصيل لوح",
|
||||||
"Edit board" : "تعديل اللوح",
|
"Edit board" : "تعديل اللوح",
|
||||||
"Clone board" : "استنسخ اللوح",
|
"Clone board" : "استنسخ اللوح",
|
||||||
"Unarchive board" : "إلغاء أرشفة اللوح",
|
"Unarchive board" : "إلغاء أرشفة اللوح",
|
||||||
"Archive board" : "أرشفة اللوح ",
|
"Archive board" : "أرشفة اللوح ",
|
||||||
"Export board" : "تصدير اللوحة",
|
|
||||||
"Turn on due date reminders" : "تفعيل التذكيرات للموعد المحدد ",
|
"Turn on due date reminders" : "تفعيل التذكيرات للموعد المحدد ",
|
||||||
"Turn off due date reminders" : "إيقاف تشغيل التذكيرات للموعد المحددد",
|
"Turn off due date reminders" : "إيقاف تشغيل التذكيرات للموعد المحددد",
|
||||||
"Due date reminders" : "تذكيرات الموعد المحدد ",
|
"Due date reminders" : "تذكيرات الموعد المحدد ",
|
||||||
@@ -328,36 +258,15 @@
|
|||||||
"Only assigned cards" : "البطاقات المخصصة فقط",
|
"Only assigned cards" : "البطاقات المخصصة فقط",
|
||||||
"No reminder" : "لا يوجد تذكير ",
|
"No reminder" : "لا يوجد تذكير ",
|
||||||
"An error occurred" : "حدث خطأ",
|
"An error occurred" : "حدث خطأ",
|
||||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "هل أنت متأكد من حذف اللوحة {title}؟ هذا سيؤدي إلى حذف كل بيانات هذه اللوحة بما في ذلك البطاقات المؤرشفة.",
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "هل انت متأكد تريد مسح اللوح {title}؟ هذا سوف يمسح جميع بيانات هذا اللوح.",
|
||||||
"Delete the board?" : "مسح اللوح؟",
|
"Delete the board?" : "مسح اللوح؟",
|
||||||
"Loading filtered view" : "جارِ تحميل التصفية ",
|
"Loading filtered view" : "جارِ تحميل التصفية ",
|
||||||
"Today" : "اليوم",
|
"This week" : "هذا الأسبوع",
|
||||||
"Tomorrow" : "غدا",
|
|
||||||
"No due" : "غير محدد",
|
"No due" : "غير محدد",
|
||||||
"Search for {searchQuery} in all boards" : "البحث عن {searchQuery} في جميع اللوح",
|
"Search for {searchQuery} in all boards" : "البحث عن {searchQuery} في جميع اللوح",
|
||||||
"No results found" : "لا يتم العثور على أي نتائج ",
|
"No results found" : "لا يتم العثور على أي نتائج ",
|
||||||
"This weekend – {timeLocale}" : "نهاية هذا الأسبوع – {timeLocale}",
|
|
||||||
"Deck board {name}\n* Last modified on {lastMod}" : "اسم اللوحة {name} \n* آخر تعديل لها في {lastMod}",
|
|
||||||
"{stack} in {board}" : "{stack} في {board}",
|
|
||||||
"Click to expand description" : "إضعط للتوسّع في الوصف",
|
|
||||||
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* أُنشأت في {created}\n* آخر تعديل لها في {lastMod}\n* {nbAttachments} مُرفقات\n* {nbComments} مُلاحظات",
|
|
||||||
"{nbCards} cards" : "{nbCards} بطاقات",
|
|
||||||
"Click to expand comment" : "إضغط للتوسع في الملاحظات",
|
|
||||||
"Create a new card" : "أنشى بطاقة جديدة ",
|
|
||||||
"Card title" : "عنوان البطاقة ",
|
|
||||||
"Create card" : "أنشى بطاقة ",
|
|
||||||
"Creating the new card …" : "أنشى البطاقة الجديدة ",
|
|
||||||
"Card \"{card}\" was added to \"{board}\"" : "\"{بطاقة}\" تمت إضافتها في \"{اللوح}\"",
|
|
||||||
"Open card" : "فتح البطاقة ",
|
|
||||||
"Close" : "إغلاق",
|
|
||||||
"No upcoming cards" : "لا يوجد بطاقات قادمة ",
|
"No upcoming cards" : "لا يوجد بطاقات قادمة ",
|
||||||
"upcoming cards today" : "البطاقات القادمة اليومَ",
|
|
||||||
"upcoming cards tomorrow" : "البطاقات القادمة غداً",
|
|
||||||
"upcoming cards" : "البطاقات القادمة",
|
"upcoming cards" : "البطاقات القادمة",
|
||||||
"New card" : "بطاقة جديدة",
|
|
||||||
"Due on {date}" : "مطلوب في {date}",
|
|
||||||
"Tomorrow – {timeLocale}" : "غداً – {timeLocale}",
|
|
||||||
"Later today – {timeLocale}" : "في وقت لاحقٍ اليوم – {timeLocale}",
|
|
||||||
"Link to a board" : "ربط بلوح",
|
"Link to a board" : "ربط بلوح",
|
||||||
"Link to a card" : "ربط ببطاقة",
|
"Link to a card" : "ربط ببطاقة",
|
||||||
"Create a card" : "أنشى بطاقة ",
|
"Create a card" : "أنشى بطاقة ",
|
||||||
@@ -368,19 +277,6 @@
|
|||||||
"Error creating the share" : "خطأ في إنشاء المشاركة",
|
"Error creating the share" : "خطأ في إنشاء المشاركة",
|
||||||
"Share with a Deck card" : "مشاركة مع بطاقة Deck",
|
"Share with a Deck card" : "مشاركة مع بطاقة Deck",
|
||||||
"Share {file} with a Deck card" : "مشاركة الملف {file} مع بطاقة Deck",
|
"Share {file} with a Deck card" : "مشاركة الملف {file} مع بطاقة Deck",
|
||||||
"Share" : "مشاركة ",
|
"Share" : "مشاركة "
|
||||||
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>وصف البطاقة</strong>داخل تطبيق Deck قد تغيرت.",
|
|
||||||
"Timeline" : "الجدول الزمني",
|
|
||||||
"Share board with a user, group or circle …" : "مشاركة اللوح مع مستخدم،مجموعة أو دائرة ..",
|
|
||||||
"Searching for users, groups and circles …" : "ابحث عن أعضاء، مجموعات أو حلقات ...",
|
|
||||||
"(Circle)" : "(دائرة)",
|
|
||||||
"Assign to users" : "انسب الى المتسخدمين",
|
|
||||||
"Assign to users/groups/circles" : "انسب الى المستخدمين،المجموعات،الدوائر",
|
|
||||||
"Due date" : "تاريخ الانجاز",
|
|
||||||
"Next week" : "الاسبوع القادم",
|
|
||||||
"Next month" : "الشهر القادم",
|
|
||||||
"List is empty" : "القائمة فارغة",
|
|
||||||
"Limit deck usage of groups" : "تقييد استخدام Deck للمجموعات",
|
|
||||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم."
|
|
||||||
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
|
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
|
||||||
}
|
}
|
||||||
67
l10n/ast.js
@@ -1,59 +1,44 @@
|
|||||||
OC.L10N.register(
|
OC.L10N.register(
|
||||||
"deck",
|
"deck",
|
||||||
{
|
{
|
||||||
"Deck" : "Tarxeteru",
|
"Deck" : "Deck",
|
||||||
"Load more" : "Cargar más",
|
|
||||||
"Personal" : "Personal",
|
"Personal" : "Personal",
|
||||||
"copy" : "copia",
|
"Finished" : "Finó",
|
||||||
|
"Action needed" : "Precísase aición",
|
||||||
|
"Later" : "Más sero",
|
||||||
"Done" : "Fecho",
|
"Done" : "Fecho",
|
||||||
"The file was uploaded" : "Xubióse'l ficheru",
|
"The file was uploaded" : "Xubióse'l ficheru",
|
||||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El ficheru xubíu supera la direutiva «upload_max_filesize» del ficheru php.ini",
|
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El ficheru xubíu perpasa la direutiva de xuba upload_max_filesize en php.ini",
|
||||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El ficheru xubíu supera la direutiva «MAX_FILE_SIZE» que s'especificó nel formulariu HTML",
|
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El ficheru xubíu perpasa la direutiva \"MAX_FILE_SIZE\" especificada nel formulariu HTML",
|
||||||
"No file was uploaded" : "Nun se xubió nengún ficheru",
|
"No file was uploaded" : "Nun se xubieron fichjeros",
|
||||||
"Missing a temporary folder" : "Falta una carpeta temporal",
|
"Missing a temporary folder" : "Falta un direutoriu temporal",
|
||||||
"Could not write file to disk" : "Nun se pudo escribir el ficheru nel discu",
|
"Could not write file to disk" : "Nun pudo escribise nel discu'l ficheru",
|
||||||
"A PHP extension stopped the file upload" : "Una estensión PHP paró la xuba de ficheros",
|
"A PHP extension stopped the file upload" : "Una estensión de PHP paró la xuba de ficheros",
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "La data ye inválida, el so formatu ha ser AAAA-MM-DD",
|
|
||||||
"Cancel" : "Encaboxar",
|
"Cancel" : "Encaboxar",
|
||||||
"File already exists" : "El ficheru yá esiste",
|
"File already exists" : "Yá esiste'l ficheru",
|
||||||
"Open details" : "Abrir los detalles",
|
"Show archived cards" : "Amosar tarxetes archivaes",
|
||||||
"Details" : "Detalles",
|
"Details" : "Detalles",
|
||||||
"Sharing" : "Comparticiñon",
|
"Sharing" : "Compartiendo",
|
||||||
"Tags" : "Etiquetes",
|
"Tags" : "Etiquetes",
|
||||||
"Activity" : "Actividá",
|
|
||||||
"Undo" : "Desfacer",
|
"Undo" : "Desfacer",
|
||||||
"Owner" : "Propietariu",
|
"Can edit" : "Can edit",
|
||||||
|
"Can share" : "Can share",
|
||||||
"Delete" : "Desaniciar",
|
"Delete" : "Desaniciar",
|
||||||
"Transfer" : "Tresferir",
|
|
||||||
"Edit" : "Editar",
|
"Edit" : "Editar",
|
||||||
"Members" : "Miembros",
|
"Members" : "Miembros",
|
||||||
"Show in Files" : "Amosar en Ficheros",
|
"Attachments" : "Axuntos",
|
||||||
"Download" : "Baxar",
|
|
||||||
"Invalid path selected" : "Seleicionóse un camín inválidu",
|
|
||||||
"Comments" : "Comentarios",
|
"Comments" : "Comentarios",
|
||||||
"Modified" : "Modificóse",
|
"Modified" : "Modificóse'l",
|
||||||
"Failed to load comments" : "Nun se puen cargar los comentarios",
|
"Created" : "Creóse",
|
||||||
"Save" : "Guardar",
|
|
||||||
"Update" : "Anovar",
|
|
||||||
"Created:" : "Creóse'l",
|
|
||||||
"Description" : "Descripción",
|
|
||||||
"(Saving…)" : "(Guardando…)",
|
|
||||||
"Completed" : "Completáu",
|
|
||||||
"Not completed" : "Nun se completó",
|
|
||||||
"seconds ago" : "hai segundos",
|
|
||||||
"Keyboard shortcuts" : "Atayos del tecláu",
|
|
||||||
"Action" : "Aición",
|
|
||||||
"Ctrl" : "Ctrl",
|
|
||||||
"Search" : "Guetar",
|
|
||||||
"Shared with you" : "Compartióse contigo",
|
|
||||||
"All cards" : "Toles tarxetes",
|
|
||||||
"No notifications" : "Nun hai nengún avisu",
|
|
||||||
"An error occurred" : "Prodúxose un error",
|
|
||||||
"Today" : "Güei",
|
"Today" : "Güei",
|
||||||
"Tomorrow" : "Mañana",
|
"Tomorrow" : "Mañana",
|
||||||
"Close" : "Zarrar",
|
"Save" : "Guardar",
|
||||||
"Error creating the share" : "Hebo un error al crear la compartición",
|
"Reply" : "Rempuesta",
|
||||||
"Share" : "Compartir",
|
"Update" : "Anovar",
|
||||||
"Timeline" : "Llinia de tiempu"
|
"Description" : "Descripción",
|
||||||
|
"(group)" : "(grupu)",
|
||||||
|
"seconds ago" : "hai segundos",
|
||||||
|
"Shared with you" : "Shared with you",
|
||||||
|
"This week" : "Esta selmana"
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
@@ -1,57 +1,42 @@
|
|||||||
{ "translations": {
|
{ "translations": {
|
||||||
"Deck" : "Tarxeteru",
|
"Deck" : "Deck",
|
||||||
"Load more" : "Cargar más",
|
|
||||||
"Personal" : "Personal",
|
"Personal" : "Personal",
|
||||||
"copy" : "copia",
|
"Finished" : "Finó",
|
||||||
|
"Action needed" : "Precísase aición",
|
||||||
|
"Later" : "Más sero",
|
||||||
"Done" : "Fecho",
|
"Done" : "Fecho",
|
||||||
"The file was uploaded" : "Xubióse'l ficheru",
|
"The file was uploaded" : "Xubióse'l ficheru",
|
||||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El ficheru xubíu supera la direutiva «upload_max_filesize» del ficheru php.ini",
|
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El ficheru xubíu perpasa la direutiva de xuba upload_max_filesize en php.ini",
|
||||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El ficheru xubíu supera la direutiva «MAX_FILE_SIZE» que s'especificó nel formulariu HTML",
|
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El ficheru xubíu perpasa la direutiva \"MAX_FILE_SIZE\" especificada nel formulariu HTML",
|
||||||
"No file was uploaded" : "Nun se xubió nengún ficheru",
|
"No file was uploaded" : "Nun se xubieron fichjeros",
|
||||||
"Missing a temporary folder" : "Falta una carpeta temporal",
|
"Missing a temporary folder" : "Falta un direutoriu temporal",
|
||||||
"Could not write file to disk" : "Nun se pudo escribir el ficheru nel discu",
|
"Could not write file to disk" : "Nun pudo escribise nel discu'l ficheru",
|
||||||
"A PHP extension stopped the file upload" : "Una estensión PHP paró la xuba de ficheros",
|
"A PHP extension stopped the file upload" : "Una estensión de PHP paró la xuba de ficheros",
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "La data ye inválida, el so formatu ha ser AAAA-MM-DD",
|
|
||||||
"Cancel" : "Encaboxar",
|
"Cancel" : "Encaboxar",
|
||||||
"File already exists" : "El ficheru yá esiste",
|
"File already exists" : "Yá esiste'l ficheru",
|
||||||
"Open details" : "Abrir los detalles",
|
"Show archived cards" : "Amosar tarxetes archivaes",
|
||||||
"Details" : "Detalles",
|
"Details" : "Detalles",
|
||||||
"Sharing" : "Comparticiñon",
|
"Sharing" : "Compartiendo",
|
||||||
"Tags" : "Etiquetes",
|
"Tags" : "Etiquetes",
|
||||||
"Activity" : "Actividá",
|
|
||||||
"Undo" : "Desfacer",
|
"Undo" : "Desfacer",
|
||||||
"Owner" : "Propietariu",
|
"Can edit" : "Can edit",
|
||||||
|
"Can share" : "Can share",
|
||||||
"Delete" : "Desaniciar",
|
"Delete" : "Desaniciar",
|
||||||
"Transfer" : "Tresferir",
|
|
||||||
"Edit" : "Editar",
|
"Edit" : "Editar",
|
||||||
"Members" : "Miembros",
|
"Members" : "Miembros",
|
||||||
"Show in Files" : "Amosar en Ficheros",
|
"Attachments" : "Axuntos",
|
||||||
"Download" : "Baxar",
|
|
||||||
"Invalid path selected" : "Seleicionóse un camín inválidu",
|
|
||||||
"Comments" : "Comentarios",
|
"Comments" : "Comentarios",
|
||||||
"Modified" : "Modificóse",
|
"Modified" : "Modificóse'l",
|
||||||
"Failed to load comments" : "Nun se puen cargar los comentarios",
|
"Created" : "Creóse",
|
||||||
"Save" : "Guardar",
|
|
||||||
"Update" : "Anovar",
|
|
||||||
"Created:" : "Creóse'l",
|
|
||||||
"Description" : "Descripción",
|
|
||||||
"(Saving…)" : "(Guardando…)",
|
|
||||||
"Completed" : "Completáu",
|
|
||||||
"Not completed" : "Nun se completó",
|
|
||||||
"seconds ago" : "hai segundos",
|
|
||||||
"Keyboard shortcuts" : "Atayos del tecláu",
|
|
||||||
"Action" : "Aición",
|
|
||||||
"Ctrl" : "Ctrl",
|
|
||||||
"Search" : "Guetar",
|
|
||||||
"Shared with you" : "Compartióse contigo",
|
|
||||||
"All cards" : "Toles tarxetes",
|
|
||||||
"No notifications" : "Nun hai nengún avisu",
|
|
||||||
"An error occurred" : "Prodúxose un error",
|
|
||||||
"Today" : "Güei",
|
"Today" : "Güei",
|
||||||
"Tomorrow" : "Mañana",
|
"Tomorrow" : "Mañana",
|
||||||
"Close" : "Zarrar",
|
"Save" : "Guardar",
|
||||||
"Error creating the share" : "Hebo un error al crear la compartición",
|
"Reply" : "Rempuesta",
|
||||||
"Share" : "Compartir",
|
"Update" : "Anovar",
|
||||||
"Timeline" : "Llinia de tiempu"
|
"Description" : "Descripción",
|
||||||
|
"(group)" : "(grupu)",
|
||||||
|
"seconds ago" : "hai segundos",
|
||||||
|
"Shared with you" : "Shared with you",
|
||||||
|
"This week" : "Esta selmana"
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
21
l10n/az.js
@@ -2,42 +2,27 @@ OC.L10N.register(
|
|||||||
"deck",
|
"deck",
|
||||||
{
|
{
|
||||||
"Personal" : "Şəxsi",
|
"Personal" : "Şəxsi",
|
||||||
"Finished" : "Bitdi",
|
|
||||||
"Done" : "Done",
|
"Done" : "Done",
|
||||||
"The file was uploaded" : "Fayl yükləndi",
|
|
||||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Yüklənmiş fayl php.ini-də upload_max_filesize direktivini aşır",
|
|
||||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Yüklənilən faylın həcmi HTML formasinda olan MAX_FILE_SIZE direktivində təyin dilmiş həcmi aşır.",
|
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Yüklənilən faylın həcmi HTML formasinda olan MAX_FILE_SIZE direktivində təyin dilmiş həcmi aşır.",
|
||||||
"The file was only partially uploaded" : "Fayl yalnız qismən yüklənib",
|
|
||||||
"No file was uploaded" : "Heç bir fayl yüklənilmədi",
|
"No file was uploaded" : "Heç bir fayl yüklənilmədi",
|
||||||
"Missing a temporary folder" : "Müvəqqəti qovluq çatışmır",
|
"Missing a temporary folder" : "Müvəqqəti qovluq çatışmır",
|
||||||
"Could not write file to disk" : "Faylı diskə yazmaq mümkün olmadı",
|
|
||||||
"A PHP extension stopped the file upload" : "PHP uzantısı faylın yüklənməsini dayandırdı",
|
|
||||||
"Cancel" : "Dayandır",
|
"Cancel" : "Dayandır",
|
||||||
"Details" : "Detallar",
|
"Details" : "Detallar",
|
||||||
"Sharing" : "Paylaşılır",
|
"Sharing" : "Paylaşılır",
|
||||||
"Tags" : "Işarələr",
|
"Tags" : "Işarələr",
|
||||||
"Activity" : "Fəallıq",
|
|
||||||
"Can edit" : "Can edit",
|
"Can edit" : "Can edit",
|
||||||
"Can share" : "Can share",
|
"Can share" : "Can share",
|
||||||
"Owner" : "Owner",
|
|
||||||
"Delete" : "Sil",
|
"Delete" : "Sil",
|
||||||
"Edit" : "Dəyişiklik et",
|
"Edit" : "Dəyişiklik et",
|
||||||
"Download" : "Yüklə",
|
|
||||||
"Comments" : "Şərhlər",
|
|
||||||
"Modified" : "Dəyişdirildi",
|
"Modified" : "Dəyişdirildi",
|
||||||
|
"Today" : "Bu gün",
|
||||||
|
"Tomorrow" : "Sabah",
|
||||||
"Save" : "Saxla",
|
"Save" : "Saxla",
|
||||||
"Reply" : "Cavab",
|
"Reply" : "Cavab",
|
||||||
"Update" : "Yenilənmə",
|
"Update" : "Yenilənmə",
|
||||||
"Created:" : "Yaradıldı:",
|
|
||||||
"Description" : "Açıqlanma",
|
"Description" : "Açıqlanma",
|
||||||
"Completed" : "Bitmişdir",
|
|
||||||
"(group)" : "(qrup)",
|
"(group)" : "(qrup)",
|
||||||
"seconds ago" : "saniyələr öncə",
|
"seconds ago" : "saniyələr öncə",
|
||||||
"Search" : "Axtarış",
|
"Shared with you" : "Shared with you"
|
||||||
"Shared with you" : "Shared with you",
|
|
||||||
"Today" : "Bu gün",
|
|
||||||
"Tomorrow" : "Sabah",
|
|
||||||
"Close" : "Bağla",
|
|
||||||
"Share" : "Paylaş"
|
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
21
l10n/az.json
@@ -1,41 +1,26 @@
|
|||||||
{ "translations": {
|
{ "translations": {
|
||||||
"Personal" : "Şəxsi",
|
"Personal" : "Şəxsi",
|
||||||
"Finished" : "Bitdi",
|
|
||||||
"Done" : "Done",
|
"Done" : "Done",
|
||||||
"The file was uploaded" : "Fayl yükləndi",
|
|
||||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Yüklənmiş fayl php.ini-də upload_max_filesize direktivini aşır",
|
|
||||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Yüklənilən faylın həcmi HTML formasinda olan MAX_FILE_SIZE direktivində təyin dilmiş həcmi aşır.",
|
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Yüklənilən faylın həcmi HTML formasinda olan MAX_FILE_SIZE direktivində təyin dilmiş həcmi aşır.",
|
||||||
"The file was only partially uploaded" : "Fayl yalnız qismən yüklənib",
|
|
||||||
"No file was uploaded" : "Heç bir fayl yüklənilmədi",
|
"No file was uploaded" : "Heç bir fayl yüklənilmədi",
|
||||||
"Missing a temporary folder" : "Müvəqqəti qovluq çatışmır",
|
"Missing a temporary folder" : "Müvəqqəti qovluq çatışmır",
|
||||||
"Could not write file to disk" : "Faylı diskə yazmaq mümkün olmadı",
|
|
||||||
"A PHP extension stopped the file upload" : "PHP uzantısı faylın yüklənməsini dayandırdı",
|
|
||||||
"Cancel" : "Dayandır",
|
"Cancel" : "Dayandır",
|
||||||
"Details" : "Detallar",
|
"Details" : "Detallar",
|
||||||
"Sharing" : "Paylaşılır",
|
"Sharing" : "Paylaşılır",
|
||||||
"Tags" : "Işarələr",
|
"Tags" : "Işarələr",
|
||||||
"Activity" : "Fəallıq",
|
|
||||||
"Can edit" : "Can edit",
|
"Can edit" : "Can edit",
|
||||||
"Can share" : "Can share",
|
"Can share" : "Can share",
|
||||||
"Owner" : "Owner",
|
|
||||||
"Delete" : "Sil",
|
"Delete" : "Sil",
|
||||||
"Edit" : "Dəyişiklik et",
|
"Edit" : "Dəyişiklik et",
|
||||||
"Download" : "Yüklə",
|
|
||||||
"Comments" : "Şərhlər",
|
|
||||||
"Modified" : "Dəyişdirildi",
|
"Modified" : "Dəyişdirildi",
|
||||||
|
"Today" : "Bu gün",
|
||||||
|
"Tomorrow" : "Sabah",
|
||||||
"Save" : "Saxla",
|
"Save" : "Saxla",
|
||||||
"Reply" : "Cavab",
|
"Reply" : "Cavab",
|
||||||
"Update" : "Yenilənmə",
|
"Update" : "Yenilənmə",
|
||||||
"Created:" : "Yaradıldı:",
|
|
||||||
"Description" : "Açıqlanma",
|
"Description" : "Açıqlanma",
|
||||||
"Completed" : "Bitmişdir",
|
|
||||||
"(group)" : "(qrup)",
|
"(group)" : "(qrup)",
|
||||||
"seconds ago" : "saniyələr öncə",
|
"seconds ago" : "saniyələr öncə",
|
||||||
"Search" : "Axtarış",
|
"Shared with you" : "Shared with you"
|
||||||
"Shared with you" : "Shared with you",
|
|
||||||
"Today" : "Bu gün",
|
|
||||||
"Tomorrow" : "Sabah",
|
|
||||||
"Close" : "Bağla",
|
|
||||||
"Share" : "Paylaş"
|
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
126
l10n/bg.js
@@ -63,11 +63,11 @@ OC.L10N.register(
|
|||||||
"{user} has restored the attachment {attachment} to card {card}" : "{user} възстанови прикачения файл {attachment} към карта {card}",
|
"{user} has restored the attachment {attachment} to card {card}" : "{user} възстанови прикачения файл {attachment} към карта {card}",
|
||||||
"You have commented on card {card}" : "Коментирали сте карта {card}",
|
"You have commented on card {card}" : "Коментирали сте карта {card}",
|
||||||
"{user} has commented on card {card}" : "{user} коментира карта {card}",
|
"{user} has commented on card {card}" : "{user} коментира карта {card}",
|
||||||
|
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Описанието на картата</strong> в приложението Deck/набор/ е променено",
|
||||||
"Deck" : "Набор",
|
"Deck" : "Набор",
|
||||||
"Changes in the <strong>Deck app</strong>" : "Промени в <strong>приложението Deck</strong>",
|
"Changes in the <strong>Deck app</strong>" : "Промени в <strong>приложението Deck</strong>",
|
||||||
"A <strong>comment</strong> was created on a card" : "На картата е създаден <strong>коментар</strong>",
|
"A <strong>comment</strong> was created on a card" : "На картата е създаден <strong>коментар</strong>",
|
||||||
"Upcoming cards" : "Предстоящи карти",
|
"Upcoming cards" : "Предстоящи карти",
|
||||||
"Load more" : "Зареждане на още",
|
|
||||||
"Personal" : "Лични",
|
"Personal" : "Лични",
|
||||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Картата \"%s\" на \"%s\" Ви е била възложена от %s.",
|
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Картата \"%s\" на \"%s\" Ви е била възложена от %s.",
|
||||||
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} е възложил картата {deck-card} на {deck-board} на Вас.",
|
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} е възложил картата {deck-card} на {deck-board} на Вас.",
|
||||||
@@ -77,22 +77,17 @@ OC.L10N.register(
|
|||||||
"{user} has mentioned you in a comment on {deck-card}." : "{user} те спомена в коментар за {deck-card}.",
|
"{user} has mentioned you in a comment on {deck-card}." : "{user} те спомена в коментар за {deck-card}.",
|
||||||
"The board \"%s\" has been shared with you by %s." : "Таблото \"%s\" е споделено с вас от%s.",
|
"The board \"%s\" has been shared with you by %s." : "Таблото \"%s\" е споделено с вас от%s.",
|
||||||
"{user} has shared {deck-board} with you." : "{user} сподели {deck-board} с Вас.",
|
"{user} has shared {deck-board} with you." : "{user} сподели {deck-board} с Вас.",
|
||||||
"Deck board" : "Deck табло",
|
|
||||||
"Owned by %1$s" : "Притежаван от %1$s",
|
|
||||||
"Deck boards, cards and comments" : "Табла, карти и коментари",
|
|
||||||
"From %1$s, in %2$s/%3$s, owned by %4$s" : "От %1$s, в %2$s/%3$s, притежание на %4$s",
|
|
||||||
"Card comments" : "Коментари на карти",
|
"Card comments" : "Коментари на карти",
|
||||||
"%s on %s" : "%s на %s",
|
"%s on %s" : "%s на %s",
|
||||||
"Deck boards and cards" : "Табла и карти",
|
|
||||||
"No data was provided to create an attachment." : "Не бяха предоставени данни за създаване на прикачен файл.",
|
"No data was provided to create an attachment." : "Не бяха предоставени данни за създаване на прикачен файл.",
|
||||||
"Finished" : "Готово",
|
"Finished" : "Готово",
|
||||||
"To review" : "За преглед",
|
"To review" : "За преглед",
|
||||||
"Action needed" : "Необходимо е действие",
|
"Action needed" : "Необходимо е действие",
|
||||||
"Later" : "По-късно",
|
"Later" : "По-късно",
|
||||||
"copy" : "Копиране",
|
"copy" : "Копиране",
|
||||||
"To do" : "Задачи",
|
"To do" : "Да направя",
|
||||||
"Doing" : "Задачи в процес на изпълнение",
|
"Doing" : "Правя",
|
||||||
"Done" : "Завършено",
|
"Done" : "Готово",
|
||||||
"Example Task 3" : "Примерна задача 3",
|
"Example Task 3" : "Примерна задача 3",
|
||||||
"Example Task 2" : "Примерна задача 2",
|
"Example Task 2" : "Примерна задача 2",
|
||||||
"Example Task 1" : "Примерна задача 1",
|
"Example Task 1" : "Примерна задача 1",
|
||||||
@@ -105,22 +100,26 @@ OC.L10N.register(
|
|||||||
"Could not write file to disk" : " Файлът не можа да бъде записан на диск",
|
"Could not write file to disk" : " Файлът не можа да бъде записан на диск",
|
||||||
"A PHP extension stopped the file upload" : "PHP разширение спря качването на файла",
|
"A PHP extension stopped the file upload" : "PHP разширение спря качването на файла",
|
||||||
"No file uploaded or file size exceeds maximum of %s" : "Няма качен файл или размерът на файла надвишава максимума от %s",
|
"No file uploaded or file size exceeds maximum of %s" : "Няма качен файл или размерът на файла надвишава максимума от %s",
|
||||||
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Този коментар има повече от %s знака.\nДобавено като прикачен файл към картата с име %s.\nДостъпно на URL: %s.",
|
|
||||||
"Card not found" : "Катртата не е намерена",
|
"Card not found" : "Катртата не е намерена",
|
||||||
"Path is already shared with this card" : "Пътят вече е споделен с тази карта",
|
"Path is already shared with this card" : "Пътят вече е споделен с тази карта",
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "Невалидна дата, форматът е различен от ГГГГ-ММ-ДД",
|
"Invalid date, date format must be YYYY-MM-DD" : "Невалидна дата, форматът е различен от ГГГГ-ММ-ДД",
|
||||||
"Personal planning and team project organization" : "Лично планиране и организация на екипни проекти",
|
"Personal planning and team project organization" : "Лично планиране и организация на екипни проекти",
|
||||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck е инструмент за организация в стил kanban, насочен към лично планиране и организация на проекти за екипи, интегрирани с Nextcloud.\n\n\n- 📥 Добавете задачите си към карти и ги подредете\n- 📄 Запишете допълнителни бележки в markdown формат\n- Присвояване на етикети за още по-добра организация\n- 👥 Споделете с вашия екип, приятели или семейство\n- 📎Прикачете файлове и ги вградете във вашето описание за маркиране\n- 💬Обсъдете с вашия екип, като използвате коментари\n- ⚡ Проследявайте промените в потока от дейности\n- 🚀 Организирайте проекта си",
|
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck е инструмент за организация в стил kanban, насочен към лично планиране и организация на проекти за екипи, интегрирани с Nextcloud.\n\n\n- 📥 Добавете задачите си към карти и ги подредете\n- 📄 Запишете допълнителни бележки в markdown формат\n- Присвояване на етикети за още по-добра организация\n- 👥 Споделете с вашия екип, приятели или семейство\n- 📎Прикачете файлове и ги вградете във вашето описание за маркиране\n- 💬Обсъдете с вашия екип, като използвате коментари\n- ⚡ Проследявайте промените в потока от дейности\n- 🚀 Организирайте проекта си",
|
||||||
|
"Card details" : "Подробности за картата",
|
||||||
"Add board" : "Добави табло",
|
"Add board" : "Добави табло",
|
||||||
"Select the board to link to a project" : "Изберете таблото, което да свържете към проект",
|
"Select the board to link to a project" : "Изберете таблото, което да свържете към проект",
|
||||||
"Search by board title" : "Търсене по заглавие на таблото",
|
"Search by board title" : "Търсене по заглавие на таблото",
|
||||||
"Select board" : "Избор на табло",
|
"Select board" : "Избор на табло",
|
||||||
"Move card to another board" : "Преместване на картата на друго табло",
|
"Create a new card" : "Създаване на нова карта",
|
||||||
"Select a board" : "Избор на табло",
|
"Select a board" : "Избор на табло",
|
||||||
"No lists available" : "Няма налична списъци.",
|
|
||||||
"Select a list" : "Избор на списък",
|
"Select a list" : "Избор на списък",
|
||||||
"Move card" : "Преместване на карта",
|
"Card title" : "Заглавие на карта",
|
||||||
"Cancel" : "Отказ",
|
"Cancel" : "Отказ",
|
||||||
|
"Creating the new card …" : "Създаване на новата карта ...",
|
||||||
|
"Card \"{card}\" was added to \"{board}\"" : "Карта \"{card}\" беше добавена към \"{board}\"",
|
||||||
|
"Open card" : "Отваряне на карта",
|
||||||
|
"Close" : "Затваряне",
|
||||||
|
"Create card" : "Създаване на карта",
|
||||||
"Select a card" : "Избор на карта",
|
"Select a card" : "Избор на карта",
|
||||||
"Select the card to link to a project" : "Изберете картата, която да свържете към проект",
|
"Select the card to link to a project" : "Изберете картата, която да свържете към проект",
|
||||||
"Link to card" : "Връзка към карта",
|
"Link to card" : "Връзка към карта",
|
||||||
@@ -135,7 +134,6 @@ OC.L10N.register(
|
|||||||
"Archived cards" : "Архивирани карти",
|
"Archived cards" : "Архивирани карти",
|
||||||
"Add list" : "Добави списък",
|
"Add list" : "Добави списък",
|
||||||
"List name" : "Име на списък",
|
"List name" : "Име на списък",
|
||||||
"Active filters" : "Актижни филтри",
|
|
||||||
"Apply filter" : "Приложи филтър",
|
"Apply filter" : "Приложи филтър",
|
||||||
"Filter by tag" : "Филтрирай по маркер",
|
"Filter by tag" : "Филтрирай по маркер",
|
||||||
"Filter by assigned user" : "Филтриране по назначен потребител",
|
"Filter by assigned user" : "Филтриране по назначен потребител",
|
||||||
@@ -150,39 +148,33 @@ OC.L10N.register(
|
|||||||
"Hide archived cards" : "Скриване на архивирани карти",
|
"Hide archived cards" : "Скриване на архивирани карти",
|
||||||
"Show archived cards" : "Показване на архивирани карти",
|
"Show archived cards" : "Показване на архивирани карти",
|
||||||
"Toggle compact mode" : "Превключване на компактен режим",
|
"Toggle compact mode" : "Превключване на компактен режим",
|
||||||
"Open details" : "Отваряне на подробности",
|
|
||||||
"Details" : "Подробности",
|
"Details" : "Подробности",
|
||||||
"Currently present people" : "Хора присъстващи в момента",
|
|
||||||
"Loading board" : "Зареждане на табло",
|
"Loading board" : "Зареждане на табло",
|
||||||
"Board not found" : "Таблото не е намерено",
|
"No lists available" : "Няма налична списъци.",
|
||||||
"Create a new list to add cards to this board" : "Създайте нов списък, за да добавите карти към това табло",
|
"Create a new list to add cards to this board" : "Създайте нов списък, за да добавите карти към това табло",
|
||||||
|
"Board not found" : "Таблото не е намерено",
|
||||||
"Sharing" : "Споделяне",
|
"Sharing" : "Споделяне",
|
||||||
"Tags" : "Етикети",
|
"Tags" : "Етикети",
|
||||||
"Deleted items" : "Изтрити елементи",
|
"Deleted items" : "Изтрити елементи",
|
||||||
"Activity" : "Активност",
|
"Timeline" : "Времева линия",
|
||||||
"Deleted lists" : "Изтрити списъци",
|
"Deleted lists" : "Изтрити списъци",
|
||||||
"Undo" : "Отмяна",
|
"Undo" : "Отмяна",
|
||||||
"Deleted cards" : "Изтрити карти",
|
"Deleted cards" : "Изтрити карти",
|
||||||
|
"Share board with a user, group or circle …" : "Споделяне на таблото с потребител, група или кръг ...",
|
||||||
|
"Searching for users, groups and circles …" : "Търсене за потребители, групи и кръгове ...",
|
||||||
"No participants found" : "Няма намерени участници",
|
"No participants found" : "Няма намерени участници",
|
||||||
"Board owner" : "Собственик на табло",
|
"Board owner" : "Собственик на табло",
|
||||||
"(Group)" : "(Група)",
|
"(Group)" : "(Група)",
|
||||||
|
"(Circle)" : "(Кръг)",
|
||||||
"Can edit" : "Може да редактира",
|
"Can edit" : "Може да редактира",
|
||||||
"Can share" : "Може да споделя",
|
"Can share" : "Може да споделя",
|
||||||
"Can manage" : "Може да управлява",
|
"Can manage" : "Може да управлява",
|
||||||
"Owner" : "Собственик",
|
|
||||||
"Delete" : "Изтриване",
|
"Delete" : "Изтриване",
|
||||||
"Failed to create share with {displayName}" : "Създаването на споделяне с {displayName} не бе успешно",
|
"Failed to create share with {displayName}" : "Създаването на споделяне с {displayName} не бе успешно",
|
||||||
"Are you sure you want to transfer the board {title} to {user}?" : "Сигурни ли сте че искате да прехвърлите таблото {title} на {user}?",
|
"Add a new list" : "Добавяне на нов списък",
|
||||||
"Transfer the board." : "Прехвърлете таблото.",
|
|
||||||
"Transfer" : "Прехвърляне",
|
|
||||||
"The board has been transferred to {user}" : "Таблото беше прехвърлено на {user}",
|
|
||||||
"Failed to transfer the board to {user}" : "Неуспешно прехвърляне на таблото на {user}",
|
|
||||||
"Edit list title" : "Редактиране на заглавието на списъка",
|
|
||||||
"Archive all cards" : "Архивира всички карти",
|
"Archive all cards" : "Архивира всички карти",
|
||||||
"Unarchive all cards" : "Разархивиране на всички карти",
|
|
||||||
"Delete list" : "Изтрива списък",
|
"Delete list" : "Изтрива списък",
|
||||||
"Archive all cards in this list" : "Архивира всички карти в този списък",
|
"Archive all cards in this list" : "Архивира всички карти в този списък",
|
||||||
"Unarchive all cards in this list" : "Разархивиране всички карти в този списък",
|
|
||||||
"Add a new card" : "Добави нова карта",
|
"Add a new card" : "Добави нова карта",
|
||||||
"Card name" : "Име на карта",
|
"Card name" : "Име на карта",
|
||||||
"List deleted" : "Списъкът е изтрит",
|
"List deleted" : "Списъкът е изтрит",
|
||||||
@@ -191,7 +183,6 @@ OC.L10N.register(
|
|||||||
"title and color value must be provided" : "трябва да се предоставят заглавие и стойност на цвета",
|
"title and color value must be provided" : "трябва да се предоставят заглавие и стойност на цвета",
|
||||||
"Board name" : "Име на табло",
|
"Board name" : "Име на табло",
|
||||||
"Members" : "Членове",
|
"Members" : "Членове",
|
||||||
"Assign a user to this card…" : "Зачисляване на потребител на тази карта ...",
|
|
||||||
"Upload new files" : "Качи нови файлове",
|
"Upload new files" : "Качи нови файлове",
|
||||||
"Share from Files" : "Споделяне от Файлове",
|
"Share from Files" : "Споделяне от Файлове",
|
||||||
"Pending share" : "Чакащо споделяне",
|
"Pending share" : "Чакащо споделяне",
|
||||||
@@ -212,6 +203,18 @@ OC.L10N.register(
|
|||||||
"The title cannot be empty." : "Заглавието не може да бъде празно.",
|
"The title cannot be empty." : "Заглавието не може да бъде празно.",
|
||||||
"No comments yet. Begin the discussion!" : "Все още няма коментари. Започнете дискусията!",
|
"No comments yet. Begin the discussion!" : "Все още няма коментари. Започнете дискусията!",
|
||||||
"Failed to load comments" : "Неуспешно зареждане на коментари",
|
"Failed to load comments" : "Неуспешно зареждане на коментари",
|
||||||
|
"Assign a tag to this card…" : "Присвояване на етикет на тази карта ...",
|
||||||
|
"Assign to users" : "Зачисляване към потребители",
|
||||||
|
"Assign to users/groups/circles" : "Зачисляване към потребители/групи/кръгове",
|
||||||
|
"Assign a user to this card…" : "Зачисляване на потребител на тази карта ...",
|
||||||
|
"Due date" : "Крайна дата",
|
||||||
|
"Set a due date" : "Задаване на крайна дата",
|
||||||
|
"Remove due date" : "Премахни крайната дата",
|
||||||
|
"Select Date" : "Изберете дата",
|
||||||
|
"Today" : "Днес",
|
||||||
|
"Tomorrow" : "Утре",
|
||||||
|
"Next week" : "Следваща седмица",
|
||||||
|
"Next month" : "Следващия месец",
|
||||||
"Save" : "Запазване",
|
"Save" : "Запазване",
|
||||||
"The comment cannot be empty." : "Коментарът не може да бъде празен.",
|
"The comment cannot be empty." : "Коментарът не може да бъде празен.",
|
||||||
"The comment cannot be longer than 1000 characters." : "Коментарът не може да бъде по-дълъг от 1000 знака.",
|
"The comment cannot be longer than 1000 characters." : "Коментарът не може да бъде по-дълъг от 1000 знака.",
|
||||||
@@ -219,7 +222,6 @@ OC.L10N.register(
|
|||||||
"Cancel reply" : "Отказ на отговор",
|
"Cancel reply" : "Отказ на отговор",
|
||||||
"Reply" : "Отговори",
|
"Reply" : "Отговори",
|
||||||
"Update" : "Обновяване",
|
"Update" : "Обновяване",
|
||||||
"Created:" : "Създадено:",
|
|
||||||
"Description" : "Описание",
|
"Description" : "Описание",
|
||||||
"(Unsaved)" : " (Незаписан)",
|
"(Unsaved)" : " (Незаписан)",
|
||||||
"(Saving…)" : "(Записване...)",
|
"(Saving…)" : "(Записване...)",
|
||||||
@@ -229,46 +231,29 @@ OC.L10N.register(
|
|||||||
"Add Attachment" : "Добавяне на прикачен файл",
|
"Add Attachment" : "Добавяне на прикачен файл",
|
||||||
"Write a description …" : "Напишете описание ...",
|
"Write a description …" : "Напишете описание ...",
|
||||||
"Choose attachment" : "Избор на прикачен файл",
|
"Choose attachment" : "Избор на прикачен файл",
|
||||||
"Set a due date" : "Задаване на крайна дата",
|
|
||||||
"Remove due date" : "Премахни крайната дата",
|
|
||||||
"Completed" : "Завършен",
|
|
||||||
"Not completed" : "Незавършен",
|
|
||||||
"Unarchive card" : "Разархивиране на карта",
|
|
||||||
"Archive card" : "Архивиране на карта",
|
|
||||||
"Select Date" : "Изберете дата",
|
|
||||||
"Assign a tag to this card…" : "Присвояване на етикет на тази карта ...",
|
|
||||||
"(group)" : "(група)",
|
"(group)" : "(група)",
|
||||||
"Todo items" : "Елементи на задача за изпълнение",
|
|
||||||
"{count} comments, {unread} unread" : "{count} коментари, {unread} непрочетени",
|
"{count} comments, {unread} unread" : "{count} коментари, {unread} непрочетени",
|
||||||
"Edit card title" : "Редактиране на заглавието на карта",
|
|
||||||
"Card details" : "Подробности за картата",
|
|
||||||
"Assign to me" : "Зачисляване към мен",
|
"Assign to me" : "Зачисляване към мен",
|
||||||
"Unassign myself" : "Отмяна на зачисляването към мен",
|
"Unassign myself" : "Отмяна на зачисляването към мен",
|
||||||
"Mark as done" : "Маркирай като готово",
|
"Move card" : "Преместване на карта",
|
||||||
|
"Unarchive card" : "Разархивиране на карта",
|
||||||
|
"Archive card" : "Архивиране на карта",
|
||||||
"Delete card" : "Изтриване на карта",
|
"Delete card" : "Изтриване на карта",
|
||||||
|
"Move card to another board" : "Преместване на картата на друго табло",
|
||||||
"Card deleted" : "Картата е изтрита",
|
"Card deleted" : "Картата е изтрита",
|
||||||
"seconds ago" : "преди секунди",
|
"seconds ago" : "преди секунди",
|
||||||
"Keyboard shortcuts" : "Бързи клавиши",
|
|
||||||
"Keyboard shortcut" : "Клавишни комбинации",
|
|
||||||
"Action" : "Действие",
|
|
||||||
"Shift" : "Shift /бутон/",
|
|
||||||
"Ctrl" : "Ctrl /бутон/",
|
|
||||||
"Search" : "Търсене",
|
|
||||||
"Enter" : "Въвеждане",
|
|
||||||
"Space" : "Пространство",
|
|
||||||
"All boards" : "Всички табла",
|
"All boards" : "Всички табла",
|
||||||
"Archived boards" : "Архивирани табла",
|
"Archived boards" : "Архивирани табла",
|
||||||
"Shared with you" : "Споделени с вас",
|
"Shared with you" : "Споделени с вас",
|
||||||
"Deck settings" : "Настройки на платформата",
|
|
||||||
"Use bigger card view" : "Използва по-голям изглед на картата",
|
"Use bigger card view" : "Използва по-голям изглед на картата",
|
||||||
"Show card ID badge" : "Показване на обозначение за самоличност на картата",
|
|
||||||
"Show boards in calendar/tasks" : "Показване на таблата в календар / задачи",
|
"Show boards in calendar/tasks" : "Показване на таблата в календар / задачи",
|
||||||
|
"Limit deck usage of groups" : "Ограничава използването на набора от групи",
|
||||||
|
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Ограничаването на приложението Deck/набор/ ще блокира потребителите, които не са част от тези групи, да създават свои собствени табла. Потребителите все още ще могат да работят на таблата, които са споделени с тях.",
|
||||||
"Board details" : "Подробности за табло",
|
"Board details" : "Подробности за табло",
|
||||||
"Edit board" : "Редактиране на табло",
|
"Edit board" : "Редактиране на табло",
|
||||||
"Clone board" : " Клониране на табло",
|
"Clone board" : " Клониране на табло",
|
||||||
"Unarchive board" : "Разархивиране натабло",
|
"Unarchive board" : "Разархивиране натабло",
|
||||||
"Archive board" : "Архивиране на табло",
|
"Archive board" : "Архивиране на табло",
|
||||||
"Export board" : "Експортиране на табло",
|
|
||||||
"Turn on due date reminders" : "Включва напомнянията за краен срок",
|
"Turn on due date reminders" : "Включва напомнянията за краен срок",
|
||||||
"Turn off due date reminders" : "Изключва напомнянията за краен срок",
|
"Turn off due date reminders" : "Изключва напомнянията за краен срок",
|
||||||
"Due date reminders" : " Напомняния за краен срок",
|
"Due date reminders" : " Напомняния за краен срок",
|
||||||
@@ -280,31 +265,15 @@ OC.L10N.register(
|
|||||||
"Only assigned cards" : "Само зачислените карти",
|
"Only assigned cards" : "Само зачислените карти",
|
||||||
"No reminder" : "Няма напомняне",
|
"No reminder" : "Няма напомняне",
|
||||||
"An error occurred" : "Възникна грешка",
|
"An error occurred" : "Възникна грешка",
|
||||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Сигурни ли сте, че искате да изтриете таблото {title}? Това ще изтрие всички данни на това табло, включително архивираните карти.",
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Сигурни ли сте, че искате да изтриете таблото {title}? Това ще изтрие всички данни на това табло.",
|
||||||
"Delete the board?" : "Изтриване на таблото?",
|
"Delete the board?" : "Изтриване на таблото?",
|
||||||
"Loading filtered view" : "Зареждане на филтриран изглед",
|
"Loading filtered view" : "Зареждане на филтриран изглед",
|
||||||
"Today" : "Днес",
|
"This week" : "Тази седмица",
|
||||||
"Tomorrow" : "Утре",
|
|
||||||
"No due" : "Не се дължи",
|
"No due" : "Не се дължи",
|
||||||
"Search for {searchQuery} in all boards" : "Търсене на {searchQuery} във всички табла",
|
"Search for {searchQuery} in all boards" : "Търсене на {searchQuery} във всички табла",
|
||||||
"No results found" : "Няма намерени резултати",
|
"No results found" : "Няма намерени резултати",
|
||||||
"Deck board {name}\n* Last modified on {lastMod}" : "Табло {name}\n* Последна промяна на {lastMod}",
|
|
||||||
"{stack} in {board}" : "{stack} в {board}",
|
|
||||||
"Click to expand description" : "Кликване за разширяване на описанието",
|
|
||||||
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Създаден на {created}\n* Последна промяна на {lastMod} \n* {nbAttachments} прикачени файлове \n* {nbComments} коментара",
|
|
||||||
"{nbCards} cards" : "{nbCards} карти",
|
|
||||||
"Click to expand comment" : "Кликване за разширяване на коментара",
|
|
||||||
"Create a new card" : "Създаване на нова карта",
|
|
||||||
"Card title" : "Заглавие на карта",
|
|
||||||
"Create card" : "Създаване на карта",
|
|
||||||
"Creating the new card …" : "Създаване на новата карта ...",
|
|
||||||
"Card \"{card}\" was added to \"{board}\"" : "Карта \"{card}\" беше добавена към \"{board}\"",
|
|
||||||
"Open card" : "Отваряне на карта",
|
|
||||||
"Close" : "Затваряне",
|
|
||||||
"No upcoming cards" : "Няма предстоящи карти",
|
"No upcoming cards" : "Няма предстоящи карти",
|
||||||
"upcoming cards" : "предстоящи карти",
|
"upcoming cards" : "предстоящи карти",
|
||||||
"New card" : "Нова карта",
|
|
||||||
"Due on {date}" : "Краен срок до {date}",
|
|
||||||
"Link to a board" : "Линк към табло",
|
"Link to a board" : "Линк към табло",
|
||||||
"Link to a card" : "Линк към карта",
|
"Link to a card" : "Линк към карта",
|
||||||
"Create a card" : "Създаване на карта",
|
"Create a card" : "Създаване на карта",
|
||||||
@@ -315,19 +284,6 @@ OC.L10N.register(
|
|||||||
"Error creating the share" : "Грешка при създаване на споделяне",
|
"Error creating the share" : "Грешка при създаване на споделяне",
|
||||||
"Share with a Deck card" : "Споделяне с Deck карта",
|
"Share with a Deck card" : "Споделяне с Deck карта",
|
||||||
"Share {file} with a Deck card" : "Споделяне {file} с Deck карта",
|
"Share {file} with a Deck card" : "Споделяне {file} с Deck карта",
|
||||||
"Share" : "Споделяне",
|
"Share" : "Споделяне"
|
||||||
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Описанието на картата</strong> в приложението Deck/набор/ е променено",
|
|
||||||
"Timeline" : "Времева линия",
|
|
||||||
"Share board with a user, group or circle …" : "Споделяне на таблото с потребител, група или кръг ...",
|
|
||||||
"Searching for users, groups and circles …" : "Търсене за потребители, групи и кръгове ...",
|
|
||||||
"(Circle)" : "(Кръг)",
|
|
||||||
"Assign to users" : "Зачисляване към потребители",
|
|
||||||
"Assign to users/groups/circles" : "Зачисляване към потребители/групи/кръгове",
|
|
||||||
"Due date" : "Крайна дата",
|
|
||||||
"Next week" : "Следваща седмица",
|
|
||||||
"Next month" : "Следващия месец",
|
|
||||||
"List is empty" : "Списъкът е празен",
|
|
||||||
"Limit deck usage of groups" : "Ограничава използването на набора от групи",
|
|
||||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Ограничаването на приложението Deck/набор/ ще блокира потребителите, които не са част от тези групи, да създават свои собствени табла. Потребителите все още ще могат да работят на таблата, които са споделени с тях."
|
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
126
l10n/bg.json
@@ -61,11 +61,11 @@
|
|||||||
"{user} has restored the attachment {attachment} to card {card}" : "{user} възстанови прикачения файл {attachment} към карта {card}",
|
"{user} has restored the attachment {attachment} to card {card}" : "{user} възстанови прикачения файл {attachment} към карта {card}",
|
||||||
"You have commented on card {card}" : "Коментирали сте карта {card}",
|
"You have commented on card {card}" : "Коментирали сте карта {card}",
|
||||||
"{user} has commented on card {card}" : "{user} коментира карта {card}",
|
"{user} has commented on card {card}" : "{user} коментира карта {card}",
|
||||||
|
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Описанието на картата</strong> в приложението Deck/набор/ е променено",
|
||||||
"Deck" : "Набор",
|
"Deck" : "Набор",
|
||||||
"Changes in the <strong>Deck app</strong>" : "Промени в <strong>приложението Deck</strong>",
|
"Changes in the <strong>Deck app</strong>" : "Промени в <strong>приложението Deck</strong>",
|
||||||
"A <strong>comment</strong> was created on a card" : "На картата е създаден <strong>коментар</strong>",
|
"A <strong>comment</strong> was created on a card" : "На картата е създаден <strong>коментар</strong>",
|
||||||
"Upcoming cards" : "Предстоящи карти",
|
"Upcoming cards" : "Предстоящи карти",
|
||||||
"Load more" : "Зареждане на още",
|
|
||||||
"Personal" : "Лични",
|
"Personal" : "Лични",
|
||||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Картата \"%s\" на \"%s\" Ви е била възложена от %s.",
|
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Картата \"%s\" на \"%s\" Ви е била възложена от %s.",
|
||||||
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} е възложил картата {deck-card} на {deck-board} на Вас.",
|
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} е възложил картата {deck-card} на {deck-board} на Вас.",
|
||||||
@@ -75,22 +75,17 @@
|
|||||||
"{user} has mentioned you in a comment on {deck-card}." : "{user} те спомена в коментар за {deck-card}.",
|
"{user} has mentioned you in a comment on {deck-card}." : "{user} те спомена в коментар за {deck-card}.",
|
||||||
"The board \"%s\" has been shared with you by %s." : "Таблото \"%s\" е споделено с вас от%s.",
|
"The board \"%s\" has been shared with you by %s." : "Таблото \"%s\" е споделено с вас от%s.",
|
||||||
"{user} has shared {deck-board} with you." : "{user} сподели {deck-board} с Вас.",
|
"{user} has shared {deck-board} with you." : "{user} сподели {deck-board} с Вас.",
|
||||||
"Deck board" : "Deck табло",
|
|
||||||
"Owned by %1$s" : "Притежаван от %1$s",
|
|
||||||
"Deck boards, cards and comments" : "Табла, карти и коментари",
|
|
||||||
"From %1$s, in %2$s/%3$s, owned by %4$s" : "От %1$s, в %2$s/%3$s, притежание на %4$s",
|
|
||||||
"Card comments" : "Коментари на карти",
|
"Card comments" : "Коментари на карти",
|
||||||
"%s on %s" : "%s на %s",
|
"%s on %s" : "%s на %s",
|
||||||
"Deck boards and cards" : "Табла и карти",
|
|
||||||
"No data was provided to create an attachment." : "Не бяха предоставени данни за създаване на прикачен файл.",
|
"No data was provided to create an attachment." : "Не бяха предоставени данни за създаване на прикачен файл.",
|
||||||
"Finished" : "Готово",
|
"Finished" : "Готово",
|
||||||
"To review" : "За преглед",
|
"To review" : "За преглед",
|
||||||
"Action needed" : "Необходимо е действие",
|
"Action needed" : "Необходимо е действие",
|
||||||
"Later" : "По-късно",
|
"Later" : "По-късно",
|
||||||
"copy" : "Копиране",
|
"copy" : "Копиране",
|
||||||
"To do" : "Задачи",
|
"To do" : "Да направя",
|
||||||
"Doing" : "Задачи в процес на изпълнение",
|
"Doing" : "Правя",
|
||||||
"Done" : "Завършено",
|
"Done" : "Готово",
|
||||||
"Example Task 3" : "Примерна задача 3",
|
"Example Task 3" : "Примерна задача 3",
|
||||||
"Example Task 2" : "Примерна задача 2",
|
"Example Task 2" : "Примерна задача 2",
|
||||||
"Example Task 1" : "Примерна задача 1",
|
"Example Task 1" : "Примерна задача 1",
|
||||||
@@ -103,22 +98,26 @@
|
|||||||
"Could not write file to disk" : " Файлът не можа да бъде записан на диск",
|
"Could not write file to disk" : " Файлът не можа да бъде записан на диск",
|
||||||
"A PHP extension stopped the file upload" : "PHP разширение спря качването на файла",
|
"A PHP extension stopped the file upload" : "PHP разширение спря качването на файла",
|
||||||
"No file uploaded or file size exceeds maximum of %s" : "Няма качен файл или размерът на файла надвишава максимума от %s",
|
"No file uploaded or file size exceeds maximum of %s" : "Няма качен файл или размерът на файла надвишава максимума от %s",
|
||||||
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Този коментар има повече от %s знака.\nДобавено като прикачен файл към картата с име %s.\nДостъпно на URL: %s.",
|
|
||||||
"Card not found" : "Катртата не е намерена",
|
"Card not found" : "Катртата не е намерена",
|
||||||
"Path is already shared with this card" : "Пътят вече е споделен с тази карта",
|
"Path is already shared with this card" : "Пътят вече е споделен с тази карта",
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "Невалидна дата, форматът е различен от ГГГГ-ММ-ДД",
|
"Invalid date, date format must be YYYY-MM-DD" : "Невалидна дата, форматът е различен от ГГГГ-ММ-ДД",
|
||||||
"Personal planning and team project organization" : "Лично планиране и организация на екипни проекти",
|
"Personal planning and team project organization" : "Лично планиране и организация на екипни проекти",
|
||||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck е инструмент за организация в стил kanban, насочен към лично планиране и организация на проекти за екипи, интегрирани с Nextcloud.\n\n\n- 📥 Добавете задачите си към карти и ги подредете\n- 📄 Запишете допълнителни бележки в markdown формат\n- Присвояване на етикети за още по-добра организация\n- 👥 Споделете с вашия екип, приятели или семейство\n- 📎Прикачете файлове и ги вградете във вашето описание за маркиране\n- 💬Обсъдете с вашия екип, като използвате коментари\n- ⚡ Проследявайте промените в потока от дейности\n- 🚀 Организирайте проекта си",
|
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck е инструмент за организация в стил kanban, насочен към лично планиране и организация на проекти за екипи, интегрирани с Nextcloud.\n\n\n- 📥 Добавете задачите си към карти и ги подредете\n- 📄 Запишете допълнителни бележки в markdown формат\n- Присвояване на етикети за още по-добра организация\n- 👥 Споделете с вашия екип, приятели или семейство\n- 📎Прикачете файлове и ги вградете във вашето описание за маркиране\n- 💬Обсъдете с вашия екип, като използвате коментари\n- ⚡ Проследявайте промените в потока от дейности\n- 🚀 Организирайте проекта си",
|
||||||
|
"Card details" : "Подробности за картата",
|
||||||
"Add board" : "Добави табло",
|
"Add board" : "Добави табло",
|
||||||
"Select the board to link to a project" : "Изберете таблото, което да свържете към проект",
|
"Select the board to link to a project" : "Изберете таблото, което да свържете към проект",
|
||||||
"Search by board title" : "Търсене по заглавие на таблото",
|
"Search by board title" : "Търсене по заглавие на таблото",
|
||||||
"Select board" : "Избор на табло",
|
"Select board" : "Избор на табло",
|
||||||
"Move card to another board" : "Преместване на картата на друго табло",
|
"Create a new card" : "Създаване на нова карта",
|
||||||
"Select a board" : "Избор на табло",
|
"Select a board" : "Избор на табло",
|
||||||
"No lists available" : "Няма налична списъци.",
|
|
||||||
"Select a list" : "Избор на списък",
|
"Select a list" : "Избор на списък",
|
||||||
"Move card" : "Преместване на карта",
|
"Card title" : "Заглавие на карта",
|
||||||
"Cancel" : "Отказ",
|
"Cancel" : "Отказ",
|
||||||
|
"Creating the new card …" : "Създаване на новата карта ...",
|
||||||
|
"Card \"{card}\" was added to \"{board}\"" : "Карта \"{card}\" беше добавена към \"{board}\"",
|
||||||
|
"Open card" : "Отваряне на карта",
|
||||||
|
"Close" : "Затваряне",
|
||||||
|
"Create card" : "Създаване на карта",
|
||||||
"Select a card" : "Избор на карта",
|
"Select a card" : "Избор на карта",
|
||||||
"Select the card to link to a project" : "Изберете картата, която да свържете към проект",
|
"Select the card to link to a project" : "Изберете картата, която да свържете към проект",
|
||||||
"Link to card" : "Връзка към карта",
|
"Link to card" : "Връзка към карта",
|
||||||
@@ -133,7 +132,6 @@
|
|||||||
"Archived cards" : "Архивирани карти",
|
"Archived cards" : "Архивирани карти",
|
||||||
"Add list" : "Добави списък",
|
"Add list" : "Добави списък",
|
||||||
"List name" : "Име на списък",
|
"List name" : "Име на списък",
|
||||||
"Active filters" : "Актижни филтри",
|
|
||||||
"Apply filter" : "Приложи филтър",
|
"Apply filter" : "Приложи филтър",
|
||||||
"Filter by tag" : "Филтрирай по маркер",
|
"Filter by tag" : "Филтрирай по маркер",
|
||||||
"Filter by assigned user" : "Филтриране по назначен потребител",
|
"Filter by assigned user" : "Филтриране по назначен потребител",
|
||||||
@@ -148,39 +146,33 @@
|
|||||||
"Hide archived cards" : "Скриване на архивирани карти",
|
"Hide archived cards" : "Скриване на архивирани карти",
|
||||||
"Show archived cards" : "Показване на архивирани карти",
|
"Show archived cards" : "Показване на архивирани карти",
|
||||||
"Toggle compact mode" : "Превключване на компактен режим",
|
"Toggle compact mode" : "Превключване на компактен режим",
|
||||||
"Open details" : "Отваряне на подробности",
|
|
||||||
"Details" : "Подробности",
|
"Details" : "Подробности",
|
||||||
"Currently present people" : "Хора присъстващи в момента",
|
|
||||||
"Loading board" : "Зареждане на табло",
|
"Loading board" : "Зареждане на табло",
|
||||||
"Board not found" : "Таблото не е намерено",
|
"No lists available" : "Няма налична списъци.",
|
||||||
"Create a new list to add cards to this board" : "Създайте нов списък, за да добавите карти към това табло",
|
"Create a new list to add cards to this board" : "Създайте нов списък, за да добавите карти към това табло",
|
||||||
|
"Board not found" : "Таблото не е намерено",
|
||||||
"Sharing" : "Споделяне",
|
"Sharing" : "Споделяне",
|
||||||
"Tags" : "Етикети",
|
"Tags" : "Етикети",
|
||||||
"Deleted items" : "Изтрити елементи",
|
"Deleted items" : "Изтрити елементи",
|
||||||
"Activity" : "Активност",
|
"Timeline" : "Времева линия",
|
||||||
"Deleted lists" : "Изтрити списъци",
|
"Deleted lists" : "Изтрити списъци",
|
||||||
"Undo" : "Отмяна",
|
"Undo" : "Отмяна",
|
||||||
"Deleted cards" : "Изтрити карти",
|
"Deleted cards" : "Изтрити карти",
|
||||||
|
"Share board with a user, group or circle …" : "Споделяне на таблото с потребител, група или кръг ...",
|
||||||
|
"Searching for users, groups and circles …" : "Търсене за потребители, групи и кръгове ...",
|
||||||
"No participants found" : "Няма намерени участници",
|
"No participants found" : "Няма намерени участници",
|
||||||
"Board owner" : "Собственик на табло",
|
"Board owner" : "Собственик на табло",
|
||||||
"(Group)" : "(Група)",
|
"(Group)" : "(Група)",
|
||||||
|
"(Circle)" : "(Кръг)",
|
||||||
"Can edit" : "Може да редактира",
|
"Can edit" : "Може да редактира",
|
||||||
"Can share" : "Може да споделя",
|
"Can share" : "Може да споделя",
|
||||||
"Can manage" : "Може да управлява",
|
"Can manage" : "Може да управлява",
|
||||||
"Owner" : "Собственик",
|
|
||||||
"Delete" : "Изтриване",
|
"Delete" : "Изтриване",
|
||||||
"Failed to create share with {displayName}" : "Създаването на споделяне с {displayName} не бе успешно",
|
"Failed to create share with {displayName}" : "Създаването на споделяне с {displayName} не бе успешно",
|
||||||
"Are you sure you want to transfer the board {title} to {user}?" : "Сигурни ли сте че искате да прехвърлите таблото {title} на {user}?",
|
"Add a new list" : "Добавяне на нов списък",
|
||||||
"Transfer the board." : "Прехвърлете таблото.",
|
|
||||||
"Transfer" : "Прехвърляне",
|
|
||||||
"The board has been transferred to {user}" : "Таблото беше прехвърлено на {user}",
|
|
||||||
"Failed to transfer the board to {user}" : "Неуспешно прехвърляне на таблото на {user}",
|
|
||||||
"Edit list title" : "Редактиране на заглавието на списъка",
|
|
||||||
"Archive all cards" : "Архивира всички карти",
|
"Archive all cards" : "Архивира всички карти",
|
||||||
"Unarchive all cards" : "Разархивиране на всички карти",
|
|
||||||
"Delete list" : "Изтрива списък",
|
"Delete list" : "Изтрива списък",
|
||||||
"Archive all cards in this list" : "Архивира всички карти в този списък",
|
"Archive all cards in this list" : "Архивира всички карти в този списък",
|
||||||
"Unarchive all cards in this list" : "Разархивиране всички карти в този списък",
|
|
||||||
"Add a new card" : "Добави нова карта",
|
"Add a new card" : "Добави нова карта",
|
||||||
"Card name" : "Име на карта",
|
"Card name" : "Име на карта",
|
||||||
"List deleted" : "Списъкът е изтрит",
|
"List deleted" : "Списъкът е изтрит",
|
||||||
@@ -189,7 +181,6 @@
|
|||||||
"title and color value must be provided" : "трябва да се предоставят заглавие и стойност на цвета",
|
"title and color value must be provided" : "трябва да се предоставят заглавие и стойност на цвета",
|
||||||
"Board name" : "Име на табло",
|
"Board name" : "Име на табло",
|
||||||
"Members" : "Членове",
|
"Members" : "Членове",
|
||||||
"Assign a user to this card…" : "Зачисляване на потребител на тази карта ...",
|
|
||||||
"Upload new files" : "Качи нови файлове",
|
"Upload new files" : "Качи нови файлове",
|
||||||
"Share from Files" : "Споделяне от Файлове",
|
"Share from Files" : "Споделяне от Файлове",
|
||||||
"Pending share" : "Чакащо споделяне",
|
"Pending share" : "Чакащо споделяне",
|
||||||
@@ -210,6 +201,18 @@
|
|||||||
"The title cannot be empty." : "Заглавието не може да бъде празно.",
|
"The title cannot be empty." : "Заглавието не може да бъде празно.",
|
||||||
"No comments yet. Begin the discussion!" : "Все още няма коментари. Започнете дискусията!",
|
"No comments yet. Begin the discussion!" : "Все още няма коментари. Започнете дискусията!",
|
||||||
"Failed to load comments" : "Неуспешно зареждане на коментари",
|
"Failed to load comments" : "Неуспешно зареждане на коментари",
|
||||||
|
"Assign a tag to this card…" : "Присвояване на етикет на тази карта ...",
|
||||||
|
"Assign to users" : "Зачисляване към потребители",
|
||||||
|
"Assign to users/groups/circles" : "Зачисляване към потребители/групи/кръгове",
|
||||||
|
"Assign a user to this card…" : "Зачисляване на потребител на тази карта ...",
|
||||||
|
"Due date" : "Крайна дата",
|
||||||
|
"Set a due date" : "Задаване на крайна дата",
|
||||||
|
"Remove due date" : "Премахни крайната дата",
|
||||||
|
"Select Date" : "Изберете дата",
|
||||||
|
"Today" : "Днес",
|
||||||
|
"Tomorrow" : "Утре",
|
||||||
|
"Next week" : "Следваща седмица",
|
||||||
|
"Next month" : "Следващия месец",
|
||||||
"Save" : "Запазване",
|
"Save" : "Запазване",
|
||||||
"The comment cannot be empty." : "Коментарът не може да бъде празен.",
|
"The comment cannot be empty." : "Коментарът не може да бъде празен.",
|
||||||
"The comment cannot be longer than 1000 characters." : "Коментарът не може да бъде по-дълъг от 1000 знака.",
|
"The comment cannot be longer than 1000 characters." : "Коментарът не може да бъде по-дълъг от 1000 знака.",
|
||||||
@@ -217,7 +220,6 @@
|
|||||||
"Cancel reply" : "Отказ на отговор",
|
"Cancel reply" : "Отказ на отговор",
|
||||||
"Reply" : "Отговори",
|
"Reply" : "Отговори",
|
||||||
"Update" : "Обновяване",
|
"Update" : "Обновяване",
|
||||||
"Created:" : "Създадено:",
|
|
||||||
"Description" : "Описание",
|
"Description" : "Описание",
|
||||||
"(Unsaved)" : " (Незаписан)",
|
"(Unsaved)" : " (Незаписан)",
|
||||||
"(Saving…)" : "(Записване...)",
|
"(Saving…)" : "(Записване...)",
|
||||||
@@ -227,46 +229,29 @@
|
|||||||
"Add Attachment" : "Добавяне на прикачен файл",
|
"Add Attachment" : "Добавяне на прикачен файл",
|
||||||
"Write a description …" : "Напишете описание ...",
|
"Write a description …" : "Напишете описание ...",
|
||||||
"Choose attachment" : "Избор на прикачен файл",
|
"Choose attachment" : "Избор на прикачен файл",
|
||||||
"Set a due date" : "Задаване на крайна дата",
|
|
||||||
"Remove due date" : "Премахни крайната дата",
|
|
||||||
"Completed" : "Завършен",
|
|
||||||
"Not completed" : "Незавършен",
|
|
||||||
"Unarchive card" : "Разархивиране на карта",
|
|
||||||
"Archive card" : "Архивиране на карта",
|
|
||||||
"Select Date" : "Изберете дата",
|
|
||||||
"Assign a tag to this card…" : "Присвояване на етикет на тази карта ...",
|
|
||||||
"(group)" : "(група)",
|
"(group)" : "(група)",
|
||||||
"Todo items" : "Елементи на задача за изпълнение",
|
|
||||||
"{count} comments, {unread} unread" : "{count} коментари, {unread} непрочетени",
|
"{count} comments, {unread} unread" : "{count} коментари, {unread} непрочетени",
|
||||||
"Edit card title" : "Редактиране на заглавието на карта",
|
|
||||||
"Card details" : "Подробности за картата",
|
|
||||||
"Assign to me" : "Зачисляване към мен",
|
"Assign to me" : "Зачисляване към мен",
|
||||||
"Unassign myself" : "Отмяна на зачисляването към мен",
|
"Unassign myself" : "Отмяна на зачисляването към мен",
|
||||||
"Mark as done" : "Маркирай като готово",
|
"Move card" : "Преместване на карта",
|
||||||
|
"Unarchive card" : "Разархивиране на карта",
|
||||||
|
"Archive card" : "Архивиране на карта",
|
||||||
"Delete card" : "Изтриване на карта",
|
"Delete card" : "Изтриване на карта",
|
||||||
|
"Move card to another board" : "Преместване на картата на друго табло",
|
||||||
"Card deleted" : "Картата е изтрита",
|
"Card deleted" : "Картата е изтрита",
|
||||||
"seconds ago" : "преди секунди",
|
"seconds ago" : "преди секунди",
|
||||||
"Keyboard shortcuts" : "Бързи клавиши",
|
|
||||||
"Keyboard shortcut" : "Клавишни комбинации",
|
|
||||||
"Action" : "Действие",
|
|
||||||
"Shift" : "Shift /бутон/",
|
|
||||||
"Ctrl" : "Ctrl /бутон/",
|
|
||||||
"Search" : "Търсене",
|
|
||||||
"Enter" : "Въвеждане",
|
|
||||||
"Space" : "Пространство",
|
|
||||||
"All boards" : "Всички табла",
|
"All boards" : "Всички табла",
|
||||||
"Archived boards" : "Архивирани табла",
|
"Archived boards" : "Архивирани табла",
|
||||||
"Shared with you" : "Споделени с вас",
|
"Shared with you" : "Споделени с вас",
|
||||||
"Deck settings" : "Настройки на платформата",
|
|
||||||
"Use bigger card view" : "Използва по-голям изглед на картата",
|
"Use bigger card view" : "Използва по-голям изглед на картата",
|
||||||
"Show card ID badge" : "Показване на обозначение за самоличност на картата",
|
|
||||||
"Show boards in calendar/tasks" : "Показване на таблата в календар / задачи",
|
"Show boards in calendar/tasks" : "Показване на таблата в календар / задачи",
|
||||||
|
"Limit deck usage of groups" : "Ограничава използването на набора от групи",
|
||||||
|
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Ограничаването на приложението Deck/набор/ ще блокира потребителите, които не са част от тези групи, да създават свои собствени табла. Потребителите все още ще могат да работят на таблата, които са споделени с тях.",
|
||||||
"Board details" : "Подробности за табло",
|
"Board details" : "Подробности за табло",
|
||||||
"Edit board" : "Редактиране на табло",
|
"Edit board" : "Редактиране на табло",
|
||||||
"Clone board" : " Клониране на табло",
|
"Clone board" : " Клониране на табло",
|
||||||
"Unarchive board" : "Разархивиране натабло",
|
"Unarchive board" : "Разархивиране натабло",
|
||||||
"Archive board" : "Архивиране на табло",
|
"Archive board" : "Архивиране на табло",
|
||||||
"Export board" : "Експортиране на табло",
|
|
||||||
"Turn on due date reminders" : "Включва напомнянията за краен срок",
|
"Turn on due date reminders" : "Включва напомнянията за краен срок",
|
||||||
"Turn off due date reminders" : "Изключва напомнянията за краен срок",
|
"Turn off due date reminders" : "Изключва напомнянията за краен срок",
|
||||||
"Due date reminders" : " Напомняния за краен срок",
|
"Due date reminders" : " Напомняния за краен срок",
|
||||||
@@ -278,31 +263,15 @@
|
|||||||
"Only assigned cards" : "Само зачислените карти",
|
"Only assigned cards" : "Само зачислените карти",
|
||||||
"No reminder" : "Няма напомняне",
|
"No reminder" : "Няма напомняне",
|
||||||
"An error occurred" : "Възникна грешка",
|
"An error occurred" : "Възникна грешка",
|
||||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Сигурни ли сте, че искате да изтриете таблото {title}? Това ще изтрие всички данни на това табло, включително архивираните карти.",
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Сигурни ли сте, че искате да изтриете таблото {title}? Това ще изтрие всички данни на това табло.",
|
||||||
"Delete the board?" : "Изтриване на таблото?",
|
"Delete the board?" : "Изтриване на таблото?",
|
||||||
"Loading filtered view" : "Зареждане на филтриран изглед",
|
"Loading filtered view" : "Зареждане на филтриран изглед",
|
||||||
"Today" : "Днес",
|
"This week" : "Тази седмица",
|
||||||
"Tomorrow" : "Утре",
|
|
||||||
"No due" : "Не се дължи",
|
"No due" : "Не се дължи",
|
||||||
"Search for {searchQuery} in all boards" : "Търсене на {searchQuery} във всички табла",
|
"Search for {searchQuery} in all boards" : "Търсене на {searchQuery} във всички табла",
|
||||||
"No results found" : "Няма намерени резултати",
|
"No results found" : "Няма намерени резултати",
|
||||||
"Deck board {name}\n* Last modified on {lastMod}" : "Табло {name}\n* Последна промяна на {lastMod}",
|
|
||||||
"{stack} in {board}" : "{stack} в {board}",
|
|
||||||
"Click to expand description" : "Кликване за разширяване на описанието",
|
|
||||||
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Създаден на {created}\n* Последна промяна на {lastMod} \n* {nbAttachments} прикачени файлове \n* {nbComments} коментара",
|
|
||||||
"{nbCards} cards" : "{nbCards} карти",
|
|
||||||
"Click to expand comment" : "Кликване за разширяване на коментара",
|
|
||||||
"Create a new card" : "Създаване на нова карта",
|
|
||||||
"Card title" : "Заглавие на карта",
|
|
||||||
"Create card" : "Създаване на карта",
|
|
||||||
"Creating the new card …" : "Създаване на новата карта ...",
|
|
||||||
"Card \"{card}\" was added to \"{board}\"" : "Карта \"{card}\" беше добавена към \"{board}\"",
|
|
||||||
"Open card" : "Отваряне на карта",
|
|
||||||
"Close" : "Затваряне",
|
|
||||||
"No upcoming cards" : "Няма предстоящи карти",
|
"No upcoming cards" : "Няма предстоящи карти",
|
||||||
"upcoming cards" : "предстоящи карти",
|
"upcoming cards" : "предстоящи карти",
|
||||||
"New card" : "Нова карта",
|
|
||||||
"Due on {date}" : "Краен срок до {date}",
|
|
||||||
"Link to a board" : "Линк към табло",
|
"Link to a board" : "Линк към табло",
|
||||||
"Link to a card" : "Линк към карта",
|
"Link to a card" : "Линк към карта",
|
||||||
"Create a card" : "Създаване на карта",
|
"Create a card" : "Създаване на карта",
|
||||||
@@ -313,19 +282,6 @@
|
|||||||
"Error creating the share" : "Грешка при създаване на споделяне",
|
"Error creating the share" : "Грешка при създаване на споделяне",
|
||||||
"Share with a Deck card" : "Споделяне с Deck карта",
|
"Share with a Deck card" : "Споделяне с Deck карта",
|
||||||
"Share {file} with a Deck card" : "Споделяне {file} с Deck карта",
|
"Share {file} with a Deck card" : "Споделяне {file} с Deck карта",
|
||||||
"Share" : "Споделяне",
|
"Share" : "Споделяне"
|
||||||
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Описанието на картата</strong> в приложението Deck/набор/ е променено",
|
|
||||||
"Timeline" : "Времева линия",
|
|
||||||
"Share board with a user, group or circle …" : "Споделяне на таблото с потребител, група или кръг ...",
|
|
||||||
"Searching for users, groups and circles …" : "Търсене за потребители, групи и кръгове ...",
|
|
||||||
"(Circle)" : "(Кръг)",
|
|
||||||
"Assign to users" : "Зачисляване към потребители",
|
|
||||||
"Assign to users/groups/circles" : "Зачисляване към потребители/групи/кръгове",
|
|
||||||
"Due date" : "Крайна дата",
|
|
||||||
"Next week" : "Следваща седмица",
|
|
||||||
"Next month" : "Следващия месец",
|
|
||||||
"List is empty" : "Списъкът е празен",
|
|
||||||
"Limit deck usage of groups" : "Ограничава използването на набора от групи",
|
|
||||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Ограничаването на приложението Deck/набор/ ще блокира потребителите, които не са част от тези групи, да създават свои собствени табла. Потребителите все още ще могат да работят на таблата, които са споделени с тях."
|
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
@@ -10,28 +10,19 @@ OC.L10N.register(
|
|||||||
"Details" : "বিসতারিত",
|
"Details" : "বিসতারিত",
|
||||||
"Sharing" : "ভাগাভাগিরত",
|
"Sharing" : "ভাগাভাগিরত",
|
||||||
"Tags" : "ট্যাগ",
|
"Tags" : "ট্যাগ",
|
||||||
"Activity" : "সক্রিয়তা",
|
|
||||||
"Can edit" : "Can edit",
|
"Can edit" : "Can edit",
|
||||||
"Can share" : "Can share",
|
"Can share" : "Can share",
|
||||||
"Owner" : "Owner",
|
|
||||||
"Delete" : "মুছে",
|
"Delete" : "মুছে",
|
||||||
"Edit" : "সম্পাদনা",
|
"Edit" : "সম্পাদনা",
|
||||||
"Download" : "ডাউনলোড",
|
|
||||||
"Modified" : "পরিবর্তিত",
|
"Modified" : "পরিবর্তিত",
|
||||||
|
"Today" : "আজ",
|
||||||
|
"Tomorrow" : "আগামীকাল",
|
||||||
"Save" : "সংরক্ষণ",
|
"Save" : "সংরক্ষণ",
|
||||||
"Reply" : "জবাব",
|
"Reply" : "জবাব",
|
||||||
"Update" : "পরিবর্ধন",
|
"Update" : "পরিবর্ধন",
|
||||||
"Created:" : "তৈরীর নির্ঘন্টঃ",
|
|
||||||
"Description" : "বিবরণ",
|
"Description" : "বিবরণ",
|
||||||
"Completed" : "সুসম্পন্ন",
|
|
||||||
"(group)" : "(গোষ্ঠি)",
|
"(group)" : "(গোষ্ঠি)",
|
||||||
"seconds ago" : "সেকেন্ড পূর্বে",
|
"seconds ago" : "সেকেন্ড পূর্বে",
|
||||||
"Keyboard shortcuts" : "কী-বোর্ড শর্টকাট",
|
"Shared with you" : "Shared with you"
|
||||||
"Search" : "Search",
|
|
||||||
"Shared with you" : "Shared with you",
|
|
||||||
"Today" : "আজ",
|
|
||||||
"Tomorrow" : "আগামীকাল",
|
|
||||||
"Close" : "বন্ধ",
|
|
||||||
"Share" : "ভাগাভাগি কর"
|
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
@@ -8,28 +8,19 @@
|
|||||||
"Details" : "বিসতারিত",
|
"Details" : "বিসতারিত",
|
||||||
"Sharing" : "ভাগাভাগিরত",
|
"Sharing" : "ভাগাভাগিরত",
|
||||||
"Tags" : "ট্যাগ",
|
"Tags" : "ট্যাগ",
|
||||||
"Activity" : "সক্রিয়তা",
|
|
||||||
"Can edit" : "Can edit",
|
"Can edit" : "Can edit",
|
||||||
"Can share" : "Can share",
|
"Can share" : "Can share",
|
||||||
"Owner" : "Owner",
|
|
||||||
"Delete" : "মুছে",
|
"Delete" : "মুছে",
|
||||||
"Edit" : "সম্পাদনা",
|
"Edit" : "সম্পাদনা",
|
||||||
"Download" : "ডাউনলোড",
|
|
||||||
"Modified" : "পরিবর্তিত",
|
"Modified" : "পরিবর্তিত",
|
||||||
|
"Today" : "আজ",
|
||||||
|
"Tomorrow" : "আগামীকাল",
|
||||||
"Save" : "সংরক্ষণ",
|
"Save" : "সংরক্ষণ",
|
||||||
"Reply" : "জবাব",
|
"Reply" : "জবাব",
|
||||||
"Update" : "পরিবর্ধন",
|
"Update" : "পরিবর্ধন",
|
||||||
"Created:" : "তৈরীর নির্ঘন্টঃ",
|
|
||||||
"Description" : "বিবরণ",
|
"Description" : "বিবরণ",
|
||||||
"Completed" : "সুসম্পন্ন",
|
|
||||||
"(group)" : "(গোষ্ঠি)",
|
"(group)" : "(গোষ্ঠি)",
|
||||||
"seconds ago" : "সেকেন্ড পূর্বে",
|
"seconds ago" : "সেকেন্ড পূর্বে",
|
||||||
"Keyboard shortcuts" : "কী-বোর্ড শর্টকাট",
|
"Shared with you" : "Shared with you"
|
||||||
"Search" : "Search",
|
|
||||||
"Shared with you" : "Shared with you",
|
|
||||||
"Today" : "আজ",
|
|
||||||
"Tomorrow" : "আগামীকাল",
|
|
||||||
"Close" : "বন্ধ",
|
|
||||||
"Share" : "ভাগাভাগি কর"
|
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
24
l10n/br.js
@@ -5,44 +5,26 @@ OC.L10N.register(
|
|||||||
"Finished" : "Achuet",
|
"Finished" : "Achuet",
|
||||||
"copy" : "eil",
|
"copy" : "eil",
|
||||||
"Done" : "Graet",
|
"Done" : "Graet",
|
||||||
"The file was uploaded" : "Kaset eo bet ar restr",
|
|
||||||
"No file was uploaded" : "N'eus restr ebet a zo bet kaset",
|
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "Deizat fall, stumm an deizat a zo ret bezhañ BBBB-MM-DD",
|
|
||||||
"Cancel" : "Arrest",
|
"Cancel" : "Arrest",
|
||||||
"Drop your files to upload" : "Laoskit ho restroù evit pellkas",
|
"Drop your files to upload" : "Laoskit ho restroù evit pellkas",
|
||||||
"Details" : "Munudoù",
|
"Details" : "Munudoù",
|
||||||
"Sharing" : "Rannan",
|
"Sharing" : "Rannan",
|
||||||
"Tags" : "Klavioù",
|
"Tags" : "Klavioù",
|
||||||
"Activity" : "Obererezh",
|
|
||||||
"Can edit" : "Posuple eo embann",
|
"Can edit" : "Posuple eo embann",
|
||||||
"Can share" : "Galout a ra rannañ",
|
"Can share" : "Galout a ra rannañ",
|
||||||
"Owner" : "Perc'henner",
|
|
||||||
"Delete" : "Dilemel",
|
"Delete" : "Dilemel",
|
||||||
"Transfer" : "Treuzkas",
|
|
||||||
"Edit" : "Cheñch",
|
"Edit" : "Cheñch",
|
||||||
"Upload new files" : "Pelkas ur restr nevez",
|
|
||||||
"Share from Files" : "Rannañ diouzh Restroù",
|
|
||||||
"Download" : "Pellgargañ",
|
|
||||||
"File to share" : "Restr da rannañ",
|
|
||||||
"Invalid path selected" : "An hent dibabet n'eus ket anezhañ",
|
|
||||||
"Comments" : "Displegadennoù",
|
"Comments" : "Displegadennoù",
|
||||||
"Modified" : "Cheñchet",
|
"Modified" : "Cheñchet",
|
||||||
|
"Today" : "Hiziv",
|
||||||
|
"Tomorrow" : "Warc'hoaz",
|
||||||
"Save" : "Enrollañ",
|
"Save" : "Enrollañ",
|
||||||
"Reply" : "Respont",
|
"Reply" : "Respont",
|
||||||
"Update" : "Adnevesaat",
|
"Update" : "Adnevesaat",
|
||||||
"Created:" : "Krouet :",
|
|
||||||
"Description" : "Diskrivadur",
|
"Description" : "Diskrivadur",
|
||||||
"Completed" : "Achuet",
|
|
||||||
"(group)" : "(strollad)",
|
"(group)" : "(strollad)",
|
||||||
"seconds ago" : "eilenn zo",
|
"seconds ago" : "eilenn zo",
|
||||||
"Search" : "Klask",
|
|
||||||
"Shared with you" : "Rannet ganeoc'h",
|
"Shared with you" : "Rannet ganeoc'h",
|
||||||
"No notifications" : "Kemenaden ebet",
|
"This week" : "Er sizhun-mañ"
|
||||||
"Today" : "Hiziv",
|
|
||||||
"Tomorrow" : "Warc'hoaz",
|
|
||||||
"Close" : "Seriñ",
|
|
||||||
"Share" : "Rannan",
|
|
||||||
"Next week" : "Sizhun a zeu",
|
|
||||||
"Next month" : "Miz a zeu"
|
|
||||||
},
|
},
|
||||||
"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);");
|
"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);");
|
||||||
|
|||||||
24
l10n/br.json
@@ -3,44 +3,26 @@
|
|||||||
"Finished" : "Achuet",
|
"Finished" : "Achuet",
|
||||||
"copy" : "eil",
|
"copy" : "eil",
|
||||||
"Done" : "Graet",
|
"Done" : "Graet",
|
||||||
"The file was uploaded" : "Kaset eo bet ar restr",
|
|
||||||
"No file was uploaded" : "N'eus restr ebet a zo bet kaset",
|
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "Deizat fall, stumm an deizat a zo ret bezhañ BBBB-MM-DD",
|
|
||||||
"Cancel" : "Arrest",
|
"Cancel" : "Arrest",
|
||||||
"Drop your files to upload" : "Laoskit ho restroù evit pellkas",
|
"Drop your files to upload" : "Laoskit ho restroù evit pellkas",
|
||||||
"Details" : "Munudoù",
|
"Details" : "Munudoù",
|
||||||
"Sharing" : "Rannan",
|
"Sharing" : "Rannan",
|
||||||
"Tags" : "Klavioù",
|
"Tags" : "Klavioù",
|
||||||
"Activity" : "Obererezh",
|
|
||||||
"Can edit" : "Posuple eo embann",
|
"Can edit" : "Posuple eo embann",
|
||||||
"Can share" : "Galout a ra rannañ",
|
"Can share" : "Galout a ra rannañ",
|
||||||
"Owner" : "Perc'henner",
|
|
||||||
"Delete" : "Dilemel",
|
"Delete" : "Dilemel",
|
||||||
"Transfer" : "Treuzkas",
|
|
||||||
"Edit" : "Cheñch",
|
"Edit" : "Cheñch",
|
||||||
"Upload new files" : "Pelkas ur restr nevez",
|
|
||||||
"Share from Files" : "Rannañ diouzh Restroù",
|
|
||||||
"Download" : "Pellgargañ",
|
|
||||||
"File to share" : "Restr da rannañ",
|
|
||||||
"Invalid path selected" : "An hent dibabet n'eus ket anezhañ",
|
|
||||||
"Comments" : "Displegadennoù",
|
"Comments" : "Displegadennoù",
|
||||||
"Modified" : "Cheñchet",
|
"Modified" : "Cheñchet",
|
||||||
|
"Today" : "Hiziv",
|
||||||
|
"Tomorrow" : "Warc'hoaz",
|
||||||
"Save" : "Enrollañ",
|
"Save" : "Enrollañ",
|
||||||
"Reply" : "Respont",
|
"Reply" : "Respont",
|
||||||
"Update" : "Adnevesaat",
|
"Update" : "Adnevesaat",
|
||||||
"Created:" : "Krouet :",
|
|
||||||
"Description" : "Diskrivadur",
|
"Description" : "Diskrivadur",
|
||||||
"Completed" : "Achuet",
|
|
||||||
"(group)" : "(strollad)",
|
"(group)" : "(strollad)",
|
||||||
"seconds ago" : "eilenn zo",
|
"seconds ago" : "eilenn zo",
|
||||||
"Search" : "Klask",
|
|
||||||
"Shared with you" : "Rannet ganeoc'h",
|
"Shared with you" : "Rannet ganeoc'h",
|
||||||
"No notifications" : "Kemenaden ebet",
|
"This week" : "Er sizhun-mañ"
|
||||||
"Today" : "Hiziv",
|
|
||||||
"Tomorrow" : "Warc'hoaz",
|
|
||||||
"Close" : "Seriñ",
|
|
||||||
"Share" : "Rannan",
|
|
||||||
"Next week" : "Sizhun a zeu",
|
|
||||||
"Next month" : "Miz a zeu"
|
|
||||||
},"pluralForm" :"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"
|
},"pluralForm" :"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"
|
||||||
}
|
}
|
||||||
14
l10n/bs.js
@@ -8,27 +8,19 @@ OC.L10N.register(
|
|||||||
"Missing a temporary folder" : "Nedostaje privremeni direktorij.",
|
"Missing a temporary folder" : "Nedostaje privremeni direktorij.",
|
||||||
"Cancel" : "Otkaži",
|
"Cancel" : "Otkaži",
|
||||||
"Sharing" : "Dijeljenje",
|
"Sharing" : "Dijeljenje",
|
||||||
"Activity" : "Aktivnost",
|
|
||||||
"Can edit" : "Can edit",
|
"Can edit" : "Can edit",
|
||||||
"Can share" : "Can share",
|
"Can share" : "Can share",
|
||||||
"Owner" : "Vlasnik",
|
|
||||||
"Delete" : "Obriši",
|
"Delete" : "Obriši",
|
||||||
"Edit" : "Izmjeni",
|
"Edit" : "Izmjeni",
|
||||||
"Members" : "Članovi",
|
"Members" : "Članovi",
|
||||||
"Download" : "Preuzmi",
|
|
||||||
"Comments" : "Komentari",
|
"Comments" : "Komentari",
|
||||||
"Modified" : "Izmijenjeno",
|
"Modified" : "Izmijenjeno",
|
||||||
|
"Today" : "Danas",
|
||||||
|
"Tomorrow" : "Sutra",
|
||||||
"Save" : "Spremi",
|
"Save" : "Spremi",
|
||||||
"Update" : "Ažuriraj",
|
"Update" : "Ažuriraj",
|
||||||
"Description" : "Opis",
|
"Description" : "Opis",
|
||||||
"Completed" : "Zavrženo",
|
|
||||||
"Keyboard shortcuts" : "Tipkovni prečaci",
|
|
||||||
"Search" : "Search",
|
|
||||||
"Shared with you" : "Shared with you",
|
"Shared with you" : "Shared with you",
|
||||||
"Today" : "Danas",
|
"Maximum file size of {size} exceeded" : "Maksimalna veličina datoteke prekoračena"
|
||||||
"Tomorrow" : "Sutra",
|
|
||||||
"Close" : "Zatvori",
|
|
||||||
"Maximum file size of {size} exceeded" : "Maksimalna veličina datoteke prekoračena",
|
|
||||||
"Share" : "Podjeli"
|
|
||||||
},
|
},
|
||||||
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
|
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
|
||||||
|
|||||||
14
l10n/bs.json
@@ -6,27 +6,19 @@
|
|||||||
"Missing a temporary folder" : "Nedostaje privremeni direktorij.",
|
"Missing a temporary folder" : "Nedostaje privremeni direktorij.",
|
||||||
"Cancel" : "Otkaži",
|
"Cancel" : "Otkaži",
|
||||||
"Sharing" : "Dijeljenje",
|
"Sharing" : "Dijeljenje",
|
||||||
"Activity" : "Aktivnost",
|
|
||||||
"Can edit" : "Can edit",
|
"Can edit" : "Can edit",
|
||||||
"Can share" : "Can share",
|
"Can share" : "Can share",
|
||||||
"Owner" : "Vlasnik",
|
|
||||||
"Delete" : "Obriši",
|
"Delete" : "Obriši",
|
||||||
"Edit" : "Izmjeni",
|
"Edit" : "Izmjeni",
|
||||||
"Members" : "Članovi",
|
"Members" : "Članovi",
|
||||||
"Download" : "Preuzmi",
|
|
||||||
"Comments" : "Komentari",
|
"Comments" : "Komentari",
|
||||||
"Modified" : "Izmijenjeno",
|
"Modified" : "Izmijenjeno",
|
||||||
|
"Today" : "Danas",
|
||||||
|
"Tomorrow" : "Sutra",
|
||||||
"Save" : "Spremi",
|
"Save" : "Spremi",
|
||||||
"Update" : "Ažuriraj",
|
"Update" : "Ažuriraj",
|
||||||
"Description" : "Opis",
|
"Description" : "Opis",
|
||||||
"Completed" : "Zavrženo",
|
|
||||||
"Keyboard shortcuts" : "Tipkovni prečaci",
|
|
||||||
"Search" : "Search",
|
|
||||||
"Shared with you" : "Shared with you",
|
"Shared with you" : "Shared with you",
|
||||||
"Today" : "Danas",
|
"Maximum file size of {size} exceeded" : "Maksimalna veličina datoteke prekoračena"
|
||||||
"Tomorrow" : "Sutra",
|
|
||||||
"Close" : "Zatvori",
|
|
||||||
"Maximum file size of {size} exceeded" : "Maksimalna veličina datoteke prekoračena",
|
|
||||||
"Share" : "Podjeli"
|
|
||||||
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
|
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
|
||||||
}
|
}
|
||||||
213
l10n/ca.js
@@ -29,7 +29,7 @@ OC.L10N.register(
|
|||||||
"{user} has deleted card {card} in list {stack} on board {board}" : "{user} ha suprimit la targeta {card} a la llista {stack} al tauler {board}",
|
"{user} has deleted card {card} in list {stack} on board {board}" : "{user} ha suprimit la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
"You have renamed the card {before} to {card}" : "Heu reanomenat la targeta {before} a {card}",
|
"You have renamed the card {before} to {card}" : "Heu reanomenat la targeta {before} a {card}",
|
||||||
"{user} has renamed the card {before} to {card}" : "{user} ha reanomenat la targeta {before} a {card}",
|
"{user} has renamed the card {before} to {card}" : "{user} ha reanomenat la targeta {before} a {card}",
|
||||||
"You have added a description to card {card} in list {stack} on board {board}" : "Heu afegit una descripció a la targeta {card} a la llista {stack} del tauler {board}",
|
"You have added a description to card {card} in list {stack} on board {board}" : "Heu afegit una descripció a la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} ha afegit una descripció a la targeta {card} a la llista {stack} al tauler {board}",
|
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} ha afegit una descripció a la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
"You have updated the description of card {card} in list {stack} on board {board}" : "Heu actualitzat la descripció de la targeta {card} a la llista {stack} al tauler {board}",
|
"You have updated the description of card {card} in list {stack} on board {board}" : "Heu actualitzat la descripció de la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
"{user} has updated the description of the card {card} in list {stack} on board {board}" : "{user} ha actualitzat la descripció de la targeta {card} a la llista {stack} al tauler {board}",
|
"{user} has updated the description of the card {card} in list {stack} on board {board}" : "{user} ha actualitzat la descripció de la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
@@ -37,16 +37,12 @@ OC.L10N.register(
|
|||||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user} té la targeta arxivada {card} a la llista {stack} al tauler {board}",
|
"{user} has archived card {card} in list {stack} on board {board}" : "{user} té la targeta arxivada {card} a la llista {stack} al tauler {board}",
|
||||||
"You have unarchived card {card} in list {stack} on board {board}" : "Teniu una targeta no-arxchivada {card} a la llista {stack} al tauler {board}",
|
"You have unarchived card {card} in list {stack} on board {board}" : "Teniu una targeta no-arxchivada {card} a la llista {stack} al tauler {board}",
|
||||||
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} té una targeta no-arxivada {card} a la llista {stack} al tauler {board}",
|
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} té una targeta no-arxivada {card} a la llista {stack} al tauler {board}",
|
||||||
"You have marked the card {card} as done in list {stack} on board {board}" : "Heu marcat la targeta {card} com a feta a la llista {stack} del tauler {board}",
|
"You have removed the due date of card {card}" : "Heu suprimit la data de venciment de la targeta {targeta}",
|
||||||
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} ha marcat la targeta {card} com a feta a la llista {stack} del tauler {board}",
|
"{user} has removed the due date of card {card}" : "{user} ha suprimit la data de venciment de la targeta {targeta}",
|
||||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "Heu marcat la targeta {card} com a desfeta a la llista {stack} del tauler {board}",
|
"You have set the due date of card {card} to {after}" : "Heu establert la data de venciment de la targeta {card} a {after}",
|
||||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} ha marcat la targeta {card} com a desfeta a la llista {stack} del tauler {board}",
|
"{user} has set the due date of card {card} to {after}" : "{user} ha establert la data de venciment de la targeta {card} a {after}",
|
||||||
"You have removed the due date of card {card}" : "Heu suprimit la data de caducitat de la targeta {card}",
|
"You have updated the due date of card {card} to {after}" : "Heu actualitzat la data de venciment de la targeta {card} a {after}",
|
||||||
"{user} has removed the due date of card {card}" : "{user} ha suprimit la data de caducitat de la targeta {card}",
|
"{user} has updated the due date of card {card} to {after}" : "{user} ha actualitzat la data de venciment de la targeta {card} a {after}",
|
||||||
"You have set the due date of card {card} to {after}" : "Heu establert la data de caducitat de la targeta {card} a {after}",
|
|
||||||
"{user} has set the due date of card {card} to {after}" : "{user} ha establert la data de caducitat de la targeta {card} a {after}",
|
|
||||||
"You have updated the due date of card {card} to {after}" : "Heu actualitzat la data de caducitat de la targeta {card} a {after}",
|
|
||||||
"{user} has updated the due date of card {card} to {after}" : "{user} ha actualitzat la data de caducitat de la targeta {card} a {after}",
|
|
||||||
"You have added the tag {label} to card {card} in list {stack} on board {board}" : "Heu afegit l'etiqueta {label} a la targeta {card} a la llista {stack} al tauler {board}",
|
"You have added the tag {label} to card {card} in list {stack} on board {board}" : "Heu afegit l'etiqueta {label} a la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
"{user} has added the tag {label} to card {card} in list {stack} on board {board}" : "{user} ha afegit l'etiqueta {label} a la targeta {card} a la llista {stack} al tauler {board}",
|
"{user} has added the tag {label} to card {card} in list {stack} on board {board}" : "{user} ha afegit l'etiqueta {label} a la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
"You have removed the tag {label} from card {card} in list {stack} on board {board}" : "Heu eliminat l'etiqueta {label} de la targeta {card} a la llista {stack} al tauler {board}",
|
"You have removed the tag {label} from card {card} in list {stack} on board {board}" : "Heu eliminat l'etiqueta {label} de la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
@@ -67,32 +63,22 @@ OC.L10N.register(
|
|||||||
"{user} has restored the attachment {attachment} to card {card}" : "{user} ha restaurat l'adjunt {attachment} a la targeta {card}",
|
"{user} has restored the attachment {attachment} to card {card}" : "{user} ha restaurat l'adjunt {attachment} a la targeta {card}",
|
||||||
"You have commented on card {card}" : "Heu comentat la targeta {card}",
|
"You have commented on card {card}" : "Heu comentat la targeta {card}",
|
||||||
"{user} has commented on card {card}" : "{user} ha comentat la targeta {card}",
|
"{user} has commented on card {card}" : "{user} ha comentat la targeta {card}",
|
||||||
|
"A <strong>card description</strong> inside the Deck app has been changed" : "S'ha canviat una <strong>descripció de targeta</strong> a l'aplicació Tauler",
|
||||||
"Deck" : "Targetes",
|
"Deck" : "Targetes",
|
||||||
"Changes in the <strong>Deck app</strong>" : "Canvis a l'<strong>aplicació Targetes</strong>",
|
"Changes in the <strong>Deck app</strong>" : "Canvis a l'<strong>aplicació Targetes</strong>",
|
||||||
"A <strong>board, list or card</strong> was changed" : "S'ha canviat un <strong>tauler, llista o targeta</strong>",
|
"A <strong>comment</strong> was created on a card" : "S'ha afegit un <strong>comentari</strong> a una targeta",
|
||||||
"A <strong>comment</strong> was created on a card" : "S'ha creat un <strong>comentari</strong> a una targeta",
|
|
||||||
"A <strong>card description</strong> has been changed" : "S'ha canviat la <strong>descripció de la targeta</strong>",
|
|
||||||
"Cards due today" : "Targetes per avui",
|
|
||||||
"Cards due tomorrow" : "Targetes amb venciment demà",
|
|
||||||
"Upcoming cards" : "Pròximes targetes",
|
"Upcoming cards" : "Pròximes targetes",
|
||||||
"Load more" : "Carrega'n més",
|
|
||||||
"Personal" : "Personal",
|
"Personal" : "Personal",
|
||||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "La targeta \"%s\" sobre \"%s\" se us ha assignat per %s.",
|
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "La targeta \"%s\" sobre \"%s\" se us ha assignat per %s.",
|
||||||
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} us ha assignat la targeta {deck-card} a {deck-board}.",
|
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} us ha assignat la targeta {deck-card} a {deck-board}.",
|
||||||
"The card \"%s\" on \"%s\" has reached its due date." : "La targeta \"%s\" sobre \"%s\" ha assolit la seva data de caducitat.",
|
"The card \"%s\" on \"%s\" has reached its due date." : "La targeta \"%s\" sobre \"%s\" ha assolit la seva data de venciment.",
|
||||||
"The card {deck-card} on {deck-board} has reached its due date." : "La targeta {deck-card} a {deck-board} ha assolit la seva data de caducitat.",
|
"The card {deck-card} on {deck-board} has reached its due date." : "La targeta {deck-card} a {deck-board} ha assolit la seva data de caducitat.",
|
||||||
"%s has mentioned you in a comment on \"%s\"." : "%s us ha anomenat en un comentari sobre \"%s\".",
|
"%s has mentioned you in a comment on \"%s\"." : "%s us ha anomenat en un comentari sobre \"%s\".",
|
||||||
"{user} has mentioned you in a comment on {deck-card}." : "{user} us ha mencionat en un comentari a {deck-card}.",
|
"{user} has mentioned you in a comment on {deck-card}." : "{user} us ha mencionat en un comentari a {deck-card}.",
|
||||||
"The board \"%s\" has been shared with you by %s." : "El tauler \"%s\" se us ha compartit per %s.",
|
"The board \"%s\" has been shared with you by %s." : "El tauler \"%s\" se us ha compartit per %s.",
|
||||||
"{user} has shared {deck-board} with you." : "{user} us ha compartit {deck-board}.",
|
"{user} has shared {deck-board} with you." : "{user} us ha compartit {board}.",
|
||||||
"Deck board" : "Tauler de Deck",
|
|
||||||
"Owned by %1$s" : "Propietat de %1$s",
|
|
||||||
"Deck boards, cards and comments" : "Taulers, targetes i comentaris",
|
|
||||||
"From %1$s, in %2$s/%3$s, owned by %4$s" : "De %1$s, a %2$s/%3$s, propietat de %4$s",
|
|
||||||
"Create a new deck card" : "Crea una nova targeta",
|
|
||||||
"Card comments" : "Comentaris de la targeta",
|
"Card comments" : "Comentaris de la targeta",
|
||||||
"%s on %s" : "%s a %s",
|
"%s on %s" : "%s a %s",
|
||||||
"Deck boards and cards" : "Taulers de piles i targetes",
|
|
||||||
"No data was provided to create an attachment." : "No s’ha proporcionat cap dada per crear un fitxer adjunt.",
|
"No data was provided to create an attachment." : "No s’ha proporcionat cap dada per crear un fitxer adjunt.",
|
||||||
"Finished" : "Acabat",
|
"Finished" : "Acabat",
|
||||||
"To review" : "Per revisar",
|
"To review" : "Per revisar",
|
||||||
@@ -101,7 +87,7 @@ OC.L10N.register(
|
|||||||
"copy" : "còpia",
|
"copy" : "còpia",
|
||||||
"To do" : "Pendent",
|
"To do" : "Pendent",
|
||||||
"Doing" : "En procés",
|
"Doing" : "En procés",
|
||||||
"Done" : "Fet",
|
"Done" : "Finalitzat",
|
||||||
"Example Task 3" : "Tasca d'exemple 3",
|
"Example Task 3" : "Tasca d'exemple 3",
|
||||||
"Example Task 2" : "Tasca d'exemple 2",
|
"Example Task 2" : "Tasca d'exemple 2",
|
||||||
"Example Task 1" : "Tasca d'exemple 1",
|
"Example Task 1" : "Tasca d'exemple 1",
|
||||||
@@ -112,24 +98,28 @@ OC.L10N.register(
|
|||||||
"No file was uploaded" : "No s'ha pujat cap fitxer",
|
"No file was uploaded" : "No s'ha pujat cap fitxer",
|
||||||
"Missing a temporary folder" : "Falta una carpeta temporal",
|
"Missing a temporary folder" : "Falta una carpeta temporal",
|
||||||
"Could not write file to disk" : "No s’ha pogut escriure el fitxer al disc",
|
"Could not write file to disk" : "No s’ha pogut escriure el fitxer al disc",
|
||||||
"A PHP extension stopped the file upload" : "Una extensió del PHP ha aturat la pujada del fitxer",
|
"A PHP extension stopped the file upload" : "Una extensió del PHP ha aturat la carregada del fitxer",
|
||||||
"No file uploaded or file size exceeds maximum of %s" : "No s'ha carregat cap fitxer o la mida del fitxer sobrepassa el màxim de %s",
|
"No file uploaded or file size exceeds maximum of %s" : "No s'ha carregat cap fitxer o la mida del fitxer sobrepassa el màxim de %s",
|
||||||
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Aquest comentari té més de %s caràcters.\nS'ha afegit com a fitxer adjunt a la targeta amb el nom %s.\nAccessible a l'URL: %s.",
|
|
||||||
"Card not found" : "No s'ha trobat la targeta",
|
"Card not found" : "No s'ha trobat la targeta",
|
||||||
"Path is already shared with this card" : "Aquesta ruta ja ha estat compartida amb aquesta targeta",
|
"Path is already shared with this card" : "Aquesta ruta ja ha estat compartida amb aquesta targeta",
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "La data no és vàlida, el format de la data ha de ser YYYY-MM-DD",
|
"Invalid date, date format must be YYYY-MM-DD" : "La data no és vàlida, el format de la data ha de ser YYYY-MM-DD",
|
||||||
"Personal planning and team project organization" : "Planificació personal i organització de projectes en equip",
|
"Personal planning and team project organization" : "Planificació personal i organització de projectes en equip",
|
||||||
"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" : "Tauler és una eina d'organització a l'estil kanban dirigida a la planificació personal i a l'organització de projectes per equips integrada a Nextcloud.\n\n\n- 📥 Afegiu les tasques en targetes i poseu-les en ordre\n- 📄 Apunteu notes addicionals en format Markdown\n- 🔖 Assigneu etiquetes per una millor organització\n- 👥 Compartiu amb el vostre equip, família o amics\n- 📎 Adjunteu fitxers i encasteu-los en la descripció en markdown\n- 💬 Converses amb el vostre equip fent servir comentaris\n- ⚡ Mantingueu el seguiment de canvis al flux d'activitat\n- 🚀 Tingueu el vostre projecte organitzat",
|
"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" : "Tauler és una eina d'organització a l'estil kanban dirigida a la planificació personal i a l'organització de projectes per equips integrada a Nextcloud.\n\n\n- 📥 Afegiu les tasques en targetes i poseu-les en ordre\n- 📄 Apunteu notes addicionals en markdown\n- 🔖 Assigneu etiquetes per una organització encara millor\n- 👥 Compartiu amb el vostre equip, família o amics\n- 📎 Adjunteu fitxers i encasteu-los en la descripció en markdown\n- 💬 Debateu amb el vostre equip fent servir comentaris\n- ⚡ Mantingueu el seguiment de canvis al flux d'activitat\n- 🚀 Tingueu el vostre projecte organitzat",
|
||||||
|
"Card details" : "Detalls de la targeta",
|
||||||
"Add board" : "Afegeix un tauler",
|
"Add board" : "Afegeix un tauler",
|
||||||
"Select the board to link to a project" : "Selecciona el tauler per enllaçar a un projecte",
|
"Select the board to link to a project" : "Selecciona el tauler per enllaçar a un projecte",
|
||||||
"Search by board title" : "Cerca per títol del tauler",
|
"Search by board title" : "Cerca per títol del tauler",
|
||||||
"Select board" : "Selecciona un tauler",
|
"Select board" : "Selecciona un tauler",
|
||||||
"Move card to another board" : "Mou la targeta a un altre tauler",
|
"Create a new card" : "Crea una nova targeta",
|
||||||
"Select a board" : "Selecciona un tauler",
|
"Select a board" : "Selecciona un tauler",
|
||||||
"No lists available" : "No hi ha cap llista disponible",
|
|
||||||
"Select a list" : "Seleccioneu una llista",
|
"Select a list" : "Seleccioneu una llista",
|
||||||
"Move card" : "Mou la targeta",
|
"Card title" : "Títol de la targeta",
|
||||||
"Cancel" : "Cancel·la",
|
"Cancel" : "Cancel·la",
|
||||||
|
"Creating the new card …" : "Creant la nova targeta",
|
||||||
|
"Card \"{card}\" was added to \"{board}\"" : "La targeta \"{card}\" s'ha afegit a \"{board}\"",
|
||||||
|
"Open card" : "Obre la targeta",
|
||||||
|
"Close" : "Tanca",
|
||||||
|
"Create card" : "Crea una targeta",
|
||||||
"Select a card" : "Selecciona una targeta",
|
"Select a card" : "Selecciona una targeta",
|
||||||
"Select the card to link to a project" : "Selecciona la targeta per enllaçar a un projecte",
|
"Select the card to link to a project" : "Selecciona la targeta per enllaçar a un projecte",
|
||||||
"Link to card" : "Enllaç a la targeta",
|
"Link to card" : "Enllaç a la targeta",
|
||||||
@@ -139,12 +129,11 @@ OC.L10N.register(
|
|||||||
"Overwrite file" : "Sobreescriu el fitxer",
|
"Overwrite file" : "Sobreescriu el fitxer",
|
||||||
"Keep existing file" : "Mantén el fitxer existent",
|
"Keep existing file" : "Mantén el fitxer existent",
|
||||||
"This board is read only" : "Aquest tauler és només de lectura",
|
"This board is read only" : "Aquest tauler és només de lectura",
|
||||||
"Drop your files to upload" : "Deixeu anar els fitxers per pujar-los",
|
"Drop your files to upload" : "Deixeu anar els fitxers per penjar-los",
|
||||||
"Add card" : "Afegeix una targeta",
|
"Add card" : "Afegeix una targeta",
|
||||||
"Archived cards" : "Targetes arxivades",
|
"Archived cards" : "Targetes arxivades",
|
||||||
"Add list" : "Afegeix una llista",
|
"Add list" : "Afegeix una llista",
|
||||||
"List name" : "Nom de la llista",
|
"List name" : "Nom de la llista",
|
||||||
"Active filters" : "Filtres actius",
|
|
||||||
"Apply filter" : "Aplica el filtre",
|
"Apply filter" : "Aplica el filtre",
|
||||||
"Filter by tag" : "Filtra per etiqueta",
|
"Filter by tag" : "Filtra per etiqueta",
|
||||||
"Filter by assigned user" : "Filtra per usuari assignat",
|
"Filter by assigned user" : "Filtra per usuari assignat",
|
||||||
@@ -156,75 +145,75 @@ OC.L10N.register(
|
|||||||
"Next 30 days" : "Pròxims 30 dies",
|
"Next 30 days" : "Pròxims 30 dies",
|
||||||
"No due date" : "Sense venciment",
|
"No due date" : "Sense venciment",
|
||||||
"Clear filter" : "Esborra el filtre",
|
"Clear filter" : "Esborra el filtre",
|
||||||
"View Modes" : "Modes de visualització",
|
|
||||||
"Toggle View Modes" : "Commuta els modes de visualització",
|
|
||||||
"Hide archived cards" : "Amaga les targetes arxivades",
|
"Hide archived cards" : "Amaga les targetes arxivades",
|
||||||
"Show archived cards" : "Mostra les targetes arxivades",
|
"Show archived cards" : "Mostra les targetes arxivades",
|
||||||
"Toggle compact mode" : "Commuta el mode compacte",
|
"Toggle compact mode" : "Commuta el mode compacte",
|
||||||
"Hide card cover images" : "Amaga les imatges de la portada de la targeta",
|
|
||||||
"Show card cover images" : "Mostra les imatges de la portada de la targeta",
|
|
||||||
"Open details" : "Obre els detalls",
|
|
||||||
"Details" : "Detalls",
|
"Details" : "Detalls",
|
||||||
"Currently present people" : "Persones presents actuals",
|
|
||||||
"Loading board" : "S'està carregant el tauler",
|
"Loading board" : "S'està carregant el tauler",
|
||||||
"Board not found" : "Tauler no trobat",
|
"No lists available" : "No hi ha cap llista disponible",
|
||||||
"Create a new list to add cards to this board" : "Crea una llista nova per afegir targetes a aquest tauler",
|
"Create a new list to add cards to this board" : "Crea una llista nova per afegir targetes a aquest tauler",
|
||||||
|
"Board not found" : "Tauler no trobat",
|
||||||
"Sharing" : "Compartició",
|
"Sharing" : "Compartició",
|
||||||
"Tags" : "Etiquetes",
|
"Tags" : "Etiquetes",
|
||||||
"Deleted items" : "Elements suprimits",
|
"Deleted items" : "Elements suprimits",
|
||||||
"Activity" : "Activitat",
|
"Timeline" : "Línia de temps",
|
||||||
"Deleted lists" : "Llistes suprimides",
|
"Deleted lists" : "Llistes suprimides",
|
||||||
"Undo" : "Desfés",
|
"Undo" : "Desfés",
|
||||||
"Deleted cards" : "Targetes suprimides",
|
"Deleted cards" : "Targetes suprimides",
|
||||||
|
"Share board with a user, group or circle …" : "Compartir tauler amb un usuari, grup o cercle …",
|
||||||
|
"Searching for users, groups and circles …" : "Buscant usuaris, grups i cercles",
|
||||||
"No participants found" : "No s'han trobat participants",
|
"No participants found" : "No s'han trobat participants",
|
||||||
"Board owner" : "Propietari del tauler",
|
"Board owner" : "Propietari del tauler",
|
||||||
"(Group)" : "(Grup)",
|
"(Group)" : "(Grup)",
|
||||||
|
"(Circle)" : "(Cercle)",
|
||||||
"Can edit" : "Pot editar",
|
"Can edit" : "Pot editar",
|
||||||
"Can share" : "Pot compartir",
|
"Can share" : "Pot compartir",
|
||||||
"Can manage" : "Pot gestionar",
|
"Can manage" : "Pot gestionar",
|
||||||
"Owner" : "Propietari",
|
"Delete" : "Eliminar",
|
||||||
"Delete" : "Suprimeix",
|
|
||||||
"Failed to create share with {displayName}" : "Ha fallat la creació de la compartició amb {displayName}",
|
"Failed to create share with {displayName}" : "Ha fallat la creació de la compartició amb {displayName}",
|
||||||
"Are you sure you want to transfer the board {title} to {user}?" : "Esteu segur que voleu transferir el tauler {title} a {user}?",
|
"Add a new list" : "Afegir una llista nova",
|
||||||
"Transfer the board." : "Transfereix el tauler.",
|
|
||||||
"Transfer" : "Transferència",
|
|
||||||
"The board has been transferred to {user}" : "El tauler s'ha transferit a {user}",
|
|
||||||
"Failed to transfer the board to {user}" : "No s'ha pogut transferir el tauler a {user}",
|
|
||||||
"Edit list title" : "Edició del títol de la llista",
|
|
||||||
"Archive all cards" : "Arxiva totes les targetes",
|
"Archive all cards" : "Arxiva totes les targetes",
|
||||||
"Unarchive all cards" : "Desarxivar totes les targetes",
|
|
||||||
"Delete list" : "Suprimeix la llista",
|
"Delete list" : "Suprimeix la llista",
|
||||||
"Archive all cards in this list" : "Arxiva totes les targetes d'aquesta llista",
|
"Archive all cards in this list" : "Arxiva totes les targetes d'aquesta llista",
|
||||||
"Unarchive all cards in this list" : "Desarxivar totes les targetes d'aquesta llista",
|
"Add a new card" : "Afegir una nova targeta",
|
||||||
"Add a new card" : "Afegeix una nova targeta",
|
|
||||||
"Card name" : "Nom de la targeta",
|
"Card name" : "Nom de la targeta",
|
||||||
"List deleted" : "Llista suprimida",
|
"List deleted" : "Llista suprimida",
|
||||||
"Edit" : "Edició",
|
"Edit" : "Edita",
|
||||||
"Add a new tag" : "Afegeix una etiqueta nova",
|
"Add a new tag" : "Afegir una etiqueta nova",
|
||||||
"title and color value must be provided" : "s’ha de proporcionar el valor del títol i del color",
|
"title and color value must be provided" : "s’ha de proporcionar el valor del títol i del color",
|
||||||
"Board name" : "Nom del taulell",
|
"Board name" : "Nom del taulell",
|
||||||
"Members" : "Membres",
|
"Members" : "Membres",
|
||||||
"Assign a user to this card…" : "Assignació d'un usuari a aquesta targeta…",
|
"Upload new files" : "Puja nous fitxers",
|
||||||
"Upload new files" : "Pujada de nous fitxers",
|
|
||||||
"Share from Files" : "Comparteix des de Fitxers",
|
"Share from Files" : "Comparteix des de Fitxers",
|
||||||
"Pending share" : "Compartició pendent",
|
"Pending share" : "Compartició pendent",
|
||||||
"Add this attachment" : "Afegeix aquest adjunt",
|
"Add this attachment" : "Afegeix aquest adjunt",
|
||||||
"Show in Files" : "Mostra a Fitxers",
|
"Show in Files" : "Mostra a Fitxers",
|
||||||
"Download" : "Baixada",
|
|
||||||
"Remove attachment" : "Treu l'adjunt",
|
"Remove attachment" : "Treu l'adjunt",
|
||||||
"Delete Attachment" : "Suprimeix l’adjunt",
|
"Delete Attachment" : "Suprimeix l’adjunt",
|
||||||
"Restore Attachment" : "Restaura l'adjunt",
|
"Restore Attachment" : "Restaura l'adjunt",
|
||||||
"File to share" : "Fitxer a compartir",
|
"File to share" : "Fitxer a compartir",
|
||||||
"Invalid path selected" : "S'ha seleccionat un camí no vàlid",
|
"Invalid path selected" : "S'ha seleccionat una ruta invàlida",
|
||||||
"Open in sidebar view" : "Obre a la vista de la barra lateral",
|
"Open in sidebar view" : "Obre a la vista de la barra lateral",
|
||||||
"Open in bigger view" : "Obre a la vista més gran",
|
"Open in bigger view" : "Obre a la vista més gran",
|
||||||
"Attachments" : "Adjunts",
|
"Attachments" : "Adjunts",
|
||||||
"Comments" : "Comentaris",
|
"Comments" : "Comentaris",
|
||||||
"Modified" : "Darrera modificació",
|
"Modified" : "Darrera modificació",
|
||||||
"Created" : "Creat",
|
"Created" : "Creat",
|
||||||
"The title cannot be empty." : "El títol no pot estar buit.",
|
"The title cannot be empty." : "El títol no pot estar buit",
|
||||||
"No comments yet. Begin the discussion!" : "No hi ha comentaris encara. Començar la discussió!",
|
"No comments yet. Begin the discussion!" : "No hi ha comentaris encara. Començar la discussió!",
|
||||||
"Failed to load comments" : "No s'han pogut carregar els comentaris",
|
"Failed to load comments" : "No s'han pogut carregar els comentaris",
|
||||||
|
"Assign a tag to this card…" : "Assigna una etiqueta a aquesta targeta…",
|
||||||
|
"Assign to users" : "Assigna als usuaris",
|
||||||
|
"Assign to users/groups/circles" : "Assigna a usuaris/grups/cercles",
|
||||||
|
"Assign a user to this card…" : "Assigneu un usuari a aquesta targeta…",
|
||||||
|
"Due date" : "Per la data",
|
||||||
|
"Set a due date" : "Definir una data de venciment",
|
||||||
|
"Remove due date" : "Elimina la data de venciment",
|
||||||
|
"Select Date" : "Selecciona la data",
|
||||||
|
"Today" : "Avui",
|
||||||
|
"Tomorrow" : "Demà",
|
||||||
|
"Next week" : "Setmana següent",
|
||||||
|
"Next month" : "Mes següent",
|
||||||
"Save" : "Desa",
|
"Save" : "Desa",
|
||||||
"The comment cannot be empty." : "El comentari no pot estar buit.",
|
"The comment cannot be empty." : "El comentari no pot estar buit.",
|
||||||
"The comment cannot be longer than 1000 characters." : "El comentari no pot ser més llarg que 1000 caràcters.",
|
"The comment cannot be longer than 1000 characters." : "El comentari no pot ser més llarg que 1000 caràcters.",
|
||||||
@@ -232,86 +221,38 @@ OC.L10N.register(
|
|||||||
"Cancel reply" : "Cancel·la la resposta",
|
"Cancel reply" : "Cancel·la la resposta",
|
||||||
"Reply" : "Respon",
|
"Reply" : "Respon",
|
||||||
"Update" : "Actualitza",
|
"Update" : "Actualitza",
|
||||||
"Created:" : "Data de creació:",
|
|
||||||
"Description" : "Descripció",
|
"Description" : "Descripció",
|
||||||
"(Unsaved)" : "(No desat)",
|
"(Unsaved)" : "(No desat)",
|
||||||
"(Saving…)" : "(Desant…)",
|
"(Saving…)" : "(Desant…)",
|
||||||
"Formatting help" : "Format d'ajuda",
|
"Formatting help" : "Format d'ajuda",
|
||||||
"Edit description" : "Edició descripció",
|
"Edit description" : "Edita descripció",
|
||||||
"View description" : "Veure descripció",
|
"View description" : "Veure descripció",
|
||||||
"Add Attachment" : "Afegeix un adjunt",
|
"Add Attachment" : "Afegeix un adjunt",
|
||||||
"Write a description …" : "Escriviu una descripció …",
|
"Write a description …" : "Escriviu una descripció...",
|
||||||
"Choose attachment" : "Triar adjunt",
|
"Choose attachment" : "Triar adjunt",
|
||||||
"Assign a due date to this card…" : "Assigna una data de caducitat a aquesta targeta…",
|
|
||||||
"Set a due date" : "Definir una data de caducitat",
|
|
||||||
"Add due date" : "Afegeix una data de caducitat",
|
|
||||||
"Choose a date" : "Trieu una data",
|
|
||||||
"Remove due date" : "Suprimeix la data de caducitat",
|
|
||||||
"Completed" : "S'ha completat",
|
|
||||||
"Due at:" : "Venciment a:",
|
|
||||||
"Not completed" : "No completat",
|
|
||||||
"Unarchive card" : "Desarxiva targeta",
|
|
||||||
"Archive card" : "Arxiva la targeta",
|
|
||||||
"Select Date" : "Selecciona la data",
|
|
||||||
"Set due date for later today" : "Estableix una data de caducitat per avui més tard",
|
|
||||||
"Set due date for tomorrow" : "Estableix data de caducitat per a demà",
|
|
||||||
"Set due date for this weekend" : "Estableix una data de caducitat per aquest cap de setmana",
|
|
||||||
"Set due date for next week" : "Estableix una data de caducitat per a la setmana vinent",
|
|
||||||
"Assign a tag to this card…" : "Assignació d'una etiqueta a aquesta targeta…",
|
|
||||||
"Create a new tag:" : "Crea una etiqueta nova:",
|
|
||||||
"(group)" : "(grup)",
|
"(group)" : "(grup)",
|
||||||
"Next week – {timeLocale}" : "La setmana següent: {timeLocale}",
|
|
||||||
"Todo items" : "Tasques pendents",
|
|
||||||
"{count} comments, {unread} unread" : "{count} comentaris, {unread} no llegits",
|
"{count} comments, {unread} unread" : "{count} comentaris, {unread} no llegits",
|
||||||
"Edit card title" : "Edició del títol de la targeta",
|
|
||||||
"Card details" : "Detalls de la targeta",
|
|
||||||
"Assign to me" : "Assigna'm a mi",
|
"Assign to me" : "Assigna'm a mi",
|
||||||
"Unassign myself" : "Desasignar a mi mateix",
|
"Unassign myself" : "Desasignar a mi mateix",
|
||||||
"Mark as not done" : "Marca com no fet",
|
"Move card" : "Mou la targeta",
|
||||||
"Mark as done" : "Marcat com a fet",
|
"Unarchive card" : "Desarxiva targeta",
|
||||||
|
"Archive card" : "Arxiva la targeta",
|
||||||
"Delete card" : "Suprimeix targeta",
|
"Delete card" : "Suprimeix targeta",
|
||||||
|
"Move card to another board" : "Mou la targeta a un altre tauler",
|
||||||
"Card deleted" : "Targeta suprimida",
|
"Card deleted" : "Targeta suprimida",
|
||||||
"seconds ago" : "fa uns segons",
|
"seconds ago" : "fa uns segons",
|
||||||
"Keyboard shortcuts" : "Dreceres de teclat",
|
|
||||||
"Board actions" : "Accions de Tauler",
|
|
||||||
"Keyboard shortcut" : "Drecera de teclat",
|
|
||||||
"Action" : "Acció",
|
|
||||||
"Shift" : "Maj",
|
|
||||||
"Scroll" : "Desplaçament",
|
|
||||||
"Scroll sideways" : "Desplaçament de costat",
|
|
||||||
"Navigate between cards" : "Navega entre les targetes",
|
|
||||||
"Esc" : "Esc",
|
|
||||||
"Close card details" : "Tanca els detalls de la targeta",
|
|
||||||
"Ctrl" : "Ctrl",
|
|
||||||
"Search" : "Cercar",
|
|
||||||
"Show card filters" : "Mostra els filtres de la targeta",
|
|
||||||
"Clear card filters" : "Esborra els filtres de la targeta",
|
|
||||||
"Show help dialog" : "Mostra el diàleg d'ajuda",
|
|
||||||
"Card actions" : "Accions de la targeta",
|
|
||||||
"The following actions can be triggered on the currently highlighted card" : "Les accions següents es poden activar a la targeta actualitzada",
|
|
||||||
"Enter" : "Retorn",
|
|
||||||
"Space" : "Espai",
|
|
||||||
"Open card details" : "Obre els detalls de la targeta",
|
|
||||||
"Edit the card title" : "Edició del títol de la targeta",
|
|
||||||
"Assign yourself to the current card" : "Assigneu-vos a la targeta actual",
|
|
||||||
"Archive/unarchive the current card" : "Arxiva/desarxiva la targeta actual",
|
|
||||||
"Mark card as completed/not completed" : "Marca la targeta com a completada/no completada",
|
|
||||||
"Open card menu" : "Obre el menú de la targeta",
|
|
||||||
"All boards" : "Tots els taulers",
|
"All boards" : "Tots els taulers",
|
||||||
"Archived boards" : "Taulers arxivats",
|
"Archived boards" : "Taulers arxivats",
|
||||||
"Shared with you" : "Us han compartit",
|
"Shared with you" : "Us han compartit",
|
||||||
"Deck settings" : "Paràmetres de Targetes",
|
|
||||||
"Use bigger card view" : "Utilitza la visualització de targetes més gran",
|
"Use bigger card view" : "Utilitza la visualització de targetes més gran",
|
||||||
"Show card ID badge" : "Mostra el distintiu d’ID de la targeta",
|
|
||||||
"Show boards in calendar/tasks" : "Mostra els taulers al calendari/tasques",
|
"Show boards in calendar/tasks" : "Mostra els taulers al calendari/tasques",
|
||||||
"Limit board creation to some groups" : "Limiteu la creació de taulers a alguns grups",
|
"Limit deck usage of groups" : "Limitar l'ús del tauler de grups",
|
||||||
"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." : "Els usuaris fora d'aquests grups no podran crear els seus propis taulers, però encara podran treballar en taulers que s'hagin compartit amb ells.",
|
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitant el Tauler bloquejarà la creació de taulers als usuaris que no són part d'aquests grups. Els usuaris podran seguir treballant en els taulers que hagin estat compartits amb ells.",
|
||||||
"Board details" : "Detalls del tauler",
|
"Board details" : "Detalls del tauler",
|
||||||
"Edit board" : "Edita el tauler",
|
"Edit board" : "Edita el tauler",
|
||||||
"Clone board" : "Clonar tauler",
|
"Clone board" : "Clonar tauler",
|
||||||
"Unarchive board" : "Desarxiva el tauler",
|
"Unarchive board" : "Desarxiva el tauler",
|
||||||
"Archive board" : "Arxiva el tauler",
|
"Archive board" : "Arxiva el tauler",
|
||||||
"Export board" : "Exportació de tauler",
|
|
||||||
"Turn on due date reminders" : "Activa els recordatoris de data de venciment",
|
"Turn on due date reminders" : "Activa els recordatoris de data de venciment",
|
||||||
"Turn off due date reminders" : "Desactiva els recordatoris de data de venciment",
|
"Turn off due date reminders" : "Desactiva els recordatoris de data de venciment",
|
||||||
"Due date reminders" : "Recordatoris de data de venciment",
|
"Due date reminders" : "Recordatoris de data de venciment",
|
||||||
@@ -323,36 +264,15 @@ OC.L10N.register(
|
|||||||
"Only assigned cards" : "Només les targetes assignades",
|
"Only assigned cards" : "Només les targetes assignades",
|
||||||
"No reminder" : "Sense recordatoris",
|
"No reminder" : "Sense recordatoris",
|
||||||
"An error occurred" : "S'ha produït un error",
|
"An error occurred" : "S'ha produït un error",
|
||||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Esteu segur que voleu suprimir el tauler {title}? Això suprimirà totes les dades d'aquest tauler, incloses les targetes arxivades.",
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Esteu segur que voleu suprimir el tauler {title}? Això eliminarà totes les dades d'aquest tauler.",
|
||||||
"Delete the board?" : "Voleu suprimir el tauler?",
|
"Delete the board?" : "Voleu suprimir el tauler?",
|
||||||
"Loading filtered view" : "S'està carregant la visualització filtrada",
|
"Loading filtered view" : "S'està carregant la visualització filtrada",
|
||||||
"Today" : "Avui",
|
"This week" : "Aquesta setmana",
|
||||||
"Tomorrow" : "Demà",
|
|
||||||
"No due" : "Sense venciment",
|
"No due" : "Sense venciment",
|
||||||
"Search for {searchQuery} in all boards" : "Busca {searchQuery} a tots els taulers",
|
"Search for {searchQuery} in all boards" : "Busca {searchQuery} a tots els taulers",
|
||||||
"No results found" : "No s'han trobat resultats",
|
"No results found" : "No s'han trobat resultats",
|
||||||
"This weekend – {timeLocale}" : "Aquest cap de setmana: {timeLocale}",
|
|
||||||
"Deck board {name}\n* Last modified on {lastMod}" : "Tauler de piles {name}\n* Última modificació el dia {lastMod}",
|
|
||||||
"{stack} in {board}" : "{stack} a {board}",
|
|
||||||
"Click to expand description" : "Feu clic per ampliar la descripció",
|
|
||||||
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Creat el {created}\n* Última modificació el dia {lastMod}\n* {nbAttachments} fitxers adjunts\n* {nbComments} comentaris",
|
|
||||||
"{nbCards} cards" : "{nbCards} targetes",
|
|
||||||
"Click to expand comment" : "Feu clic per ampliar el comentari",
|
|
||||||
"Create a new card" : "Crea una nova targeta",
|
|
||||||
"Card title" : "Títol de la targeta",
|
|
||||||
"Create card" : "Crea una targeta",
|
|
||||||
"Creating the new card …" : "Creant la nova targeta …",
|
|
||||||
"Card \"{card}\" was added to \"{board}\"" : "La targeta \"{card}\" s'ha afegit a \"{board}\"",
|
|
||||||
"Open card" : "Obre la targeta",
|
|
||||||
"Close" : "Tanca",
|
|
||||||
"No upcoming cards" : "No hi ha pròximes targetes",
|
"No upcoming cards" : "No hi ha pròximes targetes",
|
||||||
"upcoming cards today" : "properes targetes avui",
|
|
||||||
"upcoming cards tomorrow" : "properes targetes demà",
|
|
||||||
"upcoming cards" : "pròximes targetes",
|
"upcoming cards" : "pròximes targetes",
|
||||||
"New card" : "Nova targeta",
|
|
||||||
"Due on {date}" : "Venciment el dia {date}",
|
|
||||||
"Tomorrow – {timeLocale}" : "Demà: {timeLocale}",
|
|
||||||
"Later today – {timeLocale}" : "Avui més tard: {timeLocale}",
|
|
||||||
"Link to a board" : "Enllaça a un tauler",
|
"Link to a board" : "Enllaça a un tauler",
|
||||||
"Link to a card" : "Enllaç una targeta",
|
"Link to a card" : "Enllaç una targeta",
|
||||||
"Create a card" : "Crea una targeta",
|
"Create a card" : "Crea una targeta",
|
||||||
@@ -363,19 +283,6 @@ OC.L10N.register(
|
|||||||
"Error creating the share" : "S'ha produït un error en crear la compartició",
|
"Error creating the share" : "S'ha produït un error en crear la compartició",
|
||||||
"Share with a Deck card" : "Compartir amb una targeta de Deck",
|
"Share with a Deck card" : "Compartir amb una targeta de Deck",
|
||||||
"Share {file} with a Deck card" : "Compartir {file} amb una targeta de Deck",
|
"Share {file} with a Deck card" : "Compartir {file} amb una targeta de Deck",
|
||||||
"Share" : "Compartir",
|
"Share" : "Compartir"
|
||||||
"A <strong>card description</strong> inside the Deck app has been changed" : "S'ha canviat una <strong>descripció de targeta</strong> a l'aplicació Tauler",
|
|
||||||
"Timeline" : "Línia de temps",
|
|
||||||
"Share board with a user, group or circle …" : "Compartir tauler amb un usuari, grup o cercle …",
|
|
||||||
"Searching for users, groups and circles …" : "Buscant usuaris, grups i cercles …",
|
|
||||||
"(Circle)" : "(Cercle)",
|
|
||||||
"Assign to users" : "Assignació als usuaris",
|
|
||||||
"Assign to users/groups/circles" : "Assignació a usuaris/grups/cercles",
|
|
||||||
"Due date" : "Data de caducitat",
|
|
||||||
"Next week" : "Setmana següent",
|
|
||||||
"Next month" : "Mes següent",
|
|
||||||
"List is empty" : "La llista és buida",
|
|
||||||
"Limit deck usage of groups" : "Limitar l'ús del tauler de grups",
|
|
||||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitant el Tauler bloquejarà la creació de taulers als usuaris que no són part d'aquests grups. Els usuaris podran seguir treballant en els taulers que hagin estat compartits amb ells."
|
|
||||||
},
|
},
|
||||||
"nplurals=2; plural=(n != 1);");
|
"nplurals=2; plural=(n != 1);");
|
||||||
|
|||||||
213
l10n/ca.json
@@ -27,7 +27,7 @@
|
|||||||
"{user} has deleted card {card} in list {stack} on board {board}" : "{user} ha suprimit la targeta {card} a la llista {stack} al tauler {board}",
|
"{user} has deleted card {card} in list {stack} on board {board}" : "{user} ha suprimit la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
"You have renamed the card {before} to {card}" : "Heu reanomenat la targeta {before} a {card}",
|
"You have renamed the card {before} to {card}" : "Heu reanomenat la targeta {before} a {card}",
|
||||||
"{user} has renamed the card {before} to {card}" : "{user} ha reanomenat la targeta {before} a {card}",
|
"{user} has renamed the card {before} to {card}" : "{user} ha reanomenat la targeta {before} a {card}",
|
||||||
"You have added a description to card {card} in list {stack} on board {board}" : "Heu afegit una descripció a la targeta {card} a la llista {stack} del tauler {board}",
|
"You have added a description to card {card} in list {stack} on board {board}" : "Heu afegit una descripció a la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} ha afegit una descripció a la targeta {card} a la llista {stack} al tauler {board}",
|
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} ha afegit una descripció a la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
"You have updated the description of card {card} in list {stack} on board {board}" : "Heu actualitzat la descripció de la targeta {card} a la llista {stack} al tauler {board}",
|
"You have updated the description of card {card} in list {stack} on board {board}" : "Heu actualitzat la descripció de la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
"{user} has updated the description of the card {card} in list {stack} on board {board}" : "{user} ha actualitzat la descripció de la targeta {card} a la llista {stack} al tauler {board}",
|
"{user} has updated the description of the card {card} in list {stack} on board {board}" : "{user} ha actualitzat la descripció de la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
@@ -35,16 +35,12 @@
|
|||||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user} té la targeta arxivada {card} a la llista {stack} al tauler {board}",
|
"{user} has archived card {card} in list {stack} on board {board}" : "{user} té la targeta arxivada {card} a la llista {stack} al tauler {board}",
|
||||||
"You have unarchived card {card} in list {stack} on board {board}" : "Teniu una targeta no-arxchivada {card} a la llista {stack} al tauler {board}",
|
"You have unarchived card {card} in list {stack} on board {board}" : "Teniu una targeta no-arxchivada {card} a la llista {stack} al tauler {board}",
|
||||||
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} té una targeta no-arxivada {card} a la llista {stack} al tauler {board}",
|
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} té una targeta no-arxivada {card} a la llista {stack} al tauler {board}",
|
||||||
"You have marked the card {card} as done in list {stack} on board {board}" : "Heu marcat la targeta {card} com a feta a la llista {stack} del tauler {board}",
|
"You have removed the due date of card {card}" : "Heu suprimit la data de venciment de la targeta {targeta}",
|
||||||
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} ha marcat la targeta {card} com a feta a la llista {stack} del tauler {board}",
|
"{user} has removed the due date of card {card}" : "{user} ha suprimit la data de venciment de la targeta {targeta}",
|
||||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "Heu marcat la targeta {card} com a desfeta a la llista {stack} del tauler {board}",
|
"You have set the due date of card {card} to {after}" : "Heu establert la data de venciment de la targeta {card} a {after}",
|
||||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} ha marcat la targeta {card} com a desfeta a la llista {stack} del tauler {board}",
|
"{user} has set the due date of card {card} to {after}" : "{user} ha establert la data de venciment de la targeta {card} a {after}",
|
||||||
"You have removed the due date of card {card}" : "Heu suprimit la data de caducitat de la targeta {card}",
|
"You have updated the due date of card {card} to {after}" : "Heu actualitzat la data de venciment de la targeta {card} a {after}",
|
||||||
"{user} has removed the due date of card {card}" : "{user} ha suprimit la data de caducitat de la targeta {card}",
|
"{user} has updated the due date of card {card} to {after}" : "{user} ha actualitzat la data de venciment de la targeta {card} a {after}",
|
||||||
"You have set the due date of card {card} to {after}" : "Heu establert la data de caducitat de la targeta {card} a {after}",
|
|
||||||
"{user} has set the due date of card {card} to {after}" : "{user} ha establert la data de caducitat de la targeta {card} a {after}",
|
|
||||||
"You have updated the due date of card {card} to {after}" : "Heu actualitzat la data de caducitat de la targeta {card} a {after}",
|
|
||||||
"{user} has updated the due date of card {card} to {after}" : "{user} ha actualitzat la data de caducitat de la targeta {card} a {after}",
|
|
||||||
"You have added the tag {label} to card {card} in list {stack} on board {board}" : "Heu afegit l'etiqueta {label} a la targeta {card} a la llista {stack} al tauler {board}",
|
"You have added the tag {label} to card {card} in list {stack} on board {board}" : "Heu afegit l'etiqueta {label} a la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
"{user} has added the tag {label} to card {card} in list {stack} on board {board}" : "{user} ha afegit l'etiqueta {label} a la targeta {card} a la llista {stack} al tauler {board}",
|
"{user} has added the tag {label} to card {card} in list {stack} on board {board}" : "{user} ha afegit l'etiqueta {label} a la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
"You have removed the tag {label} from card {card} in list {stack} on board {board}" : "Heu eliminat l'etiqueta {label} de la targeta {card} a la llista {stack} al tauler {board}",
|
"You have removed the tag {label} from card {card} in list {stack} on board {board}" : "Heu eliminat l'etiqueta {label} de la targeta {card} a la llista {stack} al tauler {board}",
|
||||||
@@ -65,32 +61,22 @@
|
|||||||
"{user} has restored the attachment {attachment} to card {card}" : "{user} ha restaurat l'adjunt {attachment} a la targeta {card}",
|
"{user} has restored the attachment {attachment} to card {card}" : "{user} ha restaurat l'adjunt {attachment} a la targeta {card}",
|
||||||
"You have commented on card {card}" : "Heu comentat la targeta {card}",
|
"You have commented on card {card}" : "Heu comentat la targeta {card}",
|
||||||
"{user} has commented on card {card}" : "{user} ha comentat la targeta {card}",
|
"{user} has commented on card {card}" : "{user} ha comentat la targeta {card}",
|
||||||
|
"A <strong>card description</strong> inside the Deck app has been changed" : "S'ha canviat una <strong>descripció de targeta</strong> a l'aplicació Tauler",
|
||||||
"Deck" : "Targetes",
|
"Deck" : "Targetes",
|
||||||
"Changes in the <strong>Deck app</strong>" : "Canvis a l'<strong>aplicació Targetes</strong>",
|
"Changes in the <strong>Deck app</strong>" : "Canvis a l'<strong>aplicació Targetes</strong>",
|
||||||
"A <strong>board, list or card</strong> was changed" : "S'ha canviat un <strong>tauler, llista o targeta</strong>",
|
"A <strong>comment</strong> was created on a card" : "S'ha afegit un <strong>comentari</strong> a una targeta",
|
||||||
"A <strong>comment</strong> was created on a card" : "S'ha creat un <strong>comentari</strong> a una targeta",
|
|
||||||
"A <strong>card description</strong> has been changed" : "S'ha canviat la <strong>descripció de la targeta</strong>",
|
|
||||||
"Cards due today" : "Targetes per avui",
|
|
||||||
"Cards due tomorrow" : "Targetes amb venciment demà",
|
|
||||||
"Upcoming cards" : "Pròximes targetes",
|
"Upcoming cards" : "Pròximes targetes",
|
||||||
"Load more" : "Carrega'n més",
|
|
||||||
"Personal" : "Personal",
|
"Personal" : "Personal",
|
||||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "La targeta \"%s\" sobre \"%s\" se us ha assignat per %s.",
|
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "La targeta \"%s\" sobre \"%s\" se us ha assignat per %s.",
|
||||||
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} us ha assignat la targeta {deck-card} a {deck-board}.",
|
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} us ha assignat la targeta {deck-card} a {deck-board}.",
|
||||||
"The card \"%s\" on \"%s\" has reached its due date." : "La targeta \"%s\" sobre \"%s\" ha assolit la seva data de caducitat.",
|
"The card \"%s\" on \"%s\" has reached its due date." : "La targeta \"%s\" sobre \"%s\" ha assolit la seva data de venciment.",
|
||||||
"The card {deck-card} on {deck-board} has reached its due date." : "La targeta {deck-card} a {deck-board} ha assolit la seva data de caducitat.",
|
"The card {deck-card} on {deck-board} has reached its due date." : "La targeta {deck-card} a {deck-board} ha assolit la seva data de caducitat.",
|
||||||
"%s has mentioned you in a comment on \"%s\"." : "%s us ha anomenat en un comentari sobre \"%s\".",
|
"%s has mentioned you in a comment on \"%s\"." : "%s us ha anomenat en un comentari sobre \"%s\".",
|
||||||
"{user} has mentioned you in a comment on {deck-card}." : "{user} us ha mencionat en un comentari a {deck-card}.",
|
"{user} has mentioned you in a comment on {deck-card}." : "{user} us ha mencionat en un comentari a {deck-card}.",
|
||||||
"The board \"%s\" has been shared with you by %s." : "El tauler \"%s\" se us ha compartit per %s.",
|
"The board \"%s\" has been shared with you by %s." : "El tauler \"%s\" se us ha compartit per %s.",
|
||||||
"{user} has shared {deck-board} with you." : "{user} us ha compartit {deck-board}.",
|
"{user} has shared {deck-board} with you." : "{user} us ha compartit {board}.",
|
||||||
"Deck board" : "Tauler de Deck",
|
|
||||||
"Owned by %1$s" : "Propietat de %1$s",
|
|
||||||
"Deck boards, cards and comments" : "Taulers, targetes i comentaris",
|
|
||||||
"From %1$s, in %2$s/%3$s, owned by %4$s" : "De %1$s, a %2$s/%3$s, propietat de %4$s",
|
|
||||||
"Create a new deck card" : "Crea una nova targeta",
|
|
||||||
"Card comments" : "Comentaris de la targeta",
|
"Card comments" : "Comentaris de la targeta",
|
||||||
"%s on %s" : "%s a %s",
|
"%s on %s" : "%s a %s",
|
||||||
"Deck boards and cards" : "Taulers de piles i targetes",
|
|
||||||
"No data was provided to create an attachment." : "No s’ha proporcionat cap dada per crear un fitxer adjunt.",
|
"No data was provided to create an attachment." : "No s’ha proporcionat cap dada per crear un fitxer adjunt.",
|
||||||
"Finished" : "Acabat",
|
"Finished" : "Acabat",
|
||||||
"To review" : "Per revisar",
|
"To review" : "Per revisar",
|
||||||
@@ -99,7 +85,7 @@
|
|||||||
"copy" : "còpia",
|
"copy" : "còpia",
|
||||||
"To do" : "Pendent",
|
"To do" : "Pendent",
|
||||||
"Doing" : "En procés",
|
"Doing" : "En procés",
|
||||||
"Done" : "Fet",
|
"Done" : "Finalitzat",
|
||||||
"Example Task 3" : "Tasca d'exemple 3",
|
"Example Task 3" : "Tasca d'exemple 3",
|
||||||
"Example Task 2" : "Tasca d'exemple 2",
|
"Example Task 2" : "Tasca d'exemple 2",
|
||||||
"Example Task 1" : "Tasca d'exemple 1",
|
"Example Task 1" : "Tasca d'exemple 1",
|
||||||
@@ -110,24 +96,28 @@
|
|||||||
"No file was uploaded" : "No s'ha pujat cap fitxer",
|
"No file was uploaded" : "No s'ha pujat cap fitxer",
|
||||||
"Missing a temporary folder" : "Falta una carpeta temporal",
|
"Missing a temporary folder" : "Falta una carpeta temporal",
|
||||||
"Could not write file to disk" : "No s’ha pogut escriure el fitxer al disc",
|
"Could not write file to disk" : "No s’ha pogut escriure el fitxer al disc",
|
||||||
"A PHP extension stopped the file upload" : "Una extensió del PHP ha aturat la pujada del fitxer",
|
"A PHP extension stopped the file upload" : "Una extensió del PHP ha aturat la carregada del fitxer",
|
||||||
"No file uploaded or file size exceeds maximum of %s" : "No s'ha carregat cap fitxer o la mida del fitxer sobrepassa el màxim de %s",
|
"No file uploaded or file size exceeds maximum of %s" : "No s'ha carregat cap fitxer o la mida del fitxer sobrepassa el màxim de %s",
|
||||||
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Aquest comentari té més de %s caràcters.\nS'ha afegit com a fitxer adjunt a la targeta amb el nom %s.\nAccessible a l'URL: %s.",
|
|
||||||
"Card not found" : "No s'ha trobat la targeta",
|
"Card not found" : "No s'ha trobat la targeta",
|
||||||
"Path is already shared with this card" : "Aquesta ruta ja ha estat compartida amb aquesta targeta",
|
"Path is already shared with this card" : "Aquesta ruta ja ha estat compartida amb aquesta targeta",
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "La data no és vàlida, el format de la data ha de ser YYYY-MM-DD",
|
"Invalid date, date format must be YYYY-MM-DD" : "La data no és vàlida, el format de la data ha de ser YYYY-MM-DD",
|
||||||
"Personal planning and team project organization" : "Planificació personal i organització de projectes en equip",
|
"Personal planning and team project organization" : "Planificació personal i organització de projectes en equip",
|
||||||
"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" : "Tauler és una eina d'organització a l'estil kanban dirigida a la planificació personal i a l'organització de projectes per equips integrada a Nextcloud.\n\n\n- 📥 Afegiu les tasques en targetes i poseu-les en ordre\n- 📄 Apunteu notes addicionals en format Markdown\n- 🔖 Assigneu etiquetes per una millor organització\n- 👥 Compartiu amb el vostre equip, família o amics\n- 📎 Adjunteu fitxers i encasteu-los en la descripció en markdown\n- 💬 Converses amb el vostre equip fent servir comentaris\n- ⚡ Mantingueu el seguiment de canvis al flux d'activitat\n- 🚀 Tingueu el vostre projecte organitzat",
|
"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" : "Tauler és una eina d'organització a l'estil kanban dirigida a la planificació personal i a l'organització de projectes per equips integrada a Nextcloud.\n\n\n- 📥 Afegiu les tasques en targetes i poseu-les en ordre\n- 📄 Apunteu notes addicionals en markdown\n- 🔖 Assigneu etiquetes per una organització encara millor\n- 👥 Compartiu amb el vostre equip, família o amics\n- 📎 Adjunteu fitxers i encasteu-los en la descripció en markdown\n- 💬 Debateu amb el vostre equip fent servir comentaris\n- ⚡ Mantingueu el seguiment de canvis al flux d'activitat\n- 🚀 Tingueu el vostre projecte organitzat",
|
||||||
|
"Card details" : "Detalls de la targeta",
|
||||||
"Add board" : "Afegeix un tauler",
|
"Add board" : "Afegeix un tauler",
|
||||||
"Select the board to link to a project" : "Selecciona el tauler per enllaçar a un projecte",
|
"Select the board to link to a project" : "Selecciona el tauler per enllaçar a un projecte",
|
||||||
"Search by board title" : "Cerca per títol del tauler",
|
"Search by board title" : "Cerca per títol del tauler",
|
||||||
"Select board" : "Selecciona un tauler",
|
"Select board" : "Selecciona un tauler",
|
||||||
"Move card to another board" : "Mou la targeta a un altre tauler",
|
"Create a new card" : "Crea una nova targeta",
|
||||||
"Select a board" : "Selecciona un tauler",
|
"Select a board" : "Selecciona un tauler",
|
||||||
"No lists available" : "No hi ha cap llista disponible",
|
|
||||||
"Select a list" : "Seleccioneu una llista",
|
"Select a list" : "Seleccioneu una llista",
|
||||||
"Move card" : "Mou la targeta",
|
"Card title" : "Títol de la targeta",
|
||||||
"Cancel" : "Cancel·la",
|
"Cancel" : "Cancel·la",
|
||||||
|
"Creating the new card …" : "Creant la nova targeta",
|
||||||
|
"Card \"{card}\" was added to \"{board}\"" : "La targeta \"{card}\" s'ha afegit a \"{board}\"",
|
||||||
|
"Open card" : "Obre la targeta",
|
||||||
|
"Close" : "Tanca",
|
||||||
|
"Create card" : "Crea una targeta",
|
||||||
"Select a card" : "Selecciona una targeta",
|
"Select a card" : "Selecciona una targeta",
|
||||||
"Select the card to link to a project" : "Selecciona la targeta per enllaçar a un projecte",
|
"Select the card to link to a project" : "Selecciona la targeta per enllaçar a un projecte",
|
||||||
"Link to card" : "Enllaç a la targeta",
|
"Link to card" : "Enllaç a la targeta",
|
||||||
@@ -137,12 +127,11 @@
|
|||||||
"Overwrite file" : "Sobreescriu el fitxer",
|
"Overwrite file" : "Sobreescriu el fitxer",
|
||||||
"Keep existing file" : "Mantén el fitxer existent",
|
"Keep existing file" : "Mantén el fitxer existent",
|
||||||
"This board is read only" : "Aquest tauler és només de lectura",
|
"This board is read only" : "Aquest tauler és només de lectura",
|
||||||
"Drop your files to upload" : "Deixeu anar els fitxers per pujar-los",
|
"Drop your files to upload" : "Deixeu anar els fitxers per penjar-los",
|
||||||
"Add card" : "Afegeix una targeta",
|
"Add card" : "Afegeix una targeta",
|
||||||
"Archived cards" : "Targetes arxivades",
|
"Archived cards" : "Targetes arxivades",
|
||||||
"Add list" : "Afegeix una llista",
|
"Add list" : "Afegeix una llista",
|
||||||
"List name" : "Nom de la llista",
|
"List name" : "Nom de la llista",
|
||||||
"Active filters" : "Filtres actius",
|
|
||||||
"Apply filter" : "Aplica el filtre",
|
"Apply filter" : "Aplica el filtre",
|
||||||
"Filter by tag" : "Filtra per etiqueta",
|
"Filter by tag" : "Filtra per etiqueta",
|
||||||
"Filter by assigned user" : "Filtra per usuari assignat",
|
"Filter by assigned user" : "Filtra per usuari assignat",
|
||||||
@@ -154,75 +143,75 @@
|
|||||||
"Next 30 days" : "Pròxims 30 dies",
|
"Next 30 days" : "Pròxims 30 dies",
|
||||||
"No due date" : "Sense venciment",
|
"No due date" : "Sense venciment",
|
||||||
"Clear filter" : "Esborra el filtre",
|
"Clear filter" : "Esborra el filtre",
|
||||||
"View Modes" : "Modes de visualització",
|
|
||||||
"Toggle View Modes" : "Commuta els modes de visualització",
|
|
||||||
"Hide archived cards" : "Amaga les targetes arxivades",
|
"Hide archived cards" : "Amaga les targetes arxivades",
|
||||||
"Show archived cards" : "Mostra les targetes arxivades",
|
"Show archived cards" : "Mostra les targetes arxivades",
|
||||||
"Toggle compact mode" : "Commuta el mode compacte",
|
"Toggle compact mode" : "Commuta el mode compacte",
|
||||||
"Hide card cover images" : "Amaga les imatges de la portada de la targeta",
|
|
||||||
"Show card cover images" : "Mostra les imatges de la portada de la targeta",
|
|
||||||
"Open details" : "Obre els detalls",
|
|
||||||
"Details" : "Detalls",
|
"Details" : "Detalls",
|
||||||
"Currently present people" : "Persones presents actuals",
|
|
||||||
"Loading board" : "S'està carregant el tauler",
|
"Loading board" : "S'està carregant el tauler",
|
||||||
"Board not found" : "Tauler no trobat",
|
"No lists available" : "No hi ha cap llista disponible",
|
||||||
"Create a new list to add cards to this board" : "Crea una llista nova per afegir targetes a aquest tauler",
|
"Create a new list to add cards to this board" : "Crea una llista nova per afegir targetes a aquest tauler",
|
||||||
|
"Board not found" : "Tauler no trobat",
|
||||||
"Sharing" : "Compartició",
|
"Sharing" : "Compartició",
|
||||||
"Tags" : "Etiquetes",
|
"Tags" : "Etiquetes",
|
||||||
"Deleted items" : "Elements suprimits",
|
"Deleted items" : "Elements suprimits",
|
||||||
"Activity" : "Activitat",
|
"Timeline" : "Línia de temps",
|
||||||
"Deleted lists" : "Llistes suprimides",
|
"Deleted lists" : "Llistes suprimides",
|
||||||
"Undo" : "Desfés",
|
"Undo" : "Desfés",
|
||||||
"Deleted cards" : "Targetes suprimides",
|
"Deleted cards" : "Targetes suprimides",
|
||||||
|
"Share board with a user, group or circle …" : "Compartir tauler amb un usuari, grup o cercle …",
|
||||||
|
"Searching for users, groups and circles …" : "Buscant usuaris, grups i cercles",
|
||||||
"No participants found" : "No s'han trobat participants",
|
"No participants found" : "No s'han trobat participants",
|
||||||
"Board owner" : "Propietari del tauler",
|
"Board owner" : "Propietari del tauler",
|
||||||
"(Group)" : "(Grup)",
|
"(Group)" : "(Grup)",
|
||||||
|
"(Circle)" : "(Cercle)",
|
||||||
"Can edit" : "Pot editar",
|
"Can edit" : "Pot editar",
|
||||||
"Can share" : "Pot compartir",
|
"Can share" : "Pot compartir",
|
||||||
"Can manage" : "Pot gestionar",
|
"Can manage" : "Pot gestionar",
|
||||||
"Owner" : "Propietari",
|
"Delete" : "Eliminar",
|
||||||
"Delete" : "Suprimeix",
|
|
||||||
"Failed to create share with {displayName}" : "Ha fallat la creació de la compartició amb {displayName}",
|
"Failed to create share with {displayName}" : "Ha fallat la creació de la compartició amb {displayName}",
|
||||||
"Are you sure you want to transfer the board {title} to {user}?" : "Esteu segur que voleu transferir el tauler {title} a {user}?",
|
"Add a new list" : "Afegir una llista nova",
|
||||||
"Transfer the board." : "Transfereix el tauler.",
|
|
||||||
"Transfer" : "Transferència",
|
|
||||||
"The board has been transferred to {user}" : "El tauler s'ha transferit a {user}",
|
|
||||||
"Failed to transfer the board to {user}" : "No s'ha pogut transferir el tauler a {user}",
|
|
||||||
"Edit list title" : "Edició del títol de la llista",
|
|
||||||
"Archive all cards" : "Arxiva totes les targetes",
|
"Archive all cards" : "Arxiva totes les targetes",
|
||||||
"Unarchive all cards" : "Desarxivar totes les targetes",
|
|
||||||
"Delete list" : "Suprimeix la llista",
|
"Delete list" : "Suprimeix la llista",
|
||||||
"Archive all cards in this list" : "Arxiva totes les targetes d'aquesta llista",
|
"Archive all cards in this list" : "Arxiva totes les targetes d'aquesta llista",
|
||||||
"Unarchive all cards in this list" : "Desarxivar totes les targetes d'aquesta llista",
|
"Add a new card" : "Afegir una nova targeta",
|
||||||
"Add a new card" : "Afegeix una nova targeta",
|
|
||||||
"Card name" : "Nom de la targeta",
|
"Card name" : "Nom de la targeta",
|
||||||
"List deleted" : "Llista suprimida",
|
"List deleted" : "Llista suprimida",
|
||||||
"Edit" : "Edició",
|
"Edit" : "Edita",
|
||||||
"Add a new tag" : "Afegeix una etiqueta nova",
|
"Add a new tag" : "Afegir una etiqueta nova",
|
||||||
"title and color value must be provided" : "s’ha de proporcionar el valor del títol i del color",
|
"title and color value must be provided" : "s’ha de proporcionar el valor del títol i del color",
|
||||||
"Board name" : "Nom del taulell",
|
"Board name" : "Nom del taulell",
|
||||||
"Members" : "Membres",
|
"Members" : "Membres",
|
||||||
"Assign a user to this card…" : "Assignació d'un usuari a aquesta targeta…",
|
"Upload new files" : "Puja nous fitxers",
|
||||||
"Upload new files" : "Pujada de nous fitxers",
|
|
||||||
"Share from Files" : "Comparteix des de Fitxers",
|
"Share from Files" : "Comparteix des de Fitxers",
|
||||||
"Pending share" : "Compartició pendent",
|
"Pending share" : "Compartició pendent",
|
||||||
"Add this attachment" : "Afegeix aquest adjunt",
|
"Add this attachment" : "Afegeix aquest adjunt",
|
||||||
"Show in Files" : "Mostra a Fitxers",
|
"Show in Files" : "Mostra a Fitxers",
|
||||||
"Download" : "Baixada",
|
|
||||||
"Remove attachment" : "Treu l'adjunt",
|
"Remove attachment" : "Treu l'adjunt",
|
||||||
"Delete Attachment" : "Suprimeix l’adjunt",
|
"Delete Attachment" : "Suprimeix l’adjunt",
|
||||||
"Restore Attachment" : "Restaura l'adjunt",
|
"Restore Attachment" : "Restaura l'adjunt",
|
||||||
"File to share" : "Fitxer a compartir",
|
"File to share" : "Fitxer a compartir",
|
||||||
"Invalid path selected" : "S'ha seleccionat un camí no vàlid",
|
"Invalid path selected" : "S'ha seleccionat una ruta invàlida",
|
||||||
"Open in sidebar view" : "Obre a la vista de la barra lateral",
|
"Open in sidebar view" : "Obre a la vista de la barra lateral",
|
||||||
"Open in bigger view" : "Obre a la vista més gran",
|
"Open in bigger view" : "Obre a la vista més gran",
|
||||||
"Attachments" : "Adjunts",
|
"Attachments" : "Adjunts",
|
||||||
"Comments" : "Comentaris",
|
"Comments" : "Comentaris",
|
||||||
"Modified" : "Darrera modificació",
|
"Modified" : "Darrera modificació",
|
||||||
"Created" : "Creat",
|
"Created" : "Creat",
|
||||||
"The title cannot be empty." : "El títol no pot estar buit.",
|
"The title cannot be empty." : "El títol no pot estar buit",
|
||||||
"No comments yet. Begin the discussion!" : "No hi ha comentaris encara. Començar la discussió!",
|
"No comments yet. Begin the discussion!" : "No hi ha comentaris encara. Començar la discussió!",
|
||||||
"Failed to load comments" : "No s'han pogut carregar els comentaris",
|
"Failed to load comments" : "No s'han pogut carregar els comentaris",
|
||||||
|
"Assign a tag to this card…" : "Assigna una etiqueta a aquesta targeta…",
|
||||||
|
"Assign to users" : "Assigna als usuaris",
|
||||||
|
"Assign to users/groups/circles" : "Assigna a usuaris/grups/cercles",
|
||||||
|
"Assign a user to this card…" : "Assigneu un usuari a aquesta targeta…",
|
||||||
|
"Due date" : "Per la data",
|
||||||
|
"Set a due date" : "Definir una data de venciment",
|
||||||
|
"Remove due date" : "Elimina la data de venciment",
|
||||||
|
"Select Date" : "Selecciona la data",
|
||||||
|
"Today" : "Avui",
|
||||||
|
"Tomorrow" : "Demà",
|
||||||
|
"Next week" : "Setmana següent",
|
||||||
|
"Next month" : "Mes següent",
|
||||||
"Save" : "Desa",
|
"Save" : "Desa",
|
||||||
"The comment cannot be empty." : "El comentari no pot estar buit.",
|
"The comment cannot be empty." : "El comentari no pot estar buit.",
|
||||||
"The comment cannot be longer than 1000 characters." : "El comentari no pot ser més llarg que 1000 caràcters.",
|
"The comment cannot be longer than 1000 characters." : "El comentari no pot ser més llarg que 1000 caràcters.",
|
||||||
@@ -230,86 +219,38 @@
|
|||||||
"Cancel reply" : "Cancel·la la resposta",
|
"Cancel reply" : "Cancel·la la resposta",
|
||||||
"Reply" : "Respon",
|
"Reply" : "Respon",
|
||||||
"Update" : "Actualitza",
|
"Update" : "Actualitza",
|
||||||
"Created:" : "Data de creació:",
|
|
||||||
"Description" : "Descripció",
|
"Description" : "Descripció",
|
||||||
"(Unsaved)" : "(No desat)",
|
"(Unsaved)" : "(No desat)",
|
||||||
"(Saving…)" : "(Desant…)",
|
"(Saving…)" : "(Desant…)",
|
||||||
"Formatting help" : "Format d'ajuda",
|
"Formatting help" : "Format d'ajuda",
|
||||||
"Edit description" : "Edició descripció",
|
"Edit description" : "Edita descripció",
|
||||||
"View description" : "Veure descripció",
|
"View description" : "Veure descripció",
|
||||||
"Add Attachment" : "Afegeix un adjunt",
|
"Add Attachment" : "Afegeix un adjunt",
|
||||||
"Write a description …" : "Escriviu una descripció …",
|
"Write a description …" : "Escriviu una descripció...",
|
||||||
"Choose attachment" : "Triar adjunt",
|
"Choose attachment" : "Triar adjunt",
|
||||||
"Assign a due date to this card…" : "Assigna una data de caducitat a aquesta targeta…",
|
|
||||||
"Set a due date" : "Definir una data de caducitat",
|
|
||||||
"Add due date" : "Afegeix una data de caducitat",
|
|
||||||
"Choose a date" : "Trieu una data",
|
|
||||||
"Remove due date" : "Suprimeix la data de caducitat",
|
|
||||||
"Completed" : "S'ha completat",
|
|
||||||
"Due at:" : "Venciment a:",
|
|
||||||
"Not completed" : "No completat",
|
|
||||||
"Unarchive card" : "Desarxiva targeta",
|
|
||||||
"Archive card" : "Arxiva la targeta",
|
|
||||||
"Select Date" : "Selecciona la data",
|
|
||||||
"Set due date for later today" : "Estableix una data de caducitat per avui més tard",
|
|
||||||
"Set due date for tomorrow" : "Estableix data de caducitat per a demà",
|
|
||||||
"Set due date for this weekend" : "Estableix una data de caducitat per aquest cap de setmana",
|
|
||||||
"Set due date for next week" : "Estableix una data de caducitat per a la setmana vinent",
|
|
||||||
"Assign a tag to this card…" : "Assignació d'una etiqueta a aquesta targeta…",
|
|
||||||
"Create a new tag:" : "Crea una etiqueta nova:",
|
|
||||||
"(group)" : "(grup)",
|
"(group)" : "(grup)",
|
||||||
"Next week – {timeLocale}" : "La setmana següent: {timeLocale}",
|
|
||||||
"Todo items" : "Tasques pendents",
|
|
||||||
"{count} comments, {unread} unread" : "{count} comentaris, {unread} no llegits",
|
"{count} comments, {unread} unread" : "{count} comentaris, {unread} no llegits",
|
||||||
"Edit card title" : "Edició del títol de la targeta",
|
|
||||||
"Card details" : "Detalls de la targeta",
|
|
||||||
"Assign to me" : "Assigna'm a mi",
|
"Assign to me" : "Assigna'm a mi",
|
||||||
"Unassign myself" : "Desasignar a mi mateix",
|
"Unassign myself" : "Desasignar a mi mateix",
|
||||||
"Mark as not done" : "Marca com no fet",
|
"Move card" : "Mou la targeta",
|
||||||
"Mark as done" : "Marcat com a fet",
|
"Unarchive card" : "Desarxiva targeta",
|
||||||
|
"Archive card" : "Arxiva la targeta",
|
||||||
"Delete card" : "Suprimeix targeta",
|
"Delete card" : "Suprimeix targeta",
|
||||||
|
"Move card to another board" : "Mou la targeta a un altre tauler",
|
||||||
"Card deleted" : "Targeta suprimida",
|
"Card deleted" : "Targeta suprimida",
|
||||||
"seconds ago" : "fa uns segons",
|
"seconds ago" : "fa uns segons",
|
||||||
"Keyboard shortcuts" : "Dreceres de teclat",
|
|
||||||
"Board actions" : "Accions de Tauler",
|
|
||||||
"Keyboard shortcut" : "Drecera de teclat",
|
|
||||||
"Action" : "Acció",
|
|
||||||
"Shift" : "Maj",
|
|
||||||
"Scroll" : "Desplaçament",
|
|
||||||
"Scroll sideways" : "Desplaçament de costat",
|
|
||||||
"Navigate between cards" : "Navega entre les targetes",
|
|
||||||
"Esc" : "Esc",
|
|
||||||
"Close card details" : "Tanca els detalls de la targeta",
|
|
||||||
"Ctrl" : "Ctrl",
|
|
||||||
"Search" : "Cercar",
|
|
||||||
"Show card filters" : "Mostra els filtres de la targeta",
|
|
||||||
"Clear card filters" : "Esborra els filtres de la targeta",
|
|
||||||
"Show help dialog" : "Mostra el diàleg d'ajuda",
|
|
||||||
"Card actions" : "Accions de la targeta",
|
|
||||||
"The following actions can be triggered on the currently highlighted card" : "Les accions següents es poden activar a la targeta actualitzada",
|
|
||||||
"Enter" : "Retorn",
|
|
||||||
"Space" : "Espai",
|
|
||||||
"Open card details" : "Obre els detalls de la targeta",
|
|
||||||
"Edit the card title" : "Edició del títol de la targeta",
|
|
||||||
"Assign yourself to the current card" : "Assigneu-vos a la targeta actual",
|
|
||||||
"Archive/unarchive the current card" : "Arxiva/desarxiva la targeta actual",
|
|
||||||
"Mark card as completed/not completed" : "Marca la targeta com a completada/no completada",
|
|
||||||
"Open card menu" : "Obre el menú de la targeta",
|
|
||||||
"All boards" : "Tots els taulers",
|
"All boards" : "Tots els taulers",
|
||||||
"Archived boards" : "Taulers arxivats",
|
"Archived boards" : "Taulers arxivats",
|
||||||
"Shared with you" : "Us han compartit",
|
"Shared with you" : "Us han compartit",
|
||||||
"Deck settings" : "Paràmetres de Targetes",
|
|
||||||
"Use bigger card view" : "Utilitza la visualització de targetes més gran",
|
"Use bigger card view" : "Utilitza la visualització de targetes més gran",
|
||||||
"Show card ID badge" : "Mostra el distintiu d’ID de la targeta",
|
|
||||||
"Show boards in calendar/tasks" : "Mostra els taulers al calendari/tasques",
|
"Show boards in calendar/tasks" : "Mostra els taulers al calendari/tasques",
|
||||||
"Limit board creation to some groups" : "Limiteu la creació de taulers a alguns grups",
|
"Limit deck usage of groups" : "Limitar l'ús del tauler de grups",
|
||||||
"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." : "Els usuaris fora d'aquests grups no podran crear els seus propis taulers, però encara podran treballar en taulers que s'hagin compartit amb ells.",
|
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitant el Tauler bloquejarà la creació de taulers als usuaris que no són part d'aquests grups. Els usuaris podran seguir treballant en els taulers que hagin estat compartits amb ells.",
|
||||||
"Board details" : "Detalls del tauler",
|
"Board details" : "Detalls del tauler",
|
||||||
"Edit board" : "Edita el tauler",
|
"Edit board" : "Edita el tauler",
|
||||||
"Clone board" : "Clonar tauler",
|
"Clone board" : "Clonar tauler",
|
||||||
"Unarchive board" : "Desarxiva el tauler",
|
"Unarchive board" : "Desarxiva el tauler",
|
||||||
"Archive board" : "Arxiva el tauler",
|
"Archive board" : "Arxiva el tauler",
|
||||||
"Export board" : "Exportació de tauler",
|
|
||||||
"Turn on due date reminders" : "Activa els recordatoris de data de venciment",
|
"Turn on due date reminders" : "Activa els recordatoris de data de venciment",
|
||||||
"Turn off due date reminders" : "Desactiva els recordatoris de data de venciment",
|
"Turn off due date reminders" : "Desactiva els recordatoris de data de venciment",
|
||||||
"Due date reminders" : "Recordatoris de data de venciment",
|
"Due date reminders" : "Recordatoris de data de venciment",
|
||||||
@@ -321,36 +262,15 @@
|
|||||||
"Only assigned cards" : "Només les targetes assignades",
|
"Only assigned cards" : "Només les targetes assignades",
|
||||||
"No reminder" : "Sense recordatoris",
|
"No reminder" : "Sense recordatoris",
|
||||||
"An error occurred" : "S'ha produït un error",
|
"An error occurred" : "S'ha produït un error",
|
||||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Esteu segur que voleu suprimir el tauler {title}? Això suprimirà totes les dades d'aquest tauler, incloses les targetes arxivades.",
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Esteu segur que voleu suprimir el tauler {title}? Això eliminarà totes les dades d'aquest tauler.",
|
||||||
"Delete the board?" : "Voleu suprimir el tauler?",
|
"Delete the board?" : "Voleu suprimir el tauler?",
|
||||||
"Loading filtered view" : "S'està carregant la visualització filtrada",
|
"Loading filtered view" : "S'està carregant la visualització filtrada",
|
||||||
"Today" : "Avui",
|
"This week" : "Aquesta setmana",
|
||||||
"Tomorrow" : "Demà",
|
|
||||||
"No due" : "Sense venciment",
|
"No due" : "Sense venciment",
|
||||||
"Search for {searchQuery} in all boards" : "Busca {searchQuery} a tots els taulers",
|
"Search for {searchQuery} in all boards" : "Busca {searchQuery} a tots els taulers",
|
||||||
"No results found" : "No s'han trobat resultats",
|
"No results found" : "No s'han trobat resultats",
|
||||||
"This weekend – {timeLocale}" : "Aquest cap de setmana: {timeLocale}",
|
|
||||||
"Deck board {name}\n* Last modified on {lastMod}" : "Tauler de piles {name}\n* Última modificació el dia {lastMod}",
|
|
||||||
"{stack} in {board}" : "{stack} a {board}",
|
|
||||||
"Click to expand description" : "Feu clic per ampliar la descripció",
|
|
||||||
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Creat el {created}\n* Última modificació el dia {lastMod}\n* {nbAttachments} fitxers adjunts\n* {nbComments} comentaris",
|
|
||||||
"{nbCards} cards" : "{nbCards} targetes",
|
|
||||||
"Click to expand comment" : "Feu clic per ampliar el comentari",
|
|
||||||
"Create a new card" : "Crea una nova targeta",
|
|
||||||
"Card title" : "Títol de la targeta",
|
|
||||||
"Create card" : "Crea una targeta",
|
|
||||||
"Creating the new card …" : "Creant la nova targeta …",
|
|
||||||
"Card \"{card}\" was added to \"{board}\"" : "La targeta \"{card}\" s'ha afegit a \"{board}\"",
|
|
||||||
"Open card" : "Obre la targeta",
|
|
||||||
"Close" : "Tanca",
|
|
||||||
"No upcoming cards" : "No hi ha pròximes targetes",
|
"No upcoming cards" : "No hi ha pròximes targetes",
|
||||||
"upcoming cards today" : "properes targetes avui",
|
|
||||||
"upcoming cards tomorrow" : "properes targetes demà",
|
|
||||||
"upcoming cards" : "pròximes targetes",
|
"upcoming cards" : "pròximes targetes",
|
||||||
"New card" : "Nova targeta",
|
|
||||||
"Due on {date}" : "Venciment el dia {date}",
|
|
||||||
"Tomorrow – {timeLocale}" : "Demà: {timeLocale}",
|
|
||||||
"Later today – {timeLocale}" : "Avui més tard: {timeLocale}",
|
|
||||||
"Link to a board" : "Enllaça a un tauler",
|
"Link to a board" : "Enllaça a un tauler",
|
||||||
"Link to a card" : "Enllaç una targeta",
|
"Link to a card" : "Enllaç una targeta",
|
||||||
"Create a card" : "Crea una targeta",
|
"Create a card" : "Crea una targeta",
|
||||||
@@ -361,19 +281,6 @@
|
|||||||
"Error creating the share" : "S'ha produït un error en crear la compartició",
|
"Error creating the share" : "S'ha produït un error en crear la compartició",
|
||||||
"Share with a Deck card" : "Compartir amb una targeta de Deck",
|
"Share with a Deck card" : "Compartir amb una targeta de Deck",
|
||||||
"Share {file} with a Deck card" : "Compartir {file} amb una targeta de Deck",
|
"Share {file} with a Deck card" : "Compartir {file} amb una targeta de Deck",
|
||||||
"Share" : "Compartir",
|
"Share" : "Compartir"
|
||||||
"A <strong>card description</strong> inside the Deck app has been changed" : "S'ha canviat una <strong>descripció de targeta</strong> a l'aplicació Tauler",
|
|
||||||
"Timeline" : "Línia de temps",
|
|
||||||
"Share board with a user, group or circle …" : "Compartir tauler amb un usuari, grup o cercle …",
|
|
||||||
"Searching for users, groups and circles …" : "Buscant usuaris, grups i cercles …",
|
|
||||||
"(Circle)" : "(Cercle)",
|
|
||||||
"Assign to users" : "Assignació als usuaris",
|
|
||||||
"Assign to users/groups/circles" : "Assignació a usuaris/grups/cercles",
|
|
||||||
"Due date" : "Data de caducitat",
|
|
||||||
"Next week" : "Setmana següent",
|
|
||||||
"Next month" : "Mes següent",
|
|
||||||
"List is empty" : "La llista és buida",
|
|
||||||
"Limit deck usage of groups" : "Limitar l'ús del tauler de grups",
|
|
||||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitant el Tauler bloquejarà la creació de taulers als usuaris que no són part d'aquests grups. Els usuaris podran seguir treballant en els taulers que hagin estat compartits amb ells."
|
|
||||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||||
}
|
}
|
||||||
167
l10n/cs.js
@@ -37,10 +37,6 @@ OC.L10N.register(
|
|||||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user} zaarchivoval(a) kartu {card} ve sloupci {stack} na tabuli {board}",
|
"{user} has archived card {card} in list {stack} on board {board}" : "{user} zaarchivoval(a) kartu {card} ve sloupci {stack} na tabuli {board}",
|
||||||
"You have unarchived card {card} in list {stack} on board {board}" : "Zrušili jste archivacii karty {card} ve sloupci {stack} na tabuli {board}",
|
"You have unarchived card {card} in list {stack} on board {board}" : "Zrušili jste archivacii karty {card} ve sloupci {stack} na tabuli {board}",
|
||||||
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} zrušil(a) archivaci karty {card} ve sloupci {stack} na tabuli {board}",
|
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} zrušil(a) archivaci karty {card} ve sloupci {stack} na tabuli {board}",
|
||||||
"You have marked the card {card} as done in list {stack} on board {board}" : "Označili jste kartu {card} jako splněnou v seznamu {stack} na tabuli {board}",
|
|
||||||
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} označil(a) {card} jako splněnou {stack} na tabuli {board}",
|
|
||||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "Zrušili jste označení karty {card} jako splněné v seznamu {stack} na tabuli {board}",
|
|
||||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} zrušil(a) označení {card} jako splněné {stack} na tabuli {board}",
|
|
||||||
"You have removed the due date of card {card}" : "Odebrali jste termín u karty {card}",
|
"You have removed the due date of card {card}" : "Odebrali jste termín u karty {card}",
|
||||||
"{user} has removed the due date of card {card}" : "{user} odebral(a) termín u karty {card}",
|
"{user} has removed the due date of card {card}" : "{user} odebral(a) termín u karty {card}",
|
||||||
"You have set the due date of card {card} to {after}" : "Nastavili jste termín u karty {card} na {after}",
|
"You have set the due date of card {card} to {after}" : "Nastavili jste termín u karty {card} na {after}",
|
||||||
@@ -67,15 +63,11 @@ OC.L10N.register(
|
|||||||
"{user} has restored the attachment {attachment} to card {card}" : "{user} obnovil(a) přílohu {attachment} ke kartě {card}",
|
"{user} has restored the attachment {attachment} to card {card}" : "{user} obnovil(a) přílohu {attachment} ke kartě {card}",
|
||||||
"You have commented on card {card}" : "Přidali jste komentář na kartě {card}",
|
"You have commented on card {card}" : "Přidali jste komentář na kartě {card}",
|
||||||
"{user} has commented on card {card}" : "{user} přidal(a) komentář na kartě {card}",
|
"{user} has commented on card {card}" : "{user} přidal(a) komentář na kartě {card}",
|
||||||
|
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Popis karty</strong> v aplikaci Deck byl změněn",
|
||||||
"Deck" : "Deck",
|
"Deck" : "Deck",
|
||||||
"Changes in the <strong>Deck app</strong>" : "Změny v <strong>aplikaci Deck</strong>",
|
"Changes in the <strong>Deck app</strong>" : "Změny v <strong>aplikaci Deck</strong>",
|
||||||
"A <strong>board, list or card</strong> was changed" : "<strong>tabule, seznam nebo karta</strong> byla změněna",
|
|
||||||
"A <strong>comment</strong> was created on a card" : "Na kartě byl vytvořen <strong>komentář</strong>",
|
"A <strong>comment</strong> was created on a card" : "Na kartě byl vytvořen <strong>komentář</strong>",
|
||||||
"A <strong>card description</strong> has been changed" : "<strong>Popis karty</strong> byl změněn",
|
|
||||||
"Cards due today" : "Karty, kterým končí termín dnes",
|
|
||||||
"Cards due tomorrow" : "Karty, které mají termín zítra",
|
|
||||||
"Upcoming cards" : "Nadcházející karty",
|
"Upcoming cards" : "Nadcházející karty",
|
||||||
"Load more" : "Načíst více",
|
|
||||||
"Personal" : "Osobní",
|
"Personal" : "Osobní",
|
||||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kartu „%s“ na „%s“ vám přiřadil(a) %s.",
|
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kartu „%s“ na „%s“ vám přiřadil(a) %s.",
|
||||||
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} vám přiřadil(a) kartu {deck-card} na tabuli {deck-board}.",
|
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} vám přiřadil(a) kartu {deck-card} na tabuli {deck-board}.",
|
||||||
@@ -85,14 +77,8 @@ OC.L10N.register(
|
|||||||
"{user} has mentioned you in a comment on {deck-card}." : "{user} vás zmínil(a) v komentáři na kartě {deck-card}.",
|
"{user} has mentioned you in a comment on {deck-card}." : "{user} vás zmínil(a) v komentáři na kartě {deck-card}.",
|
||||||
"The board \"%s\" has been shared with you by %s." : "Uživatel %s vám nasdílel(a) tabuli „%s“.",
|
"The board \"%s\" has been shared with you by %s." : "Uživatel %s vám nasdílel(a) tabuli „%s“.",
|
||||||
"{user} has shared {deck-board} with you." : "{user} vám nasdílel(a) tabuli {deck-board}.",
|
"{user} has shared {deck-board} with you." : "{user} vám nasdílel(a) tabuli {deck-board}.",
|
||||||
"Deck board" : "Tabule aplikace Deck",
|
|
||||||
"Owned by %1$s" : "Vlastní %1$s",
|
|
||||||
"Deck boards, cards and comments" : "Tabule, karty a komentáře aplikace Deck",
|
|
||||||
"From %1$s, in %2$s/%3$s, owned by %4$s" : "Od %1$s, v %2$s/%3$s, vlastní %4$s",
|
|
||||||
"Create a new deck card" : "Vytvořit novou kartu v Deck",
|
|
||||||
"Card comments" : "Komentáře v kartách",
|
"Card comments" : "Komentáře v kartách",
|
||||||
"%s on %s" : "%s na %s",
|
"%s on %s" : "%s na %s",
|
||||||
"Deck boards and cards" : "Tabule a karty aplikace Deck",
|
|
||||||
"No data was provided to create an attachment." : "Nebyla poskytnuta žádná data pro vytvoření přílohy.",
|
"No data was provided to create an attachment." : "Nebyla poskytnuta žádná data pro vytvoření přílohy.",
|
||||||
"Finished" : "Dokončeno",
|
"Finished" : "Dokončeno",
|
||||||
"To review" : "K revizi",
|
"To review" : "K revizi",
|
||||||
@@ -114,22 +100,26 @@ OC.L10N.register(
|
|||||||
"Could not write file to disk" : "Soubor se nedaří se zapsat na úložiště",
|
"Could not write file to disk" : "Soubor se nedaří se zapsat na úložiště",
|
||||||
"A PHP extension stopped the file upload" : "PHP rozšíření zastavilo nahrávání souboru.",
|
"A PHP extension stopped the file upload" : "PHP rozšíření zastavilo nahrávání souboru.",
|
||||||
"No file uploaded or file size exceeds maximum of %s" : "Nebyl nahrán žádný soubor nebo jeho velikost přesáhla %s",
|
"No file uploaded or file size exceeds maximum of %s" : "Nebyl nahrán žádný soubor nebo jeho velikost přesáhla %s",
|
||||||
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Tento komentář je delší než %s znaků.\nPřidán jako příloha ke kartě nazvané %s.\nDostupné na URL: %s.",
|
|
||||||
"Card not found" : "Karta nebyla nalezena",
|
"Card not found" : "Karta nebyla nalezena",
|
||||||
"Path is already shared with this card" : "Popis umístění už je touto kartou sdíleno",
|
"Path is already shared with this card" : "Popis umístění už je touto kartou sdíleno",
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "Neplatné datum – je třeba, aby formát data byl RRRR-MM-DD",
|
"Invalid date, date format must be YYYY-MM-DD" : "Neplatné datum – je třeba, aby formát data byl RRRR-MM-DD",
|
||||||
"Personal planning and team project organization" : "Osobní plánování a organizování týmového projektu",
|
"Personal planning and team project organization" : "Osobní plánování a organizování týmového projektu",
|
||||||
"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 je nástroj cílený na osobní nebo projektové plánování týmů v Kanban stylu, napojený do Nextcloud.\n\n\n- 📥 Zadávejte a uspořádávejte své úkoly do karet\n- 📄 Zapisujte si dodatečné poznámky (v Markdown) \n- 🔖 Přiřazujte štítky pro ještě lepší uspořádání\n- 👥 Sdílejte se svým týmem, přáteli nebo rodinou\n- 📎 Připojte soubory a vložte je do (Markdown) popisu \n- 💬 Diskutujte se svým týmem prostřednictvím komentářů\n- ⚡ Udržte si přehled o změnách prostřednictvím sledování proudu aktivit\n- 🚀 Dostaňte svůj projekt pod kontrolu",
|
"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 je nástroj cílený na osobní nebo projektové plánování týmů v Kanban stylu, vestavěný v Nextcloud.\n\n\n- 📥 Zadávejte a uspořádávejte své úkoly do karet\n- 📄 Zapisujte si dodatečné poznámky \n- 🔖 Přiřazujte štítky pro ještě lepší organizaci\n- 👥 Sdílejte se svým týmem, přáteli nebo rodinou\n- 🚀 Dostaňte svůj projekt pod kontrolu",
|
||||||
|
"Card details" : "Podrobnosti o kartě",
|
||||||
"Add board" : "Přidat tabuli",
|
"Add board" : "Přidat tabuli",
|
||||||
"Select the board to link to a project" : "Vyberte tabuli kterou propojit s projektem",
|
"Select the board to link to a project" : "Vyberte tabuli kterou propojit s projektem",
|
||||||
"Search by board title" : "Hledat podle názvu tabule",
|
"Search by board title" : "Hledat podle názvu tabule",
|
||||||
"Select board" : "Vybrat tabuli",
|
"Select board" : "Vybrat tabuli",
|
||||||
"Move card to another board" : "Přesunout kartu na jinou tabuli",
|
"Create a new card" : "Vytvořit novou kartu",
|
||||||
"Select a board" : "Vybrat tabuli",
|
"Select a board" : "Vybrat tabuli",
|
||||||
"No lists available" : "Nejsou k dispozici žádné seznamy",
|
|
||||||
"Select a list" : "Vyberte sloupec",
|
"Select a list" : "Vyberte sloupec",
|
||||||
"Move card" : "Přesunout kartu",
|
"Card title" : "Název karty",
|
||||||
"Cancel" : "Storno",
|
"Cancel" : "Storno",
|
||||||
|
"Creating the new card …" : "Vytváření nové karty…",
|
||||||
|
"Card \"{card}\" was added to \"{board}\"" : "Karta „{card}“ byla přidána na „{board}“",
|
||||||
|
"Open card" : "Otevřít kartu",
|
||||||
|
"Close" : "Zavřít",
|
||||||
|
"Create card" : "Vytvořit kartu",
|
||||||
"Select a card" : "Vybrat kartu",
|
"Select a card" : "Vybrat kartu",
|
||||||
"Select the card to link to a project" : "Vyberte kartu kterou propojit s projektem",
|
"Select the card to link to a project" : "Vyberte kartu kterou propojit s projektem",
|
||||||
"Link to card" : "Propojit s kartou",
|
"Link to card" : "Propojit s kartou",
|
||||||
@@ -144,9 +134,8 @@ OC.L10N.register(
|
|||||||
"Archived cards" : "Archivované karty",
|
"Archived cards" : "Archivované karty",
|
||||||
"Add list" : "Přidat seznam",
|
"Add list" : "Přidat seznam",
|
||||||
"List name" : "Název seznamu",
|
"List name" : "Název seznamu",
|
||||||
"Active filters" : "Zapnuté filtry",
|
|
||||||
"Apply filter" : "Uplatnit filtr",
|
"Apply filter" : "Uplatnit filtr",
|
||||||
"Filter by tag" : "Filtrovat podle štítku",
|
"Filter by tag" : "Filtrovat podle příznaků",
|
||||||
"Filter by assigned user" : "Filtrovat podle uživatele, který je úkolem pověřen",
|
"Filter by assigned user" : "Filtrovat podle uživatele, který je úkolem pověřen",
|
||||||
"Unassigned" : "Nepřiřazeno",
|
"Unassigned" : "Nepřiřazeno",
|
||||||
"Filter by due date" : "Filtrovat podle termínu",
|
"Filter by due date" : "Filtrovat podle termínu",
|
||||||
@@ -156,46 +145,36 @@ OC.L10N.register(
|
|||||||
"Next 30 days" : "Příštích 30 dnů",
|
"Next 30 days" : "Příštích 30 dnů",
|
||||||
"No due date" : "Žádný termín",
|
"No due date" : "Žádný termín",
|
||||||
"Clear filter" : "Vyčistit filtr",
|
"Clear filter" : "Vyčistit filtr",
|
||||||
"View Modes" : "Zobrazit režimy",
|
|
||||||
"Toggle View Modes" : "Přepnout mezi režimy zobrazení",
|
|
||||||
"Hide archived cards" : "Skrýt archivované karty",
|
"Hide archived cards" : "Skrýt archivované karty",
|
||||||
"Show archived cards" : "Zobrazit archivované karty",
|
"Show archived cards" : "Zobrazit archivované karty",
|
||||||
"Toggle compact mode" : "Vyp/zap. kompaktní režim",
|
"Toggle compact mode" : "Vyp/zap. kompaktní režim",
|
||||||
"Hide card cover images" : "Skrýt obrázky přebalu karet",
|
|
||||||
"Show card cover images" : "Zobrazit obrázky přebalu karet",
|
|
||||||
"Open details" : "Otevřít podrobnosti",
|
|
||||||
"Details" : "Podrobnosti",
|
"Details" : "Podrobnosti",
|
||||||
"Currently present people" : "Nyní přítomní lidé",
|
|
||||||
"Loading board" : "Načítání tabule",
|
"Loading board" : "Načítání tabule",
|
||||||
"Board not found" : "Tabule nenalezena",
|
"No lists available" : "Nejsou k dispozici žádné seznamy",
|
||||||
"Create a new list to add cards to this board" : "Pro přidání karet na tuto tabuli vytvořte nový seznam",
|
"Create a new list to add cards to this board" : "Pro přidání karet na tuto tabuli vytvořte nový seznam",
|
||||||
|
"Board not found" : "Tabule nenalezena",
|
||||||
"Sharing" : "Sdílení",
|
"Sharing" : "Sdílení",
|
||||||
"Tags" : "Štítky",
|
"Tags" : "Štítky",
|
||||||
"Deleted items" : "Smazané položky",
|
"Deleted items" : "Smazané položky",
|
||||||
"Activity" : "Aktivita",
|
"Timeline" : "Časová osa",
|
||||||
"Deleted lists" : "Smazané seznamy",
|
"Deleted lists" : "Smazané seznamy",
|
||||||
"Undo" : "Vrátit zpět",
|
"Undo" : "Vrátit zpět",
|
||||||
"Deleted cards" : "Smazané karty",
|
"Deleted cards" : "Smazané karty",
|
||||||
|
"Share board with a user, group or circle …" : "Sdílet tabuli s uživatelem, skupinou nebo okruhem…",
|
||||||
|
"Searching for users, groups and circles …" : "Hledání v uživatelích, skupinách a okruzích…",
|
||||||
"No participants found" : "Nenalezeni žádní účastníci",
|
"No participants found" : "Nenalezeni žádní účastníci",
|
||||||
"Board owner" : "Vlastník tabule",
|
"Board owner" : "Vlastník tabule",
|
||||||
"(Group)" : "(Skupina)",
|
"(Group)" : "(Skupina)",
|
||||||
|
"(Circle)" : "(Okruh)",
|
||||||
"Can edit" : "Může upravovat",
|
"Can edit" : "Může upravovat",
|
||||||
"Can share" : "Může sdílet",
|
"Can share" : "Může sdílet",
|
||||||
"Can manage" : "Může spravovat",
|
"Can manage" : "Může spravovat",
|
||||||
"Owner" : "Vlastník",
|
|
||||||
"Delete" : "Smazat",
|
"Delete" : "Smazat",
|
||||||
"Failed to create share with {displayName}" : "Nepodařilo se vytvořit sdílení s {displayName}",
|
"Failed to create share with {displayName}" : "Nepodařilo se vytvořit sdílení s {displayName}",
|
||||||
"Are you sure you want to transfer the board {title} to {user}?" : "Opravdu chcete předat vlastnictví tabule {title} uživateli {user}?",
|
"Add a new list" : "Přidat nový sloupec",
|
||||||
"Transfer the board." : "Předat vlastnictví tabule.",
|
|
||||||
"Transfer" : "Předat vlastnictví",
|
|
||||||
"The board has been transferred to {user}" : "Vlastnictví tabule bylo předáno uživateli {user}",
|
|
||||||
"Failed to transfer the board to {user}" : "Nepodařilo se předat vlastnictví tabule uživateli {user}",
|
|
||||||
"Edit list title" : "Upravit nadpis seznamu",
|
|
||||||
"Archive all cards" : "Archivovat všechny karty",
|
"Archive all cards" : "Archivovat všechny karty",
|
||||||
"Unarchive all cards" : "Zrušit archivaci všech karet",
|
|
||||||
"Delete list" : "Smazat seznam",
|
"Delete list" : "Smazat seznam",
|
||||||
"Archive all cards in this list" : "Archivovat všechny karty v tomto seznamu",
|
"Archive all cards in this list" : "Archivovat všechny karty v tomto seznamu",
|
||||||
"Unarchive all cards in this list" : "Zrušit archivaci všech karet v tomto seznamu",
|
|
||||||
"Add a new card" : "Přidat novou kartu",
|
"Add a new card" : "Přidat novou kartu",
|
||||||
"Card name" : "Název karty",
|
"Card name" : "Název karty",
|
||||||
"List deleted" : "Seznam smazán",
|
"List deleted" : "Seznam smazán",
|
||||||
@@ -204,7 +183,6 @@ OC.L10N.register(
|
|||||||
"title and color value must be provided" : "je třeba zadat nadpis a zvolit barvu",
|
"title and color value must be provided" : "je třeba zadat nadpis a zvolit barvu",
|
||||||
"Board name" : "Název tabule",
|
"Board name" : "Název tabule",
|
||||||
"Members" : "Členové",
|
"Members" : "Členové",
|
||||||
"Assign a user to this card…" : "Přiřadit uživatele k této kartě…",
|
|
||||||
"Upload new files" : "Nahrát nové soubory",
|
"Upload new files" : "Nahrát nové soubory",
|
||||||
"Share from Files" : "Sdílet ze Souborů",
|
"Share from Files" : "Sdílet ze Souborů",
|
||||||
"Pending share" : "Čekající sdílení",
|
"Pending share" : "Čekající sdílení",
|
||||||
@@ -225,6 +203,18 @@ OC.L10N.register(
|
|||||||
"The title cannot be empty." : "Nadpis je třeba vyplnit.",
|
"The title cannot be empty." : "Nadpis je třeba vyplnit.",
|
||||||
"No comments yet. Begin the discussion!" : "Zatím bez komentářů. Zahajte diskuzi!",
|
"No comments yet. Begin the discussion!" : "Zatím bez komentářů. Zahajte diskuzi!",
|
||||||
"Failed to load comments" : "Načtení komentářů se nezdařilo",
|
"Failed to load comments" : "Načtení komentářů se nezdařilo",
|
||||||
|
"Assign a tag to this card…" : "Přiřadit této kartě štítek…",
|
||||||
|
"Assign to users" : "Přiřadit k uživatelům",
|
||||||
|
"Assign to users/groups/circles" : "Přiřadit uživatelům/skupinám/okruhům",
|
||||||
|
"Assign a user to this card…" : "Přiřadit uživatele k této kartě…",
|
||||||
|
"Due date" : "Termín",
|
||||||
|
"Set a due date" : "Vybrat termín",
|
||||||
|
"Remove due date" : "Odstranit termín",
|
||||||
|
"Select Date" : "Vybrat datum",
|
||||||
|
"Today" : "Dnes",
|
||||||
|
"Tomorrow" : "Zítra",
|
||||||
|
"Next week" : "Příští týden",
|
||||||
|
"Next month" : "Příští měsíc",
|
||||||
"Save" : "Uložit",
|
"Save" : "Uložit",
|
||||||
"The comment cannot be empty." : "Komentář je třeba vyplnit.",
|
"The comment cannot be empty." : "Komentář je třeba vyplnit.",
|
||||||
"The comment cannot be longer than 1000 characters." : "Délka komentáře může být nejvýše 1 000 znaků.",
|
"The comment cannot be longer than 1000 characters." : "Délka komentáře může být nejvýše 1 000 znaků.",
|
||||||
@@ -232,7 +222,6 @@ OC.L10N.register(
|
|||||||
"Cancel reply" : "Zrušit odpověď",
|
"Cancel reply" : "Zrušit odpověď",
|
||||||
"Reply" : "Odpovědět",
|
"Reply" : "Odpovědět",
|
||||||
"Update" : "Aktualizovat",
|
"Update" : "Aktualizovat",
|
||||||
"Created:" : "Vytvořeno:",
|
|
||||||
"Description" : "Popis",
|
"Description" : "Popis",
|
||||||
"(Unsaved)" : "(Neuloženo)",
|
"(Unsaved)" : "(Neuloženo)",
|
||||||
"(Saving…)" : "(Ukládání…)",
|
"(Saving…)" : "(Ukládání…)",
|
||||||
@@ -242,73 +231,29 @@ OC.L10N.register(
|
|||||||
"Add Attachment" : "Přidat přílohu",
|
"Add Attachment" : "Přidat přílohu",
|
||||||
"Write a description …" : "Zadejte popis…",
|
"Write a description …" : "Zadejte popis…",
|
||||||
"Choose attachment" : "Zvolte přílohu",
|
"Choose attachment" : "Zvolte přílohu",
|
||||||
"Assign a due date to this card…" : "Přiradit této kartě termín…",
|
|
||||||
"Set a due date" : "Vybrat termín",
|
|
||||||
"Add due date" : "Přidat termín",
|
|
||||||
"Choose a date" : "Zvolit datum",
|
|
||||||
"Remove due date" : "Odstranit termín",
|
|
||||||
"Completed" : "Dokončeno",
|
|
||||||
"Due at:" : "Termín v:",
|
|
||||||
"Not completed" : "Nedokončeno",
|
|
||||||
"Unarchive card" : "Zrušit archivaci karty",
|
|
||||||
"Archive card" : "Archivovat kartu",
|
|
||||||
"Select Date" : "Vybrat datum",
|
|
||||||
"Set due date for later today" : "Nastavit termín na dnešek",
|
|
||||||
"Set due date for tomorrow" : "Nastavit termín na zítřek",
|
|
||||||
"Set due date for this weekend" : "Nastavit termín na tento týden",
|
|
||||||
"Set due date for next week" : "Nastavit termín na příští týden",
|
|
||||||
"Assign a tag to this card…" : "Přiřadit této kartě štítek…",
|
|
||||||
"Create a new tag:" : "Vytvořit nový štítek:",
|
|
||||||
"(group)" : "(skupina)",
|
"(group)" : "(skupina)",
|
||||||
"Next week – {timeLocale}" : "Příští týden – {timeLocale}",
|
|
||||||
"Todo items" : "Položky k udělání",
|
|
||||||
"{count} comments, {unread} unread" : "{count} komentářů, {unread} nepřečtených",
|
"{count} comments, {unread} unread" : "{count} komentářů, {unread} nepřečtených",
|
||||||
"Edit card title" : "Upravit nadpis karty",
|
|
||||||
"Card details" : "Podrobnosti o kartě",
|
|
||||||
"Assign to me" : "Přiřadit mě",
|
"Assign to me" : "Přiřadit mě",
|
||||||
"Unassign myself" : "Zrušit přiřazení sobě",
|
"Unassign myself" : "Zrušit přiřazení sobě",
|
||||||
"Mark as not done" : "Označit jako nehotové",
|
"Move card" : "Přesunout kartu",
|
||||||
"Mark as done" : "Označit jako hotové",
|
"Unarchive card" : "Zrušit archivaci karty",
|
||||||
|
"Archive card" : "Archivovat kartu",
|
||||||
"Delete card" : "Smazat kartu",
|
"Delete card" : "Smazat kartu",
|
||||||
|
"Move card to another board" : "Přesunout kartu na jinou tabuli",
|
||||||
"Card deleted" : "Karta smazána",
|
"Card deleted" : "Karta smazána",
|
||||||
"seconds ago" : "před několika sekundami",
|
"seconds ago" : "před několika sekundami",
|
||||||
"Keyboard shortcuts" : "Klávesové zkratky",
|
|
||||||
"Board actions" : "Akce ohledně tabule",
|
|
||||||
"Keyboard shortcut" : "Klávesová zkratka",
|
|
||||||
"Action" : "Akce",
|
|
||||||
"Shift" : "Shift",
|
|
||||||
"Navigate between cards" : "Pohyb mezi kartami",
|
|
||||||
"Close card details" : "Zavřít podrobnosti o kartě",
|
|
||||||
"Ctrl" : "Ctrl",
|
|
||||||
"Search" : "Hledat",
|
|
||||||
"Show card filters" : "Zobrazit filtry karty",
|
|
||||||
"Clear card filters" : "Vyčistit filtry karty",
|
|
||||||
"Show help dialog" : "Zobrazit dialog nápovědy",
|
|
||||||
"Card actions" : "Akce ohledně karty",
|
|
||||||
"The following actions can be triggered on the currently highlighted card" : "Na právě zvýrazněné kartě je možné spustit následující akce",
|
|
||||||
"Enter" : "Konec řádku",
|
|
||||||
"Space" : "Mezera",
|
|
||||||
"Open card details" : "Otevřít podrobnosti o kartě",
|
|
||||||
"Edit the card title" : "Upravit nadpis karty",
|
|
||||||
"Assign yourself to the current card" : "Přiřadit stávající kartu sobě",
|
|
||||||
"Archive/unarchive the current card" : "Zaarchivovat / zrušit archivaci stávající karty",
|
|
||||||
"Mark card as completed/not completed" : "Označit kartu jako (ne)dokončenou",
|
|
||||||
"Open card menu" : "Otevřít nabídku karty",
|
|
||||||
"All boards" : "Všechny tabule",
|
"All boards" : "Všechny tabule",
|
||||||
"Archived boards" : "Archivované tabule",
|
"Archived boards" : "Archivované tabule",
|
||||||
"Shared with you" : "Sdíleno s vámi",
|
"Shared with you" : "Sdíleno s vámi",
|
||||||
"Deck settings" : "Nastavení pro Deck",
|
|
||||||
"Use bigger card view" : "Použít větší zobrazení karet",
|
"Use bigger card view" : "Použít větší zobrazení karet",
|
||||||
"Show card ID badge" : "Zobrazit odznáček s identifikátorem karty",
|
|
||||||
"Show boards in calendar/tasks" : "Zobrazit tabule v kalendáři/úkolech",
|
"Show boards in calendar/tasks" : "Zobrazit tabule v kalendáři/úkolech",
|
||||||
"Limit board creation to some groups" : "Umožnit vytváření tabulí pouze vybraným skupinám",
|
"Limit deck usage of groups" : "Omezit využití deck na skupiny",
|
||||||
"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." : "Uživatelé, kteří nejsou členy těchto skupin nebudou moci vytvářet své vlastní tabule, ale pořád budou moci pracovat na tabulích, které jim byly nasdíleny.",
|
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Omezení nastavené pro Deck brání uživatelům, kteří nejsou součástí těchto skupin, ve vytváření vlastních tabulí. Nicméně i tak ale pořád budou moci pracovat na tabulích, které jsou jim nasdíleny.",
|
||||||
"Board details" : "Podrobnosti o tabuli",
|
"Board details" : "Podrobnosti o tabuli",
|
||||||
"Edit board" : "Upravit tabuli",
|
"Edit board" : "Upravit tabuli",
|
||||||
"Clone board" : "Klonovat tabuli",
|
"Clone board" : "Klonovat tabuli",
|
||||||
"Unarchive board" : "Vrátit tabuli zpět z archivu",
|
"Unarchive board" : "Vrátit tabuli zpět z archivu",
|
||||||
"Archive board" : "Archivovat tabuli",
|
"Archive board" : "Archivovat tabuli",
|
||||||
"Export board" : "Exportovat tabuli",
|
|
||||||
"Turn on due date reminders" : "Zapnout upomínky termínů",
|
"Turn on due date reminders" : "Zapnout upomínky termínů",
|
||||||
"Turn off due date reminders" : "Vypnout upomínky termínů",
|
"Turn off due date reminders" : "Vypnout upomínky termínů",
|
||||||
"Due date reminders" : "Upomínky termínů",
|
"Due date reminders" : "Upomínky termínů",
|
||||||
@@ -320,36 +265,15 @@ OC.L10N.register(
|
|||||||
"Only assigned cards" : "Pouze přiřazené karty",
|
"Only assigned cards" : "Pouze přiřazené karty",
|
||||||
"No reminder" : "Bez připomínky",
|
"No reminder" : "Bez připomínky",
|
||||||
"An error occurred" : "Došlo k chybě",
|
"An error occurred" : "Došlo k chybě",
|
||||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Opravdu chcete tabuli {title} smazat? Toto smaže veškerá data této tabule, včetně archivovaných karet.",
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Opravdu chcete tabuly {title} smazat? Toto smaže veškerá data této tabule.",
|
||||||
"Delete the board?" : "Smazat tabuli?",
|
"Delete the board?" : "Smazat tabuli?",
|
||||||
"Loading filtered view" : "Načítání filtrovaného pohledu",
|
"Loading filtered view" : "Načítání filtrovaného pohledu",
|
||||||
"Today" : "Dnes",
|
"This week" : "Tento týden",
|
||||||
"Tomorrow" : "Zítra",
|
|
||||||
"No due" : "Žádný termín",
|
"No due" : "Žádný termín",
|
||||||
"Search for {searchQuery} in all boards" : "Hledat {searchQuery} na všech tabulích",
|
"Search for {searchQuery} in all boards" : "Hledat {searchQuery} na všech tabulích",
|
||||||
"No results found" : "Nenalezeny žádné výsledky",
|
"No results found" : "Nenalezeny žádné výsledky",
|
||||||
"This weekend – {timeLocale}" : "Tento víkend – {timeLocale}",
|
|
||||||
"Deck board {name}\n* Last modified on {lastMod}" : "Deck karta {name}\n* Naposledy změněno {lastMod}",
|
|
||||||
"{stack} in {board}" : "{stack} v {board}",
|
|
||||||
"Click to expand description" : "Popis rozbalíte kliknutím",
|
|
||||||
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Vytvořeno {created}\n* Naposledy upraveno {lastMod}\n* {nbAttachments} příloh\n* {nbComments} komentářů",
|
|
||||||
"{nbCards} cards" : "{nbCards} karet",
|
|
||||||
"Click to expand comment" : "Komentář rozbalíte kliknutím",
|
|
||||||
"Create a new card" : "Vytvořit novou kartu",
|
|
||||||
"Card title" : "Název karty",
|
|
||||||
"Create card" : "Vytvořit kartu",
|
|
||||||
"Creating the new card …" : "Vytváření nové karty…",
|
|
||||||
"Card \"{card}\" was added to \"{board}\"" : "Karta „{card}“ byla přidána na „{board}“",
|
|
||||||
"Open card" : "Otevřít kartu",
|
|
||||||
"Close" : "Zavřít",
|
|
||||||
"No upcoming cards" : "Žádné nadcházející karty",
|
"No upcoming cards" : "Žádné nadcházející karty",
|
||||||
"upcoming cards today" : "nadcházející karty na dnešek",
|
|
||||||
"upcoming cards tomorrow" : "nadcházející karty na zítřek",
|
|
||||||
"upcoming cards" : "nadcházející karty",
|
"upcoming cards" : "nadcházející karty",
|
||||||
"New card" : "Nová karta",
|
|
||||||
"Due on {date}" : "Termín {date}",
|
|
||||||
"Tomorrow – {timeLocale}" : "Zítra – {timeLocale}",
|
|
||||||
"Later today – {timeLocale}" : "Později dnes – {timeLocale}",
|
|
||||||
"Link to a board" : "Propojit s tabulí",
|
"Link to a board" : "Propojit s tabulí",
|
||||||
"Link to a card" : "Propojit s kartou",
|
"Link to a card" : "Propojit s kartou",
|
||||||
"Create a card" : "Vytvořit kartu",
|
"Create a card" : "Vytvořit kartu",
|
||||||
@@ -360,19 +284,6 @@ OC.L10N.register(
|
|||||||
"Error creating the share" : "Chyba při vytváření sdílení",
|
"Error creating the share" : "Chyba při vytváření sdílení",
|
||||||
"Share with a Deck card" : "Sdílet s kartou aplikace Deck",
|
"Share with a Deck card" : "Sdílet s kartou aplikace Deck",
|
||||||
"Share {file} with a Deck card" : "Sdílet {file} s kartou aplikace Deck",
|
"Share {file} with a Deck card" : "Sdílet {file} s kartou aplikace Deck",
|
||||||
"Share" : "Sdílet",
|
"Share" : "Sdílet"
|
||||||
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Popis karty</strong> v aplikaci Deck byl změněn",
|
|
||||||
"Timeline" : "Časová osa",
|
|
||||||
"Share board with a user, group or circle …" : "Sdílet tabuli s uživatelem, skupinou nebo okruhem…",
|
|
||||||
"Searching for users, groups and circles …" : "Hledání v uživatelích, skupinách a okruzích…",
|
|
||||||
"(Circle)" : "(Okruh)",
|
|
||||||
"Assign to users" : "Přiřadit k uživatelům",
|
|
||||||
"Assign to users/groups/circles" : "Přiřadit uživatelům/skupinám/okruhům",
|
|
||||||
"Due date" : "Termín",
|
|
||||||
"Next week" : "Příští týden",
|
|
||||||
"Next month" : "Příští měsíc",
|
|
||||||
"List is empty" : "Seznam je prázdný",
|
|
||||||
"Limit deck usage of groups" : "Omezit využití deck na skupiny",
|
|
||||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Omezení nastavené pro Deck brání uživatelům, kteří nejsou součástí těchto skupin, ve vytváření vlastních tabulí. Nicméně i tak ale pořád budou moci pracovat na tabulích, které jsou jim nasdíleny."
|
|
||||||
},
|
},
|
||||||
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
|
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
|
||||||
|
|||||||
167
l10n/cs.json
@@ -35,10 +35,6 @@
|
|||||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user} zaarchivoval(a) kartu {card} ve sloupci {stack} na tabuli {board}",
|
"{user} has archived card {card} in list {stack} on board {board}" : "{user} zaarchivoval(a) kartu {card} ve sloupci {stack} na tabuli {board}",
|
||||||
"You have unarchived card {card} in list {stack} on board {board}" : "Zrušili jste archivacii karty {card} ve sloupci {stack} na tabuli {board}",
|
"You have unarchived card {card} in list {stack} on board {board}" : "Zrušili jste archivacii karty {card} ve sloupci {stack} na tabuli {board}",
|
||||||
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} zrušil(a) archivaci karty {card} ve sloupci {stack} na tabuli {board}",
|
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} zrušil(a) archivaci karty {card} ve sloupci {stack} na tabuli {board}",
|
||||||
"You have marked the card {card} as done in list {stack} on board {board}" : "Označili jste kartu {card} jako splněnou v seznamu {stack} na tabuli {board}",
|
|
||||||
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} označil(a) {card} jako splněnou {stack} na tabuli {board}",
|
|
||||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "Zrušili jste označení karty {card} jako splněné v seznamu {stack} na tabuli {board}",
|
|
||||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} zrušil(a) označení {card} jako splněné {stack} na tabuli {board}",
|
|
||||||
"You have removed the due date of card {card}" : "Odebrali jste termín u karty {card}",
|
"You have removed the due date of card {card}" : "Odebrali jste termín u karty {card}",
|
||||||
"{user} has removed the due date of card {card}" : "{user} odebral(a) termín u karty {card}",
|
"{user} has removed the due date of card {card}" : "{user} odebral(a) termín u karty {card}",
|
||||||
"You have set the due date of card {card} to {after}" : "Nastavili jste termín u karty {card} na {after}",
|
"You have set the due date of card {card} to {after}" : "Nastavili jste termín u karty {card} na {after}",
|
||||||
@@ -65,15 +61,11 @@
|
|||||||
"{user} has restored the attachment {attachment} to card {card}" : "{user} obnovil(a) přílohu {attachment} ke kartě {card}",
|
"{user} has restored the attachment {attachment} to card {card}" : "{user} obnovil(a) přílohu {attachment} ke kartě {card}",
|
||||||
"You have commented on card {card}" : "Přidali jste komentář na kartě {card}",
|
"You have commented on card {card}" : "Přidali jste komentář na kartě {card}",
|
||||||
"{user} has commented on card {card}" : "{user} přidal(a) komentář na kartě {card}",
|
"{user} has commented on card {card}" : "{user} přidal(a) komentář na kartě {card}",
|
||||||
|
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Popis karty</strong> v aplikaci Deck byl změněn",
|
||||||
"Deck" : "Deck",
|
"Deck" : "Deck",
|
||||||
"Changes in the <strong>Deck app</strong>" : "Změny v <strong>aplikaci Deck</strong>",
|
"Changes in the <strong>Deck app</strong>" : "Změny v <strong>aplikaci Deck</strong>",
|
||||||
"A <strong>board, list or card</strong> was changed" : "<strong>tabule, seznam nebo karta</strong> byla změněna",
|
|
||||||
"A <strong>comment</strong> was created on a card" : "Na kartě byl vytvořen <strong>komentář</strong>",
|
"A <strong>comment</strong> was created on a card" : "Na kartě byl vytvořen <strong>komentář</strong>",
|
||||||
"A <strong>card description</strong> has been changed" : "<strong>Popis karty</strong> byl změněn",
|
|
||||||
"Cards due today" : "Karty, kterým končí termín dnes",
|
|
||||||
"Cards due tomorrow" : "Karty, které mají termín zítra",
|
|
||||||
"Upcoming cards" : "Nadcházející karty",
|
"Upcoming cards" : "Nadcházející karty",
|
||||||
"Load more" : "Načíst více",
|
|
||||||
"Personal" : "Osobní",
|
"Personal" : "Osobní",
|
||||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kartu „%s“ na „%s“ vám přiřadil(a) %s.",
|
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kartu „%s“ na „%s“ vám přiřadil(a) %s.",
|
||||||
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} vám přiřadil(a) kartu {deck-card} na tabuli {deck-board}.",
|
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} vám přiřadil(a) kartu {deck-card} na tabuli {deck-board}.",
|
||||||
@@ -83,14 +75,8 @@
|
|||||||
"{user} has mentioned you in a comment on {deck-card}." : "{user} vás zmínil(a) v komentáři na kartě {deck-card}.",
|
"{user} has mentioned you in a comment on {deck-card}." : "{user} vás zmínil(a) v komentáři na kartě {deck-card}.",
|
||||||
"The board \"%s\" has been shared with you by %s." : "Uživatel %s vám nasdílel(a) tabuli „%s“.",
|
"The board \"%s\" has been shared with you by %s." : "Uživatel %s vám nasdílel(a) tabuli „%s“.",
|
||||||
"{user} has shared {deck-board} with you." : "{user} vám nasdílel(a) tabuli {deck-board}.",
|
"{user} has shared {deck-board} with you." : "{user} vám nasdílel(a) tabuli {deck-board}.",
|
||||||
"Deck board" : "Tabule aplikace Deck",
|
|
||||||
"Owned by %1$s" : "Vlastní %1$s",
|
|
||||||
"Deck boards, cards and comments" : "Tabule, karty a komentáře aplikace Deck",
|
|
||||||
"From %1$s, in %2$s/%3$s, owned by %4$s" : "Od %1$s, v %2$s/%3$s, vlastní %4$s",
|
|
||||||
"Create a new deck card" : "Vytvořit novou kartu v Deck",
|
|
||||||
"Card comments" : "Komentáře v kartách",
|
"Card comments" : "Komentáře v kartách",
|
||||||
"%s on %s" : "%s na %s",
|
"%s on %s" : "%s na %s",
|
||||||
"Deck boards and cards" : "Tabule a karty aplikace Deck",
|
|
||||||
"No data was provided to create an attachment." : "Nebyla poskytnuta žádná data pro vytvoření přílohy.",
|
"No data was provided to create an attachment." : "Nebyla poskytnuta žádná data pro vytvoření přílohy.",
|
||||||
"Finished" : "Dokončeno",
|
"Finished" : "Dokončeno",
|
||||||
"To review" : "K revizi",
|
"To review" : "K revizi",
|
||||||
@@ -112,22 +98,26 @@
|
|||||||
"Could not write file to disk" : "Soubor se nedaří se zapsat na úložiště",
|
"Could not write file to disk" : "Soubor se nedaří se zapsat na úložiště",
|
||||||
"A PHP extension stopped the file upload" : "PHP rozšíření zastavilo nahrávání souboru.",
|
"A PHP extension stopped the file upload" : "PHP rozšíření zastavilo nahrávání souboru.",
|
||||||
"No file uploaded or file size exceeds maximum of %s" : "Nebyl nahrán žádný soubor nebo jeho velikost přesáhla %s",
|
"No file uploaded or file size exceeds maximum of %s" : "Nebyl nahrán žádný soubor nebo jeho velikost přesáhla %s",
|
||||||
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Tento komentář je delší než %s znaků.\nPřidán jako příloha ke kartě nazvané %s.\nDostupné na URL: %s.",
|
|
||||||
"Card not found" : "Karta nebyla nalezena",
|
"Card not found" : "Karta nebyla nalezena",
|
||||||
"Path is already shared with this card" : "Popis umístění už je touto kartou sdíleno",
|
"Path is already shared with this card" : "Popis umístění už je touto kartou sdíleno",
|
||||||
"Invalid date, date format must be YYYY-MM-DD" : "Neplatné datum – je třeba, aby formát data byl RRRR-MM-DD",
|
"Invalid date, date format must be YYYY-MM-DD" : "Neplatné datum – je třeba, aby formát data byl RRRR-MM-DD",
|
||||||
"Personal planning and team project organization" : "Osobní plánování a organizování týmového projektu",
|
"Personal planning and team project organization" : "Osobní plánování a organizování týmového projektu",
|
||||||
"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 je nástroj cílený na osobní nebo projektové plánování týmů v Kanban stylu, napojený do Nextcloud.\n\n\n- 📥 Zadávejte a uspořádávejte své úkoly do karet\n- 📄 Zapisujte si dodatečné poznámky (v Markdown) \n- 🔖 Přiřazujte štítky pro ještě lepší uspořádání\n- 👥 Sdílejte se svým týmem, přáteli nebo rodinou\n- 📎 Připojte soubory a vložte je do (Markdown) popisu \n- 💬 Diskutujte se svým týmem prostřednictvím komentářů\n- ⚡ Udržte si přehled o změnách prostřednictvím sledování proudu aktivit\n- 🚀 Dostaňte svůj projekt pod kontrolu",
|
"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 je nástroj cílený na osobní nebo projektové plánování týmů v Kanban stylu, vestavěný v Nextcloud.\n\n\n- 📥 Zadávejte a uspořádávejte své úkoly do karet\n- 📄 Zapisujte si dodatečné poznámky \n- 🔖 Přiřazujte štítky pro ještě lepší organizaci\n- 👥 Sdílejte se svým týmem, přáteli nebo rodinou\n- 🚀 Dostaňte svůj projekt pod kontrolu",
|
||||||
|
"Card details" : "Podrobnosti o kartě",
|
||||||
"Add board" : "Přidat tabuli",
|
"Add board" : "Přidat tabuli",
|
||||||
"Select the board to link to a project" : "Vyberte tabuli kterou propojit s projektem",
|
"Select the board to link to a project" : "Vyberte tabuli kterou propojit s projektem",
|
||||||
"Search by board title" : "Hledat podle názvu tabule",
|
"Search by board title" : "Hledat podle názvu tabule",
|
||||||
"Select board" : "Vybrat tabuli",
|
"Select board" : "Vybrat tabuli",
|
||||||
"Move card to another board" : "Přesunout kartu na jinou tabuli",
|
"Create a new card" : "Vytvořit novou kartu",
|
||||||
"Select a board" : "Vybrat tabuli",
|
"Select a board" : "Vybrat tabuli",
|
||||||
"No lists available" : "Nejsou k dispozici žádné seznamy",
|
|
||||||
"Select a list" : "Vyberte sloupec",
|
"Select a list" : "Vyberte sloupec",
|
||||||
"Move card" : "Přesunout kartu",
|
"Card title" : "Název karty",
|
||||||
"Cancel" : "Storno",
|
"Cancel" : "Storno",
|
||||||
|
"Creating the new card …" : "Vytváření nové karty…",
|
||||||
|
"Card \"{card}\" was added to \"{board}\"" : "Karta „{card}“ byla přidána na „{board}“",
|
||||||
|
"Open card" : "Otevřít kartu",
|
||||||
|
"Close" : "Zavřít",
|
||||||
|
"Create card" : "Vytvořit kartu",
|
||||||
"Select a card" : "Vybrat kartu",
|
"Select a card" : "Vybrat kartu",
|
||||||
"Select the card to link to a project" : "Vyberte kartu kterou propojit s projektem",
|
"Select the card to link to a project" : "Vyberte kartu kterou propojit s projektem",
|
||||||
"Link to card" : "Propojit s kartou",
|
"Link to card" : "Propojit s kartou",
|
||||||
@@ -142,9 +132,8 @@
|
|||||||
"Archived cards" : "Archivované karty",
|
"Archived cards" : "Archivované karty",
|
||||||
"Add list" : "Přidat seznam",
|
"Add list" : "Přidat seznam",
|
||||||
"List name" : "Název seznamu",
|
"List name" : "Název seznamu",
|
||||||
"Active filters" : "Zapnuté filtry",
|
|
||||||
"Apply filter" : "Uplatnit filtr",
|
"Apply filter" : "Uplatnit filtr",
|
||||||
"Filter by tag" : "Filtrovat podle štítku",
|
"Filter by tag" : "Filtrovat podle příznaků",
|
||||||
"Filter by assigned user" : "Filtrovat podle uživatele, který je úkolem pověřen",
|
"Filter by assigned user" : "Filtrovat podle uživatele, který je úkolem pověřen",
|
||||||
"Unassigned" : "Nepřiřazeno",
|
"Unassigned" : "Nepřiřazeno",
|
||||||
"Filter by due date" : "Filtrovat podle termínu",
|
"Filter by due date" : "Filtrovat podle termínu",
|
||||||
@@ -154,46 +143,36 @@
|
|||||||
"Next 30 days" : "Příštích 30 dnů",
|
"Next 30 days" : "Příštích 30 dnů",
|
||||||
"No due date" : "Žádný termín",
|
"No due date" : "Žádný termín",
|
||||||
"Clear filter" : "Vyčistit filtr",
|
"Clear filter" : "Vyčistit filtr",
|
||||||
"View Modes" : "Zobrazit režimy",
|
|
||||||
"Toggle View Modes" : "Přepnout mezi režimy zobrazení",
|
|
||||||
"Hide archived cards" : "Skrýt archivované karty",
|
"Hide archived cards" : "Skrýt archivované karty",
|
||||||
"Show archived cards" : "Zobrazit archivované karty",
|
"Show archived cards" : "Zobrazit archivované karty",
|
||||||
"Toggle compact mode" : "Vyp/zap. kompaktní režim",
|
"Toggle compact mode" : "Vyp/zap. kompaktní režim",
|
||||||
"Hide card cover images" : "Skrýt obrázky přebalu karet",
|
|
||||||
"Show card cover images" : "Zobrazit obrázky přebalu karet",
|
|
||||||
"Open details" : "Otevřít podrobnosti",
|
|
||||||
"Details" : "Podrobnosti",
|
"Details" : "Podrobnosti",
|
||||||
"Currently present people" : "Nyní přítomní lidé",
|
|
||||||
"Loading board" : "Načítání tabule",
|
"Loading board" : "Načítání tabule",
|
||||||
"Board not found" : "Tabule nenalezena",
|
"No lists available" : "Nejsou k dispozici žádné seznamy",
|
||||||
"Create a new list to add cards to this board" : "Pro přidání karet na tuto tabuli vytvořte nový seznam",
|
"Create a new list to add cards to this board" : "Pro přidání karet na tuto tabuli vytvořte nový seznam",
|
||||||
|
"Board not found" : "Tabule nenalezena",
|
||||||
"Sharing" : "Sdílení",
|
"Sharing" : "Sdílení",
|
||||||
"Tags" : "Štítky",
|
"Tags" : "Štítky",
|
||||||
"Deleted items" : "Smazané položky",
|
"Deleted items" : "Smazané položky",
|
||||||
"Activity" : "Aktivita",
|
"Timeline" : "Časová osa",
|
||||||
"Deleted lists" : "Smazané seznamy",
|
"Deleted lists" : "Smazané seznamy",
|
||||||
"Undo" : "Vrátit zpět",
|
"Undo" : "Vrátit zpět",
|
||||||
"Deleted cards" : "Smazané karty",
|
"Deleted cards" : "Smazané karty",
|
||||||
|
"Share board with a user, group or circle …" : "Sdílet tabuli s uživatelem, skupinou nebo okruhem…",
|
||||||
|
"Searching for users, groups and circles …" : "Hledání v uživatelích, skupinách a okruzích…",
|
||||||
"No participants found" : "Nenalezeni žádní účastníci",
|
"No participants found" : "Nenalezeni žádní účastníci",
|
||||||
"Board owner" : "Vlastník tabule",
|
"Board owner" : "Vlastník tabule",
|
||||||
"(Group)" : "(Skupina)",
|
"(Group)" : "(Skupina)",
|
||||||
|
"(Circle)" : "(Okruh)",
|
||||||
"Can edit" : "Může upravovat",
|
"Can edit" : "Může upravovat",
|
||||||
"Can share" : "Může sdílet",
|
"Can share" : "Může sdílet",
|
||||||
"Can manage" : "Může spravovat",
|
"Can manage" : "Může spravovat",
|
||||||
"Owner" : "Vlastník",
|
|
||||||
"Delete" : "Smazat",
|
"Delete" : "Smazat",
|
||||||
"Failed to create share with {displayName}" : "Nepodařilo se vytvořit sdílení s {displayName}",
|
"Failed to create share with {displayName}" : "Nepodařilo se vytvořit sdílení s {displayName}",
|
||||||
"Are you sure you want to transfer the board {title} to {user}?" : "Opravdu chcete předat vlastnictví tabule {title} uživateli {user}?",
|
"Add a new list" : "Přidat nový sloupec",
|
||||||
"Transfer the board." : "Předat vlastnictví tabule.",
|
|
||||||
"Transfer" : "Předat vlastnictví",
|
|
||||||
"The board has been transferred to {user}" : "Vlastnictví tabule bylo předáno uživateli {user}",
|
|
||||||
"Failed to transfer the board to {user}" : "Nepodařilo se předat vlastnictví tabule uživateli {user}",
|
|
||||||
"Edit list title" : "Upravit nadpis seznamu",
|
|
||||||
"Archive all cards" : "Archivovat všechny karty",
|
"Archive all cards" : "Archivovat všechny karty",
|
||||||
"Unarchive all cards" : "Zrušit archivaci všech karet",
|
|
||||||
"Delete list" : "Smazat seznam",
|
"Delete list" : "Smazat seznam",
|
||||||
"Archive all cards in this list" : "Archivovat všechny karty v tomto seznamu",
|
"Archive all cards in this list" : "Archivovat všechny karty v tomto seznamu",
|
||||||
"Unarchive all cards in this list" : "Zrušit archivaci všech karet v tomto seznamu",
|
|
||||||
"Add a new card" : "Přidat novou kartu",
|
"Add a new card" : "Přidat novou kartu",
|
||||||
"Card name" : "Název karty",
|
"Card name" : "Název karty",
|
||||||
"List deleted" : "Seznam smazán",
|
"List deleted" : "Seznam smazán",
|
||||||
@@ -202,7 +181,6 @@
|
|||||||
"title and color value must be provided" : "je třeba zadat nadpis a zvolit barvu",
|
"title and color value must be provided" : "je třeba zadat nadpis a zvolit barvu",
|
||||||
"Board name" : "Název tabule",
|
"Board name" : "Název tabule",
|
||||||
"Members" : "Členové",
|
"Members" : "Členové",
|
||||||
"Assign a user to this card…" : "Přiřadit uživatele k této kartě…",
|
|
||||||
"Upload new files" : "Nahrát nové soubory",
|
"Upload new files" : "Nahrát nové soubory",
|
||||||
"Share from Files" : "Sdílet ze Souborů",
|
"Share from Files" : "Sdílet ze Souborů",
|
||||||
"Pending share" : "Čekající sdílení",
|
"Pending share" : "Čekající sdílení",
|
||||||
@@ -223,6 +201,18 @@
|
|||||||
"The title cannot be empty." : "Nadpis je třeba vyplnit.",
|
"The title cannot be empty." : "Nadpis je třeba vyplnit.",
|
||||||
"No comments yet. Begin the discussion!" : "Zatím bez komentářů. Zahajte diskuzi!",
|
"No comments yet. Begin the discussion!" : "Zatím bez komentářů. Zahajte diskuzi!",
|
||||||
"Failed to load comments" : "Načtení komentářů se nezdařilo",
|
"Failed to load comments" : "Načtení komentářů se nezdařilo",
|
||||||
|
"Assign a tag to this card…" : "Přiřadit této kartě štítek…",
|
||||||
|
"Assign to users" : "Přiřadit k uživatelům",
|
||||||
|
"Assign to users/groups/circles" : "Přiřadit uživatelům/skupinám/okruhům",
|
||||||
|
"Assign a user to this card…" : "Přiřadit uživatele k této kartě…",
|
||||||
|
"Due date" : "Termín",
|
||||||
|
"Set a due date" : "Vybrat termín",
|
||||||
|
"Remove due date" : "Odstranit termín",
|
||||||
|
"Select Date" : "Vybrat datum",
|
||||||
|
"Today" : "Dnes",
|
||||||
|
"Tomorrow" : "Zítra",
|
||||||
|
"Next week" : "Příští týden",
|
||||||
|
"Next month" : "Příští měsíc",
|
||||||
"Save" : "Uložit",
|
"Save" : "Uložit",
|
||||||
"The comment cannot be empty." : "Komentář je třeba vyplnit.",
|
"The comment cannot be empty." : "Komentář je třeba vyplnit.",
|
||||||
"The comment cannot be longer than 1000 characters." : "Délka komentáře může být nejvýše 1 000 znaků.",
|
"The comment cannot be longer than 1000 characters." : "Délka komentáře může být nejvýše 1 000 znaků.",
|
||||||
@@ -230,7 +220,6 @@
|
|||||||
"Cancel reply" : "Zrušit odpověď",
|
"Cancel reply" : "Zrušit odpověď",
|
||||||
"Reply" : "Odpovědět",
|
"Reply" : "Odpovědět",
|
||||||
"Update" : "Aktualizovat",
|
"Update" : "Aktualizovat",
|
||||||
"Created:" : "Vytvořeno:",
|
|
||||||
"Description" : "Popis",
|
"Description" : "Popis",
|
||||||
"(Unsaved)" : "(Neuloženo)",
|
"(Unsaved)" : "(Neuloženo)",
|
||||||
"(Saving…)" : "(Ukládání…)",
|
"(Saving…)" : "(Ukládání…)",
|
||||||
@@ -240,73 +229,29 @@
|
|||||||
"Add Attachment" : "Přidat přílohu",
|
"Add Attachment" : "Přidat přílohu",
|
||||||
"Write a description …" : "Zadejte popis…",
|
"Write a description …" : "Zadejte popis…",
|
||||||
"Choose attachment" : "Zvolte přílohu",
|
"Choose attachment" : "Zvolte přílohu",
|
||||||
"Assign a due date to this card…" : "Přiradit této kartě termín…",
|
|
||||||
"Set a due date" : "Vybrat termín",
|
|
||||||
"Add due date" : "Přidat termín",
|
|
||||||
"Choose a date" : "Zvolit datum",
|
|
||||||
"Remove due date" : "Odstranit termín",
|
|
||||||
"Completed" : "Dokončeno",
|
|
||||||
"Due at:" : "Termín v:",
|
|
||||||
"Not completed" : "Nedokončeno",
|
|
||||||
"Unarchive card" : "Zrušit archivaci karty",
|
|
||||||
"Archive card" : "Archivovat kartu",
|
|
||||||
"Select Date" : "Vybrat datum",
|
|
||||||
"Set due date for later today" : "Nastavit termín na dnešek",
|
|
||||||
"Set due date for tomorrow" : "Nastavit termín na zítřek",
|
|
||||||
"Set due date for this weekend" : "Nastavit termín na tento týden",
|
|
||||||
"Set due date for next week" : "Nastavit termín na příští týden",
|
|
||||||
"Assign a tag to this card…" : "Přiřadit této kartě štítek…",
|
|
||||||
"Create a new tag:" : "Vytvořit nový štítek:",
|
|
||||||
"(group)" : "(skupina)",
|
"(group)" : "(skupina)",
|
||||||
"Next week – {timeLocale}" : "Příští týden – {timeLocale}",
|
|
||||||
"Todo items" : "Položky k udělání",
|
|
||||||
"{count} comments, {unread} unread" : "{count} komentářů, {unread} nepřečtených",
|
"{count} comments, {unread} unread" : "{count} komentářů, {unread} nepřečtených",
|
||||||
"Edit card title" : "Upravit nadpis karty",
|
|
||||||
"Card details" : "Podrobnosti o kartě",
|
|
||||||
"Assign to me" : "Přiřadit mě",
|
"Assign to me" : "Přiřadit mě",
|
||||||
"Unassign myself" : "Zrušit přiřazení sobě",
|
"Unassign myself" : "Zrušit přiřazení sobě",
|
||||||
"Mark as not done" : "Označit jako nehotové",
|
"Move card" : "Přesunout kartu",
|
||||||
"Mark as done" : "Označit jako hotové",
|
"Unarchive card" : "Zrušit archivaci karty",
|
||||||
|
"Archive card" : "Archivovat kartu",
|
||||||
"Delete card" : "Smazat kartu",
|
"Delete card" : "Smazat kartu",
|
||||||
|
"Move card to another board" : "Přesunout kartu na jinou tabuli",
|
||||||
"Card deleted" : "Karta smazána",
|
"Card deleted" : "Karta smazána",
|
||||||
"seconds ago" : "před několika sekundami",
|
"seconds ago" : "před několika sekundami",
|
||||||
"Keyboard shortcuts" : "Klávesové zkratky",
|
|
||||||
"Board actions" : "Akce ohledně tabule",
|
|
||||||
"Keyboard shortcut" : "Klávesová zkratka",
|
|
||||||
"Action" : "Akce",
|
|
||||||
"Shift" : "Shift",
|
|
||||||
"Navigate between cards" : "Pohyb mezi kartami",
|
|
||||||
"Close card details" : "Zavřít podrobnosti o kartě",
|
|
||||||
"Ctrl" : "Ctrl",
|
|
||||||
"Search" : "Hledat",
|
|
||||||
"Show card filters" : "Zobrazit filtry karty",
|
|
||||||
"Clear card filters" : "Vyčistit filtry karty",
|
|
||||||
"Show help dialog" : "Zobrazit dialog nápovědy",
|
|
||||||
"Card actions" : "Akce ohledně karty",
|
|
||||||
"The following actions can be triggered on the currently highlighted card" : "Na právě zvýrazněné kartě je možné spustit následující akce",
|
|
||||||
"Enter" : "Konec řádku",
|
|
||||||
"Space" : "Mezera",
|
|
||||||
"Open card details" : "Otevřít podrobnosti o kartě",
|
|
||||||
"Edit the card title" : "Upravit nadpis karty",
|
|
||||||
"Assign yourself to the current card" : "Přiřadit stávající kartu sobě",
|
|
||||||
"Archive/unarchive the current card" : "Zaarchivovat / zrušit archivaci stávající karty",
|
|
||||||
"Mark card as completed/not completed" : "Označit kartu jako (ne)dokončenou",
|
|
||||||
"Open card menu" : "Otevřít nabídku karty",
|
|
||||||
"All boards" : "Všechny tabule",
|
"All boards" : "Všechny tabule",
|
||||||
"Archived boards" : "Archivované tabule",
|
"Archived boards" : "Archivované tabule",
|
||||||
"Shared with you" : "Sdíleno s vámi",
|
"Shared with you" : "Sdíleno s vámi",
|
||||||
"Deck settings" : "Nastavení pro Deck",
|
|
||||||
"Use bigger card view" : "Použít větší zobrazení karet",
|
"Use bigger card view" : "Použít větší zobrazení karet",
|
||||||
"Show card ID badge" : "Zobrazit odznáček s identifikátorem karty",
|
|
||||||
"Show boards in calendar/tasks" : "Zobrazit tabule v kalendáři/úkolech",
|
"Show boards in calendar/tasks" : "Zobrazit tabule v kalendáři/úkolech",
|
||||||
"Limit board creation to some groups" : "Umožnit vytváření tabulí pouze vybraným skupinám",
|
"Limit deck usage of groups" : "Omezit využití deck na skupiny",
|
||||||
"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." : "Uživatelé, kteří nejsou členy těchto skupin nebudou moci vytvářet své vlastní tabule, ale pořád budou moci pracovat na tabulích, které jim byly nasdíleny.",
|
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Omezení nastavené pro Deck brání uživatelům, kteří nejsou součástí těchto skupin, ve vytváření vlastních tabulí. Nicméně i tak ale pořád budou moci pracovat na tabulích, které jsou jim nasdíleny.",
|
||||||
"Board details" : "Podrobnosti o tabuli",
|
"Board details" : "Podrobnosti o tabuli",
|
||||||
"Edit board" : "Upravit tabuli",
|
"Edit board" : "Upravit tabuli",
|
||||||
"Clone board" : "Klonovat tabuli",
|
"Clone board" : "Klonovat tabuli",
|
||||||
"Unarchive board" : "Vrátit tabuli zpět z archivu",
|
"Unarchive board" : "Vrátit tabuli zpět z archivu",
|
||||||
"Archive board" : "Archivovat tabuli",
|
"Archive board" : "Archivovat tabuli",
|
||||||
"Export board" : "Exportovat tabuli",
|
|
||||||
"Turn on due date reminders" : "Zapnout upomínky termínů",
|
"Turn on due date reminders" : "Zapnout upomínky termínů",
|
||||||
"Turn off due date reminders" : "Vypnout upomínky termínů",
|
"Turn off due date reminders" : "Vypnout upomínky termínů",
|
||||||
"Due date reminders" : "Upomínky termínů",
|
"Due date reminders" : "Upomínky termínů",
|
||||||
@@ -318,36 +263,15 @@
|
|||||||
"Only assigned cards" : "Pouze přiřazené karty",
|
"Only assigned cards" : "Pouze přiřazené karty",
|
||||||
"No reminder" : "Bez připomínky",
|
"No reminder" : "Bez připomínky",
|
||||||
"An error occurred" : "Došlo k chybě",
|
"An error occurred" : "Došlo k chybě",
|
||||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Opravdu chcete tabuli {title} smazat? Toto smaže veškerá data této tabule, včetně archivovaných karet.",
|
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Opravdu chcete tabuly {title} smazat? Toto smaže veškerá data této tabule.",
|
||||||
"Delete the board?" : "Smazat tabuli?",
|
"Delete the board?" : "Smazat tabuli?",
|
||||||
"Loading filtered view" : "Načítání filtrovaného pohledu",
|
"Loading filtered view" : "Načítání filtrovaného pohledu",
|
||||||
"Today" : "Dnes",
|
"This week" : "Tento týden",
|
||||||
"Tomorrow" : "Zítra",
|
|
||||||
"No due" : "Žádný termín",
|
"No due" : "Žádný termín",
|
||||||
"Search for {searchQuery} in all boards" : "Hledat {searchQuery} na všech tabulích",
|
"Search for {searchQuery} in all boards" : "Hledat {searchQuery} na všech tabulích",
|
||||||
"No results found" : "Nenalezeny žádné výsledky",
|
"No results found" : "Nenalezeny žádné výsledky",
|
||||||
"This weekend – {timeLocale}" : "Tento víkend – {timeLocale}",
|
|
||||||
"Deck board {name}\n* Last modified on {lastMod}" : "Deck karta {name}\n* Naposledy změněno {lastMod}",
|
|
||||||
"{stack} in {board}" : "{stack} v {board}",
|
|
||||||
"Click to expand description" : "Popis rozbalíte kliknutím",
|
|
||||||
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Vytvořeno {created}\n* Naposledy upraveno {lastMod}\n* {nbAttachments} příloh\n* {nbComments} komentářů",
|
|
||||||
"{nbCards} cards" : "{nbCards} karet",
|
|
||||||
"Click to expand comment" : "Komentář rozbalíte kliknutím",
|
|
||||||
"Create a new card" : "Vytvořit novou kartu",
|
|
||||||
"Card title" : "Název karty",
|
|
||||||
"Create card" : "Vytvořit kartu",
|
|
||||||
"Creating the new card …" : "Vytváření nové karty…",
|
|
||||||
"Card \"{card}\" was added to \"{board}\"" : "Karta „{card}“ byla přidána na „{board}“",
|
|
||||||
"Open card" : "Otevřít kartu",
|
|
||||||
"Close" : "Zavřít",
|
|
||||||
"No upcoming cards" : "Žádné nadcházející karty",
|
"No upcoming cards" : "Žádné nadcházející karty",
|
||||||
"upcoming cards today" : "nadcházející karty na dnešek",
|
|
||||||
"upcoming cards tomorrow" : "nadcházející karty na zítřek",
|
|
||||||
"upcoming cards" : "nadcházející karty",
|
"upcoming cards" : "nadcházející karty",
|
||||||
"New card" : "Nová karta",
|
|
||||||
"Due on {date}" : "Termín {date}",
|
|
||||||
"Tomorrow – {timeLocale}" : "Zítra – {timeLocale}",
|
|
||||||
"Later today – {timeLocale}" : "Později dnes – {timeLocale}",
|
|
||||||
"Link to a board" : "Propojit s tabulí",
|
"Link to a board" : "Propojit s tabulí",
|
||||||
"Link to a card" : "Propojit s kartou",
|
"Link to a card" : "Propojit s kartou",
|
||||||
"Create a card" : "Vytvořit kartu",
|
"Create a card" : "Vytvořit kartu",
|
||||||
@@ -358,19 +282,6 @@
|
|||||||
"Error creating the share" : "Chyba při vytváření sdílení",
|
"Error creating the share" : "Chyba při vytváření sdílení",
|
||||||
"Share with a Deck card" : "Sdílet s kartou aplikace Deck",
|
"Share with a Deck card" : "Sdílet s kartou aplikace Deck",
|
||||||
"Share {file} with a Deck card" : "Sdílet {file} s kartou aplikace Deck",
|
"Share {file} with a Deck card" : "Sdílet {file} s kartou aplikace Deck",
|
||||||
"Share" : "Sdílet",
|
"Share" : "Sdílet"
|
||||||
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Popis karty</strong> v aplikaci Deck byl změněn",
|
|
||||||
"Timeline" : "Časová osa",
|
|
||||||
"Share board with a user, group or circle …" : "Sdílet tabuli s uživatelem, skupinou nebo okruhem…",
|
|
||||||
"Searching for users, groups and circles …" : "Hledání v uživatelích, skupinách a okruzích…",
|
|
||||||
"(Circle)" : "(Okruh)",
|
|
||||||
"Assign to users" : "Přiřadit k uživatelům",
|
|
||||||
"Assign to users/groups/circles" : "Přiřadit uživatelům/skupinám/okruhům",
|
|
||||||
"Due date" : "Termín",
|
|
||||||
"Next week" : "Příští týden",
|
|
||||||
"Next month" : "Příští měsíc",
|
|
||||||
"List is empty" : "Seznam je prázdný",
|
|
||||||
"Limit deck usage of groups" : "Omezit využití deck na skupiny",
|
|
||||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Omezení nastavené pro Deck brání uživatelům, kteří nejsou součástí těchto skupin, ve vytváření vlastních tabulí. Nicméně i tak ale pořád budou moci pracovat na tabulích, které jsou jim nasdíleny."
|
|
||||||
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
|
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,6 @@ OC.L10N.register(
|
|||||||
"deck",
|
"deck",
|
||||||
{
|
{
|
||||||
"Personal" : "Personol",
|
"Personal" : "Personol",
|
||||||
"%s on %s" : "%s ar %s",
|
|
||||||
"Done" : "Done",
|
"Done" : "Done",
|
||||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Mae'r ffeil lwythwyd i fyny'n fwy na chyfarwyddeb MAX_FILE_SIZE bennwyd yn y ffurflen HTML",
|
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Mae'r ffeil lwythwyd i fyny'n fwy na chyfarwyddeb MAX_FILE_SIZE bennwyd yn y ffurflen HTML",
|
||||||
"No file was uploaded" : "Ni lwythwyd ffeil i fyny",
|
"No file was uploaded" : "Ni lwythwyd ffeil i fyny",
|
||||||
@@ -10,30 +9,20 @@ OC.L10N.register(
|
|||||||
"Cancel" : "Diddymu",
|
"Cancel" : "Diddymu",
|
||||||
"Details" : "Manylion",
|
"Details" : "Manylion",
|
||||||
"Tags" : "Tagiau",
|
"Tags" : "Tagiau",
|
||||||
"Activity" : "Gweithred",
|
|
||||||
"Undo" : "Dadwneud",
|
"Undo" : "Dadwneud",
|
||||||
"Can edit" : "Can edit",
|
"Can edit" : "Can edit",
|
||||||
"Can share" : "Can share",
|
"Can share" : "Can share",
|
||||||
"Owner" : "Owner",
|
|
||||||
"Delete" : "Dileu",
|
"Delete" : "Dileu",
|
||||||
"Edit" : "Golygu",
|
"Edit" : "Golygu",
|
||||||
"Download" : "Llwytho i lawr",
|
|
||||||
"Modified" : "Addaswyd",
|
"Modified" : "Addaswyd",
|
||||||
|
"Select Date" : "Dewis Dyddiad",
|
||||||
|
"Today" : "Heddiw",
|
||||||
"Save" : "Cadw",
|
"Save" : "Cadw",
|
||||||
"Update" : "Diweddaru",
|
"Update" : "Diweddaru",
|
||||||
"Created:" : "Crewyd:",
|
|
||||||
"Description" : "Disgrifiad",
|
"Description" : "Disgrifiad",
|
||||||
"Select Date" : "Dewis Dyddiad",
|
|
||||||
"seconds ago" : "eiliad yn ôl",
|
"seconds ago" : "eiliad yn ôl",
|
||||||
"Keyboard shortcuts" : "Llwybrau byr bysellfwrdd",
|
|
||||||
"Search" : "Chwilio",
|
|
||||||
"Shared with you" : "Shared with you",
|
"Shared with you" : "Shared with you",
|
||||||
"No reminder" : "Dim nodyn atgoffa",
|
|
||||||
"An error occurred" : "Digwyddodd gwall",
|
"An error occurred" : "Digwyddodd gwall",
|
||||||
"Today" : "Heddiw",
|
"This week" : "Wythnos yma"
|
||||||
"Close" : "Cau",
|
|
||||||
"Share" : "Rhannu",
|
|
||||||
"Next week" : "Wythnos nesaf",
|
|
||||||
"Next month" : "Mis nesaf"
|
|
||||||
},
|
},
|
||||||
"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;");
|
"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;");
|
||||||
|
|||||||