diff --git a/CHANGELOG.md b/CHANGELOG.md index 0dd25ac67..831cea06c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,33 @@ # Changelog All notable changes to this project will be documented in this file. +## 1.1.0 - unreleased + +### Merged PRs + +* [#1853](https://github.com/nextcloud/deck/pull/1853) Archive all cards from stack @jakobroehrl +* [#1865](https://github.com/nextcloud/deck/pull/1865) Add stack button on empty board @jakobroehrl +* [#1926](https://github.com/nextcloud/deck/pull/1926) New filter: unassigned cards @jakobroehrl +* [#1934](https://github.com/nextcloud/deck/pull/1934) Card dashboard @jakobroehrl +* [#2035](https://github.com/nextcloud/deck/pull/2035) Attach files in description @jakobroehrl +* [#2047](https://github.com/nextcloud/deck/pull/2047) Show card details in modal @jakobroehrl +* [#2115](https://github.com/nextcloud/deck/pull/2115) Dashboard panel @juliushaertl +* [#2123](https://github.com/nextcloud/deck/pull/2123) Fix control tooltip @jakobroehrl +* [#2144](https://github.com/nextcloud/deck/pull/2144) Fix nextcloud if install with dev dependencies @matchish +* [#2157](https://github.com/nextcloud/deck/pull/2157) Build/webpack shared config @juliushaertl +* [#2158](https://github.com/nextcloud/deck/pull/2158) Fix description in dark mode @juliushaertl +* [#2169](https://github.com/nextcloud/deck/pull/2169) Bump webpack-merge from 5.0.9 to 5.1.0 @dependabot +* [#2170](https://github.com/nextcloud/deck/pull/2170) Add lastModified date to boards API documentation @stefan-niedermann +* [#2188](https://github.com/nextcloud/deck/pull/2188) CardBadges: Count checkboxes started with "+ [ ]" @joreiff +* [#2200](https://github.com/nextcloud/deck/pull/2200) Unified search implementation @juliushaertl +* [#2206](https://github.com/nextcloud/deck/pull/2206) Fix read-only sidebar (fixes #2033) @juliushaertl +* [#2208](https://github.com/nextcloud/deck/pull/2208) Fix design, dark mode and keyboard navigation of the board list @juliushaertl +* [#2210](https://github.com/nextcloud/deck/pull/2210) Fix an incorrect/misleading message in lib/Service/BoardService.php @jordanbancino +* [#2211](https://github.com/nextcloud/deck/pull/2211) Update incorrect field in API documentation (docs/API.md) @jordanbancino +* [#2243](https://github.com/nextcloud/deck/pull/2243) Various smaller styling fixes @juliushaertl +* [#2244](https://github.com/nextcloud/deck/pull/2244) Toggle filter on clicking card labels @juliushaertl + + ## 1.0.5 - 2020-07-15 ### Fixed diff --git a/appinfo/app.php b/appinfo/app.php deleted file mode 100644 index bf0ac6c98..000000000 --- a/appinfo/app.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * @author Julius Härtl - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -use OCA\Deck\AppInfo\Application; -use OCP\AppFramework\QueryException; - -if ((@include_once __DIR__ . '/../vendor/autoload.php')=== false) { - throw new Exception('Cannot include autoload. Did you run install dependencies using composer?'); -} - -try { - /** @var Application $app */ - $app = \OC::$server->query(Application::class); - $app->register(); -} catch (QueryException $e) { -} - -/** Load activity style global so it is availabile in the activity app as well */ -\OC_Util::addStyle('deck', 'activity'); diff --git a/appinfo/info.xml b/appinfo/info.xml index 34c1ed4ed..23aad36f7 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -17,7 +17,7 @@ - 🚀 Get your project organized - 1.0.5 + 1.1.0-beta1 agpl Julius Härtl Deck @@ -64,9 +64,20 @@ OCA\Deck\Activity\DeckProvider - OCA\Deck\Provider\DeckProvider - + + + Deck + deck.page.index + deck.svg + 10 + + + + + OCA\Deck\DAV\CalendarPlugin + + diff --git a/appinfo/routes.php b/appinfo/routes.php index 6948f1b8c..720305340 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -26,9 +26,6 @@ return [ 'routes' => [ ['name' => 'page#index', 'url' => '/', 'verb' => 'GET'], - ['name' => 'Config#get', 'url' => '/config', 'verb' => 'GET'], - ['name' => 'Config#setValue', 'url' => '/config/{key}', 'verb' => 'POST'], - // boards ['name' => 'board#index', 'url' => '/boards', 'verb' => 'GET'], ['name' => 'board#create', 'url' => '/boards', 'verb' => 'POST'], @@ -127,17 +124,17 @@ return [ ['name' => 'attachment_api#delete', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId}', 'verb' => 'DELETE'], ['name' => 'attachment_api#restore', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId}/restore', 'verb' => 'PUT'], - - ['name' => 'board_api#preflighted_cors', 'url' => '/api/v1.0/{path}','verb' => 'OPTIONS', 'requirements' => ['path' => '.+']], ], 'ocs' => [ + ['name' => 'Config#get', 'url' => '/api/v1.0/config', 'verb' => 'GET'], + ['name' => 'Config#setValue', 'url' => '/api/v1.0/config/{key}', 'verb' => 'POST'], + ['name' => 'comments_api#list', 'url' => '/api/v1.0/cards/{cardId}/comments', 'verb' => 'GET'], ['name' => 'comments_api#create', 'url' => '/api/v1.0/cards/{cardId}/comments', 'verb' => 'POST'], ['name' => 'comments_api#update', 'url' => '/api/v1.0/cards/{cardId}/comments/{commentId}', 'verb' => 'PUT'], ['name' => 'comments_api#delete', 'url' => '/api/v1.0/cards/{cardId}/comments/{commentId}', 'verb' => 'DELETE'], - // dashboard ['name' => 'overview_api#upcomingCards', 'url' => '/api/v1.0/overview/upcoming', 'verb' => 'GET'], ] ]; diff --git a/css/deck.scss b/css/deck.scss new file mode 100644 index 000000000..c142c3fbf --- /dev/null +++ b/css/deck.scss @@ -0,0 +1 @@ +@include icon-black-white('deck', 'deck', 1); diff --git a/l10n/af.js b/l10n/af.js index 6cfd20ba2..5a39bea1d 100644 --- a/l10n/af.js +++ b/l10n/af.js @@ -23,6 +23,7 @@ OC.L10N.register( "Due date" : "Sperdatum", "Description" : "Beskrywing", "Comments" : "Kommentare", + "Select Date" : "Kies Datum", "Modified" : "Gewysig", "Created" : "Geskep", "Save" : "Stoor", diff --git a/l10n/af.json b/l10n/af.json index 664e92fc4..c1ea2e426 100644 --- a/l10n/af.json +++ b/l10n/af.json @@ -21,6 +21,7 @@ "Due date" : "Sperdatum", "Description" : "Beskrywing", "Comments" : "Kommentare", + "Select Date" : "Kies Datum", "Modified" : "Gewysig", "Created" : "Geskep", "Save" : "Stoor", diff --git a/l10n/ar.js b/l10n/ar.js index e84a74009..093674894 100644 --- a/l10n/ar.js +++ b/l10n/ar.js @@ -39,6 +39,7 @@ OC.L10N.register( "A PHP extension stopped the file upload" : "اضافة البي اچ بي PHP اوقفت رفع الملف", "Personal planning and team project organization" : "التخطيط الشخصي و تنظيم مشروع الفريق", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "دك (Deck) هو أداة تنظيم باسلوب كانبان (kanban) تهدف إلى التخطيط الشخصي وتنظيم المشروع للفرق مع نيكست كلاود (Nextcloud).\n- 📥 إضافة مهامك إلى البطاقات وترتيبها\n- 📄 كتابة ملاحظات إضافية باستخدام مارك داون (markdown)\n- 🔖 تعيين تسميات لتنظيم أفضل\n- 👥 شارك مع فريقك أو أصدقائك أو عائلتك\n- 📎 إرفاق الملفات وتضمينها بالوصف المستخدم فيه مارك داون (markdown)\n- 💬 ناقش مع فريقك باستخدام التعليقات\n- ⚡ تتبع التغييرات في تيار النشاط\n- 🚀 اجعل مشروعك منظماً", + "Card details" : "تفاصيل البطاقة", "Create new board" : "انشاء لوح جديد", "new board" : "لوح جديد", "Select the board to link to a project" : "تحديد اللوح لربطه بمشروع", @@ -129,7 +130,6 @@ OC.L10N.register( "Assign to me" : "ينسب لي", "Delete card" : "حذف البطاقة", "Move card" : "حرك البطاقة", - "Card details" : "تفاصيل البطاقة", "Move card to another board" : "حرك البطاقة الى لوح اخر", "seconds ago" : "ثوانٍ مضت", "All boards" : "جميع الالواح", diff --git a/l10n/ar.json b/l10n/ar.json index ee04f68e7..8e7449eff 100644 --- a/l10n/ar.json +++ b/l10n/ar.json @@ -37,6 +37,7 @@ "A PHP extension stopped the file upload" : "اضافة البي اچ بي PHP اوقفت رفع الملف", "Personal planning and team project organization" : "التخطيط الشخصي و تنظيم مشروع الفريق", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "دك (Deck) هو أداة تنظيم باسلوب كانبان (kanban) تهدف إلى التخطيط الشخصي وتنظيم المشروع للفرق مع نيكست كلاود (Nextcloud).\n- 📥 إضافة مهامك إلى البطاقات وترتيبها\n- 📄 كتابة ملاحظات إضافية باستخدام مارك داون (markdown)\n- 🔖 تعيين تسميات لتنظيم أفضل\n- 👥 شارك مع فريقك أو أصدقائك أو عائلتك\n- 📎 إرفاق الملفات وتضمينها بالوصف المستخدم فيه مارك داون (markdown)\n- 💬 ناقش مع فريقك باستخدام التعليقات\n- ⚡ تتبع التغييرات في تيار النشاط\n- 🚀 اجعل مشروعك منظماً", + "Card details" : "تفاصيل البطاقة", "Create new board" : "انشاء لوح جديد", "new board" : "لوح جديد", "Select the board to link to a project" : "تحديد اللوح لربطه بمشروع", @@ -127,7 +128,6 @@ "Assign to me" : "ينسب لي", "Delete card" : "حذف البطاقة", "Move card" : "حرك البطاقة", - "Card details" : "تفاصيل البطاقة", "Move card to another board" : "حرك البطاقة الى لوح اخر", "seconds ago" : "ثوانٍ مضت", "All boards" : "جميع الالواح", diff --git a/l10n/bg.js b/l10n/bg.js index 8249891dd..3087b8a0e 100644 --- a/l10n/bg.js +++ b/l10n/bg.js @@ -33,6 +33,7 @@ OC.L10N.register( "Description" : "Описание", "Attachments" : "Прикачени файлове", "Comments" : "Коментари", + "Select Date" : "Изберете дата", "Modified" : "Промяна", "Created" : "Създаден", "Save" : "Запазване", diff --git a/l10n/bg.json b/l10n/bg.json index 52852e986..952123317 100644 --- a/l10n/bg.json +++ b/l10n/bg.json @@ -31,6 +31,7 @@ "Description" : "Описание", "Attachments" : "Прикачени файлове", "Comments" : "Коментари", + "Select Date" : "Изберете дата", "Modified" : "Промяна", "Created" : "Създаден", "Save" : "Запазване", diff --git a/l10n/ca.js b/l10n/ca.js index 9b8fc0922..c0fd933e4 100644 --- a/l10n/ca.js +++ b/l10n/ca.js @@ -67,6 +67,7 @@ OC.L10N.register( "Deck" : "Tauler", "Changes in the Deck app" : "Hi ha canvis a l'aplicació Tauler", "A comment was created on a card" : "S'ha afegit un comentari a una targeta", + "Upcoming cards" : "Properes targetes", "Personal" : "Personal", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La targeta \"%s\" sobre \"%s\" se us ha assignat per %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} us ha assignat la targeta \"%s\" sobre \"%s\".", @@ -98,6 +99,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "No s'ha carregat cap fitxer o la mida del fitxer sobrepassa el màxim de %s", "Personal planning and team project organization" : "Planificació personal i organització de projectes en equip", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Tauler és una eina d'organització a l'estil kanban dirigida a la planificació personal i a l'organització de projectes per equips integrada a Nextcloud.\n\n\n- 📥 Afegiu les tasques en targetes i poseu-les en ordre\n- 📄 Apunteu notes addicionals en markdown\n- 🔖 Assigneu etiquetes per una organització encara millor\n- 👥 Compartiu amb el vostre equip, família o amics\n- 📎 Adjunteu fitxers i encasteu-los en la descripció en markdown\n- 💬 Debateu amb el vostre equip fent servir comentaris\n- ⚡ Mantingueu el seguiment de canvis al flux d'activitat\n- 🚀 Tingueu el vostre projecte organitzat", + "Card details" : "Dades de la targeta", "Create new board" : "Crea un nou tauler", "new board" : "nou tauler", "Select the board to link to a project" : "Selecciona el tauler per enllaçar a un projecte", @@ -129,6 +131,7 @@ OC.L10N.register( "Next 30 days" : "Propers 30 dies", "No due date" : "Sense venciment", "Clear filter" : "Neteja el filtre", + "Hide archived cards" : "Amaga les targetes arxivades", "Show archived cards" : "Mostra les targetes arxivades", "Toggle compact mode" : "Commuta el mode compacte", "Details" : "Detalls", @@ -166,6 +169,8 @@ OC.L10N.register( "Add this attachment" : "Afegeix aquest adjunt", "Delete Attachment" : "Suprimeix l’adjunt", "Restore Attachment" : "Restaura l'adjunt", + "Open in sidebar view" : "Obre a la vista de la barra lateral", + "Open in bigger view" : "Obre a la vista més gran", "Assign a tag to this card…" : "Assigna una etiqueta a aquesta targeta…", "Assign to users" : "Assigna als usuaris", "Assign to users/groups/circles" : "Assigna a usuaris/grups/cercles", @@ -183,6 +188,7 @@ OC.L10N.register( "Attachments" : "Adjunts", "Comments" : "Comentaris", "Choose attachment" : "Triar adjunt", + "Select Date" : "Selecciona la data", "Modified" : "Darrera modificació", "Created" : "Creat", "No comments yet. Begin the discussion!" : "No hi ha comentaris encara. Començar la discussió!", @@ -200,21 +206,21 @@ OC.L10N.register( "Archive card" : "Arxiva la targeta", "Delete card" : "Suprimeix targeta", "Move card" : "Mou la targeta", - "Card details" : "Dades de la targeta", "Move card to another board" : "Mou la targeta a un altre tauler", "Select a list" : "Seleccioneu una llista", "seconds ago" : "fa uns segons", "All boards" : "Tots els taulers", "Archived boards" : "Taulers arxivats", "Shared with you" : "Us han compartit", + "Use modal card view" : "Utilitza la visualització de targetes modals", "Limit deck usage of groups" : "Limitar l'ús del tauler de grups", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitant el Tauler bloquejarà la creació de taulers als usuaris que no són part d'aquests grups. Els usuaris podran seguir treballant en els taulers que hagin estat compartits amb ells.", "New board title" : "Títol del nou tauler", "Edit board" : "Edita el tauler", - "Clone board " : "Clonar tauler", - "Unarchive board " : "Desarxiva tauler", - "Archive board " : "Arxiva tauler", - "Delete board " : "Suprimeix tauler", + "Clone board " : "Clonar tauler ", + "Unarchive board " : "Desarxiva tauler ", + "Archive board " : "Arxiva tauler ", + "Delete board " : "Suprimeix tauler ", "Board details" : "Detalls de la junta", "Board {0} deleted" : "S’ha suprimit el tauler {0}", "An error occurred" : "S'ha produït un error", @@ -225,6 +231,8 @@ OC.L10N.register( "Tomorrow" : "Demà", "This week" : "Aquesta setmana", "No due" : "Sense venciment", + "upcoming cards" : "properes targetes", + "No upcoming cards" : "No hi ha targetes futures", "Link to a board" : "Enllaça a un tauler", "Link to a card" : "Enllaç una targeta", "Something went wrong" : "Alguna cosa ha anat malament", diff --git a/l10n/ca.json b/l10n/ca.json index 26dda8008..a38b0db80 100644 --- a/l10n/ca.json +++ b/l10n/ca.json @@ -65,6 +65,7 @@ "Deck" : "Tauler", "Changes in the Deck app" : "Hi ha canvis a l'aplicació Tauler", "A comment was created on a card" : "S'ha afegit un comentari a una targeta", + "Upcoming cards" : "Properes targetes", "Personal" : "Personal", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La targeta \"%s\" sobre \"%s\" se us ha assignat per %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} us ha assignat la targeta \"%s\" sobre \"%s\".", @@ -96,6 +97,7 @@ "No file uploaded or file size exceeds maximum of %s" : "No s'ha carregat cap fitxer o la mida del fitxer sobrepassa el màxim de %s", "Personal planning and team project organization" : "Planificació personal i organització de projectes en equip", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Tauler és una eina d'organització a l'estil kanban dirigida a la planificació personal i a l'organització de projectes per equips integrada a Nextcloud.\n\n\n- 📥 Afegiu les tasques en targetes i poseu-les en ordre\n- 📄 Apunteu notes addicionals en markdown\n- 🔖 Assigneu etiquetes per una organització encara millor\n- 👥 Compartiu amb el vostre equip, família o amics\n- 📎 Adjunteu fitxers i encasteu-los en la descripció en markdown\n- 💬 Debateu amb el vostre equip fent servir comentaris\n- ⚡ Mantingueu el seguiment de canvis al flux d'activitat\n- 🚀 Tingueu el vostre projecte organitzat", + "Card details" : "Dades de la targeta", "Create new board" : "Crea un nou tauler", "new board" : "nou tauler", "Select the board to link to a project" : "Selecciona el tauler per enllaçar a un projecte", @@ -127,6 +129,7 @@ "Next 30 days" : "Propers 30 dies", "No due date" : "Sense venciment", "Clear filter" : "Neteja el filtre", + "Hide archived cards" : "Amaga les targetes arxivades", "Show archived cards" : "Mostra les targetes arxivades", "Toggle compact mode" : "Commuta el mode compacte", "Details" : "Detalls", @@ -164,6 +167,8 @@ "Add this attachment" : "Afegeix aquest adjunt", "Delete Attachment" : "Suprimeix l’adjunt", "Restore Attachment" : "Restaura l'adjunt", + "Open in sidebar view" : "Obre a la vista de la barra lateral", + "Open in bigger view" : "Obre a la vista més gran", "Assign a tag to this card…" : "Assigna una etiqueta a aquesta targeta…", "Assign to users" : "Assigna als usuaris", "Assign to users/groups/circles" : "Assigna a usuaris/grups/cercles", @@ -181,6 +186,7 @@ "Attachments" : "Adjunts", "Comments" : "Comentaris", "Choose attachment" : "Triar adjunt", + "Select Date" : "Selecciona la data", "Modified" : "Darrera modificació", "Created" : "Creat", "No comments yet. Begin the discussion!" : "No hi ha comentaris encara. Començar la discussió!", @@ -198,21 +204,21 @@ "Archive card" : "Arxiva la targeta", "Delete card" : "Suprimeix targeta", "Move card" : "Mou la targeta", - "Card details" : "Dades de la targeta", "Move card to another board" : "Mou la targeta a un altre tauler", "Select a list" : "Seleccioneu una llista", "seconds ago" : "fa uns segons", "All boards" : "Tots els taulers", "Archived boards" : "Taulers arxivats", "Shared with you" : "Us han compartit", + "Use modal card view" : "Utilitza la visualització de targetes modals", "Limit deck usage of groups" : "Limitar l'ús del tauler de grups", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitant el Tauler bloquejarà la creació de taulers als usuaris que no són part d'aquests grups. Els usuaris podran seguir treballant en els taulers que hagin estat compartits amb ells.", "New board title" : "Títol del nou tauler", "Edit board" : "Edita el tauler", - "Clone board " : "Clonar tauler", - "Unarchive board " : "Desarxiva tauler", - "Archive board " : "Arxiva tauler", - "Delete board " : "Suprimeix tauler", + "Clone board " : "Clonar tauler ", + "Unarchive board " : "Desarxiva tauler ", + "Archive board " : "Arxiva tauler ", + "Delete board " : "Suprimeix tauler ", "Board details" : "Detalls de la junta", "Board {0} deleted" : "S’ha suprimit el tauler {0}", "An error occurred" : "S'ha produït un error", @@ -223,6 +229,8 @@ "Tomorrow" : "Demà", "This week" : "Aquesta setmana", "No due" : "Sense venciment", + "upcoming cards" : "properes targetes", + "No upcoming cards" : "No hi ha targetes futures", "Link to a board" : "Enllaça a un tauler", "Link to a card" : "Enllaç una targeta", "Something went wrong" : "Alguna cosa ha anat malament", diff --git a/l10n/cs.js b/l10n/cs.js index 476da947c..ee4f51f7c 100644 --- a/l10n/cs.js +++ b/l10n/cs.js @@ -99,6 +99,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Nebyl nahrán žádný soubor nebo jeho velikost přesáhla %s", "Personal planning and team project organization" : "Osobní plánování a organizování týmového projektu", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck je nástroj cílený na osobní nebo projektové plánování týmů v Kanban stylu, vestavěný v Nextcloud.\n\n\n- 📥 Zadávejte a uspořádávejte své úkoly do karet\n- 📄 Zapisujte si dodatečné poznámky \n- 🔖 Přiřazujte štítky pro ještě lepší organizaci\n- 👥 Sdílejte se svým týmem, přáteli nebo rodinou\n- 🚀 Dostaňte svůj projekt pod kontrolu", + "Card details" : "Podrobnosti o kartě", "Create new board" : "Vytvořit novou tabuli", "new board" : "nová tabule", "Select the board to link to a project" : "Vyberte tabuli kterou propojit s projektem", @@ -130,6 +131,7 @@ OC.L10N.register( "Next 30 days" : "Příštích 30 dnů", "No due date" : "Žádný termín", "Clear filter" : "Vyčistit filtr", + "Hide archived cards" : "Skrýt archivované karty", "Show archived cards" : "Zobrazit archivované karty", "Toggle compact mode" : "Vyp/zap. kompaktní režim", "Details" : "Podrobnosti", @@ -158,6 +160,7 @@ OC.L10N.register( "Add card" : "Přidat kartu", "Archive all cards in this list" : "Archivovat všechny karty v tomto seznamu", "Add a new card" : "Přidat novou kartu", + "Card name" : "Název karty", "Edit" : "Upravit", "Add a new tag" : "Přidat nový štítek", "title and color value must be provided" : "je třeba zadat nadpis a zvolit barvu", @@ -167,6 +170,8 @@ OC.L10N.register( "Add this attachment" : "Přidat tuto přílohu", "Delete Attachment" : "Smazat přílohu", "Restore Attachment" : "Obnovit přílohu", + "Open in sidebar view" : "Otevřít v zobrazení v postranním panelu", + "Open in bigger view" : "Otevřít ve větším zobrazení", "Assign a tag to this card…" : "Přiřadit této kartě štítek…", "Assign to users" : "Přiřadit k uživatelům", "Assign to users/groups/circles" : "Přiřadit uživatelům/skupinám/okruhům", @@ -184,6 +189,7 @@ OC.L10N.register( "Attachments" : "Přílohy", "Comments" : "Komentáře", "Choose attachment" : "Zvolte přílohu", + "Select Date" : "Vybrat datum", "Modified" : "Změněno", "Created" : "Vytvořeno", "No comments yet. Begin the discussion!" : "Zatím bez komentářů. Zahajte diskuzi!", @@ -201,13 +207,13 @@ OC.L10N.register( "Archive card" : "Archivovat kartu", "Delete card" : "Smazat kartu", "Move card" : "Přesunout kartu", - "Card details" : "Podrobnosti o kartě", "Move card to another board" : "Přesunout kartu na jinou tabuli", "Select a list" : "Vyberte sloupec", "seconds ago" : "před několika sekundami", "All boards" : "Všechny tabule", "Archived boards" : "Archivované tabule", "Shared with you" : "Sdíleno s vámi", + "Use modal card view" : "Použít modální zobrazení karty", "Limit deck usage of groups" : "Omezit využití deck na skupiny", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Omezení nastavené pro Deck brání uživatelům, kteří nejsou součástí těchto skupin, ve vytváření vlastních tabulí. Nicméně i tak ale pořád budou moci pracovat na tabulích, které jsou jim nasdíleny.", "New board title" : "Název nové tabule", diff --git a/l10n/cs.json b/l10n/cs.json index fc2452470..524a5926d 100644 --- a/l10n/cs.json +++ b/l10n/cs.json @@ -97,6 +97,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Nebyl nahrán žádný soubor nebo jeho velikost přesáhla %s", "Personal planning and team project organization" : "Osobní plánování a organizování týmového projektu", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck je nástroj cílený na osobní nebo projektové plánování týmů v Kanban stylu, vestavěný v Nextcloud.\n\n\n- 📥 Zadávejte a uspořádávejte své úkoly do karet\n- 📄 Zapisujte si dodatečné poznámky \n- 🔖 Přiřazujte štítky pro ještě lepší organizaci\n- 👥 Sdílejte se svým týmem, přáteli nebo rodinou\n- 🚀 Dostaňte svůj projekt pod kontrolu", + "Card details" : "Podrobnosti o kartě", "Create new board" : "Vytvořit novou tabuli", "new board" : "nová tabule", "Select the board to link to a project" : "Vyberte tabuli kterou propojit s projektem", @@ -128,6 +129,7 @@ "Next 30 days" : "Příštích 30 dnů", "No due date" : "Žádný termín", "Clear filter" : "Vyčistit filtr", + "Hide archived cards" : "Skrýt archivované karty", "Show archived cards" : "Zobrazit archivované karty", "Toggle compact mode" : "Vyp/zap. kompaktní režim", "Details" : "Podrobnosti", @@ -156,6 +158,7 @@ "Add card" : "Přidat kartu", "Archive all cards in this list" : "Archivovat všechny karty v tomto seznamu", "Add a new card" : "Přidat novou kartu", + "Card name" : "Název karty", "Edit" : "Upravit", "Add a new tag" : "Přidat nový štítek", "title and color value must be provided" : "je třeba zadat nadpis a zvolit barvu", @@ -165,6 +168,8 @@ "Add this attachment" : "Přidat tuto přílohu", "Delete Attachment" : "Smazat přílohu", "Restore Attachment" : "Obnovit přílohu", + "Open in sidebar view" : "Otevřít v zobrazení v postranním panelu", + "Open in bigger view" : "Otevřít ve větším zobrazení", "Assign a tag to this card…" : "Přiřadit této kartě štítek…", "Assign to users" : "Přiřadit k uživatelům", "Assign to users/groups/circles" : "Přiřadit uživatelům/skupinám/okruhům", @@ -182,6 +187,7 @@ "Attachments" : "Přílohy", "Comments" : "Komentáře", "Choose attachment" : "Zvolte přílohu", + "Select Date" : "Vybrat datum", "Modified" : "Změněno", "Created" : "Vytvořeno", "No comments yet. Begin the discussion!" : "Zatím bez komentářů. Zahajte diskuzi!", @@ -199,13 +205,13 @@ "Archive card" : "Archivovat kartu", "Delete card" : "Smazat kartu", "Move card" : "Přesunout kartu", - "Card details" : "Podrobnosti o kartě", "Move card to another board" : "Přesunout kartu na jinou tabuli", "Select a list" : "Vyberte sloupec", "seconds ago" : "před několika sekundami", "All boards" : "Všechny tabule", "Archived boards" : "Archivované tabule", "Shared with you" : "Sdíleno s vámi", + "Use modal card view" : "Použít modální zobrazení karty", "Limit deck usage of groups" : "Omezit využití deck na skupiny", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Omezení nastavené pro Deck brání uživatelům, kteří nejsou součástí těchto skupin, ve vytváření vlastních tabulí. Nicméně i tak ale pořád budou moci pracovat na tabulích, které jsou jim nasdíleny.", "New board title" : "Název nové tabule", diff --git a/l10n/cy_GB.js b/l10n/cy_GB.js index 433fba8d4..3474a5517 100644 --- a/l10n/cy_GB.js +++ b/l10n/cy_GB.js @@ -17,6 +17,7 @@ OC.L10N.register( "Title" : "Teitl", "Upload attachment" : "Llwytho atodiad", "Description" : "Disgrifiad", + "Select Date" : "Dewis Dyddiad", "Modified" : "Addaswyd", "Save" : "Cadw", "Update" : "Diweddaru", diff --git a/l10n/cy_GB.json b/l10n/cy_GB.json index 1b96e6a73..8123c785c 100644 --- a/l10n/cy_GB.json +++ b/l10n/cy_GB.json @@ -15,6 +15,7 @@ "Title" : "Teitl", "Upload attachment" : "Llwytho atodiad", "Description" : "Disgrifiad", + "Select Date" : "Dewis Dyddiad", "Modified" : "Addaswyd", "Save" : "Cadw", "Update" : "Diweddaru", diff --git a/l10n/da.js b/l10n/da.js index d5199d054..0291ec5fd 100644 --- a/l10n/da.js +++ b/l10n/da.js @@ -21,6 +21,7 @@ OC.L10N.register( "File already exists" : "Fil findes allerede", "Do you want to overwrite it?" : "Vil du overskrive den?", "Drop your files to upload" : "Drop dine filer for at uploade", + "Hide archived cards" : "Skjul arkiverede kort", "Show archived cards" : "Vis arkiverede kort", "Details" : "Detaljer", "Sharing" : "Deling", @@ -41,6 +42,7 @@ OC.L10N.register( "Formatting help" : "Hjælp til formatering", "Attachments" : "Vedhæftede filer", "Comments" : "Kommentarer", + "Select Date" : "Vælg dato", "Modified" : "Ændret", "Created" : "Oprettet", "Save" : "Gem", diff --git a/l10n/da.json b/l10n/da.json index 89f3815a0..d866d9070 100644 --- a/l10n/da.json +++ b/l10n/da.json @@ -19,6 +19,7 @@ "File already exists" : "Fil findes allerede", "Do you want to overwrite it?" : "Vil du overskrive den?", "Drop your files to upload" : "Drop dine filer for at uploade", + "Hide archived cards" : "Skjul arkiverede kort", "Show archived cards" : "Vis arkiverede kort", "Details" : "Detaljer", "Sharing" : "Deling", @@ -39,6 +40,7 @@ "Formatting help" : "Hjælp til formatering", "Attachments" : "Vedhæftede filer", "Comments" : "Kommentarer", + "Select Date" : "Vælg dato", "Modified" : "Ændret", "Created" : "Oprettet", "Save" : "Gem", diff --git a/l10n/de.js b/l10n/de.js index cef28b324..1d27ff211 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -67,6 +67,7 @@ OC.L10N.register( "Deck" : "Deck", "Changes in the Deck app" : "Änderungen in der Deck-App", "A comment was created on a card" : "Ein Kommentar zu einer Karte wurde erstellt", + "Upcoming cards" : "Kommende Karten", "Personal" : "Persönlich", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Die Karte \"%s\" auf \"%s\" wurde Dir von %s zugewiesen.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} hat Dir die Karte \"%s\" auf \"%s\" zugewiesen.", @@ -98,6 +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üge Deine Aufgaben zu den Karten hinzu und ordne diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Vergabe von Schlagworten für noch bessere Organisation\n- 👥 Teile mit Deinem Team, Freunden oder der Familie\n- 📎 Füge Dateien hinzu und verwende diese in Deinen Markdown-Beschreibungen\n- 💬 Diskutiere mit Deinem Team mit Kommentaren\n- ⚡ Behalte Überblick über Änderungen mit dem Aktivitäten-Stream\n- 🚀 Organisiere Dein Projekt", + "Card details" : "Kartendetails", "Create new board" : "Neues Board", "new board" : "Neues Board", "Select the board to link to a project" : "Wähle ein Board aus, um dieses mit einem Projekt zu verknüpfen", @@ -129,6 +131,7 @@ OC.L10N.register( "Next 30 days" : "Die nächsten 30 Tage", "No due date" : "Kein Fälligkeitsdatum", "Clear filter" : "Filter zurücksetzen", + "Hide archived cards" : "Archivierte Karten ausblenden", "Show archived cards" : "Archivierte Karten anzeigen", "Toggle compact mode" : "Kompaktmodus umschalten", "Details" : "Details", @@ -157,6 +160,7 @@ OC.L10N.register( "Add card" : "Karte hinzufügen", "Archive all cards in this list" : "Alle Karten in dieser Liste archivieren", "Add a new card" : "Neue Karte hinzufügen", + "Card name" : "Kartenname", "Edit" : "Bearbeiten", "Add a new tag" : "Neues Schlagwort hinzufügen", "title and color value must be provided" : "Titel und Farbwert müssen angegeben werden", @@ -166,6 +170,8 @@ OC.L10N.register( "Add this attachment" : "Diesen Anhang anhängen", "Delete Attachment" : "Anhang löschen", "Restore Attachment" : "Anhang wiederherstellen", + "Open in sidebar view" : "In Seitenleiste öffnen", + "Open in bigger view" : "In größerer Ansicht öffnen", "Assign a tag to this card…" : "Dieser Karte ein Schlagwort zuweisen…", "Assign to users" : "Benutzern zuweisen", "Assign to users/groups/circles" : "An Benutzer, Gruppen oder Kreise zuweisen", @@ -183,6 +189,7 @@ OC.L10N.register( "Attachments" : "Anhänge", "Comments" : "Kommentare", "Choose attachment" : "Anhang auswählen", + "Select Date" : "Datum auswählen", "Modified" : "Geändert", "Created" : "Erstellt", "No comments yet. Begin the discussion!" : "Bislang keine Kommentare. Beginne die Diskussion!", @@ -200,13 +207,13 @@ OC.L10N.register( "Archive card" : "Karte archivieren", "Delete card" : "Karte löschen", "Move card" : "Karte verschieben", - "Card details" : "Kartendetails", "Move card to another board" : "Karte auf ein anderes Board verschieben", "Select a list" : "Eine Liste auswählen", "seconds ago" : "Gerade eben", "All boards" : "Alle Boards", "Archived boards" : "Archivierte Boards", "Shared with you" : "Mit Dir geteilt", + "Use modal card view" : "Modale Kartenansicht verwenden", "Limit deck usage of groups" : "Nutzung von Deck auf Gruppen einschränken", "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." : "Durch die Begrenzung von Deck werden Benutzer, die nicht Teil dieser Gruppen sind, daran gehindert, eigene Boards zu erstellen. Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden.", "New board title" : "Board-Titel", @@ -225,6 +232,8 @@ OC.L10N.register( "Tomorrow" : "Morgen", "This week" : "Diese Woche", "No due" : "Kein Fälligkeitsdatum", + "upcoming cards" : "Kommende Karten", + "No upcoming cards" : "Keine kommenden Karten", "Link to a board" : "Mit einem Board verknüpfen", "Link to a card" : "Mit einer Karte verknüpfen", "Something went wrong" : "Etwas ist schiefgelaufen", diff --git a/l10n/de.json b/l10n/de.json index d161e9a1c..e3766cc66 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -65,6 +65,7 @@ "Deck" : "Deck", "Changes in the Deck app" : "Änderungen in der Deck-App", "A comment was created on a card" : "Ein Kommentar zu einer Karte wurde erstellt", + "Upcoming cards" : "Kommende Karten", "Personal" : "Persönlich", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Die Karte \"%s\" auf \"%s\" wurde Dir von %s zugewiesen.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} hat Dir die Karte \"%s\" auf \"%s\" zugewiesen.", @@ -96,6 +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üge Deine Aufgaben zu den Karten hinzu und ordne diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Vergabe von Schlagworten für noch bessere Organisation\n- 👥 Teile mit Deinem Team, Freunden oder der Familie\n- 📎 Füge Dateien hinzu und verwende diese in Deinen Markdown-Beschreibungen\n- 💬 Diskutiere mit Deinem Team mit Kommentaren\n- ⚡ Behalte Überblick über Änderungen mit dem Aktivitäten-Stream\n- 🚀 Organisiere Dein Projekt", + "Card details" : "Kartendetails", "Create new board" : "Neues Board", "new board" : "Neues Board", "Select the board to link to a project" : "Wähle ein Board aus, um dieses mit einem Projekt zu verknüpfen", @@ -127,6 +129,7 @@ "Next 30 days" : "Die nächsten 30 Tage", "No due date" : "Kein Fälligkeitsdatum", "Clear filter" : "Filter zurücksetzen", + "Hide archived cards" : "Archivierte Karten ausblenden", "Show archived cards" : "Archivierte Karten anzeigen", "Toggle compact mode" : "Kompaktmodus umschalten", "Details" : "Details", @@ -155,6 +158,7 @@ "Add card" : "Karte hinzufügen", "Archive all cards in this list" : "Alle Karten in dieser Liste archivieren", "Add a new card" : "Neue Karte hinzufügen", + "Card name" : "Kartenname", "Edit" : "Bearbeiten", "Add a new tag" : "Neues Schlagwort hinzufügen", "title and color value must be provided" : "Titel und Farbwert müssen angegeben werden", @@ -164,6 +168,8 @@ "Add this attachment" : "Diesen Anhang anhängen", "Delete Attachment" : "Anhang löschen", "Restore Attachment" : "Anhang wiederherstellen", + "Open in sidebar view" : "In Seitenleiste öffnen", + "Open in bigger view" : "In größerer Ansicht öffnen", "Assign a tag to this card…" : "Dieser Karte ein Schlagwort zuweisen…", "Assign to users" : "Benutzern zuweisen", "Assign to users/groups/circles" : "An Benutzer, Gruppen oder Kreise zuweisen", @@ -181,6 +187,7 @@ "Attachments" : "Anhänge", "Comments" : "Kommentare", "Choose attachment" : "Anhang auswählen", + "Select Date" : "Datum auswählen", "Modified" : "Geändert", "Created" : "Erstellt", "No comments yet. Begin the discussion!" : "Bislang keine Kommentare. Beginne die Diskussion!", @@ -198,13 +205,13 @@ "Archive card" : "Karte archivieren", "Delete card" : "Karte löschen", "Move card" : "Karte verschieben", - "Card details" : "Kartendetails", "Move card to another board" : "Karte auf ein anderes Board verschieben", "Select a list" : "Eine Liste auswählen", "seconds ago" : "Gerade eben", "All boards" : "Alle Boards", "Archived boards" : "Archivierte Boards", "Shared with you" : "Mit Dir geteilt", + "Use modal card view" : "Modale Kartenansicht verwenden", "Limit deck usage of groups" : "Nutzung von Deck auf Gruppen einschränken", "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." : "Durch die Begrenzung von Deck werden Benutzer, die nicht Teil dieser Gruppen sind, daran gehindert, eigene Boards zu erstellen. Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden.", "New board title" : "Board-Titel", @@ -223,6 +230,8 @@ "Tomorrow" : "Morgen", "This week" : "Diese Woche", "No due" : "Kein Fälligkeitsdatum", + "upcoming cards" : "Kommende Karten", + "No upcoming cards" : "Keine kommenden Karten", "Link to a board" : "Mit einem Board verknüpfen", "Link to a card" : "Mit einer Karte verknüpfen", "Something went wrong" : "Etwas ist schiefgelaufen", diff --git a/l10n/de_DE.js b/l10n/de_DE.js index efe99df99..1f410ad1a 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -67,6 +67,7 @@ OC.L10N.register( "Deck" : "Deck", "Changes in the Deck app" : "Änderungen in der Deck-App", "A comment was created on a card" : "Ein Kommentar zu einer Karte wurde erstellt", + "Upcoming cards" : "Kommende Karten", "Personal" : "Persönlich", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Die Karte \"%s\" auf \"%s\" wurde Ihnen von %s zugewiesen.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} hat Ihnen die Karte \"%s\" auf \"%s\" zugewiesen.", @@ -98,6 +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- 🔖 Zuweisung 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" : "Kartendetails", "Create new board" : "Neues Board", "new board" : "Neues Board", "Select the board to link to a project" : "Wählen Sie ein Board aus, um dieses mit einem Projekt zu verknüpfen", @@ -129,6 +131,7 @@ OC.L10N.register( "Next 30 days" : "Die nächsten 30 Tage", "No due date" : "Kein Fälligkeitsdatum", "Clear filter" : "Filter zurücksetzen", + "Hide archived cards" : "Archivierte Karten ausblenden", "Show archived cards" : "Archivierte Karten anzeigen", "Toggle compact mode" : "Kompaktmodus umschalten", "Details" : "Details", @@ -157,6 +160,7 @@ OC.L10N.register( "Add card" : "Karte hinzufügen", "Archive all cards in this list" : "Alle Karten in dieser Liste archivieren", "Add a new card" : "Neue Karte hinzufügen", + "Card name" : "Kartenname", "Edit" : "Bearbeiten", "Add a new tag" : "Neues Schlagwort hinzufügen", "title and color value must be provided" : "Titel und Farbwert müssen angegeben werden", @@ -166,6 +170,8 @@ OC.L10N.register( "Add this attachment" : "Diesen Anhang anhängen", "Delete Attachment" : "Anhang löschen", "Restore Attachment" : "Anhang wiederherstellen", + "Open in sidebar view" : "In Seitenleiste öffnen", + "Open in bigger view" : "In größerer Ansicht öffnen", "Assign a tag to this card…" : "Dieser Karte ein Schlagwort zuweisen…", "Assign to users" : "Benutzern zuweisen", "Assign to users/groups/circles" : "An Benutzer, Gruppen oder Kreise zuweisen", @@ -183,6 +189,7 @@ OC.L10N.register( "Attachments" : "Anhänge", "Comments" : "Kommentare", "Choose attachment" : "Anhang auswählen", + "Select Date" : "Datum auswählen", "Modified" : "Geändert", "Created" : "Erstellt", "No comments yet. Begin the discussion!" : "Bislang keine Kommentare. Beginnen Sie die Diskussion!", @@ -200,13 +207,13 @@ OC.L10N.register( "Archive card" : "Karte archivieren", "Delete card" : "Karte löschen", "Move card" : "Karte verschieben", - "Card details" : "Kartendetails", "Move card to another board" : "Karte auf ein anderes Board verschieben", "Select a list" : "Eine Liste auswählen", "seconds ago" : "Gerade eben", "All boards" : "Alle Boards", "Archived boards" : "Archivierte Boards", "Shared with you" : "Mit Ihnen geteilt", + "Use modal card view" : "Modale Kartenansicht verwenden", "Limit deck usage of groups" : "Nutzung von Deck auf Gruppen einschränken", "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." : "Durch die Begrenzung von Deck werden Benutzer, die nicht Teil dieser Gruppen sind, daran gehindert, eigene Boards zu erstellen. Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden.", "New board title" : "Board-Titel", @@ -225,6 +232,8 @@ OC.L10N.register( "Tomorrow" : "Morgen", "This week" : "Diese Woche", "No due" : "Kein Fälligkeitsdatum", + "upcoming cards" : "Kommende Karten", + "No upcoming cards" : "Keine kommenden Karten", "Link to a board" : "Mit einem Board verknüpfen", "Link to a card" : "Mit einer Karte verknüpfen", "Something went wrong" : "Etwas ist schiefgelaufen", diff --git a/l10n/de_DE.json b/l10n/de_DE.json index 9ccb31722..3a27e7397 100644 --- a/l10n/de_DE.json +++ b/l10n/de_DE.json @@ -65,6 +65,7 @@ "Deck" : "Deck", "Changes in the Deck app" : "Änderungen in der Deck-App", "A comment was created on a card" : "Ein Kommentar zu einer Karte wurde erstellt", + "Upcoming cards" : "Kommende Karten", "Personal" : "Persönlich", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Die Karte \"%s\" auf \"%s\" wurde Ihnen von %s zugewiesen.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} hat Ihnen die Karte \"%s\" auf \"%s\" zugewiesen.", @@ -96,6 +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- 🔖 Zuweisung 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" : "Kartendetails", "Create new board" : "Neues Board", "new board" : "Neues Board", "Select the board to link to a project" : "Wählen Sie ein Board aus, um dieses mit einem Projekt zu verknüpfen", @@ -127,6 +129,7 @@ "Next 30 days" : "Die nächsten 30 Tage", "No due date" : "Kein Fälligkeitsdatum", "Clear filter" : "Filter zurücksetzen", + "Hide archived cards" : "Archivierte Karten ausblenden", "Show archived cards" : "Archivierte Karten anzeigen", "Toggle compact mode" : "Kompaktmodus umschalten", "Details" : "Details", @@ -155,6 +158,7 @@ "Add card" : "Karte hinzufügen", "Archive all cards in this list" : "Alle Karten in dieser Liste archivieren", "Add a new card" : "Neue Karte hinzufügen", + "Card name" : "Kartenname", "Edit" : "Bearbeiten", "Add a new tag" : "Neues Schlagwort hinzufügen", "title and color value must be provided" : "Titel und Farbwert müssen angegeben werden", @@ -164,6 +168,8 @@ "Add this attachment" : "Diesen Anhang anhängen", "Delete Attachment" : "Anhang löschen", "Restore Attachment" : "Anhang wiederherstellen", + "Open in sidebar view" : "In Seitenleiste öffnen", + "Open in bigger view" : "In größerer Ansicht öffnen", "Assign a tag to this card…" : "Dieser Karte ein Schlagwort zuweisen…", "Assign to users" : "Benutzern zuweisen", "Assign to users/groups/circles" : "An Benutzer, Gruppen oder Kreise zuweisen", @@ -181,6 +187,7 @@ "Attachments" : "Anhänge", "Comments" : "Kommentare", "Choose attachment" : "Anhang auswählen", + "Select Date" : "Datum auswählen", "Modified" : "Geändert", "Created" : "Erstellt", "No comments yet. Begin the discussion!" : "Bislang keine Kommentare. Beginnen Sie die Diskussion!", @@ -198,13 +205,13 @@ "Archive card" : "Karte archivieren", "Delete card" : "Karte löschen", "Move card" : "Karte verschieben", - "Card details" : "Kartendetails", "Move card to another board" : "Karte auf ein anderes Board verschieben", "Select a list" : "Eine Liste auswählen", "seconds ago" : "Gerade eben", "All boards" : "Alle Boards", "Archived boards" : "Archivierte Boards", "Shared with you" : "Mit Ihnen geteilt", + "Use modal card view" : "Modale Kartenansicht verwenden", "Limit deck usage of groups" : "Nutzung von Deck auf Gruppen einschränken", "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." : "Durch die Begrenzung von Deck werden Benutzer, die nicht Teil dieser Gruppen sind, daran gehindert, eigene Boards zu erstellen. Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden.", "New board title" : "Board-Titel", @@ -223,6 +230,8 @@ "Tomorrow" : "Morgen", "This week" : "Diese Woche", "No due" : "Kein Fälligkeitsdatum", + "upcoming cards" : "Kommende Karten", + "No upcoming cards" : "Keine kommenden Karten", "Link to a board" : "Mit einem Board verknüpfen", "Link to a card" : "Mit einer Karte verknüpfen", "Something went wrong" : "Etwas ist schiefgelaufen", diff --git a/l10n/el.js b/l10n/el.js index 537f58907..4a15a6c2e 100644 --- a/l10n/el.js +++ b/l10n/el.js @@ -98,6 +98,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Δεν μεταφορτώθηκε αρχείο ή το μέγεθος αρχείου υπερβαίνει το μέγιστο %s", "Personal planning and team project organization" : "Προσωπικός σχεδιασμός και ομαδική οργάνωση", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Το Deck είναι ένα εργαλείο οργάνωσης τύπου kanban με στόχο τον προσωπικό προγραμματισμό και την ομαδική οργάνωση για ομάδες που έχουν ενσωματωθεί στο Nextcloud.\n\n\n- 📥 Προσθέστε τις εργασίες σας στις καρτέλες και βάλτε τες στη σειρά\n- 📄 Γράψτε τις πρόσθετες σημειώσεις\n- 🔖 Αντιστοιχίστε τις ετικέτες για ακόμη καλύτερη οργάνωση\n- 👥 Μοιραστείτε με την ομάδα, φίλους ή την οικογένειά σας\n- 📎 Συνδέστε αρχεία και ενσωματώστε τα στην περιγραφή\n- 💬 Συζητήστε με την ομάδα σας χρησιμοποιώντας σχόλια\n- ⚡ Παρακολουθήστε τις αλλαγές στη ροή δραστηριοτήτων\n- 🚀 Έχετε τα όλα οργανωμένα", + "Card details" : "Λεπτομέρειες καρτέλας", "Create new board" : "Δημιουργία νέου πίνακα", "new board" : "νέος πίνακας", "Select the board to link to a project" : "Επιλέξτε πίνακα και συνδέστε τον σε έργο", @@ -129,6 +130,7 @@ OC.L10N.register( "Next 30 days" : "Επόμενες 30 ημέρες", "No due date" : "Χωρίς ημερομηνία λήξης", "Clear filter" : "Εκκαθάριση φίλτρου", + "Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν", "Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν", "Toggle compact mode" : "Εναλλαγή λειτουργίας μικρού μεγέθους", "Details" : "Λεπτομέρειες", @@ -183,6 +185,7 @@ OC.L10N.register( "Attachments" : "Συνημμένα", "Comments" : "Σχόλια", "Choose attachment" : "Επιλογή συνημμένου", + "Select Date" : "Επέλεξε Ημέρα", "Modified" : "Τροποποιήθηκε", "Created" : "Δημιουργήθηκε", "No comments yet. Begin the discussion!" : "Χωρίς σχόλια ακόμη. Ξεκινήστε την συζήτηση!", @@ -200,7 +203,6 @@ OC.L10N.register( "Archive card" : "Αρχειοθέτηση κάρτας", "Delete card" : "Διαγραφή κάρτας", "Move card" : "Μετακίνηση κάρτας", - "Card details" : "Λεπτομέρειες καρτέλας", "Move card to another board" : "Μετακίνηση καρτέλας σε άλλο πίνακα", "Select a list" : "Επιλέξτε μια λίστα", "seconds ago" : " δευτερόλεπτα πριν ", diff --git a/l10n/el.json b/l10n/el.json index ce654c2a3..4af1e4d58 100644 --- a/l10n/el.json +++ b/l10n/el.json @@ -96,6 +96,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Δεν μεταφορτώθηκε αρχείο ή το μέγεθος αρχείου υπερβαίνει το μέγιστο %s", "Personal planning and team project organization" : "Προσωπικός σχεδιασμός και ομαδική οργάνωση", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Το Deck είναι ένα εργαλείο οργάνωσης τύπου kanban με στόχο τον προσωπικό προγραμματισμό και την ομαδική οργάνωση για ομάδες που έχουν ενσωματωθεί στο Nextcloud.\n\n\n- 📥 Προσθέστε τις εργασίες σας στις καρτέλες και βάλτε τες στη σειρά\n- 📄 Γράψτε τις πρόσθετες σημειώσεις\n- 🔖 Αντιστοιχίστε τις ετικέτες για ακόμη καλύτερη οργάνωση\n- 👥 Μοιραστείτε με την ομάδα, φίλους ή την οικογένειά σας\n- 📎 Συνδέστε αρχεία και ενσωματώστε τα στην περιγραφή\n- 💬 Συζητήστε με την ομάδα σας χρησιμοποιώντας σχόλια\n- ⚡ Παρακολουθήστε τις αλλαγές στη ροή δραστηριοτήτων\n- 🚀 Έχετε τα όλα οργανωμένα", + "Card details" : "Λεπτομέρειες καρτέλας", "Create new board" : "Δημιουργία νέου πίνακα", "new board" : "νέος πίνακας", "Select the board to link to a project" : "Επιλέξτε πίνακα και συνδέστε τον σε έργο", @@ -127,6 +128,7 @@ "Next 30 days" : "Επόμενες 30 ημέρες", "No due date" : "Χωρίς ημερομηνία λήξης", "Clear filter" : "Εκκαθάριση φίλτρου", + "Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν", "Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν", "Toggle compact mode" : "Εναλλαγή λειτουργίας μικρού μεγέθους", "Details" : "Λεπτομέρειες", @@ -181,6 +183,7 @@ "Attachments" : "Συνημμένα", "Comments" : "Σχόλια", "Choose attachment" : "Επιλογή συνημμένου", + "Select Date" : "Επέλεξε Ημέρα", "Modified" : "Τροποποιήθηκε", "Created" : "Δημιουργήθηκε", "No comments yet. Begin the discussion!" : "Χωρίς σχόλια ακόμη. Ξεκινήστε την συζήτηση!", @@ -198,7 +201,6 @@ "Archive card" : "Αρχειοθέτηση κάρτας", "Delete card" : "Διαγραφή κάρτας", "Move card" : "Μετακίνηση κάρτας", - "Card details" : "Λεπτομέρειες καρτέλας", "Move card to another board" : "Μετακίνηση καρτέλας σε άλλο πίνακα", "Select a list" : "Επιλέξτε μια λίστα", "seconds ago" : " δευτερόλεπτα πριν ", diff --git a/l10n/en_GB.js b/l10n/en_GB.js index 41ac00a51..6814a4c2e 100644 --- a/l10n/en_GB.js +++ b/l10n/en_GB.js @@ -24,6 +24,7 @@ OC.L10N.register( "File already exists" : "File already exists", "Do you want to overwrite it?" : "Do you want to overwrite it?", "Filter by tag" : "Filter by tag", + "Hide archived cards" : "Hide archived cards", "Show archived cards" : "Show archived cards", "Details" : "Details", "Sharing" : "Sharing", diff --git a/l10n/en_GB.json b/l10n/en_GB.json index 0c1a26df1..8b88fef16 100644 --- a/l10n/en_GB.json +++ b/l10n/en_GB.json @@ -22,6 +22,7 @@ "File already exists" : "File already exists", "Do you want to overwrite it?" : "Do you want to overwrite it?", "Filter by tag" : "Filter by tag", + "Hide archived cards" : "Hide archived cards", "Show archived cards" : "Show archived cards", "Details" : "Details", "Sharing" : "Sharing", diff --git a/l10n/eo.js b/l10n/eo.js index 5896b7e3f..d661382b0 100644 --- a/l10n/eo.js +++ b/l10n/eo.js @@ -79,6 +79,7 @@ OC.L10N.register( "Cancel" : "Nuligi", "File already exists" : "La dosiero jam ekzistas", "Archived cards" : "Arĥivigitaj kartoj", + "Hide archived cards" : "Kaŝi arĥivigitajn kartojn", "Show archived cards" : "Montri arĥivigitajn kartojn", "Toggle compact mode" : "Baskuligi densigan vidon", "Details" : "Detaloj", @@ -103,6 +104,7 @@ OC.L10N.register( "Formatting help" : "Helpo pri tekstaranĝo", "Attachments" : "Dosieraj aldonaĵoj", "Comments" : "Komentoj", + "Select Date" : "Elekti daton", "Modified" : "Modifita", "Created" : "Kreita", "Save" : "Konservi", diff --git a/l10n/eo.json b/l10n/eo.json index c2a0ba1c3..68c7e0af7 100644 --- a/l10n/eo.json +++ b/l10n/eo.json @@ -77,6 +77,7 @@ "Cancel" : "Nuligi", "File already exists" : "La dosiero jam ekzistas", "Archived cards" : "Arĥivigitaj kartoj", + "Hide archived cards" : "Kaŝi arĥivigitajn kartojn", "Show archived cards" : "Montri arĥivigitajn kartojn", "Toggle compact mode" : "Baskuligi densigan vidon", "Details" : "Detaloj", @@ -101,6 +102,7 @@ "Formatting help" : "Helpo pri tekstaranĝo", "Attachments" : "Dosieraj aldonaĵoj", "Comments" : "Komentoj", + "Select Date" : "Elekti daton", "Modified" : "Modifita", "Created" : "Kreita", "Save" : "Konservi", diff --git a/l10n/es.js b/l10n/es.js index cdb53077a..a819912a6 100644 --- a/l10n/es.js +++ b/l10n/es.js @@ -98,6 +98,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "No se ha subido ningún archivo, o el tamaño del archivo excede el máximo de %s", "Personal planning and team project organization" : "Planificación personal y organización de proyecto de equipo", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck es una herramienta de organización de estilo kanban dirigida a la planificación personal y la organización de proyectos para equipos integrados con Nextcloud.\n\n\n- 📥 Agrega tus tareas a las tarjetas y ordénalas.\n- 📄 Escriba notas adicionales\n- 🔖 Asignar etiquetas para una organización mejor\n- 👥 Comparte con tu equipo, amigos o familia.\n- 📎 Adjuntar archivos e incrustarlos en su descripción\n- 💬 Discuta con su equipo usando comentarios.\n- ⚡ Mantenga un registro de los cambios en el flujo de actividad\n- 🚀 Organiza tu proyecto", + "Card details" : "Detalles de la tarjeta", "Create new board" : "Crear nuevo tablero", "new board" : "nuevo tablero", "Select the board to link to a project" : "Selecciona el tablero que enlazar a un proyecto", @@ -129,6 +130,7 @@ OC.L10N.register( "Next 30 days" : "Siguientes 30 días", "No due date" : "Sin fecha de vencimiento", "Clear filter" : "Borrar filtro", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Toggle compact mode" : "Mostrar/ocultar modo compacto", "Details" : "Detalles", @@ -183,6 +185,7 @@ OC.L10N.register( "Attachments" : "Adjuntos", "Comments" : "Comentarios", "Choose attachment" : "Escoger adjunto", + "Select Date" : "Seleccione la fecha", "Modified" : "Modificado", "Created" : "Creado", "No comments yet. Begin the discussion!" : "Todavía no hay comentarios. ¡Comienza la discusión!", @@ -200,7 +203,6 @@ OC.L10N.register( "Archive card" : "Archivar tarjeta", "Delete card" : "Eliminar tarjeta", "Move card" : "Mover tarjeta", - "Card details" : "Detalles de la tarjeta", "Move card to another board" : "Mover la tarjeta a otro tablero", "Select a list" : "Seleccionar una lista", "seconds ago" : "hace unos segundos", diff --git a/l10n/es.json b/l10n/es.json index c2d46806b..4fda321f2 100644 --- a/l10n/es.json +++ b/l10n/es.json @@ -96,6 +96,7 @@ "No file uploaded or file size exceeds maximum of %s" : "No se ha subido ningún archivo, o el tamaño del archivo excede el máximo de %s", "Personal planning and team project organization" : "Planificación personal y organización de proyecto de equipo", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck es una herramienta de organización de estilo kanban dirigida a la planificación personal y la organización de proyectos para equipos integrados con Nextcloud.\n\n\n- 📥 Agrega tus tareas a las tarjetas y ordénalas.\n- 📄 Escriba notas adicionales\n- 🔖 Asignar etiquetas para una organización mejor\n- 👥 Comparte con tu equipo, amigos o familia.\n- 📎 Adjuntar archivos e incrustarlos en su descripción\n- 💬 Discuta con su equipo usando comentarios.\n- ⚡ Mantenga un registro de los cambios en el flujo de actividad\n- 🚀 Organiza tu proyecto", + "Card details" : "Detalles de la tarjeta", "Create new board" : "Crear nuevo tablero", "new board" : "nuevo tablero", "Select the board to link to a project" : "Selecciona el tablero que enlazar a un proyecto", @@ -127,6 +128,7 @@ "Next 30 days" : "Siguientes 30 días", "No due date" : "Sin fecha de vencimiento", "Clear filter" : "Borrar filtro", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Toggle compact mode" : "Mostrar/ocultar modo compacto", "Details" : "Detalles", @@ -181,6 +183,7 @@ "Attachments" : "Adjuntos", "Comments" : "Comentarios", "Choose attachment" : "Escoger adjunto", + "Select Date" : "Seleccione la fecha", "Modified" : "Modificado", "Created" : "Creado", "No comments yet. Begin the discussion!" : "Todavía no hay comentarios. ¡Comienza la discusión!", @@ -198,7 +201,6 @@ "Archive card" : "Archivar tarjeta", "Delete card" : "Eliminar tarjeta", "Move card" : "Mover tarjeta", - "Card details" : "Detalles de la tarjeta", "Move card to another board" : "Mover la tarjeta a otro tablero", "Select a list" : "Seleccionar una lista", "seconds ago" : "hace unos segundos", diff --git a/l10n/es_419.js b/l10n/es_419.js index 20377845f..a37f1293d 100644 --- a/l10n/es_419.js +++ b/l10n/es_419.js @@ -20,6 +20,7 @@ OC.L10N.register( "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", "Filter by tag" : "Filtrar por etiqueta", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_419.json b/l10n/es_419.json index 182118c0d..080b56b5f 100644 --- a/l10n/es_419.json +++ b/l10n/es_419.json @@ -18,6 +18,7 @@ "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", "Filter by tag" : "Filtrar por etiqueta", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_AR.js b/l10n/es_AR.js index eed19ce3a..55824d652 100644 --- a/l10n/es_AR.js +++ b/l10n/es_AR.js @@ -14,6 +14,7 @@ OC.L10N.register( "Missing a temporary folder" : "Falta un directorio temporal", "Create new board" : "Crear un nuevo tablero", "Cancel" : "Cancelar", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", @@ -30,6 +31,7 @@ OC.L10N.register( "Formatting help" : "Ayuda de formato", "Attachments" : "Adjuntos", "Comments" : "Comentarios", + "Select Date" : "Seleccionar fecha", "Modified" : "Modificado", "Created" : "Creado", "Save" : "Guardar", diff --git a/l10n/es_AR.json b/l10n/es_AR.json index b3b78dc4d..77f2cbd4c 100644 --- a/l10n/es_AR.json +++ b/l10n/es_AR.json @@ -12,6 +12,7 @@ "Missing a temporary folder" : "Falta un directorio temporal", "Create new board" : "Crear un nuevo tablero", "Cancel" : "Cancelar", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", @@ -28,6 +29,7 @@ "Formatting help" : "Ayuda de formato", "Attachments" : "Adjuntos", "Comments" : "Comentarios", + "Select Date" : "Seleccionar fecha", "Modified" : "Modificado", "Created" : "Creado", "Save" : "Guardar", diff --git a/l10n/es_CL.js b/l10n/es_CL.js index ef19ca9ee..7b698c7a9 100644 --- a/l10n/es_CL.js +++ b/l10n/es_CL.js @@ -23,6 +23,7 @@ OC.L10N.register( "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_CL.json b/l10n/es_CL.json index 9ad08b14a..69342d3ea 100644 --- a/l10n/es_CL.json +++ b/l10n/es_CL.json @@ -21,6 +21,7 @@ "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_CO.js b/l10n/es_CO.js index 3cab2ecc6..cdd812488 100644 --- a/l10n/es_CO.js +++ b/l10n/es_CO.js @@ -24,6 +24,7 @@ OC.L10N.register( "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_CO.json b/l10n/es_CO.json index 0203128e7..d9bfd57a6 100644 --- a/l10n/es_CO.json +++ b/l10n/es_CO.json @@ -22,6 +22,7 @@ "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_CR.js b/l10n/es_CR.js index ef19ca9ee..7b698c7a9 100644 --- a/l10n/es_CR.js +++ b/l10n/es_CR.js @@ -23,6 +23,7 @@ OC.L10N.register( "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_CR.json b/l10n/es_CR.json index 9ad08b14a..69342d3ea 100644 --- a/l10n/es_CR.json +++ b/l10n/es_CR.json @@ -21,6 +21,7 @@ "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_DO.js b/l10n/es_DO.js index ef19ca9ee..7b698c7a9 100644 --- a/l10n/es_DO.js +++ b/l10n/es_DO.js @@ -23,6 +23,7 @@ OC.L10N.register( "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_DO.json b/l10n/es_DO.json index 9ad08b14a..69342d3ea 100644 --- a/l10n/es_DO.json +++ b/l10n/es_DO.json @@ -21,6 +21,7 @@ "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_EC.js b/l10n/es_EC.js index ef19ca9ee..7b698c7a9 100644 --- a/l10n/es_EC.js +++ b/l10n/es_EC.js @@ -23,6 +23,7 @@ OC.L10N.register( "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_EC.json b/l10n/es_EC.json index 9ad08b14a..69342d3ea 100644 --- a/l10n/es_EC.json +++ b/l10n/es_EC.json @@ -21,6 +21,7 @@ "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_GT.js b/l10n/es_GT.js index ef19ca9ee..7b698c7a9 100644 --- a/l10n/es_GT.js +++ b/l10n/es_GT.js @@ -23,6 +23,7 @@ OC.L10N.register( "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_GT.json b/l10n/es_GT.json index 9ad08b14a..69342d3ea 100644 --- a/l10n/es_GT.json +++ b/l10n/es_GT.json @@ -21,6 +21,7 @@ "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_HN.js b/l10n/es_HN.js index a740a0513..1d9a933aa 100644 --- a/l10n/es_HN.js +++ b/l10n/es_HN.js @@ -19,6 +19,7 @@ OC.L10N.register( "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_HN.json b/l10n/es_HN.json index 99e3adc49..abbbb1e26 100644 --- a/l10n/es_HN.json +++ b/l10n/es_HN.json @@ -17,6 +17,7 @@ "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_MX.js b/l10n/es_MX.js index fe853c457..4156d871a 100644 --- a/l10n/es_MX.js +++ b/l10n/es_MX.js @@ -24,6 +24,7 @@ OC.L10N.register( "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", "Filter by tag" : "Filtrar por etiqueta", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_MX.json b/l10n/es_MX.json index b90f1555d..8658e78fb 100644 --- a/l10n/es_MX.json +++ b/l10n/es_MX.json @@ -22,6 +22,7 @@ "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", "Filter by tag" : "Filtrar por etiqueta", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_NI.js b/l10n/es_NI.js index a740a0513..1d9a933aa 100644 --- a/l10n/es_NI.js +++ b/l10n/es_NI.js @@ -19,6 +19,7 @@ OC.L10N.register( "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_NI.json b/l10n/es_NI.json index 99e3adc49..abbbb1e26 100644 --- a/l10n/es_NI.json +++ b/l10n/es_NI.json @@ -17,6 +17,7 @@ "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_PA.js b/l10n/es_PA.js index a740a0513..1d9a933aa 100644 --- a/l10n/es_PA.js +++ b/l10n/es_PA.js @@ -19,6 +19,7 @@ OC.L10N.register( "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_PA.json b/l10n/es_PA.json index 99e3adc49..abbbb1e26 100644 --- a/l10n/es_PA.json +++ b/l10n/es_PA.json @@ -17,6 +17,7 @@ "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_PE.js b/l10n/es_PE.js index a740a0513..1d9a933aa 100644 --- a/l10n/es_PE.js +++ b/l10n/es_PE.js @@ -19,6 +19,7 @@ OC.L10N.register( "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_PE.json b/l10n/es_PE.json index 99e3adc49..abbbb1e26 100644 --- a/l10n/es_PE.json +++ b/l10n/es_PE.json @@ -17,6 +17,7 @@ "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_PR.js b/l10n/es_PR.js index a740a0513..1d9a933aa 100644 --- a/l10n/es_PR.js +++ b/l10n/es_PR.js @@ -19,6 +19,7 @@ OC.L10N.register( "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_PR.json b/l10n/es_PR.json index 99e3adc49..abbbb1e26 100644 --- a/l10n/es_PR.json +++ b/l10n/es_PR.json @@ -17,6 +17,7 @@ "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_PY.js b/l10n/es_PY.js index a740a0513..b1d299ec2 100644 --- a/l10n/es_PY.js +++ b/l10n/es_PY.js @@ -10,6 +10,7 @@ OC.L10N.register( "To review" : "Para revisar", "Action needed" : "Acción requerida", "Later" : "Después", + "copy" : "copiar", "Done" : "Terminado", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El archivo cargado excede el valor establecido en la directiva upload_max_filesize en el archivo php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El archivo cargado excede el valor especificado de la directiva MAX_FILE_SIZE en la forma de HTML", @@ -19,6 +20,7 @@ OC.L10N.register( "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", @@ -49,6 +51,7 @@ OC.L10N.register( "New board title" : "Nuevo título del tablero", "Edit board" : "Editar el tablero", "Board details" : "Detalles del tablero", + "An error occurred" : "Se presentó un error", "Today" : "Hoy", "Tomorrow" : "Mañana", "This week" : "Esta semana" diff --git a/l10n/es_PY.json b/l10n/es_PY.json index 99e3adc49..fd5043a2f 100644 --- a/l10n/es_PY.json +++ b/l10n/es_PY.json @@ -8,6 +8,7 @@ "To review" : "Para revisar", "Action needed" : "Acción requerida", "Later" : "Después", + "copy" : "copiar", "Done" : "Terminado", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El archivo cargado excede el valor establecido en la directiva upload_max_filesize en el archivo php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El archivo cargado excede el valor especificado de la directiva MAX_FILE_SIZE en la forma de HTML", @@ -17,6 +18,7 @@ "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", @@ -47,6 +49,7 @@ "New board title" : "Nuevo título del tablero", "Edit board" : "Editar el tablero", "Board details" : "Detalles del tablero", + "An error occurred" : "Se presentó un error", "Today" : "Hoy", "Tomorrow" : "Mañana", "This week" : "Esta semana" diff --git a/l10n/es_SV.js b/l10n/es_SV.js index ef19ca9ee..7b698c7a9 100644 --- a/l10n/es_SV.js +++ b/l10n/es_SV.js @@ -23,6 +23,7 @@ OC.L10N.register( "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_SV.json b/l10n/es_SV.json index 9ad08b14a..69342d3ea 100644 --- a/l10n/es_SV.json +++ b/l10n/es_SV.json @@ -21,6 +21,7 @@ "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_UY.js b/l10n/es_UY.js index a740a0513..1d9a933aa 100644 --- a/l10n/es_UY.js +++ b/l10n/es_UY.js @@ -19,6 +19,7 @@ OC.L10N.register( "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/es_UY.json b/l10n/es_UY.json index 99e3adc49..abbbb1e26 100644 --- a/l10n/es_UY.json +++ b/l10n/es_UY.json @@ -17,6 +17,7 @@ "Cancel" : "Cancelar", "File already exists" : "El archivo ya existe", "Do you want to overwrite it?" : "¿Deseas sobre escribirlo?", + "Hide archived cards" : "Ocultar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas", "Details" : "Detalles", "Sharing" : "Compartiendo", diff --git a/l10n/eu.js b/l10n/eu.js index b45dc551d..01c4080d1 100644 --- a/l10n/eu.js +++ b/l10n/eu.js @@ -67,6 +67,7 @@ OC.L10N.register( "Deck" : "Deck", "Changes in the Deck app" : "Deck aplikazioan aldaketak", "A comment was created on a card" : "Iruzkin bat sortu da txartel batean", + "Upcoming cards" : "Hurrengo txartelak", "Personal" : "Pertsonala", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "\"%s\" txartela \"%s\"-n %sk esleitu zaizu.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user}k \"%s\" txartela \"%s\"-n esleitu zaitu.", @@ -98,6 +99,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Ez da fitxategirik kargatu edo fitxategi-tamainak gehienezko %s muga gainditzen du", "Personal planning and team project organization" : "Plangintza pertsonala eta talde proiektuen kudeaketa", "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 aplikazioa plangintza pertsonalera eta proiektuen antolaketara zuzenduta dagoen Nextcloudekin integratutako kanban moduko tresna bat da.\n\n\n- 📥 Gehitu atazak txarteletan eta ordenatu\n- 📄 Idatzi ohar gehigarriak markdown erabiliz\n- 🔖 Esleitu etiketak antolaketa are gehiago hobetzeko\n- 👥 Partekatu zure talde, lagun edo familiarekin\n- 📎 Erantsi fitxategiak eta kapsulatu zure markdown deskribapenean\n- 💬 Eztabaidatu zure taldearekin iruzkinak erabiliz\n- ⚡ Egin aldaketen jarraipena jarduera jarioa erabiliz\n- 🚀 Antolatu zure proiektua", + "Card details" : "Txartelaren xehetasunak", "Create new board" : "Sortu mahai berri bat", "new board" : "mahai berria", "Select the board to link to a project" : "Hautatu mahaia proiektu bati estekatzeko", @@ -129,6 +131,7 @@ OC.L10N.register( "Next 30 days" : "Hurrengo 30 egunetan", "No due date" : "Epe-mugarik gabe", "Clear filter" : "Garbitu iragazia", + "Hide archived cards" : "Ezkutatu artxibatutako txartelak", "Show archived cards" : "Erakutsi artxibatutako txartelak", "Toggle compact mode" : "Txandakatu modu trinkoa", "Details" : "Xehetasunak", @@ -183,6 +186,7 @@ OC.L10N.register( "Attachments" : "Eranskinak", "Comments" : "Iruzkinak", "Choose attachment" : "Aukeratu eranskina", + "Select Date" : "Hautatu data", "Modified" : "Aldatua", "Created" : "Sortua", "No comments yet. Begin the discussion!" : "Ez dago iruzkinik oraindik. Hasi eztabaidatzen!", @@ -200,7 +204,6 @@ OC.L10N.register( "Archive card" : "Artxibatu txartela", "Delete card" : "Ezabatu txartela", "Move card" : "Mugitu txartela", - "Card details" : "Txartelaren xehetasunak", "Move card to another board" : "Mugitu txartela beste mahai batera", "Select a list" : "Hautatu zerrenda bat", "seconds ago" : "segundo lehenago", @@ -220,9 +223,13 @@ OC.L10N.register( "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?", + "Loading filtered view" : "Kargatzen iragazitako ikuspegia", "Today" : "Gaur", "Tomorrow" : "Bihar", "This week" : "Aste honetan", + "No due" : "Epemugarik ez", + "upcoming cards" : "hurrengo txartelak", + "No upcoming cards" : "Ez dago hurrengo txartelik", "Link to a board" : "Estekatu mahai batera", "Link to a card" : "Estekatu txartel batera", "Something went wrong" : "Zerbait gaizki joan da", diff --git a/l10n/eu.json b/l10n/eu.json index 7ceb65d78..6bc9fe3fe 100644 --- a/l10n/eu.json +++ b/l10n/eu.json @@ -65,6 +65,7 @@ "Deck" : "Deck", "Changes in the Deck app" : "Deck aplikazioan aldaketak", "A comment was created on a card" : "Iruzkin bat sortu da txartel batean", + "Upcoming cards" : "Hurrengo txartelak", "Personal" : "Pertsonala", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "\"%s\" txartela \"%s\"-n %sk esleitu zaizu.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user}k \"%s\" txartela \"%s\"-n esleitu zaitu.", @@ -96,6 +97,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Ez da fitxategirik kargatu edo fitxategi-tamainak gehienezko %s muga gainditzen du", "Personal planning and team project organization" : "Plangintza pertsonala eta talde proiektuen kudeaketa", "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 aplikazioa plangintza pertsonalera eta proiektuen antolaketara zuzenduta dagoen Nextcloudekin integratutako kanban moduko tresna bat da.\n\n\n- 📥 Gehitu atazak txarteletan eta ordenatu\n- 📄 Idatzi ohar gehigarriak markdown erabiliz\n- 🔖 Esleitu etiketak antolaketa are gehiago hobetzeko\n- 👥 Partekatu zure talde, lagun edo familiarekin\n- 📎 Erantsi fitxategiak eta kapsulatu zure markdown deskribapenean\n- 💬 Eztabaidatu zure taldearekin iruzkinak erabiliz\n- ⚡ Egin aldaketen jarraipena jarduera jarioa erabiliz\n- 🚀 Antolatu zure proiektua", + "Card details" : "Txartelaren xehetasunak", "Create new board" : "Sortu mahai berri bat", "new board" : "mahai berria", "Select the board to link to a project" : "Hautatu mahaia proiektu bati estekatzeko", @@ -127,6 +129,7 @@ "Next 30 days" : "Hurrengo 30 egunetan", "No due date" : "Epe-mugarik gabe", "Clear filter" : "Garbitu iragazia", + "Hide archived cards" : "Ezkutatu artxibatutako txartelak", "Show archived cards" : "Erakutsi artxibatutako txartelak", "Toggle compact mode" : "Txandakatu modu trinkoa", "Details" : "Xehetasunak", @@ -181,6 +184,7 @@ "Attachments" : "Eranskinak", "Comments" : "Iruzkinak", "Choose attachment" : "Aukeratu eranskina", + "Select Date" : "Hautatu data", "Modified" : "Aldatua", "Created" : "Sortua", "No comments yet. Begin the discussion!" : "Ez dago iruzkinik oraindik. Hasi eztabaidatzen!", @@ -198,7 +202,6 @@ "Archive card" : "Artxibatu txartela", "Delete card" : "Ezabatu txartela", "Move card" : "Mugitu txartela", - "Card details" : "Txartelaren xehetasunak", "Move card to another board" : "Mugitu txartela beste mahai batera", "Select a list" : "Hautatu zerrenda bat", "seconds ago" : "segundo lehenago", @@ -218,9 +221,13 @@ "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?", + "Loading filtered view" : "Kargatzen iragazitako ikuspegia", "Today" : "Gaur", "Tomorrow" : "Bihar", "This week" : "Aste honetan", + "No due" : "Epemugarik ez", + "upcoming cards" : "hurrengo txartelak", + "No upcoming cards" : "Ez dago hurrengo txartelik", "Link to a board" : "Estekatu mahai batera", "Link to a card" : "Estekatu txartel batera", "Something went wrong" : "Zerbait gaizki joan da", diff --git a/l10n/fa.js b/l10n/fa.js index e76b7ab02..3dae2dbe3 100644 --- a/l10n/fa.js +++ b/l10n/fa.js @@ -38,6 +38,7 @@ OC.L10N.register( "Could not write file to disk" : "عدم موفقیت در نوشتن پرونده روی حافظه", "A PHP extension stopped the file upload" : "یک افزونه پی‌اچ‌پی مانع بارگذاری پرونده شد", "No file uploaded or file size exceeds maximum of %s" : "پرونده‌ای بارگذاری نشد و یا حجم پرونده بیش از بیشینه مجاز %s بود", + "Card details" : "جزئیات کارت", "Create new board" : "ایجاد تختهٔ جدید", "new board" : "تختهٔ جدید", "Select the board to link to a project" : "تخته‌ای را برای ایجاد پیوند با یک پروژه انتخاب کنید", @@ -108,6 +109,7 @@ OC.L10N.register( "Attachments" : "پیوست‌ها", "Comments" : "نظرات", "Choose attachment" : "انتخاب پیوست", + "Select Date" : "تاریخ را انتخاب کنید", "Modified" : "تغییر یافته", "Created" : "ایجاد شده", "No comments yet. Begin the discussion!" : "هنوز نظری وجود ندارد. بحثی را آغاز کنید!", @@ -122,7 +124,6 @@ OC.L10N.register( "Archive card" : "کارت بایگانی", "Delete card" : "حذف کارت", "Move card" : "انتقال کارت", - "Card details" : "جزئیات کارت", "Move card to another board" : "انتقال کارت به تخته‌ای دیگر", "seconds ago" : "ثانیه‌هایی پیش", "All boards" : "همه تخته‌ها", diff --git a/l10n/fa.json b/l10n/fa.json index 178f7ac3a..4f9d7c5d9 100644 --- a/l10n/fa.json +++ b/l10n/fa.json @@ -36,6 +36,7 @@ "Could not write file to disk" : "عدم موفقیت در نوشتن پرونده روی حافظه", "A PHP extension stopped the file upload" : "یک افزونه پی‌اچ‌پی مانع بارگذاری پرونده شد", "No file uploaded or file size exceeds maximum of %s" : "پرونده‌ای بارگذاری نشد و یا حجم پرونده بیش از بیشینه مجاز %s بود", + "Card details" : "جزئیات کارت", "Create new board" : "ایجاد تختهٔ جدید", "new board" : "تختهٔ جدید", "Select the board to link to a project" : "تخته‌ای را برای ایجاد پیوند با یک پروژه انتخاب کنید", @@ -106,6 +107,7 @@ "Attachments" : "پیوست‌ها", "Comments" : "نظرات", "Choose attachment" : "انتخاب پیوست", + "Select Date" : "تاریخ را انتخاب کنید", "Modified" : "تغییر یافته", "Created" : "ایجاد شده", "No comments yet. Begin the discussion!" : "هنوز نظری وجود ندارد. بحثی را آغاز کنید!", @@ -120,7 +122,6 @@ "Archive card" : "کارت بایگانی", "Delete card" : "حذف کارت", "Move card" : "انتقال کارت", - "Card details" : "جزئیات کارت", "Move card to another board" : "انتقال کارت به تخته‌ای دیگر", "seconds ago" : "ثانیه‌هایی پیش", "All boards" : "همه تخته‌ها", diff --git a/l10n/fi.js b/l10n/fi.js index 9400bed2a..926330315 100644 --- a/l10n/fi.js +++ b/l10n/fi.js @@ -71,6 +71,7 @@ OC.L10N.register( "A PHP extension stopped the file upload" : "PHP:n laajennus esti tiedoston lähettämisen", "No file uploaded or file size exceeds maximum of %s" : "Tiedostoa ei lähetetty tai sen koko ylitti maksimin %s", "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" : "Pakka on Nextcloudissa työtään hallinnoivien tiimien käyttöön tarkoitettu kanban-tyyppinen organisointityökalu.\n\n\n- 📥 Lisää tehtävät korteille ja järjestele ne mielesi mukaan\n- 📄 Kirjoita lisätietoja markdown-kielellä\n- 🔖 Määritä tunnisteita helpottaaksesi hallintaa\n- 👥 Jaa tiimin, perheen tai kavereiden kanssa\n- 📎 Lisää tiedostoja ja upota ne lisätietoihin\n- 💬 Keskustele tiimisi kanssa kommenteilla\n- ⚡ Pidä kirjaa muutoksista tapahtumavirran avulla\n- 🚀 Pidä projektisi hallinnassa", + "Card details" : "Näytä kortin sisältö", "Create new board" : "Luo uusi taulu", "new board" : "uusi taulu", "Select the board to link to a project" : "Valitse projektiin linkitettävä taulu", @@ -96,6 +97,7 @@ OC.L10N.register( "Next 7 days" : "Seuraavat 7 päivää", "Next 30 days" : "Seuraavat 30 päivää", "No due date" : "Ei eräpäivää", + "Hide archived cards" : "Piilota arkistoidut kortit", "Show archived cards" : "Näytä arkistoidut kortit", "Toggle compact mode" : "Käytä kompaktia tilaa", "Details" : "Tiedot", @@ -133,6 +135,7 @@ OC.L10N.register( "Formatting help" : "Muotoiluapu", "Attachments" : "Liitteet", "Comments" : "Kommentit", + "Select Date" : "Valitse päivä", "Modified" : "Muokattu", "Created" : "Luotu", "No comments yet. Begin the discussion!" : "Ei vielä kommentteja. Aloita keskustelu!", @@ -146,7 +149,6 @@ OC.L10N.register( "Archive card" : "Arkistoi kortti", "Delete card" : "Poista kortti", "Move card" : "Siirrä kortti", - "Card details" : "Näytä kortin sisältö", "seconds ago" : "sekuntia sitten", "All boards" : "Kaikki taulut", "Archived boards" : "Arkistoidut taulut", diff --git a/l10n/fi.json b/l10n/fi.json index eb6385867..abc1563f0 100644 --- a/l10n/fi.json +++ b/l10n/fi.json @@ -69,6 +69,7 @@ "A PHP extension stopped the file upload" : "PHP:n laajennus esti tiedoston lähettämisen", "No file uploaded or file size exceeds maximum of %s" : "Tiedostoa ei lähetetty tai sen koko ylitti maksimin %s", "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" : "Pakka on Nextcloudissa työtään hallinnoivien tiimien käyttöön tarkoitettu kanban-tyyppinen organisointityökalu.\n\n\n- 📥 Lisää tehtävät korteille ja järjestele ne mielesi mukaan\n- 📄 Kirjoita lisätietoja markdown-kielellä\n- 🔖 Määritä tunnisteita helpottaaksesi hallintaa\n- 👥 Jaa tiimin, perheen tai kavereiden kanssa\n- 📎 Lisää tiedostoja ja upota ne lisätietoihin\n- 💬 Keskustele tiimisi kanssa kommenteilla\n- ⚡ Pidä kirjaa muutoksista tapahtumavirran avulla\n- 🚀 Pidä projektisi hallinnassa", + "Card details" : "Näytä kortin sisältö", "Create new board" : "Luo uusi taulu", "new board" : "uusi taulu", "Select the board to link to a project" : "Valitse projektiin linkitettävä taulu", @@ -94,6 +95,7 @@ "Next 7 days" : "Seuraavat 7 päivää", "Next 30 days" : "Seuraavat 30 päivää", "No due date" : "Ei eräpäivää", + "Hide archived cards" : "Piilota arkistoidut kortit", "Show archived cards" : "Näytä arkistoidut kortit", "Toggle compact mode" : "Käytä kompaktia tilaa", "Details" : "Tiedot", @@ -131,6 +133,7 @@ "Formatting help" : "Muotoiluapu", "Attachments" : "Liitteet", "Comments" : "Kommentit", + "Select Date" : "Valitse päivä", "Modified" : "Muokattu", "Created" : "Luotu", "No comments yet. Begin the discussion!" : "Ei vielä kommentteja. Aloita keskustelu!", @@ -144,7 +147,6 @@ "Archive card" : "Arkistoi kortti", "Delete card" : "Poista kortti", "Move card" : "Siirrä kortti", - "Card details" : "Näytä kortin sisältö", "seconds ago" : "sekuntia sitten", "All boards" : "Kaikki taulut", "Archived boards" : "Arkistoidut taulut", diff --git a/l10n/fr.js b/l10n/fr.js index bc7e78860..46b17a493 100644 --- a/l10n/fr.js +++ b/l10n/fr.js @@ -67,6 +67,7 @@ OC.L10N.register( "Deck" : "Deck", "Changes in the Deck app" : "Modifications dans Deck app", "A comment was created on a card" : "Un commentaire a été créé sur une carte", + "Upcoming cards" : "Cartes à venir", "Personal" : "Personnel", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La carte \"%s\" de \"%s\" vous a été assignée par %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} vous a assigné la carte \"%s\" de \"%s\".", @@ -98,6 +99,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Aucun fichier envoyé ou la taille du fichier dépasse le maximum de %s", "Personal planning and team project organization" : "Agenda personnel et organisation projet", "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 est un outil d'organisation de style kanban destiné à la planification personnelle et à l'organisation de projets pour les équipes intégrées à Nextcloud.\n\n\n- 📥 Ajoutez vos tâches à des cartes et organisez-les\n- 📄 Écrivez des notes supplémentaires en Markdown\n- 🔖 Affectez des étiquettes pour une organisation encore meilleure\n- 👥 Partagez avec votre équipe, vos amis ou votre famille\n- 📎 Attachez des fichiers et utilisez les dans vos descriptions en Markdown\n- 💬 Échangez avec votre équipe grâce aux commentaires\n- ⚡ Gardez un œil sur les modifications dans le flux d'activité\n- 🚀 Organisez vos projets", + "Card details" : "Détails de la carte", "Create new board" : "Créer un nouveau tableau", "new board" : "nouveau tableau", "Select the board to link to a project" : "Sélection le tableau pour faire le lien avec un projet.", @@ -129,6 +131,7 @@ OC.L10N.register( "Next 30 days" : "30 prochains jours", "No due date" : "Sans échéance", "Clear filter" : "Supprimer le filtre", + "Hide archived cards" : "Masquer les cartes archivées", "Show archived cards" : "Afficher les cartes archivées", "Toggle compact mode" : "Basculer le mode compact", "Details" : "Détails", @@ -166,6 +169,8 @@ OC.L10N.register( "Add this attachment" : "Ajouter cette pièce jointe", "Delete Attachment" : "Supprimer la pièce jointe", "Restore Attachment" : "Restaurer la pièce jointe", + "Open in sidebar view" : "Ouvrir dans la barre latérale", + "Open in bigger view" : "Ouvrir dans la vue principale", "Assign a tag to this card…" : "Associer une étiquette à cette carte…", "Assign to users" : "Attribuer aux utilisateurs", "Assign to users/groups/circles" : "Attribuer à des utilisateurs / groupes / cercles", @@ -183,6 +188,7 @@ OC.L10N.register( "Attachments" : "Pièces jointes", "Comments" : "Commentaires", "Choose attachment" : "Choisir une pièce jointe", + "Select Date" : "Sélectionnez une date", "Modified" : "Modifié", "Created" : "Créé", "No comments yet. Begin the discussion!" : "Aucun commentaire pour l'instant, démarrez la discussion !", @@ -200,13 +206,13 @@ OC.L10N.register( "Archive card" : "Archiver la carte", "Delete card" : "Supprimer la carte", "Move card" : "Déplacer la carte", - "Card details" : "Détails de la carte", "Move card to another board" : "Déplacer la carte vers un autre tableau ", "Select a list" : "Sélectionner une liste", "seconds ago" : "à l'instant", "All boards" : "Tous les tableaux", "Archived boards" : "Tableaux archivés", "Shared with you" : "Partagés avec vous", + "Use modal card view" : "Utiliser la vue modale", "Limit deck usage of groups" : "Limiter l'utilisation du tableau aux groupes", "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." : "Limiter Deck empêchera les utilisateurs ne faisant pas partie de ces groupes de créer leurs propres tableaux. Ces utilisateurs pourront toujours travailler sur les tableaux qui ont été partagés avec eux.", "New board title" : "Nouveau titre pour le tableau", @@ -225,6 +231,8 @@ OC.L10N.register( "Tomorrow" : "Demain", "This week" : "Cette semaine", "No due" : "Sans échéance", + "upcoming cards" : "cartes à venir", + "No upcoming cards" : "Pas de cartes à venir", "Link to a board" : "Relier à un tableau", "Link to a card" : "Relier à une carte", "Something went wrong" : "Quelque chose s'est mal passé", diff --git a/l10n/fr.json b/l10n/fr.json index e5889a466..fd499b1b5 100644 --- a/l10n/fr.json +++ b/l10n/fr.json @@ -65,6 +65,7 @@ "Deck" : "Deck", "Changes in the Deck app" : "Modifications dans Deck app", "A comment was created on a card" : "Un commentaire a été créé sur une carte", + "Upcoming cards" : "Cartes à venir", "Personal" : "Personnel", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La carte \"%s\" de \"%s\" vous a été assignée par %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} vous a assigné la carte \"%s\" de \"%s\".", @@ -96,6 +97,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Aucun fichier envoyé ou la taille du fichier dépasse le maximum de %s", "Personal planning and team project organization" : "Agenda personnel et organisation projet", "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 est un outil d'organisation de style kanban destiné à la planification personnelle et à l'organisation de projets pour les équipes intégrées à Nextcloud.\n\n\n- 📥 Ajoutez vos tâches à des cartes et organisez-les\n- 📄 Écrivez des notes supplémentaires en Markdown\n- 🔖 Affectez des étiquettes pour une organisation encore meilleure\n- 👥 Partagez avec votre équipe, vos amis ou votre famille\n- 📎 Attachez des fichiers et utilisez les dans vos descriptions en Markdown\n- 💬 Échangez avec votre équipe grâce aux commentaires\n- ⚡ Gardez un œil sur les modifications dans le flux d'activité\n- 🚀 Organisez vos projets", + "Card details" : "Détails de la carte", "Create new board" : "Créer un nouveau tableau", "new board" : "nouveau tableau", "Select the board to link to a project" : "Sélection le tableau pour faire le lien avec un projet.", @@ -127,6 +129,7 @@ "Next 30 days" : "30 prochains jours", "No due date" : "Sans échéance", "Clear filter" : "Supprimer le filtre", + "Hide archived cards" : "Masquer les cartes archivées", "Show archived cards" : "Afficher les cartes archivées", "Toggle compact mode" : "Basculer le mode compact", "Details" : "Détails", @@ -164,6 +167,8 @@ "Add this attachment" : "Ajouter cette pièce jointe", "Delete Attachment" : "Supprimer la pièce jointe", "Restore Attachment" : "Restaurer la pièce jointe", + "Open in sidebar view" : "Ouvrir dans la barre latérale", + "Open in bigger view" : "Ouvrir dans la vue principale", "Assign a tag to this card…" : "Associer une étiquette à cette carte…", "Assign to users" : "Attribuer aux utilisateurs", "Assign to users/groups/circles" : "Attribuer à des utilisateurs / groupes / cercles", @@ -181,6 +186,7 @@ "Attachments" : "Pièces jointes", "Comments" : "Commentaires", "Choose attachment" : "Choisir une pièce jointe", + "Select Date" : "Sélectionnez une date", "Modified" : "Modifié", "Created" : "Créé", "No comments yet. Begin the discussion!" : "Aucun commentaire pour l'instant, démarrez la discussion !", @@ -198,13 +204,13 @@ "Archive card" : "Archiver la carte", "Delete card" : "Supprimer la carte", "Move card" : "Déplacer la carte", - "Card details" : "Détails de la carte", "Move card to another board" : "Déplacer la carte vers un autre tableau ", "Select a list" : "Sélectionner une liste", "seconds ago" : "à l'instant", "All boards" : "Tous les tableaux", "Archived boards" : "Tableaux archivés", "Shared with you" : "Partagés avec vous", + "Use modal card view" : "Utiliser la vue modale", "Limit deck usage of groups" : "Limiter l'utilisation du tableau aux groupes", "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." : "Limiter Deck empêchera les utilisateurs ne faisant pas partie de ces groupes de créer leurs propres tableaux. Ces utilisateurs pourront toujours travailler sur les tableaux qui ont été partagés avec eux.", "New board title" : "Nouveau titre pour le tableau", @@ -223,6 +229,8 @@ "Tomorrow" : "Demain", "This week" : "Cette semaine", "No due" : "Sans échéance", + "upcoming cards" : "cartes à venir", + "No upcoming cards" : "Pas de cartes à venir", "Link to a board" : "Relier à un tableau", "Link to a card" : "Relier à une carte", "Something went wrong" : "Quelque chose s'est mal passé", diff --git a/l10n/gl.js b/l10n/gl.js index fa54c1ea4..4da02edb0 100644 --- a/l10n/gl.js +++ b/l10n/gl.js @@ -99,6 +99,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Non se enviou ningún ficheiro ou o tamaño do ficheiro supera o máximo de %s", "Personal planning and team project organization" : "Planificación persoal e organización de proxectos de equipo", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck é unha ferramenta de organización de estilo kanban dirixida a planificación persoal e organización de proxectos para equipos integrados con Nextcloud. \n\n\n- 📥 Engada as súas tarefas ás tarxetas e fagas ordenadas\n- 📄 Escriba notas adicionais en markdown\n- 🔖 Asigne etiquetas para unha mellor organización\n- 👥 Comparta co seu equipo, amigos ou a súa familia\n- 📎 Anexe ficheiros e insíraos na súa descrición de markdown\n- 💬 Debata co seu equipo usando os comentarios\n- ⚡ Faga un seguimento dos cambios no fluxo de actividade\n- 🚀 Teña o seu proxecto organizado", + "Card details" : "Detalles da tarxeta", "Create new board" : "Crear un novo taboleiro", "new board" : "novo taboleiro", "Select the board to link to a project" : "Seleccione o taboleiro para ligar a un proxecto", @@ -130,6 +131,7 @@ OC.L10N.register( "Next 30 days" : "Próximos 30 días", "No due date" : "Sen data de caducidade", "Clear filter" : "Limpar o filtro", + "Hide archived cards" : "Agochar as tarxetas arquivadas", "Show archived cards" : "Amosar as tarxetas arquivadas", "Toggle compact mode" : "Alternar o modo compacto", "Details" : "Detalles", @@ -158,6 +160,7 @@ OC.L10N.register( "Add card" : "Engadir tarxeta", "Archive all cards in this list" : "Arquivar todas as tarxetas desta lista", "Add a new card" : "Engadir unha nova tarxeta", + "Card name" : "Nome da tarxeta", "Edit" : "Editar", "Add a new tag" : "Engadir unha nova etiqueta", "title and color value must be provided" : "debe indicar o título e o valor da cor", @@ -167,6 +170,8 @@ OC.L10N.register( "Add this attachment" : "Engadir este anexo", "Delete Attachment" : "Eliminar o anexo", "Restore Attachment" : "Restaurar o anexo", + "Open in sidebar view" : "Abrir na vista da barra lateral", + "Open in bigger view" : "Abrir nunha vista máis grande", "Assign a tag to this card…" : "Asignar unha etiqueta a esta tarxeta…", "Assign to users" : "Asignar a usuarios", "Assign to users/groups/circles" : "Asignar a usuarios/grupos/círculos", @@ -184,6 +189,7 @@ OC.L10N.register( "Attachments" : "Anexos", "Comments" : "Comentarios", "Choose attachment" : "Escoller o anexo", + "Select Date" : "Seleccione a data", "Modified" : "Modificado", "Created" : "Creado", "No comments yet. Begin the discussion!" : "Aínda non hai comentarios. Comece o debate!", @@ -201,13 +207,13 @@ OC.L10N.register( "Archive card" : "Arquivar a tarxeta", "Delete card" : "Eliminar tarxeta", "Move card" : "Mover a tarxeta", - "Card details" : "Detalles da tarxeta", "Move card to another board" : "Mover a tarxeta a outro taboleiro", "Select a list" : "Seleccionar unha lista", "seconds ago" : "segundos atrás", "All boards" : "Todos os taboleiros", "Archived boards" : "Taboleiros arquivados", "Shared with you" : "Compartido con vostede", + "Use modal card view" : "Usar a vista de tarxeta modal", "Limit deck usage of groups" : "Limitar o uso da plataforma a grupos", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitando Deck bloqueará os usuarios que non formen parte destes grupos, para crear os seus propios taboleiros. Os usuarios aínda así poderán traballar en taboleiros compartidos con eles.", "New board title" : "Novo título do taboleiro", diff --git a/l10n/gl.json b/l10n/gl.json index 986cb0397..0a57f68e6 100644 --- a/l10n/gl.json +++ b/l10n/gl.json @@ -97,6 +97,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Non se enviou ningún ficheiro ou o tamaño do ficheiro supera o máximo de %s", "Personal planning and team project organization" : "Planificación persoal e organización de proxectos de equipo", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck é unha ferramenta de organización de estilo kanban dirixida a planificación persoal e organización de proxectos para equipos integrados con Nextcloud. \n\n\n- 📥 Engada as súas tarefas ás tarxetas e fagas ordenadas\n- 📄 Escriba notas adicionais en markdown\n- 🔖 Asigne etiquetas para unha mellor organización\n- 👥 Comparta co seu equipo, amigos ou a súa familia\n- 📎 Anexe ficheiros e insíraos na súa descrición de markdown\n- 💬 Debata co seu equipo usando os comentarios\n- ⚡ Faga un seguimento dos cambios no fluxo de actividade\n- 🚀 Teña o seu proxecto organizado", + "Card details" : "Detalles da tarxeta", "Create new board" : "Crear un novo taboleiro", "new board" : "novo taboleiro", "Select the board to link to a project" : "Seleccione o taboleiro para ligar a un proxecto", @@ -128,6 +129,7 @@ "Next 30 days" : "Próximos 30 días", "No due date" : "Sen data de caducidade", "Clear filter" : "Limpar o filtro", + "Hide archived cards" : "Agochar as tarxetas arquivadas", "Show archived cards" : "Amosar as tarxetas arquivadas", "Toggle compact mode" : "Alternar o modo compacto", "Details" : "Detalles", @@ -156,6 +158,7 @@ "Add card" : "Engadir tarxeta", "Archive all cards in this list" : "Arquivar todas as tarxetas desta lista", "Add a new card" : "Engadir unha nova tarxeta", + "Card name" : "Nome da tarxeta", "Edit" : "Editar", "Add a new tag" : "Engadir unha nova etiqueta", "title and color value must be provided" : "debe indicar o título e o valor da cor", @@ -165,6 +168,8 @@ "Add this attachment" : "Engadir este anexo", "Delete Attachment" : "Eliminar o anexo", "Restore Attachment" : "Restaurar o anexo", + "Open in sidebar view" : "Abrir na vista da barra lateral", + "Open in bigger view" : "Abrir nunha vista máis grande", "Assign a tag to this card…" : "Asignar unha etiqueta a esta tarxeta…", "Assign to users" : "Asignar a usuarios", "Assign to users/groups/circles" : "Asignar a usuarios/grupos/círculos", @@ -182,6 +187,7 @@ "Attachments" : "Anexos", "Comments" : "Comentarios", "Choose attachment" : "Escoller o anexo", + "Select Date" : "Seleccione a data", "Modified" : "Modificado", "Created" : "Creado", "No comments yet. Begin the discussion!" : "Aínda non hai comentarios. Comece o debate!", @@ -199,13 +205,13 @@ "Archive card" : "Arquivar a tarxeta", "Delete card" : "Eliminar tarxeta", "Move card" : "Mover a tarxeta", - "Card details" : "Detalles da tarxeta", "Move card to another board" : "Mover a tarxeta a outro taboleiro", "Select a list" : "Seleccionar unha lista", "seconds ago" : "segundos atrás", "All boards" : "Todos os taboleiros", "Archived boards" : "Taboleiros arquivados", "Shared with you" : "Compartido con vostede", + "Use modal card view" : "Usar a vista de tarxeta modal", "Limit deck usage of groups" : "Limitar o uso da plataforma a grupos", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitando Deck bloqueará os usuarios que non formen parte destes grupos, para crear os seus propios taboleiros. Os usuarios aínda así poderán traballar en taboleiros compartidos con eles.", "New board title" : "Novo título do taboleiro", diff --git a/l10n/he.js b/l10n/he.js index f224eef53..beb6765e1 100644 --- a/l10n/he.js +++ b/l10n/he.js @@ -55,6 +55,7 @@ OC.L10N.register( "A PHP extension stopped the file upload" : "הרחבת PHP עצרה את העלאת הקובץ", "No file uploaded or file size exceeds maximum of %s" : "לא הועלה אף קובץ או שגודל הקובץ חרג מהסף המרבי של %s", "Personal planning and team project organization" : "ארגון אישי וקבוצתי של מיזמים", + "Card details" : "פרטי הכרטיס", "Create new board" : "יצירת לוח חדש", "new board" : "לוח חדש", "Select the board to link to a project" : "נא לבחור את הלוח לקישור למיזם", @@ -85,6 +86,7 @@ OC.L10N.register( "Next 30 days" : "ב־30 הימים הבאים", "No due date" : "ללא תאריך יעד", "Clear filter" : "מחיקת מסנן", + "Hide archived cards" : "הסתרת כרטיסים בארכיון", "Show archived cards" : "הצגת כרטיסים בארכיון", "Toggle compact mode" : "החלפת מצב חסכוני", "Details" : "פרטים", @@ -134,6 +136,7 @@ OC.L10N.register( "Attachments" : "קבצים מצורפים", "Comments" : "תגובות", "Choose attachment" : "בחירת קובץ מצורף", + "Select Date" : "בחירת תאריך", "Modified" : "מועד שינוי", "Created" : "מועד היצירה", "No comments yet. Begin the discussion!" : "אין עדיין הערות. אפשר להתחיל לדון!", @@ -150,7 +153,6 @@ OC.L10N.register( "Archive card" : "העברת כרטיס לארכיון", "Delete card" : "מחיקת כרטיס לארכיון", "Move card" : "העברת כרטיס", - "Card details" : "פרטי הכרטיס", "Move card to another board" : "העברת כרטיס ללוח אחר", "seconds ago" : "לפני מספר שניות", "All boards" : "כל הלוחות", diff --git a/l10n/he.json b/l10n/he.json index 41548b997..7a8817f9b 100644 --- a/l10n/he.json +++ b/l10n/he.json @@ -53,6 +53,7 @@ "A PHP extension stopped the file upload" : "הרחבת PHP עצרה את העלאת הקובץ", "No file uploaded or file size exceeds maximum of %s" : "לא הועלה אף קובץ או שגודל הקובץ חרג מהסף המרבי של %s", "Personal planning and team project organization" : "ארגון אישי וקבוצתי של מיזמים", + "Card details" : "פרטי הכרטיס", "Create new board" : "יצירת לוח חדש", "new board" : "לוח חדש", "Select the board to link to a project" : "נא לבחור את הלוח לקישור למיזם", @@ -83,6 +84,7 @@ "Next 30 days" : "ב־30 הימים הבאים", "No due date" : "ללא תאריך יעד", "Clear filter" : "מחיקת מסנן", + "Hide archived cards" : "הסתרת כרטיסים בארכיון", "Show archived cards" : "הצגת כרטיסים בארכיון", "Toggle compact mode" : "החלפת מצב חסכוני", "Details" : "פרטים", @@ -132,6 +134,7 @@ "Attachments" : "קבצים מצורפים", "Comments" : "תגובות", "Choose attachment" : "בחירת קובץ מצורף", + "Select Date" : "בחירת תאריך", "Modified" : "מועד שינוי", "Created" : "מועד היצירה", "No comments yet. Begin the discussion!" : "אין עדיין הערות. אפשר להתחיל לדון!", @@ -148,7 +151,6 @@ "Archive card" : "העברת כרטיס לארכיון", "Delete card" : "מחיקת כרטיס לארכיון", "Move card" : "העברת כרטיס", - "Card details" : "פרטי הכרטיס", "Move card to another board" : "העברת כרטיס ללוח אחר", "seconds ago" : "לפני מספר שניות", "All boards" : "כל הלוחות", diff --git a/l10n/hr.js b/l10n/hr.js index 84f0f561c..6834b03ff 100644 --- a/l10n/hr.js +++ b/l10n/hr.js @@ -98,6 +98,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Nijedna datoteka nije otpremljena ili veličina datoteke premašuje maksimalnu veličinu od %s", "Personal planning and team project organization" : "Osobno planiranje i organizacija timskih projekata", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck je organizacijski alat za kanban projekte usmjeren na osobno planiranje i organizaciju projekta za timove integrirane s Nextcloudom.\n\n\n- 📥 Dodajte svoje zadatke na kartice i poredajte ih po želji\n- 📄 Zapišite dodatne bilješke u markdown\n- 🔖 Dodijelite oznake za još bolju organizaciju\n- 👥 Dijelite sa svojim timom, prijateljima ili obitelji\n- 📎 Priložite datoteke i ugradite ih u svoj markdown opis\n- 💬 Raspravljajte sa svojim timom putem komentara\n- ⚡ Pratite promjene u strujanju aktivnosti\n- 🚀 Organizirajte svoj projekt", + "Card details" : "Pojedinosti o kartici", "Create new board" : "Stvori novu ploču", "new board" : "nova ploča", "Select the board to link to a project" : "Odaberite ploču za povezivanje s projektom", @@ -128,6 +129,7 @@ OC.L10N.register( "Next 30 days" : "Sljedećih 30 dana", "No due date" : "Nema datuma dospijeća", "Clear filter" : "Ukloni filtar", + "Hide archived cards" : "Sakrij arhivirane kartice", "Show archived cards" : "Prikaži arhivirane kartice", "Toggle compact mode" : "Prebaci u kompaktni način rada", "Details" : "Pojedinosti", @@ -178,6 +180,7 @@ OC.L10N.register( "Attachments" : "Privici", "Comments" : "Komentari", "Choose attachment" : "Odaberi privitak", + "Select Date" : "Odaberi datum", "Modified" : "Promijenjeno", "Created" : "Stvoreno", "No comments yet. Begin the discussion!" : "Nema komentara. Započnite raspravu!", @@ -195,7 +198,6 @@ OC.L10N.register( "Archive card" : "Arhiviraj karticu", "Delete card" : "Izbriši karticu", "Move card" : "Premjesti karticu", - "Card details" : "Pojedinosti o kartici", "Move card to another board" : "Premjesti karticu na drugu ploču", "Select a list" : "Odaberi popis", "seconds ago" : "prije nekoliko sekundi", diff --git a/l10n/hr.json b/l10n/hr.json index c0ed53fca..101aff401 100644 --- a/l10n/hr.json +++ b/l10n/hr.json @@ -96,6 +96,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Nijedna datoteka nije otpremljena ili veličina datoteke premašuje maksimalnu veličinu od %s", "Personal planning and team project organization" : "Osobno planiranje i organizacija timskih projekata", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck je organizacijski alat za kanban projekte usmjeren na osobno planiranje i organizaciju projekta za timove integrirane s Nextcloudom.\n\n\n- 📥 Dodajte svoje zadatke na kartice i poredajte ih po želji\n- 📄 Zapišite dodatne bilješke u markdown\n- 🔖 Dodijelite oznake za još bolju organizaciju\n- 👥 Dijelite sa svojim timom, prijateljima ili obitelji\n- 📎 Priložite datoteke i ugradite ih u svoj markdown opis\n- 💬 Raspravljajte sa svojim timom putem komentara\n- ⚡ Pratite promjene u strujanju aktivnosti\n- 🚀 Organizirajte svoj projekt", + "Card details" : "Pojedinosti o kartici", "Create new board" : "Stvori novu ploču", "new board" : "nova ploča", "Select the board to link to a project" : "Odaberite ploču za povezivanje s projektom", @@ -126,6 +127,7 @@ "Next 30 days" : "Sljedećih 30 dana", "No due date" : "Nema datuma dospijeća", "Clear filter" : "Ukloni filtar", + "Hide archived cards" : "Sakrij arhivirane kartice", "Show archived cards" : "Prikaži arhivirane kartice", "Toggle compact mode" : "Prebaci u kompaktni način rada", "Details" : "Pojedinosti", @@ -176,6 +178,7 @@ "Attachments" : "Privici", "Comments" : "Komentari", "Choose attachment" : "Odaberi privitak", + "Select Date" : "Odaberi datum", "Modified" : "Promijenjeno", "Created" : "Stvoreno", "No comments yet. Begin the discussion!" : "Nema komentara. Započnite raspravu!", @@ -193,7 +196,6 @@ "Archive card" : "Arhiviraj karticu", "Delete card" : "Izbriši karticu", "Move card" : "Premjesti karticu", - "Card details" : "Pojedinosti o kartici", "Move card to another board" : "Premjesti karticu na drugu ploču", "Select a list" : "Odaberi popis", "seconds ago" : "prije nekoliko sekundi", diff --git a/l10n/hu.js b/l10n/hu.js index 8f588f03d..309738ce2 100644 --- a/l10n/hu.js +++ b/l10n/hu.js @@ -74,6 +74,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Nincs fájl feltöltve, vagy a fájl meghaladja a maximumot: %s", "Personal planning and team project organization" : "Személyes tervezés és csapatos projektszervezés", "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" : "A Kártyák egy kanban-stílusú szervezőeszköz, amely a személyes tervezést és a csapatok projektszervezését célozza, a Nextcloudba integrálva.\n\n\n- 📥 Saját feladatok kártyákhoz adása, és azok sorrendezése\n- 📄 További jegyzetek leírása markdownban\n- 🔖 Címkék hozzárendelése a még jobb rendszerezés miatt\n- 👥 Megosztás a csapattal, barátokkal vagy családdal\n- 📎 Fájlok hozzáadása mellékletként, vagy beágyazás a markdown leírásba\n- 💬 Megbeszélés a csapattal hozzászólások használatával\n- ⚡ A változások követése a tevékenységnaplóban\n- 🚀 Rendszerezze a projektjét", + "Card details" : "Kártya részletei", "Create new board" : "Új tábla létrehozása", "new board" : "új tábla", "Select the board to link to a project" : "Válasszon ki egy táblát, amely egy projektre fog hivatkozni", @@ -104,6 +105,7 @@ OC.L10N.register( "Next 30 days" : "Következő 30 nap", "No due date" : "Nincs határidő", "Clear filter" : "Szűrő törlése", + "Hide archived cards" : "Archivált kártyák elrejtése", "Show archived cards" : "Archivált kártyák megjelenítése", "Toggle compact mode" : "Kompakt mód be/ki", "Details" : "Részletek", @@ -153,6 +155,7 @@ OC.L10N.register( "Attachments" : "Mellékletek", "Comments" : "Hozzászólások", "Choose attachment" : "Válasszon mellékletet", + "Select Date" : "Dátum kiválasztása", "Modified" : "Módosítva", "Created" : "Létrehozva", "No comments yet. Begin the discussion!" : "Még nincsenek hozzászólások. Kezdje el a beszélgetést!", @@ -169,7 +172,6 @@ OC.L10N.register( "Archive card" : "Kártya archiválása", "Delete card" : "Kártya törlése", "Move card" : "Kártya áthelyezése", - "Card details" : "Kártya részletei", "Move card to another board" : "Kártya áthelyezése egy másik táblára", "seconds ago" : "másodperce", "All boards" : "Az összes tábla", diff --git a/l10n/hu.json b/l10n/hu.json index a96219647..0b2ca9bc9 100644 --- a/l10n/hu.json +++ b/l10n/hu.json @@ -72,6 +72,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Nincs fájl feltöltve, vagy a fájl meghaladja a maximumot: %s", "Personal planning and team project organization" : "Személyes tervezés és csapatos projektszervezés", "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" : "A Kártyák egy kanban-stílusú szervezőeszköz, amely a személyes tervezést és a csapatok projektszervezését célozza, a Nextcloudba integrálva.\n\n\n- 📥 Saját feladatok kártyákhoz adása, és azok sorrendezése\n- 📄 További jegyzetek leírása markdownban\n- 🔖 Címkék hozzárendelése a még jobb rendszerezés miatt\n- 👥 Megosztás a csapattal, barátokkal vagy családdal\n- 📎 Fájlok hozzáadása mellékletként, vagy beágyazás a markdown leírásba\n- 💬 Megbeszélés a csapattal hozzászólások használatával\n- ⚡ A változások követése a tevékenységnaplóban\n- 🚀 Rendszerezze a projektjét", + "Card details" : "Kártya részletei", "Create new board" : "Új tábla létrehozása", "new board" : "új tábla", "Select the board to link to a project" : "Válasszon ki egy táblát, amely egy projektre fog hivatkozni", @@ -102,6 +103,7 @@ "Next 30 days" : "Következő 30 nap", "No due date" : "Nincs határidő", "Clear filter" : "Szűrő törlése", + "Hide archived cards" : "Archivált kártyák elrejtése", "Show archived cards" : "Archivált kártyák megjelenítése", "Toggle compact mode" : "Kompakt mód be/ki", "Details" : "Részletek", @@ -151,6 +153,7 @@ "Attachments" : "Mellékletek", "Comments" : "Hozzászólások", "Choose attachment" : "Válasszon mellékletet", + "Select Date" : "Dátum kiválasztása", "Modified" : "Módosítva", "Created" : "Létrehozva", "No comments yet. Begin the discussion!" : "Még nincsenek hozzászólások. Kezdje el a beszélgetést!", @@ -167,7 +170,6 @@ "Archive card" : "Kártya archiválása", "Delete card" : "Kártya törlése", "Move card" : "Kártya áthelyezése", - "Card details" : "Kártya részletei", "Move card to another board" : "Kártya áthelyezése egy másik táblára", "seconds ago" : "másodperce", "All boards" : "Az összes tábla", diff --git a/l10n/id.js b/l10n/id.js index 6a3193fe6..df8f9012c 100644 --- a/l10n/id.js +++ b/l10n/id.js @@ -98,6 +98,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Gagal unggah berkas atau ukuran melampaui batas maksimum %s", "Personal planning and team project organization" : "Perencanaan pribadi dan pengelolaan proyek tim", "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" : "Longgok adalah alat pengelolaan bergaya kanban yang dapat digunakan untuk perencanaan pribadi dan pengelolaan proyek bagi tim yang terintegrasi dengan Nextcloud.\n\n\n- 📥 Tambah tugas Anda dalam bentuk kartu berurutan\n- 📄 Tulis catatan dalam format Markdown\n- 🔖 Sematkan label untuk pengelompokan yang lebih baik\n- 👥 Bagikan dengan anggota tim, teman atau keluarga\n- 📎 Lampirkan berkas dan sematkan dalam deskripsi Markdown\n- 💬 Diskusikan dengan tim melalui komentar\n- ⚡ Lacak setiap perubahan pada aliran aktivitas\n- 🚀 Buat proyek Anda terkelola", + "Card details" : "Detail kartu", "Create new board" : "Buat papan baru", "new board" : "papan baru", "Select the board to link to a project" : "Pilih papan untuk ditautkan ke proyek", @@ -194,7 +195,6 @@ OC.L10N.register( "Archive card" : "Mengarsipkan kartu", "Delete card" : "Hapus kartu", "Move card" : "Pindahkan kartu", - "Card details" : "Detail kartu", "Move card to another board" : "Pindahkan kartu ke papan lain", "Select a list" : "Pilih daftar", "seconds ago" : "beberapa detik yang lalu", diff --git a/l10n/id.json b/l10n/id.json index 48987b5d6..df67c5959 100644 --- a/l10n/id.json +++ b/l10n/id.json @@ -96,6 +96,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Gagal unggah berkas atau ukuran melampaui batas maksimum %s", "Personal planning and team project organization" : "Perencanaan pribadi dan pengelolaan proyek tim", "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" : "Longgok adalah alat pengelolaan bergaya kanban yang dapat digunakan untuk perencanaan pribadi dan pengelolaan proyek bagi tim yang terintegrasi dengan Nextcloud.\n\n\n- 📥 Tambah tugas Anda dalam bentuk kartu berurutan\n- 📄 Tulis catatan dalam format Markdown\n- 🔖 Sematkan label untuk pengelompokan yang lebih baik\n- 👥 Bagikan dengan anggota tim, teman atau keluarga\n- 📎 Lampirkan berkas dan sematkan dalam deskripsi Markdown\n- 💬 Diskusikan dengan tim melalui komentar\n- ⚡ Lacak setiap perubahan pada aliran aktivitas\n- 🚀 Buat proyek Anda terkelola", + "Card details" : "Detail kartu", "Create new board" : "Buat papan baru", "new board" : "papan baru", "Select the board to link to a project" : "Pilih papan untuk ditautkan ke proyek", @@ -192,7 +193,6 @@ "Archive card" : "Mengarsipkan kartu", "Delete card" : "Hapus kartu", "Move card" : "Pindahkan kartu", - "Card details" : "Detail kartu", "Move card to another board" : "Pindahkan kartu ke papan lain", "Select a list" : "Pilih daftar", "seconds ago" : "beberapa detik yang lalu", diff --git a/l10n/is.js b/l10n/is.js index bb695f21c..7cf8400b9 100644 --- a/l10n/is.js +++ b/l10n/is.js @@ -74,6 +74,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Engin innsend skrá eða að skráarstærð fór fram úr hámarksstæðinni %s", "Personal planning and team project organization" : "Persónuleg áætlanagerð og skipulag verkefnisvinnu", "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" : "Dekk (e. Deck) er skipulagningartól í kanban-stíl sem ætlað er fyrir verkefna- og persónuupplýsingastjórnun hópvinnuteyma innan Nextcloud.\n\n\n- 📥 Settu verkefnin þín á spjöld of raðaðu þeim á ýmsa vegu\n- 📄 Skrifaðu niður minnispunkta í markdown-kóða\n- 🔖 Úthlutaðu merkjum/skýringum til að bæta skipulagninguna\n- 👥 Deildu með vinnuhópnum, vinum eða fjölskyldu\n- 📎 Hengdu við skrár og ívefðu þær í lýsinguna með markdown-kóða\n- 💬 Ræddu málin við hópinn þinn með athugasemdum\n- ⚡ Haltu utan um breytingar í virknistreyminu\n- 🚀 Haltu verkefnunum þínum skipulögðum", + "Card details" : "Nánar um spjald", "Create new board" : "Búa til nýtt borð", "new board" : "Nýtt borð", "Select the board to link to a project" : "Veldu borðið sem á að tengja við verkefnið", @@ -96,6 +97,7 @@ OC.L10N.register( "Next 7 days" : "Næstu 7 daga", "Next 30 days" : "Næstu 30 daga", "No due date" : "Enginn lokadagur", + "Hide archived cards" : "Fela spjöld í geymslu", "Show archived cards" : "Sýna spjöld í geymslu", "Toggle compact mode" : "Víxla þjöppuðum ham af/á", "Details" : "Details", @@ -133,6 +135,7 @@ OC.L10N.register( "Formatting help" : "Hjálp við að sníða", "Attachments" : "Viðhengi", "Comments" : "Athugasemdir", + "Select Date" : "Veldu dag", "Modified" : "Breytt", "Created" : "Búið til þann", "No comments yet. Begin the discussion!" : "Engar athugasemdir ennþá. Byrjaðu umræðuna!", @@ -147,7 +150,6 @@ OC.L10N.register( "Archive card" : "Setja spjald í geymslu", "Delete card" : "Eyða spjaldi", "Move card" : "Færa spjald", - "Card details" : "Nánar um spjald", "seconds ago" : "sekúndum síðan", "All boards" : "Öll borð", "Archived boards" : "Borð í geymslu", diff --git a/l10n/is.json b/l10n/is.json index ac0df8ecb..beb630a19 100644 --- a/l10n/is.json +++ b/l10n/is.json @@ -72,6 +72,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Engin innsend skrá eða að skráarstærð fór fram úr hámarksstæðinni %s", "Personal planning and team project organization" : "Persónuleg áætlanagerð og skipulag verkefnisvinnu", "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" : "Dekk (e. Deck) er skipulagningartól í kanban-stíl sem ætlað er fyrir verkefna- og persónuupplýsingastjórnun hópvinnuteyma innan Nextcloud.\n\n\n- 📥 Settu verkefnin þín á spjöld of raðaðu þeim á ýmsa vegu\n- 📄 Skrifaðu niður minnispunkta í markdown-kóða\n- 🔖 Úthlutaðu merkjum/skýringum til að bæta skipulagninguna\n- 👥 Deildu með vinnuhópnum, vinum eða fjölskyldu\n- 📎 Hengdu við skrár og ívefðu þær í lýsinguna með markdown-kóða\n- 💬 Ræddu málin við hópinn þinn með athugasemdum\n- ⚡ Haltu utan um breytingar í virknistreyminu\n- 🚀 Haltu verkefnunum þínum skipulögðum", + "Card details" : "Nánar um spjald", "Create new board" : "Búa til nýtt borð", "new board" : "Nýtt borð", "Select the board to link to a project" : "Veldu borðið sem á að tengja við verkefnið", @@ -94,6 +95,7 @@ "Next 7 days" : "Næstu 7 daga", "Next 30 days" : "Næstu 30 daga", "No due date" : "Enginn lokadagur", + "Hide archived cards" : "Fela spjöld í geymslu", "Show archived cards" : "Sýna spjöld í geymslu", "Toggle compact mode" : "Víxla þjöppuðum ham af/á", "Details" : "Details", @@ -131,6 +133,7 @@ "Formatting help" : "Hjálp við að sníða", "Attachments" : "Viðhengi", "Comments" : "Athugasemdir", + "Select Date" : "Veldu dag", "Modified" : "Breytt", "Created" : "Búið til þann", "No comments yet. Begin the discussion!" : "Engar athugasemdir ennþá. Byrjaðu umræðuna!", @@ -145,7 +148,6 @@ "Archive card" : "Setja spjald í geymslu", "Delete card" : "Eyða spjaldi", "Move card" : "Færa spjald", - "Card details" : "Nánar um spjald", "seconds ago" : "sekúndum síðan", "All boards" : "Öll borð", "Archived boards" : "Borð í geymslu", diff --git a/l10n/it.js b/l10n/it.js index 92371247c..6bfc83a7f 100644 --- a/l10n/it.js +++ b/l10n/it.js @@ -67,6 +67,7 @@ OC.L10N.register( "Deck" : "Deck", "Changes in the Deck app" : "Modifiche nell'applicazione Deck", "A comment was created on a card" : "Un commento è stato creato su una scheda", + "Upcoming cards" : "Prossime schede", "Personal" : "Personale", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La scheda \"%s\" in \"%s\" ti è stata assegnata da %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} ti ha assegnato la scheda \"%s\" in \"%s\".", @@ -98,6 +99,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Nessun file caricato o la dimensione del file supera il massimo di %s", "Personal planning and team project organization" : "Pianificazione personale e organizzazione dei progetti di squadra", "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 è uno strumento di organizzazione in stile kanban destinato alla pianificazione personale e all'organizzazione di progetti per squadre integrato con Nextcloud.\n\n\n- 📥 Aggiungi le tue attività alle schede e tienile in ordine\n- 📄 Scrivi note aggiuntive in markdown\n- 🔖 Assegna etichette per un'organizzazione ancora migliore\n- 👥 Condividi con la tua squadra, amici o famiglia\n- 📎 Allega file e integrali nella tua descrizione markdown\n- 💬 Discuti con la tua squadra utilizzando i commenti\n- ⚡ Tieni traccia dei cambiamenti nel flusso delle attività\n- 🚀 Organizza il tuo progetto", + "Card details" : "Dettagli scheda", "Create new board" : "Crea una nuova lavagna", "new board" : "nuova lavagna", "Select the board to link to a project" : "Seleziona la lavagna da collegare a un progetto", @@ -129,6 +131,7 @@ OC.L10N.register( "Next 30 days" : "30 giorni successivi", "No due date" : "Nessuna data di scadenza", "Clear filter" : "Pulisci il filtro", + "Hide archived cards" : "Nascondi le schede archiviate", "Show archived cards" : "Mostra le carte archiviate", "Toggle compact mode" : "Commuta la modalità compatta", "Details" : "Dettagli", @@ -157,6 +160,7 @@ OC.L10N.register( "Add card" : "Aggiungi scheda", "Archive all cards in this list" : "Archivia tutte le schede in questo elenco", "Add a new card" : "Aggiungi una nuova scheda", + "Card name" : "Nome scheda", "Edit" : "Modifica", "Add a new tag" : "Aggiungi una nuova etichetta", "title and color value must be provided" : "devono essere forniti il titolo e il valore del colore", @@ -166,6 +170,8 @@ OC.L10N.register( "Add this attachment" : "Aggiungi questo allegato", "Delete Attachment" : "Elimina allegato", "Restore Attachment" : "Ripristina allegato", + "Open in sidebar view" : "Apri nella barra laterale", + "Open in bigger view" : "Apri in una vista più grande", "Assign a tag to this card…" : "Assegna un'etichetta a questa scheda…", "Assign to users" : "Assegna a utenti", "Assign to users/groups/circles" : "Assegna a utenti/gruppi/cerchie", @@ -183,6 +189,7 @@ OC.L10N.register( "Attachments" : "Allegati", "Comments" : "Commenti", "Choose attachment" : "Scegli allegato", + "Select Date" : "Seleziona data", "Modified" : "Modificato", "Created" : "Creato il", "No comments yet. Begin the discussion!" : "Ancora nessun commento. Inizia la discussione.", @@ -200,13 +207,13 @@ OC.L10N.register( "Archive card" : "Archivia scheda", "Delete card" : "Elimina scheda", "Move card" : "Sposta scheda", - "Card details" : "Dettagli scheda", "Move card to another board" : "Sposta scheda in un'altra lavagna", "Select a list" : "Seleziona un elenco", "seconds ago" : "secondi fa", "All boards" : "Tutte le lavagne", "Archived boards" : "Lavagne archiviate", "Shared with you" : "Condiviso con te", + "Use modal card view" : "Usa la vista modale delle schede", "Limit deck usage of groups" : "Limita utilizzo di Deck dei gruppi", "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." : "La limitazione di Deck impedirà agli utenti che non fanno parte di tali gruppi di creare le proprie lavagne. Gli utenti saranno ancora in grado di lavorare sulle lavagne che sono state condivise con loro,", "New board title" : "Titolo nuova lavagna", @@ -225,6 +232,8 @@ OC.L10N.register( "Tomorrow" : "Domani", "This week" : "Questa settimana", "No due" : "Nessuna scadenza", + "upcoming cards" : "prossime schede", + "No upcoming cards" : "Nessuna scheda rimasta", "Link to a board" : "Collega a una lavagna", "Link to a card" : " Collega a una scheda", "Something went wrong" : "Qualcosa non ha funzionato", diff --git a/l10n/it.json b/l10n/it.json index 1e7f103bc..6f0341fdb 100644 --- a/l10n/it.json +++ b/l10n/it.json @@ -65,6 +65,7 @@ "Deck" : "Deck", "Changes in the Deck app" : "Modifiche nell'applicazione Deck", "A comment was created on a card" : "Un commento è stato creato su una scheda", + "Upcoming cards" : "Prossime schede", "Personal" : "Personale", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La scheda \"%s\" in \"%s\" ti è stata assegnata da %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} ti ha assegnato la scheda \"%s\" in \"%s\".", @@ -96,6 +97,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Nessun file caricato o la dimensione del file supera il massimo di %s", "Personal planning and team project organization" : "Pianificazione personale e organizzazione dei progetti di squadra", "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 è uno strumento di organizzazione in stile kanban destinato alla pianificazione personale e all'organizzazione di progetti per squadre integrato con Nextcloud.\n\n\n- 📥 Aggiungi le tue attività alle schede e tienile in ordine\n- 📄 Scrivi note aggiuntive in markdown\n- 🔖 Assegna etichette per un'organizzazione ancora migliore\n- 👥 Condividi con la tua squadra, amici o famiglia\n- 📎 Allega file e integrali nella tua descrizione markdown\n- 💬 Discuti con la tua squadra utilizzando i commenti\n- ⚡ Tieni traccia dei cambiamenti nel flusso delle attività\n- 🚀 Organizza il tuo progetto", + "Card details" : "Dettagli scheda", "Create new board" : "Crea una nuova lavagna", "new board" : "nuova lavagna", "Select the board to link to a project" : "Seleziona la lavagna da collegare a un progetto", @@ -127,6 +129,7 @@ "Next 30 days" : "30 giorni successivi", "No due date" : "Nessuna data di scadenza", "Clear filter" : "Pulisci il filtro", + "Hide archived cards" : "Nascondi le schede archiviate", "Show archived cards" : "Mostra le carte archiviate", "Toggle compact mode" : "Commuta la modalità compatta", "Details" : "Dettagli", @@ -155,6 +158,7 @@ "Add card" : "Aggiungi scheda", "Archive all cards in this list" : "Archivia tutte le schede in questo elenco", "Add a new card" : "Aggiungi una nuova scheda", + "Card name" : "Nome scheda", "Edit" : "Modifica", "Add a new tag" : "Aggiungi una nuova etichetta", "title and color value must be provided" : "devono essere forniti il titolo e il valore del colore", @@ -164,6 +168,8 @@ "Add this attachment" : "Aggiungi questo allegato", "Delete Attachment" : "Elimina allegato", "Restore Attachment" : "Ripristina allegato", + "Open in sidebar view" : "Apri nella barra laterale", + "Open in bigger view" : "Apri in una vista più grande", "Assign a tag to this card…" : "Assegna un'etichetta a questa scheda…", "Assign to users" : "Assegna a utenti", "Assign to users/groups/circles" : "Assegna a utenti/gruppi/cerchie", @@ -181,6 +187,7 @@ "Attachments" : "Allegati", "Comments" : "Commenti", "Choose attachment" : "Scegli allegato", + "Select Date" : "Seleziona data", "Modified" : "Modificato", "Created" : "Creato il", "No comments yet. Begin the discussion!" : "Ancora nessun commento. Inizia la discussione.", @@ -198,13 +205,13 @@ "Archive card" : "Archivia scheda", "Delete card" : "Elimina scheda", "Move card" : "Sposta scheda", - "Card details" : "Dettagli scheda", "Move card to another board" : "Sposta scheda in un'altra lavagna", "Select a list" : "Seleziona un elenco", "seconds ago" : "secondi fa", "All boards" : "Tutte le lavagne", "Archived boards" : "Lavagne archiviate", "Shared with you" : "Condiviso con te", + "Use modal card view" : "Usa la vista modale delle schede", "Limit deck usage of groups" : "Limita utilizzo di Deck dei gruppi", "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." : "La limitazione di Deck impedirà agli utenti che non fanno parte di tali gruppi di creare le proprie lavagne. Gli utenti saranno ancora in grado di lavorare sulle lavagne che sono state condivise con loro,", "New board title" : "Titolo nuova lavagna", @@ -223,6 +230,8 @@ "Tomorrow" : "Domani", "This week" : "Questa settimana", "No due" : "Nessuna scadenza", + "upcoming cards" : "prossime schede", + "No upcoming cards" : "Nessuna scheda rimasta", "Link to a board" : "Collega a una lavagna", "Link to a card" : " Collega a una scheda", "Something went wrong" : "Qualcosa non ha funzionato", diff --git a/l10n/ja.js b/l10n/ja.js index c27d0d8ed..609455351 100644 --- a/l10n/ja.js +++ b/l10n/ja.js @@ -98,6 +98,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "ファイルがアップロードされていないか、ファイルサイズが最大 %s を超えています", "Personal planning and team project organization" : "個人的な計画とチームのプロジェクト編成", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "DeckはNextcloudと統合した、チームの個人計画とプロジェクトの組織化を目的としたカンバンスタイルの組織ツールです。\n\n\n- 📥 タスクをカードに追加して整理する\n- 📄 マークダウンで追加のメモを書き留めます\n- 🔖 より良い組織のためにラベルを割り当てる\n- 👥 あなたのチーム、友人、家族と共有する\n- 📎 ファイルを添付してマークダウンの説明に埋め込む\n- 💬 コメントを使ってあなたのチームと話し合う\n- ⚡ アクティビティの流れの変化を追跡する\n- 🚀 プロジェクトを整理する", + "Card details" : "カード詳細", "Create new board" : "新しいボードを作成", "new board" : "新しいボード", "Select the board to link to a project" : "プロジェクトにリンクするボードを選択", @@ -121,6 +122,7 @@ OC.L10N.register( "Apply filter" : "フィルターを適用", "Filter by tag" : "タグによるフィルター", "Filter by assigned user" : "割当ユーザーでフィルター", + "Unassigned" : "未割り当て", "Filter by due date" : "期限でフィルター", "Overdue" : "期限超過", "Next 24 hours" : "次の24時間", @@ -128,6 +130,7 @@ OC.L10N.register( "Next 30 days" : "次の30日間", "No due date" : "期限なし", "Clear filter" : "フィルターをクリア", + "Hide archived cards" : "アーカイブされたカードを非表示にする", "Show archived cards" : "アーカイブされたカードを表示する", "Toggle compact mode" : "コンパクトモードの切り替え", "Details" : "詳細", @@ -178,6 +181,7 @@ OC.L10N.register( "Attachments" : "添付ファイル", "Comments" : "コメント", "Choose attachment" : "添付ファイルを選択", + "Select Date" : "日付を選択", "Modified" : "更新日時", "Created" : "作成時刻", "No comments yet. Begin the discussion!" : "まだコメントはありません。議論を始めましょう!", @@ -195,7 +199,6 @@ OC.L10N.register( "Archive card" : "カードをアーカイブ", "Delete card" : "カードを削除する", "Move card" : "カードの移動", - "Card details" : "カード詳細", "Move card to another board" : "カードを他のボードに移動", "Select a list" : "リストを選択", "seconds ago" : "数秒前", diff --git a/l10n/ja.json b/l10n/ja.json index e0f65e639..1d6f7c11a 100644 --- a/l10n/ja.json +++ b/l10n/ja.json @@ -96,6 +96,7 @@ "No file uploaded or file size exceeds maximum of %s" : "ファイルがアップロードされていないか、ファイルサイズが最大 %s を超えています", "Personal planning and team project organization" : "個人的な計画とチームのプロジェクト編成", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "DeckはNextcloudと統合した、チームの個人計画とプロジェクトの組織化を目的としたカンバンスタイルの組織ツールです。\n\n\n- 📥 タスクをカードに追加して整理する\n- 📄 マークダウンで追加のメモを書き留めます\n- 🔖 より良い組織のためにラベルを割り当てる\n- 👥 あなたのチーム、友人、家族と共有する\n- 📎 ファイルを添付してマークダウンの説明に埋め込む\n- 💬 コメントを使ってあなたのチームと話し合う\n- ⚡ アクティビティの流れの変化を追跡する\n- 🚀 プロジェクトを整理する", + "Card details" : "カード詳細", "Create new board" : "新しいボードを作成", "new board" : "新しいボード", "Select the board to link to a project" : "プロジェクトにリンクするボードを選択", @@ -119,6 +120,7 @@ "Apply filter" : "フィルターを適用", "Filter by tag" : "タグによるフィルター", "Filter by assigned user" : "割当ユーザーでフィルター", + "Unassigned" : "未割り当て", "Filter by due date" : "期限でフィルター", "Overdue" : "期限超過", "Next 24 hours" : "次の24時間", @@ -126,6 +128,7 @@ "Next 30 days" : "次の30日間", "No due date" : "期限なし", "Clear filter" : "フィルターをクリア", + "Hide archived cards" : "アーカイブされたカードを非表示にする", "Show archived cards" : "アーカイブされたカードを表示する", "Toggle compact mode" : "コンパクトモードの切り替え", "Details" : "詳細", @@ -176,6 +179,7 @@ "Attachments" : "添付ファイル", "Comments" : "コメント", "Choose attachment" : "添付ファイルを選択", + "Select Date" : "日付を選択", "Modified" : "更新日時", "Created" : "作成時刻", "No comments yet. Begin the discussion!" : "まだコメントはありません。議論を始めましょう!", @@ -193,7 +197,6 @@ "Archive card" : "カードをアーカイブ", "Delete card" : "カードを削除する", "Move card" : "カードの移動", - "Card details" : "カード詳細", "Move card to another board" : "カードを他のボードに移動", "Select a list" : "リストを選択", "seconds ago" : "数秒前", diff --git a/l10n/ka_GE.js b/l10n/ka_GE.js index a6e077b73..0ea68e51e 100644 --- a/l10n/ka_GE.js +++ b/l10n/ka_GE.js @@ -20,6 +20,7 @@ OC.L10N.register( "File already exists" : "ფაილი უკვე არსებობს", "Do you want to overwrite it?" : "გსურთ მისი გადაწერა?", "Filter by tag" : "ფილტრი ტეგებით", + "Hide archived cards" : "არქივირებული ბარათების დამალვა", "Show archived cards" : "არქივირებული ბარათების ჩვენება", "Details" : "დეტალები", "Sharing" : "გაზიარება", diff --git a/l10n/ka_GE.json b/l10n/ka_GE.json index 6ce64a563..88f890797 100644 --- a/l10n/ka_GE.json +++ b/l10n/ka_GE.json @@ -18,6 +18,7 @@ "File already exists" : "ფაილი უკვე არსებობს", "Do you want to overwrite it?" : "გსურთ მისი გადაწერა?", "Filter by tag" : "ფილტრი ტეგებით", + "Hide archived cards" : "არქივირებული ბარათების დამალვა", "Show archived cards" : "არქივირებული ბარათების ჩვენება", "Details" : "დეტალები", "Sharing" : "გაზიარება", diff --git a/l10n/ko.js b/l10n/ko.js index 267e363f7..59a2e7a43 100644 --- a/l10n/ko.js +++ b/l10n/ko.js @@ -22,6 +22,7 @@ OC.L10N.register( "Missing a temporary folder" : "임시 폴더 없음", "Could not write file to disk" : "디스크에 파일을 쓸 수 없음", "A PHP extension stopped the file upload" : "PHP 확장 기능에서 파일 업로드를 차단함", + "Card details" : "카드 세부사항", "Create new board" : "새 게시판 만들기", "new board" : "새로운 보드", "Search by board title" : "보드 제목으로 검색", @@ -50,6 +51,7 @@ OC.L10N.register( "Next 7 days" : "다음 7일 동안", "Next 30 days" : "다음 30일 동안", "No due date" : "기한 없음", + "Hide archived cards" : "보관된 카드 숨기기", "Show archived cards" : "보관된 카드 보기", "Details" : "세부사항", "Sharing" : "공유", @@ -72,6 +74,7 @@ OC.L10N.register( "Formatting help" : "서식 도움말", "Attachments" : "첨부파일", "Comments" : "댓글", + "Select Date" : "날짜 선택", "Modified" : "수정한 날짜", "Created" : "생성됨", "Save" : "저장", @@ -81,7 +84,6 @@ OC.L10N.register( "Archive card" : "보관 카드", "Delete card" : "카드 삭제", "Move card" : "카드 이동", - "Card details" : "카드 세부사항", "seconds ago" : "초 전", "All boards" : "모든 보드", "Archived boards" : "보관된 게시판", diff --git a/l10n/ko.json b/l10n/ko.json index 572c59615..ae0512773 100644 --- a/l10n/ko.json +++ b/l10n/ko.json @@ -20,6 +20,7 @@ "Missing a temporary folder" : "임시 폴더 없음", "Could not write file to disk" : "디스크에 파일을 쓸 수 없음", "A PHP extension stopped the file upload" : "PHP 확장 기능에서 파일 업로드를 차단함", + "Card details" : "카드 세부사항", "Create new board" : "새 게시판 만들기", "new board" : "새로운 보드", "Search by board title" : "보드 제목으로 검색", @@ -48,6 +49,7 @@ "Next 7 days" : "다음 7일 동안", "Next 30 days" : "다음 30일 동안", "No due date" : "기한 없음", + "Hide archived cards" : "보관된 카드 숨기기", "Show archived cards" : "보관된 카드 보기", "Details" : "세부사항", "Sharing" : "공유", @@ -70,6 +72,7 @@ "Formatting help" : "서식 도움말", "Attachments" : "첨부파일", "Comments" : "댓글", + "Select Date" : "날짜 선택", "Modified" : "수정한 날짜", "Created" : "생성됨", "Save" : "저장", @@ -79,7 +82,6 @@ "Archive card" : "보관 카드", "Delete card" : "카드 삭제", "Move card" : "카드 이동", - "Card details" : "카드 세부사항", "seconds ago" : "초 전", "All boards" : "모든 보드", "Archived boards" : "보관된 게시판", diff --git a/l10n/lt_LT.js b/l10n/lt_LT.js index 5685b88dc..45a60679e 100644 --- a/l10n/lt_LT.js +++ b/l10n/lt_LT.js @@ -71,6 +71,7 @@ OC.L10N.register( "A PHP extension stopped the file upload" : "PHP plėtinys sustabdė failo įkėlimą", "No file uploaded or file size exceeds maximum of %s" : "Neįkeltas joks failas arba failo dydis viršija maksimalų %s dydį", "Personal planning and team project organization" : "Asmeninis planavimas ir komandinių projektų organizavimas", + "Card details" : "Išsamiau apie kortelę", "Create new board" : "Sukurti naują lentą", "new board" : "nauja lenta", "Select the board to link to a project" : "Pasirinkite lentą, kurią susieti su projektu", @@ -100,6 +101,7 @@ OC.L10N.register( "Next 30 days" : "Artimiausios 30 dienų", "No due date" : "Be galutinio termino", "Clear filter" : "Išvalyti filtrą", + "Hide archived cards" : "Slėpti archyvuotas korteles", "Show archived cards" : "Rodyti archyvuotas korteles", "Toggle compact mode" : "Perjungti kompaktišką veikseną", "Details" : "Išsamiau", @@ -149,6 +151,7 @@ OC.L10N.register( "Attachments" : "Priedai", "Comments" : "Komentarai", "Choose attachment" : "Pasirinkite priedą", + "Select Date" : "Pasirinkti datą", "Modified" : "Pakeistas", "Created" : "Sukurta", "No comments yet. Begin the discussion!" : "Kol kas komentarų nėra. Pradėkite diskusiją!", @@ -164,7 +167,6 @@ OC.L10N.register( "Archive card" : "Archyvuoti kortelę", "Delete card" : "Ištrinti kortelę", "Move card" : "Perkelti kortelę", - "Card details" : "Išsamiau apie kortelę", "Move card to another board" : "Perkelti kortelę į kitą lentą", "seconds ago" : "prieš keletą sekundžių", "All boards" : "Visos lentos", diff --git a/l10n/lt_LT.json b/l10n/lt_LT.json index c7e9f0f45..a5bea2a81 100644 --- a/l10n/lt_LT.json +++ b/l10n/lt_LT.json @@ -69,6 +69,7 @@ "A PHP extension stopped the file upload" : "PHP plėtinys sustabdė failo įkėlimą", "No file uploaded or file size exceeds maximum of %s" : "Neįkeltas joks failas arba failo dydis viršija maksimalų %s dydį", "Personal planning and team project organization" : "Asmeninis planavimas ir komandinių projektų organizavimas", + "Card details" : "Išsamiau apie kortelę", "Create new board" : "Sukurti naują lentą", "new board" : "nauja lenta", "Select the board to link to a project" : "Pasirinkite lentą, kurią susieti su projektu", @@ -98,6 +99,7 @@ "Next 30 days" : "Artimiausios 30 dienų", "No due date" : "Be galutinio termino", "Clear filter" : "Išvalyti filtrą", + "Hide archived cards" : "Slėpti archyvuotas korteles", "Show archived cards" : "Rodyti archyvuotas korteles", "Toggle compact mode" : "Perjungti kompaktišką veikseną", "Details" : "Išsamiau", @@ -147,6 +149,7 @@ "Attachments" : "Priedai", "Comments" : "Komentarai", "Choose attachment" : "Pasirinkite priedą", + "Select Date" : "Pasirinkti datą", "Modified" : "Pakeistas", "Created" : "Sukurta", "No comments yet. Begin the discussion!" : "Kol kas komentarų nėra. Pradėkite diskusiją!", @@ -162,7 +165,6 @@ "Archive card" : "Archyvuoti kortelę", "Delete card" : "Ištrinti kortelę", "Move card" : "Perkelti kortelę", - "Card details" : "Išsamiau apie kortelę", "Move card to another board" : "Perkelti kortelę į kitą lentą", "seconds ago" : "prieš keletą sekundžių", "All boards" : "Visos lentos", diff --git a/l10n/lv.js b/l10n/lv.js index 4532f10f5..916a84e8e 100644 --- a/l10n/lv.js +++ b/l10n/lv.js @@ -12,6 +12,7 @@ OC.L10N.register( "Cancel" : "Atcelt", "File already exists" : "Datne jau pastāv", "Do you want to overwrite it?" : "Vai tu gribi pārrakstīt to?", + "Hide archived cards" : "Slēpt arhivētās kartes", "Show archived cards" : "Rādīt arhivētās kartes", "Details" : "Detaļas", "Sharing" : "Koplietošana", @@ -28,6 +29,7 @@ OC.L10N.register( "Description" : "Apraksts", "Attachments" : "Pielikumi", "Comments" : "Komentāri", + "Select Date" : "Izvēlieties datumu", "Modified" : "Mainīts", "Created" : "Izveidots", "Save" : "Saglabāt", diff --git a/l10n/lv.json b/l10n/lv.json index 7129ce1da..bdddf5daa 100644 --- a/l10n/lv.json +++ b/l10n/lv.json @@ -10,6 +10,7 @@ "Cancel" : "Atcelt", "File already exists" : "Datne jau pastāv", "Do you want to overwrite it?" : "Vai tu gribi pārrakstīt to?", + "Hide archived cards" : "Slēpt arhivētās kartes", "Show archived cards" : "Rādīt arhivētās kartes", "Details" : "Detaļas", "Sharing" : "Koplietošana", @@ -26,6 +27,7 @@ "Description" : "Apraksts", "Attachments" : "Pielikumi", "Comments" : "Komentāri", + "Select Date" : "Izvēlieties datumu", "Modified" : "Mainīts", "Created" : "Izveidots", "Save" : "Saglabāt", diff --git a/l10n/mk.js b/l10n/mk.js index 9a640bc16..30ee1b3af 100644 --- a/l10n/mk.js +++ b/l10n/mk.js @@ -25,6 +25,7 @@ OC.L10N.register( "Upload attachment" : "Прикачи прилог", "Description" : "Опис", "Comments" : "Коментари", + "Select Date" : "Избери датум", "Modified" : "Изменето", "Save" : "Зачувај", "Reply" : "Одговор", diff --git a/l10n/mk.json b/l10n/mk.json index 4ba5161b4..2be50cba6 100644 --- a/l10n/mk.json +++ b/l10n/mk.json @@ -23,6 +23,7 @@ "Upload attachment" : "Прикачи прилог", "Description" : "Опис", "Comments" : "Коментари", + "Select Date" : "Избери датум", "Modified" : "Изменето", "Save" : "Зачувај", "Reply" : "Одговор", diff --git a/l10n/mn.js b/l10n/mn.js index 881cd821d..3b89e3818 100644 --- a/l10n/mn.js +++ b/l10n/mn.js @@ -9,6 +9,7 @@ OC.L10N.register( "Later" : "Хойшлуулах", "Done" : "Хийсэн", "Cancel" : "болиулах", + "Hide archived cards" : "Архивлагдсан картуудыг нуух", "Show archived cards" : "Архивлагдсан картуудыг харах", "Details" : "Дэлгэрэнгүй", "Sharing" : "Түгээх", diff --git a/l10n/mn.json b/l10n/mn.json index 58c1b667b..ecafd92ca 100644 --- a/l10n/mn.json +++ b/l10n/mn.json @@ -7,6 +7,7 @@ "Later" : "Хойшлуулах", "Done" : "Хийсэн", "Cancel" : "болиулах", + "Hide archived cards" : "Архивлагдсан картуудыг нуух", "Show archived cards" : "Архивлагдсан картуудыг харах", "Details" : "Дэлгэрэнгүй", "Sharing" : "Түгээх", diff --git a/l10n/nb.js b/l10n/nb.js index 9b4ceb249..0df134767 100644 --- a/l10n/nb.js +++ b/l10n/nb.js @@ -77,7 +77,14 @@ OC.L10N.register( "Do you want to overwrite it?" : "Vil du overskrive?", "Archived cards" : "Arkiver tavle", "Filter by tag" : "Filtrer på knagg", + "Filter by assigned user" : "Filtrer på tildelt bruker", + "Unassigned" : "Ikke tildelt", + "Filter by due date" : "Filtrer på forfallsdato", "Overdue" : "Utløpt", + "Next 7 days" : "Neste 7 dager", + "Next 30 days" : "Neste 30 dager", + "No due date" : "Ingen forfallsdato", + "Hide archived cards" : "Skjul arkiverte kort", "Show archived cards" : "Vis arkiverkte kort", "Toggle compact mode" : "Endre kompakt modus", "Details" : "Detaljer", @@ -102,6 +109,7 @@ OC.L10N.register( "Formatting help" : "Formateringshjelp", "Attachments" : "Vedlegg", "Comments" : "Kommentarer", + "Select Date" : "Velg dato", "Modified" : "Endret", "Created" : "Opprettet", "Save" : "Lagre", @@ -111,6 +119,7 @@ OC.L10N.register( "Unarchive card" : "Hent kort fra arkiv", "Archive card" : "Arkiver kort", "Delete card" : "Slett kort", + "Move card" : "Flytt kort", "seconds ago" : "sekunder siden", "Archived boards" : "Arkiverte tavler", "Shared with you" : "Delt med deg", diff --git a/l10n/nb.json b/l10n/nb.json index 50ec091f6..a3ef3d93e 100644 --- a/l10n/nb.json +++ b/l10n/nb.json @@ -75,7 +75,14 @@ "Do you want to overwrite it?" : "Vil du overskrive?", "Archived cards" : "Arkiver tavle", "Filter by tag" : "Filtrer på knagg", + "Filter by assigned user" : "Filtrer på tildelt bruker", + "Unassigned" : "Ikke tildelt", + "Filter by due date" : "Filtrer på forfallsdato", "Overdue" : "Utløpt", + "Next 7 days" : "Neste 7 dager", + "Next 30 days" : "Neste 30 dager", + "No due date" : "Ingen forfallsdato", + "Hide archived cards" : "Skjul arkiverte kort", "Show archived cards" : "Vis arkiverkte kort", "Toggle compact mode" : "Endre kompakt modus", "Details" : "Detaljer", @@ -100,6 +107,7 @@ "Formatting help" : "Formateringshjelp", "Attachments" : "Vedlegg", "Comments" : "Kommentarer", + "Select Date" : "Velg dato", "Modified" : "Endret", "Created" : "Opprettet", "Save" : "Lagre", @@ -109,6 +117,7 @@ "Unarchive card" : "Hent kort fra arkiv", "Archive card" : "Arkiver kort", "Delete card" : "Slett kort", + "Move card" : "Flytt kort", "seconds ago" : "sekunder siden", "Archived boards" : "Arkiverte tavler", "Shared with you" : "Delt med deg", diff --git a/l10n/nl.js b/l10n/nl.js index 79979488a..cac91402e 100644 --- a/l10n/nl.js +++ b/l10n/nl.js @@ -67,6 +67,7 @@ OC.L10N.register( "Deck" : "Deck", "Changes in the Deck app" : "Wijzigingen in de Deck app", "A comment was created on a card" : "Er is commentaar gegeven op een card", + "Upcoming cards" : "Aanstaande kaarten", "Personal" : "Persoonlijk", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "De kaart \"%s\" op \"%s\" is aan jou toegewezen door %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} heeft kaart \"%s\" op \"%s\" aan jou toegewezen.", @@ -98,6 +99,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Geen bestand ge-upload of de grootte is meer dan het maximum van %s", "Personal planning and team project organization" : "Persoonlijke planning en inrichting voor teamproject", "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 is een soort kanban organisatietool gericht op persoonlijke planning en projectorganisatie voor teams geïntegreerd in Nextcloud.\n\n\n- 📥 Voeg taken toe aan kaarten en sorteer ze\n- 📄 Schrijf extra notities in markdown\n- 🔖 Ken labels toe voor betere organisatie\n- 👥 Deel met je team, vrienden of familie\n- 📎 Voeg bestanden toe en plaats ze in je markdown beschrijving\n- 💬 Discussieer binnen je team met reacties\n- ⚡ Volg de wijzigingen in het activiteiten kanaal\n- 🚀 Organiseer je project", + "Card details" : "Kaart details", "Create new board" : "Nieuw bord maken", "new board" : "nieuw bord", "Select the board to link to a project" : "Kies het bord om met een project te verbinden", @@ -129,6 +131,7 @@ OC.L10N.register( "Next 30 days" : "Komende 30 dagen", "No due date" : "Geen vervaldatum", "Clear filter" : "Filter leegmaken", + "Hide archived cards" : "Gearchiveerde kaarten verbergen", "Show archived cards" : "Gearchiveerde kaarten weergeven", "Toggle compact mode" : "Omschakelen compacte modus", "Details" : "Details", @@ -152,9 +155,12 @@ OC.L10N.register( "Can manage" : "Kan beheren", "Delete" : "Verwijderen", "Add a new list" : "Voeg een nieuwe lijst toe", + "Archive all cards" : "Alle kaarten archiveren", "Delete list" : "Lijst verwijderen", "Add card" : "Toevoegen kaart", + "Archive all cards in this list" : "Alle kaarten in deze lijst archiveren", "Add a new card" : "Nieuwe kaart toevoegen", + "Card name" : "Kaartnaam", "Edit" : "Bewerken", "Add a new tag" : "Nieuwe tag toevoegen", "title and color value must be provided" : "titel- en kleurwaarde moet gegeven worden", @@ -164,6 +170,8 @@ OC.L10N.register( "Add this attachment" : "Voeg deze bijlage toe", "Delete Attachment" : "Verwijderen bijlage", "Restore Attachment" : "Herstellen bijlage", + "Open in sidebar view" : "Open in zijbalk", + "Open in bigger view" : "Open in grotere weergave", "Assign a tag to this card…" : "Wijs een label toe aan deze kaart...", "Assign to users" : "Toewijzen aan gebruikers", "Assign to users/groups/circles" : "Toewijzen aan gebruikers/groepen/kringen", @@ -181,6 +189,7 @@ OC.L10N.register( "Attachments" : "Bijlagen", "Comments" : "Reacties", "Choose attachment" : "Kies bijlage", + "Select Date" : "Selecteer datum", "Modified" : "Aangepast", "Created" : "Gemaakt", "No comments yet. Begin the discussion!" : "Nog geen reacties. Begin de discussie!", @@ -198,13 +207,13 @@ OC.L10N.register( "Archive card" : "Archiveer kaart", "Delete card" : "Verwijderen kaart", "Move card" : "Verplaats kaart", - "Card details" : "Kaart details", "Move card to another board" : "Verplaats kaart naar een ander bord", "Select a list" : "Selecteer een lijst", "seconds ago" : "seconden geleden", "All boards" : "Alle borden", "Archived boards" : "Gearchiveerde borden", "Shared with you" : "Deelde met jou", + "Use modal card view" : "Gebruik modale kaartweergave", "Limit deck usage of groups" : "Beperk gebruik decks van groepen", "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." : "Het beperken van Deck verhindert dat gebruikers die niet lid zijn van die groepen hun eigen borden kunnen maken. gebruikers kunnen nog wel werken met de borden die met deze gebruikers zijn gedeeld.", "New board title" : "Nieuwe titel van bord", @@ -218,9 +227,13 @@ OC.L10N.register( "An error occurred" : "Er is een fout opgetreden", "Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Weet je zeker dat je bord {title} met wilt verwijderen? Dit verwijderd alle informatie van dit bord.", "Delete the board?" : "Bord verwijderen?", + "Loading filtered view" : "Gefilterde weergave wordt geladen", "Today" : "Vandaag", "Tomorrow" : "Morgen", "This week" : "Deze week", + "No due" : "Geen vervallen", + "upcoming cards" : "Aanstaande kaarten", + "No upcoming cards" : "Geen aanstaande kaarten", "Link to a board" : "Verbind met een bord", "Link to a card" : "Koppel met een kaart", "Something went wrong" : "Er ging iets verkeerd", diff --git a/l10n/nl.json b/l10n/nl.json index acf58a8e6..098f25207 100644 --- a/l10n/nl.json +++ b/l10n/nl.json @@ -65,6 +65,7 @@ "Deck" : "Deck", "Changes in the Deck app" : "Wijzigingen in de Deck app", "A comment was created on a card" : "Er is commentaar gegeven op een card", + "Upcoming cards" : "Aanstaande kaarten", "Personal" : "Persoonlijk", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "De kaart \"%s\" op \"%s\" is aan jou toegewezen door %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} heeft kaart \"%s\" op \"%s\" aan jou toegewezen.", @@ -96,6 +97,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Geen bestand ge-upload of de grootte is meer dan het maximum van %s", "Personal planning and team project organization" : "Persoonlijke planning en inrichting voor teamproject", "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 is een soort kanban organisatietool gericht op persoonlijke planning en projectorganisatie voor teams geïntegreerd in Nextcloud.\n\n\n- 📥 Voeg taken toe aan kaarten en sorteer ze\n- 📄 Schrijf extra notities in markdown\n- 🔖 Ken labels toe voor betere organisatie\n- 👥 Deel met je team, vrienden of familie\n- 📎 Voeg bestanden toe en plaats ze in je markdown beschrijving\n- 💬 Discussieer binnen je team met reacties\n- ⚡ Volg de wijzigingen in het activiteiten kanaal\n- 🚀 Organiseer je project", + "Card details" : "Kaart details", "Create new board" : "Nieuw bord maken", "new board" : "nieuw bord", "Select the board to link to a project" : "Kies het bord om met een project te verbinden", @@ -127,6 +129,7 @@ "Next 30 days" : "Komende 30 dagen", "No due date" : "Geen vervaldatum", "Clear filter" : "Filter leegmaken", + "Hide archived cards" : "Gearchiveerde kaarten verbergen", "Show archived cards" : "Gearchiveerde kaarten weergeven", "Toggle compact mode" : "Omschakelen compacte modus", "Details" : "Details", @@ -150,9 +153,12 @@ "Can manage" : "Kan beheren", "Delete" : "Verwijderen", "Add a new list" : "Voeg een nieuwe lijst toe", + "Archive all cards" : "Alle kaarten archiveren", "Delete list" : "Lijst verwijderen", "Add card" : "Toevoegen kaart", + "Archive all cards in this list" : "Alle kaarten in deze lijst archiveren", "Add a new card" : "Nieuwe kaart toevoegen", + "Card name" : "Kaartnaam", "Edit" : "Bewerken", "Add a new tag" : "Nieuwe tag toevoegen", "title and color value must be provided" : "titel- en kleurwaarde moet gegeven worden", @@ -162,6 +168,8 @@ "Add this attachment" : "Voeg deze bijlage toe", "Delete Attachment" : "Verwijderen bijlage", "Restore Attachment" : "Herstellen bijlage", + "Open in sidebar view" : "Open in zijbalk", + "Open in bigger view" : "Open in grotere weergave", "Assign a tag to this card…" : "Wijs een label toe aan deze kaart...", "Assign to users" : "Toewijzen aan gebruikers", "Assign to users/groups/circles" : "Toewijzen aan gebruikers/groepen/kringen", @@ -179,6 +187,7 @@ "Attachments" : "Bijlagen", "Comments" : "Reacties", "Choose attachment" : "Kies bijlage", + "Select Date" : "Selecteer datum", "Modified" : "Aangepast", "Created" : "Gemaakt", "No comments yet. Begin the discussion!" : "Nog geen reacties. Begin de discussie!", @@ -196,13 +205,13 @@ "Archive card" : "Archiveer kaart", "Delete card" : "Verwijderen kaart", "Move card" : "Verplaats kaart", - "Card details" : "Kaart details", "Move card to another board" : "Verplaats kaart naar een ander bord", "Select a list" : "Selecteer een lijst", "seconds ago" : "seconden geleden", "All boards" : "Alle borden", "Archived boards" : "Gearchiveerde borden", "Shared with you" : "Deelde met jou", + "Use modal card view" : "Gebruik modale kaartweergave", "Limit deck usage of groups" : "Beperk gebruik decks van groepen", "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." : "Het beperken van Deck verhindert dat gebruikers die niet lid zijn van die groepen hun eigen borden kunnen maken. gebruikers kunnen nog wel werken met de borden die met deze gebruikers zijn gedeeld.", "New board title" : "Nieuwe titel van bord", @@ -216,9 +225,13 @@ "An error occurred" : "Er is een fout opgetreden", "Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Weet je zeker dat je bord {title} met wilt verwijderen? Dit verwijderd alle informatie van dit bord.", "Delete the board?" : "Bord verwijderen?", + "Loading filtered view" : "Gefilterde weergave wordt geladen", "Today" : "Vandaag", "Tomorrow" : "Morgen", "This week" : "Deze week", + "No due" : "Geen vervallen", + "upcoming cards" : "Aanstaande kaarten", + "No upcoming cards" : "Geen aanstaande kaarten", "Link to a board" : "Verbind met een bord", "Link to a card" : "Koppel met een kaart", "Something went wrong" : "Er ging iets verkeerd", diff --git a/l10n/pl.js b/l10n/pl.js index 154782bbc..4edec97d4 100644 --- a/l10n/pl.js +++ b/l10n/pl.js @@ -99,6 +99,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Brak przesłanego pliku lub rozmiar pliku przekracza maksymalny limit %s", "Personal planning and team project organization" : "Indywidualne planowanie i organizacja projektu zespołowego", "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" : "Tablica to narzędzie organizacyjne w stylu kanban, którego celem jest osobiste planowanie i organizacja projektu dla zespołów zintegrowanych z Nextcloud.\n\n\n- 📥 Dodaj swoje zadania do kart i porządkuj je\n- 📄 Zapisuj dodatkowe notatki\n- 🔖 Przypisuj etykiety dla jeszcze lepszej organizacji\n- 👥 Współdziel ze swoim zespołem, przyjaciółmi lub rodziną\n- 📎 Dołączaj pliki i umieszczaj je z opisem\n- 💬 Porozmawiaj ze swoim zespołem za pomocą komentarzy\n- ⚡ Śledź zmiany w strumieniu aktywności\n- 🚀 Organizuj swój projekt", + "Card details" : "Szczegóły karty", "Create new board" : "Utwórz nową tablicę", "new board" : "nowa tablica", "Select the board to link to a project" : "Wybierz tablicę, aby połączyć się z projektem", @@ -130,6 +131,7 @@ OC.L10N.register( "Next 30 days" : "Następne 30 dni", "No due date" : "Brak daty ważności", "Clear filter" : "Wyczyść filtr", + "Hide archived cards" : "Ukryj zarchiwizowane karty", "Show archived cards" : "Pokaż zarchiwizowane karty", "Toggle compact mode" : "Przełącz w tryb kompaktowy", "Details" : "Szczegóły", @@ -158,15 +160,18 @@ OC.L10N.register( "Add card" : "Dodaj kartę", "Archive all cards in this list" : "Zarchiwizuj wszystkie karty na tej liście", "Add a new card" : "Dodaj nową kartę", + "Card name" : "Nazwa karty", "Edit" : "Edycja", "Add a new tag" : "Dodaj nową etykietę", "title and color value must be provided" : "należy podać tytuł i kolor", - "Title" : "Tutuł", + "Title" : "Tytuł", "Members" : "Członkowie", "Upload attachment" : "Wyślij załącznik", "Add this attachment" : "Dodaj ten załącznik", "Delete Attachment" : "Usuń załącznik", "Restore Attachment" : "Przywróć załącznik", + "Open in sidebar view" : "Otwórz w widoku paska bocznego", + "Open in bigger view" : "Otwórz w dużym widoku", "Assign a tag to this card…" : "Przypisz etykietę do tej karty…", "Assign to users" : "Przypisz do użytkowników", "Assign to users/groups/circles" : "Przypisz do użytkowników/grup/kręgów", @@ -184,6 +189,7 @@ OC.L10N.register( "Attachments" : "Załączniki", "Comments" : "Komentarze", "Choose attachment" : "Wybierz załącznik", + "Select Date" : "Wybierz datę", "Modified" : "Zmodyfikowany", "Created" : "Utworzono", "No comments yet. Begin the discussion!" : "Brak komentarzy. Rozpocznij dyskusję!", @@ -201,13 +207,13 @@ OC.L10N.register( "Archive card" : "Zarchiwizuj kartę", "Delete card" : "Usuń kartę", "Move card" : "Przenieś kartę", - "Card details" : "Szczegóły karty", "Move card to another board" : "Przenieś kartę na inną tablicę", "Select a list" : "Wybierz listę", "seconds ago" : "przed chwilą", "All boards" : "Wszystkie tablice", "Archived boards" : "Zarchiwizowane tablice", "Shared with you" : "Dzielone z Tobą", + "Use modal card view" : "Użyj widoku karty modalnej", "Limit deck usage of groups" : "Ogranicz użycie tablic dla grup", "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." : "Ograniczenie Deck zablokuje użytkownikom z tych grup możliwość tworzenia własnych tablic. Użytkownicy nadal będą mogli pracować na tablicach, które zostały im udostępnione.", "New board title" : "Tytuł nowej tablicy", diff --git a/l10n/pl.json b/l10n/pl.json index f3658bd8c..c72ead18e 100644 --- a/l10n/pl.json +++ b/l10n/pl.json @@ -97,6 +97,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Brak przesłanego pliku lub rozmiar pliku przekracza maksymalny limit %s", "Personal planning and team project organization" : "Indywidualne planowanie i organizacja projektu zespołowego", "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" : "Tablica to narzędzie organizacyjne w stylu kanban, którego celem jest osobiste planowanie i organizacja projektu dla zespołów zintegrowanych z Nextcloud.\n\n\n- 📥 Dodaj swoje zadania do kart i porządkuj je\n- 📄 Zapisuj dodatkowe notatki\n- 🔖 Przypisuj etykiety dla jeszcze lepszej organizacji\n- 👥 Współdziel ze swoim zespołem, przyjaciółmi lub rodziną\n- 📎 Dołączaj pliki i umieszczaj je z opisem\n- 💬 Porozmawiaj ze swoim zespołem za pomocą komentarzy\n- ⚡ Śledź zmiany w strumieniu aktywności\n- 🚀 Organizuj swój projekt", + "Card details" : "Szczegóły karty", "Create new board" : "Utwórz nową tablicę", "new board" : "nowa tablica", "Select the board to link to a project" : "Wybierz tablicę, aby połączyć się z projektem", @@ -128,6 +129,7 @@ "Next 30 days" : "Następne 30 dni", "No due date" : "Brak daty ważności", "Clear filter" : "Wyczyść filtr", + "Hide archived cards" : "Ukryj zarchiwizowane karty", "Show archived cards" : "Pokaż zarchiwizowane karty", "Toggle compact mode" : "Przełącz w tryb kompaktowy", "Details" : "Szczegóły", @@ -156,15 +158,18 @@ "Add card" : "Dodaj kartę", "Archive all cards in this list" : "Zarchiwizuj wszystkie karty na tej liście", "Add a new card" : "Dodaj nową kartę", + "Card name" : "Nazwa karty", "Edit" : "Edycja", "Add a new tag" : "Dodaj nową etykietę", "title and color value must be provided" : "należy podać tytuł i kolor", - "Title" : "Tutuł", + "Title" : "Tytuł", "Members" : "Członkowie", "Upload attachment" : "Wyślij załącznik", "Add this attachment" : "Dodaj ten załącznik", "Delete Attachment" : "Usuń załącznik", "Restore Attachment" : "Przywróć załącznik", + "Open in sidebar view" : "Otwórz w widoku paska bocznego", + "Open in bigger view" : "Otwórz w dużym widoku", "Assign a tag to this card…" : "Przypisz etykietę do tej karty…", "Assign to users" : "Przypisz do użytkowników", "Assign to users/groups/circles" : "Przypisz do użytkowników/grup/kręgów", @@ -182,6 +187,7 @@ "Attachments" : "Załączniki", "Comments" : "Komentarze", "Choose attachment" : "Wybierz załącznik", + "Select Date" : "Wybierz datę", "Modified" : "Zmodyfikowany", "Created" : "Utworzono", "No comments yet. Begin the discussion!" : "Brak komentarzy. Rozpocznij dyskusję!", @@ -199,13 +205,13 @@ "Archive card" : "Zarchiwizuj kartę", "Delete card" : "Usuń kartę", "Move card" : "Przenieś kartę", - "Card details" : "Szczegóły karty", "Move card to another board" : "Przenieś kartę na inną tablicę", "Select a list" : "Wybierz listę", "seconds ago" : "przed chwilą", "All boards" : "Wszystkie tablice", "Archived boards" : "Zarchiwizowane tablice", "Shared with you" : "Dzielone z Tobą", + "Use modal card view" : "Użyj widoku karty modalnej", "Limit deck usage of groups" : "Ogranicz użycie tablic dla grup", "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." : "Ograniczenie Deck zablokuje użytkownikom z tych grup możliwość tworzenia własnych tablic. Użytkownicy nadal będą mogli pracować na tablicach, które zostały im udostępnione.", "New board title" : "Tytuł nowej tablicy", diff --git a/l10n/pt_BR.js b/l10n/pt_BR.js index cb91cdd33..9a469f064 100644 --- a/l10n/pt_BR.js +++ b/l10n/pt_BR.js @@ -67,6 +67,7 @@ OC.L10N.register( "Deck" : "Deck", "Changes in the Deck app" : "Mudanças no aplicativo Deck", "A comment was created on a card" : "Um comentário foi criado no cartão", + "Upcoming cards" : "Próximos cartões", "Personal" : "Pessoal", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "O cartão \"%s\" em \"%s\" foi vinculado com você por %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} vinculou o cartão \"%s\" em \"%s\" com você.", @@ -98,6 +99,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Nenhum arquivo enviado ou o tamanho excede o máximo de %s", "Personal planning and team project organization" : "Planejamento pessoal e organização de projetos em equipe", "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 é uma ferramenta de organização de estilo kanban destinada ao planejamento pessoal e organização para equipes integradas com o Nextcloud.\n\n\n- 📥 Adicione suas tarefas aos cartões e coloque-os em ordem\n- 📄 Insira notas adicionais em markdown\n- 🔖 Atribua etiquetas para melhorar a organização\n- 👥 Compartilhe com sua equipe, amigos ou familiares\n- 📎 Anexe arquivos e incorpore-os em sua descrição no markdown\n- 💬 Discuta com sua equipe usando os comentários\n- ⚡ Acompanhe as alterações no fluxo de atividades\n- 🚀 Mantenha seu projeto organizado", + "Card details" : "Detalhes do cartão", "Create new board" : "Criar novo painel", "new board" : "Novo painel", "Select the board to link to a project" : "Selecione o painel para vincular a um projeto", @@ -129,6 +131,7 @@ OC.L10N.register( "Next 30 days" : "Próximos 30 dias", "No due date" : "Sem data de vencimento", "Clear filter" : "Limpar filtro", + "Hide archived cards" : "Ocultar cartões arquivados", "Show archived cards" : "Exibir cartões arquivados", "Toggle compact mode" : "Alternar para modo compacto", "Details" : "Detalhes", @@ -157,6 +160,7 @@ OC.L10N.register( "Add card" : "Adicionar cartão", "Archive all cards in this list" : "Arquivar todos os cartões desta lista", "Add a new card" : "Adicionar um novo cartão", + "Card name" : "Nome do cartão", "Edit" : "Editar", "Add a new tag" : "Adicionar uma nova etiqueta", "title and color value must be provided" : "o título e o valor da cor devem ser fornecidos", @@ -166,6 +170,8 @@ OC.L10N.register( "Add this attachment" : "Adicionar este anexo", "Delete Attachment" : "Excluir Anexo", "Restore Attachment" : "Restaurar Anexo", + "Open in sidebar view" : "Abrir em visualização da barra lateral", + "Open in bigger view" : "Abrir em visualização ampliada", "Assign a tag to this card…" : "Atribuir uma etiqueta a este cartão...", "Assign to users" : "Atribuir a usuários", "Assign to users/groups/circles" : "Atribuir a usuários/grupos/círculos", @@ -183,6 +189,7 @@ OC.L10N.register( "Attachments" : "Anexos", "Comments" : "Comentários", "Choose attachment" : "Escolher anexo", + "Select Date" : "Selecionar Data", "Modified" : "Modificado", "Created" : "Criado", "No comments yet. Begin the discussion!" : "Nenhum comentário ainda. Inicie a conversa!", @@ -200,13 +207,13 @@ OC.L10N.register( "Archive card" : "Arquivar cartão", "Delete card" : "Excluir cartão", "Move card" : "Mover cartão", - "Card details" : "Detalhes do cartão", "Move card to another board" : "Mover o cartão para outro painel", "Select a list" : "Selecione uma lista", "seconds ago" : "segundos atrás", "All boards" : "Todos os painéis", "Archived boards" : "Painéis arquivados", "Shared with you" : "Compartilhado com você", + "Use modal card view" : "Usar a visualização modal do cartão", "Limit deck usage of groups" : "Limitar o uso de grupos no deck", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitar o Deck impedirá que usuários que não fazem parte desses grupos criem seus próprios painéis. Os usuários ainda poderão trabalhar em pastas que foram compartilhadas com eles.", "New board title" : "Título do novo painel", @@ -225,6 +232,8 @@ OC.L10N.register( "Tomorrow" : "Amanhã", "This week" : "Esta semana", "No due" : "Sem vencimento", + "upcoming cards" : "próximos cartões", + "No upcoming cards" : "Não há mais cartões", "Link to a board" : "Linkar a um painel", "Link to a card" : "Vincular a um cartão", "Something went wrong" : "Algo deu errado", diff --git a/l10n/pt_BR.json b/l10n/pt_BR.json index 4fd69f595..ac27327eb 100644 --- a/l10n/pt_BR.json +++ b/l10n/pt_BR.json @@ -65,6 +65,7 @@ "Deck" : "Deck", "Changes in the Deck app" : "Mudanças no aplicativo Deck", "A comment was created on a card" : "Um comentário foi criado no cartão", + "Upcoming cards" : "Próximos cartões", "Personal" : "Pessoal", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "O cartão \"%s\" em \"%s\" foi vinculado com você por %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} vinculou o cartão \"%s\" em \"%s\" com você.", @@ -96,6 +97,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Nenhum arquivo enviado ou o tamanho excede o máximo de %s", "Personal planning and team project organization" : "Planejamento pessoal e organização de projetos em equipe", "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 é uma ferramenta de organização de estilo kanban destinada ao planejamento pessoal e organização para equipes integradas com o Nextcloud.\n\n\n- 📥 Adicione suas tarefas aos cartões e coloque-os em ordem\n- 📄 Insira notas adicionais em markdown\n- 🔖 Atribua etiquetas para melhorar a organização\n- 👥 Compartilhe com sua equipe, amigos ou familiares\n- 📎 Anexe arquivos e incorpore-os em sua descrição no markdown\n- 💬 Discuta com sua equipe usando os comentários\n- ⚡ Acompanhe as alterações no fluxo de atividades\n- 🚀 Mantenha seu projeto organizado", + "Card details" : "Detalhes do cartão", "Create new board" : "Criar novo painel", "new board" : "Novo painel", "Select the board to link to a project" : "Selecione o painel para vincular a um projeto", @@ -127,6 +129,7 @@ "Next 30 days" : "Próximos 30 dias", "No due date" : "Sem data de vencimento", "Clear filter" : "Limpar filtro", + "Hide archived cards" : "Ocultar cartões arquivados", "Show archived cards" : "Exibir cartões arquivados", "Toggle compact mode" : "Alternar para modo compacto", "Details" : "Detalhes", @@ -155,6 +158,7 @@ "Add card" : "Adicionar cartão", "Archive all cards in this list" : "Arquivar todos os cartões desta lista", "Add a new card" : "Adicionar um novo cartão", + "Card name" : "Nome do cartão", "Edit" : "Editar", "Add a new tag" : "Adicionar uma nova etiqueta", "title and color value must be provided" : "o título e o valor da cor devem ser fornecidos", @@ -164,6 +168,8 @@ "Add this attachment" : "Adicionar este anexo", "Delete Attachment" : "Excluir Anexo", "Restore Attachment" : "Restaurar Anexo", + "Open in sidebar view" : "Abrir em visualização da barra lateral", + "Open in bigger view" : "Abrir em visualização ampliada", "Assign a tag to this card…" : "Atribuir uma etiqueta a este cartão...", "Assign to users" : "Atribuir a usuários", "Assign to users/groups/circles" : "Atribuir a usuários/grupos/círculos", @@ -181,6 +187,7 @@ "Attachments" : "Anexos", "Comments" : "Comentários", "Choose attachment" : "Escolher anexo", + "Select Date" : "Selecionar Data", "Modified" : "Modificado", "Created" : "Criado", "No comments yet. Begin the discussion!" : "Nenhum comentário ainda. Inicie a conversa!", @@ -198,13 +205,13 @@ "Archive card" : "Arquivar cartão", "Delete card" : "Excluir cartão", "Move card" : "Mover cartão", - "Card details" : "Detalhes do cartão", "Move card to another board" : "Mover o cartão para outro painel", "Select a list" : "Selecione uma lista", "seconds ago" : "segundos atrás", "All boards" : "Todos os painéis", "Archived boards" : "Painéis arquivados", "Shared with you" : "Compartilhado com você", + "Use modal card view" : "Usar a visualização modal do cartão", "Limit deck usage of groups" : "Limitar o uso de grupos no deck", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitar o Deck impedirá que usuários que não fazem parte desses grupos criem seus próprios painéis. Os usuários ainda poderão trabalhar em pastas que foram compartilhadas com eles.", "New board title" : "Título do novo painel", @@ -223,6 +230,8 @@ "Tomorrow" : "Amanhã", "This week" : "Esta semana", "No due" : "Sem vencimento", + "upcoming cards" : "próximos cartões", + "No upcoming cards" : "Não há mais cartões", "Link to a board" : "Linkar a um painel", "Link to a card" : "Vincular a um cartão", "Something went wrong" : "Algo deu errado", diff --git a/l10n/pt_PT.js b/l10n/pt_PT.js index f514160b0..34c64cf8a 100644 --- a/l10n/pt_PT.js +++ b/l10n/pt_PT.js @@ -19,6 +19,7 @@ OC.L10N.register( "Create new board" : "Criar novo quadro", "Cancel" : "Cancelar", "File already exists" : "O ficheiro já existe", + "Hide archived cards" : "Esconder cartões arquivados", "Show archived cards" : "Mostrar cartões arquivados", "Details" : "Detalhes", "Sharing" : "Partilha", @@ -36,6 +37,7 @@ OC.L10N.register( "Description" : "Descrição", "Attachments" : "Anexos", "Comments" : "Comentários", + "Select Date" : "Escolha a data", "Modified" : "Modificado", "Created" : "Criado", "Save" : "Guardar", diff --git a/l10n/pt_PT.json b/l10n/pt_PT.json index b365f6a8f..0f61af7a9 100644 --- a/l10n/pt_PT.json +++ b/l10n/pt_PT.json @@ -17,6 +17,7 @@ "Create new board" : "Criar novo quadro", "Cancel" : "Cancelar", "File already exists" : "O ficheiro já existe", + "Hide archived cards" : "Esconder cartões arquivados", "Show archived cards" : "Mostrar cartões arquivados", "Details" : "Detalhes", "Sharing" : "Partilha", @@ -34,6 +35,7 @@ "Description" : "Descrição", "Attachments" : "Anexos", "Comments" : "Comentários", + "Select Date" : "Escolha a data", "Modified" : "Modificado", "Created" : "Criado", "Save" : "Guardar", diff --git a/l10n/ru.js b/l10n/ru.js index 249288b27..19949ec04 100644 --- a/l10n/ru.js +++ b/l10n/ru.js @@ -98,6 +98,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Файл не получен или его размер превышает %s", "Personal planning and team project organization" : "Личное планирование и управление проектами для команд", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Карточки — приложение для Nextcloud, предоставляющее возможности личного планирования и управления проектами для рабочих групп в стиле канбан.\n\n\n- 📥 Создавайте карточки задач и упорядочите их;\n- 📄 Добавляйте описания задач с возможностью использовать формат разметки «markdown»;\n- 🔖 Присваивайте ярлыки для ещё лучшей организации;\n- 👥 Делитесь со своей командой, друзьями или семьей;\n- 📎 Вкладывайте файлы в виде ссылок в описании, используя формат разметки «markdown»;\n- 💬 Обсуждайте в комментариях;\n- ⚡ Отслеживайте изменения в ленте событий;\n- 🚀 Сделайте свой проект более организованным.", + "Card details" : "Свойства карточки", "Create new board" : "Создать рабочую доску", "new board" : "новая доска", "Select the board to link to a project" : "Выберите рабочую доску, чтобы связать с проектом", @@ -129,6 +130,7 @@ OC.L10N.register( "Next 30 days" : "Ближайшие 30 дней", "No due date" : "Без назначенной даты", "Clear filter" : "Сбросить фильтр", + "Hide archived cards" : "Скрыть архивные карточки", "Show archived cards" : "Просмотреть или скрыть архивные карточки", "Toggle compact mode" : "Выбор компактного или обычного режима просмотра", "Details" : "Свойства", @@ -150,9 +152,12 @@ OC.L10N.register( "Can manage" : "Разрешить изменять", "Delete" : "Удалить", "Add a new list" : "Создать список", + "Archive all cards" : "Переместить все карточки в архив", "Delete list" : "Удалить список", "Add card" : "Создать карточку", + "Archive all cards in this list" : "Переместить в архив все карточки текущего списка", "Add a new card" : "Создать карточку", + "Card name" : "Название карточки", "Edit" : "Редактировать", "Add a new tag" : "Добавить метку", "title and color value must be provided" : "необходимо указать цвет и название", @@ -162,6 +167,8 @@ OC.L10N.register( "Add this attachment" : "Добавить это вложение", "Delete Attachment" : "Удалить вложение", "Restore Attachment" : "Восстановить вложение", + "Open in sidebar view" : "Открыть в боковой панели", + "Open in bigger view" : "Открыть режиме подробного просмотра", "Assign a tag to this card…" : "Назначить метку этой карточке…", "Assign to users" : "Назначить пользователям", "Assign to users/groups/circles" : "Назначить пользователям / группам / кругам", @@ -179,6 +186,7 @@ OC.L10N.register( "Attachments" : "Вложения", "Comments" : "Комментарии", "Choose attachment" : "Выберите вложение", + "Select Date" : "Выберите дату", "Modified" : "Изменено", "Created" : "Создано", "No comments yet. Begin the discussion!" : "Комментарии отсутствуют, начните обсуждение!", @@ -196,13 +204,13 @@ OC.L10N.register( "Archive card" : "Переместить в архив", "Delete card" : "Удалить", "Move card" : "Переместить карточку", - "Card details" : "Свойства карточки", "Move card to another board" : "Переместить карточку на другую доску", "Select a list" : "Выберите список", "seconds ago" : "несколько секунд назад", "All boards" : "Все доски", "Archived boards" : "Архив досок", "Shared with you" : "Предоставленные вам", + "Use modal card view" : "Использовать модальный режим просмотра карточек", "Limit deck usage of groups" : "Разрешить использовать приложение Карточки только участникам заданных групп", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Создание собственных рабочих досок пользователям, не входящим в заданные группы, будет заблокировано. Тем не менее, такие пользователи смогут продолжить работать с общими досками, к которым у них есть доступ. ", "New board title" : "Введите заголовок рабочей доски…", @@ -219,6 +227,7 @@ OC.L10N.register( "Today" : "Сегодня", "Tomorrow" : "Завтра", "This week" : "Эта неделя", + "No due" : "Без назначенной даты", "Link to a board" : "Ссылка на доску", "Link to a card" : "Ссылка на карточку", "Something went wrong" : "Неизвестная ошибка", diff --git a/l10n/ru.json b/l10n/ru.json index 2207dcf3c..678190708 100644 --- a/l10n/ru.json +++ b/l10n/ru.json @@ -96,6 +96,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Файл не получен или его размер превышает %s", "Personal planning and team project organization" : "Личное планирование и управление проектами для команд", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Карточки — приложение для Nextcloud, предоставляющее возможности личного планирования и управления проектами для рабочих групп в стиле канбан.\n\n\n- 📥 Создавайте карточки задач и упорядочите их;\n- 📄 Добавляйте описания задач с возможностью использовать формат разметки «markdown»;\n- 🔖 Присваивайте ярлыки для ещё лучшей организации;\n- 👥 Делитесь со своей командой, друзьями или семьей;\n- 📎 Вкладывайте файлы в виде ссылок в описании, используя формат разметки «markdown»;\n- 💬 Обсуждайте в комментариях;\n- ⚡ Отслеживайте изменения в ленте событий;\n- 🚀 Сделайте свой проект более организованным.", + "Card details" : "Свойства карточки", "Create new board" : "Создать рабочую доску", "new board" : "новая доска", "Select the board to link to a project" : "Выберите рабочую доску, чтобы связать с проектом", @@ -127,6 +128,7 @@ "Next 30 days" : "Ближайшие 30 дней", "No due date" : "Без назначенной даты", "Clear filter" : "Сбросить фильтр", + "Hide archived cards" : "Скрыть архивные карточки", "Show archived cards" : "Просмотреть или скрыть архивные карточки", "Toggle compact mode" : "Выбор компактного или обычного режима просмотра", "Details" : "Свойства", @@ -148,9 +150,12 @@ "Can manage" : "Разрешить изменять", "Delete" : "Удалить", "Add a new list" : "Создать список", + "Archive all cards" : "Переместить все карточки в архив", "Delete list" : "Удалить список", "Add card" : "Создать карточку", + "Archive all cards in this list" : "Переместить в архив все карточки текущего списка", "Add a new card" : "Создать карточку", + "Card name" : "Название карточки", "Edit" : "Редактировать", "Add a new tag" : "Добавить метку", "title and color value must be provided" : "необходимо указать цвет и название", @@ -160,6 +165,8 @@ "Add this attachment" : "Добавить это вложение", "Delete Attachment" : "Удалить вложение", "Restore Attachment" : "Восстановить вложение", + "Open in sidebar view" : "Открыть в боковой панели", + "Open in bigger view" : "Открыть режиме подробного просмотра", "Assign a tag to this card…" : "Назначить метку этой карточке…", "Assign to users" : "Назначить пользователям", "Assign to users/groups/circles" : "Назначить пользователям / группам / кругам", @@ -177,6 +184,7 @@ "Attachments" : "Вложения", "Comments" : "Комментарии", "Choose attachment" : "Выберите вложение", + "Select Date" : "Выберите дату", "Modified" : "Изменено", "Created" : "Создано", "No comments yet. Begin the discussion!" : "Комментарии отсутствуют, начните обсуждение!", @@ -194,13 +202,13 @@ "Archive card" : "Переместить в архив", "Delete card" : "Удалить", "Move card" : "Переместить карточку", - "Card details" : "Свойства карточки", "Move card to another board" : "Переместить карточку на другую доску", "Select a list" : "Выберите список", "seconds ago" : "несколько секунд назад", "All boards" : "Все доски", "Archived boards" : "Архив досок", "Shared with you" : "Предоставленные вам", + "Use modal card view" : "Использовать модальный режим просмотра карточек", "Limit deck usage of groups" : "Разрешить использовать приложение Карточки только участникам заданных групп", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Создание собственных рабочих досок пользователям, не входящим в заданные группы, будет заблокировано. Тем не менее, такие пользователи смогут продолжить работать с общими досками, к которым у них есть доступ. ", "New board title" : "Введите заголовок рабочей доски…", @@ -217,6 +225,7 @@ "Today" : "Сегодня", "Tomorrow" : "Завтра", "This week" : "Эта неделя", + "No due" : "Без назначенной даты", "Link to a board" : "Ссылка на доску", "Link to a card" : "Ссылка на карточку", "Something went wrong" : "Неизвестная ошибка", diff --git a/l10n/sk.js b/l10n/sk.js index 63750ca81..0ca8a8aed 100644 --- a/l10n/sk.js +++ b/l10n/sk.js @@ -98,6 +98,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Nenahral sa žiadny súbor alebo jeho veľkosť presiahla %s", "Personal planning and team project organization" : "Osobné plánovanie a organizácia tímových projektov", "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" : "Karty sú nástroj zacielený na osobné alebo projektové plánovanie tímov v štýle Kanban integrovaný do Nextcloud.\n\n\n- 📥 Zadávajte a usporadúvajte svoje úlohy do kariet\n- 📄 Zapisujte si dodatočné poznámky\n- 🔖 Priraďujte štítky pre ešte lepšiu organizáciu\n- 👥 Zdieľajte so svojim tímom, priateľmi alebo rodinou\n- 🚀 Dostaňte svoj projekt pod kontrolu", + "Card details" : "Podrobnosti o karte", "Create new board" : "Vytvoriť novú nástenku", "new board" : "nová nástenka", "Select the board to link to a project" : "Vybrať nástenku na vytvorenie odkazu ku projektu", @@ -129,6 +130,7 @@ OC.L10N.register( "Next 30 days" : "Následujúcich 30 dní", "No due date" : "Bez termínu", "Clear filter" : "Vyčistiť filter", + "Hide archived cards" : "Skryť archivované karty", "Show archived cards" : "Zobraziť archivované karty", "Toggle compact mode" : "Vyp/zap. kompaktný režim", "Details" : "Podrobnosti", @@ -183,6 +185,7 @@ OC.L10N.register( "Attachments" : "Prílohy", "Comments" : "Komentáre", "Choose attachment" : "Vybrať prílohu", + "Select Date" : "Vybrať dátum", "Modified" : "Upravené", "Created" : "Vytvorené", "No comments yet. Begin the discussion!" : "Zatiaľ bez komentárov. Začnite diskusiu!", @@ -200,7 +203,6 @@ OC.L10N.register( "Archive card" : "Archivovať kartu", "Delete card" : "Zmazať kartu", "Move card" : "Presunúť kartu", - "Card details" : "Podrobnosti o karte", "Move card to another board" : "Presunúť kartu na inú nástenku", "Select a list" : "Vybrať zoznam", "seconds ago" : "pred niekoľkými sekundami", diff --git a/l10n/sk.json b/l10n/sk.json index 1fefecc54..b8f45f997 100644 --- a/l10n/sk.json +++ b/l10n/sk.json @@ -96,6 +96,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Nenahral sa žiadny súbor alebo jeho veľkosť presiahla %s", "Personal planning and team project organization" : "Osobné plánovanie a organizácia tímových projektov", "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" : "Karty sú nástroj zacielený na osobné alebo projektové plánovanie tímov v štýle Kanban integrovaný do Nextcloud.\n\n\n- 📥 Zadávajte a usporadúvajte svoje úlohy do kariet\n- 📄 Zapisujte si dodatočné poznámky\n- 🔖 Priraďujte štítky pre ešte lepšiu organizáciu\n- 👥 Zdieľajte so svojim tímom, priateľmi alebo rodinou\n- 🚀 Dostaňte svoj projekt pod kontrolu", + "Card details" : "Podrobnosti o karte", "Create new board" : "Vytvoriť novú nástenku", "new board" : "nová nástenka", "Select the board to link to a project" : "Vybrať nástenku na vytvorenie odkazu ku projektu", @@ -127,6 +128,7 @@ "Next 30 days" : "Následujúcich 30 dní", "No due date" : "Bez termínu", "Clear filter" : "Vyčistiť filter", + "Hide archived cards" : "Skryť archivované karty", "Show archived cards" : "Zobraziť archivované karty", "Toggle compact mode" : "Vyp/zap. kompaktný režim", "Details" : "Podrobnosti", @@ -181,6 +183,7 @@ "Attachments" : "Prílohy", "Comments" : "Komentáre", "Choose attachment" : "Vybrať prílohu", + "Select Date" : "Vybrať dátum", "Modified" : "Upravené", "Created" : "Vytvorené", "No comments yet. Begin the discussion!" : "Zatiaľ bez komentárov. Začnite diskusiu!", @@ -198,7 +201,6 @@ "Archive card" : "Archivovať kartu", "Delete card" : "Zmazať kartu", "Move card" : "Presunúť kartu", - "Card details" : "Podrobnosti o karte", "Move card to another board" : "Presunúť kartu na inú nástenku", "Select a list" : "Vybrať zoznam", "seconds ago" : "pred niekoľkými sekundami", diff --git a/l10n/sl.js b/l10n/sl.js index e68dc5022..fceb08375 100644 --- a/l10n/sl.js +++ b/l10n/sl.js @@ -98,6 +98,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Ali ni poslane datoteke ali pa velikost datoteke presega omejitev %s", "Personal planning and team project organization" : "Osebno načrtovanje nalog in organizacija skupinskih projektov", "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" : "Program Deck je orodje za osebno načrtovanje in projektno delo v slogu kanban, ki se izvrstno vključuje v okolje Nextcloud.\n\nOrodje omogoča:\n- 📥 dodajanje in urejanje nalog\n- 📄 zapis dodatnih opomb v zapisu markdown\n- 🔖 dodeljevanje oznak za lažje urejanje in iskanje\n- 👥 souporabo v skupini, s prijatelji ali družino\n- 📎 pripenjanje in vstavljanje datotek v opise\n- 💬 opombe k posamezni nalogi\n- ⚡ sledenje spremembam in dejavnosti\n- 🚀 Organizaciji projekta", + "Card details" : "Podrobnosti naloge", "Create new board" : "Ustvari novo zbirko", "new board" : "nova zbirka", "Select the board to link to a project" : "Izberite zbirko za povezavo s projektom", @@ -129,6 +130,7 @@ OC.L10N.register( "Next 30 days" : "Naslednjih 30 dni", "No due date" : "Ni datuma preteka", "Clear filter" : "Počisti filter", + "Hide archived cards" : "Skrij arhivirane naloge", "Show archived cards" : "Prikaži arhivirane naloge", "Toggle compact mode" : "Preklopi način prikaza", "Details" : "Podrobnosti", @@ -179,6 +181,7 @@ OC.L10N.register( "Attachments" : "Priloge", "Comments" : "Opombe", "Choose attachment" : "Izbor priloge", + "Select Date" : "Izbor datuma", "Modified" : "Spremenjeno", "Created" : "Ustvarjeno", "No comments yet. Begin the discussion!" : "Ni še odzivov, bodite prvi!", @@ -196,7 +199,6 @@ OC.L10N.register( "Archive card" : "Arhiviraj nalogo", "Delete card" : "Izbriši nalogo", "Move card" : "Premakni nalogo", - "Card details" : "Podrobnosti naloge", "Move card to another board" : "Premakni nalogo v drugo zbirko", "Select a list" : "Izbor seznama", "seconds ago" : "pred nekaj sekundami", diff --git a/l10n/sl.json b/l10n/sl.json index 0af2f9afc..32cd4ef6d 100644 --- a/l10n/sl.json +++ b/l10n/sl.json @@ -96,6 +96,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Ali ni poslane datoteke ali pa velikost datoteke presega omejitev %s", "Personal planning and team project organization" : "Osebno načrtovanje nalog in organizacija skupinskih projektov", "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" : "Program Deck je orodje za osebno načrtovanje in projektno delo v slogu kanban, ki se izvrstno vključuje v okolje Nextcloud.\n\nOrodje omogoča:\n- 📥 dodajanje in urejanje nalog\n- 📄 zapis dodatnih opomb v zapisu markdown\n- 🔖 dodeljevanje oznak za lažje urejanje in iskanje\n- 👥 souporabo v skupini, s prijatelji ali družino\n- 📎 pripenjanje in vstavljanje datotek v opise\n- 💬 opombe k posamezni nalogi\n- ⚡ sledenje spremembam in dejavnosti\n- 🚀 Organizaciji projekta", + "Card details" : "Podrobnosti naloge", "Create new board" : "Ustvari novo zbirko", "new board" : "nova zbirka", "Select the board to link to a project" : "Izberite zbirko za povezavo s projektom", @@ -127,6 +128,7 @@ "Next 30 days" : "Naslednjih 30 dni", "No due date" : "Ni datuma preteka", "Clear filter" : "Počisti filter", + "Hide archived cards" : "Skrij arhivirane naloge", "Show archived cards" : "Prikaži arhivirane naloge", "Toggle compact mode" : "Preklopi način prikaza", "Details" : "Podrobnosti", @@ -177,6 +179,7 @@ "Attachments" : "Priloge", "Comments" : "Opombe", "Choose attachment" : "Izbor priloge", + "Select Date" : "Izbor datuma", "Modified" : "Spremenjeno", "Created" : "Ustvarjeno", "No comments yet. Begin the discussion!" : "Ni še odzivov, bodite prvi!", @@ -194,7 +197,6 @@ "Archive card" : "Arhiviraj nalogo", "Delete card" : "Izbriši nalogo", "Move card" : "Premakni nalogo", - "Card details" : "Podrobnosti naloge", "Move card to another board" : "Premakni nalogo v drugo zbirko", "Select a list" : "Izbor seznama", "seconds ago" : "pred nekaj sekundami", diff --git a/l10n/sq.js b/l10n/sq.js index 41be28341..129666810 100644 --- a/l10n/sq.js +++ b/l10n/sq.js @@ -19,6 +19,7 @@ OC.L10N.register( "Cancel" : "Anullo", "File already exists" : "Skedari ekziston tashmë", "Do you want to overwrite it?" : "Doni ta rishkruani atë?", + "Hide archived cards" : "Fsheh kartat e arkivuara ", "Show archived cards" : "Trego kartat e arkivuara", "Details" : "Detajet", "Sharing" : "Ndarje", @@ -38,6 +39,7 @@ OC.L10N.register( "Formatting help" : "Ndihmë formatimi", "Attachments" : "Bashkangjitjet", "Comments" : "Komentet", + "Select Date" : "Zgjidhni Datën", "Modified" : "Modifikuar ", "Created" : "U krijua", "Save" : "Ruaj", diff --git a/l10n/sq.json b/l10n/sq.json index 51c1556fa..2eded712f 100644 --- a/l10n/sq.json +++ b/l10n/sq.json @@ -17,6 +17,7 @@ "Cancel" : "Anullo", "File already exists" : "Skedari ekziston tashmë", "Do you want to overwrite it?" : "Doni ta rishkruani atë?", + "Hide archived cards" : "Fsheh kartat e arkivuara ", "Show archived cards" : "Trego kartat e arkivuara", "Details" : "Detajet", "Sharing" : "Ndarje", @@ -36,6 +37,7 @@ "Formatting help" : "Ndihmë formatimi", "Attachments" : "Bashkangjitjet", "Comments" : "Komentet", + "Select Date" : "Zgjidhni Datën", "Modified" : "Modifikuar ", "Created" : "U krijua", "Save" : "Ruaj", diff --git a/l10n/sr.js b/l10n/sr.js index a16f4124b..b9092fb65 100644 --- a/l10n/sr.js +++ b/l10n/sr.js @@ -98,6 +98,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Ниједан фајл није отпремљен или величина фајла премашује максимум од %s", "Personal planning and team project organization" : "Лични планер и организатор тимског пројекта", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck је алатка канбан организационог стила намењена за лично планирање и организацију пројеката за тимове интегрисане са Некстклаудом.\n\n\n- 📥 Додајте Ваше задатке на картице и распоређујте их како желите\n- 📄 Допишите додатне белешке markdown синтаксом\n- 🔖 Додељујте ознаке за још боље организовање\n- 👥 Делите са Вашим тимом, пријатељима или породицом\n- 📎 Качите фајлове и уградите их у Ваш markdown опис\n- 💬 Дискутујте са тимом преко коментара\n- ⚡ Пазите на промене коришћењем тока активности\n- 🚀 Организујте Ваше пројекте", + "Card details" : "Детаљи картице", "Create new board" : "Направи нову таблу", "new board" : "нова табла", "Select the board to link to a project" : "Одаберите таблу да је повежете са пројектом", @@ -129,6 +130,7 @@ OC.L10N.register( "Next 30 days" : "Следећих 30 дана", "No due date" : "Без рока", "Clear filter" : "Очисти филтер", + "Hide archived cards" : "Сакриј архивиране картице", "Show archived cards" : "Прикажи архивиране картице", "Toggle compact mode" : "Укључи/искључи компактни режим", "Details" : "Детаљи", @@ -183,6 +185,7 @@ OC.L10N.register( "Attachments" : "Прилози", "Comments" : "Коментари", "Choose attachment" : "Одабери прилог", + "Select Date" : "Одаберите датум", "Modified" : "Измењен", "Created" : "Направљен", "No comments yet. Begin the discussion!" : "Нема још коментара. Започните дискусију!", @@ -200,7 +203,6 @@ OC.L10N.register( "Archive card" : "Архивирај картицу", "Delete card" : "Обриши картицу", "Move card" : "Премести картицу", - "Card details" : "Детаљи картице", "Move card to another board" : "Помери картицу на другу таблу", "Select a list" : "Одабери списак", "seconds ago" : "пре неколико секунди", diff --git a/l10n/sr.json b/l10n/sr.json index 7c6b42b30..9c7bc186f 100644 --- a/l10n/sr.json +++ b/l10n/sr.json @@ -96,6 +96,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Ниједан фајл није отпремљен или величина фајла премашује максимум од %s", "Personal planning and team project organization" : "Лични планер и организатор тимског пројекта", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck је алатка канбан организационог стила намењена за лично планирање и организацију пројеката за тимове интегрисане са Некстклаудом.\n\n\n- 📥 Додајте Ваше задатке на картице и распоређујте их како желите\n- 📄 Допишите додатне белешке markdown синтаксом\n- 🔖 Додељујте ознаке за још боље организовање\n- 👥 Делите са Вашим тимом, пријатељима или породицом\n- 📎 Качите фајлове и уградите их у Ваш markdown опис\n- 💬 Дискутујте са тимом преко коментара\n- ⚡ Пазите на промене коришћењем тока активности\n- 🚀 Организујте Ваше пројекте", + "Card details" : "Детаљи картице", "Create new board" : "Направи нову таблу", "new board" : "нова табла", "Select the board to link to a project" : "Одаберите таблу да је повежете са пројектом", @@ -127,6 +128,7 @@ "Next 30 days" : "Следећих 30 дана", "No due date" : "Без рока", "Clear filter" : "Очисти филтер", + "Hide archived cards" : "Сакриј архивиране картице", "Show archived cards" : "Прикажи архивиране картице", "Toggle compact mode" : "Укључи/искључи компактни режим", "Details" : "Детаљи", @@ -181,6 +183,7 @@ "Attachments" : "Прилози", "Comments" : "Коментари", "Choose attachment" : "Одабери прилог", + "Select Date" : "Одаберите датум", "Modified" : "Измењен", "Created" : "Направљен", "No comments yet. Begin the discussion!" : "Нема још коментара. Започните дискусију!", @@ -198,7 +201,6 @@ "Archive card" : "Архивирај картицу", "Delete card" : "Обриши картицу", "Move card" : "Премести картицу", - "Card details" : "Детаљи картице", "Move card to another board" : "Помери картицу на другу таблу", "Select a list" : "Одабери списак", "seconds ago" : "пре неколико секунди", diff --git a/l10n/sv.js b/l10n/sv.js index 70d293781..043c0e4bc 100644 --- a/l10n/sv.js +++ b/l10n/sv.js @@ -67,6 +67,7 @@ OC.L10N.register( "Deck" : "Deck", "Changes in the Deck app" : "Ändringar i Deck-appen", "A comment was created on a card" : "En kommentar skapades på ett kort", + "Upcoming cards" : "Kommande kort", "Personal" : "Personlig", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kortet \"%s\" på \"%s\" har tilldelats dig av %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} har tilldelat kortet \"%s\" på \"%s\" till dig.", @@ -98,6 +99,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Ingen fil uppladdad eller filstorleken överstiger max %s", "Personal planning and team project organization" : "Personlig planering och projekthantering för teams", "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" : "Korthögar är en kanban-liknande projekt- och organiseringsapp för arbetsgrupper i Nextcloud.\n\n\n- 📥 Lägg till uppgifter på kort och ordna dem\n- 📄 Skriv anteckningar i markdown\n- 🔖 Tilldela etiketter för organisering\n- 👥 Dela med arbetsgruppen, vänner eller familj\n- 📎 Bifoga filer och bädda in dem i markdown-anteckningarna\n- 💬 Diskutera i arbetsgruppen genom kommentarer\n- ⚡ Håll koll på ändringar i aktivitetsflödet\n- 🚀 Börja organisera din arbetsgrupp nu!", + "Card details" : "Kortdetaljer", "Create new board" : "Skapa ny tavla", "new board" : "ny tavla", "Select the board to link to a project" : "Välj tavla att länka till ett projekt", @@ -129,6 +131,7 @@ OC.L10N.register( "Next 30 days" : "Nästa 30 dagar", "No due date" : "Inget slutdatum", "Clear filter" : "Rensa filter", + "Hide archived cards" : "Göm arkiverade kort", "Show archived cards" : "Visa arkiverade kort", "Toggle compact mode" : "Växla kompakt läge", "Details" : "Detaljer", @@ -166,6 +169,8 @@ OC.L10N.register( "Add this attachment" : "Lägg till denna bilaga", "Delete Attachment" : "Ta bort bilaga", "Restore Attachment" : "Återställ bilaga", + "Open in sidebar view" : "Öppna i sidofältet", + "Open in bigger view" : "Öppna i större vy", "Assign a tag to this card…" : "Tilldela en tagg till det här kortet ...", "Assign to users" : "Tilldela till användare", "Assign to users/groups/circles" : "Tilldela till användare/grupper/cirklar", @@ -183,6 +188,7 @@ OC.L10N.register( "Attachments" : "Bilagor", "Comments" : "Kommentarer", "Choose attachment" : "Välj bilaga", + "Select Date" : "Välj datum", "Modified" : "Ändrad", "Created" : "Skapat", "No comments yet. Begin the discussion!" : "Inga kommentarer än. Börja diskussionen!", @@ -200,13 +206,13 @@ OC.L10N.register( "Archive card" : "Arkivera kort", "Delete card" : "Ta bort kort", "Move card" : "Flytta kort", - "Card details" : "Kortdetaljer", "Move card to another board" : "Flytta kort till en annan tavla", "Select a list" : "Välj en lista", "seconds ago" : "sekunder sedan", "All boards" : "Alla tavlor", "Archived boards" : "Arkiverade tavlor", "Shared with you" : "Delad med dig", + "Use modal card view" : "Använd modal kort-vy", "Limit deck usage of groups" : "Begränsa användningen av grupper", "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." : "Begränsa Deck blockerar användare som inte ingår i dessa grupper från att skapa egna tavlor. Användare kan fortfarande arbeta med tavlor som har delats med dem.", "New board title" : "Ny titel för tavla", @@ -225,6 +231,8 @@ OC.L10N.register( "Tomorrow" : "Imorgon", "This week" : "Denna vecka", "No due" : "Inget slut", + "upcoming cards" : "kommande kort", + "No upcoming cards" : "Inga kommande kort", "Link to a board" : "Länka till en tavla", "Link to a card" : "Länka till ett kort", "Something went wrong" : "Något gick fel", diff --git a/l10n/sv.json b/l10n/sv.json index 7c625b842..6b265fcf1 100644 --- a/l10n/sv.json +++ b/l10n/sv.json @@ -65,6 +65,7 @@ "Deck" : "Deck", "Changes in the Deck app" : "Ändringar i Deck-appen", "A comment was created on a card" : "En kommentar skapades på ett kort", + "Upcoming cards" : "Kommande kort", "Personal" : "Personlig", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kortet \"%s\" på \"%s\" har tilldelats dig av %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} har tilldelat kortet \"%s\" på \"%s\" till dig.", @@ -96,6 +97,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Ingen fil uppladdad eller filstorleken överstiger max %s", "Personal planning and team project organization" : "Personlig planering och projekthantering för teams", "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" : "Korthögar är en kanban-liknande projekt- och organiseringsapp för arbetsgrupper i Nextcloud.\n\n\n- 📥 Lägg till uppgifter på kort och ordna dem\n- 📄 Skriv anteckningar i markdown\n- 🔖 Tilldela etiketter för organisering\n- 👥 Dela med arbetsgruppen, vänner eller familj\n- 📎 Bifoga filer och bädda in dem i markdown-anteckningarna\n- 💬 Diskutera i arbetsgruppen genom kommentarer\n- ⚡ Håll koll på ändringar i aktivitetsflödet\n- 🚀 Börja organisera din arbetsgrupp nu!", + "Card details" : "Kortdetaljer", "Create new board" : "Skapa ny tavla", "new board" : "ny tavla", "Select the board to link to a project" : "Välj tavla att länka till ett projekt", @@ -127,6 +129,7 @@ "Next 30 days" : "Nästa 30 dagar", "No due date" : "Inget slutdatum", "Clear filter" : "Rensa filter", + "Hide archived cards" : "Göm arkiverade kort", "Show archived cards" : "Visa arkiverade kort", "Toggle compact mode" : "Växla kompakt läge", "Details" : "Detaljer", @@ -164,6 +167,8 @@ "Add this attachment" : "Lägg till denna bilaga", "Delete Attachment" : "Ta bort bilaga", "Restore Attachment" : "Återställ bilaga", + "Open in sidebar view" : "Öppna i sidofältet", + "Open in bigger view" : "Öppna i större vy", "Assign a tag to this card…" : "Tilldela en tagg till det här kortet ...", "Assign to users" : "Tilldela till användare", "Assign to users/groups/circles" : "Tilldela till användare/grupper/cirklar", @@ -181,6 +186,7 @@ "Attachments" : "Bilagor", "Comments" : "Kommentarer", "Choose attachment" : "Välj bilaga", + "Select Date" : "Välj datum", "Modified" : "Ändrad", "Created" : "Skapat", "No comments yet. Begin the discussion!" : "Inga kommentarer än. Börja diskussionen!", @@ -198,13 +204,13 @@ "Archive card" : "Arkivera kort", "Delete card" : "Ta bort kort", "Move card" : "Flytta kort", - "Card details" : "Kortdetaljer", "Move card to another board" : "Flytta kort till en annan tavla", "Select a list" : "Välj en lista", "seconds ago" : "sekunder sedan", "All boards" : "Alla tavlor", "Archived boards" : "Arkiverade tavlor", "Shared with you" : "Delad med dig", + "Use modal card view" : "Använd modal kort-vy", "Limit deck usage of groups" : "Begränsa användningen av grupper", "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." : "Begränsa Deck blockerar användare som inte ingår i dessa grupper från att skapa egna tavlor. Användare kan fortfarande arbeta med tavlor som har delats med dem.", "New board title" : "Ny titel för tavla", @@ -223,6 +229,8 @@ "Tomorrow" : "Imorgon", "This week" : "Denna vecka", "No due" : "Inget slut", + "upcoming cards" : "kommande kort", + "No upcoming cards" : "Inga kommande kort", "Link to a board" : "Länka till en tavla", "Link to a card" : "Länka till ett kort", "Something went wrong" : "Något gick fel", diff --git a/l10n/tr.js b/l10n/tr.js index c0365d5a8..624268ed2 100644 --- a/l10n/tr.js +++ b/l10n/tr.js @@ -99,6 +99,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Herhangi bir dosya yüklenmedi ya da %s olan en büyük dosya boyutu sınırı aşıldı", "Personal planning and team project organization" : "Kişisel planlama ve takım projesi yönetimi", "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" : "Tahta, Nextcloud ile bütünleştirilmiş takımlar için Kanban tarzında bir kişisel planlama ve proje yönetimi uygulamasıdır.\n\n\n- 📥 Görevleri kartlara ekleyerek sıralayabilirsiniz\n- 📄 Markdown ile biçimlendirilmiş notlar ekleyebilirsiniz\n- 🔖 Daha iyi düzenleme için etiketler atayabilirsiniz\n- 👥 Takımınız, arkadaşlarınız ya da aileniz ile paylaşabilirsiniz\n- 💬 Yorumları kullanarak konular üzerinde takımınız ile yazışabilirsiniz\n- ⚡ İşlem akışı ile değişiklikleri görebilirsiniz\n- 🚀 Projelerinizi düzenli tutarak izleyebilirsiniz", + "Card details" : "Kart ayrıntıları", "Create new board" : "Pano ekle", "new board" : "pano ekle", "Select the board to link to a project" : "Bir proje ile ilişkilendirilecek pano bağlantısını seçin", @@ -130,6 +131,7 @@ OC.L10N.register( "Next 30 days" : "Gelecek 30 gün", "No due date" : "Bitiş tarihi yok", "Clear filter" : "Süzgeci temizle", + "Hide archived cards" : "Arşivlenmiş kartları gizle", "Show archived cards" : "Arşivlenmiş kartları görüntüle", "Toggle compact mode" : "Sıkışık kipi değiştir", "Details" : "Ayrıntılar", @@ -167,6 +169,8 @@ OC.L10N.register( "Add this attachment" : "Bu dosyayı ekle", "Delete Attachment" : "Ek Dosyasını Sil", "Restore Attachment" : "Ek Dosyasını Geri Yükle", + "Open in sidebar view" : "Yan çubuk görünümünde aç", + "Open in bigger view" : "Daha büyük görünümde aç", "Assign a tag to this card…" : "Bu karta bir etiket ata…", "Assign to users" : "Kullanıcılara ata", "Assign to users/groups/circles" : "Kullanıcılara/gruplara/çevrelere ata", @@ -184,6 +188,7 @@ OC.L10N.register( "Attachments" : "Ek dosyalar", "Comments" : "Açıklamalar", "Choose attachment" : "Ek dosyayı seçin", + "Select Date" : "Tarih Seçin", "Modified" : "Değiştirilme", "Created" : "Oluşturulma", "No comments yet. Begin the discussion!" : "Henüz bir yorum yapılmamış. Tartışmayı başlatın!", @@ -201,13 +206,13 @@ OC.L10N.register( "Archive card" : "Kartı arşivle", "Delete card" : "Kartı sil", "Move card" : "Kartı taşı", - "Card details" : "Kart ayrıntıları", "Move card to another board" : "Kartı başka bir panoya taşı", "Select a list" : "Bir liste seçin", "seconds ago" : "saniye önce", "All boards" : "Tüm panolar", "Archived boards" : "Arşivlenmiş panolar", "Shared with you" : "Sizinle paylaşıldı", + "Use modal card view" : "Üste açılan kart görünümü kullanılsın", "Limit deck usage of groups" : "Tahtayı şu gruplar kullanabilsin", "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." : "Tahta kullanımı gruplar ile sınırlandığında belirtilen grupların üyesi olmayan kişiler kendi tahtalarını oluşturamaz. Bu kullanıcılar ancak kendileri ile paylaşılan tahtalar üzerinde çalışabilir.", "New board title" : "Yeni pano başlığı", diff --git a/l10n/tr.json b/l10n/tr.json index b6f08b2d7..ecb98decb 100644 --- a/l10n/tr.json +++ b/l10n/tr.json @@ -97,6 +97,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Herhangi bir dosya yüklenmedi ya da %s olan en büyük dosya boyutu sınırı aşıldı", "Personal planning and team project organization" : "Kişisel planlama ve takım projesi yönetimi", "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" : "Tahta, Nextcloud ile bütünleştirilmiş takımlar için Kanban tarzında bir kişisel planlama ve proje yönetimi uygulamasıdır.\n\n\n- 📥 Görevleri kartlara ekleyerek sıralayabilirsiniz\n- 📄 Markdown ile biçimlendirilmiş notlar ekleyebilirsiniz\n- 🔖 Daha iyi düzenleme için etiketler atayabilirsiniz\n- 👥 Takımınız, arkadaşlarınız ya da aileniz ile paylaşabilirsiniz\n- 💬 Yorumları kullanarak konular üzerinde takımınız ile yazışabilirsiniz\n- ⚡ İşlem akışı ile değişiklikleri görebilirsiniz\n- 🚀 Projelerinizi düzenli tutarak izleyebilirsiniz", + "Card details" : "Kart ayrıntıları", "Create new board" : "Pano ekle", "new board" : "pano ekle", "Select the board to link to a project" : "Bir proje ile ilişkilendirilecek pano bağlantısını seçin", @@ -128,6 +129,7 @@ "Next 30 days" : "Gelecek 30 gün", "No due date" : "Bitiş tarihi yok", "Clear filter" : "Süzgeci temizle", + "Hide archived cards" : "Arşivlenmiş kartları gizle", "Show archived cards" : "Arşivlenmiş kartları görüntüle", "Toggle compact mode" : "Sıkışık kipi değiştir", "Details" : "Ayrıntılar", @@ -165,6 +167,8 @@ "Add this attachment" : "Bu dosyayı ekle", "Delete Attachment" : "Ek Dosyasını Sil", "Restore Attachment" : "Ek Dosyasını Geri Yükle", + "Open in sidebar view" : "Yan çubuk görünümünde aç", + "Open in bigger view" : "Daha büyük görünümde aç", "Assign a tag to this card…" : "Bu karta bir etiket ata…", "Assign to users" : "Kullanıcılara ata", "Assign to users/groups/circles" : "Kullanıcılara/gruplara/çevrelere ata", @@ -182,6 +186,7 @@ "Attachments" : "Ek dosyalar", "Comments" : "Açıklamalar", "Choose attachment" : "Ek dosyayı seçin", + "Select Date" : "Tarih Seçin", "Modified" : "Değiştirilme", "Created" : "Oluşturulma", "No comments yet. Begin the discussion!" : "Henüz bir yorum yapılmamış. Tartışmayı başlatın!", @@ -199,13 +204,13 @@ "Archive card" : "Kartı arşivle", "Delete card" : "Kartı sil", "Move card" : "Kartı taşı", - "Card details" : "Kart ayrıntıları", "Move card to another board" : "Kartı başka bir panoya taşı", "Select a list" : "Bir liste seçin", "seconds ago" : "saniye önce", "All boards" : "Tüm panolar", "Archived boards" : "Arşivlenmiş panolar", "Shared with you" : "Sizinle paylaşıldı", + "Use modal card view" : "Üste açılan kart görünümü kullanılsın", "Limit deck usage of groups" : "Tahtayı şu gruplar kullanabilsin", "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." : "Tahta kullanımı gruplar ile sınırlandığında belirtilen grupların üyesi olmayan kişiler kendi tahtalarını oluşturamaz. Bu kullanıcılar ancak kendileri ile paylaşılan tahtalar üzerinde çalışabilir.", "New board title" : "Yeni pano başlığı", diff --git a/l10n/uk.js b/l10n/uk.js index c47eea1cd..540d9e81f 100644 --- a/l10n/uk.js +++ b/l10n/uk.js @@ -34,6 +34,7 @@ OC.L10N.register( "Missing a temporary folder" : "Відсутня тека для тимчасових файлів", "Could not write file to disk" : "Неможливо записати файл на диск", "A PHP extension stopped the file upload" : "Розширення PHP призупинило завантаження файлу", + "Card details" : "Деталі картки", "Create new board" : "Створити нову дошку", "new board" : "нова дошка", "Select the board to link to a project" : "Виберіть дошку для прив'зки до проєкту", @@ -64,6 +65,7 @@ OC.L10N.register( "Next 30 days" : "Наступні 30 днів", "No due date" : "Без дати завершення", "Clear filter" : "Очистити фільтр", + "Hide archived cards" : "Приховати архівні картки", "Show archived cards" : "Показати архівні картки", "Toggle compact mode" : "Перемкнути компактний вигляд", "Details" : "Деталі", @@ -114,6 +116,7 @@ OC.L10N.register( "Attachments" : "Вкладення", "Comments" : "Коментарі", "Choose attachment" : "Вибрати вкладення", + "Select Date" : "Вкажіть дату", "Modified" : "Змінено", "Created" : "Створено", "Save" : "Зберегти", @@ -127,7 +130,6 @@ OC.L10N.register( "Archive card" : "Архівувати картку", "Delete card" : "Вилучити картку", "Move card" : "Пересунути картку", - "Card details" : "Деталі картки", "Move card to another board" : "Перемістити картку до іншої дошки", "Select a list" : "Виберіть список", "seconds ago" : "секунд тому", diff --git a/l10n/uk.json b/l10n/uk.json index 7c709d6f9..69012bcc3 100644 --- a/l10n/uk.json +++ b/l10n/uk.json @@ -32,6 +32,7 @@ "Missing a temporary folder" : "Відсутня тека для тимчасових файлів", "Could not write file to disk" : "Неможливо записати файл на диск", "A PHP extension stopped the file upload" : "Розширення PHP призупинило завантаження файлу", + "Card details" : "Деталі картки", "Create new board" : "Створити нову дошку", "new board" : "нова дошка", "Select the board to link to a project" : "Виберіть дошку для прив'зки до проєкту", @@ -62,6 +63,7 @@ "Next 30 days" : "Наступні 30 днів", "No due date" : "Без дати завершення", "Clear filter" : "Очистити фільтр", + "Hide archived cards" : "Приховати архівні картки", "Show archived cards" : "Показати архівні картки", "Toggle compact mode" : "Перемкнути компактний вигляд", "Details" : "Деталі", @@ -112,6 +114,7 @@ "Attachments" : "Вкладення", "Comments" : "Коментарі", "Choose attachment" : "Вибрати вкладення", + "Select Date" : "Вкажіть дату", "Modified" : "Змінено", "Created" : "Створено", "Save" : "Зберегти", @@ -125,7 +128,6 @@ "Archive card" : "Архівувати картку", "Delete card" : "Вилучити картку", "Move card" : "Пересунути картку", - "Card details" : "Деталі картки", "Move card to another board" : "Перемістити картку до іншої дошки", "Select a list" : "Виберіть список", "seconds ago" : "секунд тому", diff --git a/l10n/vi.js b/l10n/vi.js index 448d502e4..756daae11 100644 --- a/l10n/vi.js +++ b/l10n/vi.js @@ -46,6 +46,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Chưa có tệp nào được tải lên hoặc kích thước tệp vượt quá giới hạn của %s", "Create new board" : "Tạo dự án mới", "Cancel" : "Hủy bỏ", + "Hide archived cards" : "Ẩn tác vụ đã lưu trữ", "Show archived cards" : "Hiện tác vụ đã lưu trữ", "Toggle compact mode" : "Chuyển đổi chế độ thu gọn", "Details" : "Thông tin", @@ -66,6 +67,7 @@ OC.L10N.register( "Formatting help" : "Định dạng trợ giúp", "Attachments" : "Đính kèm", "Comments" : "Các bình luận", + "Select Date" : "Chọn ngày", "Modified" : "Thay đổi", "Created" : "Đã tạo", "Save" : "Lưu", diff --git a/l10n/vi.json b/l10n/vi.json index b75f995bf..bc6f33f23 100644 --- a/l10n/vi.json +++ b/l10n/vi.json @@ -44,6 +44,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Chưa có tệp nào được tải lên hoặc kích thước tệp vượt quá giới hạn của %s", "Create new board" : "Tạo dự án mới", "Cancel" : "Hủy bỏ", + "Hide archived cards" : "Ẩn tác vụ đã lưu trữ", "Show archived cards" : "Hiện tác vụ đã lưu trữ", "Toggle compact mode" : "Chuyển đổi chế độ thu gọn", "Details" : "Thông tin", @@ -64,6 +65,7 @@ "Formatting help" : "Định dạng trợ giúp", "Attachments" : "Đính kèm", "Comments" : "Các bình luận", + "Select Date" : "Chọn ngày", "Modified" : "Thay đổi", "Created" : "Đã tạo", "Save" : "Lưu", diff --git a/l10n/zh_CN.js b/l10n/zh_CN.js index c4a4e3d06..e403c9c53 100644 --- a/l10n/zh_CN.js +++ b/l10n/zh_CN.js @@ -17,6 +17,8 @@ OC.L10N.register( "{user} has archived the board {before}" : "{user} 已将面板 {before} 存档", "You have unarchived the board {board}" : "您撤销了 {board} 存档", "{user} has unarchived the board {before}" : "{user} 撤销了面板 {before} 存档", + "You have created a new list {stack} on board {board}" : "您在 {board} 上创建了一个新列表 {stack}面板", + "{user} has created a new list {stack} on board {board}" : "{user} 在 {board} 上创建了一个新列表 {stack}", "You have renamed the card {before} to {card}" : "您将卡片 {before} 重命名为 {card}", "{user} has renamed the card {before} to {card}" : "{user} 将卡片 {before} 重命名为 {card}", "You have removed the due date of card {card}" : "您移除了到期的卡片 {card}", @@ -74,6 +76,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "没有文件被上传或文件大小超出最大值 %s", "Personal planning and team project organization" : "个人规划和团队项目组织", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "看板是集成于 Nextcloud 中的一款看板风格的任务管理工具,用于帮助进行个人计划与项目安排。\n\n\n- 📥 把您的任务添加到卡片上,并将它们有序排列\n- 📄 将您的补充说明用markdown写下来\n- 🔖 利用指派标签更好地进行筹划\n- 👥 与您的团队,朋友或家人共享\n- 📎 附加文件并将它们嵌入到您的markdown说明中\n- 💬 用评论与您的团队讨论\n- ⚡ 在活动流中紧跟变化\n- 🚀 使您的项目井井有条", + "Card details" : "卡片详情", "Create new board" : "创建新面板", "new board" : "新面板", "Select the board to link to a project" : "选择要链接到一个项目的面板", @@ -105,6 +108,7 @@ OC.L10N.register( "Next 30 days" : "下个30天", "No due date" : "无截止日期", "Clear filter" : "清空过滤器", + "Hide archived cards" : "隐藏已存档的卡片", "Show archived cards" : "显示已存档的卡片", "Toggle compact mode" : "切换简洁模式", "Details" : "详情", @@ -125,6 +129,7 @@ OC.L10N.register( "Can share" : "可以共享", "Can manage" : "可以管理", "Delete" : "删除", + "Archive all cards" : "存档所有卡片", "Delete list" : "删除列表", "Add card" : "添加卡片", "Add a new card" : "添加一张新卡片", @@ -154,6 +159,7 @@ OC.L10N.register( "Attachments" : "附件", "Comments" : "评论", "Choose attachment" : "选择附件", + "Select Date" : "选择日期", "Modified" : "已修改", "Created" : "已创建", "No comments yet. Begin the discussion!" : "还没有评论。 开始讨论吧!", @@ -170,7 +176,6 @@ OC.L10N.register( "Archive card" : "归档卡片", "Delete card" : "删除卡片", "Move card" : "移动卡片", - "Card details" : "卡片详情", "Move card to another board" : "将卡片移到其他面板", "seconds ago" : "几秒前", "All boards" : "全部面板", diff --git a/l10n/zh_CN.json b/l10n/zh_CN.json index 4874f9301..df608f979 100644 --- a/l10n/zh_CN.json +++ b/l10n/zh_CN.json @@ -15,6 +15,8 @@ "{user} has archived the board {before}" : "{user} 已将面板 {before} 存档", "You have unarchived the board {board}" : "您撤销了 {board} 存档", "{user} has unarchived the board {before}" : "{user} 撤销了面板 {before} 存档", + "You have created a new list {stack} on board {board}" : "您在 {board} 上创建了一个新列表 {stack}面板", + "{user} has created a new list {stack} on board {board}" : "{user} 在 {board} 上创建了一个新列表 {stack}", "You have renamed the card {before} to {card}" : "您将卡片 {before} 重命名为 {card}", "{user} has renamed the card {before} to {card}" : "{user} 将卡片 {before} 重命名为 {card}", "You have removed the due date of card {card}" : "您移除了到期的卡片 {card}", @@ -72,6 +74,7 @@ "No file uploaded or file size exceeds maximum of %s" : "没有文件被上传或文件大小超出最大值 %s", "Personal planning and team project organization" : "个人规划和团队项目组织", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "看板是集成于 Nextcloud 中的一款看板风格的任务管理工具,用于帮助进行个人计划与项目安排。\n\n\n- 📥 把您的任务添加到卡片上,并将它们有序排列\n- 📄 将您的补充说明用markdown写下来\n- 🔖 利用指派标签更好地进行筹划\n- 👥 与您的团队,朋友或家人共享\n- 📎 附加文件并将它们嵌入到您的markdown说明中\n- 💬 用评论与您的团队讨论\n- ⚡ 在活动流中紧跟变化\n- 🚀 使您的项目井井有条", + "Card details" : "卡片详情", "Create new board" : "创建新面板", "new board" : "新面板", "Select the board to link to a project" : "选择要链接到一个项目的面板", @@ -103,6 +106,7 @@ "Next 30 days" : "下个30天", "No due date" : "无截止日期", "Clear filter" : "清空过滤器", + "Hide archived cards" : "隐藏已存档的卡片", "Show archived cards" : "显示已存档的卡片", "Toggle compact mode" : "切换简洁模式", "Details" : "详情", @@ -123,6 +127,7 @@ "Can share" : "可以共享", "Can manage" : "可以管理", "Delete" : "删除", + "Archive all cards" : "存档所有卡片", "Delete list" : "删除列表", "Add card" : "添加卡片", "Add a new card" : "添加一张新卡片", @@ -152,6 +157,7 @@ "Attachments" : "附件", "Comments" : "评论", "Choose attachment" : "选择附件", + "Select Date" : "选择日期", "Modified" : "已修改", "Created" : "已创建", "No comments yet. Begin the discussion!" : "还没有评论。 开始讨论吧!", @@ -168,7 +174,6 @@ "Archive card" : "归档卡片", "Delete card" : "删除卡片", "Move card" : "移动卡片", - "Card details" : "卡片详情", "Move card to another board" : "将卡片移到其他面板", "seconds ago" : "几秒前", "All boards" : "全部面板", diff --git a/l10n/zh_TW.js b/l10n/zh_TW.js index a7fcb6618..5142ed2f5 100644 --- a/l10n/zh_TW.js +++ b/l10n/zh_TW.js @@ -46,6 +46,7 @@ OC.L10N.register( "Description" : "描述", "Attachments" : "附件", "Comments" : "意見", + "Select Date" : "選擇日期", "Modified" : "已修改", "Created" : "已新增", "Save" : "儲存", diff --git a/l10n/zh_TW.json b/l10n/zh_TW.json index 33b335e52..aca46bbd1 100644 --- a/l10n/zh_TW.json +++ b/l10n/zh_TW.json @@ -44,6 +44,7 @@ "Description" : "描述", "Attachments" : "附件", "Comments" : "意見", + "Select Date" : "選擇日期", "Modified" : "已修改", "Created" : "已新增", "Save" : "儲存", diff --git a/lib/Activity/DeckProvider.php b/lib/Activity/DeckProvider.php index 7ac48ceab..923f7146f 100644 --- a/lib/Activity/DeckProvider.php +++ b/lib/Activity/DeckProvider.php @@ -130,8 +130,8 @@ class DeckProvider implements IProvider { ]; if (array_key_exists('board', $subjectParams)) { - $archivedParam = $subjectParams['card']['archived'] ? 'archived' : ''; - $card['link'] = $this->deckUrl('/board/' . $subjectParams['board']['id'] . '/' . $archivedParam . '/card/' . $event->getObjectId()); + $archivedParam = $subjectParams['card']['archived'] ? 'archived/' : ''; + $card['link'] = $this->deckUrl('/board/' . $subjectParams['board']['id'] . '/' . $archivedParam . 'card/' . $event->getObjectId()); } $params['card'] = $card; } diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index d4fd3a7a9..048dc5b3c 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -23,249 +23,11 @@ namespace OCA\Deck\AppInfo; -use Exception; -use OC_Util; -use OCA\Deck\Activity\CommentEventHandler; -use OCA\Deck\Capabilities; -use OCA\Deck\Collaboration\Resources\ResourceProvider; -use OCA\Deck\Collaboration\Resources\ResourceProviderCard; -use OCA\Deck\Dashboard\DeckWidget; -use OCA\Deck\Db\Acl; -use OCA\Deck\Db\AclMapper; -use OCA\Deck\Db\AssignedUsersMapper; -use OCA\Deck\Db\BoardMapper; -use OCA\Deck\Db\CardMapper; -use OCA\Deck\Middleware\DefaultBoardMiddleware; -use OCA\Deck\Middleware\ExceptionMiddleware; -use OCA\Deck\Notification\Notifier; -use OCA\Deck\Service\FullTextSearchService; -use OCA\Deck\Service\PermissionService; -use OCP\AppFramework\App; -use OCP\Collaboration\Resources\IManager; -use OCP\Collaboration\Resources\IProviderManager; -use OCP\Comments\CommentsEntityEvent; -use OCP\Dashboard\RegisterWidgetEvent; -use OCP\EventDispatcher\Event; -use OCP\EventDispatcher\IEventDispatcher; -use OCP\FullTextSearch\IFullTextSearchManager; -use OCP\IGroup; -use OCP\IServerContainer; -use OCP\IUser; -use OCP\IUserManager; -use OCP\IURLGenerator; -use OCP\Util; - -class Application extends App { - public const APP_ID = 'deck'; - - public const COMMENT_ENTITY_TYPE = 'deckCard'; - - /** @var IServerContainer */ - private $server; - - /** @var FullTextSearchService */ - private $fullTextSearchService; - - /** @var IFullTextSearchManager */ - private $fullTextSearchManager; - - public function __construct(array $urlParams = []) { - parent::__construct('deck', $urlParams); - - $container = $this->getContainer(); - $server = $this->getContainer()->getServer(); - - $this->server = $server; - - $container->registerCapability(Capabilities::class); - $container->registerMiddleWare(ExceptionMiddleware::class); - $container->registerMiddleWare(DefaultBoardMiddleware::class); - - $container->registerService('databaseType', static function () use ($server) { - return $server->getConfig()->getSystemValue('dbtype', 'sqlite'); - }); - $container->registerService('database4ByteSupport', static function () use ($server) { - return $server->getDatabaseConnection()->supports4ByteText(); - }); - - $version = OC_Util::getVersion()[0]; - if ($version >= 20) { - /** @var IEventDispatcher $dispatcher */ - $dispatcher = $container->getServer()->query(IEventDispatcher::class); - $dispatcher->addListener(RegisterWidgetEvent::class, function (RegisterWidgetEvent $event) use ($container) { - $event->registerWidget(DeckWidget::class); - }); - } +$version = \OC_Util::getVersion()[0]; +if ($version >= 20) { + class Application extends Application20 { } - - public function register(): void { - $this->registerNavigationEntry(); - $this->registerUserGroupHooks(); - $this->registerNotifications(); - $this->registerCommentsEntity(); - $this->registerFullTextSearch(); - $this->registerCollaborationResources(); - } - - public function registerNavigationEntry(): void { - $container = $this->getContainer(); - $this->server->getNavigationManager()->add(static function () use ($container) { - $urlGenerator = $container->query(IURLGenerator::class); - return [ - 'id' => 'deck', - 'order' => 10, - 'href' => $urlGenerator->linkToRoute('deck.page.index'), - 'icon' => $urlGenerator->imagePath('deck', 'deck.svg'), - 'name' => 'Deck', - ]; - }); - } - - private function registerUserGroupHooks(): void { - $container = $this->getContainer(); - // Delete user/group acl entries when they get deleted - /** @var IUserManager $userManager */ - $userManager = $this->server->getUserManager(); - $userManager->listen('\OC\User', 'postDelete', static function (IUser $user) use ($container) { - // delete existing acl entries for deleted user - /** @var AclMapper $aclMapper */ - $aclMapper = $container->query(AclMapper::class); - $acls = $aclMapper->findByParticipant(Acl::PERMISSION_TYPE_USER, $user->getUID()); - foreach ($acls as $acl) { - $aclMapper->delete($acl); - } - // delete existing user assignments - $assignmentMapper = $container->query(AssignedUsersMapper::class); - $assignments = $assignmentMapper->findByUserId($user->getUID()); - foreach ($assignments as $assignment) { - $assignmentMapper->delete($assignment); - } - - /** @var BoardMapper $boardMapper */ - $boardMapper = $container->query(BoardMapper::class); - $boards = $boardMapper->findAllByOwner($user->getUID()); - foreach ($boards as $board) { - $boardMapper->delete($board); - } - }); - - /** @var IUserManager $userManager */ - $groupManager = $this->server->getGroupManager(); - $groupManager->listen('\OC\Group', 'postDelete', static function (IGroup $group) use ($container) { - /** @var AclMapper $aclMapper */ - $aclMapper = $container->query(AclMapper::class); - $aclMapper->findByParticipant(Acl::PERMISSION_TYPE_GROUP, $group->getGID()); - $acls = $aclMapper->findByParticipant(Acl::PERMISSION_TYPE_GROUP, $group->getGID()); - foreach ($acls as $acl) { - $aclMapper->delete($acl); - } - }); - } - - public function registerNotifications(): void { - $notificationManager = $this->server->getNotificationManager(); - $notificationManager->registerNotifierService(Notifier::class); - } - - public function registerCommentsEntity(): void { - $this->server->getEventDispatcher()->addListener(CommentsEntityEvent::EVENT_ENTITY, function (CommentsEntityEvent $event) { - $event->addEntityCollection(self::COMMENT_ENTITY_TYPE, function ($name) { - /** @var CardMapper */ - $cardMapper = $this->getContainer()->query(CardMapper::class); - $permissionService = $this->getContainer()->query(PermissionService::class); - - try { - return $permissionService->checkPermission($cardMapper, (int) $name, Acl::PERMISSION_READ); - } catch (\Exception $e) { - return false; - } - }); - }); - $this->registerCommentsEventHandler(); - } - - /** - */ - protected function registerCommentsEventHandler(): void { - $this->server->getCommentsManager()->registerEventHandler(function () { - return $this->getContainer()->query(CommentEventHandler::class); - }); - } - - protected function registerCollaborationResources(): void { - $version = OC_Util::getVersion()[0]; - if ($version < 16) { - return; - } - - /** - * Register Collaboration ResourceProvider - * - * @Todo: Remove if min-version is 18 - */ - if ($version < 18) { - /** @var IManager $resourceManager */ - $resourceManager = $this->getContainer()->query(IManager::class); - } else { - /** @var IProviderManager $resourceManager */ - $resourceManager = $this->getContainer()->query(IProviderManager::class); - } - $resourceManager->registerResourceProvider(ResourceProvider::class); - $resourceManager->registerResourceProvider(ResourceProviderCard::class); - - $this->server->getEventDispatcher()->addListener('\OCP\Collaboration\Resources::loadAdditionalScripts', static function () { - Util::addScript('deck', 'collections'); - }); - } - - public function registerFullTextSearch(): void { - if (Util::getVersion()[0] < 16) { - return; - } - - $c = $this->getContainer(); - try { - $this->fullTextSearchService = $c->query(FullTextSearchService::class); - $this->fullTextSearchManager = $c->query(IFullTextSearchManager::class); - } catch (Exception $e) { - return; - } - - if (!$this->fullTextSearchManager->isAvailable()) { - return; - } - - /** @var IEventDispatcher $eventDispatcher */ - $eventDispatcher = $this->server->query(IEventDispatcher::class); - $eventDispatcher->addListener( - '\OCA\Deck\Card::onCreate', function (Event $e) { - $this->fullTextSearchService->onCardCreated($e); - } - ); - $eventDispatcher->addListener( - '\OCA\Deck\Card::onUpdate', function (Event $e) { - $this->fullTextSearchService->onCardUpdated($e); - } - ); - $eventDispatcher->addListener( - '\OCA\Deck\Card::onDelete', function (Event $e) { - $this->fullTextSearchService->onCardDeleted($e); - } - ); - $eventDispatcher->addListener( - '\OCA\Deck\Board::onShareNew', function (Event $e) { - $this->fullTextSearchService->onBoardShares($e); - } - ); - $eventDispatcher->addListener( - '\OCA\Deck\Board::onShareEdit', function (Event $e) { - $this->fullTextSearchService->onBoardShares($e); - } - ); - $eventDispatcher->addListener( - '\OCA\Deck\Board::onShareDelete', function (Event $e) { - $this->fullTextSearchService->onBoardShares($e); - } - ); +} else { + class Application extends ApplicationLegacy { } } diff --git a/lib/AppInfo/Application20.php b/lib/AppInfo/Application20.php new file mode 100644 index 000000000..ed05a4797 --- /dev/null +++ b/lib/AppInfo/Application20.php @@ -0,0 +1,233 @@ + + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Deck\AppInfo; + +use Closure; +use Exception; +use OC\EventDispatcher\SymfonyAdapter; +use OCA\Deck\Activity\CommentEventHandler; +use OCA\Deck\Capabilities; +use OCA\Deck\Collaboration\Resources\ResourceProvider; +use OCA\Deck\Collaboration\Resources\ResourceProviderCard; +use OCA\Deck\Dashboard\DeckWidget; +use OCA\Deck\Db\Acl; +use OCA\Deck\Db\AclMapper; +use OCA\Deck\Db\AssignedUsersMapper; +use OCA\Deck\Db\BoardMapper; +use OCA\Deck\Db\CardMapper; +use OCA\Deck\Middleware\DefaultBoardMiddleware; +use OCA\Deck\Middleware\ExceptionMiddleware; +use OCA\Deck\Notification\Notifier; +use OCA\Deck\Search\DeckProvider; +use OCA\Deck\Service\FullTextSearchService; +use OCA\Deck\Service\PermissionService; +use OCP\AppFramework\App; +use OCP\AppFramework\Bootstrap\IBootContext; +use OCP\AppFramework\Bootstrap\IBootstrap; +use OCP\AppFramework\Bootstrap\IRegistrationContext; +use OCP\Collaboration\Resources\IProviderManager; +use OCP\Comments\CommentsEntityEvent; +use OCP\Comments\ICommentsManager; +use OCP\EventDispatcher\Event; +use OCP\EventDispatcher\IEventDispatcher; +use OCP\FullTextSearch\IFullTextSearchManager; +use OCP\IConfig; +use OCP\IDBConnection; +use OCP\IGroup; +use OCP\IGroupManager; +use OCP\IServerContainer; +use OCP\IUser; +use OCP\IUserManager; +use OCP\Notification\IManager as NotificationManager; +use OCP\Util; +use Psr\Container\ContainerInterface; + +class Application20 extends App implements IBootstrap { + public const APP_ID = 'deck'; + + public const COMMENT_ENTITY_TYPE = 'deckCard'; + + /** @var IServerContainer */ + private $server; + + /** @var FullTextSearchService */ + private $fullTextSearchService; + + /** @var IFullTextSearchManager */ + private $fullTextSearchManager; + + public function __construct(array $urlParams = []) { + parent::__construct(self::APP_ID, $urlParams); + + $this->server = \OC::$server; + } + + public function boot(IBootContext $context): void { + Util::addStyle('deck', 'deck'); + + $context->injectFn(Closure::fromCallable([$this, 'registerUserGroupHooks'])); + $context->injectFn(Closure::fromCallable([$this, 'registerCommentsEntity'])); + $context->injectFn(Closure::fromCallable([$this, 'registerCommentsEventHandler'])); + $context->injectFn(Closure::fromCallable([$this, 'registerNotifications'])); + $context->injectFn(Closure::fromCallable([$this, 'registerFullTextSearch'])); + $context->injectFn(Closure::fromCallable([$this, 'registerCollaborationResources'])); + } + + public function register(IRegistrationContext $context): void { + if ((@include_once __DIR__ . '/../../vendor/autoload.php') === false) { + throw new Exception('Cannot include autoload. Did you run install dependencies using composer?'); + } + + $context->registerCapability(Capabilities::class); + $context->registerMiddleWare(ExceptionMiddleware::class); + $context->registerMiddleWare(DefaultBoardMiddleware::class); + + $context->registerService('databaseType', static function (ContainerInterface $c) { + return $c->get(IConfig::class)->getSystemValue('dbtype', 'sqlite'); + }); + $context->registerService('database4ByteSupport', static function (ContainerInterface $c) { + return $c->get(IDBConnection::class)->supports4ByteText(); + }); + + $context->registerSearchProvider(DeckProvider::class); + $context->registerDashboardWidget(DeckWidget::class); + } + + public function registerNotifications(NotificationManager $notificationManager): void { + $notificationManager->registerNotifierService(Notifier::class); + } + + private function registerUserGroupHooks(IUserManager $userManager, IGroupManager $groupManager): void { + $container = $this->getContainer(); + // Delete user/group acl entries when they get deleted + $userManager->listen('\OC\User', 'postDelete', static function (IUser $user) use ($container) { + // delete existing acl entries for deleted user + /** @var AclMapper $aclMapper */ + $aclMapper = $container->query(AclMapper::class); + $acls = $aclMapper->findByParticipant(Acl::PERMISSION_TYPE_USER, $user->getUID()); + foreach ($acls as $acl) { + $aclMapper->delete($acl); + } + // delete existing user assignments + $assignmentMapper = $container->query(AssignedUsersMapper::class); + $assignments = $assignmentMapper->findByUserId($user->getUID()); + foreach ($assignments as $assignment) { + $assignmentMapper->delete($assignment); + } + + /** @var BoardMapper $boardMapper */ + $boardMapper = $container->query(BoardMapper::class); + $boards = $boardMapper->findAllByOwner($user->getUID()); + foreach ($boards as $board) { + $boardMapper->delete($board); + } + }); + + $groupManager->listen('\OC\Group', 'postDelete', static function (IGroup $group) use ($container) { + /** @var AclMapper $aclMapper */ + $aclMapper = $container->query(AclMapper::class); + $aclMapper->findByParticipant(Acl::PERMISSION_TYPE_GROUP, $group->getGID()); + $acls = $aclMapper->findByParticipant(Acl::PERMISSION_TYPE_GROUP, $group->getGID()); + foreach ($acls as $acl) { + $aclMapper->delete($acl); + } + }); + } + + public function registerCommentsEntity(IEventDispatcher $eventDispatcher): void { + $eventDispatcher->addListener(CommentsEntityEvent::EVENT_ENTITY, function (CommentsEntityEvent $event) { + $event->addEntityCollection(self::COMMENT_ENTITY_TYPE, function ($name) { + /** @var CardMapper */ + $cardMapper = $this->getContainer()->get(CardMapper::class); + $permissionService = $this->getContainer()->get(PermissionService::class); + + try { + return $permissionService->checkPermission($cardMapper, (int) $name, Acl::PERMISSION_READ); + } catch (\Exception $e) { + return false; + } + }); + }); + } + + protected function registerCommentsEventHandler(ICommentsManager $commentsManager): void { + $commentsManager->registerEventHandler(function () { + return $this->getContainer()->query(CommentEventHandler::class); + }); + } + + protected function registerCollaborationResources(IProviderManager $resourceManager, SymfonyAdapter $symfonyAdapter): void { + $resourceManager->registerResourceProvider(ResourceProvider::class); + $resourceManager->registerResourceProvider(ResourceProviderCard::class); + + $symfonyAdapter->addListener('\OCP\Collaboration\Resources::loadAdditionalScripts', static function () { + Util::addScript('deck', 'collections'); + }); + } + + public function registerFullTextSearch(IFullTextSearchManager $fullTextSearchManager, IEventDispatcher $eventDispatcher): void { + if (!$fullTextSearchManager->isAvailable()) { + return; + } + + // FIXME move to addServiceListener + $server = $this->server; + $eventDispatcher->addListener( + '\OCA\Deck\Card::onCreate', function (Event $e) use ($server) { + $fullTextSearchService = $server->get(FullTextSearchService::class); + $fullTextSearchService->onCardCreated($e); + } + ); + $eventDispatcher->addListener( + '\OCA\Deck\Card::onUpdate', function (Event $e) use ($server) { + $fullTextSearchService = $server->get(FullTextSearchService::class); + $fullTextSearchService->onCardUpdated($e); + } + ); + $eventDispatcher->addListener( + '\OCA\Deck\Card::onDelete', function (Event $e) use ($server) { + $fullTextSearchService = $server->get(FullTextSearchService::class); + $fullTextSearchService->onCardDeleted($e); + } + ); + $eventDispatcher->addListener( + '\OCA\Deck\Board::onShareNew', function (Event $e) { + $fullTextSearchService = $server->get(FullTextSearchService::class); + $fullTextSearchService->onBoardShares($e); + } + ); + $eventDispatcher->addListener( + '\OCA\Deck\Board::onShareEdit', function (Event $e) use ($server) { + $fullTextSearchService = $server->get(FullTextSearchService::class); + $fullTextSearchService->onBoardShares($e); + } + ); + $eventDispatcher->addListener( + '\OCA\Deck\Board::onShareDelete', function (Event $e) use ($server) { + $fullTextSearchService = $server->get(FullTextSearchService::class); + $fullTextSearchService->onBoardShares($e); + } + ); + } +} diff --git a/lib/AppInfo/ApplicationLegacy.php b/lib/AppInfo/ApplicationLegacy.php new file mode 100644 index 000000000..22a3f6ac5 --- /dev/null +++ b/lib/AppInfo/ApplicationLegacy.php @@ -0,0 +1,250 @@ + + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Deck\AppInfo; + +use Exception; +use OC_Util; +use OCA\Deck\Activity\CommentEventHandler; +use OCA\Deck\Capabilities; +use OCA\Deck\Collaboration\Resources\ResourceProvider; +use OCA\Deck\Collaboration\Resources\ResourceProviderCard; +use OCA\Deck\Db\Acl; +use OCA\Deck\Db\AclMapper; +use OCA\Deck\Db\AssignedUsersMapper; +use OCA\Deck\Db\BoardMapper; +use OCA\Deck\Db\CardMapper; +use OCA\Deck\Middleware\DefaultBoardMiddleware; +use OCA\Deck\Middleware\ExceptionMiddleware; +use OCA\Deck\Notification\Notifier; +use OCA\Deck\Service\FullTextSearchService; +use OCA\Deck\Service\PermissionService; +use OCP\AppFramework\App; +use OCP\Collaboration\Resources\IManager; +use OCP\Collaboration\Resources\IProviderManager; +use OCP\Comments\CommentsEntityEvent; +use OCP\EventDispatcher\Event; +use OCP\EventDispatcher\IEventDispatcher; +use OCP\FullTextSearch\IFullTextSearchManager; +use OCP\IGroup; +use OCP\IServerContainer; +use OCP\IUser; +use OCP\IUserManager; +use OCP\Util; + +if ((@include_once __DIR__ . '/../../vendor/autoload.php') === false) { + throw new Exception('Cannot include autoload. Did you run install dependencies using composer?'); +} + +class ApplicationLegacy extends App { + public const APP_ID = 'deck'; + + public const COMMENT_ENTITY_TYPE = 'deckCard'; + + /** @var IServerContainer */ + private $server; + + /** @var FullTextSearchService */ + private $fullTextSearchService; + + /** @var IFullTextSearchManager */ + private $fullTextSearchManager; + + public function __construct(array $urlParams = []) { + parent::__construct('deck', $urlParams); + + $container = $this->getContainer(); + $server = $this->getContainer()->getServer(); + + $this->server = $server; + + $container->registerCapability(Capabilities::class); + $container->registerMiddleWare(ExceptionMiddleware::class); + $container->registerMiddleWare(DefaultBoardMiddleware::class); + + $container->registerService('databaseType', static function () use ($server) { + return $server->getConfig()->getSystemValue('dbtype', 'sqlite'); + }); + $container->registerService('database4ByteSupport', static function () use ($server) { + return $server->getDatabaseConnection()->supports4ByteText(); + }); + + $this->register(); + } + + public function register(): void { + $this->registerUserGroupHooks(); + $this->registerNotifications(); + $this->registerCommentsEntity(); + $this->registerFullTextSearch(); + $this->registerCollaborationResources(); + } + + private function registerUserGroupHooks(): void { + $container = $this->getContainer(); + // Delete user/group acl entries when they get deleted + /** @var IUserManager $userManager */ + $userManager = $this->server->getUserManager(); + $userManager->listen('\OC\User', 'postDelete', static function (IUser $user) use ($container) { + // delete existing acl entries for deleted user + /** @var AclMapper $aclMapper */ + $aclMapper = $container->query(AclMapper::class); + $acls = $aclMapper->findByParticipant(Acl::PERMISSION_TYPE_USER, $user->getUID()); + foreach ($acls as $acl) { + $aclMapper->delete($acl); + } + // delete existing user assignments + $assignmentMapper = $container->query(AssignedUsersMapper::class); + $assignments = $assignmentMapper->findByUserId($user->getUID()); + foreach ($assignments as $assignment) { + $assignmentMapper->delete($assignment); + } + + /** @var BoardMapper $boardMapper */ + $boardMapper = $container->query(BoardMapper::class); + $boards = $boardMapper->findAllByOwner($user->getUID()); + foreach ($boards as $board) { + $boardMapper->delete($board); + } + }); + + /** @var IUserManager $userManager */ + $groupManager = $this->server->getGroupManager(); + $groupManager->listen('\OC\Group', 'postDelete', static function (IGroup $group) use ($container) { + /** @var AclMapper $aclMapper */ + $aclMapper = $container->query(AclMapper::class); + $aclMapper->findByParticipant(Acl::PERMISSION_TYPE_GROUP, $group->getGID()); + $acls = $aclMapper->findByParticipant(Acl::PERMISSION_TYPE_GROUP, $group->getGID()); + foreach ($acls as $acl) { + $aclMapper->delete($acl); + } + }); + } + + public function registerNotifications(): void { + $notificationManager = $this->server->getNotificationManager(); + $notificationManager->registerNotifierService(Notifier::class); + } + + public function registerCommentsEntity(): void { + $this->server->getEventDispatcher()->addListener(CommentsEntityEvent::EVENT_ENTITY, function (CommentsEntityEvent $event) { + $event->addEntityCollection(self::COMMENT_ENTITY_TYPE, function ($name) { + /** @var CardMapper */ + $cardMapper = $this->getContainer()->query(CardMapper::class); + $permissionService = $this->getContainer()->query(PermissionService::class); + + try { + return $permissionService->checkPermission($cardMapper, (int) $name, Acl::PERMISSION_READ); + } catch (\Exception $e) { + return false; + } + }); + }); + $this->registerCommentsEventHandler(); + } + + /** + */ + protected function registerCommentsEventHandler(): void { + $this->server->getCommentsManager()->registerEventHandler(function () { + return $this->getContainer()->query(CommentEventHandler::class); + }); + } + + protected function registerCollaborationResources(): void { + $version = OC_Util::getVersion()[0]; + if ($version < 16) { + return; + } + + /** + * Register Collaboration ResourceProvider + * + * @Todo: Remove if min-version is 18 + */ + if ($version < 18) { + /** @var IManager $resourceManager */ + $resourceManager = $this->getContainer()->query(IManager::class); + } else { + /** @var IProviderManager $resourceManager */ + $resourceManager = $this->getContainer()->query(IProviderManager::class); + } + $resourceManager->registerResourceProvider(ResourceProvider::class); + $resourceManager->registerResourceProvider(ResourceProviderCard::class); + + $this->server->getEventDispatcher()->addListener('\OCP\Collaboration\Resources::loadAdditionalScripts', static function () { + Util::addScript('deck', 'collections'); + }); + } + + public function registerFullTextSearch(): void { + if (Util::getVersion()[0] < 16) { + return; + } + + $c = $this->getContainer(); + try { + $this->fullTextSearchService = $c->query(FullTextSearchService::class); + $this->fullTextSearchManager = $c->query(IFullTextSearchManager::class); + } catch (Exception $e) { + return; + } + + if (!$this->fullTextSearchManager->isAvailable()) { + return; + } + + /** @var IEventDispatcher $eventDispatcher */ + $eventDispatcher = $this->server->query(IEventDispatcher::class); + $eventDispatcher->addListener( + '\OCA\Deck\Card::onCreate', function (Event $e) { + $this->fullTextSearchService->onCardCreated($e); + } + ); + $eventDispatcher->addListener( + '\OCA\Deck\Card::onUpdate', function (Event $e) { + $this->fullTextSearchService->onCardUpdated($e); + } + ); + $eventDispatcher->addListener( + '\OCA\Deck\Card::onDelete', function (Event $e) { + $this->fullTextSearchService->onCardDeleted($e); + } + ); + $eventDispatcher->addListener( + '\OCA\Deck\Board::onShareNew', function (Event $e) { + $this->fullTextSearchService->onBoardShares($e); + } + ); + $eventDispatcher->addListener( + '\OCA\Deck\Board::onShareEdit', function (Event $e) { + $this->fullTextSearchService->onBoardShares($e); + } + ); + $eventDispatcher->addListener( + '\OCA\Deck\Board::onShareDelete', function (Event $e) { + $this->fullTextSearchService->onBoardShares($e); + } + ); + } +} diff --git a/lib/Controller/ConfigController.php b/lib/Controller/ConfigController.php index 342ac3fea..b64e23106 100644 --- a/lib/Controller/ConfigController.php +++ b/lib/Controller/ConfigController.php @@ -23,90 +23,42 @@ namespace OCA\Deck\Controller; +use OCA\Deck\Service\ConfigService; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\NotFoundResponse; -use OCP\IConfig; -use OCP\IGroup; -use OCP\IGroupManager; +use OCP\AppFramework\OCSController; use OCP\IRequest; -use OCP\AppFramework\Controller; -class ConfigController extends Controller { - private $config; - private $userId; - private $groupManager; +class ConfigController extends OCSController { + private $configService; public function __construct( $AppName, IRequest $request, - IConfig $config, - IGroupManager $groupManager, - $userId + ConfigService $configService ) { parent::__construct($AppName, $request); - $this->userId = $userId; - $this->groupManager = $groupManager; - $this->config = $config; + $this->configService = $configService; } /** * @NoCSRFRequired + * @NoAdminRequired */ - public function get() { - $data = [ - 'groupLimit' => $this->getGroupLimit(), - ]; - return new DataResponse($data); + public function get(): DataResponse { + return new DataResponse($this->configService->getAll()); } /** * @NoCSRFRequired + * @NoAdminRequired */ - public function setValue($key, $value) { - switch ($key) { - case 'groupLimit': - $result = $this->setGroupLimit($value); - break; - } + public function setValue(string $key, $value) { + $result = $this->configService->set($key, $value); if ($result === null) { return new NotFoundResponse(); } return new DataResponse($result); } - - private function setGroupLimit($value) { - $groups = []; - foreach ($value as $group) { - $groups[] = $group['id']; - } - $data = implode(',', $groups); - $this->config->setAppValue($this->appName, 'groupLimit', $data); - return $groups; - } - - private function getGroupLimitList() { - $value = $this->config->getAppValue($this->appName, 'groupLimit', ''); - $groups = explode(',', $value); - if ($value === '') { - return []; - } - return $groups; - } - - private function getGroupLimit() { - $groups = $this->getGroupLimitList(); - $groups = array_map(function ($groupId) { - /** @var IGroup $groups */ - $group = $this->groupManager->get($groupId); - if ($group === null) { - return null; - } - return [ - 'id' => $group->getGID(), - 'displayname' => $group->getDisplayName(), - ]; - }, $groups); - return array_filter($groups); - } } diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php index 2e6a32e6e..68b603d10 100644 --- a/lib/Controller/PageController.php +++ b/lib/Controller/PageController.php @@ -24,34 +24,33 @@ namespace OCA\Deck\Controller; use OCA\Deck\AppInfo\Application; +use OCA\Deck\Service\ConfigService; use OCA\Deck\Service\PermissionService; use OCP\AppFramework\Http\ContentSecurityPolicy; use OCP\IInitialStateService; use OCP\IRequest; use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Controller; -use OCP\IL10N; class PageController extends Controller { private $permissionService; private $userId; private $l10n; private $initialState; + private $configService; public function __construct( $AppName, IRequest $request, PermissionService $permissionService, IInitialStateService $initialStateService, - IL10N $l10n, - $userId + ConfigService $configService ) { parent::__construct($AppName, $request); - $this->userId = $userId; $this->permissionService = $permissionService; $this->initialState = $initialStateService; - $this->l10n = $l10n; + $this->configService = $configService; } /** @@ -64,6 +63,7 @@ class PageController extends Controller { public function index() { $this->initialState->provideInitialState(Application::APP_ID, 'maxUploadSize', (int)\OCP\Util::uploadLimit()); $this->initialState->provideInitialState(Application::APP_ID, 'canCreate', $this->permissionService->canCreate()); + $this->initialState->provideInitialState(Application::APP_ID, 'config', $this->configService->getAll()); $response = new TemplateResponse('deck', 'main'); diff --git a/lib/DAV/Calendar.php b/lib/DAV/Calendar.php new file mode 100644 index 000000000..30d6b4024 --- /dev/null +++ b/lib/DAV/Calendar.php @@ -0,0 +1,211 @@ + + * + * @author Georg Ehrke + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +namespace OCA\Deck\DAV; + +use OCA\DAV\CalDAV\Integration\ExternalCalendar; +use OCA\DAV\CalDAV\Plugin; +use OCA\Deck\Db\Acl; +use OCA\Deck\Db\Board; +use Sabre\CalDAV\CalendarQueryValidator; +use Sabre\CalDAV\Xml\Property\SupportedCalendarComponentSet; +use Sabre\DAV\Exception\Forbidden; +use Sabre\DAV\Exception\NotFound; +use Sabre\DAV\PropPatch; +use Sabre\VObject\InvalidDataException; +use Sabre\VObject\Reader; + +class Calendar extends ExternalCalendar { + + /** @var string */ + private $principalUri; + /** @var string[] */ + private $children; + /** @var DeckCalendarBackend */ + private $backend; + /** @var Board */ + private $board; + + public function __construct(string $principalUri, string $calendarUri, Board $board, DeckCalendarBackend $backend) { + parent::__construct('deck', $calendarUri); + + $this->backend = $backend; + $this->board = $board; + + $this->principalUri = $principalUri; + + if ($board) { + $this->children = $this->backend->getChildren($board->getId()); + } else { + $this->children = []; + } + } + + public function getOwner() { + return $this->principalUri; + } + + public function getACL() { + $acl = [ + [ + 'privilege' => '{DAV:}read', + 'principal' => $this->getOwner(), + 'protected' => true, + ] + ]; + if ($this->backend->checkBoardPermission($this->board->getId(), Acl::PERMISSION_MANAGE)) { + $acl[] = [ + 'privilege' => '{DAV:}write-properties', + 'principal' => $this->getOwner(), + 'protected' => true, + ]; + } + return $acl; + } + + public function setACL(array $acl) { + throw new Forbidden('Setting ACL is not supported on this node'); + } + + public function getSupportedPrivilegeSet() { + return null; + } + + public function calendarQuery(array $filters) { + $result = []; + $objects = $this->getChildren(); + + foreach ($objects as $object) { + if ($this->validateFilterForObject($object, $filters)) { + $result[] = $object->getName(); + } + } + + return $result; + } + + protected function validateFilterForObject($object, array $filters) { + $vObject = Reader::read($object->get()); + + $validator = new CalendarQueryValidator(); + $result = $validator->validate($vObject, $filters); + + // Destroy circular references so PHP will GC the object. + $vObject->destroy(); + + return $result; + } + + public function createFile($name, $data = null) { + throw new Forbidden('Creating a new entry is not implemented'); + } + + public function getChild($name) { + if ($this->childExists($name)) { + $card = array_values(array_filter( + $this->children, + function ($card) use (&$name) { + return $card->getCalendarPrefix() . '-' . $card->getId() . '.ics' === $name; + } + )); + if (count($card) > 0) { + return new CalendarObject($this, $name, $this->backend, $card[0]); + } + } + throw new NotFound('Node not found'); + } + + public function getChildren() { + $childNames = array_map(function ($card) { + return $card->getCalendarPrefix() . '-' . $card->getId() . '.ics'; + }, $this->children); + + $children = []; + + foreach ($childNames as $name) { + $children[] = $this->getChild($name); + } + + return $children; + } + + public function childExists($name) { + return count(array_filter( + $this->children, + function ($card) use (&$name) { + return $card->getCalendarPrefix() . '-' . $card->getId() . '.ics' === $name; + } + )) > 0; + } + + + public function delete() { + throw new Forbidden('Deleting an entry is not implemented'); + } + + public function getLastModified() { + return $this->board->getLastModified(); + } + + public function getGroup() { + return []; + } + + public function propPatch(PropPatch $propPatch) { + $properties = [ + '{DAV:}displayname', + '{http://apple.com/ns/ical/}calendar-color' + ]; + $propPatch->handle($properties, function ($properties) { + foreach ($properties as $key => $value) { + switch ($key) { + case '{DAV:}displayname': + if (mb_strpos($value, 'Deck: ') === 0) { + $value = mb_substr($value, strlen('Deck: ')); + } + $this->board->setTitle($value); + break; + case '{http://apple.com/ns/ical/}calendar-color': + $color = substr($value, 1, 6); + if (!preg_match('/[a-f0-9]{6}/i', $color)) { + throw new InvalidDataException('No valid color provided'); + } + $this->board->setColor($color); + break; + } + } + return $this->backend->updateBoard($this->board); + }); + // We can just return here and let oc_properties handle everything + } + + /** + * @inheritDoc + */ + public function getProperties($properties) { + return [ + '{DAV:}displayname' => 'Deck: ' . ($this->board ? $this->board->getTitle() : 'no board object provided'), + '{http://apple.com/ns/ical/}calendar-color' => '#' . $this->board->getColor(), + '{' . Plugin::NS_CALDAV . '}supported-calendar-component-set' => new SupportedCalendarComponentSet(['VTODO']), + ]; + } +} diff --git a/lib/DAV/CalendarObject.php b/lib/DAV/CalendarObject.php new file mode 100644 index 000000000..53b55731e --- /dev/null +++ b/lib/DAV/CalendarObject.php @@ -0,0 +1,110 @@ + + * + * @author Georg Ehrke + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +namespace OCA\Deck\DAV; + +use OCA\Deck\Db\Card; +use OCA\Deck\Db\Stack; +use Sabre\CalDAV\ICalendarObject; +use Sabre\DAV\Exception\Forbidden; +use Sabre\DAVACL\IACL; +use Sabre\VObject\Component\VCalendar; + +class CalendarObject implements ICalendarObject, IACL { + + /** @var Calendar */ + private $calendar; + /** @var string */ + private $name; + /** @var Card|Stack */ + private $sourceItem; + /** @var DeckCalendarBackend */ + private $backend; + /** @var VCalendar */ + private $calendarObject; + + public function __construct(Calendar $calendar, string $name, DeckCalendarBackend $backend, $sourceItem) { + $this->calendar = $calendar; + $this->name = $name; + $this->sourceItem = $sourceItem; + $this->backend = $backend; + $this->calendarObject = $this->sourceItem->getCalendarObject(); + } + + public function getOwner() { + return null; + } + + public function getGroup() { + return null; + } + + public function getACL() { + return $this->calendar->getACL(); + } + + public function setACL(array $acl) { + throw new Forbidden('Setting ACL is not supported on this node'); + } + + public function getSupportedPrivilegeSet() { + return null; + } + + public function put($data) { + throw new Forbidden('This calendar-object is read-only'); + } + + public function get() { + if ($this->sourceItem) { + return $this->calendarObject->serialize(); + } + } + + public function getContentType() { + return 'text/calendar; charset=utf-8'; + } + + public function getETag() { + return '"' . md5($this->sourceItem->getLastModified()) . '"'; + } + + public function getSize() { + return mb_strlen($this->calendarObject->serialize()); + } + + public function delete() { + throw new Forbidden('This calendar-object is read-only'); + } + + public function getName() { + return $this->name; + } + + public function setName($name) { + throw new Forbidden('This calendar-object is read-only'); + } + + public function getLastModified() { + return $this->sourceItem->getLastModified(); + } +} diff --git a/lib/DAV/CalendarPlugin.php b/lib/DAV/CalendarPlugin.php new file mode 100644 index 000000000..76da1929a --- /dev/null +++ b/lib/DAV/CalendarPlugin.php @@ -0,0 +1,84 @@ + + * + * @author Georg Ehrke + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Deck\DAV; + +use OCA\DAV\CalDAV\Integration\ExternalCalendar; +use OCA\DAV\CalDAV\Integration\ICalendarProvider; +use OCA\Deck\Db\Board; +use OCA\Deck\Service\ConfigService; +use Sabre\DAV\Exception\NotFound; + +class CalendarPlugin implements ICalendarProvider { + + /** @var DeckCalendarBackend */ + private $backend; + /** @var bool */ + private $calendarIntegrationEnabled; + + public function __construct(DeckCalendarBackend $backend, ConfigService $configService) { + $this->backend = $backend; + $this->calendarIntegrationEnabled = $configService->get('calendar'); + } + + public function getAppId(): string { + return 'deck'; + } + + public function fetchAllForCalendarHome(string $principalUri): array { + if (!$this->calendarIntegrationEnabled) { + return []; + } + + return array_map(function (Board $board) use ($principalUri) { + return new Calendar($principalUri, 'board-' . $board->getId(), $board, $this->backend); + }, $this->backend->getBoards()); + } + + public function hasCalendarInCalendarHome(string $principalUri, string $calendarUri): bool { + if (!$this->calendarIntegrationEnabled) { + return false; + } + + $boards = array_map(static function (Board $board) { + return 'board-' . $board->getId(); + }, $this->backend->getBoards()); + return in_array($calendarUri, $boards, true); + } + + public function getCalendarInCalendarHome(string $principalUri, string $calendarUri): ?ExternalCalendar { + if (!$this->calendarIntegrationEnabled) { + return null; + } + + if ($this->hasCalendarInCalendarHome($principalUri, $calendarUri)) { + try { + $board = $this->backend->getBoard((int)str_replace('board-', '', $calendarUri)); + return new Calendar($principalUri, $calendarUri, $board, $this->backend); + } catch (NotFound $e) { + // We can just return null if we have no matching board + } + } + return null; + } +} diff --git a/lib/DAV/DeckCalendarBackend.php b/lib/DAV/DeckCalendarBackend.php new file mode 100644 index 000000000..6d3ca0239 --- /dev/null +++ b/lib/DAV/DeckCalendarBackend.php @@ -0,0 +1,89 @@ + + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +declare(strict_types=1); + + +namespace OCA\Deck\DAV; + +use OCA\Deck\Db\Board; +use OCA\Deck\Db\BoardMapper; +use OCA\Deck\Service\BoardService; +use OCA\Deck\Service\CardService; +use OCA\Deck\Service\PermissionService; +use OCA\Deck\Service\StackService; +use Sabre\DAV\Exception\NotFound; + +class DeckCalendarBackend { + + /** @var BoardService */ + private $boardService; + /** @var StackService */ + private $stackService; + /** @var CardService */ + private $cardService; + /** @var PermissionService */ + private $permissionService; + /** @var BoardMapper */ + private $boardMapper; + + public function __construct( + BoardService $boardService, StackService $stackService, CardService $cardService, PermissionService $permissionService, + BoardMapper $boardMapper + ) { + $this->boardService = $boardService; + $this->stackService = $stackService; + $this->cardService = $cardService; + $this->permissionService = $permissionService; + $this->boardMapper = $boardMapper; + } + + public function getBoards(): array { + return $this->boardService->findAll(); + } + + public function getBoard(int $id): Board { + try { + return $this->boardService->find($id); + } catch (\Exception $e) { + throw new NotFound('Board with id ' . $id . ' not found'); + } + } + + public function checkBoardPermission(int $id, int $permission): bool { + $permissions = $this->permissionService->getPermissions($id); + return isset($permissions[$permission]) ? $permissions[$permission] : false; + } + + public function updateBoard(Board $board): bool { + $this->boardMapper->update($board); + return true; + } + + public function getChildren(int $id): array { + return array_merge( + $this->cardService->findCalendarEntries($id), + $this->stackService->findCalendarEntries($id) + ); + } +} diff --git a/lib/Db/Card.php b/lib/Db/Card.php index 36faa3dd6..4e24719ba 100644 --- a/lib/Db/Card.php +++ b/lib/Db/Card.php @@ -24,6 +24,8 @@ namespace OCA\Deck\Db; use DateTime; +use DateTimeZone; +use Sabre\VObject\Component\VCalendar; class Card extends RelationalEntity { protected $title; @@ -117,4 +119,40 @@ class Card extends RelationalEntity { unset($json['descriptionPrev']); return $json; } + + public function getCalendarObject(): VCalendar { + $calendar = new VCalendar(); + $event = $calendar->createComponent('VTODO'); + $event->UID = 'deck-card-' . $this->getId(); + if ($this->getDuedate()) { + $creationDate = new DateTime(); + $creationDate->setTimestamp($this->createdAt); + $event->DTSTAMP = $creationDate; + $event->DUE = new DateTime($this->getDuedate(true), new DateTimeZone('UTC')); + } + $event->add('RELATED-TO', 'deck-stack-' . $this->getStackId()); + + // FIXME: For write support: CANCELLED / IN-PROCESS handling + $event->STATUS = $this->getArchived() ? "COMPLETED" : "NEEDS-ACTION"; + if ($this->getArchived()) { + $date = new DateTime(); + $date->setTimestamp($this->getLastModified()); + $event->COMPLETED = $date; + //$event->add('PERCENT-COMPLETE', 100); + } + if (count($this->getLabels()) > 0) { + $event->CATEGORIES = array_map(function ($label) { + return $label->getTitle(); + }, $this->getLabels()); + } + + $event->SUMMARY = $this->getTitle(); + $event->DESCRIPTION = $this->getDescription(); + $calendar->add($event); + return $calendar; + } + + public function getCalendarPrefix(): string { + return 'card'; + } } diff --git a/lib/Db/CardMapper.php b/lib/Db/CardMapper.php index bbbcdb560..1eff81145 100644 --- a/lib/Db/CardMapper.php +++ b/lib/Db/CardMapper.php @@ -23,12 +23,16 @@ namespace OCA\Deck\Db; +use Exception; use OCP\AppFramework\Db\Entity; + +use OCP\AppFramework\Db\QBMapper; +use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; use OCP\IUserManager; use OCP\Notification\IManager; -class CardMapper extends DeckMapper implements IPermissionMapper { +class CardMapper extends QBMapper implements IPermissionMapper { /** @var LabelMapper */ private $labelMapper; @@ -55,7 +59,7 @@ class CardMapper extends DeckMapper implements IPermissionMapper { $this->database4ByteSupport = $database4ByteSupport; } - public function insert(Entity $entity) { + public function insert(Entity $entity): Entity { $entity->setDatabaseType($this->databaseType); $entity->setCreatedAt(time()); $entity->setLastModified(time()); @@ -66,7 +70,7 @@ class CardMapper extends DeckMapper implements IPermissionMapper { return parent::insert($entity); } - public function update(Entity $entity, $updateModified = true) { + public function update(Entity $entity, $updateModified = true): Entity { if (!$this->database4ByteSupport) { $description = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $entity->getDescription()); $entity->setDescription($description); @@ -79,38 +83,40 @@ class CardMapper extends DeckMapper implements IPermissionMapper { // make sure we only reset the notification flag if the duedate changes if (in_array('duedate', $entity->getUpdatedFields(), true)) { - $existing = $this->find($entity->getId()); - if ($existing->getDuedate() !== $entity->getDuedate()) { - $entity->setNotified(false); + try { + /** @var Card $existing */ + $existing = $this->find($entity->getId()); + if ($existing && $entity->getDuedate() !== $existing->getDuedate()) { + $entity->setNotified(false); + } + // remove pending notifications + $notification = $this->notificationManager->createNotification(); + $notification + ->setApp('deck') + ->setObject('card', $entity->getId()); + $this->notificationManager->markProcessed($notification); + } catch (Exception $e) { } - // remove pending notifications - $notification = $this->notificationManager->createNotification(); - $notification - ->setApp('deck') - ->setObject('card', $entity->getId()); - $this->notificationManager->markProcessed($notification); } return parent::update($entity); } - public function markNotified(Card $card) { + public function markNotified(Card $card): Entity { $cardUpdate = new Card(); $cardUpdate->setId($card->getId()); $cardUpdate->setNotified(true); return parent::update($cardUpdate); } - /** - * @param $id - * @return RelationalEntity if not found - * @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException - * @throws \OCP\AppFramework\Db\DoesNotExistException - */ - public function find($id) { - $sql = 'SELECT * FROM `*PREFIX*deck_cards` ' . - 'WHERE `id` = ? ORDER BY `order`, `id`'; + public function find($id): Card { + $qb = $this->db->getQueryBuilder(); + $qb->select('*') + ->from('deck_cards') + ->where($qb->expr()->eq('id', $qb->createNamedParameter($id, IQueryBuilder::PARAM_INT))) + ->orderBy('order') + ->addOrderBy('id'); /** @var Card $card */ - $card = $this->findEntity($sql, [$id]); + $card = $this->findEntity($qb); $labels = $this->labelMapper->findAssignedLabelsForCard($card->id); $card->setLabels($labels); $this->mapOwner($card); @@ -118,57 +124,158 @@ class CardMapper extends DeckMapper implements IPermissionMapper { } public function findAll($stackId, $limit = null, $offset = null, $since = -1) { - $sql = 'SELECT * FROM `*PREFIX*deck_cards` - WHERE `stack_id` = ? AND NOT archived AND deleted_at = 0 AND last_modified > ? ORDER BY `order`, `id`'; - return $this->findEntities($sql, [$stackId, $since], $limit, $offset); + $qb = $this->db->getQueryBuilder(); + $qb->select('*') + ->from('deck_cards') + ->where($qb->expr()->eq('stack_id', $qb->createNamedParameter($stackId, IQueryBuilder::PARAM_INT))) + ->andWhere($qb->expr()->eq('archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) + ->andWhere($qb->expr()->eq('deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))) + ->andWhere($qb->expr()->gt('last_modified', $qb->createNamedParameter($since, IQueryBuilder::PARAM_INT))) + ->setMaxResults($limit) + ->setFirstResult($offset) + ->orderBy('order') + ->addOrderBy('id'); + return $this->findEntities($qb); + } + + public function queryCardsByBoard(int $boardId): IQueryBuilder { + $qb = $this->db->getQueryBuilder(); + $qb->select('c.*') + ->from('deck_cards', 'c') + ->innerJoin('c', 'deck_stacks', 's', 'c.stack_id = s.id') + ->where($qb->expr()->eq('s.board_id', $qb->createNamedParameter($boardId, IQueryBuilder::PARAM_INT))); + return $qb; + } + + public function queryCardsByBoards(array $boardIds): IQueryBuilder { + $qb = $this->db->getQueryBuilder(); + $qb->select('c.*') + ->from('deck_cards', 'c') + ->innerJoin('c', 'deck_stacks', 's', $qb->expr()->eq('s.id', 'c.stack_id')) + ->andWhere($qb->expr()->in('s.board_id', $qb->createNamedParameter($boardIds, IQueryBuilder::PARAM_INT_ARRAY))); + return $qb; } public function findDeleted($boardId, $limit = null, $offset = null) { - $sql = 'SELECT c.* FROM `*PREFIX*deck_cards` c - INNER JOIN `*PREFIX*deck_stacks` s ON s.id = c.stack_id - WHERE `s`.`board_id` = ? AND NOT c.archived AND NOT c.deleted_at = 0 ORDER BY `c`.`order`, `c`.`id`'; - return $this->findEntities($sql, [$boardId], $limit, $offset); + $qb = $this->queryCardsByBoard($boardId); + $qb->andWhere($qb->expr()->neq('c.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))) + ->setMaxResults($limit) + ->setFirstResult($offset) + ->orderBy('order') + ->addOrderBy('id'); + return $this->findEntities($qb); + } + + public function findCalendarEntries($boardId, $limit = null, $offset = null) { + $qb = $this->db->getQueryBuilder(); + $qb->select('c.*') + ->from('deck_cards', 'c') + ->join('c', 'deck_stacks', 's', 's.id = c.stack_id') + ->where($qb->expr()->eq('s.board_id', $qb->createNamedParameter($boardId))) + ->andWhere($qb->expr()->eq('c.deleted_at', $qb->createNamedParameter('0'))) + ->orderBy('c.duedate') + ->setMaxResults($limit) + ->setFirstResult($offset); + return $this->findEntities($qb); } public function findAllArchived($stackId, $limit = null, $offset = null) { - $sql = 'SELECT * FROM `*PREFIX*deck_cards` WHERE `stack_id`=? AND archived ORDER BY `last_modified`'; - return $this->findEntities($sql, [$stackId], $limit, $offset); + $qb = $this->db->getQueryBuilder(); + $qb->select('*') + ->from('deck_cards') + ->where($qb->expr()->eq('stack_id', $qb->createNamedParameter($stackId, IQueryBuilder::PARAM_INT))) + ->andWhere($qb->expr()->eq('archived', $qb->createNamedParameter(true, IQueryBuilder::PARAM_BOOL))) + ->andWhere($qb->expr()->eq('deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))) + ->setMaxResults($limit) + ->setFirstResult($offset) + ->orderBy('last_modified'); + return $this->findEntities($qb); } public function findAllByStack($stackId, $limit = null, $offset = null) { - $sql = 'SELECT id FROM `*PREFIX*deck_cards` - WHERE `stack_id` = ? ORDER BY `order`, `id`'; - return $this->findEntities($sql, [$stackId], $limit, $offset); + $qb = $this->db->getQueryBuilder(); + $qb->select('*') + ->from('deck_cards') + ->where($qb->expr()->eq('stack_id', $qb->createNamedParameter($stackId, IQueryBuilder::PARAM_INT))) + ->andWhere($qb->expr()->eq('archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) + ->setMaxResults($limit) + ->setFirstResult($offset) + ->orderBy('order') + ->addOrderBy('id'); + return $this->findEntities($qb); } public function findAllWithDue($boardId) { - $sql = 'SELECT c.* FROM `*PREFIX*deck_cards` c - INNER JOIN `*PREFIX*deck_stacks` s ON s.id = c.stack_id - INNER JOIN `*PREFIX*deck_boards` b ON b.id = s.board_id - WHERE `s`.`board_id` = ? AND duedate IS NOT NULL AND NOT c.archived AND c.deleted_at = 0 AND s.deleted_at = 0 AND NOT b.archived AND b.deleted_at = 0'; - return $this->findEntities($sql, [$boardId]); + $qb = $this->db->getQueryBuilder(); + $qb->select('c.*') + ->from('deck_cards', 'c') + ->innerJoin('c', 'deck_stacks', 's', 's.id = c.stack_id') + ->innerJoin('s', 'deck_boards', 'b', 'b.id = s.board_id') + ->where($qb->expr()->eq('s.board_id', $qb->createNamedParameter($boardId, IQueryBuilder::PARAM_INT))) + ->andWhere($qb->expr()->isNotNull('c.duedate')) + ->andWhere($qb->expr()->eq('c.archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) + ->andWhere($qb->expr()->eq('c.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))) + ->andWhere($qb->expr()->eq('b.archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) + ->andWhere($qb->expr()->eq('b.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))); + return $this->findEntities($qb); } public function findAssignedCards($boardId, $username) { - $sql = 'SELECT c.* FROM `*PREFIX*deck_cards` c - INNER JOIN `*PREFIX*deck_stacks` s ON s.id = c.stack_id - INNER JOIN `*PREFIX*deck_boards` b ON b.id = s.board_id - INNER JOIN `*PREFIX*deck_assigned_users` u ON c.id = card_id - WHERE `s`.`board_id` = ? AND participant = ? AND NOT c.archived AND c.deleted_at = 0 AND s.deleted_at = 0 AND NOT b.archived AND b.deleted_at = 0'; - return $this->findEntities($sql, [$boardId, $username]); + $qb = $this->db->getQueryBuilder(); + $qb->select('c.*') + ->from('deck_cards', 'c') + ->innerJoin('c', 'deck_stacks', 's', 's.id = c.stack_id') + ->innerJoin('s', 'deck_boards', 'b', 'b.id = s.board_id') + ->innerJoin('c', 'deck_assigned_users', 'u', 'c.id = u.card_id') + ->where($qb->expr()->eq('s.board_id', $qb->createNamedParameter($boardId, IQueryBuilder::PARAM_INT))) + ->andWhere($qb->expr()->eq('u.participant', $qb->createNamedParameter($username, IQueryBuilder::PARAM_STR))) + ->andWhere($qb->expr()->eq('u.type', $qb->createNamedParameter(Acl::PERMISSION_TYPE_USER, IQueryBuilder::PARAM_INT))) + // Filter out archived/deleted cards and board + ->andWhere($qb->expr()->eq('c.archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) + ->andWhere($qb->expr()->eq('c.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))) + ->andWhere($qb->expr()->eq('b.archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) + ->andWhere($qb->expr()->eq('b.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))); + return $this->findEntities($qb); } public function findOverdue() { - $sql = 'SELECT id,title,duedate,notified from `*PREFIX*deck_cards` WHERE duedate < NOW() AND NOT archived AND deleted_at = 0'; - return $this->findEntities($sql); + $qb = $this->db->getQueryBuilder(); + $qb->select('id','title','duedate','notified') + ->from('deck_cards') + ->where($qb->expr()->lt('duedate', $qb->createFunction('NOW()'))) + ->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); } public function findUnexposedDescriptionChances() { - $sql = 'SELECT id,title,duedate,notified,description_prev,last_editor,description from `*PREFIX*deck_cards` WHERE last_editor IS NOT NULL AND description_prev IS NOT NULL'; - return $this->findEntities($sql); + $qb = $this->db->getQueryBuilder(); + $qb->select('id','title','duedate','notified','description_prev','last_editor','description') + ->from('deck_cards') + ->where($qb->expr()->isNotNull('last_editor')) + ->andWhere($qb->expr()->isNotNull('description_prev')); + return $this->findEntities($qb); } - public function delete(Entity $entity) { + public function search($boardIds, $term, $limit = null, $offset = null) { + $qb = $this->queryCardsByBoards($boardIds); + $qb->andWhere($qb->expr()->eq('c.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))); + $qb->andWhere( + $qb->expr()->orX( + $qb->expr()->iLike('c.title', $qb->createNamedParameter('%' . $this->db->escapeLikeParameter($term) . '%')), + $qb->expr()->iLike('c.description', $qb->createNamedParameter('%' . $this->db->escapeLikeParameter($term) . '%')) + ) + ); + if ($limit !== null) { + $qb->setMaxResults($limit); + } + if ($offset !== null) { + $qb->setFirstResult($offset); + } + return $this->findEntities($qb); + } + + public function delete(Entity $entity): Entity { // delete assigned labels $this->labelMapper->deleteLabelAssignmentsForCard($entity->getId()); // delete card @@ -183,31 +290,37 @@ class CardMapper extends DeckMapper implements IPermissionMapper { } public function assignLabel($card, $label) { - $sql = 'INSERT INTO `*PREFIX*deck_assigned_labels` (`label_id`,`card_id`) VALUES (?,?)'; - $stmt = $this->db->prepare($sql); - $stmt->bindParam(1, $label, \PDO::PARAM_INT); - $stmt->bindParam(2, $card, \PDO::PARAM_INT); - $stmt->execute(); + $qb = $this->db->getQueryBuilder(); + $qb->insert('deck_assigned_labels') + ->values([ + 'label_id' => $qb->createNamedParameter($label, IQueryBuilder::PARAM_INT), + 'card_id' => $qb->createNamedParameter($card, IQueryBuilder::PARAM_INT), + ]); + $qb->execute(); } public function removeLabel($card, $label) { - $sql = 'DELETE FROM `*PREFIX*deck_assigned_labels` WHERE card_id = ? AND label_id = ?'; - $stmt = $this->db->prepare($sql); - $stmt->bindParam(1, $card, \PDO::PARAM_INT); - $stmt->bindParam(2, $label, \PDO::PARAM_INT); - $stmt->execute(); + $qb = $this->db->getQueryBuilder(); + $qb->delete('deck_assigned_labels') + ->where($qb->expr()->eq('card_id', $qb->createNamedParameter($card, IQueryBuilder::PARAM_INT))) + ->andWhere($qb->expr()->eq('label_id', $qb->createNamedParameter($label, IQueryBuilder::PARAM_INT))); + $qb->execute(); } public function isOwner($userId, $cardId) { $sql = 'SELECT owner FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_stacks` WHERE id IN (SELECT stack_id FROM `*PREFIX*deck_cards` WHERE id = ?))'; - $stmt = $this->execute($sql, [$cardId]); + $stmt = $this->db->prepare($sql); + $stmt->bindParam(1, $cardId, \PDO::PARAM_INT); + $stmt->execute(); $row = $stmt->fetch(); return ($row['owner'] === $userId); } public function findBoardId($cardId) { $sql = 'SELECT id FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_stacks` WHERE id IN (SELECT stack_id FROM `*PREFIX*deck_cards` WHERE id = ?))'; - $stmt = $this->execute($sql, [$cardId]); + $stmt = $this->db->prepare($sql); + $stmt->bindParam(1, $cardId, \PDO::PARAM_INT); + $stmt->execute(); $row = $stmt->fetch(); return $row['id']; } diff --git a/lib/Db/DeckMapper.php b/lib/Db/DeckMapper.php index e3a9b4a05..2dd0dd990 100644 --- a/lib/Db/DeckMapper.php +++ b/lib/Db/DeckMapper.php @@ -29,10 +29,11 @@ use OCP\AppFramework\Db\Mapper; * Class DeckMapper * * @package OCA\Deck\Db + * @deprecated use QBMapper * * TODO: Move to QBMapper once Nextcloud 14 is a minimum requirement */ -abstract class DeckMapper extends Mapper { +class DeckMapper extends Mapper { /** * @param $id diff --git a/lib/Db/Stack.php b/lib/Db/Stack.php index 85d9c4553..9790e6b7c 100644 --- a/lib/Db/Stack.php +++ b/lib/Db/Stack.php @@ -23,6 +23,8 @@ namespace OCA\Deck\Db; +use Sabre\VObject\Component\VCalendar; + class Stack extends RelationalEntity { protected $title; protected $boardId; @@ -50,4 +52,17 @@ class Stack extends RelationalEntity { } return $json; } + + public function getCalendarObject(): VCalendar { + $calendar = new VCalendar(); + $event = $calendar->createComponent('VTODO'); + $event->UID = 'deck-stack-' . $this->getId(); + $event->SUMMARY = 'List : ' . $this->getTitle(); + $calendar->add($event); + return $calendar; + } + + public function getCalendarPrefix(): string { + return 'stack'; + } } diff --git a/lib/Db/StackMapper.php b/lib/Db/StackMapper.php index 40d01929b..58b343929 100644 --- a/lib/Db/StackMapper.php +++ b/lib/Db/StackMapper.php @@ -41,7 +41,7 @@ class StackMapper extends DeckMapper implements IPermissionMapper { * @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException * @throws \OCP\AppFramework\Db\DoesNotExistException */ - public function find($id) { + public function find($id): Stack { $sql = 'SELECT * FROM `*PREFIX*deck_stacks` ' . 'WHERE `id` = ?'; return $this->findEntity($sql, [$id]); diff --git a/lib/Middleware/ExceptionMiddleware.php b/lib/Middleware/ExceptionMiddleware.php index c02eab8c1..0d4cd7feb 100644 --- a/lib/Middleware/ExceptionMiddleware.php +++ b/lib/Middleware/ExceptionMiddleware.php @@ -23,6 +23,7 @@ namespace OCA\Deck\Middleware; +use OCA\Deck\Controller\PageController; use OCA\Deck\StatusException; use OCA\Deck\Exceptions\ConflictException; use OCP\AppFramework\Db\DoesNotExistException; @@ -62,6 +63,10 @@ class ExceptionMiddleware extends Middleware { * @throws \Exception */ public function afterException($controller, $methodName, \Exception $exception) { + if (get_class($controller) === PageController::class) { + throw $exception; + } + if ($exception instanceof ConflictException) { if ($this->config->getSystemValue('loglevel', Util::WARN) === Util::DEBUG) { $this->logger->logException($exception); diff --git a/lib/Search/BoardSearchResultEntry.php b/lib/Search/BoardSearchResultEntry.php new file mode 100644 index 000000000..c68fccb86 --- /dev/null +++ b/lib/Search/BoardSearchResultEntry.php @@ -0,0 +1,41 @@ + + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +declare(strict_types=1); + + +namespace OCA\Deck\Search; + +use OCA\Deck\Db\Board; +use OCP\Search\SearchResultEntry; + +class BoardSearchResultEntry extends SearchResultEntry { + public function __construct(Board $board, $urlGenerator) { + parent::__construct( + '', + $board->getTitle(), + '', + $urlGenerator->linkToRouteAbsolute('deck.page.index') . '#/board/' . $board->getId(), + 'icon-deck'); + } +} diff --git a/lib/Search/CardSearchResultEntry.php b/lib/Search/CardSearchResultEntry.php new file mode 100644 index 000000000..4bf2f9b51 --- /dev/null +++ b/lib/Search/CardSearchResultEntry.php @@ -0,0 +1,38 @@ + + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +declare(strict_types=1); + + +namespace OCA\Deck\Search; + +use OCA\Deck\Db\Board; +use OCA\Deck\Db\Card; +use OCA\Deck\Db\Stack; +use OCP\Search\SearchResultEntry; + +class CardSearchResultEntry extends SearchResultEntry { + public function __construct(Board $board, Stack $stack, Card $card, $urlGenerator) { + parent::__construct('', $card->getTitle(), $board->getTitle() . ' » ' . $stack->getTitle() , $urlGenerator->linkToRouteAbsolute('deck.page.index') . '#/board/' . $board->getId() . '/card/' . $card->getId(), 'icon-deck'); + } +} diff --git a/lib/Search/DeckProvider.php b/lib/Search/DeckProvider.php new file mode 100644 index 000000000..fa961557c --- /dev/null +++ b/lib/Search/DeckProvider.php @@ -0,0 +1,115 @@ + + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +declare(strict_types=1); + + +namespace OCA\Deck\Search; + +use OCA\Deck\Db\Board; +use OCA\Deck\Db\Card; +use OCA\Deck\Db\CardMapper; +use OCA\Deck\Db\StackMapper; +use OCA\Deck\Service\BoardService; +use OCP\IURLGenerator; +use OCP\IUser; +use OCP\Search\IProvider; +use OCP\Search\ISearchQuery; +use OCP\Search\SearchResult; + +class DeckProvider implements IProvider { + + /** + * @var BoardService + */ + private $boardService; + /** + * @var CardMapper + */ + private $cardMapper; + /** + * @var StackMapper + */ + private $stackMapper; + /** + * @var IURLGenerator + */ + private $urlGenerator; + + public function __construct( + BoardService $boardService, + StackMapper $stackMapper, + CardMapper $cardMapper, + IURLGenerator $urlGenerator + ) { + $this->boardService = $boardService; + $this->stackMapper = $stackMapper; + $this->cardMapper = $cardMapper; + $this->urlGenerator = $urlGenerator; + } + + public function getId(): string { + return 'deck'; + } + + public function getName(): string { + return 'Deck'; + } + + public function search(IUser $user, ISearchQuery $query): SearchResult { + $boards = $this->boardService->getUserBoards(); + + $matchedBoards = array_filter($this->boardService->getUserBoards(), static function (Board $board) use ($query) { + return mb_stripos($board->getTitle(), $query->getTerm()) > -1; + }); + + $matchedCards = $this->cardMapper->search(array_map(static function (Board $board) { + return $board->getId(); + }, $boards), $query->getTerm(), $query->getLimit(), $query->getCursor()); + + $self = $this; + $results = array_merge( + array_map(function (Board $board) { + return new BoardSearchResultEntry($board, $this->urlGenerator); + }, $matchedBoards), + + array_map(function (Card $card) use ($self) { + $board = $self->boardService->find($self->cardMapper->findBoardId($card->getId())); + $stack = $self->stackMapper->find($card->getStackId()); + return new CardSearchResultEntry($board, $stack, $card, $this->urlGenerator); + }, $matchedCards) + ); + + return SearchResult::complete( + 'Deck', + $results + ); + } + + public function getOrder(string $route, array $routeParameters): int { + if ($route === 'deck.page.index') { + return -5; + } + return 10; + } +} diff --git a/lib/Service/BoardService.php b/lib/Service/BoardService.php index 26472150a..91c0999bf 100644 --- a/lib/Service/BoardService.php +++ b/lib/Service/BoardService.php @@ -64,6 +64,8 @@ class BoardService { private $eventDispatcher; private $changeHelper; + private $boardsCache = null; + public function __construct( BoardMapper $boardMapper, StackMapper $stackMapper, @@ -105,42 +107,55 @@ class BoardService { $this->userId = $userId; } - /** - * @return array - */ - public function findAll($since = -1, $details = null) { + public function getUserBoards(int $since = -1): array { $userInfo = $this->getBoardPrerequisites(); $userBoards = $this->boardMapper->findAllByUser($userInfo['user'], null, null, $since); $groupBoards = $this->boardMapper->findAllByGroups($userInfo['user'], $userInfo['groups'],null, null, $since); $circleBoards = $this->boardMapper->findAllByCircles($userInfo['user'], null, null, $since); - $complete = array_merge($userBoards, $groupBoards, $circleBoards); + $mergedBoards = array_merge($userBoards, $groupBoards, $circleBoards); $result = []; /** @var Board $item */ - foreach ($complete as &$item) { + foreach ($mergedBoards as &$item) { if (!array_key_exists($item->getId(), $result)) { - $this->boardMapper->mapOwner($item); - if ($item->getAcl() !== null) { - foreach ($item->getAcl() as &$acl) { - $this->boardMapper->mapAcl($acl); - } - } - if ($details !== null) { - $this->enrichWithStacks($item); - $this->enrichWithLabels($item); - $this->enrichWithUsers($item); - } - $permissions = $this->permissionService->matchPermissions($item); - $item->setPermissions([ - 'PERMISSION_READ' => $permissions[Acl::PERMISSION_READ] ?? false, - 'PERMISSION_EDIT' => $permissions[Acl::PERMISSION_EDIT] ?? false, - 'PERMISSION_MANAGE' => $permissions[Acl::PERMISSION_MANAGE] ?? false, - 'PERMISSION_SHARE' => $permissions[Acl::PERMISSION_SHARE] ?? false - ]); $result[$item->getId()] = $item; } } return array_values($result); } + /** + * @return array + */ + public function findAll($since = -1, $details = null) { + if ($this->boardsCache) { + return $this->boardsCache; + } + $complete = $this->getUserBoards($since); + $result = []; + /** @var Board $item */ + foreach ($complete as &$item) { + $this->boardMapper->mapOwner($item); + if ($item->getAcl() !== null) { + foreach ($item->getAcl() as &$acl) { + $this->boardMapper->mapAcl($acl); + } + } + if ($details !== null) { + $this->enrichWithStacks($item); + $this->enrichWithLabels($item); + $this->enrichWithUsers($item); + } + $permissions = $this->permissionService->matchPermissions($item); + $item->setPermissions([ + 'PERMISSION_READ' => $permissions[Acl::PERMISSION_READ] ?? false, + 'PERMISSION_EDIT' => $permissions[Acl::PERMISSION_EDIT] ?? false, + 'PERMISSION_MANAGE' => $permissions[Acl::PERMISSION_MANAGE] ?? false, + 'PERMISSION_SHARE' => $permissions[Acl::PERMISSION_SHARE] ?? false + ]); + $result[$item->getId()] = $item; + } + $this->boardsCache = $result; + return array_values($result); + } /** * @param $boardId @@ -151,6 +166,9 @@ class BoardService { * @throws BadRequestException */ public function find($boardId) { + if ($this->boardsCache && isset($this->boardsCache[$boardId])) { + return $this->boardsCache[$boardId]; + } if (is_numeric($boardId) === false) { throw new BadRequestException('board id must be a number'); } @@ -172,6 +190,7 @@ class BoardService { 'PERMISSION_SHARE' => $permissions[Acl::PERMISSION_SHARE] ?? false ]); $this->enrichWithUsers($board); + $this->boardsCache[$board->getId()] = $board; return $board; } @@ -331,7 +350,7 @@ class BoardService { throw new BadRequestException('board id must be a number'); } - $this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_READ); + $this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_MANAGE); $board = $this->find($id); if ($board->getDeletedAt() > 0) { throw new BadRequestException('This board has already been deleted'); @@ -360,7 +379,7 @@ class BoardService { throw new BadRequestException('board id must be a number'); } - $this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_READ); + $this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_MANAGE); $board = $this->find($id); $board->setDeletedAt(0); $board = $this->boardMapper->update($board); @@ -387,7 +406,7 @@ class BoardService { throw new BadRequestException('id must be a number'); } - $this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_READ); + $this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_MANAGE); $board = $this->find($id); $delete = $this->boardMapper->delete($board); diff --git a/lib/Service/CardService.php b/lib/Service/CardService.php index 9d4867705..bd9c11e0c 100644 --- a/lib/Service/CardService.php +++ b/lib/Service/CardService.php @@ -116,6 +116,11 @@ class CardService { return $cards; } + public function search($boardIds, $term) { + $cards = $this->cardMapper->search($boardIds, $term); + return $cards; + } + /** * @param $cardId * @return \OCA\Deck\Db\RelationalEntity @@ -139,6 +144,15 @@ class CardService { return $card; } + public function findCalendarEntries($boardId) { + $this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ); + $cards = $this->cardMapper->findCalendarEntries($boardId); + foreach ($cards as $card) { + $this->enrich($card); + } + return $cards; + } + /** * @param $title * @param $stackId diff --git a/lib/Service/ConfigService.php b/lib/Service/ConfigService.php new file mode 100644 index 000000000..baf1e4b8f --- /dev/null +++ b/lib/Service/ConfigService.php @@ -0,0 +1,129 @@ + + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +declare(strict_types=1); + + +namespace OCA\Deck\Service; + +use OCA\Deck\AppInfo\Application; +use OCA\Deck\NoPermissionException; +use OCP\IConfig; +use OCP\IGroup; +use OCP\IGroupManager; + +class ConfigService { + private $config; + private $userId; + private $groupManager; + + public function __construct( + IConfig $config, + IGroupManager $groupManager, + $userId + ) { + $this->userId = $userId; + $this->groupManager = $groupManager; + $this->config = $config; + } + + public function getAll(): array { + $data = [ + 'calendar' => $this->get('calendar') + ]; + if ($this->groupManager->isAdmin($this->userId)) { + $data = [ + 'groupLimit' => $this->get('groupLimit'), + ]; + } + return $data; + } + + public function get($key) { + $result = null; + switch ($key) { + case 'groupLimit': + if (!$this->groupManager->isAdmin($this->userId)) { + throw new NoPermissionException('You must be admin to get the group limit'); + } + $result = $this->getGroupLimit(); + break; + case 'calendar': + $result = (bool)$this->config->getUserValue($this->userId, Application::APP_ID, 'calendar', true); + break; + } + return $result; + } + + public function set($key, $value) { + $result = null; + switch ($key) { + case 'groupLimit': + if (!$this->groupManager->isAdmin($this->userId)) { + throw new NoPermissionException('You must be admin to set the group limit'); + } + $result = $this->setGroupLimit($value); + break; + case 'calendar': + $this->config->setUserValue($this->userId, Application::APP_ID, 'calendar', (int)$value); + $result = $value; + break; + } + return $result; + } + + private function setGroupLimit($value) { + $groups = []; + foreach ($value as $group) { + $groups[] = $group['id']; + } + $data = implode(',', $groups); + $this->config->setAppValue(Application::APP_ID, 'groupLimit', $data); + return $groups; + } + + private function getGroupLimitList() { + $value = $this->config->getAppValue(Application::APP_ID, 'groupLimit', ''); + $groups = explode(',', $value); + if ($value === '') { + return []; + } + return $groups; + } + + private function getGroupLimit() { + $groups = $this->getGroupLimitList(); + $groups = array_map(function ($groupId) { + /** @var IGroup $groups */ + $group = $this->groupManager->get($groupId); + if ($group === null) { + return null; + } + return [ + 'id' => $group->getGID(), + 'displayname' => $group->getDisplayName(), + ]; + }, $groups); + return array_filter($groups); + } +} diff --git a/lib/Service/StackService.php b/lib/Service/StackService.php index e65e610d4..c0f630f57 100644 --- a/lib/Service/StackService.php +++ b/lib/Service/StackService.php @@ -162,6 +162,11 @@ class StackService { return $stacks; } + public function findCalendarEntries($boardId) { + $this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_READ); + return $this->stackMapper->findAll($boardId); + } + public function fetchDeleted($boardId) { $this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ); $stacks = $this->stackMapper->findDeleted($boardId); diff --git a/package-lock.json b/package-lock.json index bf58f5a0f..c7ed673d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@babel/cli": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.10.5.tgz", - "integrity": "sha512-j9H9qSf3kLdM0Ao3aGPbGZ73mEA9XazuupcS6cDGWuiyAcANoguhP0r2Lx32H5JGw4sSSoHG3x/mxVnHgvOoyA==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.11.6.tgz", + "integrity": "sha512-+w7BZCvkewSmaRM6H4L2QM3RL90teqEIHDIFXAmrW33+0jhlymnDAEdqVeCZATvxhQuio1ifoGVlJJbIiH9Ffg==", "requires": { "chokidar": "^2.1.8", "commander": "^4.0.1", @@ -47,18 +47,18 @@ } }, "@babel/core": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.4.tgz", - "integrity": "sha512-5deljj5HlqRXN+5oJTY7Zs37iH3z3b++KjiKtIsJy1NrjOOVSEaJHEetLBhyu0aQOSNNZ/0IuEAan9GzRuDXHg==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", + "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.4", + "@babel/generator": "^7.11.6", "@babel/helper-module-transforms": "^7.11.0", "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.4", + "@babel/parser": "^7.11.5", "@babel/template": "^7.10.4", - "@babel/traverse": "^7.11.0", - "@babel/types": "^7.11.0", + "@babel/traverse": "^7.11.5", + "@babel/types": "^7.11.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", @@ -78,11 +78,11 @@ } }, "@babel/generator": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.4.tgz", - "integrity": "sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", + "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", "requires": { - "@babel/types": "^7.11.0", + "@babel/types": "^7.11.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" } @@ -129,9 +129,9 @@ } }, "@babel/parser": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.4.tgz", - "integrity": "sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA==" + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, "@babel/template": { "version": "7.10.4", @@ -144,25 +144,25 @@ } }, "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", + "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", + "@babel/generator": "^7.11.5", "@babel/helper-function-name": "^7.10.4", "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", + "@babel/parser": "^7.11.5", + "@babel/types": "^7.11.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -231,9 +231,9 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -257,9 +257,9 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -436,9 +436,9 @@ } }, "@babel/parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz", - "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw==" + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, "@babel/template": { "version": "7.10.4", @@ -451,9 +451,9 @@ } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -463,126 +463,27 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", - "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", + "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", "requires": { - "@babel/traverse": "^7.10.4", "@babel/types": "^7.10.4" }, "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/generator": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", - "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", - "requires": { - "@babel/types": "^7.11.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", - "requires": { - "@babel/types": "^7.11.0" - } - }, "@babel/helper-validator-identifier": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz", - "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw==" - }, - "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -646,9 +547,9 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -818,14 +719,13 @@ } }, "@babel/helper-remap-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", - "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", + "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-wrap-function": "^7.10.4", "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", "@babel/types": "^7.10.4" }, "dependencies": { @@ -837,42 +737,6 @@ "@babel/highlight": "^7.10.4" } }, - "@babel/generator": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", - "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", - "requires": { - "@babel/types": "^7.11.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", - "requires": { - "@babel/types": "^7.11.0" - } - }, "@babel/helper-validator-identifier": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", @@ -889,9 +753,9 @@ } }, "@babel/parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz", - "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw==" + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, "@babel/template": { "version": "7.10.4", @@ -903,44 +767,15 @@ "@babel/types": "^7.10.4" } }, - "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -1143,9 +978,9 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -1202,11 +1037,11 @@ } }, "@babel/generator": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", - "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", + "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", "requires": { - "@babel/types": "^7.11.0", + "@babel/types": "^7.11.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" } @@ -1253,9 +1088,9 @@ } }, "@babel/parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz", - "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw==" + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, "@babel/template": { "version": "7.10.4", @@ -1268,25 +1103,25 @@ } }, "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", + "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", + "@babel/generator": "^7.11.5", "@babel/helper-function-name": "^7.10.4", "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", + "@babel/parser": "^7.11.5", + "@babel/types": "^7.11.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -1327,11 +1162,11 @@ } }, "@babel/generator": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.4.tgz", - "integrity": "sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", + "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", "requires": { - "@babel/types": "^7.11.0", + "@babel/types": "^7.11.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" } @@ -1378,9 +1213,9 @@ } }, "@babel/parser": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.4.tgz", - "integrity": "sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA==" + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, "@babel/template": { "version": "7.10.4", @@ -1393,25 +1228,25 @@ } }, "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", + "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", + "@babel/generator": "^7.11.5", "@babel/helper-function-name": "^7.10.4", "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", + "@babel/parser": "^7.11.5", + "@babel/types": "^7.11.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -1960,9 +1795,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.5.tgz", - "integrity": "sha512-6Ycw3hjpQti0qssQcA6AMSFDHeNJ++R6dIMnpRqUjFeBBTmTDPa8zgF90OVfTvAo11mXZTlVUViY1g8ffrURLg==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", + "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -2044,9 +1879,9 @@ } }, "@babel/parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz", - "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw==" + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, "@babel/template": { "version": "7.10.4", @@ -2059,9 +1894,9 @@ } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -2218,9 +2053,9 @@ } }, "@babel/parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz", - "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw==" + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, "@babel/template": { "version": "7.10.4", @@ -2233,9 +2068,9 @@ } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -2410,9 +2245,9 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -2538,9 +2373,9 @@ } }, "@babel/plugin-transform-typescript": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.5.tgz", - "integrity": "sha512-YCyYsFrrRMZ3qR7wRwtSSJovPG5vGyG4ZdcSAivGwTfoasMp3VOB/AKhohu3dFtmB4cCDcsndCSxGtrdliCsZQ==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz", + "integrity": "sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w==", "requires": { "@babel/helper-create-class-features-plugin": "^7.10.5", "@babel/helper-plugin-utils": "^7.10.4", @@ -2586,18 +2421,18 @@ } }, "@babel/polyfill": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.10.4.tgz", - "integrity": "sha512-8BYcnVqQ5kMD2HXoHInBH7H1b/uP3KdnwCYXOqFnXqguOyuu443WXusbIUbWEfY3Z0Txk0M1uG/8YuAMhNl6zg==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.11.5.tgz", + "integrity": "sha512-FunXnE0Sgpd61pKSj2OSOs1D44rKTD3pGOfGilZ6LGrrIH0QEtJlTjqOqdF8Bs98JmjfGhni2BBkTfv9KcKJ9g==", "requires": { "core-js": "^2.6.5", "regenerator-runtime": "^0.13.4" } }, "@babel/preset-env": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz", - "integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.5.tgz", + "integrity": "sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA==", "requires": { "@babel/compat-data": "^7.11.0", "@babel/helper-compilation-targets": "^7.10.4", @@ -2661,7 +2496,7 @@ "@babel/plugin-transform-unicode-escapes": "^7.10.4", "@babel/plugin-transform-unicode-regex": "^7.10.4", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.11.0", + "@babel/types": "^7.11.5", "browserslist": "^4.12.0", "core-js-compat": "^3.6.2", "invariant": "^2.2.2", @@ -2704,9 +2539,9 @@ } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -2716,9 +2551,9 @@ } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -3536,12 +3371,12 @@ } }, "@juliushaertl/vue-richtext": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@juliushaertl/vue-richtext/-/vue-richtext-0.3.2.tgz", - "integrity": "sha512-+24A7eYzqDu01tn1JKaw7ydm+3dEB7+hXvwi+1TOje70m8FdaI/+uwdOd6oKQUBk7Uztvy1tDdO6fD+JYh7aEg==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@juliushaertl/vue-richtext/-/vue-richtext-0.3.3.tgz", + "integrity": "sha512-OmAtQfXY5ZkOq6CxE79RVAKTo60fS0HAX2x6MMfHUmTlZgtQQqSxlvIJUZEOo7EiJwD84OVMY0G9holV1iwgTA==", "requires": { "core-js": "^3.6.4", - "vue": "^2.6.11" + "vue": "^2.6.12" }, "dependencies": { "core-js": { @@ -3569,16 +3404,16 @@ } }, "@nextcloud/axios": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-1.3.3.tgz", - "integrity": "sha512-kCGN+0QqrCzTEDsCTpHY2Ze5PGncspC37OOMOYejmGxp+/a2FTg92yJoI5Xhk2y/xJciwVpX1NUWatxBfxAlWw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-7ePHUve3++aB0Ma+lc68B/wRn09FmrPFaFKpdUygIxak89lRvixqLc+98AdLtGPQegof+dKTIwwnuNTy0E95HA==", "requires": { "@babel/cli": "^7.8.4", "@babel/core": "^7.9.0", "@babel/preset-env": "^7.9.0", "@babel/preset-typescript": "^7.9.0", "@nextcloud/auth": "^1.2.2", - "axios": "^0.19.2", + "axios": "^0.20.0", "core-js": "^3.6.4" }, "dependencies": { @@ -3611,23 +3446,16 @@ } }, "@nextcloud/dialogs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-2.0.0.tgz", - "integrity": "sha512-iPZMKAYs09g+zJXzrkHo71RVXAhtSw4+YSA/2FhUeWBtlJBcFYsxUW6gmgnhGU+3UTptjyPrl4hvIqgLU8p6BA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-2.0.1.tgz", + "integrity": "sha512-Bme8vcs8n4XT5spBgkDEv1z9zNOE23AIbr5jF1WJ1A2XNMNj5Zvy29RosIh0k7H+1lN0PlU38u+eMV1Ets3E4A==", "requires": { "@nextcloud/l10n": "^1.3.0", "@nextcloud/typings": "^0.2.2", - "core-js": "^3.6.4" + "core-js": "^3.6.4", + "toastify-js": "^1.9.1" }, "dependencies": { - "@nextcloud/typings": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@nextcloud/typings/-/typings-0.2.2.tgz", - "integrity": "sha512-LZrv1VV3vyDaKw4UKMcGM9dvLMpdI2tfMexHf/ixVn6OrsRDsRTbxByWMMdRF2ArHD5Q8RsICa72p6BcG9b80Q==", - "requires": { - "@types/jquery": "2.0.54" - } - }, "core-js": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", @@ -3718,9 +3546,9 @@ } }, "@nextcloud/l10n": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-1.3.0.tgz", - "integrity": "sha512-hGk3ag9TU4cb0+ld/wziEsE+CWaS7Rpj6Y6dPv0QVfnqQ7jFCKQ62VHnuk8pFQHkmKMg3HGxkHuojumbukm42w==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-1.4.1.tgz", + "integrity": "sha512-19LPGmozfuLCeO4xRS9Y1Av6DquqVgBH2kQyWL6dJ49AynMGN9uVOrNv3GYoqULzEcHoetMAt+8PLTdE6zKbvA==", "requires": { "core-js": "^3.6.4", "node-gettext": "^3.0.0" @@ -3785,9 +3613,9 @@ } }, "@nextcloud/router": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-1.1.0.tgz", - "integrity": "sha512-iPHpMG9kajw8D+niR4x/d8s/R9RyUNveDsNURgcZryIjIXhAzSZZra55+Y3yInDmLhCFwboj9ZcC/2S6CzoKYA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-1.2.0.tgz", + "integrity": "sha512-kn9QsL9LuhkIMaSSgdiqRL3SZ6PatuAjXUiyq343BbSnI99Oc5eJH8kU6cT2AHije7wKy/tK8Xe3VQuVO32SZQ==", "requires": { "core-js": "^3.6.4" }, @@ -3808,14 +3636,14 @@ } }, "@nextcloud/vue": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-2.6.0.tgz", - "integrity": "sha512-SzPXwxtbbc4BIUl4BhC7+8kDzgXG+Adr9W7x+hQdr/TuOhunVwcXOKGhyZgWew17oOCsd2c2ltrojhUiCmWjjg==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-2.6.5.tgz", + "integrity": "sha512-ZeY4n/TJ0cRu/iDgLGCwFSksvStMO+fAeJfANwjp52LjrpFXuJjxqG8ZKBdr7zJewj/yTOq6k0wMDnyBFTgnXA==", "requires": { "@nextcloud/auth": "^1.2.3", "@nextcloud/axios": "^1.3.2", "@nextcloud/capabilities": "^1.0.2", - "@nextcloud/dialogs": "^1.4.0", + "@nextcloud/dialogs": "^2.0.1", "@nextcloud/event-bus": "^1.1.4", "@nextcloud/l10n": "^1.2.3", "@nextcloud/router": "^1.0.2", @@ -3835,15 +3663,6 @@ "vue2-datepicker": "^3.6.2" }, "dependencies": { - "@nextcloud/dialogs": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-1.4.0.tgz", - "integrity": "sha512-Rx4x+al/sy+vXu2p3qvEuVeeUDm5JVwa84S21Hxa+pDV3Pd93E2dJGWlZ6h++5fSXbee1sDX9t957B20kYiP3Q==", - "requires": { - "core-js": "^3.6.4", - "toastify-js": "^1.7.0" - } - }, "core-js": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", @@ -3869,9 +3688,9 @@ } }, "@nextcloud/webpack-vue-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@nextcloud/webpack-vue-config/-/webpack-vue-config-1.1.0.tgz", - "integrity": "sha512-3eDbH05tlkfM12syuM36QS+xU1r80iX21PZ5tN+/O9Ekto2psmt+vf7Vgs5JX20M97Uy89POQ09A8tQUj83Yuw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@nextcloud/webpack-vue-config/-/webpack-vue-config-1.4.1.tgz", + "integrity": "sha512-beyvB/6kqIJiVrc36/MlkeGoBb9zHBfbvJsvk2ia5lJCTBP41YELltFiFHpLiEJrlC2zvBzPDhF+7zZsPfa7mg==", "dev": true }, "@nodelib/fs.scandir": { @@ -3919,9 +3738,9 @@ } }, "@stylelint/postcss-css-in-js": { - "version": "0.37.1", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.1.tgz", - "integrity": "sha512-UMf2Rni3JGKi3ZwYRGMYJ5ipOA5ENJSKMtYA/pE1ZLURwdh7B5+z2r73RmWvub+N0UuH1Lo+TGfCgYwPvqpXNw==", + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", + "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", "dev": true, "requires": { "@babel/core": ">=7.9.0" @@ -4143,9 +3962,9 @@ } }, "@vue/test-utils": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.0.4.tgz", - "integrity": "sha512-uIdDqFauzNJWlhltLSZU+P3uHEgUQczklSv2b1EKC7JzxBg9OY/5sx8UyuJwBD+zuxidhFZ4SjTuPgr8cdf63w==", + "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", @@ -4363,9 +4182,9 @@ } }, "acorn": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", - "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.1.tgz", + "integrity": "sha512-dmKn4pqZ29iQl2Pvze1zTrps2luvls2PBY//neO2WJ0s10B3AxJXshN+Ph7B4GrhfGhHXrl4dnUwyNNXQcnWGQ==", "dev": true }, "acorn-globals": { @@ -4376,6 +4195,14 @@ "requires": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "dev": true + } } }, "acorn-jsx": { @@ -4929,20 +4756,26 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "autoprefixer": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.0.tgz", - "integrity": "sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A==", + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", "dev": true, "requires": { "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001061", - "chalk": "^2.4.2", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.30", + "postcss": "^7.0.32", "postcss-value-parser": "^4.1.0" }, "dependencies": { + "caniuse-lite": { + "version": "1.0.30001125", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001125.tgz", + "integrity": "sha512-9f+r7BW8Qli917mU3j0fUaTweT3f3vnX/Lcs+1C73V+RADmFme+Ih0Br8vONQi3X0lseOe6ZHfsZLCA8MSjxUA==", + "dev": true + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -4952,6 +4785,17 @@ "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss": { @@ -4963,17 +4807,6 @@ "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "source-map": { @@ -4981,6 +4814,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4997,11 +4839,18 @@ "dev": true }, "axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.20.0.tgz", + "integrity": "sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA==", "requires": { - "follow-redirects": "1.5.10" + "follow-redirects": "^1.10.0" + }, + "dependencies": { + "follow-redirects": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==" + } } }, "babel-code-frame": { @@ -5696,9 +5545,9 @@ "dev": true }, "blueimp-md5": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.17.0.tgz", - "integrity": "sha512-x5PKJHY5rHQYaADj6NwPUR2QRCUVSggPzrUKkeENpj871o9l9IefJbO2jkT5UvYykeOK9dx0VmkIo6dZ+vThYw==" + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.18.0.tgz", + "integrity": "sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q==" }, "bn.js": { "version": "5.1.2", @@ -6485,6 +6334,12 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -6722,27 +6577,27 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", "dev": true, "requires": { "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", + "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", - "yaml": "^1.7.2" + "yaml": "^1.10.0" }, "dependencies": { "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", + "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, @@ -6857,32 +6712,55 @@ } }, "css-loader": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", - "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-4.3.0.tgz", + "integrity": "sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg==", "dev": true, "requires": { - "camelcase": "^5.3.1", + "camelcase": "^6.0.0", "cssesc": "^3.0.0", "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", + "loader-utils": "^2.0.0", "postcss": "^7.0.32", "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-local-by-default": "^3.0.3", "postcss-modules-scope": "^2.2.0", "postcss-modules-values": "^3.0.0", "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.0", - "semver": "^6.3.0" + "schema-utils": "^2.7.1", + "semver": "^7.3.2" }, "dependencies": { + "ajv": { + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "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 }, + "camelcase": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz", + "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==", + "dev": true + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -6911,32 +6789,17 @@ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", "dev": true, "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "json5": "^2.1.2" } }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, "postcss": { "version": "7.0.32", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", @@ -6949,20 +6812,20 @@ } }, "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, "source-map": { @@ -7081,6 +6944,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -7462,9 +7326,9 @@ } }, "dompurify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.0.12.tgz", - "integrity": "sha512-Fl8KseK1imyhErHypFPA8qpq9gPzlsJ/EukA6yk9o0gX23p1TzC+rh9LqNg1qvErRTc0UNMYlKxEGSfSh43NDg==" + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.0.15.tgz", + "integrity": "sha512-8AnYW8iXOC7xC7K3FBvQ7+GdmtOsgDGZC5dDXaewCC674qcId7G5mhz5VIEnVShJVjQdlcaPjxpaOzaV9JC3Tg==" }, "domutils": { "version": "1.7.0", @@ -7859,6 +7723,14 @@ "acorn": "^7.1.0", "acorn-jsx": "^5.1.0", "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "dev": true + } } }, "fast-deep-equal": { @@ -8374,6 +8246,14 @@ "acorn": "^7.1.1", "acorn-jsx": "^5.2.0", "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "dev": true + } } }, "esprima": { @@ -8807,6 +8687,12 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, "fastq": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", @@ -8850,19 +8736,19 @@ } }, "file-loader": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", - "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.1.0.tgz", + "integrity": "sha512-26qPdHyTsArQ6gU4P1HJbAbnFTyT2r0pG7czh1GFAd9TZbj0n94wWbupgixZH/ET/meqi2/5+F7DhW4OAXD+Lg==", "dev": true, "requires": { "loader-utils": "^2.0.0", - "schema-utils": "^2.6.5" + "schema-utils": "^2.7.1" }, "dependencies": { "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -8872,9 +8758,9 @@ } }, "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true }, "big.js": { @@ -8889,27 +8775,6 @@ "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": "2.1.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", - "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, "loader-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", @@ -8921,20 +8786,15 @@ "json5": "^2.1.2" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "schema-utils": { - "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==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" } } } @@ -9183,6 +9043,7 @@ "version": "1.5.10", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "dev": true, "requires": { "debug": "=3.1.0" } @@ -12862,6 +12723,14 @@ "whatwg-url": "^8.0.0", "ws": "^7.2.3", "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "dev": true + } } }, "jsesc": { @@ -13190,9 +13059,9 @@ "dev": true }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -14920,15 +14789,65 @@ } }, "postcss-modules-local-by-default": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", - "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", "dev": true, "requires": { "icss-utils": "^4.1.1", - "postcss": "^7.0.16", + "postcss": "^7.0.32", "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-modules-scope": { @@ -14951,29 +14870,6 @@ "postcss": "^7.0.6" } }, - "postcss-reporter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-6.0.1.tgz", - "integrity": "sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "lodash": "^4.17.11", - "log-symbols": "^2.2.0", - "postcss": "^7.0.7" - }, - "dependencies": { - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - } - } - }, "postcss-resolve-nested-selector": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", @@ -15794,9 +15690,9 @@ } }, "remark": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.0.tgz", - "integrity": "sha512-oX4lMIS0csgk8AEbzY0h2jdR0ngiCHOpwwpxjmRa5TqAkeknY+tkhjRJGZqnCmvyuWh55/0SW5WY3R3nn3PH9A==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.1.tgz", + "integrity": "sha512-gS7HDonkdIaHmmP/+shCPejCEEW+liMp/t/QwmF0Xt47Rpuhl32lLtDV1uKWvGoq+kxr5jSgg5oAIpGuyULjUw==", "dev": true, "requires": { "remark-parse": "^8.0.0", @@ -15805,9 +15701,9 @@ } }, "remark-parse": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.2.tgz", - "integrity": "sha512-eMI6kMRjsAGpMXXBAywJwiwAse+KNpmt+BK55Oofy4KvBZEqUDj6mWbGLJZrujoPIPPxDXzn3T9baRlpsm2jnQ==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", "dev": true, "requires": { "ccount": "^1.0.0", @@ -15829,9 +15725,9 @@ } }, "remark-stringify": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.0.tgz", - "integrity": "sha512-FSPZv1ds76oAZjurhhuV5qXSUSoz6QRPuwYK38S41sLHwg4oB7ejnmZshj7qwjgYLf93kdz6BOX9j5aidNE7rA==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz", + "integrity": "sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==", "dev": true, "requires": { "ccount": "^1.0.0", @@ -16549,18 +16445,36 @@ } }, "sass-loader": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.0.1.tgz", - "integrity": "sha512-b2PSldKVTS3JcFPHSrEXh3BeAfR7XknGiGCAO5aHruR3Pf3kqLP3Gb2ypXLglRrAzgZkloNxLZ7GXEGDX0hBUQ==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.0.2.tgz", + "integrity": "sha512-wV6NDUVB8/iEYMalV/+139+vl2LaRFlZGEd5/xmdcdzQcgmis+npyco6NsDTVOlNA3y2NV9Gcz+vHyFMIT+ffg==", "dev": true, "requires": { "klona": "^2.0.3", "loader-utils": "^2.0.0", "neo-async": "^2.6.2", - "schema-utils": "^2.7.0", + "schema-utils": "^2.7.1", "semver": "^7.3.2" }, "dependencies": { + "ajv": { + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "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", @@ -16591,14 +16505,14 @@ "dev": true }, "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" } }, "semver": { @@ -16899,14 +16813,53 @@ "dev": true }, "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + } } }, "smooth-dnd": { @@ -17741,6 +17694,52 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, + "style-loader": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz", + "integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6" + }, + "dependencies": { + "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", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, "style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", @@ -17748,19 +17747,21 @@ "dev": true }, "stylelint": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.6.1.tgz", - "integrity": "sha512-XyvKyNE7eyrqkuZ85Citd/Uv3ljGiuYHC6UiztTR6sWS9rza8j3UeQv/eGcQS9NZz/imiC4GKdk1EVL3wst5vw==", + "version": "13.7.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.7.1.tgz", + "integrity": "sha512-qzqazcyRxrSRdmFuO0/SZOJ+LyCxYy0pwcvaOBBnl8/2VfHSMrtNIE+AnyJoyq6uKb+mt+hlgmVrvVi6G6XHfQ==", "dev": true, "requires": { - "@stylelint/postcss-css-in-js": "^0.37.1", + "@stylelint/postcss-css-in-js": "^0.37.2", "@stylelint/postcss-markdown": "^0.36.1", - "autoprefixer": "^9.8.0", + "autoprefixer": "^9.8.6", "balanced-match": "^1.0.0", "chalk": "^4.1.0", - "cosmiconfig": "^6.0.0", + "cosmiconfig": "^7.0.0", "debug": "^4.1.1", "execall": "^2.0.0", + "fast-glob": "^3.2.4", + "fastest-levenshtein": "^1.0.12", "file-entry-cache": "^5.0.1", "get-stdin": "^8.0.0", "global-modules": "^2.0.0", @@ -17771,18 +17772,16 @@ "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", "known-css-properties": "^0.19.0", - "leven": "^3.1.0", - "lodash": "^4.17.15", + "lodash": "^4.17.20", "log-symbols": "^4.0.0", "mathml-tag-names": "^2.1.3", - "meow": "^7.0.1", + "meow": "^7.1.1", "micromatch": "^4.0.2", "normalize-selector": "^0.2.0", "postcss": "^7.0.32", "postcss-html": "^0.36.0", "postcss-less": "^3.1.4", "postcss-media-query-parser": "^0.2.3", - "postcss-reporter": "^6.0.1", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^4.0.2", "postcss-sass": "^0.4.4", @@ -17798,7 +17797,7 @@ "style-search": "^0.1.0", "sugarss": "^2.0.0", "svg-tags": "^1.0.0", - "table": "^5.4.6", + "table": "^6.0.1", "v8-compile-cache": "^2.1.1", "write-file-atomic": "^3.0.3" }, @@ -17819,12 +17818,6 @@ "color-convert": "^2.0.1" } }, - "camelcase": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz", - "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==", - "dev": true - }, "camelcase-keys": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", @@ -17834,14 +17827,6 @@ "camelcase": "^5.3.1", "map-obj": "^4.0.0", "quick-lru": "^4.0.1" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } } }, "chalk": { @@ -17934,18 +17919,16 @@ "dev": true }, "meow": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-7.0.1.tgz", - "integrity": "sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz", + "integrity": "sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==", "dev": true, "requires": { "@types/minimist": "^1.2.0", - "arrify": "^2.0.1", - "camelcase": "^6.0.0", "camelcase-keys": "^6.2.2", "decamelize-keys": "^1.1.0", "hard-rejection": "^2.1.0", - "minimist-options": "^4.0.2", + "minimist-options": "4.1.0", "normalize-package-data": "^2.5.0", "read-pkg-up": "^7.0.1", "redent": "^3.0.0", @@ -17997,14 +17980,14 @@ "dev": true }, "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", + "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, @@ -18173,9 +18156,9 @@ } }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -18207,14 +18190,6 @@ "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } } } } @@ -18328,41 +18303,65 @@ "dev": true }, "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.3.tgz", + "integrity": "sha512-8321ZMcf1B9HvVX/btKv8mMZahCjn2aYrDlpqHaBFCfnox64edeH9kEid0vTLTRR8gWR2A20aDgeuTTea4sVtw==", "dev": true, "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "ajv": "^6.12.4", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" }, "dependencies": { + "ajv": { + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } } } @@ -18800,9 +18799,9 @@ "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" }, "unified": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.0.0.tgz", - "integrity": "sha512-ssFo33gljU3PdlWLjNp15Inqb77d6JnJSfyplGJPT/a+fNRNyCBeveBAYJdO5khKdF6WVHa/yYCC7Xl6BDwZUQ==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", "dev": true, "requires": { "bail": "^1.0.0", @@ -18890,9 +18889,9 @@ } }, "unist-util-visit": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.2.tgz", - "integrity": "sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", "dev": true, "requires": { "@types/unist": "^2.0.0", @@ -18901,9 +18900,9 @@ } }, "unist-util-visit-parents": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz", - "integrity": "sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.0.tgz", + "integrity": "sha512-0g4wbluTF93npyPrp/ymd3tCDTMnP0yo2akFD2FIBAYXq/Sga3lwaU1D8OYKbtpioaI6CkDcQ6fsMnmtzt7htw==", "dev": true, "requires": { "@types/unist": "^2.0.0", @@ -19206,9 +19205,9 @@ } }, "vfile": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.1.1.tgz", - "integrity": "sha512-lRjkpyDGjVlBA7cDQhQ+gNcvB1BGaTHYuSOcY3S7OhDmBtnzX95FhtZZDecSTDm6aajFymyve6S5DN4ZHGezdQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.0.tgz", + "integrity": "sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw==", "dev": true, "requires": { "@types/unist": "^2.0.0", @@ -19227,9 +19226,9 @@ } }, "vfile-location": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.0.1.tgz", - "integrity": "sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.1.0.tgz", + "integrity": "sha512-FCZ4AN9xMcjFIG1oGmZKo61PjwJHRVA+0/tPUP2ul4uIwjGGndIxavEMRpWn5p4xwm/ZsdXp9YNygf1ZyE4x8g==", "dev": true }, "vfile-message": { diff --git a/package.json b/package.json index 0e207d554..984b00132 100644 --- a/package.json +++ b/package.json @@ -28,21 +28,21 @@ "test:coverage": "jest --coverage" }, "dependencies": { - "@babel/polyfill": "^7.10.4", + "@babel/polyfill": "^7.11.5", "@babel/runtime": "^7.11.2", - "@juliushaertl/vue-richtext": "^0.3.2", + "@juliushaertl/vue-richtext": "^0.3.3", "@nextcloud/auth": "^1.3.0", - "@nextcloud/axios": "^1.3.3", - "@nextcloud/dialogs": "^2.0.0", + "@nextcloud/axios": "^1.4.0", + "@nextcloud/dialogs": "^2.0.1", "@nextcloud/files": "^1.1.0", "@nextcloud/initial-state": "^1.1.2", - "@nextcloud/l10n": "^1.3.0", + "@nextcloud/l10n": "^1.4.1", "@nextcloud/moment": "^1.1.1", - "@nextcloud/router": "^1.1.0", - "@nextcloud/vue": "^2.6.0", + "@nextcloud/router": "^1.2.0", + "@nextcloud/vue": "^2.6.5", "@nextcloud/vue-dashboard": "^0.1.8", - "blueimp-md5": "^2.17.0", - "dompurify": "^2.0.12", + "blueimp-md5": "^2.18.0", + "dompurify": "^2.0.15", "lodash": "^4.17.20", "markdown-it": "^11.0.0", "markdown-it-task-lists": "^2.1.1", @@ -67,19 +67,19 @@ "node": ">=10.0.0" }, "devDependencies": { - "@babel/core": "^7.11.4", + "@babel/core": "^7.11.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/preset-env": "^7.11.0", + "@babel/preset-env": "^7.11.5", "@nextcloud/browserslist-config": "^1.0.0", "@nextcloud/eslint-config": "^2.1.0", "@nextcloud/eslint-plugin": "^1.4.0", - "@nextcloud/webpack-vue-config": "^1.1.0", - "@vue/test-utils": "^1.0.4", - "acorn": "^7.4.0", + "@nextcloud/webpack-vue-config": "^1.4.1", + "@vue/test-utils": "^1.1.0", + "acorn": "^8.0.1", "babel-eslint": "^10.1.0", "babel-jest": "^26.3.0", "babel-loader": "^8.1.0", - "css-loader": "^3.6.0", + "css-loader": "^4.3.0", "eslint": "^6.8.0", "eslint-config-standard": "^12.0.0", "eslint-friendly-formatter": "^4.0.1", @@ -89,14 +89,15 @@ "eslint-plugin-promise": "^4.2.1", "eslint-plugin-standard": "^4.0.1", "eslint-plugin-vue": "^6.2.2", - "file-loader": "^6.0.0", + "file-loader": "^6.1.0", "jest": "^26.4.2", "jest-serializer-vue": "^2.0.2", "minimist": "^1.2.5", "node-sass": "^4.14.1", "raw-loader": "^4.0.1", - "sass-loader": "^10.0.1", - "stylelint": "^13.6.1", + "sass-loader": "^10.0.2", + "style-loader": "^1.2.1", + "stylelint": "^13.7.1", "stylelint-config-recommended": "^3.0.0", "stylelint-config-recommended-scss": "^4.2.0", "stylelint-scss": "^3.18.0", @@ -104,7 +105,6 @@ "url-loader": "^4.1.0", "vue-jest": "^3.0.6", "vue-loader": "^15.9.3", - "vue-style-loader": "^4.1.1", "vue-template-compiler": "^2.6.12", "webpack": "^4.44.1", "webpack-cli": "^3.3.12", diff --git a/src/App.vue b/src/App.vue index c5237165f..ef57ed590 100644 --- a/src/App.vue +++ b/src/App.vue @@ -26,7 +26,14 @@
- + + + + + + @@ -34,6 +41,7 @@ import { mapState } from 'vuex' import AppNavigation from './components/navigation/AppNavigation' +import { Modal } from '@nextcloud/vue' import { BoardApi } from './services/BoardApi' const boardApi = new BoardApi() @@ -42,6 +50,7 @@ export default { name: 'App', components: { AppNavigation, + Modal, }, data() { return { @@ -67,6 +76,7 @@ export default { navShown: state => state.navShown, sidebarShownState: state => state.sidebarShown, currentBoard: state => state.currentBoard, + cardDetailsInModal: state => state.cardDetailsInModal, }), // TODO: properly handle sidebar showing for route subview and board sidebar sidebarRouterView() { @@ -77,17 +87,21 @@ export default { return this.sidebarRouterView || this.sidebarShownState }, }, + created() { + this.$store.dispatch('loadBoards') + this.$store.dispatch('loadSharees') + }, + methods: { + hideModal() { + this.$router.push({ name: 'board' }) + }, + }, provide() { return { boardApi, } }, - created() { - this.$store.dispatch('loadBoards') - this.$store.dispatch('loadSharees') - }, } - - diff --git a/src/components/Controls.vue b/src/components/Controls.vue index 3017f9a96..8320c7256 100644 --- a/src/components/Controls.vue +++ b/src/components/Controls.vue @@ -170,18 +170,22 @@ - + - - + @click="toggleShowArchived"> + {{ showArchived ? t('deck', 'Hide archived cards') : t('deck', 'Show archived cards') }} + + @click="toggleCompactMode"> + {{ t('deck', 'Toggle compact mode') }} + + @click="toggleCompactMode"> + {{ t('deck', 'Toggle compact mode') }} + diff --git a/src/components/board/Stack.vue b/src/components/board/Stack.vue index 6377df3a9..5da76b9af 100644 --- a/src/components/board/Stack.vue +++ b/src/components/board/Stack.vue @@ -85,7 +85,7 @@ type="text" class="no-close" :disabled="stateCardCreating" - placeholder="Add a new card" + :placeholder="t('deck', 'Card name')" required @keydown.esc="stopCardCreation"> @@ -165,7 +165,12 @@ export default { showArchived: state => state.showArchived, }), cardsByStack() { - return this.$store.getters.cardsByStack(this.stack.id) + return this.$store.getters.cardsByStack(this.stack.id).filter((card) => { + if (this.showArchived) { + return card.archived + } + return !card.archived + }) }, dragHandleSelector() { return this.canEdit ? null : '.no-drag' @@ -319,7 +324,8 @@ export default { margin-top: 0; margin-bottom: 10px; box-shadow: 0 0 3px var(--color-box-shadow); - border-radius: 3px; + border-radius: var(--border-radius-large); + overflow: hidden; } &.icon-loading-small:after, diff --git a/src/components/card/CardSidebar.vue b/src/components/card/CardSidebar.vue index 9f59c61ca..deee23875 100644 --- a/src/components/card/CardSidebar.vue +++ b/src/components/card/CardSidebar.vue @@ -24,8 +24,19 @@ -