Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
44e2e50469 | ||
|
|
d50b63f1ab | ||
|
|
b7a34ba9f7 | ||
|
|
6dc1823a10 | ||
|
|
d0cfa3a7ba |
70
.github/workflows/phpunit.yml
vendored
70
.github/workflows/phpunit.yml
vendored
@@ -3,9 +3,6 @@ name: PHPUnit
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
env:
|
||||
APP_NAME: deck
|
||||
@@ -213,3 +210,70 @@ jobs:
|
||||
- name: PHPUnit integration
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.integration.xml
|
||||
|
||||
|
||||
oci:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.4']
|
||||
databases: ['oci']
|
||||
server-versions: ['master']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
|
||||
|
||||
services:
|
||||
oracle:
|
||||
image: deepdiver/docker-oracle-xe-11g # "wnameless/oracle-xe-11g-r2"
|
||||
ports:
|
||||
- "1521:1521"
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v2
|
||||
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
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: "shivammathur/setup-php@v2"
|
||||
with:
|
||||
php-version: "${{ matrix.php-versions }}"
|
||||
extensions: mbstring, iconv, fileinfo, intl, oci8
|
||||
tools: phpunit:8.5.2
|
||||
coverage: none
|
||||
|
||||
- name: Set up PHPUnit
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: composer i
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=oci --database-name=XE --database-host=127.0.0.1 --database-port=1521 --database-user=autotest --database-pass=owncloud --admin-user admin --admin-pass admin
|
||||
php -f index.php
|
||||
./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
|
||||
|
||||
45
CHANGELOG.md
45
CHANGELOG.md
@@ -1,45 +1,34 @@
|
||||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## 1.2.0 - 2020-11-16
|
||||
## 1.2.0 - unreleased
|
||||
|
||||
### Added
|
||||
|
||||
* [#2430](https://github.com/nextcloud/deck/pull/2430) Due date notification setting per board
|
||||
* [#2230](https://github.com/nextcloud/deck/pull/2230) Implement scrolling per stack
|
||||
* [#1396](https://github.com/nextcloud/deck/pull/1396) API: Expose canCreateBoards through capabilities
|
||||
* [#2245](https://github.com/nextcloud/deck/pull/2245) API: ETag support for API endpoints
|
||||
* [#2430](https://github.com/nextcloud/deck/pull/2430) Due date notification setting per board @juliushaertl
|
||||
* [#2230](https://github.com/nextcloud/deck/pull/2230) Implement scrolling per stack @juliushaertl
|
||||
* [#1396](https://github.com/nextcloud/deck/pull/1396) API: Expose canCreateBoards through capabilities @juliushaertl
|
||||
* [#2245](https://github.com/nextcloud/deck/pull/2245) API: ETag support for API endpoints @juliushaertl
|
||||
|
||||
### Fixed
|
||||
|
||||
* [#2330](https://github.com/nextcloud/deck/pull/2330) Enhanced undo handling for deletions @jakobroehrl
|
||||
* [#2336](https://github.com/nextcloud/deck/pull/2336) Run unit tests on github actions
|
||||
* [#2358](https://github.com/nextcloud/deck/pull/2358) Properly check if FTSEvent has an argument set
|
||||
* [#2359](https://github.com/nextcloud/deck/pull/2359) Also exclude deleted items from calendar boards
|
||||
* [#2336](https://github.com/nextcloud/deck/pull/2336) Run unit tests on github actions @juliushaertl
|
||||
* [#2358](https://github.com/nextcloud/deck/pull/2358) Properly check if FTSEvent has an argument set @juliushaertl
|
||||
* [#2359](https://github.com/nextcloud/deck/pull/2359) Also exclude deleted items from calendar boards @juliushaertl
|
||||
* [#2361](https://github.com/nextcloud/deck/pull/2361) Comments do not depend on the comments app @jakobroehrl
|
||||
* [#2363](https://github.com/nextcloud/deck/pull/2363) Use uid instead of displayname for sharee results
|
||||
* [#2367](https://github.com/nextcloud/deck/pull/2367) Properly handle multiple shares in a row and refactor sharee loading
|
||||
* [#2363](https://github.com/nextcloud/deck/pull/2363) Use uid instead of displayname for sharee results @juliushaertl
|
||||
* [#2367](https://github.com/nextcloud/deck/pull/2367) Properly handle multiple shares in a row and refactor sharee loading @juliushaertl
|
||||
* [#2404](https://github.com/nextcloud/deck/pull/2404) Update Controls.vue @Flamenco
|
||||
* [#2433](https://github.com/nextcloud/deck/pull/2433) Fix scrollable titles with Dyslexia font
|
||||
* [#2433](https://github.com/nextcloud/deck/pull/2433) Fix scrollable titles with Dyslexia font @juliushaertl
|
||||
* [#2434](https://github.com/nextcloud/deck/pull/2434) Move most destructive actions in drop down menus to the bottom @Nienzu
|
||||
* [#2435](https://github.com/nextcloud/deck/pull/2435) Do not open the dialog automatically upon card creation, only upon click
|
||||
* [#2437](https://github.com/nextcloud/deck/pull/2437) Only remove card padding for editable cards
|
||||
* [#2440](https://github.com/nextcloud/deck/pull/2440) Move navigation toggle handling to @nextcloud/vue native one
|
||||
* [#2435](https://github.com/nextcloud/deck/pull/2435) Do not open the dialog automatically upon card creation, only upon click @juliushaertl
|
||||
* [#2437](https://github.com/nextcloud/deck/pull/2437) Only remove card padding for editable cards @juliushaertl
|
||||
* [#2440](https://github.com/nextcloud/deck/pull/2440) Move navigation toggle handling to @nextcloud/vue native one @juliushaertl
|
||||
* [#2463](https://github.com/nextcloud/deck/pull/2463) Changed triple dots to ellipsis @rakekniven
|
||||
* [#2500](https://github.com/nextcloud/deck/pull/2500) Move details and description to dedicated component
|
||||
* [#2517](https://github.com/nextcloud/deck/pull/2517) Filter out duplicate cards in overview
|
||||
* [#2502](https://github.com/nextcloud/deck/pull/2502) Assignment code refactoring
|
||||
* [#2519](https://github.com/nextcloud/deck/pull/2519) Fix invisibility bug on modal component @wrox
|
||||
* [#2520](https://github.com/nextcloud/deck/pull/2520) Add placeholder for the description input
|
||||
* [#2521](https://github.com/nextcloud/deck/pull/2521) Add migration step to make table layout consistent
|
||||
* [#2524](https://github.com/nextcloud/deck/pull/2524) Only try to extract first part of the explode result
|
||||
* [#2531](https://github.com/nextcloud/deck/pull/2531) Add proper type to boolean parameter
|
||||
* [#2532](https://github.com/nextcloud/deck/pull/2532) Fix handling of notifications if a board does no longer exist
|
||||
* [#2536](https://github.com/nextcloud/deck/pull/2536) Only set flex layout on the active tab
|
||||
* [#2538](https://github.com/nextcloud/deck/pull/2538) Do not reset filter when staying on the same board
|
||||
* [#2539](https://github.com/nextcloud/deck/pull/2539) Apply proper checks for menu items
|
||||
* [#2540](https://github.com/nextcloud/deck/pull/2540) Only build one main bundle
|
||||
* [#2562](https://github.com/nextcloud/deck/pull/2562) Only try to extract first part of the explode result (Part 2)
|
||||
* [#2500](https://github.com/nextcloud/deck/pull/2500) Move details and description to dedicated component @juliushaertl
|
||||
* [#2517](https://github.com/nextcloud/deck/pull/2517) Filter out duplicate cards in overview @juliushaertl
|
||||
* [#2502](https://github.com/nextcloud/deck/pull/2502) Assignment code refactoring @juliushaertl
|
||||
|
||||
|
||||
## 1.1.0 - 2020-10-03
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
- 🚀 Get your project organized
|
||||
|
||||
</description>
|
||||
<version>1.2.0</version>
|
||||
<version>1.2.0-beta1</version>
|
||||
<licence>agpl</licence>
|
||||
<author>Julius Härtl</author>
|
||||
<namespace>Deck</namespace>
|
||||
@@ -36,6 +36,7 @@
|
||||
<database min-version="9.4">pgsql</database>
|
||||
<database>sqlite</database>
|
||||
<database min-version="5.5">mysql</database>
|
||||
<database>oci</database>
|
||||
<nextcloud min-version="18" max-version="21" />
|
||||
</dependencies>
|
||||
<background-jobs>
|
||||
|
||||
@@ -31,7 +31,7 @@ OC.L10N.register(
|
||||
"{user} has renamed the card {before} to {card}" : "{user} hat die Karte {before} in {card} umbenannt",
|
||||
"You have added a description to card {card} in list {stack} on board {board}" : "Du hast der Karte {card} in der Liste {stack} auf dem Board {board} eine Beschreibung hinzugefügt",
|
||||
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} hat der Karte {card} in der Liste {stack} auf dem Board {board} eine Beschreibung hinzugefügt",
|
||||
"You have updated the description of card {card} in list {stack} on board {board}" : "Du hast die Beschreibung der Karte {card} in der Liste {stack} auf dem Board {board} aktualisiert",
|
||||
"You have updated the description of card {card} in list {stack} on board {board}" : "Du hast die Beschreibung der Karte {card} in der Liste {stack} auf dem Board {board} aktualisiert",
|
||||
"{user} has updated the description of the card {card} in list {stack} on board {board}" : "{user} hat die Beschreibung der Karte {card} in der Liste {stack} auf dem Board {board} aktualisiert",
|
||||
"You have archived card {card} in list {stack} on board {board}" : "Du hast die Karte {card} in der Liste {stack} auf dem Board {board} archiviert",
|
||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} archiviert",
|
||||
@@ -202,7 +202,6 @@ OC.L10N.register(
|
||||
"Edit description" : "Beschreibung bearbeiten",
|
||||
"View description" : "Beschreibung anzeigen",
|
||||
"Add Attachment" : "Anhang anhängen",
|
||||
"Write a description …" : "Beschreibung schreiben …",
|
||||
"Choose attachment" : "Anhang auswählen",
|
||||
"(group)" : "(Gruppe)",
|
||||
"(circle)" : "(Kreis)",
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
"{user} has renamed the card {before} to {card}" : "{user} hat die Karte {before} in {card} umbenannt",
|
||||
"You have added a description to card {card} in list {stack} on board {board}" : "Du hast der Karte {card} in der Liste {stack} auf dem Board {board} eine Beschreibung hinzugefügt",
|
||||
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} hat der Karte {card} in der Liste {stack} auf dem Board {board} eine Beschreibung hinzugefügt",
|
||||
"You have updated the description of card {card} in list {stack} on board {board}" : "Du hast die Beschreibung der Karte {card} in der Liste {stack} auf dem Board {board} aktualisiert",
|
||||
"You have updated the description of card {card} in list {stack} on board {board}" : "Du hast die Beschreibung der Karte {card} in der Liste {stack} auf dem Board {board} aktualisiert",
|
||||
"{user} has updated the description of the card {card} in list {stack} on board {board}" : "{user} hat die Beschreibung der Karte {card} in der Liste {stack} auf dem Board {board} aktualisiert",
|
||||
"You have archived card {card} in list {stack} on board {board}" : "Du hast die Karte {card} in der Liste {stack} auf dem Board {board} archiviert",
|
||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} archiviert",
|
||||
@@ -200,7 +200,6 @@
|
||||
"Edit description" : "Beschreibung bearbeiten",
|
||||
"View description" : "Beschreibung anzeigen",
|
||||
"Add Attachment" : "Anhang anhängen",
|
||||
"Write a description …" : "Beschreibung schreiben …",
|
||||
"Choose attachment" : "Anhang auswählen",
|
||||
"(group)" : "(Gruppe)",
|
||||
"(circle)" : "(Kreis)",
|
||||
|
||||
@@ -26,7 +26,7 @@ OC.L10N.register(
|
||||
"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",
|
||||
"{user} has deleted card {card} in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} gelöscht",
|
||||
"{user} has deleted card {card} in list {stack} on board {board}" : " {user} hat die Karte {card} in der Liste {stack} auf dem Board {board} gelöscht",
|
||||
"You have renamed the card {before} to {card}" : "Sie haben die Karte {before} in {card} umbenannt",
|
||||
"{user} has renamed the card {before} to {card}" : "{user} hat die Karte {before} in {card} umbenannt",
|
||||
"You have added a description to card {card} in list {stack} on board {board}" : "Sie haben der Karte {card} in der Liste {stack} auf dem Board {board} eine Beschreibung hinzugefügt",
|
||||
@@ -99,7 +99,7 @@ OC.L10N.register(
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Keine Datei hochgeladen oder die Dateigröße überschreitet %s",
|
||||
"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 sind.\n\n\n- 📥 Fügen Sie Ihre Aufgaben zu den Karten hinzu und ordnen Sie diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Zuweisen von Schlagworten für noch bessere Organisation\n- 👥 Teilen Sie mit Ihrem Team, Ihren Freunden oder Ihrer Familie\n- 📎 Fügen Sie Dateien hinzu und verwende diese in Ihren Markdown-Beschreibungen\n- 💬 Diskutieren Sie mit Ihrem Team mit Kommentaren\n- ⚡ Behalten Sie Überblick über Änderungen mit dem Aktivitäten-Stream\n- 🚀 Organisieren Sie Ihr Projekt",
|
||||
"Card details" : "Karten-Details",
|
||||
"Card details" : "Kartendetails",
|
||||
"Add board" : "Board hinzufügen",
|
||||
"Select the board to link to a project" : "Wählen Sie ein Board aus, um dieses mit einem Projekt zu verknüpfen",
|
||||
"Search by board title" : "Nach einem Board suchen",
|
||||
@@ -202,7 +202,6 @@ OC.L10N.register(
|
||||
"Edit description" : "Beschreibung bearbeiten",
|
||||
"View description" : "Beschreibung anzeigen",
|
||||
"Add Attachment" : "Anhang anhängen",
|
||||
"Write a description …" : "Beschreibung schreiben …",
|
||||
"Choose attachment" : "Anhang auswählen",
|
||||
"(group)" : "(Gruppe)",
|
||||
"(circle)" : "(Kreis)",
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"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",
|
||||
"{user} has deleted card {card} in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} gelöscht",
|
||||
"{user} has deleted card {card} in list {stack} on board {board}" : " {user} hat die Karte {card} in der Liste {stack} auf dem Board {board} gelöscht",
|
||||
"You have renamed the card {before} to {card}" : "Sie haben die Karte {before} in {card} umbenannt",
|
||||
"{user} has renamed the card {before} to {card}" : "{user} hat die Karte {before} in {card} umbenannt",
|
||||
"You have added a description to card {card} in list {stack} on board {board}" : "Sie haben der Karte {card} in der Liste {stack} auf dem Board {board} eine Beschreibung hinzugefügt",
|
||||
@@ -97,7 +97,7 @@
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Keine Datei hochgeladen oder die Dateigröße überschreitet %s",
|
||||
"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 sind.\n\n\n- 📥 Fügen Sie Ihre Aufgaben zu den Karten hinzu und ordnen Sie diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Zuweisen von Schlagworten für noch bessere Organisation\n- 👥 Teilen Sie mit Ihrem Team, Ihren Freunden oder Ihrer Familie\n- 📎 Fügen Sie Dateien hinzu und verwende diese in Ihren Markdown-Beschreibungen\n- 💬 Diskutieren Sie mit Ihrem Team mit Kommentaren\n- ⚡ Behalten Sie Überblick über Änderungen mit dem Aktivitäten-Stream\n- 🚀 Organisieren Sie Ihr Projekt",
|
||||
"Card details" : "Karten-Details",
|
||||
"Card details" : "Kartendetails",
|
||||
"Add board" : "Board hinzufügen",
|
||||
"Select the board to link to a project" : "Wählen Sie ein Board aus, um dieses mit einem Projekt zu verknüpfen",
|
||||
"Search by board title" : "Nach einem Board suchen",
|
||||
@@ -200,7 +200,6 @@
|
||||
"Edit description" : "Beschreibung bearbeiten",
|
||||
"View description" : "Beschreibung anzeigen",
|
||||
"Add Attachment" : "Anhang anhängen",
|
||||
"Write a description …" : "Beschreibung schreiben …",
|
||||
"Choose attachment" : "Anhang auswählen",
|
||||
"(group)" : "(Gruppe)",
|
||||
"(circle)" : "(Kreis)",
|
||||
|
||||
12
l10n/es.js
12
l10n/es.js
@@ -225,19 +225,7 @@ OC.L10N.register(
|
||||
"Board name" : "Nombre del tablero",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"Edit board" : "Editar tablero",
|
||||
"Clone board" : "Clonar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Turn on due date reminders" : "Activar recordatorios de la fecha de vencimiento",
|
||||
"Turn off due date reminders" : "Desactivar recordatorios de la fecha de vencimiento",
|
||||
"Due date reminders" : "Recordatorios de la fecha de vencimiento",
|
||||
"All cards" : "Todas las tarjetas",
|
||||
"Assigned cards" : "Tarjetas asignadas",
|
||||
"No notifications" : "No hay notificaciones",
|
||||
"Delete board" : "Eliminar tablero",
|
||||
"Board {0} deleted" : "Tablero {0} eliminado",
|
||||
"Only assigned cards" : "Sólo las tarjetas asignadas",
|
||||
"No reminder" : "No hay recordatorio",
|
||||
"An error occurred" : "Ocurrió un error",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "¿Estas seguro de que quieres eliminar el tablero {title}? Esto eliminará todos los datos del tablero.",
|
||||
"Delete the board?" : "¿Borrar el tablero?",
|
||||
|
||||
12
l10n/es.json
12
l10n/es.json
@@ -223,19 +223,7 @@
|
||||
"Board name" : "Nombre del tablero",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"Edit board" : "Editar tablero",
|
||||
"Clone board" : "Clonar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Turn on due date reminders" : "Activar recordatorios de la fecha de vencimiento",
|
||||
"Turn off due date reminders" : "Desactivar recordatorios de la fecha de vencimiento",
|
||||
"Due date reminders" : "Recordatorios de la fecha de vencimiento",
|
||||
"All cards" : "Todas las tarjetas",
|
||||
"Assigned cards" : "Tarjetas asignadas",
|
||||
"No notifications" : "No hay notificaciones",
|
||||
"Delete board" : "Eliminar tablero",
|
||||
"Board {0} deleted" : "Tablero {0} eliminado",
|
||||
"Only assigned cards" : "Sólo las tarjetas asignadas",
|
||||
"No reminder" : "No hay recordatorio",
|
||||
"An error occurred" : "Ocurrió un error",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "¿Estas seguro de que quieres eliminar el tablero {title}? Esto eliminará todos los datos del tablero.",
|
||||
"Delete the board?" : "¿Borrar el tablero?",
|
||||
|
||||
@@ -146,8 +146,6 @@ OC.L10N.register(
|
||||
"Undo" : "Desegin",
|
||||
"Deleted cards" : "Ezabatutako txartelak",
|
||||
"Share board with a user, group or circle …" : "Partekatu mahaia erabiltzaile, talde edo zirkulu batekin...",
|
||||
"Searching for users, groups and circles …" : "Erabiltzaileak, taldeak, zirkuluak... bilatzen",
|
||||
"No participants found" : "Ez da parte-hartzailerik aurkitu",
|
||||
"Board owner" : "Mahaiaren jabea",
|
||||
"(Group)" : "(Taldea)",
|
||||
"(Circle)" : "(Zirkulua)",
|
||||
@@ -155,7 +153,6 @@ OC.L10N.register(
|
||||
"Can share" : "Partekatu dezake",
|
||||
"Can manage" : "Kudeatu dezake",
|
||||
"Delete" : "Ezabatu",
|
||||
"Failed to create share with {displayName}" : "Ezin izan da {displayName}-(r)ekin partekatzea sortu",
|
||||
"Add a new list" : "Gehitu zerrenda berria",
|
||||
"Archive all cards" : "Artxibatu txartel guztiak",
|
||||
"Delete list" : "Zerrenda ezabatu",
|
||||
@@ -220,7 +217,6 @@ OC.L10N.register(
|
||||
"Board details" : "Mahaiaren xehetasunak",
|
||||
"Edit board" : "Editatu mahaia",
|
||||
"Board {0} deleted" : "{0} mahaia ezabatu da",
|
||||
"No reminder" : "Abisurik ez",
|
||||
"An error occurred" : "Errore bat gertatu da",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Ziur zaude «{title}» mahaia ezabatu nahi duzula? Honek mahai honen datu guztiak ezabatuko ditu.",
|
||||
"Delete the board?" : "Mahaia ezabatu?",
|
||||
|
||||
@@ -144,8 +144,6 @@
|
||||
"Undo" : "Desegin",
|
||||
"Deleted cards" : "Ezabatutako txartelak",
|
||||
"Share board with a user, group or circle …" : "Partekatu mahaia erabiltzaile, talde edo zirkulu batekin...",
|
||||
"Searching for users, groups and circles …" : "Erabiltzaileak, taldeak, zirkuluak... bilatzen",
|
||||
"No participants found" : "Ez da parte-hartzailerik aurkitu",
|
||||
"Board owner" : "Mahaiaren jabea",
|
||||
"(Group)" : "(Taldea)",
|
||||
"(Circle)" : "(Zirkulua)",
|
||||
@@ -153,7 +151,6 @@
|
||||
"Can share" : "Partekatu dezake",
|
||||
"Can manage" : "Kudeatu dezake",
|
||||
"Delete" : "Ezabatu",
|
||||
"Failed to create share with {displayName}" : "Ezin izan da {displayName}-(r)ekin partekatzea sortu",
|
||||
"Add a new list" : "Gehitu zerrenda berria",
|
||||
"Archive all cards" : "Artxibatu txartel guztiak",
|
||||
"Delete list" : "Zerrenda ezabatu",
|
||||
@@ -218,7 +215,6 @@
|
||||
"Board details" : "Mahaiaren xehetasunak",
|
||||
"Edit board" : "Editatu mahaia",
|
||||
"Board {0} deleted" : "{0} mahaia ezabatu da",
|
||||
"No reminder" : "Abisurik ez",
|
||||
"An error occurred" : "Errore bat gertatu da",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Ziur zaude «{title}» mahaia ezabatu nahi duzula? Honek mahai honen datu guztiak ezabatuko ditu.",
|
||||
"Delete the board?" : "Mahaia ezabatu?",
|
||||
|
||||
32
l10n/fi.js
32
l10n/fi.js
@@ -17,20 +17,8 @@ OC.L10N.register(
|
||||
"{user} has archived the board {before}" : "{user} arkistoi taulun {before}",
|
||||
"You have unarchived the board {board}" : "Palautit taulun {board} arkistosta ",
|
||||
"{user} has unarchived the board {before}" : "{user} palautti taulun {before} arkistosta",
|
||||
"You have created a new list {stack} on board {board}" : "Olet lisännyt listan {stack} taululle {board}",
|
||||
"{user} has created a new list {stack} on board {board}" : "{user} on lisännyt uuden listan {stack} taululle {board}",
|
||||
"You have renamed list {before} to {stack} on board {board}" : "Muutit listan {before} nimeksi {stack} taululla {board}",
|
||||
"{user} has renamed list {before} to {stack} on board {board}" : "{user} muutti listan {before} nimeksi {stack} taululla {board}",
|
||||
"You have deleted list {stack} on board {board}" : "Olet poistanut listan {stack} taululta {board}",
|
||||
"{user} has deleted list {stack} on board {board}" : "{user} on poistanut listan {stack} taululta {board}",
|
||||
"You have created card {card} in list {stack} on board {board}" : "Olet lisännyt kortin {card} listaan {stack} taululla {board}",
|
||||
"{user} has created card {card} in list {stack} on board {board}" : "{user} on lisännyt kortin {card} listaan {stack} taululla {board}",
|
||||
"You have deleted card {card} in list {stack} on board {board}" : "Olet poistanut kortin {card} listasta {stack} taululla {board}",
|
||||
"{user} has deleted card {card} in list {stack} on board {board}" : "{user} on poistanut kortin {card} listasta {stack} taululla {board}",
|
||||
"You have renamed the card {before} to {card}" : "Muutit kortin {before} uudeksi nimeksi {card}",
|
||||
"{user} has renamed the card {before} to {card}" : "{user} muutti kortin {before} uudeksi nimeksi {card}",
|
||||
"You have added a description to card {card} in list {stack} on board {board}" : "Olet lisännyt kuvauksen kortille {card} listalla {stack} taululla {board}",
|
||||
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} on lisännyt kuvauksen kortille {card} listalla {stack} taululla {board}",
|
||||
"You have removed the due date of card {card}" : "Poistit eräpäivän kortilta {card}",
|
||||
"{user} has removed the due date of card {card}" : "{user} poisti eräpäivän kortilta {card}",
|
||||
"You have set the due date of card {card} to {after}" : "Asetit kortille {card} eräpäivän {after}",
|
||||
@@ -55,10 +43,8 @@ OC.L10N.register(
|
||||
"Deck" : "Pakka",
|
||||
"Changes in the <strong>Deck app</strong>" : "Muutokset <strong>Pakka-sovelluksessa</strong>",
|
||||
"A <strong>comment</strong> was created on a card" : "<strong>Kommentti</strong> luotiin kortille",
|
||||
"Upcoming cards" : "Tulevat kortit",
|
||||
"Personal" : "Henkilökohtainen",
|
||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kortti \"%s\" taululla \"%s\" on asetettu sinulle käyttäjän %s toimesta.",
|
||||
"{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} on asettanut kortin \"%s\" taululla \"%s\" sinulle.",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Kortin \"%s\" on \"%s\" eräpäivä on tullut vastaan.",
|
||||
"%s has mentioned you in a comment on \"%s\"." : "%s mainitsi sinut kommentissa kortilla \"%s\".",
|
||||
"{user} has mentioned you in a comment on \"%s\"." : "{user} mainitsi sinut kommentissa kortilla \"%s\".",
|
||||
@@ -119,18 +105,14 @@ OC.L10N.register(
|
||||
"Toggle compact mode" : "Käytä kompaktia tilaa",
|
||||
"Details" : "Tiedot",
|
||||
"Loading board" : "Ladataan taulua",
|
||||
"No lists available" : "Ei listoja saatavilla",
|
||||
"Create a new list to add cards to this board" : "Lisää uusi lista lisätäksesi kortteja tälle taululle",
|
||||
"Board not found" : "Taulua ei löydy",
|
||||
"Sharing" : "Jakaminen",
|
||||
"Tags" : "Tunnisteet",
|
||||
"Deleted items" : "Poistetut tietueet",
|
||||
"Timeline" : "Aikajana",
|
||||
"Deleted lists" : "Poistetut listat",
|
||||
"Undo" : "Kumoa",
|
||||
"Deleted cards" : "Poistetut kortit",
|
||||
"Share board with a user, group or circle …" : "Jaa taulu käyttäjän, ryhmän tai piirin ... kanssa",
|
||||
"No participants found" : "Ei osallistujia löydetty",
|
||||
"Board owner" : "Taulun omistaja",
|
||||
"(Group)" : "(Ryhmä)",
|
||||
"(Circle)" : "(Piiri)",
|
||||
@@ -138,14 +120,11 @@ OC.L10N.register(
|
||||
"Can share" : "Voi jakaa",
|
||||
"Can manage" : "Voi hallita",
|
||||
"Delete" : "Poista",
|
||||
"Add a new list" : "Lisää uusi lista",
|
||||
"Archive all cards" : "Arkistoi kaikki kortit",
|
||||
"Delete list" : "Poista lista",
|
||||
"Add card" : "Lisää kortti",
|
||||
"Archive all cards in this list" : "Arkistoi kaikki kortit tässä listassa",
|
||||
"Add a new card" : "Lisää uusi kortti",
|
||||
"Card name" : "Kortin nimi",
|
||||
"List deleted" : "Lista poistettu",
|
||||
"Edit" : "Muokkaa",
|
||||
"Add a new tag" : "Lisää uusi tunniste",
|
||||
"title and color value must be provided" : "tunnisteella on oltava nimi ja väri",
|
||||
@@ -182,30 +161,19 @@ OC.L10N.register(
|
||||
"Unarchive card" : "Poista kortti arkistosta",
|
||||
"Archive card" : "Arkistoi kortti",
|
||||
"Delete card" : "Poista kortti",
|
||||
"Move card to another board" : "Siirrä kortti toiselle taululle",
|
||||
"Select a list" : "Valitse lista ",
|
||||
"Card deleted" : "Kortti poistettu",
|
||||
"seconds ago" : "sekuntia sitten",
|
||||
"All boards" : "Kaikki taulut",
|
||||
"Archived boards" : "Arkistoidut taulut",
|
||||
"Shared with you" : "Jaettu kanssasi",
|
||||
"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." : "Pakan käytön rajoittaminen estää merkittyjen ryhmien jäseniä luomasta omia taulujaan, mutta käyttäjät pystyvät silti käyttämään heidän kanssaan jaettuja tauluja.",
|
||||
"Board name" : "Taulun nimi",
|
||||
"Board details" : "Taulun tiedot",
|
||||
"Edit board" : "Muokkaa taulua",
|
||||
"Clone board" : "Monista taulu",
|
||||
"All cards" : "Kaikki kortit",
|
||||
"No notifications" : "Ei ilmoituksia",
|
||||
"Delete board" : "Poista taulu",
|
||||
"Board {0} deleted" : "Taulu {0} poistettu",
|
||||
"No reminder" : "Ei muistutusta",
|
||||
"An error occurred" : "Tapahtui virhe",
|
||||
"Delete the board?" : "Poistetaanko tämä taulu?",
|
||||
"Today" : "Tänään",
|
||||
"Tomorrow" : "Huomenna",
|
||||
"This week" : "Tällä viikolla",
|
||||
"No upcoming cards" : "Ei tulevia kortteja",
|
||||
"upcoming cards" : "tulevat kortit",
|
||||
"Link to a board" : "Linkki taululle",
|
||||
"Link to a card" : "Linkitä korttiin",
|
||||
"Something went wrong" : "Jokin meni vikaan",
|
||||
|
||||
32
l10n/fi.json
32
l10n/fi.json
@@ -15,20 +15,8 @@
|
||||
"{user} has archived the board {before}" : "{user} arkistoi taulun {before}",
|
||||
"You have unarchived the board {board}" : "Palautit taulun {board} arkistosta ",
|
||||
"{user} has unarchived the board {before}" : "{user} palautti taulun {before} arkistosta",
|
||||
"You have created a new list {stack} on board {board}" : "Olet lisännyt listan {stack} taululle {board}",
|
||||
"{user} has created a new list {stack} on board {board}" : "{user} on lisännyt uuden listan {stack} taululle {board}",
|
||||
"You have renamed list {before} to {stack} on board {board}" : "Muutit listan {before} nimeksi {stack} taululla {board}",
|
||||
"{user} has renamed list {before} to {stack} on board {board}" : "{user} muutti listan {before} nimeksi {stack} taululla {board}",
|
||||
"You have deleted list {stack} on board {board}" : "Olet poistanut listan {stack} taululta {board}",
|
||||
"{user} has deleted list {stack} on board {board}" : "{user} on poistanut listan {stack} taululta {board}",
|
||||
"You have created card {card} in list {stack} on board {board}" : "Olet lisännyt kortin {card} listaan {stack} taululla {board}",
|
||||
"{user} has created card {card} in list {stack} on board {board}" : "{user} on lisännyt kortin {card} listaan {stack} taululla {board}",
|
||||
"You have deleted card {card} in list {stack} on board {board}" : "Olet poistanut kortin {card} listasta {stack} taululla {board}",
|
||||
"{user} has deleted card {card} in list {stack} on board {board}" : "{user} on poistanut kortin {card} listasta {stack} taululla {board}",
|
||||
"You have renamed the card {before} to {card}" : "Muutit kortin {before} uudeksi nimeksi {card}",
|
||||
"{user} has renamed the card {before} to {card}" : "{user} muutti kortin {before} uudeksi nimeksi {card}",
|
||||
"You have added a description to card {card} in list {stack} on board {board}" : "Olet lisännyt kuvauksen kortille {card} listalla {stack} taululla {board}",
|
||||
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} on lisännyt kuvauksen kortille {card} listalla {stack} taululla {board}",
|
||||
"You have removed the due date of card {card}" : "Poistit eräpäivän kortilta {card}",
|
||||
"{user} has removed the due date of card {card}" : "{user} poisti eräpäivän kortilta {card}",
|
||||
"You have set the due date of card {card} to {after}" : "Asetit kortille {card} eräpäivän {after}",
|
||||
@@ -53,10 +41,8 @@
|
||||
"Deck" : "Pakka",
|
||||
"Changes in the <strong>Deck app</strong>" : "Muutokset <strong>Pakka-sovelluksessa</strong>",
|
||||
"A <strong>comment</strong> was created on a card" : "<strong>Kommentti</strong> luotiin kortille",
|
||||
"Upcoming cards" : "Tulevat kortit",
|
||||
"Personal" : "Henkilökohtainen",
|
||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kortti \"%s\" taululla \"%s\" on asetettu sinulle käyttäjän %s toimesta.",
|
||||
"{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} on asettanut kortin \"%s\" taululla \"%s\" sinulle.",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Kortin \"%s\" on \"%s\" eräpäivä on tullut vastaan.",
|
||||
"%s has mentioned you in a comment on \"%s\"." : "%s mainitsi sinut kommentissa kortilla \"%s\".",
|
||||
"{user} has mentioned you in a comment on \"%s\"." : "{user} mainitsi sinut kommentissa kortilla \"%s\".",
|
||||
@@ -117,18 +103,14 @@
|
||||
"Toggle compact mode" : "Käytä kompaktia tilaa",
|
||||
"Details" : "Tiedot",
|
||||
"Loading board" : "Ladataan taulua",
|
||||
"No lists available" : "Ei listoja saatavilla",
|
||||
"Create a new list to add cards to this board" : "Lisää uusi lista lisätäksesi kortteja tälle taululle",
|
||||
"Board not found" : "Taulua ei löydy",
|
||||
"Sharing" : "Jakaminen",
|
||||
"Tags" : "Tunnisteet",
|
||||
"Deleted items" : "Poistetut tietueet",
|
||||
"Timeline" : "Aikajana",
|
||||
"Deleted lists" : "Poistetut listat",
|
||||
"Undo" : "Kumoa",
|
||||
"Deleted cards" : "Poistetut kortit",
|
||||
"Share board with a user, group or circle …" : "Jaa taulu käyttäjän, ryhmän tai piirin ... kanssa",
|
||||
"No participants found" : "Ei osallistujia löydetty",
|
||||
"Board owner" : "Taulun omistaja",
|
||||
"(Group)" : "(Ryhmä)",
|
||||
"(Circle)" : "(Piiri)",
|
||||
@@ -136,14 +118,11 @@
|
||||
"Can share" : "Voi jakaa",
|
||||
"Can manage" : "Voi hallita",
|
||||
"Delete" : "Poista",
|
||||
"Add a new list" : "Lisää uusi lista",
|
||||
"Archive all cards" : "Arkistoi kaikki kortit",
|
||||
"Delete list" : "Poista lista",
|
||||
"Add card" : "Lisää kortti",
|
||||
"Archive all cards in this list" : "Arkistoi kaikki kortit tässä listassa",
|
||||
"Add a new card" : "Lisää uusi kortti",
|
||||
"Card name" : "Kortin nimi",
|
||||
"List deleted" : "Lista poistettu",
|
||||
"Edit" : "Muokkaa",
|
||||
"Add a new tag" : "Lisää uusi tunniste",
|
||||
"title and color value must be provided" : "tunnisteella on oltava nimi ja väri",
|
||||
@@ -180,30 +159,19 @@
|
||||
"Unarchive card" : "Poista kortti arkistosta",
|
||||
"Archive card" : "Arkistoi kortti",
|
||||
"Delete card" : "Poista kortti",
|
||||
"Move card to another board" : "Siirrä kortti toiselle taululle",
|
||||
"Select a list" : "Valitse lista ",
|
||||
"Card deleted" : "Kortti poistettu",
|
||||
"seconds ago" : "sekuntia sitten",
|
||||
"All boards" : "Kaikki taulut",
|
||||
"Archived boards" : "Arkistoidut taulut",
|
||||
"Shared with you" : "Jaettu kanssasi",
|
||||
"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." : "Pakan käytön rajoittaminen estää merkittyjen ryhmien jäseniä luomasta omia taulujaan, mutta käyttäjät pystyvät silti käyttämään heidän kanssaan jaettuja tauluja.",
|
||||
"Board name" : "Taulun nimi",
|
||||
"Board details" : "Taulun tiedot",
|
||||
"Edit board" : "Muokkaa taulua",
|
||||
"Clone board" : "Monista taulu",
|
||||
"All cards" : "Kaikki kortit",
|
||||
"No notifications" : "Ei ilmoituksia",
|
||||
"Delete board" : "Poista taulu",
|
||||
"Board {0} deleted" : "Taulu {0} poistettu",
|
||||
"No reminder" : "Ei muistutusta",
|
||||
"An error occurred" : "Tapahtui virhe",
|
||||
"Delete the board?" : "Poistetaanko tämä taulu?",
|
||||
"Today" : "Tänään",
|
||||
"Tomorrow" : "Huomenna",
|
||||
"This week" : "Tällä viikolla",
|
||||
"No upcoming cards" : "Ei tulevia kortteja",
|
||||
"upcoming cards" : "tulevat kortit",
|
||||
"Link to a board" : "Linkki taululle",
|
||||
"Link to a card" : "Linkitä korttiin",
|
||||
"Something went wrong" : "Jokin meni vikaan",
|
||||
|
||||
@@ -202,7 +202,6 @@ OC.L10N.register(
|
||||
"Edit description" : "Modifier la description",
|
||||
"View description" : "Afficher la description",
|
||||
"Add Attachment" : "Ajouter une pièce jointe",
|
||||
"Write a description …" : "Écrire une description ...",
|
||||
"Choose attachment" : "Choisir une pièce jointe",
|
||||
"(group)" : "(groupe)",
|
||||
"(circle)" : "(cercle)",
|
||||
@@ -227,17 +226,11 @@ OC.L10N.register(
|
||||
"Board details" : "Détails du tableau",
|
||||
"Edit board" : "Modifier le tableau",
|
||||
"Clone board" : "Dupliquer le tableau",
|
||||
"Unarchive board" : "Désarchiver le tableau",
|
||||
"Archive board" : "Archiver le tableau",
|
||||
"Turn on due date reminders" : "Activer les rappels",
|
||||
"Turn off due date reminders" : "Désactiver les rappels",
|
||||
"Due date reminders" : "Rappels",
|
||||
"All cards" : "Toutes les cartes",
|
||||
"Assigned cards" : "Cartes assignées",
|
||||
"No notifications" : "Aucune notification",
|
||||
"Delete board" : "Supprimer le tableau",
|
||||
"Board {0} deleted" : "Tableau {0} supprimé",
|
||||
"Only assigned cards" : "Uniquement les cartes assignées",
|
||||
"No reminder" : "Aucun rappel",
|
||||
"An error occurred" : "Une erreur est survenue",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Êtes-vous certain de vouloir supprimer le tableau {title} ? Cela supprimera l'ensemble des données de ce tableau.",
|
||||
|
||||
@@ -200,7 +200,6 @@
|
||||
"Edit description" : "Modifier la description",
|
||||
"View description" : "Afficher la description",
|
||||
"Add Attachment" : "Ajouter une pièce jointe",
|
||||
"Write a description …" : "Écrire une description ...",
|
||||
"Choose attachment" : "Choisir une pièce jointe",
|
||||
"(group)" : "(groupe)",
|
||||
"(circle)" : "(cercle)",
|
||||
@@ -225,17 +224,11 @@
|
||||
"Board details" : "Détails du tableau",
|
||||
"Edit board" : "Modifier le tableau",
|
||||
"Clone board" : "Dupliquer le tableau",
|
||||
"Unarchive board" : "Désarchiver le tableau",
|
||||
"Archive board" : "Archiver le tableau",
|
||||
"Turn on due date reminders" : "Activer les rappels",
|
||||
"Turn off due date reminders" : "Désactiver les rappels",
|
||||
"Due date reminders" : "Rappels",
|
||||
"All cards" : "Toutes les cartes",
|
||||
"Assigned cards" : "Cartes assignées",
|
||||
"No notifications" : "Aucune notification",
|
||||
"Delete board" : "Supprimer le tableau",
|
||||
"Board {0} deleted" : "Tableau {0} supprimé",
|
||||
"Only assigned cards" : "Uniquement les cartes assignées",
|
||||
"No reminder" : "Aucun rappel",
|
||||
"An error occurred" : "Une erreur est survenue",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Êtes-vous certain de vouloir supprimer le tableau {title} ? Cela supprimera l'ensemble des données de ce tableau.",
|
||||
|
||||
13
l10n/gl.js
13
l10n/gl.js
@@ -202,7 +202,6 @@ OC.L10N.register(
|
||||
"Edit description" : "Editar a descrición",
|
||||
"View description" : "Ver a descrición",
|
||||
"Add Attachment" : "Engadir o anexo",
|
||||
"Write a description …" : "Escriba unha descrición…",
|
||||
"Choose attachment" : "Escoller o anexo",
|
||||
"(group)" : "(grupo)",
|
||||
"(circle)" : "(círculo)",
|
||||
@@ -226,19 +225,7 @@ OC.L10N.register(
|
||||
"Board name" : "Nome do taboleiro",
|
||||
"Board details" : "Detalles do taboleiro",
|
||||
"Edit board" : "Editar taboleiro",
|
||||
"Clone board" : "Clonar taboleiro",
|
||||
"Unarchive board" : "Desarquivar taboleiro",
|
||||
"Archive board" : "Arquivar taboleiro",
|
||||
"Turn on due date reminders" : "Activar os lembretes de data de caducidade",
|
||||
"Turn off due date reminders" : "Desctivar os lembretes de data de caducidade",
|
||||
"Due date reminders" : "Lembretes de data de caducidade",
|
||||
"All cards" : "Todas as tarxeta",
|
||||
"Assigned cards" : "Tarxetas asignadas",
|
||||
"No notifications" : "Non hai notificacións",
|
||||
"Delete board" : "Eliminar taboleiro",
|
||||
"Board {0} deleted" : "Eliminouse o taboleiro {0}",
|
||||
"Only assigned cards" : "Só as tarxetas asignadas",
|
||||
"No reminder" : "Non hai lembretes",
|
||||
"An error occurred" : "Produciuse un erro",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Confirma que quere eliminar o taboleiro {title}? Isto eliminará todos os datos deste taboleiro.",
|
||||
"Delete the board?" : "Eliminar o taboleiro?",
|
||||
|
||||
13
l10n/gl.json
13
l10n/gl.json
@@ -200,7 +200,6 @@
|
||||
"Edit description" : "Editar a descrición",
|
||||
"View description" : "Ver a descrición",
|
||||
"Add Attachment" : "Engadir o anexo",
|
||||
"Write a description …" : "Escriba unha descrición…",
|
||||
"Choose attachment" : "Escoller o anexo",
|
||||
"(group)" : "(grupo)",
|
||||
"(circle)" : "(círculo)",
|
||||
@@ -224,19 +223,7 @@
|
||||
"Board name" : "Nome do taboleiro",
|
||||
"Board details" : "Detalles do taboleiro",
|
||||
"Edit board" : "Editar taboleiro",
|
||||
"Clone board" : "Clonar taboleiro",
|
||||
"Unarchive board" : "Desarquivar taboleiro",
|
||||
"Archive board" : "Arquivar taboleiro",
|
||||
"Turn on due date reminders" : "Activar os lembretes de data de caducidade",
|
||||
"Turn off due date reminders" : "Desctivar os lembretes de data de caducidade",
|
||||
"Due date reminders" : "Lembretes de data de caducidade",
|
||||
"All cards" : "Todas as tarxeta",
|
||||
"Assigned cards" : "Tarxetas asignadas",
|
||||
"No notifications" : "Non hai notificacións",
|
||||
"Delete board" : "Eliminar taboleiro",
|
||||
"Board {0} deleted" : "Eliminouse o taboleiro {0}",
|
||||
"Only assigned cards" : "Só as tarxetas asignadas",
|
||||
"No reminder" : "Non hai lembretes",
|
||||
"An error occurred" : "Produciuse un erro",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Confirma que quere eliminar o taboleiro {title}? Isto eliminará todos os datos deste taboleiro.",
|
||||
"Delete the board?" : "Eliminar o taboleiro?",
|
||||
|
||||
@@ -202,7 +202,6 @@ OC.L10N.register(
|
||||
"Edit description" : "Modifica descrizione",
|
||||
"View description" : "Visualizza descrizione",
|
||||
"Add Attachment" : "Aggiungi allegato",
|
||||
"Write a description …" : "Scrivi una descrizione…",
|
||||
"Choose attachment" : "Scegli allegato",
|
||||
"(group)" : "(gruppo)",
|
||||
"(circle)" : "(cerchia)",
|
||||
|
||||
@@ -200,7 +200,6 @@
|
||||
"Edit description" : "Modifica descrizione",
|
||||
"View description" : "Visualizza descrizione",
|
||||
"Add Attachment" : "Aggiungi allegato",
|
||||
"Write a description …" : "Scrivi una descrizione…",
|
||||
"Choose attachment" : "Scegli allegato",
|
||||
"(group)" : "(gruppo)",
|
||||
"(circle)" : "(cerchia)",
|
||||
|
||||
@@ -69,7 +69,7 @@ OC.L10N.register(
|
||||
"Personal" : "Asmeniniai",
|
||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kortelę \"%s\" ties \"%s\" priskyrė jums %s.",
|
||||
"{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} priskyrė jums kortelę \"%s\" ties \"%s\".",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Kortelė „%s“, esanti lentoje „%s“, pasiekė savo galutinį terminą.",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Kortelė \"%s\" ties \"%s\" pasiekė savo galutinį terminą.",
|
||||
"%s has mentioned you in a comment on \"%s\"." : "%s paminėjo jus komentare ties \"%s\".",
|
||||
"{user} has mentioned you in a comment on \"%s\"." : "{user} paminėjo jus komentare ties \"%s\".",
|
||||
"The board \"%s\" has been shared with you by %s." : "Lentą \"%s\" su jumis bendrina %s.",
|
||||
@@ -217,7 +217,6 @@ OC.L10N.register(
|
||||
"Today" : "Šiandien",
|
||||
"Tomorrow" : "Rytoj",
|
||||
"This week" : "Šią savaitę",
|
||||
"No due" : "Be galutinio termino",
|
||||
"Link to a board" : "Susieti su lenta",
|
||||
"Link to a card" : "Susieti su kortele",
|
||||
"Something went wrong" : "Kažkas nutiko",
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
"Personal" : "Asmeniniai",
|
||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kortelę \"%s\" ties \"%s\" priskyrė jums %s.",
|
||||
"{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} priskyrė jums kortelę \"%s\" ties \"%s\".",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Kortelė „%s“, esanti lentoje „%s“, pasiekė savo galutinį terminą.",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Kortelė \"%s\" ties \"%s\" pasiekė savo galutinį terminą.",
|
||||
"%s has mentioned you in a comment on \"%s\"." : "%s paminėjo jus komentare ties \"%s\".",
|
||||
"{user} has mentioned you in a comment on \"%s\"." : "{user} paminėjo jus komentare ties \"%s\".",
|
||||
"The board \"%s\" has been shared with you by %s." : "Lentą \"%s\" su jumis bendrina %s.",
|
||||
@@ -215,7 +215,6 @@
|
||||
"Today" : "Šiandien",
|
||||
"Tomorrow" : "Rytoj",
|
||||
"This week" : "Šią savaitę",
|
||||
"No due" : "Be galutinio termino",
|
||||
"Link to a board" : "Susieti su lenta",
|
||||
"Link to a card" : "Susieti su kortele",
|
||||
"Something went wrong" : "Kažkas nutiko",
|
||||
|
||||
@@ -202,7 +202,6 @@ OC.L10N.register(
|
||||
"Edit description" : "Edytuj opis",
|
||||
"View description" : "Zobacz opis",
|
||||
"Add Attachment" : "Dodaj załącznik",
|
||||
"Write a description …" : "Napisz opis…",
|
||||
"Choose attachment" : "Wybierz załącznik",
|
||||
"(group)" : "(grupa)",
|
||||
"(circle)" : "(krąg)",
|
||||
|
||||
@@ -200,7 +200,6 @@
|
||||
"Edit description" : "Edytuj opis",
|
||||
"View description" : "Zobacz opis",
|
||||
"Add Attachment" : "Dodaj załącznik",
|
||||
"Write a description …" : "Napisz opis…",
|
||||
"Choose attachment" : "Wybierz załącznik",
|
||||
"(group)" : "(grupa)",
|
||||
"(circle)" : "(krąg)",
|
||||
|
||||
@@ -146,7 +146,7 @@ OC.L10N.register(
|
||||
"Undo" : "Desfazer",
|
||||
"Deleted cards" : "Cartões excluídos",
|
||||
"Share board with a user, group or circle …" : "Compartilhar o painel com um usuário, grupo ou círculo...",
|
||||
"Searching for users, groups and circles …" : "Procurando usuários, grupos e círculos...",
|
||||
"Searching for users, groups and circles …" : "Procurando usuários, grupos e círculos ...",
|
||||
"No participants found" : "Nenhum participante encontrado",
|
||||
"Board owner" : "Proprietário do painel",
|
||||
"(Group)" : "(Grupo)",
|
||||
@@ -202,7 +202,6 @@ OC.L10N.register(
|
||||
"Edit description" : "Editar descrição",
|
||||
"View description" : "Exibir descrição",
|
||||
"Add Attachment" : "Adicionar anexo",
|
||||
"Write a description …" : "Escreva uma descrição...",
|
||||
"Choose attachment" : "Escolher anexo",
|
||||
"(group)" : "(grupo)",
|
||||
"(circle)" : "(círculo)",
|
||||
@@ -226,19 +225,7 @@ OC.L10N.register(
|
||||
"Board name" : "Nome do painel",
|
||||
"Board details" : "Detalhes do painel",
|
||||
"Edit board" : "Editar painel",
|
||||
"Clone board" : "Clonar painel",
|
||||
"Unarchive board" : "Desarquivar painel",
|
||||
"Archive board" : "Arquivar painel",
|
||||
"Turn on due date reminders" : "Ativar lembretes de vencimento",
|
||||
"Turn off due date reminders" : "Desativar lembretes de vencimento",
|
||||
"Due date reminders" : "Lembretes de vencimento",
|
||||
"All cards" : "Todos os cartões",
|
||||
"Assigned cards" : "Cartões atribuídos",
|
||||
"No notifications" : "Sem notificações",
|
||||
"Delete board" : "Excluir painel",
|
||||
"Board {0} deleted" : "Painel {0} excluído",
|
||||
"Only assigned cards" : "Apenas cartões atribuídos",
|
||||
"No reminder" : "Nenhum lembrete",
|
||||
"An error occurred" : "Ocorreu um erro",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Deseja realmente excluir o painel {title}? Isto excluirá todos os dados deste painel.",
|
||||
"Delete the board?" : "Excluir o painel?",
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
"Undo" : "Desfazer",
|
||||
"Deleted cards" : "Cartões excluídos",
|
||||
"Share board with a user, group or circle …" : "Compartilhar o painel com um usuário, grupo ou círculo...",
|
||||
"Searching for users, groups and circles …" : "Procurando usuários, grupos e círculos...",
|
||||
"Searching for users, groups and circles …" : "Procurando usuários, grupos e círculos ...",
|
||||
"No participants found" : "Nenhum participante encontrado",
|
||||
"Board owner" : "Proprietário do painel",
|
||||
"(Group)" : "(Grupo)",
|
||||
@@ -200,7 +200,6 @@
|
||||
"Edit description" : "Editar descrição",
|
||||
"View description" : "Exibir descrição",
|
||||
"Add Attachment" : "Adicionar anexo",
|
||||
"Write a description …" : "Escreva uma descrição...",
|
||||
"Choose attachment" : "Escolher anexo",
|
||||
"(group)" : "(grupo)",
|
||||
"(circle)" : "(círculo)",
|
||||
@@ -224,19 +223,7 @@
|
||||
"Board name" : "Nome do painel",
|
||||
"Board details" : "Detalhes do painel",
|
||||
"Edit board" : "Editar painel",
|
||||
"Clone board" : "Clonar painel",
|
||||
"Unarchive board" : "Desarquivar painel",
|
||||
"Archive board" : "Arquivar painel",
|
||||
"Turn on due date reminders" : "Ativar lembretes de vencimento",
|
||||
"Turn off due date reminders" : "Desativar lembretes de vencimento",
|
||||
"Due date reminders" : "Lembretes de vencimento",
|
||||
"All cards" : "Todos os cartões",
|
||||
"Assigned cards" : "Cartões atribuídos",
|
||||
"No notifications" : "Sem notificações",
|
||||
"Delete board" : "Excluir painel",
|
||||
"Board {0} deleted" : "Painel {0} excluído",
|
||||
"Only assigned cards" : "Apenas cartões atribuídos",
|
||||
"No reminder" : "Nenhum lembrete",
|
||||
"An error occurred" : "Ocorreu um erro",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Deseja realmente excluir o painel {title}? Isto excluirá todos os dados deste painel.",
|
||||
"Delete the board?" : "Excluir o painel?",
|
||||
|
||||
11
l10n/sl.js
11
l10n/sl.js
@@ -146,7 +146,6 @@ OC.L10N.register(
|
||||
"Undo" : "Razveljavi",
|
||||
"Deleted cards" : "Izbrisane naloge",
|
||||
"Share board with a user, group or circle …" : "Souporaba z uporabniki, skupinami ali krogi ...",
|
||||
"Searching for users, groups and circles …" : "Iskanje uporabnikov, skupin in krogov ...",
|
||||
"No participants found" : "Ni zaznanih udeleženev",
|
||||
"Board owner" : "Lastnik zbirke",
|
||||
"(Group)" : "(Skupina)",
|
||||
@@ -202,7 +201,6 @@ OC.L10N.register(
|
||||
"Edit description" : "Uredi opis",
|
||||
"View description" : "Pokaži opis",
|
||||
"Add Attachment" : "Dodaj prilogo",
|
||||
"Write a description …" : "Vpišite opis ...",
|
||||
"Choose attachment" : "Izbor priloge",
|
||||
"(group)" : "(skupina)",
|
||||
"(circle)" : "(krog)",
|
||||
@@ -226,16 +224,7 @@ OC.L10N.register(
|
||||
"Board name" : "Ime zbirke",
|
||||
"Board details" : "Podrobnosti zbirke",
|
||||
"Edit board" : "Uredi zbirko",
|
||||
"Clone board" : "Kloniraj zbirko",
|
||||
"Unarchive board" : "Povrni zbirko",
|
||||
"Archive board" : "Arhiviraj zbirko",
|
||||
"All cards" : "Vse naloge",
|
||||
"Assigned cards" : "Dodeljene naloge",
|
||||
"No notifications" : "Ni obvestil",
|
||||
"Delete board" : "Izbriši zbirko",
|
||||
"Board {0} deleted" : "Zbirka {0} je izbrisana",
|
||||
"Only assigned cards" : "Le dodeljene naloge",
|
||||
"No reminder" : "Ni vpisanih opomnikov",
|
||||
"An error occurred" : "Prišlo je do napake.",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Ali ste prepričani, da želite izbrisati zbirko »{title}«? S tem boste izbrisali tudi vse podatke zbirke.",
|
||||
"Delete the board?" : "Ali želite izbrisati zbirko?",
|
||||
|
||||
11
l10n/sl.json
11
l10n/sl.json
@@ -144,7 +144,6 @@
|
||||
"Undo" : "Razveljavi",
|
||||
"Deleted cards" : "Izbrisane naloge",
|
||||
"Share board with a user, group or circle …" : "Souporaba z uporabniki, skupinami ali krogi ...",
|
||||
"Searching for users, groups and circles …" : "Iskanje uporabnikov, skupin in krogov ...",
|
||||
"No participants found" : "Ni zaznanih udeleženev",
|
||||
"Board owner" : "Lastnik zbirke",
|
||||
"(Group)" : "(Skupina)",
|
||||
@@ -200,7 +199,6 @@
|
||||
"Edit description" : "Uredi opis",
|
||||
"View description" : "Pokaži opis",
|
||||
"Add Attachment" : "Dodaj prilogo",
|
||||
"Write a description …" : "Vpišite opis ...",
|
||||
"Choose attachment" : "Izbor priloge",
|
||||
"(group)" : "(skupina)",
|
||||
"(circle)" : "(krog)",
|
||||
@@ -224,16 +222,7 @@
|
||||
"Board name" : "Ime zbirke",
|
||||
"Board details" : "Podrobnosti zbirke",
|
||||
"Edit board" : "Uredi zbirko",
|
||||
"Clone board" : "Kloniraj zbirko",
|
||||
"Unarchive board" : "Povrni zbirko",
|
||||
"Archive board" : "Arhiviraj zbirko",
|
||||
"All cards" : "Vse naloge",
|
||||
"Assigned cards" : "Dodeljene naloge",
|
||||
"No notifications" : "Ni obvestil",
|
||||
"Delete board" : "Izbriši zbirko",
|
||||
"Board {0} deleted" : "Zbirka {0} je izbrisana",
|
||||
"Only assigned cards" : "Le dodeljene naloge",
|
||||
"No reminder" : "Ni vpisanih opomnikov",
|
||||
"An error occurred" : "Prišlo je do napake.",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Ali ste prepričani, da želite izbrisati zbirko »{title}«? S tem boste izbrisali tudi vse podatke zbirke.",
|
||||
"Delete the board?" : "Ali želite izbrisati zbirko?",
|
||||
|
||||
13
l10n/sv.js
13
l10n/sv.js
@@ -202,7 +202,6 @@ OC.L10N.register(
|
||||
"Edit description" : "Ändra beskrivning",
|
||||
"View description" : "Visa beskrivning",
|
||||
"Add Attachment" : "Lägg till bilaga",
|
||||
"Write a description …" : "Ange en beskrivning ...",
|
||||
"Choose attachment" : "Välj bilaga",
|
||||
"(group)" : " (grupp)",
|
||||
"(circle)" : "(cirkel)",
|
||||
@@ -226,19 +225,7 @@ OC.L10N.register(
|
||||
"Board name" : "Tavlans namn",
|
||||
"Board details" : "Taveldetaljer",
|
||||
"Edit board" : "Ändra tavla",
|
||||
"Clone board" : "Kopiera tavla",
|
||||
"Unarchive board" : "Ta bort tavlan ur arkivet",
|
||||
"Archive board" : "Arkivera tavla",
|
||||
"Turn on due date reminders" : "Aktivera påminnelser om förfallodatum",
|
||||
"Turn off due date reminders" : "Inaktivera påminnelser om förfallodatum",
|
||||
"Due date reminders" : "Påminnelser om förfallodatum",
|
||||
"All cards" : "Alla kort",
|
||||
"Assigned cards" : "Tilldelade kort",
|
||||
"No notifications" : "Inga aviseringar",
|
||||
"Delete board" : "Radera tavla",
|
||||
"Board {0} deleted" : "Tavla {0} raderad",
|
||||
"Only assigned cards" : "Bara tilldelade kort",
|
||||
"No reminder" : "Ingen påminnelse",
|
||||
"An error occurred" : "Ett fel uppstod",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Är du säker på att du vill radera tavla {title}? Detta kommer att radera all information från denna tavla.",
|
||||
"Delete the board?" : "Ta bort tavlan?",
|
||||
|
||||
13
l10n/sv.json
13
l10n/sv.json
@@ -200,7 +200,6 @@
|
||||
"Edit description" : "Ändra beskrivning",
|
||||
"View description" : "Visa beskrivning",
|
||||
"Add Attachment" : "Lägg till bilaga",
|
||||
"Write a description …" : "Ange en beskrivning ...",
|
||||
"Choose attachment" : "Välj bilaga",
|
||||
"(group)" : " (grupp)",
|
||||
"(circle)" : "(cirkel)",
|
||||
@@ -224,19 +223,7 @@
|
||||
"Board name" : "Tavlans namn",
|
||||
"Board details" : "Taveldetaljer",
|
||||
"Edit board" : "Ändra tavla",
|
||||
"Clone board" : "Kopiera tavla",
|
||||
"Unarchive board" : "Ta bort tavlan ur arkivet",
|
||||
"Archive board" : "Arkivera tavla",
|
||||
"Turn on due date reminders" : "Aktivera påminnelser om förfallodatum",
|
||||
"Turn off due date reminders" : "Inaktivera påminnelser om förfallodatum",
|
||||
"Due date reminders" : "Påminnelser om förfallodatum",
|
||||
"All cards" : "Alla kort",
|
||||
"Assigned cards" : "Tilldelade kort",
|
||||
"No notifications" : "Inga aviseringar",
|
||||
"Delete board" : "Radera tavla",
|
||||
"Board {0} deleted" : "Tavla {0} raderad",
|
||||
"Only assigned cards" : "Bara tilldelade kort",
|
||||
"No reminder" : "Ingen påminnelse",
|
||||
"An error occurred" : "Ett fel uppstod",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Är du säker på att du vill radera tavla {title}? Detta kommer att radera all information från denna tavla.",
|
||||
"Delete the board?" : "Ta bort tavlan?",
|
||||
|
||||
13
l10n/tr.js
13
l10n/tr.js
@@ -202,7 +202,6 @@ OC.L10N.register(
|
||||
"Edit description" : "Açıklamayı düzenle",
|
||||
"View description" : "Açıklamayı görüntüle",
|
||||
"Add Attachment" : "Dosya Ekle",
|
||||
"Write a description …" : "Bir açıklama yazın …",
|
||||
"Choose attachment" : "Ek dosyayı seçin",
|
||||
"(group)" : "(grup)",
|
||||
"(circle)" : "(çevre)",
|
||||
@@ -226,19 +225,7 @@ OC.L10N.register(
|
||||
"Board name" : "Pano adı",
|
||||
"Board details" : "Pano ayrıntıları",
|
||||
"Edit board" : "Panoyu sil",
|
||||
"Clone board" : "Panoyu kopyala",
|
||||
"Unarchive board" : "Panoyu arşivden çıkar",
|
||||
"Archive board" : "Panoyu arşivle",
|
||||
"Turn on due date reminders" : "Tarih anımsatıcılarını aç",
|
||||
"Turn off due date reminders" : "Tarih anımsatıcılarını kapat",
|
||||
"Due date reminders" : "Bitiş tarihi anımsatıcıları",
|
||||
"All cards" : "Tüm kartlar",
|
||||
"Assigned cards" : "Atanmış kartlar",
|
||||
"No notifications" : "Bildirim yok",
|
||||
"Delete board" : "Panoyu sil",
|
||||
"Board {0} deleted" : "{0} panosu silindi",
|
||||
"Only assigned cards" : "Yalnız atanmış kartlar",
|
||||
"No reminder" : "Anımsatıcı yok",
|
||||
"An error occurred" : "Bir sorun çıktı",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "{title} panosunu silmek istediğinize emin misiniz? Bu işlem, bu panodaki tüm verileri silecek.",
|
||||
"Delete the board?" : "Pano silinsin mi?",
|
||||
|
||||
13
l10n/tr.json
13
l10n/tr.json
@@ -200,7 +200,6 @@
|
||||
"Edit description" : "Açıklamayı düzenle",
|
||||
"View description" : "Açıklamayı görüntüle",
|
||||
"Add Attachment" : "Dosya Ekle",
|
||||
"Write a description …" : "Bir açıklama yazın …",
|
||||
"Choose attachment" : "Ek dosyayı seçin",
|
||||
"(group)" : "(grup)",
|
||||
"(circle)" : "(çevre)",
|
||||
@@ -224,19 +223,7 @@
|
||||
"Board name" : "Pano adı",
|
||||
"Board details" : "Pano ayrıntıları",
|
||||
"Edit board" : "Panoyu sil",
|
||||
"Clone board" : "Panoyu kopyala",
|
||||
"Unarchive board" : "Panoyu arşivden çıkar",
|
||||
"Archive board" : "Panoyu arşivle",
|
||||
"Turn on due date reminders" : "Tarih anımsatıcılarını aç",
|
||||
"Turn off due date reminders" : "Tarih anımsatıcılarını kapat",
|
||||
"Due date reminders" : "Bitiş tarihi anımsatıcıları",
|
||||
"All cards" : "Tüm kartlar",
|
||||
"Assigned cards" : "Atanmış kartlar",
|
||||
"No notifications" : "Bildirim yok",
|
||||
"Delete board" : "Panoyu sil",
|
||||
"Board {0} deleted" : "{0} panosu silindi",
|
||||
"Only assigned cards" : "Yalnız atanmış kartlar",
|
||||
"No reminder" : "Anımsatıcı yok",
|
||||
"An error occurred" : "Bir sorun çıktı",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "{title} panosunu silmek istediğinize emin misiniz? Bu işlem, bu panodaki tüm verileri silecek.",
|
||||
"Delete the board?" : "Pano silinsin mi?",
|
||||
|
||||
@@ -133,7 +133,7 @@ class Application20 extends App implements IBootstrap {
|
||||
}
|
||||
// delete existing user assignments
|
||||
$assignmentMapper = $container->query(AssignmentMapper::class);
|
||||
$assignments = $assignmentMapper->findByParticipant($user->getUID());
|
||||
$assignments = $assignmentMapper->findByUserId($user->getUID());
|
||||
foreach ($assignments as $assignment) {
|
||||
$assignmentMapper->delete($assignment);
|
||||
}
|
||||
|
||||
@@ -114,7 +114,7 @@ class ApplicationLegacy extends App {
|
||||
}
|
||||
// delete existing user assignments
|
||||
$assignmentMapper = $container->query(AssignmentMapper::class);
|
||||
$assignments = $assignmentMapper->findByParticipant($user->getUID());
|
||||
$assignments = $assignmentMapper->findByUserId($user->getUID());
|
||||
foreach ($assignments as $assignment) {
|
||||
$assignmentMapper->delete($assignment);
|
||||
}
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
|
||||
namespace OCA\Deck\Db;
|
||||
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
use OCP\AppFramework\Db\MultipleObjectsReturnedException;
|
||||
use OCP\IDBConnection;
|
||||
|
||||
class AclMapper extends DeckMapper implements IPermissionMapper {
|
||||
@@ -45,12 +43,8 @@ class AclMapper extends DeckMapper implements IPermissionMapper {
|
||||
}
|
||||
|
||||
public function findBoardId($aclId): ?int {
|
||||
try {
|
||||
$entity = $this->find($aclId);
|
||||
return $entity->getBoardId();
|
||||
} catch (DoesNotExistException | MultipleObjectsReturnedException $e) {
|
||||
}
|
||||
return null;
|
||||
$entity = $this->find($aclId);
|
||||
return $entity->getBoardId();
|
||||
}
|
||||
|
||||
public function findByParticipant($type, $participant): array {
|
||||
|
||||
@@ -28,8 +28,6 @@ use DateTimeZone;
|
||||
use Sabre\VObject\Component\VCalendar;
|
||||
|
||||
class Card extends RelationalEntity {
|
||||
public const TITLE_MAX_LENGTH = 255;
|
||||
|
||||
protected $title;
|
||||
protected $description;
|
||||
protected $descriptionPrev;
|
||||
|
||||
@@ -243,7 +243,7 @@ class CardMapper extends QBMapper implements IPermissionMapper {
|
||||
$qb->select('id','title','duedate','notified')
|
||||
->from('deck_cards')
|
||||
->where($qb->expr()->lt('duedate', $qb->createFunction('NOW()')))
|
||||
->andWhere($qb->expr()->eq('notified', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)))
|
||||
->andWhere($qb->expr()->eq('notified', $qb->createNamedParameter(false)))
|
||||
->andWhere($qb->expr()->eq('archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)))
|
||||
->andWhere($qb->expr()->eq('deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT)));
|
||||
return $this->findEntities($qb);
|
||||
@@ -322,7 +322,8 @@ class CardMapper extends QBMapper implements IPermissionMapper {
|
||||
$stmt = $this->db->prepare($sql);
|
||||
$stmt->bindParam(1, $cardId, \PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
return $stmt->fetchColumn() ?? null;
|
||||
$row = $stmt->fetch();
|
||||
return $row['id'];
|
||||
}
|
||||
|
||||
public function mapOwner(Card &$card) {
|
||||
|
||||
@@ -23,9 +23,7 @@
|
||||
|
||||
namespace OCA\Deck\Db;
|
||||
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
use OCP\AppFramework\Db\Entity;
|
||||
use OCP\AppFramework\Db\MultipleObjectsReturnedException;
|
||||
use OCP\IDBConnection;
|
||||
|
||||
class LabelMapper extends DeckMapper implements IPermissionMapper {
|
||||
@@ -102,12 +100,7 @@ class LabelMapper extends DeckMapper implements IPermissionMapper {
|
||||
}
|
||||
|
||||
public function findBoardId($labelId): ?int {
|
||||
try {
|
||||
$entity = $this->find($labelId);
|
||||
return $entity->getBoardId();
|
||||
} catch (DoesNotExistException $e) {
|
||||
} catch (MultipleObjectsReturnedException $e) {
|
||||
}
|
||||
return null;
|
||||
$entity = $this->find($labelId);
|
||||
return $entity->getBoardId();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,9 +23,7 @@
|
||||
|
||||
namespace OCA\Deck\Db;
|
||||
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
use OCP\AppFramework\Db\Entity;
|
||||
use OCP\AppFramework\Db\MultipleObjectsReturnedException;
|
||||
use OCP\IDBConnection;
|
||||
|
||||
class StackMapper extends DeckMapper implements IPermissionMapper {
|
||||
@@ -77,12 +75,7 @@ class StackMapper extends DeckMapper implements IPermissionMapper {
|
||||
}
|
||||
|
||||
public function findBoardId($stackId): ?int {
|
||||
try {
|
||||
$entity = $this->find($stackId);
|
||||
return $entity->getBoardId();
|
||||
} catch (DoesNotExistException $e) {
|
||||
} catch (MultipleObjectsReturnedException $e) {
|
||||
}
|
||||
return null;
|
||||
$entity = $this->find($stackId);
|
||||
return $entity->getBoardId();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,22 @@ use OCP\Migration\IOutput;
|
||||
use OCP\Migration\SimpleMigrationStep;
|
||||
|
||||
class Version1000Date20200306161713 extends SimpleMigrationStep {
|
||||
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
|
||||
|
||||
/**
|
||||
* @param IOutput $output
|
||||
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
|
||||
* @param array $options
|
||||
*/
|
||||
public function preSchemaChange(IOutput $output, Closure $schemaClosure, array $options) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param IOutput $output
|
||||
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
|
||||
* @param array $options
|
||||
* @return null|ISchemaWrapper
|
||||
*/
|
||||
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options) {
|
||||
/** @var ISchemaWrapper $schema */
|
||||
$schema = $schemaClosure();
|
||||
|
||||
|
||||
@@ -13,7 +13,22 @@ use OCP\Migration\SimpleMigrationStep;
|
||||
* Auto-generated migration step: Please modify to your needs!
|
||||
*/
|
||||
class Version1000Date20200308073933 extends SimpleMigrationStep {
|
||||
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
|
||||
|
||||
/**
|
||||
* @param IOutput $output
|
||||
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
|
||||
* @param array $options
|
||||
*/
|
||||
public function preSchemaChange(IOutput $output, Closure $schemaClosure, array $options) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param IOutput $output
|
||||
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
|
||||
* @param array $options
|
||||
* @return null|ISchemaWrapper
|
||||
*/
|
||||
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options) {
|
||||
/** @var ISchemaWrapper $schema */
|
||||
$schema = $schemaClosure();
|
||||
|
||||
@@ -24,9 +39,16 @@ class Version1000Date20200308073933 extends SimpleMigrationStep {
|
||||
'notnull' => true,
|
||||
'default' => 0
|
||||
]);
|
||||
//$table->addIndex(['participant'], 'deck_assigned_users_idx_t');
|
||||
$table->addIndex(['type'], 'deck_assigned_users_idx_ty');
|
||||
$table->addIndex(['type'], 'deck_assigned_users_idx_t');
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param IOutput $output
|
||||
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
|
||||
* @param array $options
|
||||
*/
|
||||
public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,104 +0,0 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OCA\Deck\Migration;
|
||||
|
||||
use Closure;
|
||||
use OCP\DB\ISchemaWrapper;
|
||||
use OCP\Migration\IOutput;
|
||||
use OCP\Migration\SimpleMigrationStep;
|
||||
|
||||
class Version10200Date20201111150114 extends SimpleMigrationStep {
|
||||
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
|
||||
/** @var ISchemaWrapper $schema */
|
||||
$schema = $schemaClosure();
|
||||
|
||||
// Fix wrong index added in Version1000Date20200308073933
|
||||
$table = $schema->getTable('deck_assigned_users');
|
||||
if ($table->hasIndex('deck_assigned_users_idx_t')) {
|
||||
$table->dropIndex('deck_assigned_users_idx_t');
|
||||
if (!$table->hasIndex('deck_assigned_users_idx_ty')) {
|
||||
$table->addIndex(['type'], 'deck_assigned_users_idx_ty');
|
||||
}
|
||||
}
|
||||
|
||||
// Check consistency of the labels table when updating from a version < 0.6
|
||||
// git commit for database.xml change at b0eaae6705dbfb9ce834d4047912d3e34eaa157f
|
||||
$table = $schema->getTable('deck_labels');
|
||||
if (!$table->hasColumn('last_modified')) {
|
||||
$table->addColumn('last_modified', 'integer', [
|
||||
'notnull' => false,
|
||||
'default' => 0,
|
||||
'unsigned' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
// Check consistency of the cards table when updating from a version < 0.5.1
|
||||
// git commit for database.xml change at dd104466d61e32f59552da183034522e04effe35
|
||||
$table = $schema->getTable('deck_cards');
|
||||
if (!$table->hasColumn('description_prev')) {
|
||||
$table->addColumn('description_prev', 'text', [
|
||||
'notnull' => false,
|
||||
]);
|
||||
}
|
||||
if (!$table->hasColumn('last_editor')) {
|
||||
$table->addColumn('last_editor', 'string', [
|
||||
'notnull' => false,
|
||||
'length' => 64,
|
||||
]);
|
||||
}
|
||||
|
||||
// Check consistency of the cards table when updating from a version < 0.5.0
|
||||
// git commit for database.xml change at a068d6e1c6588662f0ea131e57f974238538eda6
|
||||
$table = $schema->getTable('deck_boards');
|
||||
if (!$table->hasColumn('last_modified')) {
|
||||
$table->addColumn('last_modified', 'integer', [
|
||||
'notnull' => false,
|
||||
'default' => 0,
|
||||
'unsigned' => true,
|
||||
]);
|
||||
}
|
||||
$table = $schema->getTable('deck_stacks');
|
||||
if (!$table->hasColumn('last_modified')) {
|
||||
$table->addColumn('last_modified', 'integer', [
|
||||
'notnull' => false,
|
||||
'default' => 0,
|
||||
'unsigned' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
// Check consistency of the cards table when updating from a version < 0.5.0
|
||||
// git commit for database.xml change at ef4ce31c47a5ef70d1a4d00f2d4cd182ac067f2c
|
||||
$table = $schema->getTable('deck_stacks');
|
||||
if (!$table->hasColumn('deleted_at')) {
|
||||
$table->addColumn('deleted_at', 'bigint', [
|
||||
'notnull' => false,
|
||||
'length' => 8,
|
||||
'default' => 0,
|
||||
'unsigned' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
// Check consistency of the cards table when updating from a version < 0.5.0
|
||||
// git commit for database.xml change at 2ef4b55af427d90412544e77916e9449db7dbbcd
|
||||
$table = $schema->getTable('deck_cards');
|
||||
if (!$table->hasColumn('deleted_at')) {
|
||||
$table->addColumn('deleted_at', 'bigint', [
|
||||
'notnull' => false,
|
||||
'length' => 8,
|
||||
'default' => 0,
|
||||
'unsigned' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
$table = $schema->getTable('deck_cards');
|
||||
if ($table->getColumn('title')->getLength() !== 255) {
|
||||
$table->changeColumn('title', [
|
||||
'length' => 255
|
||||
]);
|
||||
}
|
||||
|
||||
return $schema;
|
||||
}
|
||||
}
|
||||
@@ -28,7 +28,6 @@ use OCA\Deck\Db\CardMapper;
|
||||
use OCP\IURLGenerator;
|
||||
use OCP\IUserManager;
|
||||
use OCP\L10N\IFactory;
|
||||
use OCP\Notification\AlreadyProcessedException;
|
||||
use OCP\Notification\INotification;
|
||||
use OCP\Notification\INotifier;
|
||||
|
||||
@@ -97,9 +96,6 @@ class Notifier implements INotifier {
|
||||
case 'card-assigned':
|
||||
$cardId = $notification->getObjectId();
|
||||
$boardId = $this->cardMapper->findBoardId($cardId);
|
||||
if (!$boardId) {
|
||||
throw new AlreadyProcessedException();
|
||||
}
|
||||
$initiator = $this->userManager->get($params[2]);
|
||||
if ($initiator !== null) {
|
||||
$dn = $initiator->getDisplayName();
|
||||
@@ -124,9 +120,6 @@ class Notifier implements INotifier {
|
||||
case 'card-overdue':
|
||||
$cardId = $notification->getObjectId();
|
||||
$boardId = $this->cardMapper->findBoardId($cardId);
|
||||
if (!$boardId) {
|
||||
throw new AlreadyProcessedException();
|
||||
}
|
||||
$notification->setParsedSubject(
|
||||
(string) $l->t('The card "%s" on "%s" has reached its due date.', $params)
|
||||
);
|
||||
@@ -135,9 +128,6 @@ class Notifier implements INotifier {
|
||||
case 'card-comment-mentioned':
|
||||
$cardId = $notification->getObjectId();
|
||||
$boardId = $this->cardMapper->findBoardId($cardId);
|
||||
if (!$boardId) {
|
||||
throw new AlreadyProcessedException();
|
||||
}
|
||||
$initiator = $this->userManager->get($params[2]);
|
||||
if ($initiator !== null) {
|
||||
$dn = $initiator->getDisplayName();
|
||||
@@ -164,9 +154,6 @@ class Notifier implements INotifier {
|
||||
break;
|
||||
case 'board-shared':
|
||||
$boardId = $notification->getObjectId();
|
||||
if (!$boardId) {
|
||||
throw new AlreadyProcessedException();
|
||||
}
|
||||
$initiator = $this->userManager->get($params[1]);
|
||||
if ($initiator !== null) {
|
||||
$dn = $initiator->getDisplayName();
|
||||
|
||||
@@ -172,10 +172,6 @@ class CardService {
|
||||
throw new BadRequestException('title must be provided');
|
||||
}
|
||||
|
||||
if (mb_strlen($title) > Card::TITLE_MAX_LENGTH) {
|
||||
throw new BadRequestException('The title cannot exceed 255 characters');
|
||||
}
|
||||
|
||||
if (is_numeric($stackId) === false) {
|
||||
throw new BadRequestException('stack id must be a number');
|
||||
}
|
||||
@@ -274,10 +270,6 @@ class CardService {
|
||||
throw new BadRequestException('title must be provided');
|
||||
}
|
||||
|
||||
if (mb_strlen($title) > Card::TITLE_MAX_LENGTH) {
|
||||
throw new BadRequestException('The title cannot exceed 255 characters');
|
||||
}
|
||||
|
||||
if (is_numeric($stackId) === false) {
|
||||
throw new BadRequestException('stack id must be a number $$$');
|
||||
}
|
||||
@@ -369,10 +361,6 @@ class CardService {
|
||||
throw new BadRequestException('title must be provided');
|
||||
}
|
||||
|
||||
if (mb_strlen($title) > Card::TITLE_MAX_LENGTH) {
|
||||
throw new BadRequestException('The title cannot exceed 255 characters');
|
||||
}
|
||||
|
||||
$this->permissionService->checkPermission($this->cardMapper, $id, Acl::PERMISSION_EDIT);
|
||||
if ($this->boardService->isArchived($this->cardMapper, $id)) {
|
||||
throw new StatusException('Operation not allowed. This board is archived.');
|
||||
|
||||
@@ -65,7 +65,7 @@ class ConfigService {
|
||||
|
||||
public function get($key) {
|
||||
$result = null;
|
||||
[$scope] = explode(':', $key, 2);
|
||||
[$scope, $id] = explode(':', $key, 2);
|
||||
switch ($scope) {
|
||||
case 'groupLimit':
|
||||
if (!$this->groupManager->isAdmin($this->userId)) {
|
||||
@@ -91,7 +91,7 @@ class ConfigService {
|
||||
|
||||
public function set($key, $value) {
|
||||
$result = null;
|
||||
[$scope] = explode(':', $key, 2);
|
||||
[$scope, $id] = explode(':', $key, 2);
|
||||
switch ($scope) {
|
||||
case 'groupLimit':
|
||||
if (!$this->groupManager->isAdmin($this->userId)) {
|
||||
|
||||
158
package-lock.json
generated
158
package-lock.json
generated
@@ -5070,9 +5070,9 @@
|
||||
}
|
||||
},
|
||||
"@nextcloud/dialogs": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-3.1.1.tgz",
|
||||
"integrity": "sha512-T816Jo5Dz/NrMXn+rDDAkb1mLcCPD2ZKFX7cVjYvfKP9Ta9LxaRlvwAhS/K7bQ17fpjX8jAmqwrhO8MWDnGGmA==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-3.0.0.tgz",
|
||||
"integrity": "sha512-5FVP0RSxIpKTKdSUlQ4osDDz/oCx2/4+InliB5MX2EcrjDe6q3fZMabSGnFTnIAu0CXRTzBk7RpneaIFGv+d5A==",
|
||||
"requires": {
|
||||
"@nextcloud/l10n": "^1.3.0",
|
||||
"@nextcloud/typings": "^1.0.0",
|
||||
@@ -5089,9 +5089,9 @@
|
||||
}
|
||||
},
|
||||
"core-js": {
|
||||
"version": "3.7.0",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.7.0.tgz",
|
||||
"integrity": "sha512-NwS7fI5M5B85EwpWuIwJN4i/fbisQUwLwiSNUWeXlkAZ0sbBjLEvLvFLf1uzAUV66PcEPt4xCGCmOZSxVf3xzA=="
|
||||
"version": "3.6.5",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
|
||||
"integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -5263,9 +5263,9 @@
|
||||
}
|
||||
},
|
||||
"@nextcloud/vue": {
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-2.9.0.tgz",
|
||||
"integrity": "sha512-OaddUORB2MdrXtmqnXJlbftYMGBBX339utLe2b4jz2qaT/IvvaTmwet6qSl/736upLaJveIoPrdyn3FZea5CUg==",
|
||||
"version": "2.8.2",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-2.8.2.tgz",
|
||||
"integrity": "sha512-1k4tWcmGj/zHql9nLFRV6y6pJPxqGveTScT0oNvqaPP5zesOBZbge4z+xsuPdOlHWsl26q/r8UyaYFqE09yNXw==",
|
||||
"requires": {
|
||||
"@nextcloud/auth": "^1.2.3",
|
||||
"@nextcloud/axios": "^1.3.2",
|
||||
@@ -5296,9 +5296,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"core-js": {
|
||||
"version": "3.7.0",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.7.0.tgz",
|
||||
"integrity": "sha512-NwS7fI5M5B85EwpWuIwJN4i/fbisQUwLwiSNUWeXlkAZ0sbBjLEvLvFLf1uzAUV66PcEPt4xCGCmOZSxVf3xzA=="
|
||||
"version": "3.6.5",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
|
||||
"integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -5624,9 +5624,9 @@
|
||||
}
|
||||
},
|
||||
"@vue/test-utils": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.1.1.tgz",
|
||||
"integrity": "sha512-/32538ilZ9qSiu1gui7zfBn+IFy+zoTaQTZ1qiLfQXzZtaeAD23kJMrnqaoe2w8JzJoXuqHUl2ruuStG8rwFYQ==",
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.1.0.tgz",
|
||||
"integrity": "sha512-M+3jtVqNYIrvzO5gaxogre5a5+96h0hN/dXw+5Lj0t+dp6fAhYcUjpLrC9j9cEEkl2Rcuh/gKYRUmR5N4vcqPw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"dom-event-types": "^1.0.0",
|
||||
@@ -6907,22 +6907,22 @@
|
||||
}
|
||||
},
|
||||
"babel-loader": {
|
||||
"version": "8.2.1",
|
||||
"resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.1.tgz",
|
||||
"integrity": "sha512-dMF8sb2KQ8kJl21GUjkW1HWmcsL39GOV5vnzjqrCzEPNY0S0UfMLnumidiwIajDSBmKhYf5iRW+HXaM4cvCKBw==",
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz",
|
||||
"integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"find-cache-dir": "^2.1.0",
|
||||
"loader-utils": "^1.4.0",
|
||||
"make-dir": "^2.1.0",
|
||||
"mkdirp": "^0.5.3",
|
||||
"pify": "^4.0.1",
|
||||
"schema-utils": "^2.6.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"ajv": {
|
||||
"version": "6.12.6",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
||||
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
|
||||
"version": "6.12.0",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz",
|
||||
"integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
@@ -6932,11 +6932,72 @@
|
||||
}
|
||||
},
|
||||
"ajv-keywords": {
|
||||
"version": "3.5.2",
|
||||
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
|
||||
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
|
||||
"version": "3.4.1",
|
||||
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
|
||||
"integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
|
||||
"dev": true
|
||||
},
|
||||
"big.js": {
|
||||
"version": "5.2.2",
|
||||
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
|
||||
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
|
||||
"dev": true
|
||||
},
|
||||
"emojis-list": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
|
||||
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
|
||||
"dev": true
|
||||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
|
||||
"integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
|
||||
"dev": true
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
||||
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
|
||||
"dev": true
|
||||
},
|
||||
"json5": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
||||
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"loader-utils": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
|
||||
"integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"big.js": "^5.2.2",
|
||||
"emojis-list": "^3.0.0",
|
||||
"json5": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.4",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz",
|
||||
"integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "^1.2.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"minimist": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"pify": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
|
||||
@@ -6944,14 +7005,13 @@
|
||||
"dev": true
|
||||
},
|
||||
"schema-utils": {
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
|
||||
"integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
|
||||
"version": "2.6.5",
|
||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz",
|
||||
"integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/json-schema": "^7.0.5",
|
||||
"ajv": "^6.12.4",
|
||||
"ajv-keywords": "^3.5.2"
|
||||
"ajv": "^6.12.0",
|
||||
"ajv-keywords": "^3.4.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9062,9 +9122,9 @@
|
||||
}
|
||||
},
|
||||
"dompurify": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.2.2.tgz",
|
||||
"integrity": "sha512-BsGR4nDLaC5CNBnyT5I+d5pOeaoWvgVeg6Gq/aqmKYWMPR07131u60I80BvExLAJ0FQEIBQ1BTicw+C5+jOyrg=="
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.2.0.tgz",
|
||||
"integrity": "sha512-bqFOQ7XRmmozp0VsKdIEe8UwZYxj0yttz7l80GBtBqdVRY48cOpXH2J/CVO7AEkV51qY0EBVXfilec18mdmQ/w=="
|
||||
},
|
||||
"domutils": {
|
||||
"version": "1.7.0",
|
||||
@@ -9931,9 +9991,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"eslint-plugin-standard": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.1.0.tgz",
|
||||
"integrity": "sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ==",
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz",
|
||||
"integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==",
|
||||
"dev": true
|
||||
},
|
||||
"eslint-plugin-vue": {
|
||||
@@ -19233,9 +19293,9 @@
|
||||
}
|
||||
},
|
||||
"sass-loader": {
|
||||
"version": "10.1.0",
|
||||
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.0.tgz",
|
||||
"integrity": "sha512-ZCKAlczLBbFd3aGAhowpYEy69Te3Z68cg8bnHHl6WnSCvnKpbM6pQrz957HWMa8LKVuhnD9uMplmMAHwGQtHeg==",
|
||||
"version": "10.0.5",
|
||||
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.0.5.tgz",
|
||||
"integrity": "sha512-2LqoNPtKkZq/XbXNQ4C64GFEleSEHKv6NPSI+bMC/l+jpEXGJhiRYkAQToO24MR7NU4JRY2RpLpJ/gjo2Uf13w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"klona": "^2.0.4",
|
||||
@@ -19269,6 +19329,18 @@
|
||||
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
|
||||
"dev": true
|
||||
},
|
||||
"big.js": {
|
||||
"version": "5.2.2",
|
||||
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
|
||||
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
|
||||
"dev": true
|
||||
},
|
||||
"emojis-list": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
|
||||
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
|
||||
"dev": true
|
||||
},
|
||||
"loader-utils": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
|
||||
@@ -23007,9 +23079,9 @@
|
||||
}
|
||||
},
|
||||
"webpack-merge": {
|
||||
"version": "5.4.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.4.0.tgz",
|
||||
"integrity": "sha512-/scBgu8LVPlHDgqH95Aw1xS+L+PHrpHKOwYVGFaNOQl4Q4wwwWDarwB1WdZAbLQ24SKhY3Awe7VZGYAdp+N+gQ==",
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.3.0.tgz",
|
||||
"integrity": "sha512-4PtsBAWnmJULIJYviiPq4BxwAykbAgGMheyEVaemj2bJI54h+p/gnlbXZEH2EM0IYC3blOE1Qm6kzKlc06N1UQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"clone-deep": "^4.0.1",
|
||||
|
||||
16
package.json
16
package.json
@@ -33,17 +33,17 @@
|
||||
"@juliushaertl/vue-richtext": "^1.0.0",
|
||||
"@nextcloud/auth": "^1.3.0",
|
||||
"@nextcloud/axios": "^1.5.0",
|
||||
"@nextcloud/dialogs": "^3.1.1",
|
||||
"@nextcloud/dialogs": "^3.0.0",
|
||||
"@nextcloud/event-bus": "^1.2.0",
|
||||
"@nextcloud/files": "^1.1.0",
|
||||
"@nextcloud/initial-state": "^1.2.0",
|
||||
"@nextcloud/l10n": "^1.4.1",
|
||||
"@nextcloud/moment": "^1.1.1",
|
||||
"@nextcloud/router": "^1.2.0",
|
||||
"@nextcloud/vue": "^2.9.0",
|
||||
"@nextcloud/vue": "^2.8.2",
|
||||
"@nextcloud/vue-dashboard": "^1.0.1",
|
||||
"blueimp-md5": "^2.18.0",
|
||||
"dompurify": "^2.2.2",
|
||||
"dompurify": "^2.2.0",
|
||||
"lodash": "^4.17.20",
|
||||
"markdown-it": "^12.0.2",
|
||||
"markdown-it-task-lists": "^2.1.1",
|
||||
@@ -75,11 +75,11 @@
|
||||
"@nextcloud/eslint-config": "^2.1.0",
|
||||
"@nextcloud/eslint-plugin": "^1.5.0",
|
||||
"@nextcloud/webpack-vue-config": "^1.4.1",
|
||||
"@vue/test-utils": "^1.1.1",
|
||||
"@vue/test-utils": "^1.1.0",
|
||||
"acorn": "^8.0.4",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"babel-jest": "^26.6.3",
|
||||
"babel-loader": "^8.2.1",
|
||||
"babel-loader": "^8.1.0",
|
||||
"css-loader": "^4.3.0",
|
||||
"eslint": "^6.8.0",
|
||||
"eslint-config-standard": "^12.0.0",
|
||||
@@ -88,7 +88,7 @@
|
||||
"eslint-plugin-import": "^2.22.1",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"eslint-plugin-promise": "^4.2.1",
|
||||
"eslint-plugin-standard": "^4.1.0",
|
||||
"eslint-plugin-standard": "^4.0.1",
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"file-loader": "^6.2.0",
|
||||
"jest": "^26.6.3",
|
||||
@@ -96,7 +96,7 @@
|
||||
"minimist": "^1.2.5",
|
||||
"node-sass": "^4.14.1",
|
||||
"raw-loader": "^4.0.2",
|
||||
"sass-loader": "^10.1.0",
|
||||
"sass-loader": "^10.0.5",
|
||||
"style-loader": "^1.3.0",
|
||||
"stylelint": "^13.7.2",
|
||||
"stylelint-config-recommended": "^3.0.0",
|
||||
@@ -110,7 +110,7 @@
|
||||
"webpack": "^4.44.2",
|
||||
"webpack-cli": "^3.3.12",
|
||||
"webpack-dev-server": "^3.11.0",
|
||||
"webpack-merge": "^5.4.0"
|
||||
"webpack-merge": "^5.3.0"
|
||||
},
|
||||
"jest": {
|
||||
"moduleFileExtensions": [
|
||||
|
||||
@@ -259,10 +259,8 @@ export default {
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
board(current, previous) {
|
||||
if (current?.id !== previous?.id) {
|
||||
this.clearFilter()
|
||||
}
|
||||
board() {
|
||||
this.clearFilter()
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
|
||||
@@ -185,7 +185,7 @@ export default {
|
||||
background-color: var(--color-main-background);
|
||||
}
|
||||
|
||||
section.app-sidebar__tab--active {
|
||||
section {
|
||||
min-height: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
type="deck-card" />
|
||||
</div>
|
||||
|
||||
<Description :key="card.id" :card="card" />
|
||||
<Description :card="card" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -45,13 +45,10 @@
|
||||
</Actions>
|
||||
</h5>
|
||||
|
||||
<div v-if="!descriptionEditing && hasDescription"
|
||||
<div v-if="!descriptionEditing"
|
||||
id="description-preview"
|
||||
@click="clickedPreview"
|
||||
v-html="renderedDescription" />
|
||||
<p v-else-if="!descriptionEditing" class="placeholder" @click="showEditor()">
|
||||
{{ t('deck', 'Write a description …') }}
|
||||
</p>
|
||||
<VueEasymde v-else
|
||||
:key="card.id"
|
||||
ref="markdownEditor"
|
||||
@@ -112,7 +109,6 @@ export default {
|
||||
autofocus: true,
|
||||
autosave: { enabled: false, uniqueId: 'unique' },
|
||||
toolbar: false,
|
||||
placeholder: t('deck', 'Write a description …'),
|
||||
},
|
||||
descriptionSaveTimeout: null,
|
||||
descriptionSaving: false,
|
||||
@@ -147,9 +143,6 @@ export default {
|
||||
renderedDescription() {
|
||||
return markdownIt.render(this.card.description || '')
|
||||
},
|
||||
hasDescription() {
|
||||
return this.card?.description?.trim?.() !== ''
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
showEditor() {
|
||||
@@ -233,11 +226,6 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
.placeholder {
|
||||
color: var(--color-text-maxcontrast);
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
#description-preview {
|
||||
min-height: 100px;
|
||||
|
||||
@@ -293,10 +281,6 @@ h5 {
|
||||
color: var(--color-main-text);
|
||||
}
|
||||
|
||||
.CodeMirror-placeholder {
|
||||
color: var(--color-text-maxcontrast);
|
||||
}
|
||||
|
||||
.editor-preview,
|
||||
.editor-statusbar {
|
||||
display: none;
|
||||
|
||||
@@ -36,37 +36,37 @@
|
||||
<template v-if="!deleted" slot="actions">
|
||||
<template v-if="!isDueSubmenuActive">
|
||||
<ActionButton
|
||||
icon="icon-info"
|
||||
icon="icon-more"
|
||||
:close-after-click="true"
|
||||
@click="actionDetails">
|
||||
{{ t('deck', 'Board details') }}
|
||||
</ActionButton>
|
||||
<ActionButton v-if="canManage && !board.archived"
|
||||
<ActionButton v-if="canManage"
|
||||
icon="icon-rename"
|
||||
:close-after-click="true"
|
||||
@click="actionEdit">
|
||||
{{ t('deck', 'Edit board') }}
|
||||
</ActionButton>
|
||||
<ActionButton v-if="canManage && !board.archived"
|
||||
<ActionButton v-if="canManage"
|
||||
icon="icon-clone"
|
||||
:close-after-click="true"
|
||||
@click="actionClone">
|
||||
{{ t('deck', 'Clone board') }}
|
||||
</ActionButton>
|
||||
<ActionButton v-if="canManage && board.archived"
|
||||
<ActionButton v-if="canManage"
|
||||
icon="icon-archive"
|
||||
:close-after-click="true"
|
||||
@click="actionUnarchive">
|
||||
{{ t('deck', 'Unarchive board') }}
|
||||
</ActionButton>
|
||||
<ActionButton v-else-if="canManage && !board.archived"
|
||||
<ActionButton v-if="canManage"
|
||||
icon="icon-archive"
|
||||
:close-after-click="true"
|
||||
@click="actionArchive">
|
||||
{{ t('deck', 'Archive board') }}
|
||||
</ActionButton>
|
||||
|
||||
<ActionButton v-if="!board.archived && board.acl.length === 0" :icon="board.settings['notify-due'] === 'off' ? 'icon-sound' : 'icon-sound-off'" @click="board.settings['notify-due'] === 'off' ? updateSetting('notify-due', 'all') : updateSetting('notify-due', 'off')">
|
||||
<ActionButton v-if="board.acl.length === 0" :icon="board.settings['notify-due'] === 'off' ? 'icon-sound' : 'icon-sound-off'" @click="board.settings['notify-due'] === 'off' ? updateSetting('notify-due', 'all') : updateSetting('notify-due', 'off')">
|
||||
{{ board.settings['notify-due'] === 'off' ? t('deck', 'Turn on due date reminders') : t('deck', 'Turn off due date reminders') }}
|
||||
</ActionButton>
|
||||
</template>
|
||||
@@ -105,7 +105,7 @@
|
||||
{{ t('deck', 'No notifications') }}
|
||||
</ActionButton>
|
||||
</template>
|
||||
<ActionButton v-else-if="!board.archived && board.acl.length > 0"
|
||||
<ActionButton v-else-if="board.acl.length > 0"
|
||||
:title="t('deck', 'Due date reminders')"
|
||||
:icon="dueDateReminderIcon"
|
||||
@click="isDueSubmenuActive=true">
|
||||
@@ -186,7 +186,7 @@ export default {
|
||||
}
|
||||
},
|
||||
canManage() {
|
||||
return this.board.permissions.PERMISSION_MANAGE
|
||||
return this.board.permissions.PERMISSION_MANAGE && !this.board.archived
|
||||
},
|
||||
dueDateReminderIcon() {
|
||||
if (this.board.settings['notify-due'] === 'all') {
|
||||
|
||||
@@ -23,6 +23,6 @@
|
||||
|
||||
|
||||
style('deck', 'globalstyles');
|
||||
script('deck', 'main');
|
||||
script('deck', 'deck');
|
||||
|
||||
\OC::$server->getEventDispatcher()->dispatch('\OCP\Collaboration\Resources::loadAdditionalScripts');
|
||||
|
||||
@@ -177,10 +177,6 @@ class NotifierTest extends \Test\TestCase {
|
||||
|
||||
/** @dataProvider dataPrepareCardAssigned */
|
||||
public function testPrepareCardAssigned($withUserFound = true) {
|
||||
$this->cardMapper->expects($this->once())
|
||||
->method('findBoardId')
|
||||
->willReturn(123);
|
||||
|
||||
/** @var INotification $notification */
|
||||
$notification = $this->createMock(INotification::class);
|
||||
$notification->expects($this->once())
|
||||
|
||||
12
webpack.js
12
webpack.js
@@ -1,9 +1,10 @@
|
||||
const webpackConfig = require('@nextcloud/webpack-vue-config')
|
||||
const path = require('path')
|
||||
const path = require('path');
|
||||
const { merge } = require('webpack-merge')
|
||||
|
||||
const config = {
|
||||
entry: {
|
||||
deck: path.join(__dirname, 'src', 'main.js'),
|
||||
collections: path.join(__dirname, 'src', 'init-collections.js'),
|
||||
dashboard: path.join(__dirname, 'src', 'init-dashboard.js'),
|
||||
},
|
||||
@@ -16,9 +17,10 @@ const config = {
|
||||
extensions: ['*', '.js', '.vue', '.json'],
|
||||
modules: [
|
||||
path.resolve(__dirname, 'node_modules'),
|
||||
'node_modules',
|
||||
],
|
||||
},
|
||||
}
|
||||
'node_modules'
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = merge(webpackConfig, config)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user