Compare commits

..

1 Commits

Author SHA1 Message Date
Elizabeth Danzberger
7cb41cd61b fix: auto-focus board name input field
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2025-03-28 01:54:26 +01:00
56 changed files with 1335 additions and 1126 deletions

View File

@@ -9,7 +9,7 @@ on:
jobs:
build:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
strategy:
matrix:
@@ -18,7 +18,7 @@ jobs:
steps:
- uses: actions/checkout@v4.2.2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4.4.0
uses: actions/setup-node@v4.3.0
with:
node-version: ${{ matrix.node-version }}
- name: Set up npm7

View File

@@ -17,7 +17,7 @@ permissions:
jobs:
build_and_publish:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
# Only allowed to be run on nextcloud-releases repositories
if: ${{ github.repository_owner == 'nextcloud-releases' }}
@@ -71,7 +71,7 @@ jobs:
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
# Skip if no package.json
if: ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.1.0
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}

View File

@@ -14,7 +14,7 @@ env:
jobs:
cypress:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: 'ubuntu-latest'
strategy:
fail-fast: false
@@ -41,7 +41,7 @@ jobs:
steps:
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4.4.0
uses: actions/setup-node@v4.3.0
with:
node-version: ${{ matrix.node-version }}

View File

@@ -21,7 +21,7 @@ env:
jobs:
integration:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
strategy:
fail-fast: false

View File

@@ -47,7 +47,7 @@ jobs:
- '**.vue'
lint:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
needs: changes
if: needs.changes.outputs.src != 'false'
@@ -68,7 +68,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.1.0
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}

View File

@@ -19,7 +19,7 @@ concurrency:
jobs:
lint:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
name: php-cs

View File

@@ -33,7 +33,7 @@ jobs:
uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.0.0
php-lint:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
needs: matrix
strategy:
matrix:

View File

@@ -19,7 +19,7 @@ concurrency:
jobs:
lint:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
name: stylelint
@@ -37,7 +37,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.1.0
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}

View File

@@ -5,7 +5,7 @@ on: [push]
jobs:
build:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
strategy:
matrix:
@@ -14,7 +14,7 @@ jobs:
steps:
- uses: actions/checkout@v4.2.2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4.4.0
uses: actions/setup-node@v4.3.0
with:
node-version: ${{ matrix.node-version }}
- name: Set up npm7

View File

@@ -19,7 +19,7 @@ permissions:
jobs:
build:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
@@ -45,7 +45,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.1.0
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -54,7 +54,7 @@ jobs:
- name: Fix npm audit
id: npm-audit
uses: nextcloud-libraries/npm-audit-action@1b1728b2b4a7a78d69de65608efcf4db0e3e42d0 # v0.2.0
uses: nextcloud-libraries/npm-audit-action@2a60bd2e79cc77f2cc4d9a3fe40f1a69896f3a87 # v0.1.0
- name: Run npm ci and npm run build
if: steps.checkout.outcome == 'success'

View File

@@ -62,7 +62,7 @@ jobs:
- 'composer.lock'
phpunit-mysql:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
needs: [changes, matrix]
if: needs.changes.outputs.src != 'false'

View File

@@ -61,7 +61,7 @@ jobs:
- 'composer.lock'
phpunit-pgsql:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
needs: [changes, matrix]
if: needs.changes.outputs.src != 'false'

View File

@@ -61,7 +61,7 @@ jobs:
- 'composer.lock'
phpunit-sqlite:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
needs: [changes, matrix]
if: needs.changes.outputs.src != 'false'

View File

@@ -22,7 +22,7 @@ permissions:
jobs:
pr-feedback:
if: ${{ github.repository_owner == 'nextcloud' }}
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
steps:
- name: The get-github-handles-from-website action
uses: marcelklehr/get-github-handles-from-website-action@06b2239db0a48fe1484ba0bfd966a3ab81a08308 # v1.0.1

View File

@@ -19,7 +19,7 @@ permissions:
jobs:
static-analysis:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
name: static-psalm-analysis
steps:

View File

@@ -16,7 +16,7 @@ permissions:
jobs:
reuse-compliance-check:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

View File

@@ -18,7 +18,7 @@ permissions:
jobs:
update-nextcloud-ocp:
runs-on: ${{ github.repository_owner == 'nextcloud-gmbh' && fromJSON('["self-hosted", "ubuntu-latest"]') || 'ubuntu-latest' }}
runs-on: ubuntu-latest
strategy:
fail-fast: false

View File

@@ -54,9 +54,6 @@
<live-migration>
<step>OCA\Deck\Migration\DeletedCircleCleanup</step>
</live-migration>
<post-migration>
<step>OCA\Deck\Migration\LabelMismatchCleanup</step>
</post-migration>
</repair-steps>
<commands>
<command>OCA\Deck\Command\UserExport</command>

152
composer.lock generated
View File

@@ -7,31 +7,143 @@
"content-hash": "6950663d9d213151028e780637480220",
"packages": [
{
"name": "justinrainbow/json-schema",
"version": "6.4.1",
"name": "icecave/parity",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/jsonrainbow/json-schema.git",
"reference": "35d262c94959571e8736db1e5c9bc36ab94ae900"
"url": "https://github.com/icecave/parity.git",
"reference": "0109fef58b3230d23b20b2ac52ecdf477218d300"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/35d262c94959571e8736db1e5c9bc36ab94ae900",
"reference": "35d262c94959571e8736db1e5c9bc36ab94ae900",
"url": "https://api.github.com/repos/icecave/parity/zipball/0109fef58b3230d23b20b2ac52ecdf477218d300",
"reference": "0109fef58b3230d23b20b2ac52ecdf477218d300",
"shasum": ""
},
"require": {
"ext-json": "*",
"marc-mabe/php-enum": "^4.0",
"php": "^7.2 || ^8.0"
"icecave/repr": "~1",
"php": ">=5.3"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "3.3.0",
"eloquent/liberator": "~1",
"icecave/archer": "~1"
},
"suggest": {
"eloquent/asplode": "Drop-in exception-based error handling."
},
"type": "library",
"autoload": {
"psr-0": {
"Icecave\\Parity": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "James Harris",
"email": "james.harris@icecave.com.au",
"homepage": "https://github.com/jmalloc"
}
],
"description": "A customizable deep comparison library.",
"homepage": "https://github.com/IcecaveStudios/parity",
"keywords": [
"compare",
"comparison",
"equal",
"equality",
"greater",
"less",
"sort",
"sorting"
],
"support": {
"issues": "https://github.com/icecave/parity/issues",
"source": "https://github.com/icecave/parity/tree/1.0.0"
},
"time": "2014-01-17T05:56:27+00:00"
},
{
"name": "icecave/repr",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/icecave/repr.git",
"reference": "8a3d2953adf5f464a06e3e2587aeacc97e2bed07"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/icecave/repr/zipball/8a3d2953adf5f464a06e3e2587aeacc97e2bed07",
"reference": "8a3d2953adf5f464a06e3e2587aeacc97e2bed07",
"shasum": ""
},
"require": {
"php": ">=5.3"
},
"require-dev": {
"icecave/archer": "~1"
},
"suggest": {
"eloquent/asplode": "Drop-in exception-based error handling."
},
"type": "library",
"autoload": {
"psr-4": {
"Icecave\\Repr\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "James Harris",
"email": "james.harris@icecave.com.au",
"homepage": "https://github.com/jmalloc"
}
],
"description": "A library for generating string representations of any value, inspired by Python's reprlib library.",
"homepage": "https://github.com/IcecaveStudios/repr",
"keywords": [
"human",
"readable",
"repr",
"representation",
"string"
],
"support": {
"issues": "https://github.com/icecave/repr/issues",
"source": "https://github.com/icecave/repr/tree/1.0.1"
},
"time": "2014-07-25T05:44:41+00:00"
},
{
"name": "justinrainbow/json-schema",
"version": "6.0.0",
"source": {
"type": "git",
"url": "https://github.com/jsonrainbow/json-schema.git",
"reference": "a38c6198d53b09c0702f440585a4f4a5d9137bd9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/a38c6198d53b09c0702f440585a4f4a5d9137bd9",
"reference": "a38c6198d53b09c0702f440585a4f4a5d9137bd9",
"shasum": ""
},
"require": {
"icecave/parity": "1.0.0",
"marc-mabe/php-enum": "^2.0 || ^3.0 || ^4.0",
"php": ">=5.3.3"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "~2.2.20 || ~2.19.0",
"json-schema/json-schema-test-suite": "1.2.0",
"marc-mabe/php-enum-phpstan": "^2.0",
"phpspec/prophecy": "^1.19",
"phpstan/phpstan": "^1.12",
"phpunit/phpunit": "^8.5"
"phpunit/phpunit": "^4.8.35"
},
"bin": [
"bin/validate-json"
@@ -77,9 +189,9 @@
],
"support": {
"issues": "https://github.com/jsonrainbow/json-schema/issues",
"source": "https://github.com/jsonrainbow/json-schema/tree/6.4.1"
"source": "https://github.com/jsonrainbow/json-schema/tree/6.0.0"
},
"time": "2025-04-04T13:08:07+00:00"
"time": "2024-07-30T17:49:21+00:00"
},
{
"name": "marc-mabe/php-enum",
@@ -380,12 +492,12 @@
"source": {
"type": "git",
"url": "https://github.com/nextcloud-deps/ocp.git",
"reference": "8f470f66ec1d0d2e209c8a8a8a6ec30d4598e461"
"reference": "1abf593d27ecd373a9fcbbe87cfdd899ad3fee8b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/8f470f66ec1d0d2e209c8a8a8a6ec30d4598e461",
"reference": "8f470f66ec1d0d2e209c8a8a8a6ec30d4598e461",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/1abf593d27ecd373a9fcbbe87cfdd899ad3fee8b",
"reference": "1abf593d27ecd373a9fcbbe87cfdd899ad3fee8b",
"shasum": ""
},
"require": {
@@ -421,7 +533,7 @@
"issues": "https://github.com/nextcloud-deps/ocp/issues",
"source": "https://github.com/nextcloud-deps/ocp/tree/master"
},
"time": "2025-04-24T00:50:06+00:00"
"time": "2025-03-08T00:36:29+00:00"
},
{
"name": "nikic/php-parser",

View File

@@ -374,9 +374,6 @@ describe('Card', function () {
cy.get('.app-sidebar-header .action-item__menutoggle').click()
cy.get('.v-popper__popper button:contains("Move/copy card")').click()
cy.get('.vs__dropdown-menu span[title="MyTestBoard"]').should('be.visible').click()
cy.get('[data-cy="select-stack"] .vs__dropdown-toggle').should('be.visible').click()
cy.get('.vs__dropdown-menu span[title="TestList"]').should('be.visible').click()
cy.get('.modal-container button:contains("Copy card")').click()
cy.wait('@clone', { timeout: 7000 })
cy.get('.card:contains("Hello world")').should('have.length', 2)

View File

@@ -8,7 +8,7 @@ OC.L10N.register(
"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" : "Nullañ",
"Cancel" : "Arrest",
"Drop your files to upload" : "Laoskit ho restroù evit pellkas",
"Open" : "Digeriñ",
"Completed" : "Achuet",

View File

@@ -6,7 +6,7 @@
"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" : "Nullañ",
"Cancel" : "Arrest",
"Drop your files to upload" : "Laoskit ho restroù evit pellkas",
"Open" : "Digeriñ",
"Completed" : "Achuet",

View File

@@ -201,7 +201,6 @@ OC.L10N.register(
"Shift" : "Shift",
"Ctrl" : "Ctrl",
"Search" : "Søg",
"Enter" : "Indtast",
"All boards" : "Alle tavler",
"Archived boards" : "Arkiverede lister",
"Shared with you" : "Delt med dig",

View File

@@ -199,7 +199,6 @@
"Shift" : "Shift",
"Ctrl" : "Ctrl",
"Search" : "Søg",
"Enter" : "Indtast",
"All boards" : "Alle tavler",
"Archived boards" : "Arkiverede lister",
"Shared with you" : "Delt med dig",

View File

@@ -123,7 +123,7 @@ OC.L10N.register(
"Path is already shared with this card" : "Pfad wurde bereits mit dieser Karte geteilt",
"Invalid date, date format must be YYYY-MM-DD" : "Ungültiges Datum, zulässiges Datumsformat: JJJJ-MM-TT",
"Personal planning and team project organization" : "Persönliche Planung und Teamprojektorganisation",
"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 ist ein Organisationstool im Kanban-Stil für die persönliche Planung und Projektorganisation von Teams, die in Nextcloud integriert ist.\n\n\n- 📥 Füge deine Aufgaben zu den Karten hinzu und ordne diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Zuweisen von Schlagworten für noch bessere Organisation\n- 👥 Teile mit deinem Team, Freunden oder der Familie\n- 📎 Füge Dateien hinzu und verwende diese in deinen Markdown-Beschreibungen\n- 💬 Diskutiere mit deinem Team mit Kommentaren\n- ⚡ Behalte den Überblick über Änderungen mit dem Aktivitäten-Stream\n- 🚀 Organisiere dein Projekt",
"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 ist ein Organisationstool im Kanban-Stil für die persönliche Planung und Projektorganisation von Teams, die in Nextcloud integriert sind.\n\n\n- 📥 Füge deine Aufgaben zu den Karten hinzu und ordne diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Zuweisen von Schlagworten für noch bessere Organisation\n- 👥 Teile mit deinem Team, Freunden oder der Familie\n- 📎 Füge Dateien hinzu und verwende diese in deinen Markdown-Beschreibungen\n- 💬 Diskutiere mit deinem Team mit Kommentaren\n- ⚡ Behalte den Überblick über Änderungen mit dem Aktivitäten-Stream\n- 🚀 Organisiere dein Projekt",
"Add board" : "Board hinzufügen",
"Card details" : "Kartendetails",
"Select the board to link to a project" : "Wähle ein Board aus, um dieses mit einem Projekt zu verknüpfen",
@@ -186,7 +186,7 @@ OC.L10N.register(
"Deleted lists" : "Gelöschte Listen",
"Undo" : "Rückgängig",
"Deleted cards" : "Gelöschte Karten",
"Failed to create share with {displayName}" : "Freigabe mit dem Namen {displayName} konnte nicht erstellt werden",
"Failed to create share with {displayName}" : "Fehler beim Erstellen der Freigabe mit dem Namen {displayName}",
"Are you sure you want to transfer the board {title} to {user}?" : "Möchtest du wirklich das Board {title} an {user} übertragen?",
"Transfer the board." : "Board übertragen",
"Transfer" : "Übertragen",
@@ -238,7 +238,7 @@ OC.L10N.register(
"Open in bigger view" : "In größerer Ansicht öffnen",
"Attachments" : "Anhänge",
"Comments" : "Kommentare",
"Failed to load comments" : "Laden der Kommentare ist fehlgeschlagen",
"Failed to load comments" : "Das Laden der Kommentare ist fehlgeschlagen",
"No comments yet. Begin the discussion!" : "Bislang keine Kommentare. Beginne die Diskussion!",
"The comment cannot be empty." : "Der Kommentar darf nicht leer sein.",
"The comment cannot be longer than 1000 characters." : "Der Kommentar darf nicht länger als 1000 Zeichen sein.",
@@ -258,8 +258,8 @@ OC.L10N.register(
"Add Attachment" : "Anhang anhängen",
"Choose attachment" : "Anhang auswählen",
"Select Date" : "Datum auswählen",
"Later today {timeLocale}" : "Später heute {timeLocale}",
"Set due date for later today" : "Fälligkeitsdatum auf später heute setzen",
"Later today {timeLocale}" : "Heute noch {timeLocale}",
"Set due date for later today" : "Fälligkeitsdatum auf heute noch setzen",
"Tomorrow {timeLocale}" : "Morgen {timeLocale}",
"Set due date for tomorrow" : "Fälligkeitsdatum auf morgen setzen",
"This weekend {timeLocale}" : "Dieses Wochenende {timeLocale}",
@@ -270,9 +270,9 @@ OC.L10N.register(
"Set a due date" : "Ein Ablaufdatum setzen",
"Add due date" : "Fälligkeitsdatum hinzufügen",
"Choose a date" : "Datum auswählen",
"Remove due date" : "Fälligkeitsdatum entfernen",
"Remove due date" : "Fälligkeitsdatum löschen",
"Mark as done" : "Als erledigt markieren",
"Due at:" : "Fällig am:",
"Due at:" : "Fallig am:",
"Not done" : "Nicht erledigt",
"Unarchive card" : "Karte dearchivieren",
"Archive card" : "Karte archivieren",
@@ -292,7 +292,7 @@ OC.L10N.register(
"Delete card" : "Karte löschen",
"seconds ago" : "Gerade eben",
"Keyboard shortcuts" : "Tastaturkürzel",
"Boost your productivity using Deck with keyboard shortcuts." : "Mit Tastaturkürzeln die Produktivität in Deck erhöhen.",
"Boost your productivity using Deck with keyboard shortcuts." : "Erhöhe mit Tastaturkürzeln deine Produktivität in Deck.",
"Board actions" : "Boardaktionen",
"Keyboard shortcut" : "Tastaturkürzel",
"Action" : "Aktion",
@@ -386,7 +386,7 @@ OC.L10N.register(
"Create a card" : "Eine Karte erstellen",
"Message from {author} in {conversationName}" : "Nachricht von {author} in {conversationName}",
"Something went wrong" : "Etwas ist schiefgelaufen",
"Failed to upload {name}" : "{name} konnte nicht hochgeladen werden",
"Failed to upload {name}" : "Fehler beim Hochladen von {name}",
"Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten",
"Error creating the share" : "Fehler beim Erstellen der Freigabe",
"Share with a Deck card" : "Mit einer Deck-Karte teilen",

View File

@@ -121,7 +121,7 @@
"Path is already shared with this card" : "Pfad wurde bereits mit dieser Karte geteilt",
"Invalid date, date format must be YYYY-MM-DD" : "Ungültiges Datum, zulässiges Datumsformat: JJJJ-MM-TT",
"Personal planning and team project organization" : "Persönliche Planung und Teamprojektorganisation",
"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 ist ein Organisationstool im Kanban-Stil für die persönliche Planung und Projektorganisation von Teams, die in Nextcloud integriert ist.\n\n\n- 📥 Füge deine Aufgaben zu den Karten hinzu und ordne diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Zuweisen von Schlagworten für noch bessere Organisation\n- 👥 Teile mit deinem Team, Freunden oder der Familie\n- 📎 Füge Dateien hinzu und verwende diese in deinen Markdown-Beschreibungen\n- 💬 Diskutiere mit deinem Team mit Kommentaren\n- ⚡ Behalte den Überblick über Änderungen mit dem Aktivitäten-Stream\n- 🚀 Organisiere dein Projekt",
"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 ist ein Organisationstool im Kanban-Stil für die persönliche Planung und Projektorganisation von Teams, die in Nextcloud integriert sind.\n\n\n- 📥 Füge deine Aufgaben zu den Karten hinzu und ordne diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Zuweisen von Schlagworten für noch bessere Organisation\n- 👥 Teile mit deinem Team, Freunden oder der Familie\n- 📎 Füge Dateien hinzu und verwende diese in deinen Markdown-Beschreibungen\n- 💬 Diskutiere mit deinem Team mit Kommentaren\n- ⚡ Behalte den Überblick über Änderungen mit dem Aktivitäten-Stream\n- 🚀 Organisiere dein Projekt",
"Add board" : "Board hinzufügen",
"Card details" : "Kartendetails",
"Select the board to link to a project" : "Wähle ein Board aus, um dieses mit einem Projekt zu verknüpfen",
@@ -184,7 +184,7 @@
"Deleted lists" : "Gelöschte Listen",
"Undo" : "Rückgängig",
"Deleted cards" : "Gelöschte Karten",
"Failed to create share with {displayName}" : "Freigabe mit dem Namen {displayName} konnte nicht erstellt werden",
"Failed to create share with {displayName}" : "Fehler beim Erstellen der Freigabe mit dem Namen {displayName}",
"Are you sure you want to transfer the board {title} to {user}?" : "Möchtest du wirklich das Board {title} an {user} übertragen?",
"Transfer the board." : "Board übertragen",
"Transfer" : "Übertragen",
@@ -236,7 +236,7 @@
"Open in bigger view" : "In größerer Ansicht öffnen",
"Attachments" : "Anhänge",
"Comments" : "Kommentare",
"Failed to load comments" : "Laden der Kommentare ist fehlgeschlagen",
"Failed to load comments" : "Das Laden der Kommentare ist fehlgeschlagen",
"No comments yet. Begin the discussion!" : "Bislang keine Kommentare. Beginne die Diskussion!",
"The comment cannot be empty." : "Der Kommentar darf nicht leer sein.",
"The comment cannot be longer than 1000 characters." : "Der Kommentar darf nicht länger als 1000 Zeichen sein.",
@@ -256,8 +256,8 @@
"Add Attachment" : "Anhang anhängen",
"Choose attachment" : "Anhang auswählen",
"Select Date" : "Datum auswählen",
"Later today {timeLocale}" : "Später heute {timeLocale}",
"Set due date for later today" : "Fälligkeitsdatum auf später heute setzen",
"Later today {timeLocale}" : "Heute noch {timeLocale}",
"Set due date for later today" : "Fälligkeitsdatum auf heute noch setzen",
"Tomorrow {timeLocale}" : "Morgen {timeLocale}",
"Set due date for tomorrow" : "Fälligkeitsdatum auf morgen setzen",
"This weekend {timeLocale}" : "Dieses Wochenende {timeLocale}",
@@ -268,9 +268,9 @@
"Set a due date" : "Ein Ablaufdatum setzen",
"Add due date" : "Fälligkeitsdatum hinzufügen",
"Choose a date" : "Datum auswählen",
"Remove due date" : "Fälligkeitsdatum entfernen",
"Remove due date" : "Fälligkeitsdatum löschen",
"Mark as done" : "Als erledigt markieren",
"Due at:" : "Fällig am:",
"Due at:" : "Fallig am:",
"Not done" : "Nicht erledigt",
"Unarchive card" : "Karte dearchivieren",
"Archive card" : "Karte archivieren",
@@ -290,7 +290,7 @@
"Delete card" : "Karte löschen",
"seconds ago" : "Gerade eben",
"Keyboard shortcuts" : "Tastaturkürzel",
"Boost your productivity using Deck with keyboard shortcuts." : "Mit Tastaturkürzeln die Produktivität in Deck erhöhen.",
"Boost your productivity using Deck with keyboard shortcuts." : "Erhöhe mit Tastaturkürzeln deine Produktivität in Deck.",
"Board actions" : "Boardaktionen",
"Keyboard shortcut" : "Tastaturkürzel",
"Action" : "Aktion",
@@ -384,7 +384,7 @@
"Create a card" : "Eine Karte erstellen",
"Message from {author} in {conversationName}" : "Nachricht von {author} in {conversationName}",
"Something went wrong" : "Etwas ist schiefgelaufen",
"Failed to upload {name}" : "{name} konnte nicht hochgeladen werden",
"Failed to upload {name}" : "Fehler beim Hochladen von {name}",
"Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten",
"Error creating the share" : "Fehler beim Erstellen der Freigabe",
"Share with a Deck card" : "Mit einer Deck-Karte teilen",

View File

@@ -22,7 +22,7 @@ OC.L10N.register(
"You have renamed list {before} to {stack} on board {board}" : "Sie haben die Liste {before} auf dem Board {board} in {stack} umbenannt",
"{user} has renamed list {before} to {stack} on board {board}" : "{user} hat die Liste {before} in {stack} auf dem Board {board} umbenannt",
"You have deleted list {stack} on board {board}" : "Sie haben die Liste {stack} auf dem Board {board} gelöscht",
"{user} has deleted list {stack} on board {board}" : "{user} hat die Liste {stack} aus dem Board {board} gelöscht",
"{user} has deleted list {stack} on board {board}" : "{user} hat die Liste {stack} aus dem Board {board} entfernt",
"You have created card {card} in list {stack} on board {board}" : "Sie haben die Karte {card} in der Liste {stack} auf dem Board {board} erstellt",
"{user} has created card {card} in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} erstellt",
"You have deleted card {card} in list {stack} on board {board}" : "Sie haben die Karte {card} in der Liste {stack} auf dem Board {board} gelöscht",
@@ -61,8 +61,8 @@ OC.L10N.register(
"{user} has added the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} zur Karte {card} hinzugefügt",
"You have updated the attachment {attachment} on card {card}" : "Sie haben den Anhang {attachment} der Karte {card} aktualisiert",
"{user} has updated the attachment {attachment} on card {card}" : "{user} hat den Anhang {attachment} der Karte {card} aktualisiert",
"You have deleted the attachment {attachment} from card {card}" : "Sie haben den Anhang {attachment} von der Karte {card} gelöscht",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} hat den Anhang {attachment} von Karte {card} gelöscht",
"You have deleted the attachment {attachment} from card {card}" : "Sie haben den Anhang {attachment} von der Karte {card} entfernt",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} hat den Anhang {attachment} von Karte {card} entfernt",
"You have restored the attachment {attachment} to card {card}" : "Sie haben den Anhang {attachment} der Karte {card} wiederhergestellt",
"{user} has restored the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} wiederhergestellt",
"You have commented on card {card}" : "Sie haben die Karte {card} kommentiert",
@@ -186,7 +186,7 @@ OC.L10N.register(
"Deleted lists" : "Gelöschte Listen",
"Undo" : "Rückgängig",
"Deleted cards" : "Gelöschte Karten",
"Failed to create share with {displayName}" : "Freigabe mit dem Namen {displayName} konnte nicht erstellt werden",
"Failed to create share with {displayName}" : "Fehler beim Erstellen der Freigabe mit dem Namen {displayName}",
"Are you sure you want to transfer the board {title} to {user}?" : "Möchten Sie wirklich das Board {title} auf {user} übertragen?",
"Transfer the board." : "Board übertragen.",
"Transfer" : "Übertragen",
@@ -238,7 +238,7 @@ OC.L10N.register(
"Open in bigger view" : "In größerer Ansicht öffnen",
"Attachments" : "Anhänge",
"Comments" : "Kommentare",
"Failed to load comments" : "Kommentare konnten nicht geladen werden",
"Failed to load comments" : "Das Laden der Kommentare ist fehlgeschlagen",
"No comments yet. Begin the discussion!" : "Bislang keine Kommentare. Beginnen Sie die Diskussion!",
"The comment cannot be empty." : "Der Kommentar darf nicht leer sein.",
"The comment cannot be longer than 1000 characters." : "Der Kommentar darf nicht länger als 1000 Zeichen sein.",
@@ -270,7 +270,7 @@ OC.L10N.register(
"Set a due date" : "Ein Ablaufdatum setzen",
"Add due date" : "Fälligkeitsdatum hinzufügen",
"Choose a date" : "Datum auswählen",
"Remove due date" : "Fälligkeitsdatum entfernen",
"Remove due date" : "Fälligkeitsdatum löschen",
"Mark as done" : "Als erledigt markieren",
"Due at:" : "Fallig am:",
"Not done" : "Nicht erledigt",
@@ -386,7 +386,7 @@ OC.L10N.register(
"Create a card" : "Eine Karte erstellen",
"Message from {author} in {conversationName}" : "Nachricht von {author} in {conversationName}",
"Something went wrong" : "Etwas ist schiefgelaufen",
"Failed to upload {name}" : "{name} konnte nicht hochgeladen werden",
"Failed to upload {name}" : "Fehler beim Hochladen von {name}",
"Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten",
"Error creating the share" : "Fehler beim Erstellen der Freigabe",
"Share with a Deck card" : "Mit einer Deck-Karte teilen",

View File

@@ -20,7 +20,7 @@
"You have renamed list {before} to {stack} on board {board}" : "Sie haben die Liste {before} auf dem Board {board} in {stack} umbenannt",
"{user} has renamed list {before} to {stack} on board {board}" : "{user} hat die Liste {before} in {stack} auf dem Board {board} umbenannt",
"You have deleted list {stack} on board {board}" : "Sie haben die Liste {stack} auf dem Board {board} gelöscht",
"{user} has deleted list {stack} on board {board}" : "{user} hat die Liste {stack} aus dem Board {board} gelöscht",
"{user} has deleted list {stack} on board {board}" : "{user} hat die Liste {stack} aus dem Board {board} entfernt",
"You have created card {card} in list {stack} on board {board}" : "Sie haben die Karte {card} in der Liste {stack} auf dem Board {board} erstellt",
"{user} has created card {card} in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} erstellt",
"You have deleted card {card} in list {stack} on board {board}" : "Sie haben die Karte {card} in der Liste {stack} auf dem Board {board} gelöscht",
@@ -59,8 +59,8 @@
"{user} has added the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} zur Karte {card} hinzugefügt",
"You have updated the attachment {attachment} on card {card}" : "Sie haben den Anhang {attachment} der Karte {card} aktualisiert",
"{user} has updated the attachment {attachment} on card {card}" : "{user} hat den Anhang {attachment} der Karte {card} aktualisiert",
"You have deleted the attachment {attachment} from card {card}" : "Sie haben den Anhang {attachment} von der Karte {card} gelöscht",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} hat den Anhang {attachment} von Karte {card} gelöscht",
"You have deleted the attachment {attachment} from card {card}" : "Sie haben den Anhang {attachment} von der Karte {card} entfernt",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} hat den Anhang {attachment} von Karte {card} entfernt",
"You have restored the attachment {attachment} to card {card}" : "Sie haben den Anhang {attachment} der Karte {card} wiederhergestellt",
"{user} has restored the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} wiederhergestellt",
"You have commented on card {card}" : "Sie haben die Karte {card} kommentiert",
@@ -184,7 +184,7 @@
"Deleted lists" : "Gelöschte Listen",
"Undo" : "Rückgängig",
"Deleted cards" : "Gelöschte Karten",
"Failed to create share with {displayName}" : "Freigabe mit dem Namen {displayName} konnte nicht erstellt werden",
"Failed to create share with {displayName}" : "Fehler beim Erstellen der Freigabe mit dem Namen {displayName}",
"Are you sure you want to transfer the board {title} to {user}?" : "Möchten Sie wirklich das Board {title} auf {user} übertragen?",
"Transfer the board." : "Board übertragen.",
"Transfer" : "Übertragen",
@@ -236,7 +236,7 @@
"Open in bigger view" : "In größerer Ansicht öffnen",
"Attachments" : "Anhänge",
"Comments" : "Kommentare",
"Failed to load comments" : "Kommentare konnten nicht geladen werden",
"Failed to load comments" : "Das Laden der Kommentare ist fehlgeschlagen",
"No comments yet. Begin the discussion!" : "Bislang keine Kommentare. Beginnen Sie die Diskussion!",
"The comment cannot be empty." : "Der Kommentar darf nicht leer sein.",
"The comment cannot be longer than 1000 characters." : "Der Kommentar darf nicht länger als 1000 Zeichen sein.",
@@ -268,7 +268,7 @@
"Set a due date" : "Ein Ablaufdatum setzen",
"Add due date" : "Fälligkeitsdatum hinzufügen",
"Choose a date" : "Datum auswählen",
"Remove due date" : "Fälligkeitsdatum entfernen",
"Remove due date" : "Fälligkeitsdatum löschen",
"Mark as done" : "Als erledigt markieren",
"Due at:" : "Fallig am:",
"Not done" : "Nicht erledigt",
@@ -384,7 +384,7 @@
"Create a card" : "Eine Karte erstellen",
"Message from {author} in {conversationName}" : "Nachricht von {author} in {conversationName}",
"Something went wrong" : "Etwas ist schiefgelaufen",
"Failed to upload {name}" : "{name} konnte nicht hochgeladen werden",
"Failed to upload {name}" : "Fehler beim Hochladen von {name}",
"Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten",
"Error creating the share" : "Fehler beim Erstellen der Freigabe",
"Share with a Deck card" : "Mit einer Deck-Karte teilen",

View File

@@ -6,7 +6,6 @@ OC.L10N.register(
"Finished" : "Lõpetatud",
"Later" : "Hiljem",
"copy" : "koopia",
"To Do" : "Tegemiseks",
"Done" : "Valmis",
"The file was uploaded" : "Fail laaditi üles",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaetud fail on suurem, kui php.ini failis määratud upload_max_filesize",
@@ -20,8 +19,6 @@ OC.L10N.register(
"Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD",
"Cancel" : "Loobu",
"File already exists" : "Fail on juba olemas",
"Add list" : "Lisa loend",
"List name" : "Nimekirja nimi",
"Active filters" : "Aktiivsed filtrid",
"Open" : "Ava",
"Completed" : "Lõpetatud",
@@ -37,9 +34,7 @@ OC.L10N.register(
"Can share" : "Can share",
"Owner" : "Omanik",
"Delete" : "Kustuta",
"Delete list" : "Kustuta loend",
"Edit" : "Redigeeri",
"Members" : "Liikmed",
"Invalid path selected" : "Vigane asukoht on valitud",
"Upload new files" : "Laadi uued failid üles",
"Share from Files" : "Jaga failirakendusest",
@@ -59,33 +54,23 @@ OC.L10N.register(
"Comments" : "Kommentaarid",
"Save" : "Salvesta",
"Created:" : "Loodud:",
"Cancel reply" : "Katkesta vastamine",
"Reply" : "Vasta",
"Update" : "Uuenda",
"Description" : "Kirjeldus",
"Mark as done" : "Märgi tehtuks",
"(group)" : "(grupp)",
"Edit title" : "Muuda pealkirja",
"Delete card" : "Kustuta kaart",
"seconds ago" : "sekundit tagasi",
"Keyboard shortcuts" : "Klaviatuuri otseteed",
"Keyboard shortcut" : "Klaviatuuri otsetee",
"Action" : "Tegevus",
"Shift" : "Nihuta",
"Ctrl" : "Ctrl",
"Search" : "Otsi",
"Shared with you" : "Sinuga jagatud",
"Cancel edit" : "Loobu muutmisest",
"No reminder" : "Meeldetuletust pole",
"An error occurred" : "Tekkis tõrge",
"No notifications" : "Märguandeid pole",
"Advanced options" : "Täpsemad valikud",
"Today" : "Täna",
"Tomorrow" : "Homme",
"No results found" : "Otsingutulemusi ei leidu",
"Due on {date}" : "Tähtaeg: {date}",
"Close" : "Sulge",
"Error creating the share" : "Viga jaosmeedia loomisel",
"Share" : "Jaga",
"Personal" : "Isiklik"
},

View File

@@ -4,7 +4,6 @@
"Finished" : "Lõpetatud",
"Later" : "Hiljem",
"copy" : "koopia",
"To Do" : "Tegemiseks",
"Done" : "Valmis",
"The file was uploaded" : "Fail laaditi üles",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaetud fail on suurem, kui php.ini failis määratud upload_max_filesize",
@@ -18,8 +17,6 @@
"Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD",
"Cancel" : "Loobu",
"File already exists" : "Fail on juba olemas",
"Add list" : "Lisa loend",
"List name" : "Nimekirja nimi",
"Active filters" : "Aktiivsed filtrid",
"Open" : "Ava",
"Completed" : "Lõpetatud",
@@ -35,9 +32,7 @@
"Can share" : "Can share",
"Owner" : "Omanik",
"Delete" : "Kustuta",
"Delete list" : "Kustuta loend",
"Edit" : "Redigeeri",
"Members" : "Liikmed",
"Invalid path selected" : "Vigane asukoht on valitud",
"Upload new files" : "Laadi uued failid üles",
"Share from Files" : "Jaga failirakendusest",
@@ -57,33 +52,23 @@
"Comments" : "Kommentaarid",
"Save" : "Salvesta",
"Created:" : "Loodud:",
"Cancel reply" : "Katkesta vastamine",
"Reply" : "Vasta",
"Update" : "Uuenda",
"Description" : "Kirjeldus",
"Mark as done" : "Märgi tehtuks",
"(group)" : "(grupp)",
"Edit title" : "Muuda pealkirja",
"Delete card" : "Kustuta kaart",
"seconds ago" : "sekundit tagasi",
"Keyboard shortcuts" : "Klaviatuuri otseteed",
"Keyboard shortcut" : "Klaviatuuri otsetee",
"Action" : "Tegevus",
"Shift" : "Nihuta",
"Ctrl" : "Ctrl",
"Search" : "Otsi",
"Shared with you" : "Sinuga jagatud",
"Cancel edit" : "Loobu muutmisest",
"No reminder" : "Meeldetuletust pole",
"An error occurred" : "Tekkis tõrge",
"No notifications" : "Märguandeid pole",
"Advanced options" : "Täpsemad valikud",
"Today" : "Täna",
"Tomorrow" : "Homme",
"No results found" : "Otsingutulemusi ei leidu",
"Due on {date}" : "Tähtaeg: {date}",
"Close" : "Sulge",
"Error creating the share" : "Viga jaosmeedia loomisel",
"Share" : "Jaga",
"Personal" : "Isiklik"
},"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -90,7 +90,7 @@ OC.L10N.register(
"Deck boards, cards and comments" : "Tableaux, cartes et commentaires de Deck",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "De %1$s, dans %2$s / %3$s, appartenant à %4$s",
"Create a new deck card" : "Créer une nouvelle carte Deck",
"Card comments" : "Commentaires des cartes",
"Card comments" : "Commentaires de la carte",
"%s on %s" : "%s sur %s",
"Deck boards and cards" : "Tableaux et cartes de Deck",
"No data was provided to create an attachment." : "Aucune donnée n'a été fournie pour créer une pièce jointe.",
@@ -347,7 +347,7 @@ OC.L10N.register(
"No notifications" : "Aucune notification",
"Delete board" : "Supprimer le tableau",
"Clone {boardTitle}" : "Cloner {boardTitle}",
"Clone cards" : "Dupliquer les cartes",
"Clone cards" : "Dupliquer des cartes",
"Clone assignments" : "Cloner les affectations",
"Clone labels" : "Cloner les étiquettes",
"Clone due dates" : "Cloner les dates d'échéance",

View File

@@ -88,7 +88,7 @@
"Deck boards, cards and comments" : "Tableaux, cartes et commentaires de Deck",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "De %1$s, dans %2$s / %3$s, appartenant à %4$s",
"Create a new deck card" : "Créer une nouvelle carte Deck",
"Card comments" : "Commentaires des cartes",
"Card comments" : "Commentaires de la carte",
"%s on %s" : "%s sur %s",
"Deck boards and cards" : "Tableaux et cartes de Deck",
"No data was provided to create an attachment." : "Aucune donnée n'a été fournie pour créer une pièce jointe.",
@@ -345,7 +345,7 @@
"No notifications" : "Aucune notification",
"Delete board" : "Supprimer le tableau",
"Clone {boardTitle}" : "Cloner {boardTitle}",
"Clone cards" : "Dupliquer les cartes",
"Clone cards" : "Dupliquer des cartes",
"Clone assignments" : "Cloner les affectations",
"Clone labels" : "Cloner les étiquettes",
"Clone due dates" : "Cloner les dates d'échéance",

View File

@@ -43,10 +43,10 @@ OC.L10N.register(
"{user} has set the due date of card {card} to {after}" : "{user} nustatė galutinį kortelės {card} terminą į {after}",
"You have updated the due date of card {card} to {after}" : "Jūs atnaujinote galutinį kortelės {card} terminą į {after}",
"{user} has updated the due date of card {card} to {after}" : "{user} atnaujino galutinį kortelės {card} terminą į {after}",
"You have added the tag {label} to card {card} in list {stack} on board {board}" : "Jūs lentoje {board}, sąraše {stack} į kortelę {card} pridėjote žymą {label}",
"{user} has added the tag {label} to card {card} in list {stack} on board {board}" : "{user} lentoje {board}, sąraše {stack} į kortelę {card} pridėjo žymą {label}",
"You have removed the tag {label} from card {card} in list {stack} on board {board}" : "Jūs lentoje {board}, sąraše {stack} iš kortelės {card} pašalinote žymą {label}",
"{user} has removed the tag {label} from card {card} in list {stack} on board {board}" : "{user} lentoje {board}, sąraše {stack} iš kortelės {card} pašalino žymą {label}",
"You have added the tag {label} to card {card} in list {stack} on board {board}" : "Jūs lentoje {board}, sąraše {stack} į kortelę {card} pridėjote žymę {label}",
"{user} has added the tag {label} to card {card} in list {stack} on board {board}" : "{user} lentoje {board}, sąraše {stack} į kortelę {card} pridėjo žymę {label}",
"You have removed the tag {label} from card {card} in list {stack} on board {board}" : "Jūs lentoje {board}, sąraše {stack} iš kortelės {card} pašalinote žymę {label}",
"{user} has removed the tag {label} from card {card} in list {stack} on board {board}" : "{user} lentoje {board}, sąraše {stack} iš kortelės {card} pašalino žymę {label}",
"You have assigned {assigneduser} to card {card} on board {board}" : "Jūs lentoje {board} prie kortelės {card} priskyrėte {assigneduser}",
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} lentoje {board} prie kortelės {card} priskyrė {assigneduser}",
"You have moved the card {card} from list {stackBefore} to {stack}" : "Jūs perkėlėte kortelę {card} iš sąrašo {stackBefore} į sąrašą {stack}",
@@ -120,9 +120,8 @@ OC.L10N.register(
"List name" : "Sąrašo pavadinimas",
"Active filters" : "Aktyvūs filtrai",
"Apply filter" : "Taikyti filtrą",
"Filter by tag" : "Filtruoti pagal žymą",
"Filter by tag" : "Filtruoti pagal žymę",
"Filter by assigned user" : "Filtruoti pagal priskirtą naudotoją",
"Open and completed" : "Atidaryta ir atlikta",
"Open" : "Atverti",
"Completed" : "Užbaigta",
"Filter by due date" : "Filtruoti pagal galutinio termino datą",
@@ -141,7 +140,7 @@ OC.L10N.register(
"Board not found" : "Lenta nerasta",
"Create a new list to add cards to this board" : "Norėdami pridėti korteles į šią lentą, sukurkite naują sąrašą",
"Sharing" : "Bendrinimas",
"Tags" : "Žymos",
"Tags" : "Žymės",
"Deleted items" : "Ištrinti elementai",
"Activity" : "Veikla",
"Deleted lists" : "Ištrinti sąrašai",
@@ -166,7 +165,7 @@ OC.L10N.register(
"Card name" : "Kortelės pavadinimas",
"title and color value must be provided" : "privalo būti pateiktos pavadinimo ir spalvos reikšmės",
"Edit" : "Taisyti",
"Add a new tag" : "Pridėti naują žymą",
"Add a new tag" : "Pridėti naują žymę",
"Board name" : "Lentos pavadinimas",
"Members" : "Nariai",
"Assign a user to this card…" : "Priskirti šiai kortelei naudotoją…",
@@ -214,7 +213,7 @@ OC.L10N.register(
"Mark as done" : "Žymėti kaip atliktą",
"Unarchive card" : "Išarchyvuoti kortelę",
"Archive card" : "Archyvuoti kortelę",
"Assign a tag to this card…" : "Priskirti šiai kortelei žymą…",
"Assign a tag to this card…" : "Priskirti šiai kortelei žymę…",
"(group)" : "(grupė)",
"{count} comments, {unread} unread" : "Komentarų: {count}, neskaityta: {unread}",
"Open link" : "Atverti nuorodą",

View File

@@ -41,10 +41,10 @@
"{user} has set the due date of card {card} to {after}" : "{user} nustatė galutinį kortelės {card} terminą į {after}",
"You have updated the due date of card {card} to {after}" : "Jūs atnaujinote galutinį kortelės {card} terminą į {after}",
"{user} has updated the due date of card {card} to {after}" : "{user} atnaujino galutinį kortelės {card} terminą į {after}",
"You have added the tag {label} to card {card} in list {stack} on board {board}" : "Jūs lentoje {board}, sąraše {stack} į kortelę {card} pridėjote žymą {label}",
"{user} has added the tag {label} to card {card} in list {stack} on board {board}" : "{user} lentoje {board}, sąraše {stack} į kortelę {card} pridėjo žymą {label}",
"You have removed the tag {label} from card {card} in list {stack} on board {board}" : "Jūs lentoje {board}, sąraše {stack} iš kortelės {card} pašalinote žymą {label}",
"{user} has removed the tag {label} from card {card} in list {stack} on board {board}" : "{user} lentoje {board}, sąraše {stack} iš kortelės {card} pašalino žymą {label}",
"You have added the tag {label} to card {card} in list {stack} on board {board}" : "Jūs lentoje {board}, sąraše {stack} į kortelę {card} pridėjote žymę {label}",
"{user} has added the tag {label} to card {card} in list {stack} on board {board}" : "{user} lentoje {board}, sąraše {stack} į kortelę {card} pridėjo žymę {label}",
"You have removed the tag {label} from card {card} in list {stack} on board {board}" : "Jūs lentoje {board}, sąraše {stack} iš kortelės {card} pašalinote žymę {label}",
"{user} has removed the tag {label} from card {card} in list {stack} on board {board}" : "{user} lentoje {board}, sąraše {stack} iš kortelės {card} pašalino žymę {label}",
"You have assigned {assigneduser} to card {card} on board {board}" : "Jūs lentoje {board} prie kortelės {card} priskyrėte {assigneduser}",
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} lentoje {board} prie kortelės {card} priskyrė {assigneduser}",
"You have moved the card {card} from list {stackBefore} to {stack}" : "Jūs perkėlėte kortelę {card} iš sąrašo {stackBefore} į sąrašą {stack}",
@@ -118,9 +118,8 @@
"List name" : "Sąrašo pavadinimas",
"Active filters" : "Aktyvūs filtrai",
"Apply filter" : "Taikyti filtrą",
"Filter by tag" : "Filtruoti pagal žymą",
"Filter by tag" : "Filtruoti pagal žymę",
"Filter by assigned user" : "Filtruoti pagal priskirtą naudotoją",
"Open and completed" : "Atidaryta ir atlikta",
"Open" : "Atverti",
"Completed" : "Užbaigta",
"Filter by due date" : "Filtruoti pagal galutinio termino datą",
@@ -139,7 +138,7 @@
"Board not found" : "Lenta nerasta",
"Create a new list to add cards to this board" : "Norėdami pridėti korteles į šią lentą, sukurkite naują sąrašą",
"Sharing" : "Bendrinimas",
"Tags" : "Žymos",
"Tags" : "Žymės",
"Deleted items" : "Ištrinti elementai",
"Activity" : "Veikla",
"Deleted lists" : "Ištrinti sąrašai",
@@ -164,7 +163,7 @@
"Card name" : "Kortelės pavadinimas",
"title and color value must be provided" : "privalo būti pateiktos pavadinimo ir spalvos reikšmės",
"Edit" : "Taisyti",
"Add a new tag" : "Pridėti naują žymą",
"Add a new tag" : "Pridėti naują žymę",
"Board name" : "Lentos pavadinimas",
"Members" : "Nariai",
"Assign a user to this card…" : "Priskirti šiai kortelei naudotoją…",
@@ -212,7 +211,7 @@
"Mark as done" : "Žymėti kaip atliktą",
"Unarchive card" : "Išarchyvuoti kortelę",
"Archive card" : "Archyvuoti kortelę",
"Assign a tag to this card…" : "Priskirti šiai kortelei žymą…",
"Assign a tag to this card…" : "Priskirti šiai kortelei žymę…",
"(group)" : "(grupė)",
"{count} comments, {unread} unread" : "Komentarų: {count}, neskaityta: {unread}",
"Open link" : "Atverti nuorodą",

View File

@@ -18,7 +18,6 @@ OC.L10N.register(
"Could not write file to disk" : "Nevarēja ierakstīt datni diskā",
"A PHP extension stopped the file upload" : "PHP paplašinājums apturēja datnes augšupielādi",
"Invalid date, date format must be YYYY-MM-DD" : "Nederīgs datums, datuma formātam jābūt YYYY-MM-DD",
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck ir kanban veida organizēšanas rīks, kas paredzēts personīgai plānošanai un projektu orgenizēšanai komandām, kas ir iekļauts Nextcloud.\n\n\n- 📥 Uzdevumu pievienošana kartītēm un to sakārtošana\n- 📄 Papildu piezīmes var pierakstīt ar Markdown\n- 🔖 Vēl labākai pārraudzībai var piešķirt iezīmes\n- 👥 Koplietošana ar savu komandu, draugiem vai ģimeni\n- 📎 Datņu pievienošana un iekļaušana Markdown aprakstā\n- 💬 Apspriešana ar savu komandu ar piebildēm\n- ⚡ Izmaiņu izsekošana darbību plūsmā\n- 🚀 Sava projekta sakārtošana",
"Cancel" : "Atcelt",
"File already exists" : "Datne jau pastāv",
"Do you want to overwrite it?" : "Vai tu gribi pārrakstīt to?",
@@ -38,14 +37,13 @@ OC.L10N.register(
"Can edit" : "Var labot",
"Can share" : "Var koplietot",
"Owner" : "Īpašnieks",
"Delete" : "Izdzēst",
"Delete" : "Dzēst",
"Edit" : "Labot",
"Members" : "Biedri",
"File to share" : "Kopīgojamā datne",
"Download" : "Lejupielādēt",
"Modified" : "Mainīts",
"Created" : "Izveidots",
"Open in sidebar view" : "Atvērt sānjoslas skatā",
"Attachments" : "Pielikumi",
"Comments" : "Piebildes",
"Save" : "Saglabāt",
@@ -55,7 +53,6 @@ OC.L10N.register(
"Description" : "Apraksts",
"Select Date" : "Izvēlieties datumu",
"(group)" : "(grupa)",
"Open link" : "Atvērt saiti",
"seconds ago" : "sekundēm",
"Keyboard shortcuts" : "Tastatūras saīsnes",
"Keyboard shortcut" : "Tastatūras saīsne",

View File

@@ -16,7 +16,6 @@
"Could not write file to disk" : "Nevarēja ierakstīt datni diskā",
"A PHP extension stopped the file upload" : "PHP paplašinājums apturēja datnes augšupielādi",
"Invalid date, date format must be YYYY-MM-DD" : "Nederīgs datums, datuma formātam jābūt YYYY-MM-DD",
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck ir kanban veida organizēšanas rīks, kas paredzēts personīgai plānošanai un projektu orgenizēšanai komandām, kas ir iekļauts Nextcloud.\n\n\n- 📥 Uzdevumu pievienošana kartītēm un to sakārtošana\n- 📄 Papildu piezīmes var pierakstīt ar Markdown\n- 🔖 Vēl labākai pārraudzībai var piešķirt iezīmes\n- 👥 Koplietošana ar savu komandu, draugiem vai ģimeni\n- 📎 Datņu pievienošana un iekļaušana Markdown aprakstā\n- 💬 Apspriešana ar savu komandu ar piebildēm\n- ⚡ Izmaiņu izsekošana darbību plūsmā\n- 🚀 Sava projekta sakārtošana",
"Cancel" : "Atcelt",
"File already exists" : "Datne jau pastāv",
"Do you want to overwrite it?" : "Vai tu gribi pārrakstīt to?",
@@ -36,14 +35,13 @@
"Can edit" : "Var labot",
"Can share" : "Var koplietot",
"Owner" : "Īpašnieks",
"Delete" : "Izdzēst",
"Delete" : "Dzēst",
"Edit" : "Labot",
"Members" : "Biedri",
"File to share" : "Kopīgojamā datne",
"Download" : "Lejupielādēt",
"Modified" : "Mainīts",
"Created" : "Izveidots",
"Open in sidebar view" : "Atvērt sānjoslas skatā",
"Attachments" : "Pielikumi",
"Comments" : "Piebildes",
"Save" : "Saglabāt",
@@ -53,7 +51,6 @@
"Description" : "Apraksts",
"Select Date" : "Izvēlieties datumu",
"(group)" : "(grupa)",
"Open link" : "Atvērt saiti",
"seconds ago" : "sekundēm",
"Keyboard shortcuts" : "Tastatūras saīsnes",
"Keyboard shortcut" : "Tastatūras saīsne",

View File

@@ -85,14 +85,14 @@ OC.L10N.register(
"{user} has mentioned you in a comment on {deck-card}." : "{user} mencionou você em um comentário em {deck-card}.",
"The board \"%s\" has been shared with you by %s." : "O painel \"%s\" foi compartilhado com você por %s.",
"{user} has shared {deck-board} with you." : "{user} compartilhou o {deck-board} com você.",
"Deck board" : "Painel de Deck",
"Deck board" : "Painel de deck",
"Owned by %1$s" : "Propriedade de %1$s",
"Deck boards, cards and comments" : "Paineis, cartões e comentários de Deck",
"Deck boards, cards and comments" : "Quadros de aviso Deck, quadros de aviso e comentários",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "De %1$s, em %2$s/%3$s, propriedade de %4$s",
"Create a new deck card" : "Crie um novo cartão de Deck",
"Create a new deck card" : "Crie uma nova carta de deck",
"Card comments" : "Comentários do cartão",
"%s on %s" : "%s em %s",
"Deck boards and cards" : "Paineis e cartões de Deck",
"Deck boards and cards" : "Quadros de aviso e cartas Deck",
"No data was provided to create an attachment." : "Nenhum dado foi fornecido para criar um anexo.",
"Finished" : "Terminado",
"To review" : "Para revisão",
@@ -116,7 +116,7 @@ OC.L10N.register(
"No file was uploaded" : "Nenhum arquivo foi enviado",
"Missing a temporary folder" : "Falta uma pasta temporária",
"Could not write file to disk" : "Não foi possível escrever no disco",
"A PHP extension stopped the file upload" : "Uma extensão PHP parou o upload do arquivo",
"A PHP extension stopped the file upload" : "Uma extensão PHP parou o envio do arquivo",
"No file uploaded or file size exceeds maximum of %s" : "Nenhum arquivo enviado ou o tamanho excede o máximo de %s",
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Este comentário tem mais de %s caracteres.\nEle foi adicionado como um anexo ao cartão de nome %s.\nAcessível na URL: %s.",
"Card not found" : "Cartão não encontrado",
@@ -273,7 +273,7 @@ OC.L10N.register(
"Remove due date" : "Remover data de vencimento",
"Mark as done" : "Marcar como concluído",
"Due at:" : "Vencimento em:",
"Not done" : "Não concluído",
"Not done" : "Não realizado",
"Unarchive card" : "Desarquivar cartão",
"Archive card" : "Arquivar cartão",
"Assign a tag to this card…" : "Atribuir uma etiqueta a este cartão...",
@@ -362,7 +362,7 @@ OC.L10N.register(
"No due" : "Sem vencimento",
"Search for {searchQuery} in all boards" : "Pesquisar por {searchQuery} em todos os painéis",
"No results found" : "Nenhum resultado encontrado",
"Deck board {name}\n* Last modified on {lastMod}" : "Painel de Deck {name}\n* Última modificação em {lastMod}",
"Deck board {name}\n* Last modified on {lastMod}" : "Quadros de aviso Deck {name}\n* Última modificação em {lastMod}",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Criado em {created}\n* Última modificação em {lastMod}\n* {nbAttachments} anexos\n* {nbComments} comentários",
"{nbCards} cards" : "{nbCards} cartões",
"Due on {date}" : "Vencimento em {date}",
@@ -380,7 +380,7 @@ OC.L10N.register(
"upcoming cards today" : "próximos cartões hoje",
"upcoming cards tomorrow" : "próximos cartões amanhã",
"upcoming cards" : "próximos cartões",
"New card" : "Novo cartão",
"New card" : "New card",
"Link to a board" : "Vincular a um painel",
"Link to a card" : "Vincular a um cartão",
"Create a card" : "Criar um cartão",

View File

@@ -83,14 +83,14 @@
"{user} has mentioned you in a comment on {deck-card}." : "{user} mencionou você em um comentário em {deck-card}.",
"The board \"%s\" has been shared with you by %s." : "O painel \"%s\" foi compartilhado com você por %s.",
"{user} has shared {deck-board} with you." : "{user} compartilhou o {deck-board} com você.",
"Deck board" : "Painel de Deck",
"Deck board" : "Painel de deck",
"Owned by %1$s" : "Propriedade de %1$s",
"Deck boards, cards and comments" : "Paineis, cartões e comentários de Deck",
"Deck boards, cards and comments" : "Quadros de aviso Deck, quadros de aviso e comentários",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "De %1$s, em %2$s/%3$s, propriedade de %4$s",
"Create a new deck card" : "Crie um novo cartão de Deck",
"Create a new deck card" : "Crie uma nova carta de deck",
"Card comments" : "Comentários do cartão",
"%s on %s" : "%s em %s",
"Deck boards and cards" : "Paineis e cartões de Deck",
"Deck boards and cards" : "Quadros de aviso e cartas Deck",
"No data was provided to create an attachment." : "Nenhum dado foi fornecido para criar um anexo.",
"Finished" : "Terminado",
"To review" : "Para revisão",
@@ -114,7 +114,7 @@
"No file was uploaded" : "Nenhum arquivo foi enviado",
"Missing a temporary folder" : "Falta uma pasta temporária",
"Could not write file to disk" : "Não foi possível escrever no disco",
"A PHP extension stopped the file upload" : "Uma extensão PHP parou o upload do arquivo",
"A PHP extension stopped the file upload" : "Uma extensão PHP parou o envio do arquivo",
"No file uploaded or file size exceeds maximum of %s" : "Nenhum arquivo enviado ou o tamanho excede o máximo de %s",
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Este comentário tem mais de %s caracteres.\nEle foi adicionado como um anexo ao cartão de nome %s.\nAcessível na URL: %s.",
"Card not found" : "Cartão não encontrado",
@@ -271,7 +271,7 @@
"Remove due date" : "Remover data de vencimento",
"Mark as done" : "Marcar como concluído",
"Due at:" : "Vencimento em:",
"Not done" : "Não concluído",
"Not done" : "Não realizado",
"Unarchive card" : "Desarquivar cartão",
"Archive card" : "Arquivar cartão",
"Assign a tag to this card…" : "Atribuir uma etiqueta a este cartão...",
@@ -360,7 +360,7 @@
"No due" : "Sem vencimento",
"Search for {searchQuery} in all boards" : "Pesquisar por {searchQuery} em todos os painéis",
"No results found" : "Nenhum resultado encontrado",
"Deck board {name}\n* Last modified on {lastMod}" : "Painel de Deck {name}\n* Última modificação em {lastMod}",
"Deck board {name}\n* Last modified on {lastMod}" : "Quadros de aviso Deck {name}\n* Última modificação em {lastMod}",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Criado em {created}\n* Última modificação em {lastMod}\n* {nbAttachments} anexos\n* {nbComments} comentários",
"{nbCards} cards" : "{nbCards} cartões",
"Due on {date}" : "Vencimento em {date}",
@@ -378,7 +378,7 @@
"upcoming cards today" : "próximos cartões hoje",
"upcoming cards tomorrow" : "próximos cartões amanhã",
"upcoming cards" : "próximos cartões",
"New card" : "Novo cartão",
"New card" : "New card",
"Link to a board" : "Vincular a um painel",
"Link to a card" : "Vincular a um cartão",
"Create a card" : "Criar um cartão",

View File

@@ -86,7 +86,7 @@ OC.L10N.register(
"Select a card" : "Вибрати картку",
"Cancel" : "Скасувати",
"This board is read only" : "Дошка тільки для читання",
"Drop your files to upload" : "Перетягнути файли для завантаження",
"Drop your files to upload" : "Пересуньте файли сюди для завантаження",
"File already exists" : "Файл вже існує",
"A file with the name {filename} already exists." : "Файл {filename} вже існує.",
"Do you want to overwrite it?" : "Дійсно перезаписати файл?",
@@ -97,7 +97,7 @@ OC.L10N.register(
"Add list" : "Додати список",
"List name" : "Назва списку",
"Active filters" : "Активні фільтри",
"Apply filter" : "Фільтрувати",
"Apply filter" : "Відфільтрувати",
"Filter by tag" : "Відібрати за мітками",
"Filter by assigned user" : "Відібрати за призначеним користувачем",
"Unassigned" : "Скасовано призначення",
@@ -127,7 +127,7 @@ OC.L10N.register(
"Transfer" : "Передати",
"Board owner" : "Власник дошки",
"(Group)" : "(група)",
"Can edit" : "Може редагувати",
"Can edit" : "Можна редагувати",
"Can share" : "Can share",
"Can manage" : "Може керувати",
"Owner" : "Власник",

View File

@@ -84,7 +84,7 @@
"Select a card" : "Вибрати картку",
"Cancel" : "Скасувати",
"This board is read only" : "Дошка тільки для читання",
"Drop your files to upload" : "Перетягнути файли для завантаження",
"Drop your files to upload" : "Пересуньте файли сюди для завантаження",
"File already exists" : "Файл вже існує",
"A file with the name {filename} already exists." : "Файл {filename} вже існує.",
"Do you want to overwrite it?" : "Дійсно перезаписати файл?",
@@ -95,7 +95,7 @@
"Add list" : "Додати список",
"List name" : "Назва списку",
"Active filters" : "Активні фільтри",
"Apply filter" : "Фільтрувати",
"Apply filter" : "Відфільтрувати",
"Filter by tag" : "Відібрати за мітками",
"Filter by assigned user" : "Відібрати за призначеним користувачем",
"Unassigned" : "Скасовано призначення",
@@ -125,7 +125,7 @@
"Transfer" : "Передати",
"Board owner" : "Власник дошки",
"(Group)" : "(група)",
"Can edit" : "Може редагувати",
"Can edit" : "Можна редагувати",
"Can share" : "Can share",
"Can manage" : "Може керувати",
"Owner" : "Власник",

View File

@@ -2,9 +2,6 @@ OC.L10N.register(
"deck",
{
"Deck" : "Pastki qavat",
"Upcoming cards" : "Kelgusi kartalar",
"Deck board" : "Pastki taxta",
"Later" : "Keyinchalik",
"copy" : "copy",
"Done" : "Done",
"The file was uploaded" : "Fayl yuklangan edi",
@@ -15,58 +12,30 @@ OC.L10N.register(
"Missing a temporary folder" : "Vaqtinchalik papka etishmayapti",
"Could not write file to disk" : "Faylni diskka yozib bo'lmadi",
"A PHP extension stopped the file upload" : "PHP kengaytmasi faylni yuklashni to'xtatdi",
"Card not found" : "Karta topilmadi",
"Add board" : "Doska qo'shing",
"Move card" : "Kartani ko'chirish",
"Cancel" : "Cancel",
"Add card" : "Karta qo'shing",
"Archived cards" : "Arxivlangan kartalar",
"Add list" : "Roʻyxat qoʻshish",
"Unassigned" : "Tayinlanmagan",
"Open" : "Open",
"Overdue" : "Muddati o'tgan",
"Next 7 days" : "Keyingi 7 kun",
"Next 30 days" : "Keyingi 30 kun",
"No due date" : "Muddati yo'q",
"Details" : "Details",
"Sharing" : "Ulashish",
"Tags" : "Tags",
"Activity" : "Faollik",
"Undo" : "Bekor qilish",
"Can edit" : "Can edit",
"Owner" : "Owner",
"Delete" : "Delete",
"Delete list" : "Roʻyxatni oʻchirish",
"Edit" : "Tahrirlash",
"Download" : "Download",
"Modified" : "Modified",
"Attachments" : "Qo'shimchalar",
"Comments" : "Comments",
"Save" : "Save",
"In reply to" : "ga javoban",
"Reply" : "Javob bering",
"Update" : "Update",
"Description" : "Tavsif",
"Edit description" : "Tavsifni tahrirlash",
"Mark as done" : "Bajarildi deb belgilang",
"Not done" : "Bajarilmadi",
"Archive card" : "Arxiv kartasi",
"Edit title" : "Sarlavhani tahrirlash",
"Delete card" : "Kartani o'chirish",
"seconds ago" : "seconds ago",
"Search" : "Search",
"Archived boards" : "Arxivlangan taxtalar",
"Shared with you" : "Shared with you",
"No reminder" : "Eslatma yo'q",
"Edit board" : "Tahrirlash paneli",
"Clone board" : "Klon taxtasi",
"Archive board" : "Arxiv paneli",
"No notifications" : "Hech qanday bildirishnoma yo'q",
"Delete board" : "Panelni o'chirish",
"Clone cards" : "Klon kartalari",
"Clone" : "Klonlash",
"Today" : "Today",
"Tomorrow" : "Ertaga",
"No results found" : "Hech qanday natija topilmadi",
"Close" : "Close",
"Share" : "Ulashish",

View File

@@ -1,8 +1,5 @@
{ "translations": {
"Deck" : "Pastki qavat",
"Upcoming cards" : "Kelgusi kartalar",
"Deck board" : "Pastki taxta",
"Later" : "Keyinchalik",
"copy" : "copy",
"Done" : "Done",
"The file was uploaded" : "Fayl yuklangan edi",
@@ -13,58 +10,30 @@
"Missing a temporary folder" : "Vaqtinchalik papka etishmayapti",
"Could not write file to disk" : "Faylni diskka yozib bo'lmadi",
"A PHP extension stopped the file upload" : "PHP kengaytmasi faylni yuklashni to'xtatdi",
"Card not found" : "Karta topilmadi",
"Add board" : "Doska qo'shing",
"Move card" : "Kartani ko'chirish",
"Cancel" : "Cancel",
"Add card" : "Karta qo'shing",
"Archived cards" : "Arxivlangan kartalar",
"Add list" : "Roʻyxat qoʻshish",
"Unassigned" : "Tayinlanmagan",
"Open" : "Open",
"Overdue" : "Muddati o'tgan",
"Next 7 days" : "Keyingi 7 kun",
"Next 30 days" : "Keyingi 30 kun",
"No due date" : "Muddati yo'q",
"Details" : "Details",
"Sharing" : "Ulashish",
"Tags" : "Tags",
"Activity" : "Faollik",
"Undo" : "Bekor qilish",
"Can edit" : "Can edit",
"Owner" : "Owner",
"Delete" : "Delete",
"Delete list" : "Roʻyxatni oʻchirish",
"Edit" : "Tahrirlash",
"Download" : "Download",
"Modified" : "Modified",
"Attachments" : "Qo'shimchalar",
"Comments" : "Comments",
"Save" : "Save",
"In reply to" : "ga javoban",
"Reply" : "Javob bering",
"Update" : "Update",
"Description" : "Tavsif",
"Edit description" : "Tavsifni tahrirlash",
"Mark as done" : "Bajarildi deb belgilang",
"Not done" : "Bajarilmadi",
"Archive card" : "Arxiv kartasi",
"Edit title" : "Sarlavhani tahrirlash",
"Delete card" : "Kartani o'chirish",
"seconds ago" : "seconds ago",
"Search" : "Search",
"Archived boards" : "Arxivlangan taxtalar",
"Shared with you" : "Shared with you",
"No reminder" : "Eslatma yo'q",
"Edit board" : "Tahrirlash paneli",
"Clone board" : "Klon taxtasi",
"Archive board" : "Arxiv paneli",
"No notifications" : "Hech qanday bildirishnoma yo'q",
"Delete board" : "Panelni o'chirish",
"Clone cards" : "Klon kartalari",
"Clone" : "Klonlash",
"Today" : "Today",
"Tomorrow" : "Ertaga",
"No results found" : "Hech qanday natija topilmadi",
"Close" : "Close",
"Share" : "Ulashish",

View File

@@ -76,21 +76,6 @@ class AssignmentMapper extends DeckMapper implements IPermissionMapper {
return $this->findEntities($qb);
}
public function deleteByParticipantOnBoard(string $participant, int $boardId, $type = Assignment::TYPE_USER) {
$qb = $this->db->getQueryBuilder();
$cardIdQuery = $this->db->getQueryBuilder();
$cardIdQuery->select('a.card_id')
->from('deck_assigned_users', 'a')
->innerJoin('a', 'deck_cards', 'c', 'c.id = a.card_id')
->innerJoin('c', 'deck_stacks', 's', 's.id = c.stack_id')
->where($cardIdQuery->expr()->eq('a.participant', $qb->createNamedParameter($participant, IQueryBuilder::PARAM_STR)))
->andWhere($cardIdQuery->expr()->eq('s.board_id', $qb->createNamedParameter($boardId, IQueryBuilder::PARAM_INT)))
->andWhere($cardIdQuery->expr()->eq('a.type', $qb->createNamedParameter($type, IQueryBuilder::PARAM_INT)));
$qb->delete('deck_assigned_users')
->where($qb->expr()->in('card_id', $qb->createFunction($cardIdQuery->getSQL()), IQueryBuilder::PARAM_INT_ARRAY));
$qb->executeStatement();
}
public function isOwner($userId, $id): bool {
return $this->cardMapper->isOwner($userId, $id);

View File

@@ -1,78 +0,0 @@
<?php
/**
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Deck\Migration;
use OCP\IDBConnection;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
class LabelMismatchCleanup implements IRepairStep {
public function __construct(
private IDBConnection $db,
) {
}
public function getName() {
return 'Migrate labels with wrong board mapping';
}
public function run(IOutput $output) {
// Find assingments where a label of another (wrong) board is used
$qb = $this->db->getQueryBuilder();
$qb->select('al.id', 'al.label_id', 'al.card_id', 's.board_id as actual_board_id', 'l.board_id as wrong_id', 'l.color', 'l.title')
->from('deck_assigned_labels', 'al')
->innerJoin('al', 'deck_cards', 'c', 'c.id = al.card_id')
->innerJoin('c', 'deck_stacks', 's', 'c.stack_id = s.id')
->innerJoin('al', 'deck_labels', 'l', 'l.id = al.label_id')
->where($qb->expr()->neq('l.board_id', 's.board_id'));
$labels = $qb->executeQUery()->fetchAll();
if (count($labels) === 0) {
return;
}
$output->info('Found ' . count($labels) . ' labels with wrong board mapping');
foreach ($labels as $label) {
// Select existing label on the correct board
$qb = $this->db->getQueryBuilder();
$qb->select('id')
->from('deck_labels')
->where($qb->expr()->eq('title', $qb->createNamedParameter($label['title'])))
->andWhere($qb->expr()->eq('color', $qb->createNamedParameter($label['color'])))
->andWhere($qb->expr()->eq('board_id', $qb->createNamedParameter($label['actual_board_id'])));
$result = $qb->executeQuery();
$newLabel = $result->fetchOne();
$result->closeCursor();
if (!$newLabel) {
// Create a new label with the same title and color on the correct board
$qb = $this->db->getQueryBuilder();
$qb->insert('deck_labels')
->values([
'title' => $qb->createNamedParameter($label['title']),
'color' => $qb->createNamedParameter($label['color']),
'board_id' => $qb->createNamedParameter($label['actual_board_id']),
]);
$qb->executeStatement();
$newLabel = $qb->getLastInsertId();
$output->debug('Created new label ' . $label['title'] . ' on board ' . $label['actual_board_id']);
} else {
$output->debug('Found existing label ' . $label['title'] . ' on board ' . $label['actual_board_id']);
}
// Update the assignment to use the new label
$qb = $this->db->getQueryBuilder();
$qb->update('deck_assigned_labels')
->set('label_id', $qb->createNamedParameter($newLabel))
->where($qb->expr()->eq('id', $qb->createNamedParameter($label['id'])));
$qb->executeStatement();
$output->debug('Updated label assignment ' . $label['id'] . ' to use label ' . $newLabel);
}
}
}

View File

@@ -106,21 +106,21 @@ class Notifier implements INotifier {
[
'deck-card' => [
'type' => 'deck-card',
'id' => (string)$cardId,
'id' => $cardId,
'name' => $params[0],
'boardname' => (string)$params[1],
'boardname' => $params[1],
'stackname' => $stack->getTitle(),
'link' => $this->getCardUrl($boardId, $cardId),
],
'deck-board' => [
'type' => 'deck-board',
'id' => (string)$boardId,
'name' => (string)$params[1],
'id' => $boardId,
'name' => $params[1],
'link' => $this->getBoardUrl($boardId),
],
'user' => [
'type' => 'user',
'id' => (string)$params[2],
'id' => $params[2],
'name' => $dn,
]
]
@@ -143,16 +143,16 @@ class Notifier implements INotifier {
[
'deck-card' => [
'type' => 'deck-card',
'id' => (string)$cardId,
'name' => (string)$params[0],
'boardname' => (string)$params[1],
'id' => $cardId,
'name' => $params[0],
'boardname' => $params[1],
'stackname' => $stack->getTitle(),
'link' => $this->getCardUrl($boardId, $cardId),
],
'deck-board' => [
'type' => 'deck-board',
'id' => (string)$boardId,
'name' => (string)$params[1],
'id' => $boardId,
'name' => $params[1],
'link' => $this->getBoardUrl($boardId),
],
]
@@ -181,15 +181,15 @@ class Notifier implements INotifier {
[
'deck-card' => [
'type' => 'deck-card',
'id' => (string)$cardId,
'name' => (string)$params[0],
'boardname' => (string)$params[1],
'id' => $cardId,
'name' => $params[0],
'boardname' => $params[1],
'stackname' => $stack->getTitle(),
'link' => $this->getCardUrl($boardId, $cardId),
],
'user' => [
'type' => 'user',
'id' => (string)$params[2],
'id' => $params[2],
'name' => $dn,
]
]
@@ -218,8 +218,8 @@ class Notifier implements INotifier {
[
'deck-board' => [
'type' => 'deck-board',
'id' => (string)$boardId,
'name' => (string)$params[0],
'id' => $boardId,
'name' => $params[0],
'link' => $this->getBoardUrl($boardId),
],
'user' => [

View File

@@ -444,7 +444,10 @@ class BoardService {
$acl = $this->aclMapper->find($id);
$this->boardMapper->mapAcl($acl);
if ($acl->getType() === Acl::PERMISSION_TYPE_USER) {
$this->assignedUsersMapper->deleteByParticipantOnBoard($acl->getParticipant(), $acl->getBoardId());
$assignements = $this->assignedUsersMapper->findByParticipant($acl->getParticipant());
foreach ($assignements as $assignement) {
$this->assignedUsersMapper->delete($assignement);
}
}
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_BOARD, $acl, ActivityManager::SUBJECT_BOARD_UNSHARE);
@@ -762,8 +765,6 @@ class BoardService {
$fullCards = [];
foreach ($cards as $card) {
$fullCard = $this->cardMapper->find($card->getId());
$assignedUsers = $this->assignedUsersMapper->findAll($card->getId());
$fullCard->setAssignedUsers($assignedUsers);
array_push($fullCards, $fullCard);
}
$stack->setCards($fullCards);

View File

@@ -609,9 +609,8 @@ class CardService {
public function assignLabel($cardId, $labelId) {
$this->cardServiceValidator->check(compact('cardId', 'labelId'));
$this->permissionService->checkPermission($this->cardMapper, $cardId, Acl::PERMISSION_EDIT);
$this->permissionService->checkPermission($this->labelMapper, $labelId, Acl::PERMISSION_READ);
$this->permissionService->checkPermission($this->cardMapper, $cardId, Acl::PERMISSION_EDIT);
if ($this->boardService->isArchived($this->cardMapper, $cardId)) {
throw new StatusException('Operation not allowed. This board is archived.');
}
@@ -620,9 +619,6 @@ class CardService {
throw new StatusException('Operation not allowed. This card is archived.');
}
$label = $this->labelMapper->find($labelId);
if ($label->getBoardId() !== $this->cardMapper->findBoardId($card->getId())) {
throw new StatusException('Operation not allowed. Label does not exist.');
}
$this->cardMapper->assignLabel($cardId, $labelId);
$this->changeHelper->cardChanged($cardId);
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_LABEL_ASSIGN, ['label' => $label]);
@@ -644,8 +640,6 @@ class CardService {
$this->permissionService->checkPermission($this->cardMapper, $cardId, Acl::PERMISSION_EDIT);
$this->permissionService->checkPermission($this->labelMapper, $labelId, Acl::PERMISSION_READ);
if ($this->boardService->isArchived($this->cardMapper, $cardId)) {
throw new StatusException('Operation not allowed. This board is archived.');
}
@@ -654,9 +648,6 @@ class CardService {
throw new StatusException('Operation not allowed. This card is archived.');
}
$label = $this->labelMapper->find($labelId);
if ($label->getBoardId() !== $this->cardMapper->findBoardId($card->getId())) {
throw new StatusException('Operation not allowed. Label does not exist.');
}
$this->cardMapper->removeLabel($cardId, $labelId);
$this->changeHelper->cardChanged($cardId);
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_LABEL_UNASSING, ['label' => $label]);

View File

@@ -270,7 +270,7 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
private function applyBoardPermission($share, $permissions, $userId) {
try {
$this->permissionService->checkPermission($this->cardMapper, $share->getSharedWith(), Acl::PERMISSION_EDIT, $userId, true);
$this->permissionService->checkPermission($this->cardMapper, $share->getSharedWith(), Acl::PERMISSION_EDIT, $userId);
} catch (NoPermissionException $e) {
$permissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_UPDATE;
$permissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE;
@@ -278,7 +278,7 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
}
try {
$this->permissionService->checkPermission($this->cardMapper, $share->getSharedWith(), Acl::PERMISSION_SHARE, $userId, true);
$this->permissionService->checkPermission($this->cardMapper, $share->getSharedWith(), Acl::PERMISSION_SHARE, $userId);
} catch (NoPermissionException $e) {
$permissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_SHARE;
}
@@ -747,8 +747,6 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
$qb->expr()->eq('s.item_type', $qb->createNamedParameter('folder'))
));
$qb->andWhere($qb->expr()->eq('dc.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT)));
$cursor = $qb->execute();
while ($data = $cursor->fetch()) {
if (!$this->isAccessibleResult($data)) {

1772
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -43,10 +43,10 @@
"@nextcloud/moment": "^1.3.2",
"@nextcloud/notify_push": "^1.3.0",
"@nextcloud/router": "^3.0.1",
"@nextcloud/vue": "^8.25.1",
"@nextcloud/vue": "^8.22.0",
"blueimp-md5": "^2.19.0",
"chroma-js": "^3.1.2",
"dompurify": "^3.2.5",
"dompurify": "^3.2.4",
"lodash": "^4.17.21",
"markdown-it": "^14.1.0",
"markdown-it-link-attributes": "^4.0.1",
@@ -78,13 +78,13 @@
"@nextcloud/cypress": "^1.0.0-beta.13",
"@nextcloud/eslint-config": "^8.4.2",
"@nextcloud/stylelint-config": "^3.0.1",
"@nextcloud/webpack-vue-config": "^6.3.0",
"@nextcloud/webpack-vue-config": "^6.2.0",
"@relative-ci/agent": "^4.2.14",
"@vue/test-utils": "^2.4.6",
"@vue/vue2-jest": "^29.2.6",
"cypress": "^13.17.0",
"eslint-plugin-cypress": "^3.6.0",
"eslint-webpack-plugin": "^5.0.1",
"eslint-webpack-plugin": "^4.2.0",
"jest": "^29.7.0",
"jest-serializer-vue": "^3.1.0",
"stylelint-webpack-plugin": "^5.0.1",

View File

@@ -18,7 +18,6 @@
:input-label="t('deck', 'Select a list')"
:options="stacksFromBoard"
:max-height="100"
data-cy="select-stack"
label="title" />
</div>
<template #actions>
@@ -60,15 +59,6 @@ export default {
return !(this.selectedBoard === '' || this.selectedStack === '')
},
},
watch: {
selectedBoard: {
immediate: true,
handler() {
this.selectedStack = ''
this.stacksFromBoard = []
},
},
},
mounted() {
subscribe('deck:card:show-move-dialog', this.openModal)
},

View File

@@ -269,6 +269,8 @@ export default {
this.editTitle = this.board.title
this.editColor = '#' + this.board.color
this.editing = true
this.$nextTick(() => this.$refs.inputField?.focus())
},
async actionClone() {
this.loading = true

View File

@@ -143,7 +143,7 @@ export class BoardApi {
return axios.get(this.url(`/boards/${board.id}/export`))
.then(
(response) => {
const fields = { title: t('deck', 'Card title'), description: t('deck', 'Description'), stackId: t('deck', 'List name'), labels: t('deck', 'Tags'), assignedUsers: t('deck', 'Assigned users'), duedate: t('deck', 'Due date'), createdAt: t('deck', 'Created'), lastModified: t('deck', 'Modified') }
const fields = { title: t('deck', 'Card title'), description: t('deck', 'Description'), stackId: t('deck', 'List name'), labels: t('deck', 'Tags'), duedate: t('deck', 'Due date'), createdAt: t('deck', 'Created'), lastModified: t('deck', 'Modified') }
let row = ''
Object.keys(fields).forEach(field => {
row += '"' + fields[field] + '"' + '\t'
@@ -160,27 +160,16 @@ export class BoardApi {
const date = new Date(Number(card[field]) * 1000)
row += '"' + date.toLocaleDateString() + '"' + '\t'
} else if (field === 'stackId') {
row += '"' + stack.title.replaceAll('"', '""') + '"' + '\t'
row += '"' + stack.title + '"' + '\t'
} else if (field === 'labels') {
row += '"'
card[field].forEach(label => {
row += label.title.replaceAll('"', '""') + ', '
row += label.title + ', '
})
if (card[field].length > 0) {
row = row.slice(0, -1)
}
row += '"' + '\t'
} else if (field === 'assignedUsers') {
row += '"'
card[field].forEach(assignedUsers => {
row += assignedUsers.participant.displayname.replaceAll('"', '""') + ', '
})
if (card[field].length > 0) {
row = row.slice(0, -1)
}
row += '"' + '\t'
} else if (field === 'description' || field === 'title') {
row += '"' + card[field].replaceAll('"', '""') + '"' + '\t'
} else {
row += '"' + card[field] + '"' + '\t'
}

View File

@@ -1 +1 @@
81091
80536

View File

@@ -437,10 +437,10 @@ class BoardServiceTest extends TestCase {
$assignment = new Assignment();
$assignment->setParticipant('admin');
$this->assignedUsersMapper->expects($this->once())
->method('deleteByParticipantOnBoard')
->with('admin', 123)
->method('findByParticipant')
->with('admin')
->willReturn([$assignment]);
$this->assignedUsersMapper->expects($this->never())
$this->assignedUsersMapper->expects($this->once())
->method('delete')
->with($assignment);
$this->aclMapper->expects($this->once())

View File

@@ -258,17 +258,6 @@ class CardServiceTest extends TestCase {
->method('find')
->willReturn($card, $clonedCard);
$this->cardMapper->expects($this->any())
->method('findBoardId')
->willReturn(1234);
$this->labelMapper->expects($this->any())
->method('find')
->willReturn(Label::fromRow([
'id' => 1,
'boardId' => 1234,
]));
// check if users are assigned
$this->assignmentService->expects($this->once())
->method('assignUser')
@@ -444,17 +433,8 @@ class CardServiceTest extends TestCase {
public function testAssignLabel() {
$card = new Card();
$card->setArchived(false);
$card->setId(123);
$label = new Label();
$label->setBoardId(1);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->once())->method('assignLabel');
$this->cardMapper->expects($this->once())
->method('findBoardId')
->willReturn(1);
$this->labelMapper->expects($this->once())
->method('find')
->willReturn($label);
$this->cardService->assignLabel(123, 999);
}
@@ -470,17 +450,8 @@ class CardServiceTest extends TestCase {
public function testRemoveLabel() {
$card = new Card();
$card->setArchived(false);
$card->setId(123);
$label = new Label();
$label->setBoardId(1);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->once())->method('removeLabel');
$this->cardMapper->expects($this->once())
->method('findBoardId')
->willReturn(1);
$this->labelMapper->expects($this->once())
->method('find')
->willReturn($label);
$this->cardService->removeLabel(123, 999);
}