Compare commits

..

623 Commits

Author SHA1 Message Date
Julius Härtl
2721e51850 Merge pull request #815 from nextcloud/release/0.5.2
Bump version to 0.5.2
2018-12-20 15:28:08 +01:00
Julius Härtl
77708ac5c1 Bump version to 0.5.2
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-20 11:50:26 +01:00
Julius Härtl
67677f1dfc Merge pull request #813 from nextcloud/bugfix/768/due-date-notification-archive
Mark notification as read if a card with duedate gets archived
2018-12-20 11:36:36 +01:00
Julius Härtl
03ad5cb040 Merge branch 'master' into bugfix/768/due-date-notification-archive 2018-12-20 11:30:07 +01:00
Julius Härtl
35bec2749c Merge pull request #811 from nextcloud/bugfix/807/edge
Fix edge issues
2018-12-20 11:29:57 +01:00
Julius Härtl
ff21f855ca Merge pull request #812 from nextcloud/bugfix/796/comments-format
Only pass valid subject parameters when commenting
2018-12-20 11:29:37 +01:00
Julius Härtl
5c0455ec56 Only pass valid subject parameters when commenting
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-20 10:49:07 +01:00
Julius Härtl
8b750b7c7c Mark notification as read if a card with duedate gets archived
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-20 10:46:48 +01:00
Julius Härtl
1551a8a862 Add empty search text default to avoid filtering issue with undefined value on edge (fixes #807)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-20 10:19:14 +01:00
Julius Härtl
50a5048fbe Fix drop shadow on edge
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-20 10:18:44 +01:00
Julius Härtl
cf41665c0a Add stale bot config
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-20 08:51:23 +01:00
Julius Härtl
02c3131f18 Merge pull request #774 from nextcloud/bugfix/771/rest-types
Fix numeric types and missing card id in card detail results
2018-12-20 08:45:44 +01:00
Julius Härtl
af57c3bf4f Fix If-Modified-Since header parsing
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-20 08:27:13 +01:00
Julius Härtl
ec42c0c2b4 Fix numeric types and missing card id in card detail results
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-20 08:27:10 +01:00
Nextcloud bot
082346b9e9 [tx-robot] updated from transifex 2018-12-20 01:18:15 +00:00
Julius Härtl
d986dd2beb Merge pull request #784 from nextcloud/dependabot/npm_and_yarn/js/webpack-merge-4.1.5
Bump webpack-merge from 4.1.4 to 4.1.5 in /js
2018-12-18 20:37:45 +01:00
Julius Härtl
68934ca747 Merge pull request #782 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.27.1
Bump webpack from 4.26.1 to 4.27.1 in /js
2018-12-18 20:36:49 +01:00
Julius Härtl
078a008e6c Merge pull request #783 from nextcloud/dependabot/npm_and_yarn/js/mini-css-extract-plugin-0.5.0
Bump mini-css-extract-plugin from 0.4.5 to 0.5.0 in /js
2018-12-18 20:36:35 +01:00
Julius Härtl
553a9b9fc9 Merge pull request #788 from nextcloud/dependabot/npm_and_yarn/js/@babel/preset-env-7.2.0
Bump @babel/preset-env from 7.1.6 to 7.2.0 in /js
2018-12-18 20:36:20 +01:00
Nextcloud bot
f7a8222939 [tx-robot] updated from transifex 2018-12-18 01:17:58 +00:00
dependabot[bot]
c2eb4ed7fa Bump @babel/preset-env from 7.1.6 to 7.2.0 in /js
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.1.6 to 7.2.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.1.6...v7.2.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-17 09:20:00 +00:00
dependabot[bot]
3b11e01cc8 Bump webpack from 4.26.1 to 4.27.1 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.26.1 to 4.27.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.26.1...v4.27.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-17 09:16:14 +00:00
dependabot[bot]
12c95cfb8f Bump mini-css-extract-plugin from 0.4.5 to 0.5.0 in /js
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 0.4.5 to 0.5.0.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v0.4.5...v0.5.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-17 09:16:04 +00:00
Julius Härtl
4498eba6ae Merge pull request #804 from nextcloud/dependabot/npm_and_yarn/js/@babel/core-7.2.2
Bump @babel/core from 7.1.6 to 7.2.2 in /js
2018-12-17 10:13:29 +01:00
Julius Härtl
87b995681f Merge pull request #803 from nextcloud/dependabot/npm_and_yarn/js/css-loader-2.0.1
Bump css-loader from 1.0.1 to 2.0.1 in /js
2018-12-17 10:12:22 +01:00
dependabot[bot]
3ccca3f240 Bump @babel/core from 7.1.6 to 7.2.2 in /js
Bumps [@babel/core](https://github.com/babel/babel) from 7.1.6 to 7.2.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.1.6...v7.2.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-17 02:24:34 +00:00
dependabot[bot]
95a0301ac7 Bump css-loader from 1.0.1 to 2.0.1 in /js
Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 1.0.1 to 2.0.1.
- [Release notes](https://github.com/webpack-contrib/css-loader/releases)
- [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/css-loader/compare/v1.0.1...v2.0.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-17 02:24:01 +00:00
Nextcloud bot
cf05a5687d [tx-robot] updated from transifex 2018-12-17 01:18:00 +00:00
Nextcloud bot
4d9f88afba [tx-robot] updated from transifex 2018-12-16 01:19:33 +00:00
Nextcloud bot
fa2453ae80 [tx-robot] updated from transifex 2018-12-15 01:18:04 +00:00
Nextcloud bot
36d28cf6fc [tx-robot] updated from transifex 2018-12-14 01:19:05 +00:00
Nextcloud bot
f1d3bbd95f [tx-robot] updated from transifex 2018-12-13 01:18:37 +00:00
Nextcloud bot
d556484888 [tx-robot] updated from transifex 2018-12-12 01:24:36 +00:00
dependabot[bot]
07857a2309 Bump webpack-merge from 4.1.4 to 4.1.5 in /js
Bumps [webpack-merge](https://github.com/survivejs/webpack-merge) from 4.1.4 to 4.1.5.
- [Release notes](https://github.com/survivejs/webpack-merge/releases)
- [Changelog](https://github.com/survivejs/webpack-merge/blob/master/CHANGELOG.md)
- [Commits](https://github.com/survivejs/webpack-merge/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-10 02:21:16 +00:00
Nextcloud bot
0296b8dd37 [tx-robot] updated from transifex 2018-12-10 01:18:22 +00:00
Nextcloud bot
e56742a065 [tx-robot] updated from transifex 2018-12-09 01:19:00 +00:00
Julius Härtl
c6a701393f Merge pull request #777 from nextcloud/bugfix/775
Make new comment string translatable
2018-12-08 13:42:03 +01:00
Julius Härtl
073eb0e417 Make new comment string translatable
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-08 13:01:28 +01:00
Nextcloud bot
e15f14c21b [tx-robot] updated from transifex 2018-12-08 01:17:45 +00:00
Julius Härtl
0590621182 Merge pull request #773 from nextcloud/bugfix/noid/duedate-activity
Use proper timezone and locale format for due date activities
2018-12-07 23:32:58 +01:00
Julius Härtl
4519b2a052 Merge pull request #770 from nextcloud/bugfix/noid/permission-groups
Check group limit in the proper way
2018-12-07 23:32:41 +01:00
Julius Härtl
1dc68f97c5 Use proper timezone and locale format for due date activities
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-07 16:33:49 +01:00
Julius Härtl
b8d00c8228 Make sure only groups can create if set
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-07 08:27:29 +01:00
Nextcloud bot
81bdbadea1 [tx-robot] updated from transifex 2018-12-07 01:18:22 +00:00
Julius Härtl
6298e0f107 Merge pull request #735 from cloud2018/Papercut-Unify-text-of-activity
Update ActivityManager.php
2018-12-06 10:14:14 +01:00
Nextcloud bot
ea2193a46e [tx-robot] updated from transifex 2018-12-06 01:19:02 +00:00
Julius Härtl
96dffbfedd Merge pull request #764 from nextcloud/release/0.5.1
Release 0.5.1
2018-12-05 19:48:54 +01:00
Julius Härtl
eb590b5a71 Bump version and changelog for 0.5.1
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-05 18:51:05 +01:00
Julius Härtl
c2294b6e6f Merge pull request #766 from nextcloud/bugfix/noid/13-groups
Use regular groups endpoint to support Nextcloud 13
2018-12-05 18:50:10 +01:00
Julius Härtl
8906d12a47 Use regular groups endpoint to support Nextcloud 13
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-05 18:31:54 +01:00
Julius Härtl
3162ff4261 Merge pull request #765 from nextcloud/bugfix/763/comment-notification
Trigger comment notification on update only
2018-12-05 16:08:31 +01:00
Julius Härtl
57643447d6 Trigger comment notification on update only
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-05 14:01:03 +01:00
Julius Härtl
6b86d8ae30 Merge pull request #709 from nextcloud/enhancement/noid/activity-settings
Add dedicated setting for description change activities
2018-12-05 13:33:18 +01:00
Julius Härtl
4279e09cc2 Fix tests for new setting
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-05 13:22:17 +01:00
Julius Härtl
dd104466d6 Do not expose activity on every autosave
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-05 13:09:43 +01:00
Julius Härtl
43a11327a6 Add dedicated setting for description change activities
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-05 13:09:36 +01:00
Julius Härtl
e1080ffd98 Merge pull request #762 from nextcloud/tests/noid/php7.3
Add drone tests for PHP 7.3
2018-12-05 12:04:22 +01:00
Nextcloud bot
ebc375fe20 [tx-robot] updated from transifex 2018-12-05 01:18:15 +00:00
Julius Härtl
b778420d63 Add drone tests for PHP 7.3
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-04 15:24:38 +01:00
Julius Härtl
baf7ff9ebf Merge pull request #753 from xf-/task/travisPhp7_3
Travis PHP 7.3 test
2018-12-04 15:21:47 +01:00
Julius Härtl
7733754c2b Merge pull request #761 from nextcloud/bugfix/721/activity-fix
Fix information in activity emails
2018-12-04 13:46:16 +01:00
Julius Härtl
3c1d1d2dd5 Merge pull request #759 from nextcloud/bugfix/716/comments-board-timeline
Do not show comments in board timeline
2018-12-04 13:05:18 +01:00
Julius Härtl
82bc6b2a71 Merge pull request #760 from nextcloud/bugfix/712/search
Use new search API when available
2018-12-04 13:05:09 +01:00
Julius Härtl
e5fe19c107 Fix missing information in activity emails
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-04 13:04:54 +01:00
Julius Härtl
8499318928 Fix comment activity entry
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-04 11:42:26 +01:00
Julius Härtl
0dd96e9858 Do not show comments in board timeline
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-04 11:06:16 +01:00
Julius Härtl
0296dc78f1 Use new search API when available
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-04 10:36:29 +01:00
Julius Härtl
3b403d5576 Merge pull request #758 from nextcloud/bugfix/noid/group-restrict
Implement group restrictions for creating and sharing
2018-12-04 10:27:16 +01:00
Julius Härtl
f5d7fdf75f Merge pull request #746 from tinko92/master
Added optional classes has-tasks, has-tasks-completed, overdue, now and
2018-12-04 10:02:01 +01:00
Julius Härtl
0528bd59d1 Fix tests for group restrictions
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-04 09:25:35 +01:00
Julius Härtl
7c95783ab5 Add group limit for creating boards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-04 09:11:50 +01:00
Julius Härtl
bff3cafb37 Check if sharing is disabled for a user via core settings
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-04 07:51:47 +01:00
Julius Härtl
9e58207392 Use write only permission by default
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-12-04 07:50:53 +01:00
Nextcloud bot
c33b41dcbe [tx-robot] updated from transifex 2018-12-04 01:28:17 +00:00
Julius Härtl
efe2a50a4e Merge pull request #756 from nextcloud/dependabot/npm_and_yarn/js/karma-3.1.3
Bump karma from 3.1.1 to 3.1.3 in /js
2018-12-03 16:26:31 +01:00
dependabot[bot]
cfc3b41471 Bump karma from 3.1.1 to 3.1.3 in /js
Bumps [karma](https://github.com/karma-runner/karma) from 3.1.1 to 3.1.3.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v3.1.1...v3.1.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-03 02:23:57 +00:00
Xaver Maierhofer
cfd67eab95 Travis PHP 7.3 test
Signed-off-by: Xaver Maierhofer <xaver.maierhofer@xwissen.info>
2018-11-30 19:09:03 +01:00
Nextcloud bot
98fa04528d [tx-robot] updated from transifex 2018-11-30 01:18:20 +00:00
Nextcloud bot
20e8ebc26a [tx-robot] updated from transifex 2018-11-28 01:18:36 +00:00
Julius Härtl
405d5585ce Merge pull request #747 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.26.1
Bump webpack from 4.26.0 to 4.26.1 in /js
2018-11-26 11:53:08 +01:00
dependabot[bot]
1fb562d94b Bump webpack from 4.26.0 to 4.26.1 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.26.0 to 4.26.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.26.0...v4.26.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-26 02:17:52 +00:00
Nextcloud bot
1beff0e760 [tx-robot] updated from transifex 2018-11-26 01:17:34 +00:00
Tinko Bartels
6c6f8ae53f Added optional classes has-tasks, has-tasks-completed, overdue, now and
next to li.card in mainView-template.

Signed-off-by: Tinko Bartels <mail@tinkobartels.de>
2018-11-25 14:45:25 +01:00
Nextcloud bot
ed53de4cf1 [tx-robot] updated from transifex 2018-11-25 01:18:53 +00:00
Nextcloud bot
9f96627435 [tx-robot] updated from transifex 2018-11-24 01:17:37 +00:00
Julius Härtl
b39b7d9629 Merge pull request #726 from nextcloud/bugfix/724
Remove unused activity script
2018-11-23 18:26:28 +01:00
Julius Härtl
2ecba36ba3 Merge pull request #723 from nextcloud/feature-631/remember-side-menu-state
Deck now remembers the side menu state
2018-11-23 15:31:47 +01:00
Julius Härtl
7963f7f7b6 Merge pull request #738 from nextcloud/tests/stable15
Test compatibility with stable15
2018-11-23 15:31:22 +01:00
Julius Härtl
50faa97558 Merge pull request #736 from nextcloud/bugfix/noid/remove-card-parameter-when-its-null
Remove card parameter when it's null
2018-11-23 15:31:04 +01:00
Julius Härtl
135d7741d2 Merge pull request #734 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.26.0
Bump webpack from 4.25.1 to 4.26.0 in /js
2018-11-23 15:30:53 +01:00
dependabot[bot]
2b1e9ba07d Bump webpack from 4.25.1 to 4.26.0 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.25.1 to 4.26.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.25.1...v4.26.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-23 14:15:23 +00:00
Julius Härtl
e121353ac8 Merge pull request #733 from nextcloud/dependabot/npm_and_yarn/js/mini-css-extract-plugin-0.4.5
Bump mini-css-extract-plugin from 0.4.4 to 0.4.5 in /js
2018-11-23 15:13:01 +01:00
Julius Härtl
07442a187a Test compatibility with stable15
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-23 15:06:12 +01:00
Julius Härtl
2c024dedce Remove null board value in activity parameters
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-23 15:04:04 +01:00
cloud2018
c7687382f8 Update ActivityManager.php
Fix: "object" +" title of object"

Additional Conditions for SUBJECT_CARD_UPDATE_DUEDATE Adjusted

Signed-off-by: cloud2018 <eckstein-markus@gmx.de>
2018-11-23 12:44:52 +01:00
Joas Schilling
d28bf74c73 Remove card parameter when it's null
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-11-23 12:30:55 +01:00
Nextcloud bot
223523005d [tx-robot] updated from transifex 2018-11-23 01:30:04 +00:00
dependabot[bot]
c68437e836 Bump mini-css-extract-plugin from 0.4.4 to 0.4.5 in /js
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 0.4.4 to 0.4.5.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v0.4.4...v0.4.5)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-22 19:02:37 +00:00
Julius Härtl
c65a9151ab Merge branch 'master' into feature-631/remember-side-menu-state 2018-11-22 20:01:00 +01:00
Julius Härtl
0b90f09873 Merge branch 'master' into bugfix/724 2018-11-22 20:00:42 +01:00
Julius Härtl
3374f6c908 Merge pull request #727 from nextcloud/bugfix/684/deleted-items
Fix relative timestamp and alignment in deleted items list
2018-11-22 20:00:11 +01:00
Julius Härtl
7bcd313883 Merge pull request #732 from nextcloud/bugfix/noid/ci
Fix CI build
2018-11-22 19:59:54 +01:00
Julius Härtl
76bb42e526 Update packages
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-22 19:50:32 +01:00
Julius Härtl
d4b5f2af57 Merge pull request #731 from cloud2018/remove-duplicate-blanks
Papercut: remove duplicate blanks
2018-11-22 19:40:53 +01:00
cloud2018
1299fcf978 remove duplicate blanks
Signed-off-by: Markus Eckstein <eckstein-markus@gmx.de>

resolves  #729
2018-11-22 18:58:58 +01:00
Julius Härtl
d04f8742a6 Fix relative timestamp and alignment in deleted items list
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-22 18:24:19 +01:00
Julius Härtl
6b8e5f8b76 Remove unused activity script
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-22 18:07:36 +01:00
Nextcloud bot
c429ba5aff [tx-robot] updated from transifex 2018-11-22 01:18:31 +00:00
Michael Weimann
ef36103c47 Deck now remembers the side menu state #631
Signed-off-by: Michael Weimann <mail@michael-weimann.eu>
2018-11-21 21:17:19 +01:00
Nextcloud bot
82336e82d9 [tx-robot] updated from transifex 2018-11-21 01:18:30 +00:00
Julius Härtl
3baf9500c3 Merge pull request #715 from bpcurse/master
Bugfix for missing dbtableprefix in 'cardChanged' function in /lib/Db…
2018-11-20 10:42:57 +01:00
Nextcloud bot
1dcefc1d57 [tx-robot] updated from transifex 2018-11-20 01:19:17 +00:00
Julius Härtl
66b6d4a09a Fix link to contribution guidelines (fixes #714) 2018-11-19 11:38:04 +01:00
Nextcloud bot
44c1ba62e8 [tx-robot] updated from transifex 2018-11-19 01:18:22 +00:00
Nextcloud bot
590cdba75b [tx-robot] updated from transifex 2018-11-18 01:19:31 +00:00
bpcurse
9786efe490 Bugfix for missing dbtableprefix in 'cardChanged' function in /lib/Db/ChangeHelper.php (68) 2018-11-17 17:29:50 +01:00
Julius Härtl
352851a686 Merge pull request #699 from cloud2018/Papercut-unify-name-of-actions
Papercut: unify name of actions
2018-11-17 10:45:51 +01:00
cloud2018
b4c1d35b52 Papercut: unify name of actions
Signed-off-by: Markus Eckstein <eckstein-markus@gmx.de>

resolves  #691
2018-11-16 10:44:54 +01:00
Julius Härtl
776d79c12b Merge pull request #701 from nextcloud/dependabot/npm_and_yarn/js/@babel/preset-env-7.1.6
Bump @babel/preset-env from 7.1.5 to 7.1.6 in /js
2018-11-15 10:03:42 +01:00
Julius Härtl
291b0ee3c0 Merge pull request #702 from nextcloud/dependabot/npm_and_yarn/js/@babel/core-7.1.6
Bump @babel/core from 7.1.5 to 7.1.6 in /js
2018-11-15 10:03:27 +01:00
Julius Härtl
16c7e409d7 Fix event message
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-15 09:55:18 +01:00
Julius Härtl
6064fe71a0 Bump version to 0.5.0
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-15 09:29:47 +01:00
Nextcloud bot
360f01a07b [tx-robot] updated from transifex 2018-11-15 01:18:44 +00:00
dependabot[bot]
4546337d3e Bump @babel/core from 7.1.5 to 7.1.6 in /js
Bumps [@babel/core](https://github.com/babel/babel) from 7.1.5 to 7.1.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.1.5...v7.1.6)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-14 12:12:02 +00:00
dependabot[bot]
aeae192eaf Bump @babel/preset-env from 7.1.5 to 7.1.6 in /js
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.1.5 to 7.1.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.1.5...v7.1.6)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-14 12:11:21 +00:00
Nextcloud bot
3db56ca93e [tx-robot] updated from transifex 2018-11-13 01:20:17 +00:00
Julius Härtl
c69fc9ec77 Merge pull request #690 from cloud2018/unify-title-icons-more
Papercut: unifiy title icon-more
2018-11-12 14:31:06 +01:00
Julius Härtl
87b56ec111 Bump version to 0.5.0-rc2
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-12 14:09:11 +01:00
Julius Härtl
74abc499d8 Merge pull request #693 from nextcloud/dependabot/npm_and_yarn/js/@babel/preset-env-7.1.5
Bump @babel/preset-env from 7.1.0 to 7.1.5 in /js
2018-11-12 14:07:58 +01:00
Julius Härtl
7c04602cc7 Merge pull request #694 from nextcloud/dependabot/npm_and_yarn/js/@babel/core-7.1.5
Bump @babel/core from 7.1.2 to 7.1.5 in /js
2018-11-12 14:07:45 +01:00
Julius Härtl
daed799fa7 Merge pull request #697 from nextcloud/bugfix/noid/noitification-length
Fix issue with comments longer than 64 chars
2018-11-12 13:26:18 +01:00
Julius Härtl
65e192efc3 Merge pull request #695 from nextcloud/bugfix/noid/tabdetails
Fix tab details alignment
2018-11-12 12:56:29 +01:00
Julius Härtl
e1c700878a Fix issue with comments longer than 64 chars
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-12 12:55:11 +01:00
Julius Härtl
81a0c62308 Fix tab details alignment
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-12 10:35:37 +01:00
Nextcloud bot
470538ac91 [tx-robot] updated from transifex 2018-11-12 01:19:13 +00:00
dependabot[bot]
c6e7d621f0 Bump @babel/core from 7.1.2 to 7.1.5 in /js
Bumps [@babel/core](https://github.com/babel/babel) from 7.1.2 to 7.1.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.1.2...v7.1.5)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-11 20:18:46 +00:00
dependabot[bot]
99ca1ecf8c Bump @babel/preset-env from 7.1.0 to 7.1.5 in /js
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.1.0 to 7.1.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.1.0...v7.1.5)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-11 20:18:17 +00:00
Nextcloud bot
4a0398923f [tx-robot] updated from transifex 2018-11-11 01:19:53 +00:00
cloud2018
c7816b5a1f Papercut: unifiy title icon-more
Signed-off-by: Markus Eckstein eckstein-markus@gmx.de
2018-11-10 12:06:00 +01:00
Julius Härtl
6c5f09e1f9 Merge pull request #686 from nextcloud/release/0.5.0-rc1
Release 0.5.0-rc1
2018-11-10 11:16:02 +01:00
Julius Härtl
4aea8817df Fix tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-10 11:11:03 +01:00
Julius Härtl
b4929e1b45 Conditional loading for activity templates
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-10 11:09:20 +01:00
Julius Härtl
a56907862c Fix loading and activity warning
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-10 11:04:15 +01:00
Julius Härtl
24db3fbdc9 Add dependencies to info.xml
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-10 10:54:05 +01:00
Julius Härtl
9cf30dc77b Merge pull request #681 from nextcloud/design-fixes
Design fixes
2018-11-10 10:49:08 +01:00
Julius Härtl
b42c80b464 Fix assign user click target
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-10 10:43:12 +01:00
Julius Härtl
8dd310cee2 Fix datepicker on 13
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-10 10:42:32 +01:00
Julius Härtl
4d1e6100db Bump version to 0.5.0-rc1
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-10 09:56:16 +01:00
Nextcloud bot
dc5eb9e815 [tx-robot] updated from transifex 2018-11-10 01:19:05 +00:00
Julius Härtl
e1b5efcd79 Fix card highlight state
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-09 17:29:08 +01:00
Julius Härtl
644c64aa4b Fix diff of large descriptions
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-09 17:21:36 +01:00
Julius Härtl
3c706c8009 Fix eslint
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-09 17:00:41 +01:00
Julius Härtl
7234050447 Set min height for markdown area (fixes #655)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-09 16:52:39 +01:00
Julius Härtl
6a7ceee75f Fix table rendering in markdown (fixes #363)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-09 16:47:41 +01:00
Julius Härtl
7d64784dc4 Fix tab headers on 15
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-09 16:43:19 +01:00
Julius Härtl
21b7f08e18 Move activity template overriding to the constructor
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-09 16:43:19 +01:00
Julius Härtl
47fc2eb20d Fix css variable usage on Nextcloud 13
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-09 16:43:19 +01:00
Julius Härtl
fc5cabedd0 Fix design issues on 15
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-09 16:43:19 +01:00
Julius Härtl
b60abba6e4 Clear deleted stack/card list after switch (fixes #683)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-09 16:42:04 +01:00
Julius Härtl
5371a02653 Merge pull request #680 from nextcloud/bugfix/noid/activity-plain-subject
Replace subject parameters in plain subject string as well
2018-11-09 16:03:46 +01:00
Julius Härtl
a6da1ded25 13: force app sidebar on top (fixes #575)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-09 16:01:45 +01:00
Julius Härtl
4e5f4df29a Properly trigger checkbox toggle on label click only
fixes #577

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-09 15:49:06 +01:00
Julius Härtl
2b74da9d30 Replace subject parameters in plain subject string as well
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-09 15:36:18 +01:00
Julius Härtl
924d4bd01f Merge pull request #642 from nextcloud/bugfix/noid/checkboxes
Checkbox fixes
2018-11-09 14:45:04 +01:00
Julius Härtl
a8173b045d Merge pull request #682 from nextcloud/bugfix/621
Only call fclose if resource is still available
2018-11-09 12:40:07 +01:00
Julius Härtl
71e6ff1b79 Make checkbox id order ascending (fixes #678)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-09 12:39:12 +01:00
Julius Härtl
2bd77fd2ce Fix checkbox matching
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-09 12:38:50 +01:00
Julius Härtl
aee5fb7a98 Only call fclose if resource is still available
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-08 18:55:48 +01:00
Julius Härtl
733f17d59a Merge pull request #675 from nextcloud/activity-15
Fix activity view on 15
2018-11-08 18:32:12 +01:00
Julius Härtl
785bc08d7f Fix activity view on 15
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-06 19:55:17 +01:00
Julius Härtl
7cb5045dff Update README.md 2018-11-06 19:53:53 +01:00
Julius Härtl
2b0954951d Merge pull request #676 from nextcloud/fix-duplicate-register
Do not call register for comment entities twice
2018-11-06 19:45:42 +01:00
Julius Härtl
ad1e0c91ec Merge pull request #677 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.25.1
Bump webpack from 4.24.0 to 4.25.1 in /js
2018-11-06 19:44:55 +01:00
Julius Härtl
9cf30bf5fd Fix tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-06 19:44:29 +01:00
Julius Härtl
a22c152bd7 Merge pull request #648 from nextcloud/documentation
Documentation
2018-11-06 19:43:17 +01:00
Julius Härtl
ec1faad4ab Add note about bad request response
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-06 19:41:44 +01:00
Julius Härtl
35991b7448 Add data examples to the docs
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-06 19:39:09 +01:00
Julius Härtl
89cb797250 More api docs
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-06 19:08:55 +01:00
Julius Härtl
26ab4a950d Add database structure docs
thanks to @desperateCoder for drawing an er diagram

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-06 19:08:55 +01:00
Julius Härtl
31273a31b7 Fix typo
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-06 19:08:55 +01:00
Julius Härtl
c83952ad00 Use config for old mkdocs version of readthedocs
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-06 19:08:54 +01:00
Julius Härtl
31cf89d874 Restructure docs
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-06 19:08:54 +01:00
Julius Härtl
b494e9e1b0 Change level of api docs
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-06 19:08:54 +01:00
Julius Härtl
fdd248b7d5 Add documentation with list of API endpoints
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-06 19:08:52 +01:00
dependabot[bot]
580bff4643 Bump webpack from 4.24.0 to 4.25.1 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.24.0 to 4.25.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.24.0...v4.25.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-06 16:49:27 +00:00
Nextcloud bot
f1c19023e8 [tx-robot] updated from transifex 2018-11-06 01:19:26 +00:00
Julius Härtl
927b96219c Merge pull request #665 from nextcloud/enhancement/659
Implement modification changes for REST API
2018-11-05 15:07:35 +01:00
Julius Härtl
2673bada6a Update stack lastModified as well
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-05 14:56:36 +01:00
Julius Härtl
a026ebf094 Add change database helper
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-05 14:53:01 +01:00
Julius Härtl
d830c5006c 0.5 will support 15 as well
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-05 14:36:17 +01:00
Julius Härtl
d74138837e Do not call register for comment entities twice
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-05 14:33:44 +01:00
Julius Härtl
413875b697 Merge pull request #673 from nextcloud/dependabot/npm_and_yarn/js/node-sass-4.10.0
Bump node-sass from 4.9.4 to 4.10.0 in /js
2018-11-05 13:45:31 +01:00
Julius Härtl
a068d6e1c6 Add last_modified to board/stack database and add check on index methods
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-11-05 13:23:26 +01:00
dependabot[bot]
25f543d3ad Bump node-sass from 4.9.4 to 4.10.0 in /js
Bumps [node-sass](https://github.com/sass/node-sass) from 4.9.4 to 4.10.0.
- [Release notes](https://github.com/sass/node-sass/releases)
- [Changelog](https://github.com/sass/node-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/node-sass/compare/v4.9.4...v4.10.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-05 12:19:25 +00:00
Julius Härtl
38bc02c07e Merge pull request #672 from nextcloud/dependabot/npm_and_yarn/js/css-loader-1.0.1
Bump css-loader from 1.0.0 to 1.0.1 in /js
2018-11-05 13:17:42 +01:00
Julius Härtl
2921a07f29 Merge pull request #671 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.24.0
Bump webpack from 4.23.1 to 4.24.0 in /js
2018-11-05 13:17:30 +01:00
dependabot[bot]
0c8e6d0e60 Bump css-loader from 1.0.0 to 1.0.1 in /js
Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/webpack-contrib/css-loader/releases)
- [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/css-loader/compare/v1.0.0...v1.0.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-05 01:22:07 +00:00
dependabot[bot]
ac7fda0e5a Bump webpack from 4.23.1 to 4.24.0 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.23.1 to 4.24.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.23.1...v4.24.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-05 01:21:01 +00:00
Nextcloud bot
e66aa2e988 [tx-robot] updated from transifex 2018-11-05 01:19:10 +00:00
Nextcloud bot
aa0fa5a18d [tx-robot] updated from transifex 2018-11-04 01:21:08 +00:00
Nextcloud bot
68976883cc [tx-robot] updated from transifex 2018-11-02 01:20:30 +00:00
Julius Härtl
d7bc382331 Merge pull request #667 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.23.1
Bump webpack from 4.22.0 to 4.23.1 in /js
2018-10-29 12:40:19 +01:00
Julius Härtl
b38ef8fab0 Merge pull request #666 from nextcloud/dependabot/npm_and_yarn/js/karma-3.1.1
Bump karma from 3.1.0 to 3.1.1 in /js
2018-10-29 12:40:10 +01:00
dependabot[bot]
bdca96c460 Bump webpack from 4.22.0 to 4.23.1 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.22.0 to 4.23.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.22.0...v4.23.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-29 01:16:17 +00:00
dependabot[bot]
8dd2d88ff2 Bump karma from 3.1.0 to 3.1.1 in /js
Bumps [karma](https://github.com/karma-runner/karma) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v3.1.0...v3.1.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-29 01:15:31 +00:00
Nextcloud bot
280d97c40c [tx-robot] updated from transifex 2018-10-27 00:19:07 +00:00
Nextcloud bot
771e8e7db3 [tx-robot] updated from transifex 2018-10-26 00:19:28 +00:00
Julius Härtl
ef4235bbdc Merge pull request #651 from nextcloud/bugfix/csp
Fix webpack build with new CSP on 15
2018-10-25 16:05:31 +02:00
Julius Härtl
513147c18a Merge pull request #643 from nextcloud/bugfix/noid/style-accessibility
General styling and accessibility fixes
2018-10-25 14:44:04 +02:00
Julius Härtl
65c263c7d8 Merge pull request #656 from cloud2018/consistent-pop-up
consistent-pop-up
2018-10-25 14:20:46 +02:00
Julius Härtl
32726af9c6 Fix icon inversion
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-25 14:17:10 +02:00
Julius Härtl
b72dca6536 General styling and accessibility fixes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-25 14:00:07 +02:00
Julius Härtl
0a52cdfe6b Fix webpack build with new CSP on 15
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-25 13:38:00 +02:00
Nextcloud bot
bdace3159f [tx-robot] updated from transifex 2018-10-24 00:19:17 +00:00
Julius Härtl
cd69c2fd71 Merge pull request #641 from nextcloud/design/noid/simplify
General design improvements
2018-10-23 09:29:49 +02:00
Julius Härtl
658ab485aa Merge pull request #658 from nextcloud/dependabot/npm_and_yarn/js/node-sass-4.9.4
Bump node-sass from 4.9.3 to 4.9.4 in /js
2018-10-23 09:29:11 +02:00
Julius Härtl
0632551c65 Merge pull request #661 from nextcloud/dependabot/npm_and_yarn/js/karma-3.1.0
Bump karma from 3.0.0 to 3.1.0 in /js
2018-10-23 09:28:12 +02:00
Nextcloud bot
5b385822dc [tx-robot] updated from transifex 2018-10-23 00:13:03 +00:00
dependabot[bot]
5aefdd2302 Bump node-sass from 4.9.3 to 4.9.4 in /js
Bumps [node-sass](https://github.com/sass/node-sass) from 4.9.3 to 4.9.4.
- [Release notes](https://github.com/sass/node-sass/releases)
- [Changelog](https://github.com/sass/node-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/node-sass/compare/v4.9.3...v4.9.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-22 21:14:53 +00:00
dependabot[bot]
b691b1a382 Bump karma from 3.0.0 to 3.1.0 in /js
Bumps [karma](https://github.com/karma-runner/karma) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v3.0.0...v3.1.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-22 20:51:44 +00:00
Julius Härtl
d029067849 Merge pull request #657 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.22.0
Bump webpack from 4.20.2 to 4.22.0 in /js
2018-10-22 20:27:35 +02:00
Nextcloud bot
162c47ef60 [tx-robot] updated from transifex 2018-10-22 00:13:05 +00:00
dependabot[bot]
8b626251c1 Bump webpack from 4.20.2 to 4.22.0 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.20.2 to 4.22.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.20.2...v4.22.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-21 11:35:34 +00:00
Nextcloud bot
6aee11ef6f [tx-robot] updated from transifex 2018-10-21 00:13:25 +00:00
Nextcloud bot
1c9774a659 [tx-robot] updated from transifex 2018-10-20 00:12:53 +00:00
cloud2018
f3f75fb1d4 consistent-pop-up
fixes #429 
add delete icon to left pop-ups more (3 dots)
change some blanks to tabs
Signed-off-by: Markus Eckstein <eckstein-markus@gmx.de>
2018-10-19 21:02:59 +02:00
Nextcloud bot
b320ef8818 [tx-robot] updated from transifex 2018-10-19 00:12:52 +00:00
Julius Härtl
33a2c5e403 Merge branch 'master' into design/noid/simplify 2018-10-18 16:27:15 +02:00
Nextcloud bot
dc4245ca11 [tx-robot] updated from transifex 2018-10-18 00:12:42 +00:00
Julius Härtl
4b4f597d3e Merge pull request #653 from nextcloud/bugfix/649
Fix comment mention subject
2018-10-17 11:39:34 +02:00
rakekniven
2a3b4a8e3b Update NotifierTest.php
Fixed tests
2018-10-17 10:57:29 +02:00
Nextcloud bot
8f6e8d9004 [tx-robot] updated from transifex 2018-10-17 00:12:37 +00:00
Julius Härtl
0a4a58cddc Fix comment mention subject
fixes #649

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-16 10:16:30 +02:00
Julius Härtl
c025d1b5fd Add tooltip to sidebar sections
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-16 10:14:06 +02:00
Julius Härtl
5cc65cac6e Remove author since it is availiable in the activity stream (fixes #647)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-16 10:14:06 +02:00
Julius Härtl
e9a320e528 New sidebar layout
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-16 10:14:06 +02:00
Julius Härtl
7500a179c0 Make sidebar a bit cleaner
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-16 10:14:06 +02:00
Nextcloud bot
8bf3aed9a7 [tx-robot] updated from transifex 2018-10-16 00:12:31 +00:00
Julius Härtl
612a65d2e6 Merge pull request #650 from nextcloud/dependabot/npm_and_yarn/js/mini-css-extract-plugin-0.4.4
Bump mini-css-extract-plugin from 0.4.3 to 0.4.4 in /js
2018-10-15 08:56:27 +02:00
dependabot[bot]
0cb3c9c1f8 Bump mini-css-extract-plugin from 0.4.3 to 0.4.4 in /js
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 0.4.3 to 0.4.4.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v0.4.3...v0.4.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-15 01:15:53 +00:00
Nextcloud bot
61c9a76c73 [tx-robot] updated from transifex 2018-10-15 00:12:49 +00:00
Nextcloud bot
93d0f9b3b8 [tx-robot] updated from transifex 2018-10-14 00:12:34 +00:00
Nextcloud bot
4e59d386dc [tx-robot] updated from transifex 2018-10-13 00:12:18 +00:00
Nextcloud bot
118fc0b0cc [tx-robot] updated from transifex 2018-10-12 00:12:19 +00:00
Nextcloud bot
4f39b76573 [tx-robot] updated from transifex 2018-10-11 00:11:52 +00:00
Nextcloud bot
80ba6314ee [tx-robot] updated from transifex 2018-10-10 00:19:55 +00:00
Julius Härtl
6f1a0b0aef Merge pull request #638 from nextcloud/release/0.5.0-beta1
v0.5.0-beta1
2018-10-09 21:30:04 +02:00
Julius Härtl
3255b8c4c6 Update description in appinfo
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 20:51:28 +02:00
Julius Härtl
4bd7f4fd39 Fix adding comment when no activity entry is present
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 20:38:08 +02:00
Julius Härtl
8e3fa71a2d Fix comment entity registration
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 19:18:44 +02:00
Julius Härtl
8b161927da Adapt tests for stable branch
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 19:02:55 +02:00
Julius Härtl
b0eee23ef2 Add changelog and set proper max-version
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 19:02:54 +02:00
Julius Härtl
09dc403b0e Bump version to v0.5.0-beta1
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 19:02:54 +02:00
Julius Härtl
6754cfe73b Merge pull request #639 from nextcloud/bugfix/noid/comment-compatibility
Bugfix/noid/comment compatibility
2018-10-09 19:01:17 +02:00
Julius Härtl
59e8d9b4cf Add annotation for global variables
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 18:52:52 +02:00
Julius Härtl
d11d033360 Update README.md 2018-10-09 18:13:51 +02:00
Julius Härtl
8cad06f702 Update README.md 2018-10-09 18:06:15 +02:00
Julius Härtl
f0118c0848 Unify deleted entry tabs
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 17:50:24 +02:00
Julius Härtl
33dbbd0d62 Fix loading if no comments are available
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 17:41:41 +02:00
Julius Härtl
72fd0fcc9b Fix 13 compatibility issues
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 17:41:09 +02:00
Julius Härtl
43b5571315 Fix loading of comments type
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 17:40:35 +02:00
Julius Härtl
29756e1e8c Make timeline tab only available if comments/activity apps are enabled
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 17:15:38 +02:00
Julius Härtl
1d777550ed Merge pull request #632 from nextcloud/feature/10/comments
Comments support
2018-10-09 16:44:19 +02:00
Julius Härtl
4779d3ae0c Tests: Comment actrivity parsing
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 14:52:55 +02:00
Julius Härtl
68880fc4be Add test for mention notifications
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 14:47:18 +02:00
Julius Härtl
da0cfdb1dc Add unit tests for comment handling
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:29 +02:00
Julius Härtl
5edb95fc6b Fix codacy issues
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:29 +02:00
Julius Härtl
27f9707058 Allow submit of comments using shift+enter
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:29 +02:00
Julius Härtl
cb3c083d8b Fix user id in mention notification
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:29 +02:00
Julius Härtl
3a36f7da2f Fix racecondition during loading of comments
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:29 +02:00
Julius Härtl
3e8451e1e1 Fix unread comment count
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:28 +02:00
Julius Härtl
5f8c46b146 Fix issue when switching between cards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:28 +02:00
Julius Härtl
9363f8667c Add UI feedback for comment deletion
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:28 +02:00
Julius Härtl
dcc3601bd7 Implement editing comments
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:28 +02:00
Julius Härtl
46720dc37b Fix jslint errors
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:28 +02:00
Julius Härtl
691c72d717 Use board users for @-mentioning
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:28 +02:00
Julius Härtl
f66f4e0be0 Send notification on user mention
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:27 +02:00
Julius Härtl
93c3c542e8 Fix styling and proper template rendering
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:27 +02:00
Julius Härtl
97b7bca255 Fix eslint errors
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:27 +02:00
Julius Härtl
e0ac86ac1f Inject user manager
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:27 +02:00
Julius Härtl
310af37d67 Implement user mentioning in frontend
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:27 +02:00
Julius Härtl
e29efe8935 Fix tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:27 +02:00
Julius Härtl
63a34e7018 Properly inject ICommentsManager
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:26 +02:00
Julius Härtl
ddeefd5bf3 Move contenteditable directive to separate file
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:26 +02:00
Julius Härtl
630a5badf8 Sidebar design improvements
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:26 +02:00
Julius Härtl
f5520d3087 Implement comment deletion and loading indicator
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:26 +02:00
Julius Härtl
e547a5d2b9 Add comment action menu
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:26 +02:00
Julius Härtl
ffd32a803f Enhance activity list with comment data
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:26 +02:00
Julius Härtl
63337c1d26 Add comment event handler for activities
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:25 +02:00
Julius Härtl
2e824f0c80 Add backbone comment classes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:25 +02:00
Julius Härtl
339bc34f9b Add basic comments frontend
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:25 +02:00
Julius Härtl
41db5d0024 Load comments entity for app
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:25 +02:00
Julius Härtl
d3027acd37 Add backend support for comments
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 13:08:25 +02:00
Julius Härtl
10c09927e2 Merge pull request #630 from nextcloud/dependabot/npm_and_yarn/js/babel-loader-8.0.4
Bump babel-loader from 7.1.5 to 8.0.4 in /js
2018-10-09 13:07:19 +02:00
Julius Härtl
014e7e4cbe Merge pull request #611 from nextcloud/bug/589/empty-titles
Don't allow empty card titles
2018-10-09 12:22:50 +02:00
Julius Härtl
884de2b4f2 Merge pull request #609 from nextcloud/feature/195/print-css
Printing CSS styles
2018-10-09 12:21:40 +02:00
Julius Härtl
a5a836450e Bump babel to 7.x.x
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 11:55:00 +02:00
Julius Härtl
da2e3add9d Adjust print css
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 11:43:20 +02:00
Dubidubiduu
e9a505f273 add import print.scss
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 11:34:08 +02:00
Dubidubiduu
8ec4a8e2bb add print file
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-10-09 11:34:08 +02:00
Michael Weimann
a02bd5ab52 Implements a validation for empty titles input in the card directly
Signed-off-by: Michael Weimann <mail@michael-weimann.eu>
2018-10-09 11:28:19 +02:00
Michael Weimann
df43e07057 Implements a validation for empty titles input at the side bar
Signed-off-by: Michael Weimann <mail@michael-weimann.eu>
2018-10-09 11:28:19 +02:00
Michael Weimann
d17cd78605 Implements validation when adding new cards
Signed-off-by: Michael Weimann <mail@michael-weimann.eu>
2018-10-09 11:28:16 +02:00
dependabot[bot]
fe6caf094b Bump babel-loader from 7.1.5 to 8.0.4 in /js
Bumps [babel-loader](https://github.com/babel/babel-loader) from 7.1.5 to 8.0.4.
- [Release notes](https://github.com/babel/babel-loader/releases)
- [Changelog](https://github.com/babel/babel-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel-loader/compare/v7.1.5...v8.0.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-08 12:04:47 +00:00
Julius Härtl
84969180e2 Merge pull request #635 from nextcloud/dependabot/npm_and_yarn/js/angular-1.7.5
Bump angular from 1.7.4 to 1.7.5 in /js
2018-10-08 14:03:06 +02:00
dependabot[bot]
7008745395 Bump angular from 1.7.4 to 1.7.5 in /js
Bumps [angular](https://github.com/angular/angular.js) from 1.7.4 to 1.7.5.
- [Release notes](https://github.com/angular/angular.js/releases)
- [Changelog](https://github.com/angular/angular.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular.js/compare/v1.7.4...v1.7.5)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-08 09:14:47 +00:00
Julius Härtl
34d5f05821 Merge pull request #636 from nextcloud/dependabot/npm_and_yarn/js/angular-animate-1.7.5
Bump angular-animate from 1.7.4 to 1.7.5 in /js
2018-10-08 11:12:36 +02:00
Julius Härtl
b96038c049 Merge pull request #637 from nextcloud/dependabot/npm_and_yarn/js/angular-sanitize-1.7.5
Bump angular-sanitize from 1.7.4 to 1.7.5 in /js
2018-10-08 11:12:20 +02:00
dependabot[bot]
0d21df347b Bump angular-sanitize from 1.7.4 to 1.7.5 in /js
Bumps [angular-sanitize](https://github.com/angular/angular.js) from 1.7.4 to 1.7.5.
- [Release notes](https://github.com/angular/angular.js/releases)
- [Changelog](https://github.com/angular/angular.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular.js/compare/v1.7.4...v1.7.5)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-08 01:16:25 +00:00
dependabot[bot]
f865149d35 Bump angular-animate from 1.7.4 to 1.7.5 in /js
Bumps [angular-animate](https://github.com/angular/angular.js) from 1.7.4 to 1.7.5.
- [Release notes](https://github.com/angular/angular.js/releases)
- [Changelog](https://github.com/angular/angular.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular.js/compare/v1.7.4...v1.7.5)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-08 01:15:59 +00:00
Nextcloud bot
5898428fb9 [tx-robot] updated from transifex 2018-10-05 00:19:46 +00:00
Julius Härtl
792b05dfdf Merge pull request #628 from nextcloud/dependabot/npm_and_yarn/js/webpack-cli-3.1.2
Bump webpack-cli from 3.1.0 to 3.1.2 in /js
2018-10-01 14:19:29 +02:00
Julius Härtl
08b6274131 Merge pull request #613 from nextcloud/dependabot/npm_and_yarn/js/angular-1.7.4
Bump angular from 1.7.3 to 1.7.4 in /js
2018-10-01 14:18:52 +02:00
dependabot[bot]
d8db1c9019 Bump webpack-cli from 3.1.0 to 3.1.2 in /js
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 3.1.0 to 3.1.2.
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-cli/commits/v3.1.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-01 11:58:30 +00:00
dependabot[bot]
f089c552e0 Bump angular from 1.7.3 to 1.7.4 in /js
Bumps [angular](https://github.com/angular/angular.js) from 1.7.3 to 1.7.4.
- [Release notes](https://github.com/angular/angular.js/releases)
- [Changelog](https://github.com/angular/angular.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular.js/compare/v1.7.3...v1.7.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-01 11:57:42 +00:00
Julius Härtl
61978088fc Merge pull request #626 from nextcloud/dependabot/npm_and_yarn/js/mini-css-extract-plugin-0.4.3
Bump mini-css-extract-plugin from 0.4.2 to 0.4.3 in /js
2018-10-01 13:56:19 +02:00
Julius Härtl
a9d7095354 Merge pull request #616 from nextcloud/dependabot/npm_and_yarn/js/angular-sanitize-1.7.4
Bump angular-sanitize from 1.7.3 to 1.7.4 in /js
2018-10-01 13:56:09 +02:00
Julius Härtl
353fd792a4 Merge pull request #615 from nextcloud/dependabot/npm_and_yarn/js/angular-animate-1.7.4
Bump angular-animate from 1.7.3 to 1.7.4 in /js
2018-10-01 13:55:47 +02:00
dependabot[bot]
e7d535e0c0 Bump mini-css-extract-plugin from 0.4.2 to 0.4.3 in /js
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 0.4.2 to 0.4.3.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v0.4.2...v0.4.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-01 10:43:19 +00:00
dependabot[bot]
dc756991ae Bump angular-sanitize from 1.7.3 to 1.7.4 in /js
Bumps [angular-sanitize](https://github.com/angular/angular.js) from 1.7.3 to 1.7.4.
- [Release notes](https://github.com/angular/angular.js/releases)
- [Changelog](https://github.com/angular/angular.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular.js/compare/v1.7.3...v1.7.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-01 10:40:59 +00:00
dependabot[bot]
7529cfb892 Bump angular-animate from 1.7.3 to 1.7.4 in /js
Bumps [angular-animate](https://github.com/angular/angular.js) from 1.7.3 to 1.7.4.
- [Release notes](https://github.com/angular/angular.js/releases)
- [Changelog](https://github.com/angular/angular.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular.js/compare/v1.7.3...v1.7.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-01 10:28:46 +00:00
Julius Härtl
08485b0381 Merge pull request #623 from nextcloud/dependabot/composer/christophwurst/nextcloud-tw-14.0
Update christophwurst/nextcloud requirement from ^13.0 to ^14.0
2018-10-01 12:22:17 +02:00
Julius Härtl
1283c41283 Merge pull request #629 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.20.2
Bump webpack from 4.17.1 to 4.20.2 in /js
2018-10-01 12:21:49 +02:00
dependabot[bot]
774809a3a8 Bump webpack from 4.17.1 to 4.20.2 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.17.1 to 4.20.2.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.17.1...v4.20.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-09-30 08:31:22 +00:00
Nextcloud bot
5a0227a339 [tx-robot] updated from transifex 2018-09-29 00:17:55 +00:00
Nextcloud bot
3cb0e8fc2d [tx-robot] updated from transifex 2018-09-28 00:13:12 +00:00
Nextcloud bot
7026c2ca88 [tx-robot] updated from transifex 2018-09-26 00:18:56 +00:00
Nextcloud bot
ed5d57d474 [tx-robot] updated from transifex 2018-09-25 00:19:35 +00:00
dependabot[bot]
61ead7dc66 Update christophwurst/nextcloud requirement from ^13.0 to ^14.0
Updates the requirements on [christophwurst/nextcloud](https://github.com/ChristophWurst/nextcloud_composer) to permit the latest version.
- [Release notes](https://github.com/ChristophWurst/nextcloud_composer/releases)
- [Commits](https://github.com/ChristophWurst/nextcloud_composer/commits/14.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-09-24 01:12:38 +00:00
Nextcloud bot
1bb185c8f0 [tx-robot] updated from transifex 2018-09-24 00:19:07 +00:00
Nextcloud bot
0ea5a5b7d6 [tx-robot] updated from transifex 2018-09-23 00:19:40 +00:00
Nextcloud bot
9f8533b96c [tx-robot] updated from transifex 2018-09-22 00:19:14 +00:00
Nextcloud bot
4fd8add19c [tx-robot] updated from transifex 2018-09-21 00:19:44 +00:00
Nextcloud bot
cf8926952a [tx-robot] updated from transifex 2018-09-20 00:19:49 +00:00
Nextcloud bot
47fe8913c4 [tx-robot] updated from transifex 2018-09-18 00:19:08 +00:00
Nextcloud bot
bdd07ec31e [tx-robot] updated from transifex 2018-09-17 00:19:41 +00:00
Nextcloud bot
4fbbb6aa79 [tx-robot] updated from transifex 2018-09-16 00:19:36 +00:00
Nextcloud bot
57193181d1 [tx-robot] updated from transifex 2018-09-15 00:18:54 +00:00
Nextcloud bot
cbbeb394c1 [tx-robot] updated from transifex 2018-09-14 00:19:36 +00:00
Nextcloud bot
1174b8f7ca [tx-robot] updated from transifex 2018-09-13 00:19:12 +00:00
Nextcloud bot
cca9390555 [tx-robot] updated from transifex 2018-09-12 00:18:47 +00:00
Nextcloud bot
b9531ce684 [tx-robot] updated from transifex 2018-09-09 00:20:35 +00:00
Nextcloud bot
e0decdf55e [tx-robot] updated from transifex 2018-09-08 00:19:34 +00:00
Julius Härtl
f5691e6d7f Merge pull request #607 from nextcloud/feature/211/activity
Activity integration
2018-09-07 16:18:39 +02:00
Julius Härtl
b979e37ad6 Fix deps in Makefile
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-07 16:12:23 +02:00
Julius Härtl
41f254af74 Run composer on build
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-07 15:36:14 +02:00
Julius Härtl
d95a8e8975 Do not run apply after $http promise resolve
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-07 15:21:53 +02:00
Julius Härtl
28f58ee5f3 Fix activity rendering in the sidebar
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-07 15:04:42 +02:00
Julius Härtl
df4f8dda60 Frontend code cleanup
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-07 13:18:59 +02:00
Julius Härtl
4441075f49 Add tests for param parsing
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-07 12:53:58 +02:00
Julius Härtl
56f9b5b6e6 Code cleanup
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-07 08:51:52 +02:00
Julius Härtl
f686b1e75b Activity: trigger activity on board share/unshare
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 21:09:21 +02:00
Julius Härtl
7e88d246c0 Tests: Add tests for ActivityManager
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 20:01:26 +02:00
Julius Härtl
80aadb2717 Tests: More coverage for DeckProvider->parse()
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 15:05:35 +02:00
Julius Härtl
0cc4fffd08 Add tests for activity classes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 13:19:54 +02:00
Julius Härtl
4ba47045b2 Run composer on travis as well
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:14:57 +02:00
Julius Härtl
a6dceb2e64 Fix eslint errors
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:05:03 +02:00
Julius Härtl
eea5803ae5 Fix existing service tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:05:03 +02:00
Julius Härtl
e06a5ad44f Use proper trigger methods for activities
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:05:03 +02:00
Julius Härtl
f8f36dac09 Run composer install before on drone tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:05:03 +02:00
Julius Härtl
4c300bf432 Adjust tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:05:02 +02:00
Julius Härtl
2d545aafa5 Fix service update methods
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:05:02 +02:00
Julius Härtl
8d384c7c5c Fix some styling issues
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:05:02 +02:00
Julius Härtl
790ea6ff63 Fix info.xml order
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:05:02 +02:00
Julius Härtl
bc15b48ea2 Properly fetch activities for board and fix refresh of lists
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:05:02 +02:00
Julius Härtl
3319f9c3b3 Add activity list to sidebars
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:05:02 +02:00
Julius Härtl
18f92f7b54 Implement remaining activity types
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:05:01 +02:00
Julius Härtl
b5cf3709c2 Emit activity events in StackService
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:05:01 +02:00
Julius Härtl
df8c1984ca Emit activity events in CardService
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:05:01 +02:00
Julius Härtl
c32ab5648c Emit activity events in BoardService
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:05:01 +02:00
Julius Härtl
6a5b4fe40c WIP: Activity integration
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 10:05:01 +02:00
Julius Härtl
0ee0a5840b Merge pull request #608 from nextcloud/tests/stable14
Adjust tests for stable14 / 15 on master
2018-09-06 10:04:26 +02:00
Julius Härtl
6f883d1417 Set max-version to 15 for development
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 09:57:43 +02:00
Julius Härtl
8e974111ba Add app compatibility check for 14
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-09-06 09:57:22 +02:00
Nextcloud bot
45ee875646 [tx-robot] updated from transifex 2018-09-06 00:19:57 +00:00
Nextcloud bot
1877340cd3 [tx-robot] updated from transifex 2018-09-01 00:18:36 +00:00
Nextcloud bot
bcebec10bc [tx-robot] updated from transifex 2018-08-31 00:18:30 +00:00
Nextcloud bot
dfbe15319c [tx-robot] updated from transifex 2018-08-30 00:18:08 +00:00
Julius Härtl
33764f645b Merge pull request #602 from nextcloud/feature/587/compact-mode
Adds the compact mode
2018-08-29 17:47:35 +02:00
Michael Weimann
b20ea4dea1 Stores the compact mode state in the local storage
Signed-off-by: Michael Weimann <mail@michael-weimann.eu>
2018-08-29 17:34:42 +02:00
Michael Weimann
e53c623759 Implements the compact toggle
Signed-off-by: Michael Weimann <mail@michael-weimann.eu>
2018-08-29 16:04:59 +02:00
Nextcloud bot
2c12a99020 [tx-robot] updated from transifex 2018-08-28 00:19:16 +00:00
Julius Härtl
a4105d22dc Merge pull request #600 from nextcloud/dependabot/npm_and_yarn/js/mini-css-extract-plugin-0.4.2
Bump mini-css-extract-plugin from 0.4.1 to 0.4.2 in /js
2018-08-27 15:23:49 +02:00
dependabot[bot]
c7a058e575 Bump mini-css-extract-plugin from 0.4.1 to 0.4.2 in /js
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 0.4.1 to 0.4.2.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v0.4.1...v0.4.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-27 12:18:48 +00:00
Julius Härtl
b603c31398 Merge pull request #599 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.17.1
Bump webpack from 4.16.5 to 4.17.1 in /js
2018-08-27 14:16:41 +02:00
dependabot[bot]
f650e52f6a Bump webpack from 4.16.5 to 4.17.1 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.16.5 to 4.17.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.16.5...v4.17.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-27 01:16:16 +00:00
Nextcloud bot
07ea4a1b4f [tx-robot] updated from transifex 2018-08-27 00:18:42 +00:00
Julius Härtl
a5ae5b3e26 Merge pull request #596 from willianveiga/feature/due-date-input-use-local-date-format
Due date input uses user's local date format
2018-08-26 16:19:46 +02:00
Julius Härtl
adf9e057b4 Merge pull request #597 from nextcloud/acc_workshop
Fix some small accessibility issues
2018-08-26 16:12:50 +02:00
Tobia De Koninck
c432f89424 Fix some small accessibility issues
Signed-off-by: Tobia De Koninck <LEDfan@users.noreply.github.com>
2018-08-26 12:00:14 +02:00
Nextcloud bot
410654b766 [tx-robot] updated from transifex 2018-08-26 00:19:15 +00:00
Willian Gustavo Veiga
9e49064847 Use tabs instead of spaces
Signed-off-by: Willian Gustavo Veiga <beberveiga@gmail.com>
2018-08-25 12:36:23 -03:00
Willian Gustavo Veiga
f8239f4e8a Due date input uses user's local date format
Signed-off-by: Willian Gustavo Veiga <beberveiga@gmail.com>
2018-08-25 11:57:56 -03:00
Nextcloud bot
b3b16f8fbd [tx-robot] updated from transifex 2018-08-25 00:18:54 +00:00
Julius Härtl
939f5fa621 Merge pull request #592 from nextcloud/251-card-title-inline
editable inline card titles
2018-08-24 15:57:25 +02:00
Ryan Fletcher
d17d0ec16f removing whitespaces
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-24 14:56:37 +02:00
Julius Härtl
f1ebe01e5e Fix inline input sizing for card title edit
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-24 14:56:37 +02:00
Ryan Fletcher
1949dae8d4 attempt at solving css "jumps" on inline edits.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-24 14:56:37 +02:00
Ryan Fletcher
7c6d36fde1 Added class input-inline
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-24 14:56:36 +02:00
Ryan Fletcher
5fd8ff003b editable inline card titles
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-24 14:56:36 +02:00
Julius Härtl
abb5290baa Merge pull request #593 from nextcloud/250-emptycontent-views
#250-emptycontent-views
2018-08-23 13:47:14 +02:00
Ryan Fletcher
fd7dd9c3b4 cleaning up whitespace / unused css style.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-23 07:10:17 -04:00
Nextcloud bot
4a4c787de2 [tx-robot] updated from transifex 2018-08-22 00:18:37 +00:00
Ryan Fletcher
6fb4525754 sending strings through translation code.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-21 17:25:09 -04:00
Ryan Fletcher
001609982d adjusting solution based on standards shown to me by jancborchardt
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-21 17:11:47 -04:00
Ryan Fletcher
9353e4852c Added empty message to board list when there are no boards present.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-21 14:35:03 -04:00
Nextcloud bot
eb29baef4b [tx-robot] updated from transifex 2018-08-21 00:18:50 +00:00
Nextcloud bot
031d20199e [tx-robot] updated from transifex 2018-08-18 00:19:12 +00:00
Nextcloud bot
adf0b7b68b [tx-robot] updated from transifex 2018-08-17 00:18:31 +00:00
Nextcloud bot
7296302af2 [tx-robot] updated from transifex 2018-08-16 00:18:57 +00:00
Julius Härtl
f040df785d Merge pull request #535 from nextcloud/feature/83/json-api
REST API
2018-08-15 21:21:25 +02:00
Julius Härtl
5639bd1274 Fix controller deleted at parameter
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:23 +02:00
Julius Härtl
babfcbddd8 Fix imports
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:23 +02:00
Julius Härtl
0c9b1f5338 Mapper can be null if provided id is a board id
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:23 +02:00
Julius Härtl
81d333243d Fix comparison
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:23 +02:00
Julius Härtl
47a7e76a4d Catch DoesNotExistException to return proper API repsonses
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:23 +02:00
Ryan Fletcher
4391bf4eb8 added missing BadRequestException checks to StackService.php
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:22 +02:00
Ryan Fletcher
aba7d02cfe Added BadRequestException checks in DefaultBoardService. Fixed bug in DefaultBoardService BadRequestException checks.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:22 +02:00
Ryan Fletcher
6f5c0a2816 Added in BadRequestException checks in CardService.php
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:22 +02:00
Ryan Fletcher
e8571454d9 Added BadRequestException checks into BoardService.php
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:22 +02:00
Ryan Fletcher
7930fec5d7 Added in BadRequestException tests into AttachmentService.php
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:22 +02:00
Ryan Fletcher
37a2858d5f wrote attachment api controller, fixed bug caught by unit test in CardService
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:22 +02:00
Ryan Fletcher
e88c9a760d Wrote unit tests for AttachmentApiController and stubbed out AttachmentApicontroller. Trying out test driven development.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:21 +02:00
Ryan Fletcher
172a80fa5d Added additional endpoints for cards / stacks
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:21 +02:00
Ryan Fletcher
3e965d0cfb Implemented additional CardApiController endpoints
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:21 +02:00
Ryan Fletcher
72aeb723a5 fixed up missing checks from labelService, BadRequestException is now extending StatusException
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:21 +02:00
Ryan Fletcher
507a7fd243 Code cleanup, removing unused code from older iteration.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:21 +02:00
Ryan Fletcher
184cd00a8b Wrote initial unit tests for LabelApiControllerTest.php
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:21 +02:00
Ryan Fletcher
9c81584b02 Wrote tests for CardApiControllerTest.php
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:20 +02:00
Ryan Fletcher
5bc8a363b9 Split Card Update in CardApiController as it was gigantic and broke codacy complexity rules by a lot. Also moved validation checks into respective services.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:20 +02:00
Ryan Fletcher
f1169b9c7e finished writing StackApiControllerTest.php
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:20 +02:00
Ryan Fletcher
f2268c7f58 Moved Data Response checks into stack serivice, cleaned up related unit tests.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:20 +02:00
Ryan Fletcher
d33dd3e0fc Moved BadRequestException checks to middleware, removed uneeded unit tests in BoardApiController
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:20 +02:00
Ryan Fletcher
8cac183af6 simple code style changes according to codacy standards.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:20 +02:00
Ryan Fletcher
570ac81848 added the create tests in StackApiControllerTest
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:19 +02:00
Ryan Fletcher
5719e9f134 Wrote unit tests against StackApiController -> get()
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:19 +02:00
Ryan Fletcher
891fa7b7d5 Created index tests for StackApiTestController
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:19 +02:00
Ryan Fletcher
54f110f7c6 first attempt at BoardApiControllerTest->testGetNoPermission()
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:19 +02:00
Julius Härtl
dcfb9f3903 Properly annotate exceptions thrown by services
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:19 +02:00
Julius Härtl
2482dc963a Fix BoardServiceTest
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:18 +02:00
Ryan Fletcher
6d57b1081a BoardApiControllerTest wrote delete tests
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:18 +02:00
Ryan Fletcher
8dd732631a BoardApiController wrote update tests
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:18 +02:00
Ryan Fletcher
1fe70568cb Wrote unit tests for the BoardApiController -> create tests
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:18 +02:00
Ryan Fletcher
bd254fd261 BoardApiControllerTest wrote get() tests.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:18 +02:00
Ryan Fletcher
fad579c4d3 Wrote first unit test for BoardApiController
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:18 +02:00
Ryan Fletcher
e8c53d71aa fixed more unit tests.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:17 +02:00
Ryan Fletcher
e0049cf07b Resolved unit tests errors, down from 36 to 9.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:17 +02:00
Ryan Fletcher
881b05aeb1 fixed BoardControllerTest from errors
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:17 +02:00
Ryan Fletcher
cfd9ab98c6 Implemented StackApiController Get Function.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:17 +02:00
Ryan Fletcher
dd1d4246fe Finished Error handling across the API
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:17 +02:00
Ryan Fletcher
2668f6b80c committing WIP (improving error validation across the api's)
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:17 +02:00
Ryan Fletcher
a388d199dc Refactored error handling in StackApiController and moved it into ApiHelper.php, this will allow me to use the same checks in all controllers.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:16 +02:00
Ryan Fletcher
d9f3d492dc Better variable name for stackService in StackApiController
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:16 +02:00
Ryan Fletcher
a14ca3d1f5 Better error handling in StackApiController
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:16 +02:00
Ryan Fletcher
7d9fc83dc9 Code style fixings.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:16 +02:00
Ryan Fletcher
f97c7c3f7b Added in Create + Delete functions to the LabelApiController
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:16 +02:00
Ryan Fletcher
6002067b64 Created LabelApiController and it's get / update methods.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:16 +02:00
Ryan Fletcher
7e4d24236a Updated the CardApiController->update method to allow updating of archive state and assigned user,.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:15 +02:00
Ryan Fletcher
b82591a0bc Added delete operation to CardApiController
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:15 +02:00
Ryan Fletcher
e5f7f89ed9 Wrote update method for CardApiController
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:15 +02:00
Ryan Fletcher
a68e888654 Started CardApiController
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:15 +02:00
Ryan Fletcher
0c0910ee81 Co authored for my changes.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:15 +02:00
Ryan Fletcher
ced87edfa5 Put in validation responses in BoardApiController
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:15 +02:00
Ryan Fletcher
5415ec21dc Validation Checking against StackApiController
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:14 +02:00
Ryan Fletcher
3cb496daa2 Cleaned up StackApiController to use proper route parameters, removed route parameters from request payloads as per rest standards.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:14 +02:00
Ryan Fletcher
03e0559afe StackApiController->delete($boardId, $id) added in error handling
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:14 +02:00
Ryan Fletcher
be91ff641c StackApiController added the update put route.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:14 +02:00
Ryan Fletcher
cec06493c0 Error handling for StackApiController->Index()
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:14 +02:00
Ryan Fletcher
0da84a3e8c Corrected comment in BoardApiController from copy / paste.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:14 +02:00
Ryan Fletcher
6822d7d099 Error handling in undelete function and created the update function in BoardApiController
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:13 +02:00
Ryan Fletcher
d82746be97 Error handling for undoDelete and created an update method in BoardApiController
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:13 +02:00
Ryan Fletcher
3b49c7f262 Added exception handling to BoardApiController -> Delete
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:13 +02:00
Ryan Fletcher
9bc9569a0d Added checks to see if the entity is not found in BoardApiController -> get($id)
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:13 +02:00
Ryan Fletcher
8771e35f11 Added exception handling to StackApiController->create()
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:13 +02:00
Ryan Fletcher
656e8efa43 quick test in StackApiController
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-08-15 21:15:13 +02:00
Julius Härtl
9fc01eb51f Move DI of IUserManager, IGroupManager, userId to the BoardService
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:12 +02:00
Steven R. Baker
e32adb17f2 Don't need to pass around the userInfo with it encapsulated in BoardService.
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:12 +02:00
Steven R. Baker
1ffa3211ba Extract getBoardPererequisites() so it can be re-used.
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:11 +02:00
Steven R. Baker
41cf623bb8 This should be 200 on deletion, so we can tell whether a deletion succeeds or not.
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:10 +02:00
Steven R. Baker
8ec97032b1 Re-format code according to the coding style.
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:08 +02:00
Steven R. Baker
40f34eb3bc Fix the routing and the stacks API endpoint.
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:07 +02:00
Steven R. Baker
a4b348488b Add Stack support to API.
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:05 +02:00
Steven R. Baker
8316a0b25f Board creation via API.
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:04 +02:00
Steven R. Baker
86dde2d6b8 These parens are not needed.
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:15:03 +02:00
Steven R. Baker
84a8db7b75 Change the API version to 1.0, and fix the preflighted_cors version.
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:14:59 +02:00
Steven R. Baker
975b6f3572 Update the documentation.
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 21:14:43 +02:00
Steven R. Baker
b4224dadfb Undo deletion of boards via API.
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 20:53:07 +02:00
Steven R. Baker
7dcd49c485 Delete boards via the API.
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 20:53:07 +02:00
Steven R. Baker
0c266d4a1f List boards, and fetch a specific board.
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 20:53:07 +02:00
Julius Härtl
a3a70f67b4 Merge pull request #557 from nextcloud/feature/undo-delete-cards-and-stacks
Feature/undo delete cards and stacks
2018-08-15 20:52:01 +02:00
Julius Härtl
43e76ecca3 Bump development version
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-08-15 20:46:58 +02:00
Manuel Arno Korfmann
241a654f28 codacy fix
Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>
2018-08-15 20:33:31 +02:00
Manuel Arno Korfmann
94e1b86eaf fixed bugs where labels would dissappear
Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>
2018-08-15 20:33:31 +02:00
Manuel Arno Korfmann
4d5353b8d4 renaming and more codacy
Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>
2018-08-15 20:33:31 +02:00
Manuel Arno Korfmann
5ddfb66633 Card,Stack undo delete: CardServiceTest fix
Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

Stack,Card undo delete: Test Fix 2

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

Card, Stack undo delete: Test fix 3

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

Card,Stack undo delete: Test fix 4

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

Stack, Card undo delete: Relative time in deleted entity listings

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

Card, Stack undo delete: Test Fix 5

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

Test Fix 6

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

Test Fix 7

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

fix codacy

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>
2018-08-15 20:33:31 +02:00
Manuel Arno Korfmann
41d30d4fd4 stack, card undo delete: refactoring
Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

stack undo delete: serve cards with deleted and delete actions

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

stack, cards undo delete: codacy

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

card undo delete: 526#discussion_r204501758, refactoring

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

card, stack undo delete: code review fixes #1

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

undo card, stack delete: show deleted stacks name in deleted card listing

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>
2018-08-15 20:33:31 +02:00
Manuel Arno Korfmann
95548fba54 Conditional restoration of deleted stacks on card undo delete
Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>
2018-08-15 20:33:30 +02:00
Manuel Arno Korfmann
ef4ce31c47 refactoring and stack undo delete early wip
Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

stack soft delete done

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

stack undo delete done

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

stack undo: code review remarks and fixes

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>
2018-08-15 20:33:30 +02:00
Manuel Arno Korfmann
f2795f120b show deleted cards in sidebar tab (styling still wip)
Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

card undo delete done, styling still wip

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

fix Codacy findings

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>
2018-08-15 20:33:30 +02:00
Manuel Arno Korfmann
2ef4b55af4 cards soft delete wip
Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

cards: softdelete done; undo delete wip

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

show deleted cards in board settings sidebar wip

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>

CardMapper#findDeleted: fix bug in entity property assigning

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>
2018-08-15 20:33:30 +02:00
Julius Härtl
3e4dedf397 Merge pull request #581 from nextcloud/dependabot/npm_and_yarn/js/angular-1.7.3
Bump angular from 1.7.2 to 1.7.3 in /js
2018-08-14 21:38:47 +02:00
dependabot[bot]
ebcb86ff3e Bump angular from 1.7.2 to 1.7.3 in /js
Bumps [angular](https://github.com/angular/angular.js) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/angular/angular.js/releases)
- [Changelog](https://github.com/angular/angular.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular.js/compare/v1.7.2...v1.7.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-14 19:32:43 +00:00
Julius Härtl
c0defcab9b Merge pull request #578 from nextcloud/dependabot/npm_and_yarn/js/angular-animate-1.7.3
Bump angular-animate from 1.7.2 to 1.7.3 in /js
2018-08-14 21:30:02 +02:00
Julius Härtl
25f6f16718 Merge pull request #580 from nextcloud/dependabot/npm_and_yarn/js/angular-sanitize-1.7.3
Bump angular-sanitize from 1.7.2 to 1.7.3 in /js
2018-08-14 21:29:50 +02:00
Julius Härtl
34767cdd13 Merge pull request #572 from nextcloud/dependabot/npm_and_yarn/js/webpack-merge-4.1.4
Bump webpack-merge from 4.1.3 to 4.1.4 in /js
2018-08-14 21:29:38 +02:00
Julius Härtl
9975d2b483 Merge pull request #583 from nextcloud/dependabot/npm_and_yarn/js/node-sass-4.9.3
Bump node-sass from 4.9.2 to 4.9.3 in /js
2018-08-14 21:29:28 +02:00
dependabot[bot]
3f77c99544 Bump angular-animate from 1.7.2 to 1.7.3 in /js
Bumps [angular-animate](https://github.com/angular/angular.js) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/angular/angular.js/releases)
- [Changelog](https://github.com/angular/angular.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular.js/compare/v1.7.2...v1.7.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-14 19:24:12 +00:00
dependabot[bot]
9eab136f53 Bump webpack-merge from 4.1.3 to 4.1.4 in /js
Bumps [webpack-merge](https://github.com/survivejs/webpack-merge) from 4.1.3 to 4.1.4.
- [Release notes](https://github.com/survivejs/webpack-merge/releases)
- [Changelog](https://github.com/survivejs/webpack-merge/blob/master/CHANGELOG.md)
- [Commits](https://github.com/survivejs/webpack-merge/compare/v4.1.3...v4.1.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-14 19:23:39 +00:00
dependabot[bot]
998d993102 Bump node-sass from 4.9.2 to 4.9.3 in /js
Bumps [node-sass](https://github.com/sass/node-sass) from 4.9.2 to 4.9.3.
- [Release notes](https://github.com/sass/node-sass/releases)
- [Changelog](https://github.com/sass/node-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/node-sass/compare/v4.9.2...v4.9.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-14 19:23:18 +00:00
dependabot[bot]
f27d399dfc Bump angular-sanitize from 1.7.2 to 1.7.3 in /js
Bumps [angular-sanitize](https://github.com/angular/angular.js) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/angular/angular.js/releases)
- [Changelog](https://github.com/angular/angular.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular.js/compare/v1.7.2...v1.7.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-14 19:23:13 +00:00
Julius Härtl
a117cc8e0c Merge pull request #579 from nextcloud/dependabot/npm_and_yarn/js/@uirouter/angularjs-1.0.20
Bump @uirouter/angularjs from 1.0.19 to 1.0.20 in /js
2018-08-14 21:21:26 +02:00
dependabot[bot]
2c59a4148d Bump @uirouter/angularjs from 1.0.19 to 1.0.20 in /js
Bumps [@uirouter/angularjs](https://github.com/angular-ui/ui-router) from 1.0.19 to 1.0.20.
- [Release notes](https://github.com/angular-ui/ui-router/releases)
- [Changelog](https://github.com/angular-ui/ui-router/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular-ui/ui-router/compare/1.0.19...1.0.20)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-14 18:44:36 +00:00
Julius Härtl
dc20ff52d8 Merge pull request #582 from nextcloud/dependabot/npm_and_yarn/js/karma-3.0.0
Bump karma from 2.0.5 to 3.0.0 in /js
2018-08-14 20:41:53 +02:00
dependabot[bot]
1764e6e0fe Bump karma from 2.0.5 to 3.0.0 in /js
Bumps [karma](https://github.com/karma-runner/karma) from 2.0.5 to 3.0.0.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v2.0.5...v3.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-13 11:09:23 +00:00
Julius Härtl
e65d2f2a85 Merge pull request #584 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.16.5
Bump webpack from 4.16.4 to 4.16.5 in /js
2018-08-13 12:39:59 +02:00
dependabot[bot]
2d26b24b10 Bump webpack from 4.16.4 to 4.16.5 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.16.4 to 4.16.5.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.16.4...v4.16.5)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-13 01:21:41 +00:00
Nextcloud bot
990a70e958 [tx-robot] updated from transifex 2018-08-13 00:18:56 +00:00
Nextcloud bot
2868391cf6 [tx-robot] updated from transifex 2018-08-12 00:18:53 +00:00
Julius Härtl
4050cddd12 Merge pull request #571 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.16.4
Bump webpack from 4.16.3 to 4.16.4 in /js
2018-08-09 17:13:45 +02:00
dependabot[bot]
92cee7b441 Bump webpack from 4.16.3 to 4.16.4 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.16.3 to 4.16.4.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.16.3...v4.16.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-06 01:16:08 +00:00
Nextcloud bot
8e0f6c6e83 [tx-robot] updated from transifex 2018-08-05 00:19:19 +00:00
Nextcloud bot
e7eb1dfbf0 [tx-robot] updated from transifex 2018-08-01 00:18:12 +00:00
Julius Härtl
f8a0b6c0c6 Update pull_request_template.md 2018-07-31 09:58:59 +02:00
Julius Härtl
9f7bef9447 Merge pull request #561 from nextcloud/551_show_tag_title_on_cards_overview
551_show_tag_title_on_cards_overview
2018-07-31 09:57:03 +02:00
Philippe Le Van
508674f404 little more bottom margin after review
Signed-off-by: Philippe Le Van <philippe.levan@kibatic.com>
2018-07-31 09:21:19 +02:00
Philippe Le Van
25fa1a0e69 First proposition of label styling
Signed-off-by: Philippe Le Van <philippe.levan@kibatic.com>
2018-07-31 09:21:18 +02:00
Nextcloud bot
2453f27284 [tx-robot] updated from transifex 2018-07-31 00:18:57 +00:00
Julius Härtl
05598d1445 Merge pull request #559 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.16.3
Bump webpack from 4.16.1 to 4.16.3 in /js
2018-07-30 23:28:13 +02:00
Julius Härtl
c82d99a656 Merge pull request #558 from nextcloud/dependabot/npm_and_yarn/js/karma-2.0.5
Bump karma from 2.0.4 to 2.0.5 in /js
2018-07-30 23:26:51 +02:00
dependabot[bot]
619acbed15 Bump webpack from 4.16.1 to 4.16.3 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.16.1 to 4.16.3.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.16.1...v4.16.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-30 01:14:09 +00:00
dependabot[bot]
fef5bb6342 Bump karma from 2.0.4 to 2.0.5 in /js
Bumps [karma](https://github.com/karma-runner/karma) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v2.0.4...v2.0.5)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-30 01:13:49 +00:00
Nextcloud bot
4e91e06c64 [tx-robot] updated from transifex 2018-07-30 00:18:37 +00:00
Julius Härtl
0057c2be84 Update README.md
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-28 14:36:41 +02:00
Julius Härtl
e8e50a3e31 Fix more 14 layout issues
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-28 13:06:40 +02:00
Julius Härtl
769053b76d Merge pull request #545 from steav/issue-475-notifications-on-card-assignment
Add notification on card assignment to user, fixes #475
2018-07-28 12:32:54 +02:00
Julius Härtl
1948c303f2 Add missing import statement
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-28 12:25:23 +02:00
steav
476b15ee9d Fix tests for card assignment notification
Signed-off-by: steav <steav8@gmail.com>
2018-07-28 12:17:28 +02:00
steav
9595e00ae1 Do not send card assignment notifications to ourselves
Signed-off-by: steav <steav8@gmail.com>
2018-07-28 12:17:28 +02:00
steav
fdc1f275c5 Add tests for card assignment notification
Signed-off-by: steav <steav8@gmail.com>
2018-07-28 12:17:28 +02:00
steav
1276dddc37 Fix failing CardServiceTest
Signed-off-by: steav <steav8@gmail.com>
2018-07-28 12:17:28 +02:00
Steav
ed62a48ddd Add richsubject to notification on user assignment
Signed-off-by: Steav <steav8@gmail.com>
2018-07-28 12:17:28 +02:00
Steav
327c379ff3 Undo manual changes to l10n files
Signed-off-by: Steav <steav8@gmail.com>
2018-07-28 12:17:27 +02:00
Steav
77472b978d Add notification on card assignment to user
Signed-off-by: Steav <steav8@gmail.com>
2018-07-28 12:16:50 +02:00
Julius Härtl
e81c08f7f0 Create pull_request_template.md
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-28 12:07:34 +02:00
Nextcloud bot
1e24b3d774 [tx-robot] updated from transifex 2018-07-28 00:18:40 +00:00
Nextcloud bot
a4044eff30 [tx-robot] updated from transifex 2018-07-27 00:18:55 +00:00
Julius Härtl
31c690ebf8 Merge pull request #554 from nextcloud/bugfix/550/make-14-compatible
Compatibility for Nextcloud 14
2018-07-27 00:15:02 +02:00
Julius Härtl
b84f118b4d Fix eslint
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-27 00:06:34 +02:00
Julius Härtl
c33783ac81 Cleanup css
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-27 00:06:33 +02:00
Julius Härtl
725ba6ff72 Move app sidebar handling to angular/css
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-27 00:06:33 +02:00
Julius Härtl
bf9811bf11 Add CSS rules for 13 to be backward compatible
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-27 00:06:33 +02:00
Julius Härtl
e08c430422 Move app sidebar out of app content
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-27 00:06:33 +02:00
Nextcloud bot
c72000bfc0 [tx-robot] updated from transifex 2018-07-26 00:18:56 +00:00
Julius Härtl
a131e468c0 Merge pull request #544 from philippe-levan/assign_to_me_feature
"assign to me" feature
2018-07-25 21:53:20 +02:00
Julius Härtl
d4a16589af Merge branch 'master' into assign_to_me_feature 2018-07-25 21:45:32 +02:00
Philippe Le Van
5e69a453a2 added TODO comment for jquery calls 2018-07-25 20:57:51 +02:00
Julius Härtl
23d3425ca4 Merge pull request #541 from nextcloud/bugfix/532/4byte-description
Simly remove 4byte chars from the description if those are not supported
2018-07-25 18:51:57 +02:00
Julius Härtl
653a1ccd58 Merge pull request #555 from nextcloud/bugfix/543/permissions
Check when assigning users
2018-07-25 18:51:29 +02:00
Julius Härtl
09105d6e3d Check when assigning users
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-25 18:39:08 +02:00
Julius Härtl
4d8acecc57 Simly remove 4byte chars from the description if those are not supported
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-25 18:33:24 +02:00
Julius Härtl
8d54028b31 Remove stable12 from drone tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-24 19:45:15 +02:00
Julius Härtl
415acfce57 Bump development version and make NC13 a minimum
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-24 19:44:07 +02:00
Philippe Le Van
f25401e9fd assign to me feature
codacy fix

codacy fix #2

revert translation files

coding style : spaces to tabs

Signed-off-by: Philippe Le Van <philippe.levan@kibatic.com>
2018-07-24 09:40:57 +02:00
Nextcloud bot
bcf26cee53 [tx-robot] updated from transifex 2018-07-24 00:18:21 +00:00
Julius Härtl
161bfb0e91 Merge pull request #547 from nextcloud/dependabot/npm_and_yarn/js/webpack-cli-3.1.0
Bump webpack-cli from 3.0.8 to 3.1.0 in /js
2018-07-23 12:22:17 +02:00
Julius Härtl
c1e52d7837 Merge pull request #548 from nextcloud/dependabot/npm_and_yarn/js/@uirouter/angularjs-1.0.19
Bump @uirouter/angularjs from 1.0.18 to 1.0.19 in /js
2018-07-23 12:22:04 +02:00
Julius Härtl
9cb096046a Merge pull request #546 from nextcloud/dependabot/npm_and_yarn/js/markdown-it-8.4.2
Bump markdown-it from 8.4.1 to 8.4.2 in /js
2018-07-23 12:21:45 +02:00
dependabot[bot]
3c32f0533a Bump markdown-it from 8.4.1 to 8.4.2 in /js
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 8.4.1 to 8.4.2.
- [Release notes](https://github.com/markdown-it/markdown-it/releases)
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/8.4.1...8.4.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-23 09:57:39 +00:00
dependabot[bot]
3bf197bb32 Bump @uirouter/angularjs from 1.0.18 to 1.0.19 in /js
Bumps [@uirouter/angularjs](https://github.com/angular-ui/ui-router) from 1.0.18 to 1.0.19.
- [Release notes](https://github.com/angular-ui/ui-router/releases)
- [Changelog](https://github.com/angular-ui/ui-router/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular-ui/ui-router/compare/1.0.18...1.0.19)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-23 09:57:34 +00:00
dependabot[bot]
4dc5c7da18 Bump webpack-cli from 3.0.8 to 3.1.0 in /js
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 3.0.8 to 3.1.0.
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-cli/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-23 09:57:18 +00:00
Julius Härtl
9ad070f40a Merge pull request #549 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.16.1
Bump webpack from 4.16.0 to 4.16.1 in /js
2018-07-23 11:55:24 +02:00
dependabot[bot]
a806714f56 Bump webpack from 4.16.0 to 4.16.1 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.16.0 to 4.16.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.16.0...v4.16.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-23 01:14:57 +00:00
Nextcloud bot
bd630e31bc [tx-robot] updated from transifex 2018-07-23 00:18:16 +00:00
Nextcloud bot
6313f24dc9 [tx-robot] updated from transifex 2018-07-20 00:18:38 +00:00
Nextcloud bot
5a5cd23eb2 [tx-robot] updated from transifex 2018-07-19 00:18:20 +00:00
Nextcloud bot
7fda7c1a4a [tx-robot] updated from transifex 2018-07-17 00:18:29 +00:00
Julius Härtl
ab637c7c13 Merge pull request #538 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.16.0
Bump webpack from 4.15.1 to 4.16.0 in /js
2018-07-16 11:41:46 +02:00
dependabot[bot]
7f497d59bc Bump webpack from 4.15.1 to 4.16.0 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.15.1 to 4.16.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.15.1...v4.16.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-16 01:13:39 +00:00
Nextcloud bot
d794d61337 [tx-robot] updated from transifex 2018-07-16 00:18:17 +00:00
Julius Härtl
9f03854b3c Merge pull request #536 from philippe-levan/patch-1
click on assign user or the plus button
2018-07-15 15:13:41 +02:00
Nextcloud bot
17996822d3 [tx-robot] updated from transifex 2018-07-15 00:18:13 +00:00
Philippe Le Van (@plv)
ee438ad7b2 click on assign user or the plus button
Hi,

We often add users on cards. I believe the button to assign a user shoud be bigger.

I suggest with this PR to make all the header clickable to assign a new user (but I let the button with the hover to let the UI intuitive).

Best regards,
Phillippe
2018-07-14 16:46:37 +02:00
Julius Härtl
6bf4efbfe6 Merge pull request #527 from Nebri/issue_197
Add default board
2018-07-14 12:12:30 +02:00
Julius Härtl
3163563fce Merge branch 'master' into issue_197 2018-07-14 11:57:53 +02:00
Ryan Fletcher
04cb5f656d Mocked up $this->l10n calls in DefaultBoardServiceTest
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-07-13 08:53:21 -04:00
Ryan Fletcher
3863c7497b Used $l10n references in my unit test, this should allow it pass.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-07-12 12:15:46 -04:00
Ryan Fletcher
8d4dbd4d82 Fixed up code styles as per review by juliushaertl
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-07-12 11:17:11 -04:00
Julius Härtl
8f4fe1b05b Merge pull request #529 from nextcloud/bugfix/528/cast-inf
Cast uploadLimit to integer to catch possible INF result
2018-07-12 16:43:32 +02:00
Julius Härtl
7794fa065c Cast uploadLimit to integer to catch possible INF result
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-12 16:06:17 +02:00
Ryan Fletcher
af92da9a7c Removing translations I attempted to put in before knowing the process.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-07-11 16:18:00 -04:00
Ryan Fletcher
ba378ea00b First attempt at using l10n
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-07-11 15:00:08 -04:00
Ryan Fletcher
be8a3479ac Updated PageControllerTest.php to reflect new changes
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-07-11 13:33:04 -04:00
Ryan Fletcher
2002841c61 Wrote unit tests for checkFirstRun method in the default board service
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-07-11 12:59:40 -04:00
Julius Härtl
fde5096856 Merge pull request #524 from nextcloud/release/v0.4.0
Prepare 0.4.0 release
2018-07-11 18:37:17 +02:00
Ryan Fletcher
08f9874745 Updated constructor in PageControllerTest
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-07-11 11:50:11 -04:00
Ryan Fletcher
712ab9e0bc Corrected testCreateDefaultBoard()
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-07-11 11:49:20 -04:00
Ryan Fletcher
e07fc0a2c7 Corrected missing import and missing parameter in defaultBoardServiceTest
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-07-11 10:49:46 -04:00
Ryan Fletcher
61fb68f4cf Added a unit test against DefaultBoardService->TestCreateDefaultBoard()
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-07-11 10:20:42 -04:00
Julius Härtl
f3296dd443 Add compatibility check for 12,13
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-11 14:07:58 +02:00
Ryan Fletcher
8a8cffc542 Completed checkFirstRun() in DefaultBoardService.php
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-07-11 08:02:54 -04:00
Julius Härtl
820ad7c523 Update changelog
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-11 13:54:06 +02:00
Julius Härtl
9f66ce618e Bump version to 0.4.0
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-11 13:54:06 +02:00
Julius Härtl
2318425160 Add package target to Makefile
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-11 08:48:01 +02:00
Ryan Fletcher
a36dfcc144 first attempt at writing the checkFirstRun() in DefaultBoardService.php
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-07-10 21:16:24 -04:00
Nextcloud bot
213e3083a1 [tx-robot] updated from transifex 2018-07-11 00:19:11 +00:00
Ryan Fletcher
683354da9d corrected null errors from first attempt.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-07-10 19:30:47 -04:00
Ryan Fletcher
e208fd8222 First Attempt at implementing createDefaultBoard()
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
2018-07-10 17:10:27 -04:00
Julius Härtl
4fc65c8302 Merge pull request #522 from nextcloud/dependabot/npm_and_yarn/js/css-loader-1.0.0
Bump css-loader from 0.28.11 to 1.0.0 in /js
2018-07-10 15:21:35 +02:00
dependabot[bot]
bcb54faeaf Bump css-loader from 0.28.11 to 1.0.0 in /js
Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 0.28.11 to 1.0.0.
- [Release notes](https://github.com/webpack-contrib/css-loader/releases)
- [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/css-loader/compare/v0.28.11...v1.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-10 12:41:11 +00:00
Julius Härtl
f5753f3fde Merge pull request #521 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.15.1
Bump webpack from 4.14.0 to 4.15.1 in /js
2018-07-10 14:39:30 +02:00
dependabot[bot]
5ff8618c10 Bump webpack from 4.14.0 to 4.15.1 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.14.0 to 4.15.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.14.0...v4.15.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-10 12:35:38 +00:00
Julius Härtl
bee918e810 Merge pull request #520 from nextcloud/dependabot/npm_and_yarn/js/node-sass-4.9.2
Bump node-sass from 4.9.0 to 4.9.2 in /js
2018-07-10 14:33:59 +02:00
dependabot[bot]
37301ae92b Bump node-sass from 4.9.0 to 4.9.2 in /js
Bumps [node-sass](https://github.com/sass/node-sass) from 4.9.0 to 4.9.2.
- [Release notes](https://github.com/sass/node-sass/releases)
- [Changelog](https://github.com/sass/node-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/node-sass/compare/v4.9.0...v4.9.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-09 07:50:44 +00:00
Julius Härtl
bd304d5f27 Merge pull request #523 from nextcloud/dependabot/npm_and_yarn/js/babel-loader-7.1.5
Bump babel-loader from 7.1.4 to 7.1.5 in /js
2018-07-09 09:47:27 +02:00
dependabot[bot]
827c69bd7b Bump babel-loader from 7.1.4 to 7.1.5 in /js
Bumps [babel-loader](https://github.com/babel/babel-loader) from 7.1.4 to 7.1.5.
- [Release notes](https://github.com/babel/babel-loader/releases)
- [Changelog](https://github.com/babel/babel-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel-loader/compare/v7.1.4...v7.1.5)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-09 01:15:28 +00:00
Nextcloud bot
812a225334 [tx-robot] updated from transifex 2018-07-08 00:12:30 +00:00
Julius Härtl
90c4e7818a Use ng-attr-value to support IE11
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-06 13:49:29 +02:00
Nextcloud bot
1299df539e [tx-robot] updated from transifex 2018-07-06 00:12:18 +00:00
Julius Härtl
20b25e0108 Bump version to 0.4.0-beta5
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-05 18:53:47 +02:00
Julius Härtl
e959afb2de Merge pull request #519 from nextcloud/bugfix/noid/stream-attachment-download
Fetch file from rootFolder instead of IAppData to use StreamResponse
2018-07-05 18:52:45 +02:00
Julius Härtl
cb25643741 Fetch file from rootFolder instead of IAppData to use StreamResponse when displaying
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-05 18:42:33 +02:00
Nextcloud bot
bbfb9e713a [tx-robot] updated from transifex 2018-07-04 00:12:38 +00:00
Nextcloud bot
e71a38fe96 [tx-robot] updated from transifex 2018-07-03 00:16:32 +00:00
260 changed files with 17070 additions and 7436 deletions

View File

@@ -8,7 +8,7 @@ pipeline:
image: nextcloudci/php7.0:php7.0-17
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- CORE_BRANCH=stable15
- DB=sqlite
commands:
# Pre-setup steps
@@ -22,11 +22,47 @@ pipeline:
when:
matrix:
TESTS: check-app-compatbility
check-app-compatbility-14:
image: nextcloudci/php7.0:php7.0-17
environment:
- APP_NAME=deck
- CORE_BRANCH=stable14
- DB=sqlite
commands:
# Pre-setup steps
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
- cd ../server
# Code checker
- ./occ app:check-code $APP_NAME -c strong-comparison
- ./occ app:check-code $APP_NAME -c deprecation
- cd apps/$APP_NAME/
when:
matrix:
TESTS: check-app-compatbility-14
check-app-compatbility-13:
image: nextcloudci/php7.0:php7.0-17
environment:
- APP_NAME=deck
- CORE_BRANCH=stable13
- DB=sqlite
commands:
# Pre-setup steps
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
- cd ../server
# Code checker
- ./occ app:check-code $APP_NAME -c strong-comparison
- ./occ app:check-code $APP_NAME -c deprecation
- cd apps/$APP_NAME/
when:
matrix:
TESTS: check-app-compatbility-13
signed-off-check:
image: nextcloudci/php7.0:php7.0-17
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- CORE_BRANCH=stable14
- DB=sqlite
commands:
- wget https://raw.githubusercontent.com/nextcloud/server/master/build/signed-off-checker.php
@@ -51,7 +87,7 @@ pipeline:
image: nextcloudci/php7.0:php7.0-17
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- CORE_BRANCH=stable14
- DB=sqlite
commands:
- composer install
@@ -63,7 +99,7 @@ pipeline:
image: nextcloudci/php7.1:php7.1-15
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- CORE_BRANCH=stable14
- DB=sqlite
commands:
- composer install
@@ -75,7 +111,7 @@ pipeline:
image: nextcloudci/php7.2:php7.2-9
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- CORE_BRANCH=stable14
- DB=sqlite
commands:
- composer install
@@ -83,6 +119,18 @@ pipeline:
when:
matrix:
TESTS: syntax-php7.2
syntax-php7.3:
image: nextcloudci/php7.3:php7.3-2
environment:
- APP_NAME=deck
- CORE_BRANCH=stable15
- DB=sqlite
commands:
- composer install
- ./vendor/bin/parallel-lint --exclude ./vendor/ .
when:
matrix:
TESTS: syntax-php7.3
php5.6:
image: nextcloudci/php5.6:php5.6-8
environment:
@@ -98,6 +146,7 @@ pipeline:
- cd ../server/
- ./occ app:enable $APP_NAME
- cd apps/$APP_NAME
- composer install
- phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
- phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
when:
@@ -107,7 +156,7 @@ pipeline:
image: nextcloudci/php7.0:php7.0-17
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- CORE_BRANCH=stable14
- DB=sqlite
commands:
# Pre-setup steps
@@ -117,6 +166,7 @@ pipeline:
- php occ app:enable deck
- cd apps/$APP_NAME
# Run phpunit tests
- composer install
- phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
- phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
when:
@@ -126,7 +176,7 @@ pipeline:
image: nextcloudci/php7.1:php7.1-15
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- CORE_BRANCH=stable14
- DB=sqlite
commands:
# Pre-setup steps
@@ -135,6 +185,7 @@ pipeline:
- cd ../server/
- php occ app:enable deck
- cd apps/$APP_NAME
- composer install
- phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
- phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
when:
@@ -144,7 +195,7 @@ pipeline:
image: nextcloudci/php7.2:php7.2-9
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- CORE_BRANCH=stable14
- DB=sqlite
commands:
# Pre-setup steps
@@ -153,16 +204,36 @@ pipeline:
- cd ../server/
- php occ app:enable deck
- cd apps/$APP_NAME
- composer install
- phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
- phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
when:
matrix:
TESTS: php7.2
php7.3:
image: nextcloudci/php7.3:php7.3-2
environment:
- APP_NAME=deck
- CORE_BRANCH=stable15
- DB=sqlite
commands:
# Pre-setup steps
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
- cd ../server/
- php occ app:enable deck
- cd apps/$APP_NAME
- composer install
- phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
- phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
when:
matrix:
TESTS: php7.3
integration:
image: nextcloudci/integration-php7.0:integration-php7.0-6
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- CORE_BRANCH=stable14
- DB=sqlite
commands:
# Pre-setup steps
@@ -193,16 +264,19 @@ pipeline:
TESTS: jsbuild
matrix:
include:
- TESTS: check-app-compatbility
- TESTS: check-app-compatbility-13
- TESTS: check-app-compatbility-14
- TESTS: signed-off-check
- TESTS: syntax-php5.6
- TESTS: syntax-php7.0
- TESTS: syntax-php7.1
- TESTS: syntax-php7.2
- TESTS: syntax-php7.3
- TESTS: php5.6
- TESTS: php7.0
- TESTS: php7.1
- TESTS: php7.2
- TESTS: php7.3
- TESTS: eslint
- TESTS: jsbuild
#- TESTS: integration

View File

@@ -6,6 +6,7 @@ extends:
env:
browser: true
amd: true
es6: true
globals:
global: false

17
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,17 @@
* Resolves: # <!-- related github issue -->
* Target version: master
### Summary
### TODO
- [ ] ...
### Checklist
- [ ] Code is properly formatted
- [ ] Sign-off message is added to all commits
- [ ] Tests (unit, integration, api and/or acceptance) are included
- [ ] Documentation (manuals or wiki) has been updated or is not required

23
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,23 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- "1. to develop"
- "2. developing"
- "3. to review"
- "discussion"
- "bug"
# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 30
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.

View File

@@ -5,8 +5,9 @@ php:
- 7.0
- 7.1
- 7.2
- 7.3
env:
- CORE_BRANCH=master DB=mysql
- CORE_BRANCH=stable14 DB=mysql
before_install:
- wget https://phar.phpunit.de/phpunit-5.7.phar
@@ -24,6 +25,7 @@ before_script:
- cd apps/deck
script:
- composer install
- make test-unit
after_success:

View File

@@ -1,7 +1,67 @@
# Changelog
All notable changes to this project will be documented in this file.
## 0.4.0 - unreleased
## 0.5.2 - 2018-12-20
### Fixed
- Mark notification as read if a card with duedate gets archived
- Use proper timezone and locale format for due date activities
- Various translation fixes and updates
- Check group limit properly
- Fix comment activities on Nextcloud 15
- Fix issues with Edge
- API: Fix numeric types that were returned as strings
- API: Fix If-Modified-Since header parsing
## 0.5.1 - 2018-12-05
### Added
- Separate settings for description changes in activity
- Less verbose description change activities
- Use server settings to restrict sharing to groups
- Add setting to exclude groups from creating their own boards
### Fixed
- Fix issue when using a separate table prefix @bpcurse
- Fix invalid activity parameters being published
- Wording fixes @cloud2018
- Improve loading performance by removing unused activity preloading
- Fix timestamp issues in deleted items tab
- Remember show state of the board navigation @weeman1337
- Add optional classes for custom styling @tinko92
- Fix missing details on activity emails
- Fix unrelated comments in board activity list
- Fix search not working properly
- Trigger comment notification on update only
## 0.5.0 - 2018-11-15
### Added
- Activity stream for board and cards
- Comments on cards
- Use users locale format on date picker
- Compact display mode
- Card title inline editing
- REST API
- Empty content view for board lists
- Undo for card and stack deletion
- Show tag name on board
- Notify users about card assignments
- Add shortcut to assign a card to yourself
- Improved view for printing
- Support for Nextcloud 15
### Fixed
- Accesibility improvements
- Don't allow empty card titles
- Improved checkbox handling in markdown
## 0.4.0 - 2018-07-11
### Added

View File

@@ -12,7 +12,7 @@ sign_dir=$(build_dir)/sign
cert_dir=$(HOME)/.nextcloud/certificates
default: build
default: package
clean-build:
rm -rf $(build_dir)
@@ -20,12 +20,15 @@ clean-build:
clean-dist:
rm -rf js/node_modules
install-deps:
install-deps: install-deps-js
composer install
install-deps-js:
cd js && npm install
build: build-js
build: install-deps build-js
build-js: install-deps
build-js: install-deps-js
cd js && npm run build
build-js-dev: install-deps
@@ -95,3 +98,5 @@ test-integration:
test-js: install-deps
cd js && run test
package:
krankerl package

View File

@@ -1,6 +1,6 @@
# Deck
[![Build Status](https://travis-ci.org/nextcloud/deck.svg?branch=master)](https://travis-ci.org/nextcloud/deck) [![CodeCov](https://codecov.io/github/nextcloud/deck/coverage.svg?branch=master)](https://codecov.io/github/nextcloud/deck) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/e403f723f42a4abd93b2cfe36cbd7eee)](https://www.codacy.com/app/juliushaertl/deck?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=nextcloud/deck&amp;utm_campaign=Badge_Grade) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/deck/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/nextcloud/deck/?branch=master) [![Dependency Status](https://www.versioneye.com/user/projects/5af6c4090fb24f0e3a423c40/badge.svg)](https://www.versioneye.com/user/projects/5af6c4090fb24f0e3a423c40) [![#nextcloud-deck](https://img.shields.io/badge/IRC-%23nextcloud--deck%20on%20freenode-blue.svg)](https://webchat.freenode.net/?channels=nextcloud-deck)
[![Build Status](https://travis-ci.org/nextcloud/deck.svg?branch=master)](https://travis-ci.org/nextcloud/deck) [![CodeCov](https://codecov.io/github/nextcloud/deck/coverage.svg?branch=master)](https://codecov.io/github/nextcloud/deck) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/e403f723f42a4abd93b2cfe36cbd7eee)](https://www.codacy.com/app/juliushaertl/deck?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=nextcloud/deck&amp;utm_campaign=Badge_Grade) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/deck/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/nextcloud/deck/?branch=master) [![#nextcloud-deck](https://img.shields.io/badge/IRC-%23nextcloud--deck%20on%20freenode-blue.svg)](https://webchat.freenode.net/?channels=nextcloud-deck)
Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.
@@ -9,14 +9,17 @@ Deck is a kanban style organization tool aimed at personal planning and project
- :page_facing_up: Write down additional notes in markdown
- :bookmark: Assign labels for even better organization
- :busts_in_silhouette: Share with your team, friends or family
- :paperclip: Attach files and embed them in your markdown description
- :speech_balloon: Discuss with your team using comments
- :zap: Keep track of changes in the activity stream
- :rocket: Get your project organized
![Deck - Manage cards on your board](https://download.bitgrid.net/nextcloud/deck/screenshots/Deck_Board.png)
![Deck - Manage cards on your board](https://download.bitgrid.net/nextcloud/deck/screenshots/Deck.png)
## Installation/Update
This app is supposed to work on Nextcloud version 12 or later.
This app is supposed to work on the two latest Nextcloud versions.
### Install latest release
@@ -30,10 +33,10 @@ If you want to run the latest development version from git source, you need to c
git clone https://github.com/nextcloud/deck.git
cd deck
make install-deps
make
make build
```
Please make sure you have installed the following dependencies: `make, which, tar, npm, curl`
Please make sure you have installed the following dependencies: `make, which, tar, npm, curl, composer`
### Install the nightly builds
@@ -54,13 +57,15 @@ You can use the provided Makefile to run all tests by using:
make test
### Documentation
The documentation for our REST API can be found at https://deck.readthedocs.io/en/latest/API/
## Contribution Guidelines
Please read the [Code of Conduct](https://nextcloud.com/community/code-of-conduct/). This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.
For more information please review the [guidelines for contributing](https://github.com/nextcloud/server/blob/master/CONTRIBUTING.md) to this repository.
For more information please review the [guidelines for contributing](https://github.com/nextcloud/server/blob/master/.github/CONTRIBUTING.md) to this repository.
### Apply a license

View File

@@ -21,6 +21,14 @@
*
*/
if ((@include_once __DIR__ . '/../vendor/autoload.php')===false) {
throw new Exception('Cannot include autoload. Did you run install dependencies using composer?');
}
$app = new \OCA\Deck\AppInfo\Application();
$app->registerNavigationEntry();
$app->registerNotifications();
$app->registerNotifications();
$app->registerCommentsEntity();
/** Load activity style global so it is availabile in the activity app as well */
\OC_Util::addStyle('deck', 'activity');

View File

@@ -5,20 +5,20 @@
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
namespace OCA\Deck\AppInfo;
@@ -28,4 +28,4 @@ use OCP\AppFramework\App;
/**
* Additional autoloader registration, e.g. registering composer autoloaders
*/
// require_once __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/../vendor/autoload.php';

View File

@@ -46,6 +46,13 @@
<notnull>false</notnull>
<unsigned>true</unsigned>
</field>
<field>
<name>last_modified</name>
<type>integer</type>
<default></default>
<notnull>false</notnull>
<unsigned>true</unsigned>
</field>
</declaration>
</table>
<table>
@@ -77,6 +84,21 @@
<length>8</length>
<notnull>false</notnull>
</field>
<field>
<name>deleted_at</name>
<type>integer</type>
<default>0</default>
<length>8</length>
<notnull>false</notnull>
<unsigned>true</unsigned>
</field>
<field>
<name>last_modified</name>
<type>integer</type>
<default></default>
<notnull>false</notnull>
<unsigned>true</unsigned>
</field>
<index>
<name>deck_stacks_board_id_index</name>
<field>
@@ -113,6 +135,11 @@
<type>clob</type>
<notnull>false</notnull>
</field>
<field>
<name>description_prev</name>
<type>clob</type>
<notnull>false</notnull>
</field>
<field>
<name>stack_id</name>
<type>integer</type>
@@ -133,6 +160,12 @@
<notnull>false</notnull>
<unsigned>true</unsigned>
</field>
<field>
<name>last_editor</name>
<type>text</type>
<notnull>false</notnull>
<length>64</length>
</field>
<field>
<name>created_at</name>
<type>integer</type>
@@ -167,6 +200,14 @@
<type>boolean</type>
<default>false</default>
</field>
<field>
<name>deleted_at</name>
<type>integer</type>
<default>0</default>
<length>8</length>
<notnull>false</notnull>
<unsigned>true</unsigned>
</field>
<index>
<name>deck_cards_stack_id_index</name>
<field>

View File

@@ -11,26 +11,37 @@
- 📄 Write down additional notes in markdown
- 🔖 Assign labels for even better organization
- 👥 Share with your team, friends or family
- 📎 Attach files and embed them in your markdown description
- 💬 Discuss with your team using comments
- ⚡ Keep track of changes in the activity stream
- 🚀 Get your project organized
</description>
<version>0.4.0-beta4</version>
<version>0.5.2</version>
<licence>agpl</licence>
<author>Julius Härtl</author>
<namespace>Deck</namespace>
<types>
<logging/>
</types>
<category>organization</category>
<category>office</category>
<website>https://github.com/nextcloud/deck</website>
<bugs>https://github.com/nextcloud/deck/issues</bugs>
<repository type="git">https://github.com/nextcloud/deck.git</repository>
<screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/Deck_Board.png</screenshot>
<screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/Deck_Details.png</screenshot>
<screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/0.5/deck-notifications.png</screenshot>
<screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/0.5/deck-comment2.png</screenshot>
<dependencies>
<nextcloud min-version="12" max-version="14" />
<php min-version="5.6"/>
<database min-version="9.4">pgsql</database>
<database>sqlite</database>
<database min-version="5.5">mysql</database>
<nextcloud min-version="13" max-version="15" />
</dependencies>
<background-jobs>
<job>OCA\Deck\Cron\DeleteCron</job>
<job>OCA\Deck\Cron\ScheduledNotifications</job>
<job>OCA\Deck\Cron\CardDescriptionActivity</job>
</background-jobs>
<repair-steps>
<post-migration>
@@ -40,4 +51,16 @@
<commands>
<command>OCA\Deck\Command\UserExport</command>
</commands>
<activity>
<settings>
<setting>OCA\Deck\Activity\Setting</setting>
<setting>OCA\Deck\Activity\DescriptionSetting</setting>
</settings>
<filters>
<filter>OCA\Deck\Activity\Filter</filter>
</filters>
<providers>
<provider>OCA\Deck\Activity\DeckProvider</provider>
</providers>
</activity>
</info>

View File

@@ -3,28 +3,32 @@
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
* @author Ryan Fletcher <ryan.fletcher@codepassion.ca>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
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'],
@@ -43,6 +47,7 @@ return [
['name' => 'stack#update', 'url' => '/stacks/{stackId}', 'verb' => 'PUT'],
['name' => 'stack#reorder', 'url' => '/stacks/{stackId}/reorder', 'verb' => 'PUT'],
['name' => 'stack#delete', 'url' => '/stacks/{stackId}', 'verb' => 'DELETE'],
['name' => 'stack#deleted', 'url' => '/{boardId}/stacks/deleted', 'verb' => 'GET'],
['name' => 'stack#archived', 'url' => '/stacks/{boardId}/archived', 'verb' => 'GET'],
// cards
@@ -50,6 +55,7 @@ return [
['name' => 'card#create', 'url' => '/cards', 'verb' => 'POST'],
['name' => 'card#update', 'url' => '/cards/{cardId}', 'verb' => 'PUT'],
['name' => 'card#delete', 'url' => '/cards/{cardId}', 'verb' => 'DELETE'],
['name' => 'card#deleted', 'url' => '/{boardId}/cards/deleted', 'verb' => 'GET'],
['name' => 'card#rename', 'url' => '/cards/{cardId}/rename', 'verb' => 'PUT'],
['name' => 'card#reorder', 'url' => '/cards/{cardId}/reorder', 'verb' => 'PUT'],
['name' => 'card#archive', 'url' => '/cards/{cardId}/archive', 'verb' => 'PUT'],
@@ -74,5 +80,43 @@ return [
['name' => 'label#update', 'url' => '/labels/{labelId}', 'verb' => 'PUT'],
['name' => 'label#delete', 'url' => '/labels/{labelId}', 'verb' => 'DELETE'],
// api
['name' => 'board_api#index', 'url' => '/api/v1.0/boards', 'verb' => 'GET'],
['name' => 'board_api#get', 'url' => '/api/v1.0/boards/{boardId}', 'verb' => 'GET'],
['name' => 'board_api#create', 'url' => '/api/v1.0/boards', 'verb' => 'POST'],
['name' => 'board_api#delete', 'url' => '/api/v1.0/boards/{boardId}', 'verb' => 'DELETE'],
['name' => 'board_api#update', 'url' => '/api/v1.0/boards/{boardId}', 'verb' => 'PUT'],
['name' => 'board_api#undo_delete', 'url' => '/api/v1.0/boards/{boardId}/undo_delete', 'verb' => 'POST'],
['name' => 'stack_api#index', 'url' => '/api/v1.0/boards/{boardId}/stacks', 'verb' => 'GET'],
['name' => 'stack_api#getArchived', 'url' => '/api/v1.0/boards/{boardId}/stacks/archived', 'verb' => 'GET'],
['name' => 'stack_api#get', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}', 'verb' => 'GET'],
['name' => 'stack_api#create', 'url' => '/api/v1.0/boards/{boardId}/stacks', 'verb' => 'POST'],
['name' => 'stack_api#update', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}', 'verb' => 'PUT'],
['name' => 'stack_api#delete', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}', 'verb' => 'DELETE'],
['name' => 'card_api#get', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}', 'verb' => 'GET'],
['name' => 'card_api#create', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}/cards', 'verb' => 'POST'],
['name' => 'card_api#update', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}', 'verb' => 'PUT'],
['name' => 'card_api#assignLabel', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/assignLabel', 'verb' => 'PUT'],
['name' => 'card_api#removeLabel', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/removeLabel', 'verb' => 'PUT'],
['name' => 'card_api#assignUser', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/assignUser', 'verb' => 'PUT'],
['name' => 'card_api#unassignUser', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/unassignUser', 'verb' => 'PUT'],
['name' => 'card_api#reorder', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/reorder', 'verb' => 'PUT'],
['name' => 'card_api#delete', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}', 'verb' => 'DELETE'],
['name' => 'label_api#get', 'url' => '/api/v1.0/boards/{boardId}/labels/{labelId}', 'verb' => 'GET'],
['name' => 'label_api#create', 'url' => '/api/v1.0/boards/{boardId}/labels', 'verb' => 'POST'],
['name' => 'label_api#update', 'url' => '/api/v1.0/boards/{boardId}/labels/{labelId}', 'verb' => 'PUT'],
['name' => 'label_api#delete', 'url' => '/api/v1.0/boards/{boardId}/labels/{labelId}', 'verb' => 'DELETE'],
['name' => 'attachment_api#getAll', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments', 'verb' => 'GET'],
['name' => 'attachment_api#display', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId}', 'verb' => 'GET'],
['name' => 'attachment_api#create', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments', 'verb' => 'POST'],
['name' => 'attachment_api#update', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId}', 'verb' => 'PUT'],
['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' => '.+']],
]
];

View File

@@ -8,9 +8,12 @@
"email": "jus@bitgrid.net"
}
],
"require": {},
"require": {
"cogpowered/finediff": "0.3.*"
},
"require-dev": {
"christophwurst/nextcloud": "^13.0",
"roave/security-advisories": "dev-master",
"christophwurst/nextcloud": "^14.0",
"jakub-onderka/php-parallel-lint": "^1.0.0"
}
}

28
css/activity.css Normal file
View File

@@ -0,0 +1,28 @@
.activitymessage .visualdiff ins {
background-color: rgba(70, 186, 97, 0.2);
text-decoration: none;
}
.activitymessage .visualdiff del {
background-color: rgba(233, 50, 45, 0.2);
text-decoration: none;
}
.activitymessage .visualdiff {
overflow: scroll;
max-height: 200px;
}
.activityTabView .avatardiv-container {
display: inline-block;
bottom: -3px;
margin-left: 3px;
}
.activityTabView .avatar-name-wrapper {
font-weight: bold;
}
.activityTabView .activitysubject a {
font-weight: bold;
}

43
css/animations.scss Normal file
View File

@@ -0,0 +1,43 @@
/*
* @copyright Copyright (c) 2018 Michael Weimann <mail@michael-weimann.eu>
*
* @author 2018 Michael Weimann <mail@michael-weimann.eu>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
.compact-item.ng-enter,
.compact-item.ng-leave {
overflow: hidden;
transition: all 250ms linear;
}
.compact-item.ng-enter {
max-height: 0;
&.ng-enter-active {
max-height: 50px;
}
}
.compact-item.ng-leave {
max-height: 50px;
&.ng-leave-active {
max-height: 0;
}
}

77
css/autocomplete.scss Normal file
View File

@@ -0,0 +1,77 @@
/**
* based upon apps/comments/js/vendor/At.js/dist/css/jquery.atwho.css,
* only changed colors and font-weight
*/
.atwho-view {
position:absolute;
top: 0;
left: 0;
display: none;
margin-top: 18px;
background: var(--color-main-background);
color: var(--color-main-text);
border: 1px solid var(--color-border);
border-radius: var(--border-radius);
box-shadow: 0 0 5px var(--color-box-shadow);
min-width: 120px;
z-index: 11110 !important;
}
.atwho-view .atwho-header {
padding: 5px;
margin: 5px;
cursor: pointer;
border-bottom: solid 1px var(--color-border);
color: var(--color-main-text);
font-size: 11px;
font-weight: bold;
}
.atwho-view .atwho-header .small {
color: var(--color-main-text);
float: right;
padding-top: 2px;
margin-right: -5px;
font-size: 12px;
font-weight: normal;
}
.atwho-view .atwho-header:hover {
cursor: default;
}
.atwho-view .cur {
background: var(--color-primary);
color: var(--color-primary-text);
}
.atwho-view .cur small {
color: var(--color-primary-text);
}
.atwho-view strong {
color: var(--color-main-text);
font-weight: normal;
}
.atwho-view .cur strong {
color: var(--color-primary-text);
font-weight: normal;
}
.atwho-view ul {
/* width: 100px; */
list-style:none;
padding:0;
margin:auto;
max-height: 200px;
overflow-y: auto;
}
.atwho-view ul li {
display: block;
padding: 5px 10px;
border-bottom: 1px solid var(--color-border);
cursor: pointer;
}
.atwho-view small {
font-size: smaller;
color: var(--color-main-text);
font-weight: normal;
}

50
css/comp-13.scss Normal file
View File

@@ -0,0 +1,50 @@
#content-wrapper #content {
height: 100%;
}
#app-content {
flex-grow: 1;
height: 100%;
&.details-visible {
margin-right: 500px;
}
}
#app-sidebar {
right: -500px;
max-width: 100%;
width: 500px;
display:flex;
flex-direction: column;
z-index: 1000;
&.details-visible {
right: 0;
}
}
#content[class*='app-'] * {
box-sizing: border-box;
}
body:not(.snapjs-left) {
.app-navigation-hide {
#app-content {
margin-left: 0 !important;
}
#app-navigation {
display: none;
}
}
}
#commentsTabView .newCommentForm .message {
width: 100%;
margin-left: 0;
padding-right: 0;
display: block;
}
#commentsTabView .comment {
margin-bottom: 0;
}

41
css/compact-mode.scss Normal file
View File

@@ -0,0 +1,41 @@
/*
* @copyright Copyright (c) 2018 Michael Weimann <mail@michael-weimann.eu>
*
* @author 2018 Michael Weimann <mail@michael-weimann.eu>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
.compact-mode {
.card {
margin: $compact-board-item-margin;
&:last-child {
margin: $compact-board-last-item-margin;
}
}
.stack {
.as-sortable-placeholder {
margin: $compact-board-item-margin;
&:last-child {
margin: $compact-board-last-item-margin;
}
}
}
}

View File

@@ -34,9 +34,37 @@
}
.icon-home {
background-image: url('../../../core/img/places/home.svg');
background-image: var(--icon-home-000, url('../../../core/img/places/home.svg'));
}
.icon-description {
background-image: var(--icon-text-000, url('../img/description.svg'));
}
.icon-badge {
background-image: url('../../../core/img/places/calendar-dark.svg');
}
background-image: url('../img/calendar-dark.svg');
}
.icon-toggle-compact-collapsed {
background-image: url('../img/toggle-view-expand.svg');
}
.icon-toggle-compact-expanded {
background-image: url('../img/toggle-view-collapse.svg');
}
@if mixin-exists('icon-black-white') {
@include icon-black-white('deck', 'deck', 1);
@include icon-black-white('archive', 'deck', 1);
.icon-toggle-compact-collapsed {
@include icon-color('toggle-view-expand', 'deck', $color-black);
}
.icon-toggle-compact-expanded {
@include icon-color('toggle-view-collapse', 'deck', $color-black);
}
.icon-activity {
@include icon-color('activity-dark', 'activity', $color-black);
}
}

90
css/print.scss Normal file
View File

@@ -0,0 +1,90 @@
@media print {
/* hide stuff */
#body-user {
#header,
div#app-navigation,
div.board-header-controls,
#app-navigation-toggle,
#app-navigation-toggle-custom,
div#controls.ng-scope div.crumb:not(.title),
div#controls.ng-scope div.crumb a.bullet,
a.ng-binding + a,
div.card.create,
button.card-options {
display: none !important;
}
#content {
margin: 0;
padding: 0;
}
#app-content {
margin: 0 !important;
}
}
div#app-navigation-toggle.icon-menu {
display:block;
width:0px;
height:0px;
background:none;
}
/* title */
div#controls.ng-scope {padding-left:20px;}
div#controls.ng-scope div.crumb.title {
display:inline;
font-size: 2em;
line-height:2.5em;
background:none;
}
div#controls.ng-scope div.crumb.title a.ng-binding {
color:#000;
opacity:1;
}
/*Due, assigned-users and description*/
div.card-controls {
flex-direction:row;
flex-wrap:wrap;
}
div.card-controls i.icon.icon-filetype-text {background:none;}
div.card-controls i.icon.icon-filetype-text:after {
content: attr(title);
display:block;
width:289px;
height:1.5em;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
span.due { }
div.card-assigned-users {
margin-right:10px;
}
ul.labels li.ng-scope span.ng-binding {
color:#000;
display:inline;
padding-left:5px;
}
/* Layout */
@page {
size: A4 landscape;
margin: 2cm;
}
div#innerBoard {
display:flex;
flex-wrap: wrap;
}
div.stack.ng-scope.as-sortable-item {border-right: 1px solid #000;}
div#innerBoard.ng-pristine.ng-untouched.ng-valid.ng-scope.ng-not-empty div.stack.ng-scope.as-sortable-item:nth-child(6n) {
page-break-after: always;
}
}

View File

@@ -5,6 +5,7 @@
* @author Artem Anufrij <artem.anufrij@live.de>
* @author Marin Treselj <marin@pixelipo.com>
* @author Oskar Kurz <oskar.kurz@gmail.com>
* @author Ryan Fletcher <ryan.fletcher@codepassion.ca>
*
* @license GNU AGPL version 3 or any later version
*
@@ -23,17 +24,29 @@
*
*/
// colors
$color-warning-light: nc-lighten($color-warning, 15%);
$color-lightgrey: nc-darken($color-main-background, 4%);
$color-grey: nc-darken($color-main-background, 7%);
$color-darkgrey: nc-darken($color-main-background, 32%);
@import 'comp-appnav.scss';
@import 'icons.scss';
// margins/paddings
$board-item-margin: 10px 10px 20px 10px;
$board-last-item-margin: 10px;
$compact-board-item-margin: 5px 10px 10px 10px;
$compact-board-last-item-margin: 5px 10px 10px;
@import 'comp-appnav';
@import 'icons';
@import 'animations';
@import 'compact-mode';
@import 'autocomplete';
/**
* General styles
*/
button,
.button,
.app-deck .icon {
@@ -70,6 +83,26 @@ input.input-inline {
cursor: text;
}
/**
* Generic app layout
*/
#content {
height: 100%;
min-height: initial;
}
.app.app-deck {
width: 100%;
height: 100%;
display: flex;
}
#app-content {
display: flex;
flex-direction: column;
}
/**
* Navigation sidebar
*/
@@ -115,6 +148,22 @@ input.input-inline {
}
#app-settings-content {
overflow: initial;
.ui-select-match-item {
border: 1px solid var(--color-background-darker) !important;
.select-label {
color: var(--color-main-text);
}
}
p.hint {
margin-top: 10px;
color: var(--color-text-light);
}
}
/**
* Board view
*/
@@ -123,7 +172,7 @@ input.input-inline {
z-index: 999;
width: 100%;
height: 100%;
background-color: $color-main-background;
background-color: var(--color-main-background, $color-main-background);
}
#board {
@@ -152,10 +201,10 @@ input.input-inline {
&.card-selected {
.card {
box-shadow: 0px 0px 7px 0px $color-grey;
box-shadow: 0px 0px 7px 0px var(--color-background-darker, $color-grey);
&.current {
box-shadow: 0px 0px 7px 0px $color-darkgrey;
box-shadow: 0px 0px 7px 0px var(--color-text-lighter, $color-darkgrey);
}
}
}
@@ -180,10 +229,16 @@ input.input-inline {
padding: 10px;
> .as-sortable-placeholder {
display: inline-block !important;
display: flex !important;
width: 320px;
min-width: 320px;
margin-top: 0;
margin-left: 0;
}
> .as-sortable-drag {
background-color: var(--color-main-background $color-main-background);
}
}
#controls {
@@ -221,9 +276,17 @@ input.input-inline {
}
button {
height: inherit;
width: 36px;
height: 36px;
padding: 9px;
}
#stack-add form {
button {
height: auto;
width: 32px;
}
}
input[type='text'] {
padding: 6px;
border: 0 none transparent;
@@ -238,7 +301,7 @@ input.input-inline {
}
}
#app-navigation-toggle {
#app-navigation-toggle-custom {
width: 44px;
height: 44px;
cursor: pointer;
@@ -288,7 +351,7 @@ input.input-inline {
}
#stack-add {
background-color: $color-lightgrey;
background-color: var(--color-background-dark, $color-lightgrey);
border-radius: 3px;
margin: 3px;
display: flex;
@@ -333,9 +396,8 @@ input.input-inline {
width: 100%;
margin: 0;
font-size: 12pt;
font-weight: 700;
border: 0;
background-color: $color-main-background;
background-color: var(--color-main-background, $color-main-background);
min-height: initial;
}
@@ -358,15 +420,20 @@ input.input-inline {
}
.as-sortable-placeholder {
margin: 10px 10px 20px 10px;
margin: $board-item-margin;
border: 1px dashed $color-darkgrey;
min-height: 96px;
transition: margin 250ms linear;
&:last-child {
margin: 10px;
margin: $board-last-item-margin;
}
}
&.as-sortable-item {
height: 100%;
display: flex;
}
> ul {
display: flex;
@@ -375,17 +442,17 @@ input.input-inline {
}
.card {
background-color: $color-main-background;
margin: 10px 10px 20px 10px;
background-color: var(--color-main-background, $color-main-background);
margin: $board-item-margin;
white-space: normal;
position: relative;
box-shadow: 0 0 3px $color-darkgrey;
box-shadow: 0 0 3px 1px var(--color-background-darker, $color-darkgrey);
border-radius: 3px;
transition: margin 250ms linear;
&:last-child {
margin: 10px;
margin: $board-last-item-margin;
}
&.archived .card-upper {
@@ -409,7 +476,7 @@ input.input-inline {
}
.card-controls {
background: $color-lightgrey;
background: var(--color-background-dark, $color-lightgrey);
display: flex;
position: relative;
padding-left: 10px;
@@ -422,9 +489,10 @@ input.input-inline {
opacity: 1;
}
.icon-filetype-text {
.icon-description {
margin: 10px;
margin-left: 0px;
opacity: 0.5;
}
.due {
@@ -442,7 +510,7 @@ input.input-inline {
&.overdue {
background-color: $color-error;
color: $color-primary-text;
color: var(--color-primary-text, $color-primary-text);
.icon-badge {
background-image: url('../img/calendar-white.svg');
@@ -460,7 +528,7 @@ input.input-inline {
}
}
.card-tasks, .card-files {
.card-tasks, .card-files, .card-comments {
border-radius: 3px;
margin: 4px 4px 4px 0px;
padding: 0 2px;
@@ -489,37 +557,39 @@ input.input-inline {
font-weight: normal;
font-size: 10pt;
padding: 0;
margin: 5px;
margin: 0 5px;
overflow: hidden;
text-overflow: ellipsis;
}
&.has-labels h4 {
margin-top: 15px;
span {
padding: 6px 0;
padding-top: 7px;
display: block;
}
input {
width: 100%;
margin: 0;
}
}
.labels {
position: absolute;
top: -5px;
left: 10px;
position: relative;
margin-left: 5px;
li {
padding: 0;
width: 15px;
height: 20px;
padding: 0 4px;
margin: 0 2px 2px 0;
border-radius: 3px;
font-size: 80%;
font-size: 75%;
border: none transparent;
float: left;
span {
display: none;
}
&:hover span {
position: absolute;
padding: 3px;
display: inline-block;
font-weight: bold;
background-color: inherit;
line-height: normal;
}
}
}
@@ -617,25 +687,19 @@ input.input-inline {
/**
* App sidebar
*/
#app-sidebar {
right: -500px;
max-width: 100%;
width: 500px;
display:flex;
flex-direction: column;
&.details-visible {
right: 0;
}
}
#sidebar-header {
position: sticky;
top: 0;
background-color: var(--color-main-background, $color-main-background);
z-index: 200;
h3 {
font-size: 14pt;
padding: 9px 10px;
padding: 15px 15px 3px;
margin: 0;
overflow: hidden;
background-color: $color-lightgrey;
input {
min-height: 0px;
@@ -643,6 +707,12 @@ input.input-inline {
}
}
#card-dates {
font-size: 80%;
opacity: 0.5;
padding-left: 15px;
}
.icon-close {
position: absolute;
top: 0px;
@@ -662,7 +732,7 @@ input.input-inline {
position: absolute;
width: 100%;
height: 100%;
background-color: #fff;
background-color: var(--color-main-background, $color-main-background);
z-index: 100;
opacity: 0.9;
text-align: center;
@@ -683,7 +753,7 @@ input.input-inline {
height: 100%;
display: flex;
flex-direction: column;
padding: 15px;
padding: 0 15px;
.duedate {
display: flex;
@@ -722,6 +792,7 @@ input.input-inline {
flex: 1;
}
}
.section-header-tabbed {
margin-top: 10px;
margin-bottom: 5px;
@@ -731,8 +802,15 @@ input.input-inline {
margin: 0;
flex-grow: 1;
}
.tabDetails {
display: flex;
}
.tabDetails {
display: flex;
height: 40px;
align-items: center;
justify-content: center;
input[type=button] {
width: 32px;
}
}
@@ -742,15 +820,14 @@ input.input-inline {
padding: 0 10px;
font-size: 8pt;
display: none;
align-self: flex-end;
text-align: center;
&.saved {
background-color: $color-success;
color: $color-primary-text;
}
&.unsaved {
background-color: $color-lightgrey;
color: $color-darkgrey;
background-color: var(--color-background-dark, $color-lightgrey);
color: var(--color-text-light, $color-darkgrey);
}
}
@@ -760,12 +837,6 @@ input.input-inline {
display: inline;
}
#card-dates {
font-size: 80%;
opacity: 0.5;
text-align: right;
}
.card-details-assign-users {
.select2 .ui-select-choices-row-inner {
@@ -799,6 +870,7 @@ input.input-inline {
background-color: rgba($color-darkgrey, 0.5);
left: 0;
top: 0;
z-index: 300;
}
.attachment-list {
&.selector {
@@ -811,10 +883,10 @@ input.input-inline {
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: $color-main-background;
background-color: var(--color-main-background, $color-main-background);
z-index: 2;
border-radius: 3px;
box-shadow: 0 0 3px $color-darkgrey;
box-shadow: 0 0 3px var(--color-background-dark, $color-darkgrey);
overflow: scroll;
}
h3.attachment-selector {
@@ -908,12 +980,71 @@ input.input-inline {
}
.container {
background-color: $color-main-background;
background-color: var(--color-main-background, $color-main-background);
}
}
}
}
.activity-icon {
opacity: 1 !important;
.avatardiv-container {
top: -4px;
left: -7px;
margin-right: 5px;
img {
max-width: 24px;
max-height: 24px;
}
}
}
.activitysubject.commentAuthor {
margin-left: 26px;
margin-right: 0;
margin-top: 10px;
}
.activityTabView {
.activity {
margin-bottom: 20px;
}
.activitytime {
margin: 0 !important;
}
}
.activitysubject .app-popover-menu-utils {
display: inline-block;
position: relative;
a {
font-weight: normal;
}
button {
opacity: .5;
padding: 7px;
margin-left: 10px;
}
}
#commentsTabView {
.newCommentRow .avatardiv-container {
left: -7px;
}
.comment {
position: relative;
padding: 0 0 15px;
.avatardiv {
width: 24px;
height: 24px;
line-height: 24px;
}
}
.newCommentForm {
margin-left: 26px;
}
}
.card-attachments {
.error {
padding-left: 38px;
@@ -922,16 +1053,6 @@ input.input-inline {
}
}
#app-content {
overflow: hidden;
display: flex;
flex-direction: column;
&.details-visible {
margin-right: 500px;
}
}
.labels {
display: block;
overflow: hidden;
@@ -1141,6 +1262,7 @@ input.input-inline {
display: inline-block;
overflow: hidden;
vertical-align: middle;
flex-grow: 1;
}
.icon-delete {
@@ -1180,6 +1302,22 @@ input.input-inline {
position: relative;
}
.board-detail__deleted-list__item {
display: flex;
flex-direction: row;
* {
flex-basis: 44px;
}
.title {
flex-grow: 2;
}
.live-relative-timestamp {
flex-grow: 1;
}
}
#board-detail-labels {
ul li {
input {
@@ -1225,12 +1363,23 @@ input.input-inline {
.tabHeaders {
clear: both;
overflow: hidden;
overflow: initial;
margin-bottom: 0;
.icon {
display: inline-block;
background-size: contain;
margin-right: 5px;
opacity: 0.5;
}
}
.tabsContainer {
margin-top: 15px;
height: 100%;
.tab {
height: 100%;
}
}
.ui-select-offscreen {
@@ -1241,7 +1390,7 @@ input.input-inline {
padding: 0;
float: left !important;
display: block;
border-radius: 0px 0px 5px 5px !important;
border-radius: 3px !important;
.select-label {
color: $color-primary-text;
@@ -1272,6 +1421,10 @@ input.input-inline {
}
.select2-search-field {
margin-right: -10px;
flex-grow: 1;
input {
width: 100% !important;
}
}
}
@@ -1309,6 +1462,8 @@ input.input-inline {
*/
#markdown {
width: 100% !important;
min-height: 40px;
cursor: text;
p {
margin-bottom: 15px;
@@ -1362,7 +1517,7 @@ input.input-inline {
}
pre {
background-color: $color-lightgrey;
background-color: var(--color-background-dark, $color-lightgrey);
padding: 3px;
overflow: auto;
@@ -1385,11 +1540,50 @@ input.input-inline {
display: inline-block;
min-height: 12px;
}
li input[type=checkbox] {
margin: 0px 10px 0px -20px;
li input[type="checkbox"].checkbox + label::before {
margin-left: -15px;
}
input[type="checkbox"].checkbox + label::before {
position: relative;
z-index: 100;
margin-right: 10px;
margin-top: 0;
}
li input[type="checkbox"].checkbox:not(:checked) + label::before {
background-color: $color-main-background;
}
table {
margin-bottom: 10px;
border-collapse: collapse;
thead {
background-color: var(--color-background-dark, $color-lightgrey);
}
td, th {
border: 1px solid var(--color-background-darker, $color-darkgrey);
padding: 3px;
}
}
}
.section-wrapper {
display: flex;
max-width: 100%;
margin-top: 10px;
}
.section-label {
background-position: 0px center;
width:28px;
flex-shrink: 0;
}
.section-details {
flex-grow: 1;
}
/**
* Mobile optimizations
*/
@@ -1434,3 +1628,27 @@ input.input-inline {
.ui-select-dropdown.select2-drop-active {
opacity: 1 !important;
}
/**
* Custom app sidebar handling
*/
body:not(.snapjs-left) {
.app-navigation-hide {
#app-content {
margin-left: 0 !important; /* overwrite margin since we want the translateX to handle it*/
}
#app-navigation {
transform: translateX(-300px);
}
}
}
@media only screen and (max-width: 768px) {
#app-navigation-toggle-custom {
display: none;
}
}
/**
* Print settings, better leave them at the eof
*/
@import 'print.scss';

27
docs/API-Nextcloud.md Normal file
View File

@@ -0,0 +1,27 @@
# Nextcloud APIs
## Comments
Comments are stored using the Nextcloud Comments API. You can use the WebDAV endpoint of Nextcloud to fetch, update and delete comments.
### List comments
PROPFIND`remote.php/dav/comments/deckCard/{cardId}`
### Create comment
POST `remote.php/dav/comments/deckCard/{cardId}`
### Update comment
PROPPATCH `remote.php/dav/comments/deckCard/{cardId}/{commentId}`
### Delete comment
DELETE `remote.php/dav/comments/deckCard/{cardId}/{commentId}`
## Activity
The Nextcloud activity app provides an API to fetch activities filtered for deck: [Activity app API documentation](https://github.com/nextcloud/activity/blob/master/docs/endpoint-v2.md)
The deck app offers a filter `deck` to only request activity events that are relevant.

833
docs/API.md Normal file
View File

@@ -0,0 +1,833 @@
The REST API provides access for authenticated users to their data inside the Deck app. To get a better understand of Decks data models and their relations, please have a look at the [data structure](structure.md) documentation.
# Prequisited
- All requests require a `OCS-APIRequest` HTTP header to be set to `true` and a `Content-Type` of `application/json`.
- The API is located at https://nextcloud.local/index.php/apps/deck/api/v1.0
## Naming
- Board is the the project like grouping of tasks that can be shared to different users and groups
- Stack is the grouping of cards which is rendered in vertical columns in the UI
- Card is the representation of a single task
- Labels are defined on a board level and can be assigned to any number of cards
## Global responses
### 400 Bad request
In case the request is invalid, e.g. because a parameter is missing, a 400 error will be returned:
```json
{
"status": 400,
"message": "title must be provided"
}
```
### 403 Permission denied
In any case a user doesn't have access to a requested entity, a 403 error will be returned:
```json
{
"status": 403,
"message": "Permission denied"
}
```
## Headers
### If-Modified-Since
Some index endpoints support limiting the result set to entries that have been changed since the given time.
Example curl request:
```bash
curl -u admin:admin -X GET \
'http://localhost:8000/index.php/apps/deck/api/v1.0/boards/2/stacks' \
-H "OCS-APIRequest: true" \
-H "If-Modified-Since: Mon, 5 Nov 2018 09:28:00 GMT"
```
# Endpoints
## Boards
### GET /boards - Get a list of boards
#### Headers
The board list endpoint supports setting an `If-Modified-Since` header to limit the results to entities that are changed after the provided time.
#### Response
##### 200 Success
Returns an array of board items
```json
[
{
"title": "Board title",
"owner": {
"primaryKey": "admin",
"uid": "admin",
"displayname": "Administrator"
},
"color": "ff0000",
"archived": false,
"labels": [],
"acl": [],
"permissions": {
"PERMISSION_READ": true,
"PERMISSION_EDIT": true,
"PERMISSION_MANAGE": true,
"PERMISSION_SHARE": true
},
"users": [],
"shared": 0,
"deletedAt": 0,
"id": 10
}
]
```
### POST /boards - Create a new board
#### Request body
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------------------------- |
| title | String | The title of the new board |
| color | String | The hexadecimal color of the new board (e.g. FF0000) |
```json
{
"title": "Board title",
"color": "ff0000"
}
```
#### Response
##### 200 Success
```json
{
"title": "Board title",
"owner": {
"primaryKey": "admin",
"uid": "admin",
"displayname": "Administrator"
},
"color": "ff0000",
"archived": false,
"labels": [
{
"title": "Finished",
"color": "31CC7C",
"boardId": 10,
"cardId": null,
"id": 37
},
{
"title": "To review",
"color": "317CCC",
"boardId": 10,
"cardId": null,
"id": 38
},
{
"title": "Action needed",
"color": "FF7A66",
"boardId": 10,
"cardId": null,
"id": 39
},
{
"title": "Later",
"color": "F1DB50",
"boardId": 10,
"cardId": null,
"id": 40
}
],
"acl": [],
"permissions": {
"PERMISSION_READ": true,
"PERMISSION_EDIT": true,
"PERMISSION_MANAGE": true,
"PERMISSION_SHARE": true
},
"users": [],
"deletedAt": 0,
"id": 10
}
```
### GET /boards/{boardId} - Get board details
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | ---------------------------- |
| boardId | Integer | The id of the board to fetch |
#### Response
##### 200 Success
```json
{
"title": "Board title",
"owner": {
"primaryKey": "admin",
"uid": "admin",
"displayname": "Administrator"
},
"color": "ff0000",
"archived": false,
"labels": [
{
"title": "Finished",
"color": "31CC7C",
"boardId": "10",
"cardId": null,
"id": 37
},
{
"title": "To review",
"color": "317CCC",
"boardId": "10",
"cardId": null,
"id": 38
},
{
"title": "Action needed",
"color": "FF7A66",
"boardId": "10",
"cardId": null,
"id": 39
},
{
"title": "Later",
"color": "F1DB50",
"boardId": "10",
"cardId": null,
"id": 40
}
],
"acl": [],
"permissions": {
"PERMISSION_READ": true,
"PERMISSION_EDIT": true,
"PERMISSION_MANAGE": true,
"PERMISSION_SHARE": true
},
"users": [
{
"primaryKey": "admin",
"uid": "admin",
"displayname": "Administrator"
}
],
"deletedAt": 0,
"id": 10
}
```
### PUT /boards/{boardId} - Update board details
#### Request body
| Parameter | Type | Description |
| --------- | ------ | ---------------------------------------------------- |
| title | String | The title of the new board |
| color | String | The hexadecimal color of the new board (e.g. FF0000) |
| archived | Bool | The hexadecimal color of the new board (e.g. FF0000) |
```json
{
"title": "Board title",
"color": "ff0000",
"archived": false
}
```
#### Response
##### 200 Success
### DELETE /boards/{boardId} - Delete a board
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | ---------------------------- |
| boardId | Integer | The id of the board to fetch |
#### Response
##### 200 Success
### POST /boards/{boardId}/undo_delete - Restore a deleted board
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | ---------------------------- |
| boardId | Integer | The id of the board to fetch |
#### Response
##### 200 Success
## Stacks
### GET /board/{boardId}/stacks - Get stacks
#### Headers
The board list endpoint supports setting an `If-Modified-Since` header to limit the results to entities that are changed after the provided time.
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | ---------------------------- |
| boardId | Integer | The id of the board to fetch |
#### Response
```json
[
{
"title": "ToDo",
"boardId": 2,
"deletedAt": 0,
"lastModified": 1541426139,
"cards": [...],
"order": 999,
"id": 4
}
]
```
##### 200 Success
### GET /board/{boardId}/stacks/archived - Get list of archived stacks
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | ---------------------------- |
| boardId | Integer | The id of the board to fetch |
#### Response
```json
[
{
"title": "ToDo",
"boardId": 2,
"deletedAt": 0,
"lastModified": 1541426139,
"cards": [...],
"order": 999,
"id": 4
}
]
```
##### 200 Success
### GET /board/{boardId}/stacks/{stackId} - Get stack details
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | ---------------------------------------- |
| boardId | Integer | The id of the board the stack belongs to |
| stackId | Integer | The id of the stack |
#### Response
##### 200 Success
### POST /board/{boardId}/stacks - Create a new stack
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | ---------------------------- |
| boardId | Integer | The id of the board to fetch |
#### Response
##### 200 Success
### PUT /board/{boardId}/stacks/{stackId} - Update stack details
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | ---------------------------------------- |
| boardId | Integer | The id of the board the stack belongs to |
| stackId | Integer | The id of the stack |
#### Request body
| Parameter | Type | Description |
| --------- | ------- | ---------------------------------------------------- |
| title | String | The title of the new stack |
| order | Integer | Order for sorting the stacks |
#### Response
##### 200 Success
### DELETE /board/{boardId}/stacks/{stackId} - Delete a stack
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | ---------------------------------------- |
| boardId | Integer | The id of the board the stack belongs to |
| stackId | Integer | The id of the stack |
#### Response
##### 200 Success
## Cards
### GET /board/{boardId}/stacks/{stackId}/cards/{cardId} - Get card details
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| boardId | Integer | The id of the board the card belongs to |
| stackId | Integer | The id of the stack the card belongs to |
| cardId | Integer | The id of the card |
#### Response
##### 200 Success
### POST /board/{boardId}/stacks/{stackId}/cards - Create a new card
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| boardId | Integer | The id of the board the card belongs to |
| stackId | Integer | The id of the stack the card belongs to |
#### Request body
| Parameter | Type | Description |
| --------- | ------- | ---------------------------------------------------- |
| title | String | The title of the new stack |
| type | String | Type of the card (for later use) use 'plain' for now |
| order | Integer | Order for sorting the stacks |
#### Response
```json
{
"title":"Test",
"description":null,
"stackId":6,
"type":"plain",
"lastModified":1541528026,
"createdAt":1541528026,
"labels":null,
"assignedUsers":null,
"attachments":null,
"attachmentCount":null,
"owner":"admin",
"order":999,
"archived":false,
"duedate":null,
"deletedAt":0,
"commentsUnread":0,
"id":10,
"overdue":0
}
```
##### 200 Success
### PUT /board/{boardId}/stacks/{stackId}/cards/{cardId} - Update card details
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| boardId | Integer | The id of the board the card belongs to |
| stackId | Integer | The id of the stack the card belongs to |
| cardId | Integer | The id of the card |
#### Request data
| Parameter | Type | Description |
|-------------|-----------|------------------------------------------------------|
| title | String | The card title |
| description | String | The markdown description of the card |
| type | String | Type of the card (for later use) use 'plain' for now |
| order | Integer | Order for sorting the stacks |
| duedate | timestamp | The duedate of the card or null |
```
{
"title": "Test card",
"description": "A card description",
"type": "plain",
"order": 999,
"duedate": null,
}
```
#### Response
##### 200 Success
### DELETE /board/{boardId}/stacks/{stackId}/cards/{cardId} - Delete a card
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| boardId | Integer | The id of the board the card belongs to |
| stackId | Integer | The id of the stack the card belongs to |
| cardId | Integer | The id of the card |
#### Response
##### 200 Success
### PUT /board/{boardId}/stacks/{stackId}/cards/{cardId}/assignLabel - Assign a label to a card
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| boardId | Integer | The id of the board the card belongs to |
| stackId | Integer | The id of the stack the card belongs to |
| cardId | Integer | The id of the card |
#### Request data
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| labelId | Integer | The label id to assign to the card |
#### Response
##### 200 Success
### PUT /board/{boardId}/stacks/{stackId}/cards/{cardId}/removeLabel - Remove a label to a card
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| boardId | Integer | The id of the board the card belongs to |
| stackId | Integer | The id of the stack the card belongs to |
| cardId | Integer | The id of the card |
#### Request data
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| labelId | Integer | The label id to remove to the card |
#### Response
##### 200 Success
### PUT /board/{boardId}/stacks/{stackId}/cards/{cardId}/assignUser - Assign a user to a card
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| boardId | Integer | The id of the board the card belongs to |
| stackId | Integer | The id of the stack the card belongs to |
| cardId | Integer | The id of the card |
#### Request data
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| userId | String | The user id to assign to the card |
#### Response
##### 200 Success
### PUT /board/{boardId}/stacks/{stackId}/cards/{cardId}/unassignUser - Assign a user to a card
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| boardId | Integer | The id of the board the card belongs to |
| stackId | Integer | The id of the stack the card belongs to |
| cardId | Integer | The id of the card |
#### Request data
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| userId | String | The user id to assign to the card |
#### Response
##### 200 Success
### PUT /board/{boardId}/stacks/{stackId}/cards/{cardId}/reorder - Change the sorting order of a card
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| boardId | Integer | The id of the board the card belongs to |
| stackId | Integer | The id of the stack the card belongs to |
| cardId | Integer | The id of the card |
#### Request data
| Parameter | Type | Description |
| --------- | ------- | ----------------------------------------------------------- |
| order | Integer | The position in the stack where the card should be moved to |
| stackId | Integer | The id of the stack where the card should be moved to |
#### Response
##### 200 Success
## Labels
### GET /board/{boardId}/labels/{labelId} - Get label details
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | ---------------------------------------- |
| boardId | Integer | The id of the board the label belongs to |
| labelId | Integer | The id of the label |
#### Response
##### 200 Success
```json
{
"title": "Abgeschlossen",
"color": "31CC7C",
"boardId": "2",
"cardId": null,
"id": 5
}
```
### POST /board/{boardId}/labels - Create a new label
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | ---------------------------------------- |
| boardId | Integer | The id of the board the label belongs to |
#### Request data
```json
{
"title": "Finished",
"color": "31CC7C"
}
```
#### Response
##### 200 Success
### PUT /board/{boardId}/labels/{labelId} - Update label details
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | ---------------------------------------- |
| boardId | Integer | The id of the board the label belongs to |
| labelId | Integer | The id of the label |
#### Request data
```json
{
"title": "Finished",
"color": "31CC7C"
}
```
#### Response
##### 200 Success
### DELETE /board/{boardId}/labels/{labelId} - Delete a label
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | ---------------------------------------- |
| boardId | Integer | The id of the board the label belongs to |
| labelId | Integer | The id of the label |
#### Response
##### 200 Success
## Attachments
### GET /board/{boardId}/stacks/{stackId}/cards/{cardId}/attachments - Get a list of attachments
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| boardId | Integer | The id of the board the card belongs to |
| stackId | Integer | The id of the stack the card belongs to |
| cardId | Integer | The id of the card |
#### Response
##### 200 Success
```json
[
{
"cardId": 5,
"type": "deck_file",
"data": "6DADC2C69F4.eml",
"lastModified": 1541529048,
"createdAt": 1541529048,
"createdBy": "admin",
"deletedAt": 0,
"extendedData": {
"filesize": 922258,
"mimetype": "application/octet-stream",
"info": {
"dirname": ".",
"basename": "6DADC2C69F4.eml",
"extension": "eml",
"filename": "6DADC2C69F4"
}
},
"id": 6
}
]
```
### GET /board/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId} - Get the attachment file
#### Request parameters
| Parameter | Type | Description |
| ------------ | ------- | --------------------------------------------- |
| boardId | Integer | The id of the board the attachment belongs to |
| stackId | Integer | The id of the stack the attachment belongs to |
| cardId | Integer | The id of the card the attachment belongs to |
| attachmentId | Integer | The id of the attachment |
#### Response
##### 200 Success
### POST /board/{boardId}/stacks/{stackId}/cards/{cardId}/attachments - Upload an attachment
#### Request parameters
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------------- |
| boardId | Integer | The id of the board the attachment belongs to |
| stackId | Integer | The id of the stack the attachment belongs to |
| cardId | Integer | The id of the card the attachment belongs to |
#### Request data
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------------- |
| type | String | The type of the attachement |
| file | Binary | File data to add as an attachment |
For now only `deck_file` is supported as an attachment type.
#### Response
##### 200 Success
### PUT /board/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId} - Update an attachment
#### Request parameters
| Parameter | Type | Description |
| ------------ | ------- | --------------------------------------------- |
| boardId | Integer | The id of the board the attachment belongs to |
| stackId | Integer | The id of the stack the attachment belongs to |
| cardId | Integer | The id of the card the attachment belongs to |
| attachmentId | Integer | The id of the attachment |
#### Request data
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------------- |
| type | String | The type of the attachement |
| file | Binary | File data to add as an attachment |
For now only `deck_file` is supported as an attachment type.
#### Response
##### 200 Success
### DELETE /board/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId} - Delete an attachment
#### Request parameters
| Parameter | Type | Description |
| ------------ | ------- | --------------------------------------------- |
| boardId | Integer | The id of the board the attachment belongs to |
| stackId | Integer | The id of the stack the attachment belongs to |
| cardId | Integer | The id of the card the attachment belongs to |
| attachmentId | Integer | The id of the attachment |
#### Response
##### 200 Success
### PUT /board/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId}/restore - Resore a deleted attachment
#### Request parameters
| Parameter | Type | Description |
| ------------ | ------- | --------------------------------------------- |
| boardId | Integer | The id of the board the attachment belongs to |
| stackId | Integer | The id of the stack the attachment belongs to |
| cardId | Integer | The id of the card the attachment belongs to |
| attachmentId | Integer | The id of the attachment |
#### Response
##### 200 Success

27
docs/Markdown.md Normal file
View File

@@ -0,0 +1,27 @@
## What is Markdown
The [wikipedia markdown entry](https://en.wikipedia.org/wiki/Markdown) introduced markdown as :
> Markdown is a lightweight markup language with plain text formatting syntax. It is designed so that it can be converted to HTML and many other formats using a tool by the same name. Markdown is often used to format readme files, for writing messages in online discussion forums, and to create rich text using a plain text editor. As the initial description of Markdown contained ambiguities and unanswered questions, many implementations and extensions of Markdown appeared over the years to answer these issues.
## Markdown in Deck
The Deck application plugin uses the [markdown-it](https://github.com/markdown-it/markdown-it) script to offer support for markdown in the cards description field.
## Supported Markdown
Markdown comes in may flavors. The best way to learn markdown and understand how to use it, is simply to [try it](https://markdown-it.github.io) on the original script official playground.
That same link offers also a comprehensive list of what is supported, and what is not - rendering it unnecessary to duplicate that content in here.
[CommonMark Markdown Reference](http://commonmark.org/help/)
## Known Issues
As per [issue #127](https://github.com/nextcloud/deck/issues/127) Due to a known limitation of the current script to support markdown, Links that contain the `")"` character will not display well, or will break.
The recommended solution is to use `"<"` and `">"` to wrap those links. It should assure their integrity.
If you come by another case of broken link, or broken display of links, please report it by opening a new issue.

3
docs/extra.css Normal file
View File

@@ -0,0 +1,3 @@
.subnav ul {
padding-left: 20px;
}

1
docs/index.md Symbolic link
View File

@@ -0,0 +1 @@
../README.md

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

6
docs/structure.md Normal file
View File

@@ -0,0 +1,6 @@
## Database structure
Deck stores most of its data inside of the database. The structure and relationships between entities is documented in the following ER diagram:
![Screenshot](resources/er-diagram.jpg)

1
img/calendar-dark.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" version="1.1" height="32" viewbox="0 0 32 32"><path fill="#000" d="m8 2c-1.108 0-2 0.892-2 2v4c0 1.108 0.892 2 2 2s2-0.892 2-2v-4c0-1.108-0.892-2-2-2zm16 0c-1.108 0-2 0.892-2 2v4c0 1.108 0.892 2 2 2s2-0.892 2-2v-4c0-1.108-0.892-2-2-2zm-13 4v2c0 1.662-1.338 3-3 3s-3-1.338-3-3v-1.875a3.993 3.993 0 0 0 -3 3.875v16c0 2.216 1.784 4 4 4h20c2.216 0 4-1.784 4-4v-16a3.993 3.993 0 0 0 -3 -3.875v1.875c0 1.662-1.338 3-3 3s-3-1.338-3-3v-2zm-4.906 10h19.812a0.09 0.09 0 0 1 0.094 0.094v9.812a0.09 0.09 0 0 1 -0.094 0.094h-19.812a0.09 0.09 0 0 1 -0.094 -0.094v-9.812a0.09 0.09 0 0 1 0.094 -0.094z"/></svg>

After

Width:  |  Height:  |  Size: 646 B

1
img/description.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" version="1.1" height="16"><path fill="#000" d="m2.5 1c-0.28 0-0.5 0.22-0.5 0.5v13c0 0.28 0.22 0.5 0.5 0.5h11c0.28 0 0.5-0.22 0.5-0.5v-10.5l-3-3h-8.5zm1.5 2h6v1h-6v-1zm0 3h5v1h-5v-1zm0 3h8v1h-8v-1zm0 3h4v1h-4v-1z"/></svg>

After

Width:  |  Height:  |  Size: 292 B

View File

@@ -0,0 +1 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 4.2333 4.2333" xmlns="http://www.w3.org/2000/svg"><g transform="translate(0 -292.77)" display="none" stroke-width=".23666"><rect x=".28112" y="293.43" width="3.7042" height="1.1906" ry=".20225"/><rect x=".26458" y="295.15" width="3.7042" height="1.1906" ry=".20225"/></g><g transform="translate(0 -292.77)"><g transform="matrix(.040404 0 0 .040404 -3.0978 290.01)"><rect x="83.629" y="114.13" width="91.678" height="13.097" stroke-width="3.9049"/><path d="m155.25 81.388-26.194 26.194-26.194-26.154z" stroke-width="6.5484"/><path d="m155.25 159.97-26.194-26.194-26.194 26.154z" stroke-width="6.5484"/></g></g></svg>

After

Width:  |  Height:  |  Size: 671 B

View File

@@ -0,0 +1 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 4.2333 4.2333" xmlns="http://www.w3.org/2000/svg"><g transform="translate(0 -292.77)" display="none" stroke-width=".23666"><rect x=".28112" y="293.43" width="3.7042" height="1.1906" ry=".20225"/><rect x=".26458" y="295.15" width="3.7042" height="1.1906" ry=".20225"/></g><g transform="translate(0 -292.77)"><g transform="matrix(.040404 0 0 .040404 -3.0978 290.01)"><rect x="83.629" y="114.13" width="91.678" height="13.097" stroke-width="3.9049"/><path d="m155.25 107.58-26.194-26.194-26.194 26.154z" stroke-width="6.5484"/><path d="m155.25 133.78-26.194 26.194-26.194-26.154z" stroke-width="6.5484"/></g></g></svg>

After

Width:  |  Height:  |  Size: 671 B

View File

@@ -1,4 +1,6 @@
{
"esversion": 6,
"globals": {
"jasmine" : false,
"spyOn" : false,
@@ -21,7 +23,6 @@
"devel" : true,
"eqeqeq" : true,
"eqnull" : false,
"es5" : true,
"evil" : false,
"forin" : true,
"immed" : true,
@@ -39,7 +40,6 @@
"plusplus" : false,
"quotmark" : "single",
"regexp" : false,
"strict" : true,
"sub" : true,
"trailing" : true,
"undef" : true,

View File

@@ -4,20 +4,20 @@
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
/* global angular */
@@ -48,13 +48,17 @@ import ngsortable from 'ng-sortable';
import md from 'angular-markdown-it';
import nganimate from 'angular-animate';
import 'angular-file-upload';
import ngInfiniteScroll from 'ng-infinite-scroll';
import '../legacy/jquery.atwho.min';
import '../legacy/jquery.caret.min';
var app = angular.module('Deck', [
ngsanitize,
uirouter,
angularuiselect,
ngsortable, md, nganimate,
'angularFileUpload'
'angularFileUpload',
ngInfiniteScroll
]);
export default app;

View File

@@ -71,8 +71,9 @@ app.config(function ($provide, $interpolateProvider, $httpProvider, $urlRouterPr
tab: {value: 0, dynamic: true},
},
views: {
'sidebarView': {
templateUrl: '/board.sidebarView.html'
'sidebarView@': {
templateUrl: '/board.sidebarView.html',
controller: 'BoardController'
}
}
})
@@ -82,7 +83,7 @@ app.config(function ($provide, $interpolateProvider, $httpProvider, $urlRouterPr
tab: {value: 0, dynamic: true},
},
views: {
'sidebarView': {
'sidebarView@': {
templateUrl: '/card.sidebarView.html',
controller: 'CardController'
}

View File

@@ -4,20 +4,20 @@
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
import app from './App.js';
@@ -56,26 +56,6 @@ app.run(function ($document, $rootScope, $transitions, BoardService) {
OC.filePath('deck', 'img', 'app-512.png')
);
$('#app-navigation-toggle').off('click');
// App sidebar on mobile
var snapper = new Snap({
element: document.getElementById('app-content'),
disable: 'right',
maxPosition: 250,
touchToDrag: false
});
$('#app-navigation-toggle').click(function () {
if ($(window).width() > 768) {
$('#app-navigation').toggle('hidden');
} else {
if (snapper.state().state === 'left') {
snapper.close();
} else {
snapper.open('left');
}
}
});
// Select all elements with data-toggle="tooltips" in the document
$('body').tooltip({
selector: '[data-toggle="tooltip"]'

View File

@@ -0,0 +1,349 @@
/*
* @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/* global OC OCA OCP t escapeHTML Handlebars moment */
import CommentCollection from '../legacy/commentcollection';
import CommentModel from '../legacy/commentmodel';
class ActivityController {
constructor ($scope, CardService, ActivityService, BoardService) {
'ngInject';
this.cardservice = CardService;
this.boardservice = BoardService;
this.activityservice = ActivityService;
this.$scope = $scope;
this.type = '';
this.loading = false;
this.status = {
commentCreateLoading: false
};
this.$scope.newComment = '';
this.$scope.newCommentString = 'New comment…';
this.currentUser = OC.getCurrentUser();
const self = this;
this.$scope.$watch(function () {
return self.element.id;
}, function (params) {
if (self.getData(self.element.id).length === 0) {
if (self.type === 'deck_card') {
self.activityservice.loadComments(self.element.id);
}
self.loading = true;
self.fetchUntilResults();
}
self.activityservice.fetchNewerActivities(self.type, self.element.id).then(function () {});
if (self.type === 'deck_card') {
self.cardservice.getCurrent().commentsUnread = 0;
}
}, true);
let $target = $('.newCommentForm .message');
this.applyAtWho($target);
this.activityservice.subscribe(this.$scope, function() {
self.$scope.$apply();
});
if (typeof OCA.Activity.Templates !== 'undefined') {
OCA.Activity.Templates.userLocal = Handlebars.template({"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) {
var helper;
// Compiled handlesbars template
// '<span class="avatar-name-wrapper"><avatar ng-attr-contactsmenu ng-attr-tooltip ng-attr-user="{{ id }}" ng-attr-displayname="{{name}}" ng-attr-size="16"></avatar> {{ name }}</span>';
return "<span class=\"avatar-name-wrapper\"><avatar ng-attr-contactsmenu ng-attr-tooltip ng-attr-user=\""
+ container.escapeExpression(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : {},{"name":"id","hash":{},"data":data}) : helper)))
+ "\" ng-attr-displayname=\""
+ container.escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : {},{"name":"name","hash":{},"data":data}) : helper)))
+ "\" ng-attr-size=\"16\"></avatar> "
+ container.escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : {},{"name":"name","hash":{},"data":data}) : helper)))
+ "</span>";
},"useData":true});
} else {
OCA.Activity.RichObjectStringParser._userLocalTemplate = '<span class="avatar-name-wrapper"><avatar ng-attr-contactsmenu ng-attr-tooltip ng-attr-user="{{ id }}" ng-attr-displayname="{{name}}" ng-attr-size="16"></avatar> {{ name }}</span>';
}
}
applyAtWho($target) {
const self = this;
if (!$target) {
return;
}
$target.atwho({
at: '@',
callbacks: {
remoteFilter: function(query, callback) {
let uids = self.boardservice.getUsers();
uids = uids.filter((x) => x.uid.toLowerCase().includes(query.toLowerCase()) || x.displayname.toLowerCase().includes(query.toLowerCase()));
callback(uids);
},
highlighter: function (li) {
// misuse the highlighter callback to instead of
// highlighting loads the avatars.
var $li = $(li);
$li.find('.avatar').avatar(undefined, 32);
return $li;
},
sorter: function (q, items) { return items; }
},
displayTpl: function (item) {
return '<li>' +
'<span class="avatar-name-wrapper">' +
'<span class="avatar" ' +
'data-username="' + escapeHTML(item.uid) + '" ' + // for avatars
'data-user="' + escapeHTML(item.uid) + '" ' + // for contactsmenu
'data-user-display-name="' + escapeHTML(item.displayname) + '">' +
'</span>' +
'<strong>' + escapeHTML(item.displayname) + '</strong>' +
'</span></li>';
},
insertTpl: function (item) {
return '' +
'<span class="avatar-name-wrapper">' +
'<span class="avatar" ' +
'data-username="' + escapeHTML(item.uid) + '" ' + // for avatars
'data-user="' + escapeHTML(item.uid) + '" ' + // for contactsmenu
'data-user-display-name="' + escapeHTML(item.displayname) + '">' +
'</span>' +
'<strong>' + escapeHTML(item.displayname) + '</strong>' +
'</span>';
},
searchKey: 'displayname'
});
$target.on('inserted.atwho', function (je, $el) {
$(je.target).find(
'span[data-username="' + $el.find('[data-username]').data('username') + '"]'
).avatar(undefined, 16);
});
$target.on('shown.atwho', function (je) {
$target.find('.avatar').avatar(undefined, 16);
});
}
commentBodyToPlain(content) {
let $comment = $('<div/>').html(content);
$comment.find('.avatar-name-wrapper').each(function () {
var $this = $(this);
var $inserted = $this.parent();
$inserted.html('@' + $this.find('.avatar').data('username'));
});
$comment.html(OCP.Comments.richToPlain($comment.html()));
$comment.html($comment.html().replace(/<br\s*[\/]?>/gi, '\n'));
return $comment.text();
}
static _composeHTMLMention(uid, displayName) {
var avatar = '' +
'<span class="avatar" data-username="' + escapeHTML(uid) + '" data-user="' + escapeHTML(uid) + '" ng-attr-size="16" ' +
'ng-attr-user="' + escapeHTML(uid) + '" ' +
'ng-attr-displayname="' + escapeHTML(displayName) + '" ng-attr-contactsmenu="true">' +
'</span>';
var isCurrentUser = (uid === OC.getCurrentUser().uid);
return '' +
'<span class="atwho-inserted" contenteditable="false">' +
'<span class="avatar-name-wrapper' + (isCurrentUser ? ' currentUser' : '') + '">' +
avatar +
'<strong>' + escapeHTML(displayName) + '</strong>' +
'</span>' +
'</span>';
}
formatMessage(activity) {
let message = activity.message;
let mentions = activity.commentModel.get('mentions');
const editMode = false;
message = escapeHTML(message).replace(/\n/g, '<br/>');
for(var i in mentions) {
if(!mentions.hasOwnProperty(i)) {
return;
}
var mention = '@' + mentions[i].mentionId;
// escape possible regex characters in the name
mention = mention.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
const displayName = ActivityController._composeHTMLMention(mentions[i].mentionId, mentions[i].mentionDisplayName);
// replace every mention either at the start of the input or after a whitespace
// followed by a non-word character.
message = message.replace(new RegExp('(^|\\s)(' + mention + ')\\b', 'g'),
function(match, p1) {
// to get number of whitespaces (0 vs 1) right
return p1+displayName;
}
);
}
if(editMode !== true) {
message = OCP.Comments.plainToRich(message);
}
return message;
}
postComment() {
const self = this;
this.status.commentCreateLoading = true;
let content = this.commentBodyToPlain(self.$scope.newComment);
if (content.length < 1) {
self.status.commentCreateLoading = false;
OC.Notification.showTemporary(t('deck', 'Please provide a content for your comment.'));
return;
}
var model = this.activityservice.commentCollection.create({
actorId: OC.getCurrentUser().uid,
actorDisplayName: OC.getCurrentUser().displayName,
actorType: 'users',
verb: 'comment',
message: content,
creationDateTime: (new Date()).toUTCString()
}, {
at: 0,
// wait for real creation before adding
wait: true,
success: function() {
self.$scope.newComment = '';
self.activityservice.fetchNewerActivities(self.type, self.element.id).then(function () {});
self.status.commentCreateLoading = false;
},
error: function() {
self.status.commentCreateLoading = false;
OC.Notification.showTemporary(t('deck', 'Posting the comment failed.'));
}
});
}
updateComment(item) {
item.commentEdit = this.formatMessage(item);
let $target = $('.newCommentForm .message');
this.applyAtWho($target);
/** Workaround to trigger avatar rendering after the view has been updated */
window.setTimeout(function () {
$target.find('.avatar').avatar(undefined, 16);
}, 0);
}
editComment(item) {
const self = this;
let content = this.commentBodyToPlain(item.commentEdit);
if (content.length < 1) {
OC.Notification.showTemporary(t('deck', 'Please provide a content for your comment.'));
return;
}
/** We need to save the model and afterwards run a fetch to update the mentions
* and call apply to propagate the changes to angular
*/
item.commentModel.on('sync', function() {
item.commentModel.off('sync');
item.commentModel.fetch({
success: function() {
self.$scope.$apply();
}
});
});
item.commentModel.save({
message: content,
});
item.message = content;
item.commentEdit = undefined;
}
deleteComment(item) {
item.commentModel.destroy();
item.deleted = true;
item.commentModel = undefined;
item.message = t('deck', 'The comment has been deleted');
}
getData(id) {
return this.activityservice.getData(this.type, id);
}
parseMessage(activity) {
let subject = activity.subject_rich[0];
let parameters = activity.subject_rich[1];
if (parameters.after && parameters.after.id && parameters.after.id.startsWith('dt:')) {
let dateTime = parameters.after.id.substr(3);
parameters.after.name = moment(dateTime).format('L LTS');
}
return OCA.Activity.RichObjectStringParser.parseMessage(subject, parameters);
}
fetchUntilResults () {
const self = this;
let dataLengthBefore = self.getData(self.element.id).length;
let _executeFetch = function() {
let promise = self.activityservice.fetchMoreActivities(self.type, self.element.id);
promise.then(function (data) {
let dataLengthAfter = self.getData(self.element.id).length;
if (data !== null && (dataLengthAfter <= dataLengthBefore || dataLengthAfter < self.activityservice.RESULT_PER_PAGE)) {
_executeFetch();
} else {
self.loading = false;
}
}, function () {
self.loading = false;
self.$scope.$apply();
});
};
_executeFetch();
}
getComments() {
return this.activityservice.comments;
}
getActivityStream() {
let activities = this.activityservice.getData(this.type, this.element.id);
return activities;
}
page() {
if (!this.activityservice.since[this.type][this.element.id].finished) {
this.loading = true;
this.fetchUntilResults();
} else {
this.loading = false;
}
}
loadingNewer() {
return this.activityservice.runningNewer;
}
t(text) {
return t('deck', text);
}
}
let activityComponent = {
templateUrl: OC.linkTo('deck', 'templates/part.card.activity.html'),
controller: ActivityController,
bindings: {
type: '@',
element: '='
}
};
export default activityComponent;

View File

@@ -4,25 +4,25 @@
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
import app from '../app/App.js';
/** global: OC */
/* globals oc_current_user: false */
app.controller('AppController', function ($scope, $location, $http, $log, $rootScope, $attrs) {
$rootScope.sidebar = {
show: false
@@ -30,4 +30,15 @@ app.controller('AppController', function ($scope, $location, $http, $log, $rootS
$scope.sidebar = $rootScope.sidebar;
$scope.user = oc_current_user;
$rootScope.config = JSON.parse($attrs.config);
$rootScope.compactMode = localStorage.getItem('deck.compactMode') === 'true';
$scope.appNavigationHide = localStorage.getItem('deck.appNavigationHide') === 'true';
$scope.toggleSidebar = function() {
if ($(window).width() > 768) {
$log.debug($scope.appNavigationHide);
$scope.appNavigationHide = !$scope.appNavigationHide;
localStorage.setItem('deck.appNavigationHide', JSON.stringify($scope.appNavigationHide));
}
};
});

View File

@@ -4,24 +4,24 @@
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
import app from '../app/App.js';
/* global oc_defaults OC */
/* global oc_defaults OC OCP OCA */
app.controller('BoardController', function ($rootScope, $scope, $stateParams, StatusService, BoardService, StackService, CardService, LabelService, $state, $transitions, $filter, FileService) {
$scope.sidebar = $rootScope.sidebar;
@@ -41,6 +41,48 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
$scope.defaultColors = ['31CC7C', '317CCC', 'FF7A66', 'F1DB50', '7C31CC', 'CC317C', '3A3B3D', 'CACBCD'];
$scope.board = BoardService.getCurrent();
$scope.uploader = FileService.uploader;
$scope.searchText = '';
$scope.startTitleEdit = function(card) {
card.renameTitle = card.title;
card.status = card.status || {};
card.status.editCard = true;
};
$scope.finishTitleEdit = function(card) {
var newTitle;
if (!card.renameTitle || !card.renameTitle.trim()) {
newTitle = '';
} else {
newTitle = card.renameTitle.trim();
}
if (newTitle === card.title) {
// title unchanged
card.status.editCard = false;
delete card.renameTitle;
} else if (newTitle !== '') {
// title changed
card.title = newTitle;
CardService.update(card).then(function (data) {
card.status.editCard = false;
delete card.renameTitle;
});
} else {
// empty title
card.status.editCard = false;
delete card.renameTitle;
}
};
$scope.$watch(function() {
return $scope.params.tab;
}, function (newTab, oldTab) {
if (newTab === 2 && oldTab !== 2) {
CardService.fetchDeleted($scope.id);
StackService.fetchDeleted($scope.id);
}
});
// workaround for $stateParams changes not being propagated
$scope.$watch(function() {
@@ -59,8 +101,8 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
* @returns array of [finished, total] checkboxes
*/
$scope.getCheckboxes = function(text) {
const regTotal = /\[(X|\s|\_|\-)\]\s(.*)/ig;
const regFinished = /\[(X|\_|\-)\]\s(.*)/ig;
const regTotal = /\[(X|\s|\_|\-)\]/igm;
const regFinished = /\[(X|\_|\-)\]/igm;
return [
((text || '').match(regFinished) || []).length,
((text || '').match(regTotal) || []).length
@@ -106,6 +148,11 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
}
});
$scope.toggleCompactMode = function() {
$rootScope.compactMode = !$rootScope.compactMode;
localStorage.setItem('deck.compactMode', JSON.stringify($rootScope.compactMode));
};
$scope.stacksData = StackService;
$scope.stacks = [];
$scope.$watch('stacksData', function () {
@@ -175,31 +222,96 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
};
$scope.createCard = function (stack, title) {
var newCard = {
'title': title,
'stackId': stack,
'type': 'plain'
};
CardService.create(newCard).then(function (data) {
$scope.stackservice.addCard(data);
$scope.newCard.title = '';
});
if (this['addCardForm' + stack].$valid) {
var newCard = {
'title': title,
'stackId': stack,
'type': 'plain'
};
CardService.create(newCard).then(function (data) {
$scope.stackservice.addCard(data);
$scope.newCard.title = '';
});
}
};
$scope.stackDelete = function (stack) {
$scope.stackservice.delete(stack.id);
};
$scope.stackUndoDelete = function (deletedStack) {
return StackService.undoDelete(deletedStack);
};
$scope.cardDelete = function (card) {
OC.dialogs.confirm(t('deck', 'Are you sure you want to delete this card with all of its data?'), t('deck', 'Delete'), function(state) {
if (!state) {
return;
}
CardService.delete(card.id).then(function () {
StackService.removeCard(card);
});
CardService.delete(card.id).then(function () {
StackService.removeCard(card);
});
};
$scope.cardOrCardAndStackUndoDelete = function (deletedCard) {
var associatedDeletedStack = $scope.stackservice.deleted[deletedCard.stackId];
if(associatedDeletedStack !== undefined) {
$scope.cardAndStackUndoDeleteAskForConfirmation(deletedCard, associatedDeletedStack);
} else {
$scope.cardUndoDelete(deletedCard);
}
};
$scope.cardAndStackUndoDeleteAskForConfirmation = function(deletedCard, associatedDeletedStack) {
OC.dialogs.confirm(
t('deck', 'The associated stack is deleted as well, it will be restored as well.'),
t('deck', 'Restore associated stack'),
function(state) {
if (state) {
$scope.cardAndStackUndoDelete(deletedCard, associatedDeletedStack);
}
}
);
};
$scope.cardAndStackUndoDelete = function(deletedCard, associatedDeletedStack) {
$scope.stackUndoDelete(associatedDeletedStack).then(function() {
$scope.cardUndoDelete(deletedCard);
});
};
$scope.cardUndoDelete = function(deletedCard) {
CardService.undoDelete(deletedCard).then(function() {
StackService.addCard(deletedCard);
});
};
$scope.cardArchive = function (card) {
CardService.archive(card);
StackService.removeCard(card);
};
$scope.isCurrentUserAssigned = function (card) {
if (! CardService.get(card.id).assignedUsers) {
return false;
}
var userList = CardService.get(card.id).assignedUsers.filter(function (obj) {
return obj.participant.uid === OC.getCurrentUser().uid;
});
return userList.length === 1;
};
$scope.cardAssignToMe = function (card) {
CardService.assignUser(card, OC.getCurrentUser().uid)
.then(
function() {StackService.updateCard(card);}
);
// TODO: remove this jquery call. Fix and use appPopoverMenuUtils instead
$('.popovermenu').addClass('hidden');
};
$scope.cardUnassignFromMe = function (card) {
CardService.unassignUser(card, OC.getCurrentUser().uid);
StackService.updateCard(card);
// TODO: remove this jquery call.Fix and use appPopoverMenuUtils instead
$('.popovermenu').addClass('hidden');
};
$scope.cardUnarchive = function (card) {
CardService.unarchive(card);
StackService.removeCard(card);
@@ -212,6 +324,7 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
BoardService.getCurrent().labels.splice(i, 1);
// TODO: remove from cards
};
$scope.labelCreate = function (label) {
label.boardId = $scope.id;
LabelService.create(label).then(function (data) {
@@ -231,12 +344,14 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
BoardService.addAcl(sharee);
$scope.status.addSharee = null;
};
$scope.aclDelete = function (acl) {
BoardService.deleteAcl(acl).then(function(data) {
$scope.loadDefault();
$scope.refreshData();
});
};
$scope.aclUpdate = function (acl) {
BoardService.updateAcl(acl);
};
@@ -261,7 +376,7 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
itemMoved: function (event) {
event.source.itemScope.modelValue.status = event.dest.sortableScope.$parent.column;
var order = event.dest.index;
var card = event.source.itemScope.c;
var card = $scope.cardservice.get(event.source.itemScope.c.id);
var newStack = event.dest.sortableScope.$parent.s.id;
var oldStack = card.stackId;
card.stackId = newStack;
@@ -277,7 +392,7 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
},
orderChanged: function (event) {
var order = event.dest.index;
var card = event.source.itemScope.c;
var card = $scope.cardservice.get(event.source.itemScope.c.id);
var stack = event.dest.sortableScope.$parent.s.id;
CardService.reorder(card, order).then(function (data) {
StackService.reorderCard(card, order);
@@ -354,6 +469,14 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
};
};
$scope.colorValue = function(color) {
const re = /^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/;
if (re.test(color)) {
return color;
}
return '';
};
$scope.attachmentCount = function(card) {
if (Array.isArray(card.attachments)) {
return card.attachments.filter((obj) => obj.deletedAt === 0).length;
@@ -361,4 +484,12 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
return card.attachmentCount;
};
$scope.unreadCommentCount = function(card) {
return card.commentsUnread;
};
$scope.isTimelineEnabled = function() {
return OCP.Comments && OCA.Activity;
};
});

View File

@@ -4,28 +4,29 @@
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
/* global app moment angular OC */
/* global app moment angular OC OCP OCA */
import app from '../app/App.js';
app.controller('CardController', function ($scope, $rootScope, $sce, $location, $stateParams, $state, $interval, $timeout, $filter, BoardService, CardService, StackService, StatusService, markdownItConverter, FileService) {
$scope.sidebar = $rootScope.sidebar;
$scope.status = {
renameTitle: '',
lastEdit: 0,
lastSave: Date.now()
};
@@ -89,9 +90,10 @@ app.controller('CardController', function ($scope, $rootScope, $sce, $location,
});
$scope.cardRenameShow = function () {
if ($scope.archived || !BoardService.canEdit())
{return false;}
else {
if ($scope.archived || !BoardService.canEdit()) {
return false;
} else {
$scope.status.renameTitle = CardService.getCurrent().title;
$scope.status.cardRename = true;
}
};
@@ -99,11 +101,11 @@ app.controller('CardController', function ($scope, $rootScope, $sce, $location,
$scope.toggleCheckbox = function (id) {
$('#markdown input[type=checkbox]').attr('disabled', true);
$scope.status.edit = angular.copy(CardService.getCurrent());
var reg = /\[(X|\s|\_|\-)\]\s(.*)/ig;
var reg = /\[(X|\s|\_|\-)\]/ig;
var nth = 0;
$scope.status.edit.description = $scope.status.edit.description.replace(reg, function (match, i, original) {
var result = match;
if (nth++ === id) {
if ('' + nth++ === '' + id) {
if (match.match(/^\[\s\]/i)) {
result = match.replace(/\[\s\]/i, '[x]');
}
@@ -115,7 +117,7 @@ app.controller('CardController', function ($scope, $rootScope, $sce, $location,
return match;
});
CardService.update($scope.status.edit).then(function (data) {
var header = $('.section-header-tabbed .tabDetails');
var header = $('.tabDetails');
header.find('.save-indicator.unsaved').hide();
header.find('.save-indicator.saved').fadeIn(250).fadeOut(1000);
});
@@ -126,10 +128,11 @@ app.controller('CardController', function ($scope, $rootScope, $sce, $location,
var checkboxId = $($event.target).data('id');
if ($event.target.tagName === 'LABEL') {
$scope.toggleCheckbox(checkboxId);
return;
$event.stopPropagation();
return false;
}
if ($event.target.tagName === 'INPUT') {
$scope.toggleCheckbox(checkboxId);
$event.stopPropagation();
return;
}
if (BoardService.isArchived() || CardService.getCurrent().archived) {
@@ -144,7 +147,7 @@ app.controller('CardController', function ($scope, $rootScope, $sce, $location,
};
$scope.cardEditDescriptionChanged = function ($event) {
$scope.status.lastEdit = Date.now();
var header = $('.section-header-tabbed .tabDetails');
var header = $('.tabDetails');
header.find('.save-indicator.unsaved').show();
header.find('.save-indicator.saved').hide();
};
@@ -154,10 +157,10 @@ app.controller('CardController', function ($scope, $rootScope, $sce, $location,
if (timeSinceEdit > 1000 && $scope.status.lastEdit > $scope.status.lastSave && !$scope.status.saving) {
$scope.status.lastSave = currentTime;
$scope.status.saving = true;
var header = $('.section-header-tabbed .tabDetails');
var header = $('.tabDetails');
header.find('.save-indicator.unsaved').fadeIn(500);
CardService.update($scope.status.edit).then(function (data) {
var header = $('.section-header-tabbed .tabDetails');
var header = $('.tabDetails');
header.find('.save-indicator.unsaved').hide();
header.find('.save-indicator.saved').fadeIn(250).fadeOut(1000);
$scope.status.saving = false;
@@ -167,15 +170,33 @@ app.controller('CardController', function ($scope, $rootScope, $sce, $location,
// handle rename to update information on the board as well
$scope.cardRename = function (card) {
CardService.rename(card).then(function (data) {
var newTitle;
if (!$scope.status.renameTitle || !$scope.status.renameTitle.trim()) {
newTitle = '';
} else {
newTitle = $scope.status.renameTitle.trim();
}
if (newTitle === card.title) {
// title unchanged
$scope.status.renameCard = false;
});
} else if (newTitle !== '') {
// title changed
card.title = newTitle;
CardService.rename(card).then(function (data) {
$scope.status.renameCard = false;
});
} else {
// empty title
$scope.status.renameTitle = card.title;
$scope.status.renameCard = false;
}
};
$scope.cardUpdate = function (card) {
CardService.update(card).then(function (data) {
$scope.status.cardEditDescription = false;
$scope.updateMarkdown($scope.status.edit.description);
var header = $('.section-header-tabbed .tabDetails');
var header = $('.tabDetails');
header.find('.save-indicator.unsaved').hide();
header.find('.save-indicator.saved').fadeIn(500).fadeOut(1000);
});
@@ -220,7 +241,7 @@ app.controller('CardController', function ($scope, $rootScope, $sce, $location,
element.duedate = null;
CardService.update(element);
};
/**
* Show ui-select field when clicking the add button
*/
@@ -258,4 +279,8 @@ app.controller('CardController', function ($scope, $rootScope, $sce, $location,
};
};
$scope.isTimelineEnabled = function() {
return OCP.Comments && OCA.Activity;
};
});

View File

@@ -4,25 +4,25 @@
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
/* global app angular */
/* global app angular oc_isadmin */
var ListController = function ($scope, $location, $filter, BoardService, $element, $timeout, $stateParams, $state, StatusService) {
var ListController = function ($scope, $location, $filter, BoardService, $element, $timeout, $stateParams, $state, StatusService, $http, $q, $rootScope) {
function calculateNewColor() {
var boards = BoardService.getAll();
@@ -55,6 +55,63 @@ var ListController = function ($scope, $location, $filter, BoardService, $elemen
$scope.colors = ['0082c9', '00c9c6','00c906', 'c92b00', 'F1DB50', '7C31CC', '3A3B3D', 'CACBCD'];
$scope.boardservice = BoardService;
$scope.updatingBoard = null;
$scope.isAdmin = oc_isadmin;
$scope.canCreate = $rootScope.config.canCreate;
if ($scope.isAdmin) {
OC.Apps.enableDynamicSlideToggle();
$scope.groups = [];
$scope.groupLimit = [];
$scope.groupLimitDisabled = true;
let fetchGroups = function () {
var deferred = $q.defer();
// TODO: move to groups/details once 15 is min version
$http.get(OC.linkToOCS('cloud', 2) + 'groups').then(function (response) {
$scope.groups = response.data.ocs.data.groups.reduce((obj, item) => {
obj.push({
id: item,
displayname: item,
});
return obj;
}, []);
deferred.resolve($scope.groups);
}, function (error) {
deferred.reject('Error while loading groups');
});
$http.get(OC.generateUrl('apps/deck/config')).then(function (response) {
$scope.groupLimit = response.data.groupLimit;
$scope.groupLimitDisabled = false;
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while loading groupLimit');
});
return deferred.promise;
};
let updateConfig = function() {
$scope.groupLimitDisabled = true;
var deferred = $q.defer();
$http.post(OC.generateUrl('apps/deck/config/groupLimit'), {value: $scope.groupLimit}).then(function (response) {
$scope.groupLimitDisabled = false;
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while saving groupLimit');
});
return deferred.promise;
};
$scope.groupLimitAdd = function (element, model) {
$scope.groupLimit.push(element);
updateConfig();
};
$scope.groupLimitRemove = function (element, model) {
$scope.groupLimit = $scope.groupLimit.filter((el) => {
return el.id !== element.id;
});
updateConfig();
};
fetchGroups();
}
var filterData = function () {
if($element.attr('id') === 'app-navigation') {

View File

@@ -4,20 +4,20 @@
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
import app from '../app/App.js';
@@ -32,6 +32,10 @@ app.directive('avatar', function() {
link: function(scope, element, attr){
scope.uid = attr.displayname;
scope.displayname = attr.displayname;
scope.size = attr.size;
if (typeof scope.size === 'undefined') {
scope.size = 32;
}
var value = attr.user;
var avatardiv = $(element).find('.avatardiv');
if(typeof attr.contactsmenu !== 'undefined' && attr.contactsmenu !== 'false') {
@@ -44,8 +48,8 @@ app.directive('avatar', function() {
placement: 'top'
});
}
avatardiv.avatar(value, 32, false, false, false, attr.displayname);
avatardiv.avatar(value, scope.size, false, false, false, attr.displayname);
},
controller: function () {}
};
});
});

View File

@@ -0,0 +1,38 @@
/*
* @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
import app from '../app/App.js';
app.directive('bindHtmlCompile', function ($compile) {
'use strict';
return {
restrict: 'A',
link: function (scope, element, attrs) {
scope.$watch(function () {
return scope.$eval(attrs.bindHtmlCompile);
}, function (value) {
element.html(value);
$compile(element.contents())(scope);
});
}
};
});

View File

@@ -0,0 +1,59 @@
/*
* @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
import app from '../app/App';
app.directive('ngContenteditable', function($compile) {
return {
require: 'ngModel',
restrict: 'A',
scope: {
submit: '&ngSubmit'
},
link: function(scope, element, attrs, ngModel) {
//read the text typed in the div (syncing model with the view)
function read() {
ngModel.$setViewValue(element.html());
}
//render the data now in your model into your view
//$render is invoked when the modelvalue differs from the viewvalue
//see documentation: https://docs.angularjs.org/api/ng/type/ngModel.NgModelController#
ngModel.$render = function() {
element.html(ngModel.$viewValue || '');
};
//do this whenever someone starts typing
element.bind('blur keyup change', function(event) {
scope.$apply(read);
});
element.bind('keydown', function(event) {
if(event.which === 13 && event.shiftKey) {
scope.submit();
}
});
}
};
});

View File

@@ -30,9 +30,10 @@ app.directive('datepicker', function () {
return {
link: function (scope, elm, attr) {
return elm.datepicker({
dateFormat: 'yy-mm-dd',
dateFormat: moment.localeData().longDateFormat('L').replace('YYYY', 'YY').toLowerCase(),
onSelect: function(date, inst) {
scope.setDuedate(moment(date));
var selectedDate = $(this).datepicker('getDate');
scope.setDuedate(moment(selectedDate));
scope.$apply();
},
beforeShow: function(input, inst) {

View File

@@ -4,20 +4,20 @@
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
import app from '../app/App.js';
@@ -30,22 +30,32 @@ app.directive('search', function ($document, $location) {
'onSearch': '='
},
link: function (scope) {
var box = $('#searchbox');
box.val($location.search().search);
var doSearch = function() {
var value = box.val();
scope.$apply(function () {
scope.onSearch(value);
if (OCA.Search && OCA.Search.Core) {
// eslint-disable-next-line no-unused-vars
const search = new OCA.Search((term) => {
scope.$apply(function () {
scope.onSearch(term);
});
}, () => {
scope.$apply(function () {
scope.onSearch('');
});
});
};
} else {
const box = $('#searchbox');
box.val($location.search().search);
box.on('search keyup', function (event) {
if (event.type === 'search' || event.keyCode === 13 ) {
var doSearch = function () {
var value = box.val();
scope.$apply(function () {
scope.onSearch(value);
});
};
box.on('search keyup', function (event) {
doSearch();
}
});
});
}
}
};
});

View File

@@ -46,7 +46,8 @@ app.filter('dateToTimestamp', function() {
app.filter('parseDate', function() {
return function (date) {
if(moment(date).isValid()) {
return moment(date).format('YYYY-MM-DD');
var dateFormat = moment.localeData().longDateFormat('L');
return moment(date).format(dateFormat);
}
return '';
};

View File

@@ -1,5 +1,8 @@
'use strict';
/* global __webpack_nonce__ OC */
__webpack_nonce__ = btoa(OC.requestToken); // eslint-disable-line no-native-reassign
// used for building a vendor stylesheet
import 'ng-sortable/dist/ng-sortable.css';
@@ -14,9 +17,11 @@ import './app/Run.js';
import ListController from 'controller/ListController.js';
import attachmentListComponent from './controller/AttachmentController.js';
import activityComponent from './controller/ActivityController.js';
app.controller('ListController', ListController);
app.component('attachmentListComponent', attachmentListComponent);
app.component('activityComponent', activityComponent);
// require all the js files from subdirectories

View File

@@ -0,0 +1,161 @@
/**
* @licence
*/
import CommentModel from './commentmodel.js';
import CommentSummaryModel from './commentsummarymodel.js';
/**
* @class CommentCollection
* @classdesc
*
* Collection of comments assigned to a file
*
*/
var CommentCollection = OC.Backbone.Collection.extend(
/** @lends OCA.AnnouncementCenter.Comments.CommentCollection.prototype */ {
sync: OC.Backbone.davSync,
model: CommentModel,
/**
* Object type
*
* @type string
*/
_objectType: 'deckCard',
/**
* Object id
*
* @type string
*/
_objectId: null,
/**
* True if there are no more page results left to fetch
*
* @type bool
*/
_endReached: false,
/**
* Number of comments to fetch per page
*
* @type int
*/
_limit : 5,
/**
* Initializes the collection
*
* @param {string} [options.objectType] object type
* @param {string} [options.objectId] object id
*/
initialize: function(models, options) {
options = options || {};
if (options.objectType) {
this._objectType = options.objectType;
}
if (options.objectId) {
this._objectId = options.objectId;
}
},
url: function() {
return OC.linkToRemote('dav') + '/comments/' +
encodeURIComponent(this._objectType) + '/' +
encodeURIComponent(this._objectId) + '/';
},
setObjectId: function(objectId) {
this._objectId = objectId;
},
hasMoreResults: function() {
return !this._endReached;
},
reset: function() {
this._endReached = false;
this._summaryModel = null;
return OC.Backbone.Collection.prototype.reset.apply(this, arguments);
},
/**
* Fetch the next set of results
*/
fetchNext: function(options) {
var self = this;
if (!this.hasMoreResults()) {
return null;
}
var body = '<?xml version="1.0" encoding="utf-8" ?>\n' +
'<oc:filter-comments xmlns:D="DAV:" xmlns:oc="http://owncloud.org/ns">\n' +
// load one more so we know there is more
' <oc:limit>' + (this._limit + 1) + '</oc:limit>\n' +
' <oc:offset>' + this.length + '</oc:offset>\n' +
'</oc:filter-comments>\n';
options = options || {};
var success = options.success;
options = _.extend({
remove: false,
parse: true,
data: body,
davProperties: CommentCollection.prototype.model.prototype.davProperties,
success: function(resp) {
if (resp.length <= self._limit) {
// no new entries, end reached
self._endReached = true;
} else {
// remove last entry, for next page load
resp = _.initial(resp);
}
if (!self.set(resp, options)) {
return false;
}
if (success) {
success.apply(null, arguments);
}
self.trigger('sync', 'REPORT', self, options);
}
}, options);
return this.sync('REPORT', this, options);
},
/**
* Returns the matching summary model
*
* @return {OCA.AnnouncementCenter.Comments.CommentSummaryModel} summary model
*/
getSummaryModel: function() {
if (!this._summaryModel) {
this._summaryModel = new CommentSummaryModel({
id: this._objectId,
objectType: this._objectType
});
}
return this._summaryModel;
},
/**
* Updates the read marker for this comment thread
*
* @param {Date} [date] optional date, defaults to now
* @param {Object} [options] backbone options
*/
updateReadMarker: function(date, options) {
options = options || {};
return this.getSummaryModel().save({
readMarker: (date || new Date()).toUTCString()
}, options);
}
});
export default CommentCollection;

119
js/legacy/commentmodel.js Normal file
View File

@@ -0,0 +1,119 @@
/*
* Copyright (c) 2016
*
* This file is licensed under the Affero General Public License version 3
* or later.
*
* See the COPYING-README file.
*
*/
var NS_OWNCLOUD = 'http://owncloud.org/ns';
/**
* @class CommentModel
* @classdesc
*
* Comment
*
*/
var CommentModel = OC.Backbone.Model.extend(
/** @lends OCA.Comments.CommentModel.prototype */ {
sync: OC.Backbone.davSync,
/**
* Object type
*
* @type string
*/
_objectType: 'deckCard',
/**
* Object id
*
* @type string
*/
_objectId: null,
initialize: function(model, options) {
options = options || {};
if (options.objectType) {
this._objectType = options.objectType;
}
if (options.objectId) {
this._objectId = options.objectId;
}
},
defaults: {
actorType: 'users',
objectType: 'deckCard'
},
davProperties: {
'id': '{' + NS_OWNCLOUD + '}id',
'message': '{' + NS_OWNCLOUD + '}message',
'actorType': '{' + NS_OWNCLOUD + '}actorType',
'actorId': '{' + NS_OWNCLOUD + '}actorId',
'actorDisplayName': '{' + NS_OWNCLOUD + '}actorDisplayName',
'creationDateTime': '{' + NS_OWNCLOUD + '}creationDateTime',
'objectType': '{' + NS_OWNCLOUD + '}objectType',
'objectId': '{' + NS_OWNCLOUD + '}objectId',
'isUnread': '{' + NS_OWNCLOUD + '}isUnread',
'mentions': '{' + NS_OWNCLOUD + '}mentions'
},
parse: function(data) {
return {
id: data.id,
message: data.message,
actorType: data.actorType,
actorId: data.actorId,
actorDisplayName: data.actorDisplayName,
creationDateTime: data.creationDateTime,
objectType: data.objectType,
objectId: data.objectId,
isUnread: (data.isUnread === 'true'),
mentions: this._parseMentions(data.mentions)
};
},
_parseMentions: function(mentions) {
if(_.isUndefined(mentions)) {
return {};
}
var result = {};
for(var i in mentions) {
var mention = mentions[i];
if(_.isUndefined(mention.localName) || mention.localName !== 'mention') {
continue;
}
result[i] = {};
for (var child = mention.firstChild; child; child = child.nextSibling) {
if(_.isUndefined(child.localName) || !child.localName.startsWith('mention')) {
continue;
}
result[i][child.localName] = child.textContent;
}
}
return result;
},
url: function() {
let baseUrl;
if (typeof this.collection === 'undefined') {
baseUrl = OC.linkToRemote('dav') + '/comments/' +
encodeURIComponent(this.get('objectType')) + '/' +
encodeURIComponent(this.get('objectId')) + '/';
} else {
baseUrl = this.collection.url();
}
if (typeof this.get('id') !== 'undefined') {
return baseUrl + this.get('id');
} else {
return baseUrl;
}
}
});
export default CommentModel;

View File

@@ -0,0 +1,54 @@
var NS_OWNCLOUD = 'http://owncloud.org/ns';
/**
* @class OCA.AnnouncementCenter.Comments.CommentSummaryModel
* @classdesc
*
* Model containing summary information related to comments
* like the read marker.
*
*/
var CommentSummaryModel = OC.Backbone.Model.extend(
/** @lends OCA.AnnouncementCenter.Comments.CommentSummaryModel.prototype */ {
sync: OC.Backbone.davSync,
/**
* Object type
*
* @type string
*/
_objectType: 'deckCard',
/**
* Object id
*
* @type string
*/
_objectId: null,
davProperties: {
'readMarker': '{' + NS_OWNCLOUD + '}readMarker'
},
/**
* Initializes the summary model
*
* @param {string} [options.objectType] object type
* @param {string} [options.objectId] object id
*/
initialize: function(attrs, options) {
options = options || {};
if (options.objectType) {
this._objectType = options.objectType;
}
},
url: function() {
return OC.linkToRemote('dav') + '/comments/' +
encodeURIComponent(this._objectType) + '/' +
encodeURIComponent(this.id) + '/';
}
});
export default CommentSummaryModel;

1
js/legacy/jquery.atwho.min.js vendored Normal file

File diff suppressed because one or more lines are too long

561
js/legacy/jquery.caret.min.js vendored Normal file
View File

@@ -0,0 +1,561 @@
/*
* @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
(function($, undefined) {
var _input = document.createElement('input');
var _support = {
setSelectionRange: ('setSelectionRange' in _input) || ('selectionStart' in _input),
createTextRange: ('createTextRange' in _input) || ('selection' in document)
};
var _rNewlineIE = /\r\n/g,
_rCarriageReturn = /\r/g;
var _getValue = function(input) {
if (typeof(input.value) !== 'undefined') {
return input.value;
}
return $(input).text();
};
var _setValue = function(input, value) {
if (typeof(input.value) !== 'undefined') {
input.value = value;
} else {
$(input).text(value);
}
};
var _getIndex = function(input, pos) {
var norm = _getValue(input).replace(_rCarriageReturn, '');
var len = norm.length;
if (typeof(pos) === 'undefined') {
pos = len;
}
pos = Math.floor(pos);
// Negative index counts backward from the end of the input/textarea's value
if (pos < 0) {
pos = len + pos;
}
// Enforce boundaries
if (pos < 0) { pos = 0; }
if (pos > len) { pos = len; }
return pos;
};
var _hasAttr = function(input, attrName) {
return input.hasAttribute ? input.hasAttribute(attrName) : (typeof(input[attrName]) !== 'undefined');
};
/**
* @class
* @constructor
*/
var Range = function(start, end, length, text) {
this.start = start || 0;
this.end = end || 0;
this.length = length || 0;
this.text = text || '';
};
Range.prototype.toString = function() {
return JSON.stringify(this, null, ' ');
};
var _getCaretW3 = function(input) {
return input.selectionStart;
};
/**
* @see http://stackoverflow.com/q/6943000/467582
*/
var _getCaretIE = function(input) {
var caret, range, textInputRange, rawValue, len, endRange;
// Yeah, you have to focus twice for IE 7 and 8. *cries*
input.focus();
input.focus();
range = document.selection.createRange();
if (range && range.parentElement() === input) {
rawValue = _getValue(input);
len = rawValue.length;
// Create a working TextRange that lives only in the input
textInputRange = input.createTextRange();
textInputRange.moveToBookmark(range.getBookmark());
// Check if the start and end of the selection are at the very end
// of the input, since moveStart/moveEnd doesn't return what we want
// in those cases
endRange = input.createTextRange();
endRange.collapse(false);
if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) {
caret = rawValue.replace(_rNewlineIE, '\n').length;
} else {
caret = -textInputRange.moveStart("character", -len);
}
return caret;
}
// NOTE: This occurs when you highlight part of a textarea and then click in the middle of the highlighted portion in IE 6-10.
// There doesn't appear to be anything we can do about it.
// alert("Your browser is incredibly stupid. I don't know what else to say.");
// alert(range + '\n\n' + range.parentElement().tagName + '#' + range.parentElement().id);
return 0;
};
/**
* Gets the position of the caret in the given input.
* @param {HTMLInputElement|HTMLTextAreaElement} input input or textarea element
* @returns {Number}
* @see http://stackoverflow.com/questions/263743/how-to-get-cursor-position-in-textarea/263796#263796
*/
var _getCaret = function(input) {
if (!input) {
return undefined;
}
// Mozilla, et al.
if (_support.setSelectionRange) {
return _getCaretW3(input);
}
// IE
else if (_support.createTextRange) {
return _getCaretIE(input);
}
return undefined;
};
var _setCaretW3 = function(input, pos) {
input.setSelectionRange(pos, pos);
};
var _setCaretIE = function(input, pos) {
var range = input.createTextRange();
range.move('character', pos);
range.select();
};
/**
* Sets the position of the caret in the given input.
* @param {HTMLInputElement|HTMLTextAreaElement} input input or textarea element
* @param {Number} pos
* @see http://parentnode.org/javascript/working-with-the-cursor-position/
*/
var _setCaret = function(input, pos) {
input.focus();
pos = _getIndex(input, pos);
// Mozilla, et al.
if (_support.setSelectionRange) {
_setCaretW3(input, pos);
}
// IE
else if (_support.createTextRange) {
_setCaretIE(input, pos);
}
};
/**
* Inserts the specified text at the current caret position in the given input.
* @param {HTMLInputElement|HTMLTextAreaElement} input input or textarea element
* @param {String} text
* @see http://parentnode.org/javascript/working-with-the-cursor-position/
*/
var _insertAtCaret = function(input, text) {
var curPos = _getCaret(input);
var oldValueNorm = _getValue(input).replace(_rCarriageReturn, '');
var newLength = +(curPos + text.length + (oldValueNorm.length - curPos));
var maxLength = +input.getAttribute('maxlength');
if(_hasAttr(input, 'maxlength') && newLength > maxLength) {
var delta = text.length - (newLength - maxLength);
text = text.substr(0, delta);
}
_setValue(input, oldValueNorm.substr(0, curPos) + text + oldValueNorm.substr(curPos));
_setCaret(input, curPos + text.length);
};
var _getInputRangeW3 = function(input) {
var range = new Range();
range.start = input.selectionStart;
range.end = input.selectionEnd;
var min = Math.min(range.start, range.end);
var max = Math.max(range.start, range.end);
range.length = max - min;
range.text = _getValue(input).substring(min, max);
return range;
};
/** @see http://stackoverflow.com/a/3648244/467582 */
var _getInputRangeIE = function(input) {
var range = new Range();
input.focus();
var selection = document.selection.createRange();
if (selection && selection.parentElement() === input) {
var len, normalizedValue, textInputRange, endRange, start = 0, end = 0;
var rawValue = _getValue(input);
len = rawValue.length;
normalizedValue = rawValue.replace(/\r\n/g, "\n");
// Create a working TextRange that lives only in the input
textInputRange = input.createTextRange();
textInputRange.moveToBookmark(selection.getBookmark());
// Check if the start and end of the selection are at the very end
// of the input, since moveStart/moveEnd doesn't return what we want
// in those cases
endRange = input.createTextRange();
endRange.collapse(false);
if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) {
start = end = len;
} else {
start = -textInputRange.moveStart("character", -len);
start += normalizedValue.slice(0, start).split("\n").length - 1;
if (textInputRange.compareEndPoints("EndToEnd", endRange) > -1) {
end = len;
} else {
end = -textInputRange.moveEnd("character", -len);
end += normalizedValue.slice(0, end).split("\n").length - 1;
}
}
/// normalize newlines
start -= (rawValue.substring(0, start).split('\r\n').length - 1);
end -= (rawValue.substring(0, end).split('\r\n').length - 1);
/// normalize newlines
range.start = start;
range.end = end;
range.length = range.end - range.start;
range.text = normalizedValue.substr(range.start, range.length);
}
return range;
};
/**
* Gets the selected text range of the given input.
* @param {HTMLInputElement|HTMLTextAreaElement} input input or textarea element
* @returns {Range}
* @see http://stackoverflow.com/a/263796/467582
* @see http://stackoverflow.com/a/2966703/467582
*/
var _getInputRange = function(input) {
if (!input) {
return undefined;
}
// Mozilla, et al.
if (_support.setSelectionRange) {
return _getInputRangeW3(input);
}
// IE
else if (_support.createTextRange) {
return _getInputRangeIE(input);
}
return undefined;
};
var _setInputRangeW3 = function(input, startPos, endPos) {
input.setSelectionRange(startPos, endPos);
};
var _setInputRangeIE = function(input, startPos, endPos) {
var tr = input.createTextRange();
tr.moveEnd('textedit', -1);
tr.moveStart('character', startPos);
tr.moveEnd('character', endPos - startPos);
tr.select();
};
/**
* Sets the selected text range of (i.e., highlights text in) the given input.
* @param {HTMLInputElement|HTMLTextAreaElement} input input or textarea element
* @param {Number} startPos Zero-based index
* @param {Number} endPos Zero-based index
* @see http://parentnode.org/javascript/working-with-the-cursor-position/
* @see http://stackoverflow.com/a/2966703/467582
*/
var _setInputRange = function(input, startPos, endPos) {
startPos = _getIndex(input, startPos);
endPos = _getIndex(input, endPos);
// Mozilla, et al.
if (_support.setSelectionRange) {
_setInputRangeW3(input, startPos, endPos);
}
// IE
else if (_support.createTextRange) {
_setInputRangeIE(input, startPos, endPos);
}
};
/**
* Replaces the currently selected text with the given string.
* @param {HTMLInputElement|HTMLTextAreaElement} input input or textarea element
* @param {String} text New text that will replace the currently selected text.
* @see http://parentnode.org/javascript/working-with-the-cursor-position/
*/
var _replaceInputRange = function(input, text) {
var $input = $(input);
var oldValue = $input.val();
var selection = _getInputRange(input);
var newLength = +(selection.start + text.length + (oldValue.length - selection.end));
var maxLength = +$input.attr('maxlength');
if($input.is('[maxlength]') && newLength > maxLength) {
var delta = text.length - (newLength - maxLength);
text = text.substr(0, delta);
}
// Now that we know what the user selected, we can replace it
var startText = oldValue.substr(0, selection.start);
var endText = oldValue.substr(selection.end);
$input.val(startText + text + endText);
// Reset the selection
var startPos = selection.start;
var endPos = startPos + text.length;
_setInputRange(input, selection.length ? startPos : endPos, endPos);
};
var _selectAllW3 = function(elem) {
var selection = window.getSelection();
var range = document.createRange();
range.selectNodeContents(elem);
selection.removeAllRanges();
selection.addRange(range);
};
var _selectAllIE = function(elem) {
var range = document.body.createTextRange();
range.moveToElementText(elem);
range.select();
};
/**
* Select all text in the given element.
* @param {HTMLElement} elem Any block or inline element other than a form element.
*/
var _selectAll = function(elem) {
var $elem = $(elem);
if ($elem.is('input, textarea') || elem.select) {
$elem.select();
return;
}
// Mozilla, et al.
if (_support.setSelectionRange) {
_selectAllW3(elem);
}
// IE
else if (_support.createTextRange) {
_selectAllIE(elem);
}
};
var _deselectAll = function() {
if (document.selection) {
document.selection.empty();
}
else if (window.getSelection) {
window.getSelection().removeAllRanges();
}
};
$.extend($.fn, {
/**
* Gets or sets the position of the caret or inserts text at the current caret position in an input or textarea element.
* @returns {Number|jQuery} The current caret position if invoked as a getter (with no arguments)
* or this jQuery object if invoked as a setter or inserter.
* @see http://web.archive.org/web/20080704185920/http://parentnode.org/javascript/working-with-the-cursor-position/
* @since 1.0.0
* @example
* <pre>
* // Get position
* var pos = $('input:first').caret();
* </pre>
* @example
* <pre>
* // Set position
* $('input:first').caret(15);
* $('input:first').caret(-3);
* </pre>
* @example
* <pre>
* // Insert text at current position
* $('input:first').caret('Some text');
* </pre>
*/
caret: function() {
var $inputs = this.filter('input, textarea');
// getCaret()
if (arguments.length === 0) {
var input = $inputs.get(0);
return _getCaret(input);
}
// setCaret(position)
else if (typeof arguments[0] === 'number') {
var pos = arguments[0];
$inputs.each(function(_i, input) {
_setCaret(input, pos);
});
}
// insertAtCaret(text)
else {
var text = arguments[0];
$inputs.each(function(_i, input) {
_insertAtCaret(input, text);
});
}
return this;
},
/**
* Gets or sets the selection range or replaces the currently selected text in an input or textarea element.
* @returns {Range|jQuery} The current selection range if invoked as a getter (with no arguments)
* or this jQuery object if invoked as a setter or replacer.
* @see http://stackoverflow.com/a/2966703/467582
* @since 1.0.0
* @example
* <pre>
* // Get selection range
* var range = $('input:first').range();
* </pre>
* @example
* <pre>
* // Set selection range
* $('input:first').range(15);
* $('input:first').range(15, 20);
* $('input:first').range(-3);
* $('input:first').range(-8, -3);
* </pre>
* @example
* <pre>
* // Replace the currently selected text
* $('input:first').range('Replacement text');
* </pre>
*/
range: function() {
var $inputs = this.filter('input, textarea');
// getRange() = { start: pos, end: pos }
if (arguments.length === 0) {
var input = $inputs.get(0);
return _getInputRange(input);
}
// setRange(startPos, endPos)
else if (typeof arguments[0] === 'number') {
var startPos = arguments[0];
var endPos = arguments[1];
$inputs.each(function(_i, input) {
_setInputRange(input, startPos, endPos);
});
}
// replaceRange(text)
else {
var text = arguments[0];
$inputs.each(function(_i, input) {
_replaceInputRange(input, text);
});
}
return this;
},
/**
* Selects all text in each element of this jQuery object.
* @returns {jQuery} This jQuery object
* @see http://stackoverflow.com/a/11128179/467582
* @since 1.5.0
* @example
* <pre>
* // Select the contents of span elements when clicked
* $('span').on('click', function() { $(this).highlight(); });
* </pre>
*/
selectAll: function() {
return this.each(function(_i, elem) {
_selectAll(elem);
});
}
});
$.extend($, {
/**
* Deselects all text on the page.
* @returns {jQuery} The jQuery function
* @since 1.5.0
* @example
* <pre>
* // Select some text
* $('span').selectAll();
*
* // Deselect the text
* $.deselectAll();
* </pre>
*/
deselectAll: function() {
_deselectAll();
return this;
}
});
}(window.jQuery || window.Zepto || window.$));

View File

@@ -17,11 +17,15 @@ checkboxReplace = function(md, options, Token) {
idPrefix: 'checkbox'
};
options = Object.assign(defaults, options);
pattern = /\[(X|\s|\_|\-)\]\s(.*)/i;
createTokens = function(checked, label, Token) {
pattern = /(.*?)(\[(X|\s|\_|\-)\])(.*)/igm;
createTokens = function(checked, label, Token, before) {
var id, idNumeric, nodes, token;
nodes = [];
token = new Token("text", "", 0);
token.content = before;
nodes.push(token);
/**
* <div class="checkbox">
*/
@@ -42,6 +46,7 @@ checkboxReplace = function(md, options, Token) {
if (checked === true) {
token.attrs.push(["checked", "true"]);
}
token.attrs.push(["class", "checkbox"]);
nodes.push(token);
/**
@@ -68,19 +73,20 @@ checkboxReplace = function(md, options, Token) {
return nodes;
};
splitTextToken = function(original, Token) {
var checked, label, matches, text, value;
var checked, label, matches, text, value, before;
text = original.content;
matches = text.match(pattern);
matches = pattern.exec(text);
if (matches === null) {
return original;
}
checked = false;
value = matches[1];
label = matches[2];
before = matches[1];
value = matches[3];
label = matches[4];
if (value === "X" || value === "x") {
checked = true;
}
return createTokens(checked, label, Token);
return createTokens(checked, label, Token, before);
};
return function(state) {
lastId = 0;
@@ -94,11 +100,11 @@ checkboxReplace = function(md, options, Token) {
continue;
}
tokens = blockTokens[j].children;
i = tokens.length - 1;
while (i >= 0) {
i = 0;
while (i < tokens.length) {
token = tokens[i];
blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, splitTextToken(token, state.Token));
i--;
i++;
}
j++;
}

7121
js/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -8,29 +8,31 @@
"test": "tests"
},
"dependencies": {
"@uirouter/angularjs": "^1.0.18",
"angular": "^1.7.2",
"angular-animate": "^1.7.2",
"@uirouter/angularjs": "^1.0.20",
"angular": "^1.7.5",
"angular-animate": "^1.7.5",
"angular-file-upload": "^2.5.0",
"angular-markdown-it": "^0.6.1",
"angular-sanitize": "^1.7.2",
"angular-sanitize": "^1.7.5",
"babel-polyfill": "^6.26.0",
"markdown-it": "^8.4.1",
"markdown-it": "^8.4.2",
"markdown-it-link-target": "^1.0.2",
"ng-infinite-scroll": "^1.3.0",
"ng-sortable": "^1.3.8",
"ui-select": "^0.19.8"
},
"devDependencies": {
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-env": "^1.7.0",
"css-loader": "^0.28.9",
"karma": "^2.0.4",
"mini-css-extract-plugin": "^0.4.1",
"node-sass": "^4.5.3",
"webpack": "^4.14.0",
"webpack-cli": "^3.0.8",
"webpack-merge": "^4.1.3"
"@babel/core": "^7.2.2",
"@babel/polyfill": "^7.0.0",
"@babel/preset-env": "^7.2.0",
"babel-loader": "^8.0.4",
"css-loader": "^2.0.1",
"karma": "^3.1.3",
"mini-css-extract-plugin": "^0.5.0",
"uglifyjs-webpack-plugin": "^2.0.1",
"webpack": "^4.27.1",
"webpack-cli": "^3.1.2",
"webpack-merge": "^4.1.5"
},
"scripts": {
"build": "./node_modules/webpack-cli/bin/cli.js --mode production --config webpack.prod.config.js",

View File

@@ -0,0 +1,256 @@
/*
* @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
import app from '../app/App.js';
import CommentCollection from '../legacy/commentcollection';
import CommentModel from '../legacy/commentmodel';
const DECK_ACTIVITY_TYPE_BOARD = 'deck_board';
const DECK_ACTIVITY_TYPE_CARD = 'deck_card';
/* global OC oc_requesttoken */
class ActivityService {
static get RESULT_PER_PAGE() { return 50; }
constructor ($rootScope, $filter, $http, $q) {
this.running = false;
this.runningNewer = false;
this.$filter = $filter;
this.$http = $http;
this.$q = $q;
this.$rootScope = $rootScope;
this.data = {};
this.data[DECK_ACTIVITY_TYPE_BOARD] = {};
this.data[DECK_ACTIVITY_TYPE_CARD] = {};
this.toEnhanceWithComments = [];
this.commentCollection = new CommentCollection();
this.commentCollection._limit = ActivityService.RESULT_PER_PAGE;
this.commentCollection.on('request', function() {
}, this);
this.commentCollection.on('sync', function(a) {
for (let index in this.toEnhanceWithComments) {
if (this.toEnhanceWithComments.hasOwnProperty(index)) {
let item = this.toEnhanceWithComments[index];
let commentId = Array.isArray(item.subject_rich[1].comment) ? item.subject_rich[1].comment.id : item.subject_rich[1].comment;
item.commentModel = this.commentCollection.get(commentId);
if (typeof item.commentModel !== 'undefined') {
this.toEnhanceWithComments = this.toEnhanceWithComments.filter((entry) => entry.activity_id !== item.activity_id);
}
}
}
var firstUnread = this.commentCollection.findWhere({isUnread: true});
if (typeof firstUnread !== 'undefined') {
this.commentCollection.updateReadMarker();
}
this.notify();
}, this);
this.commentCollection.on('add', function(model, collection, options) {
// we need to update the model, because it consists of client data
// only, but the server might add meta data, e.g. about mentions
model.fetch();
}, this);
this.since = {
deck_card: {
},
deck_board: {
},
};
}
/**
* We need a event here to properly update scope once the external data from
* the comments backbone js code has changed
*/
subscribe(scope, callback) {
let handler = this.$rootScope.$on('notify-comment-update', callback);
scope.$on('$destroy', handler);
}
notify() {
this.$rootScope.$emit('notify-comment-update');
}
static getUrl(type, id, since) {
if (type === DECK_ACTIVITY_TYPE_CARD) {
return OC.linkToOCS('apps/activity/api/v2/activity', 2) + 'filter?format=json&object_type=deck_card&object_id=' + id + '&limit=' + this.RESULT_PER_PAGE + '&since=' + since;
}
if (type === DECK_ACTIVITY_TYPE_BOARD) {
return OC.linkToOCS('apps/activity/api/v2/activity', 2) + 'deck?format=json&limit=' + this.RESULT_PER_PAGE + '&since=' + since;
}
}
fetchCardActivities(type, id, since) {
this.running = true;
this.checkData(type, id);
const self = this;
return this.$http.get(ActivityService.getUrl(type, id, since)).then(function (response) {
const objects = response.data.ocs.data;
for (let index in objects) {
if (objects.hasOwnProperty(index)) {
let item = objects[index];
self.addItem(type, id, item);
if (item.activity_id > self.since[type][id].latest) {
self.since[type][id].latest = item.activity_id;
}
}
}
self.data[type][id].sort(function(a, b) {
return b.activity_id - a.activity_id;
});
self.since[type][id].oldest = response.headers('X-Activity-Last-Given');
self.running = false;
return response;
}, function (error) {
if (error.status === 304 || error.status === 404) {
self.since[type][id].finished = true;
}
self.running = false;
});
}
fetchMoreActivities(type, id, success) {
const self = this;
this.checkData(type, id);
if (this.running === true) {
return this.runningPromise;
}
if (!this.since[type][id].finished) {
this.runningPromise = this.fetchCardActivities(type, id, this.since[type][id].oldest);
this.runningPromise.then(function() {
if (type === 'deck_card') {
self.commentCollection.fetchNext();
}
});
return this.runningPromise;
}
return Promise.reject();
}
checkData(type, id) {
if (!Array.isArray(this.data[type][id])) {
this.data[type][id] = [];
}
if (typeof this.since[type][id] === 'undefined') {
this.since[type][id] = {
latest: -1,
oldestCatchedUp: false,
oldest: '0',
finished: false,
};
}
}
addItem(type, id, item) {
const self = this;
const existingEntry = this.data[type][id].findIndex((entry) => { return entry.activity_id === item.activity_id; });
if (existingEntry !== -1) {
return;
}
/** check if the fetched item from all deck activities is actually related */
const isUnrelatedBoard = (item.object_type === DECK_ACTIVITY_TYPE_BOARD && item.object_id !== id);
const isUnrelatedCard = (item.object_type === DECK_ACTIVITY_TYPE_CARD && (
(item.subject_rich[1].board && item.subject_rich[1].board.id !== id) || (typeof item.subject_rich[1].board === 'undefined'))
);
if (type === DECK_ACTIVITY_TYPE_BOARD && (isUnrelatedBoard || isUnrelatedCard)) {
return;
}
item.timestamp = new Date(item.datetime).getTime();
item.type = 'activity';
if (item.subject_rich[1].comment) {
item.type = 'comment';
item.commentModel = this.commentCollection.get(item.subject_rich[1].comment);
if (typeof item.commentModel === 'undefined') {
this.toEnhanceWithComments.push(item);
}
}
this.data[type][id].push(item);
}
/**
* Fetch newer activities starting from the latest ones that are in cache
*
* @param type
* @param id
*/
fetchNewerActivities(type, id) {
if (this.since[type][id].latest === 0) {
return Promise.resolve();
}
let self = this;
return this.fetchNewer(type, id).then(function() {
return self.fetchNewerActivities(type, id);
});
}
fetchNewer(type, id) {
const deferred = this.$q.defer();
this.running = true;
this.runningNewer = true;
const self = this;
this.$http.get(ActivityService.getUrl(type, id, this.since[type][id].latest) + '&sort=asc').then(function (response) {
let objects = response.data.ocs.data;
let data = [];
for (let index in objects) {
if (objects.hasOwnProperty(index)) {
let item = objects[index];
self.addItem(type, id, item);
}
}
self.data[type][id].sort(function(a, b) {
return b.activity_id - a.activity_id;
});
self.since[type][id].latest = response.headers('X-Activity-Last-Given');
self.data[type][id] = data.concat(self.data[type][id]);
self.running = false;
self.runningNewer = false;
deferred.resolve(objects);
}, function (error) {
self.runningNewer = false;
self.running = false;
});
return deferred.promise;
}
getData(type, id) {
if (!Array.isArray(this.data[type][id])) {
return [];
}
return this.data[type][id];
}
loadComments(id) {
this.commentCollection.reset();
this.commentCollection.setObjectId(id);
}
}
app.service('ActivityService', ActivityService);
export default ActivityService;
export {DECK_ACTIVITY_TYPE_BOARD, DECK_ACTIVITY_TYPE_CARD};

View File

@@ -4,35 +4,48 @@
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
import app from '../app/App.js';
/** global: oc_defaults */
app.factory('ApiService', function ($http, $q) {
var ApiService = function (http, endpoint) {
// Consider renaming endpoint to resource
this.endpoint = endpoint;
this.baseUrl = OC.generateUrl('/apps/deck/' + endpoint);
this.baseUrl = this.generateUrl(this.endpoint);
this.http = http;
this.q = $q;
this.data = {};
this.deleted = {};
this.id = null;
this.sorted = [];
};
ApiService.prototype.generateUrl = function(path) {
return OC.generateUrl('/apps/deck/' + path);
};
ApiService.prototype.tryAllThenDeleted = function(id) {
let object = this.data[id];
if (object === undefined) {
object = this.deleted[id];
}
return object;
};
ApiService.prototype.fetchAll = function () {
var deferred = $q.defer();
var self = this;
@@ -48,6 +61,31 @@ app.factory('ApiService', function ($http, $q) {
return deferred.promise;
};
ApiService.prototype.fetchDeleted = function (scopeId) {
var deferred = $q.defer();
var self = this;
self.deleted = {};
$http.get(this.generateUrl(scopeId + '/' + this.endpoint + '/deleted')).then(function (response) {
var objects = response.data;
objects.forEach(function (obj) {
if(self.deleted[obj.id] !== undefined) {
return;
}
self.deleted[obj.id] = obj;
if(self.afterFetch !== undefined) {
self.afterFetch(obj);
}
});
deferred.resolve(objects);
}, function (error) {
deferred.reject('Fetching ' + self.endpoint + ' failed');
});
return deferred.promise;
};
ApiService.prototype.fetchOne = function (id) {
this.id = id;
@@ -104,21 +142,41 @@ app.factory('ApiService', function ($http, $q) {
var self = this;
$http.delete(this.baseUrl + '/' + id).then(function (response) {
self.remove(id);
self.deleted[id] = self.data[id];
delete self.data[id];
let deletedAt = response.data.deletedAt;
if (deletedAt !== undefined) {
self.deleted[id].deletedAt = deletedAt;
}
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Deleting ' + self.endpoint + ' failed');
});
return deferred.promise;
};
ApiService.prototype.undoDelete = function(entity) {
var self = this;
entity.deletedAt = 0;
var promise = this.update(entity);
promise.then(() => {
self.data[entity.id] = entity;
delete this.deleted[entity.id];
});
return promise;
};
// methods for managing data
ApiService.prototype.clear = function () {
this.data = {};
};
ApiService.prototype.add = function (entity) {
var element = this.data[entity.id];
if (element === undefined) {
@@ -132,11 +190,7 @@ app.factory('ApiService', function ($http, $q) {
element.status = {};
}
};
ApiService.prototype.remove = function (id) {
if (this.data[id] !== undefined) {
delete this.data[id];
}
};
ApiService.prototype.addAll = function (entities) {
var self = this;
angular.forEach(entities, function (entity) {

View File

@@ -125,8 +125,8 @@ app.factory('BoardService', function (ApiService, $http, $q) {
displayname: ocsItem.label
},
permissionEdit: true,
permissionManage: true,
permissionShare: true,
permissionManage: false,
permissionShare: false,
type: type
};
};

View File

@@ -4,20 +4,20 @@
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
import app from '../app/App.js';
@@ -106,11 +106,11 @@ app.factory('CardService', function (ApiService, $http, $q) {
CardService.prototype.assignUser = function (card, user) {
var deferred = $q.defer();
var self = this;
if (self.getCurrent().assignedUsers === null) {
self.getCurrent().assignedUsers = [];
if (self.get(card.id).assignedUsers === null) {
self.get(card.id).assignedUsers = [];
}
$http.post(this.baseUrl + '/' + card.id + '/assign', {'userId': user}).then(function (response) {
self.getCurrent().assignedUsers.push(response.data);
self.get(card.id).assignedUsers.push(response.data);
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while update ' + self.endpoint);
@@ -123,7 +123,7 @@ app.factory('CardService', function (ApiService, $http, $q) {
var deferred = $q.defer();
var self = this;
$http.delete(this.baseUrl + '/' + card.id + '/assign/' + user, {}).then(function (response) {
self.getCurrent().assignedUsers = self.getCurrent().assignedUsers.filter(function (obj) {
self.get(card.id).assignedUsers = self.get(card.id).assignedUsers.filter(function (obj) {
return obj.participant.uid !== user;
});
deferred.resolve(response.data);
@@ -174,4 +174,4 @@ app.factory('CardService', function (ApiService, $http, $q) {
var service = new CardService($http, 'cards', $q);
return service;
});
});

View File

@@ -4,20 +4,20 @@
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
import app from '../app/App.js';
@@ -27,6 +27,11 @@ app.factory('StackService', function (ApiService, CardService, $http, $q) {
ApiService.call(this, $http, ep, $q);
};
StackService.prototype = angular.copy(ApiService.prototype);
StackService.prototype.afterFetch = function(stack) {
CardService.addAll(stack.cards);
};
StackService.prototype.fetchAll = function (boardId) {
var deferred = $q.defer();
var self = this;
@@ -129,27 +134,6 @@ app.factory('StackService', function (ApiService, CardService, $http, $q) {
}
};
// FIXME: Should not show popup but proper undo mechanism
StackService.prototype.delete = function (id) {
var deferred = $q.defer();
var self = this;
OC.dialogs.confirm(t('deck', 'Are you sure you want to delete the stack with all of its data?'), t('deck', 'Delete'), function(state) {
if (!state) {
return;
}
$http.delete(self.baseUrl + '/' + id).then(function (response) {
self.remove(id);
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Deleting ' + self.endpoint + ' failed');
});
});
return deferred.promise;
};
var service = new StackService($http, 'stacks', $q);
return service;
});

View File

@@ -25,7 +25,7 @@ module.exports = {
exclude: /node_modules/,
loader: 'babel-loader',
query: {
presets: ['env'],
presets: ['@babel/preset-env'],
}
},
{

View File

@@ -2,5 +2,6 @@ const merge = require('webpack-merge');
const baseConfig = require('./webpack.config.js');
module.exports = merge(baseConfig, {
mode: 'development'
mode: 'development',
devtool: 'source-map',
});

View File

@@ -15,6 +15,7 @@ exclude = [
"js/Gruntfile.js",
"js/package.json",
"js/package-lock.json",
"docs/",
"tests",
".codecov.yml",
"composer.json",
@@ -28,6 +29,7 @@ exclude = [
"issue_template.md",
"krankerl.toml",
"Makefile",
"mkdocs.yml",
"run-eslint.sh"
]

View File

@@ -1,30 +0,0 @@
OC.L10N.register(
"deck",
{
"Delete" : "Desaniciar",
"Hours" : "Hores",
"Minutes" : "Minutos",
"Finished" : "Finó",
"Action needed" : "Precísase aición",
"Later" : "Más sero",
"Deck" : "Deck",
"Submit" : "Unviar",
"Show archived cards" : "Amosar tarxetes archivaes",
"Close" : "Zarrar",
"Tags" : "Etiquetes",
"Select users or groups to share with" : "Esbilla usuarios o grupos colos que compartir",
"No matching user or group found." : "Nun s'alcontró dengún usuariu o grupu que concasara.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Xestionar",
"Discard share" : "Escartar compartición",
"Title" : "Títulu",
"Members" : "Miembros",
"More actions" : "Más aiciones",
"by" : "por",
"Click to set" : "Primi p'afitar",
"Description" : "Descripción",
"Saved" : "Guardóse"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -1,28 +0,0 @@
{ "translations": {
"Delete" : "Desaniciar",
"Hours" : "Hores",
"Minutes" : "Minutos",
"Finished" : "Finó",
"Action needed" : "Precísase aición",
"Later" : "Más sero",
"Deck" : "Deck",
"Submit" : "Unviar",
"Show archived cards" : "Amosar tarxetes archivaes",
"Close" : "Zarrar",
"Tags" : "Etiquetes",
"Select users or groups to share with" : "Esbilla usuarios o grupos colos que compartir",
"No matching user or group found." : "Nun s'alcontró dengún usuariu o grupu que concasara.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Xestionar",
"Discard share" : "Escartar compartición",
"Title" : "Títulu",
"Members" : "Miembros",
"More actions" : "Más aiciones",
"by" : "por",
"Click to set" : "Primi p'afitar",
"Description" : "Descripción",
"Saved" : "Guardóse"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -1,30 +1,40 @@
OC.L10N.register(
"deck",
{
"Delete" : "Esborra",
"Please provide a content for your comment." : "Si us plau, proporciona un comentari.",
"Posting the comment failed." : "Error al posar el comentari.",
"The comment has been deleted" : "S'ha esborrat el comentari",
"Restore associated stack" : "Restaura la pila associada",
"Remove user from card" : "Esborra usuari de la targeta",
"Hours" : "Hores",
"Minutes" : "Minuts",
"Maximum file size of {size} exceeded" : "Mida màxima per fitxer de {size} superada",
"You have created a new board {board}" : "Has creat el nou tauler {board}",
"{user} has created a new board {board}" : "{user} ha creat el nou tauler {board}",
"You have deleted the board {board}" : "Has esborrat el taulell {board}",
"{user} has deleted the board {board}" : "{user} ha esborrat el taulell {board}",
"You have restored the board {board}" : "Has restaurat el taulell {board}",
"{user} has restored the board {board}" : "{user} ha restaurat el taulell {board}",
"You have shared the board {board} with {acl}" : "Has compartit el taulell {board} amb {acl}",
"You have renamed the card {before} to {card}" : "Has canviat el nom de la targeta de {before} a {card}",
"{user} has renamed the card {before} to {card}" : "{user} ha canviat el nom de la targeta de {before} a {card}",
"Deck" : "Coberta",
"Finished" : "Acabat",
"To review" : "Per revisar",
"Action needed" : "Acció necessaria",
"Later" : "Més tard",
"Deck" : "Coberta",
"Add a new stack" : "Afegeix una nova pila",
"Show archived cards" : "Mostra les targetes arxivades",
"Hide archived cards" : "Amaga les targetes arxivades",
"Board details" : "Detalls de la junta",
"All Boards" : "Totes les juntes",
"Archived boards" : "Taulers arxivats",
"Archive" : "Arxiu",
"Unarchive" : "Desbloquejar",
"Enter a card title" : "Introduïu un títol de la targeta",
"Sharing" : "Compartir",
"Tags" : "Etiquetes",
"Select users or groups to share with" : "Seleccioneu usuaris o grups per compartir",
"No matching user or group found." : "No s'ha trobat cap usuari o grup coincident.",
"Share" : "Comparteix",
"Edit" : "Edita",
"Share" : "Comparteix",
"Manage" : "Gestor",
"Discard share" : "Descarta la compartició",
"Create a new tag" : "Crea una nova etiqueta",

View File

@@ -1,28 +1,38 @@
{ "translations": {
"Delete" : "Esborra",
"Please provide a content for your comment." : "Si us plau, proporciona un comentari.",
"Posting the comment failed." : "Error al posar el comentari.",
"The comment has been deleted" : "S'ha esborrat el comentari",
"Restore associated stack" : "Restaura la pila associada",
"Remove user from card" : "Esborra usuari de la targeta",
"Hours" : "Hores",
"Minutes" : "Minuts",
"Maximum file size of {size} exceeded" : "Mida màxima per fitxer de {size} superada",
"You have created a new board {board}" : "Has creat el nou tauler {board}",
"{user} has created a new board {board}" : "{user} ha creat el nou tauler {board}",
"You have deleted the board {board}" : "Has esborrat el taulell {board}",
"{user} has deleted the board {board}" : "{user} ha esborrat el taulell {board}",
"You have restored the board {board}" : "Has restaurat el taulell {board}",
"{user} has restored the board {board}" : "{user} ha restaurat el taulell {board}",
"You have shared the board {board} with {acl}" : "Has compartit el taulell {board} amb {acl}",
"You have renamed the card {before} to {card}" : "Has canviat el nom de la targeta de {before} a {card}",
"{user} has renamed the card {before} to {card}" : "{user} ha canviat el nom de la targeta de {before} a {card}",
"Deck" : "Coberta",
"Finished" : "Acabat",
"To review" : "Per revisar",
"Action needed" : "Acció necessaria",
"Later" : "Més tard",
"Deck" : "Coberta",
"Add a new stack" : "Afegeix una nova pila",
"Show archived cards" : "Mostra les targetes arxivades",
"Hide archived cards" : "Amaga les targetes arxivades",
"Board details" : "Detalls de la junta",
"All Boards" : "Totes les juntes",
"Archived boards" : "Taulers arxivats",
"Archive" : "Arxiu",
"Unarchive" : "Desbloquejar",
"Enter a card title" : "Introduïu un títol de la targeta",
"Sharing" : "Compartir",
"Tags" : "Etiquetes",
"Select users or groups to share with" : "Seleccioneu usuaris o grups per compartir",
"No matching user or group found." : "No s'ha trobat cap usuari o grup coincident.",
"Share" : "Comparteix",
"Edit" : "Edita",
"Share" : "Comparteix",
"Manage" : "Gestor",
"Discard share" : "Descarta la compartició",
"Create a new tag" : "Crea una nova etiqueta",

View File

@@ -1,51 +1,108 @@
OC.L10N.register(
"deck",
{
"Are you sure you want to delete this card with all of its data?" : "Opravdu chcete smazat tuto kartu a všechna její data?",
"Delete" : "Smazat",
"Please provide a content for your comment." : "Zadejte obsah svého komentáře.",
"Posting the comment failed." : "Odeslání komentáře se nezdařilo.",
"The comment has been deleted" : "Komentář byl smazán",
"The associated stack is deleted as well, it will be restored as well." : "Související stack je také smazaný a bude také obnoven.",
"Restore associated stack" : "Obnovit související stack",
"Remove user from card" : "Odebrat uživatele z karty",
"Hours" : "Hodiny",
"Minutes" : "Minuty",
"Are you sure you want to delete the stack with all of its data?" : "Opravdu chcete smazat stack a všechna data v něm?",
"Maximum file size of {size} exceeded" : "U souboru {size} překročena nejvyšší umožněná velikost",
"You have created a new board {board}" : "Vytvořili jste nástěnku {board}",
"{user} has created a new board {board}" : "{user} vytvořil(a) novou nástěnku {board}",
"You have deleted the board {board}" : "Smazali jste nástěnku {board}",
"{user} has deleted the board {board}" : "{user} smazal(a) nástěnku {board}",
"You have restored the board {board}" : "Obnovili jste nástěnku {board}",
"{user} has restored the board {board}" : "{user} obnovil(a) nástěnku {board}",
"You have shared the board {board} with {acl}" : "Nasdíleli jste nástěnku {board} s {acl}",
"{user} has shared the board {board} with {sharee}" : "{user} nasdílel(a) nástěnku {board} pro {sharee}",
"You have removed {acl} from the board {board}" : "Odebrali jste {acl} z nástěnky {board}",
"{user} has removed {acl} from the board {board}" : "{user} odebral(a) {acl} z nástěnky {board}",
"You have renamed the board {before} to {board}" : "Přejmenovali jste nástěnku {before} na {board}",
"{user} has renamed the board {before} to {board}" : "{user} přejmenoval(a) desku {before} na {board}",
"You have archived the board {board}" : "Zaarchivovali jste nástěnku {board}",
"{user} has archived the board {before}" : "{user} zaarchivoval(a) nástěnku {before}",
"You have unarchived the board {board}" : "Zrušili jste archivaci nástěnky {board}",
"{user} has unarchived the board {before}" : "{user} zrušil(a) archivaci nástěnky {before}",
"You have renamed the card {before} to {card}" : "Přejmenovali jste kartu {before} na {card}",
"{user} has renamed the card {before} to {card}" : "{user} přejmenoval(a) {before} na {card}",
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Popis mapy</strong> v Deck-aplikace byl změněn",
"Deck" : "Balík",
"Changes in the <strong>Deck app</strong>" : "Změny v <strong>Deck aplikace</strong>",
"Personal" : "Osobní",
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kartu „%s“ na „%s“ vám přiřadil(a) %s.",
"{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} vám přiřadil(a) kartu „%s“ na „%s“.",
"The card \"%s\" on \"%s\" has reached its due date." : "U karty \"%s\" z tabule \"%s\" nastalo plánované datum dokončení.",
"%s has mentioned you in a comment on \"%s\"." : "%s vás zmínil(a) v komentáři k „%s“.",
"{user} has mentioned you in a comment on \"%s\"." : "{user} vás zmínil(a) v komentáři v „%s“.",
"The board \"%s\" has been shared with you by %s." : "Tabule \"%s\" s vámi byla nasdílena uživatelem %s.",
"{user} has shared the board %s with you." : "{user} s vámi nasdílel tabuli %s.",
"No data was provided to create an attachment." : "Žádná data k vytvoření přílohy.",
"Finished" : "Dokončeno",
"To review" : "K revizi",
"Action needed" : "Nutná akce",
"Later" : "Později",
"To do" : "Udělat",
"Doing" : "Provádí se",
"Done" : "Hotovo",
"Example Task 3" : "Třetí úkol pro ukázku",
"Example Task 2" : "Druhý úkol pro ukázku",
"Example Task 1" : "První úkol pro ukázku",
"The file was uploaded" : "Soubor byl nahrán",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Nahrávaný soubor přesahuje nastavení upload_max_filesize v php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Nahrávaný soubor přesáhl svou velikostí hodnotu direktivy MAX_FILE_SIZE, určenou v HTML formuláři",
"The file was only partially uploaded" : "Soubor byl nahrán pouze z části",
"No file was uploaded" : "Nebyl nahrán žádný soubor",
"Missing a temporary folder" : "Chybí adresář pro dočasné soubory",
"Could not write file to disk" : "Nedaří se zapsat soubor do úložiště",
"A PHP extension stopped the file upload" : "Rozšíření PHP zastavilo nahrávání souboru.",
"Deck" : "Balík",
"Missing a temporary folder" : "Chybí složka pro dočasné soubory",
"Could not write file to disk" : "Soubor se nedaří se zapsat na úložiště",
"A PHP extension stopped the file upload" : "PHP rozšíření zastavilo nahrávání souboru.",
"No file uploaded or file size exceeds maximum of %s" : "Nebyl nahrán žádný soubor nebo jeho velikost přesáhla %s",
"A kanban style project and personal management tool for Nextcloud" : "Nástroj pro projektový a osobní řízení ve stylu Kanban.",
"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 jsou nástroj zací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",
"Add a new stack" : "Přidat nový zásobník",
"Submit" : "Odeslat",
"Show archived cards" : "Zobrazit archivované karty",
"Hide archived cards" : "Skrýt archivované karty",
"Board details" : "Detaily desky",
"Toggle compact mode" : "Vyp/zap. kompaktní režim",
"Show board details" : "Zobrazit podrobnosti o desce",
"All Boards" : "Všechny desky",
"Archived boards" : "Archivované desky",
"Archive" : "Archiv",
"Unarchive" : "Zrušit archivování",
"Share board" : "Sdílet nástěnku",
"Actions" : "Akce",
"Drop your files here to upload it to the card" : "Přetáhněte soubor sem, pokud jej chcete připojit ke kartě.",
"Assign card to me" : "Přiřadit kartu mě",
"Unassign card from me" : "Zrušit přiřazení karty mě",
"Archive card" : "Archivovat kartu",
"Unarchive card" : "Zrušit archivaci karty",
"Delete card" : "Smazat kartu",
"Enter a card title" : "Zadejte nadpis karty",
"Add card" : "Přidat kartu",
"Close" : "Zavřít",
"Sharing" : "Sdílení",
"Tags" : "Značky",
"Deleted items" : "Smazané položky",
"Timeline" : "Časová osa",
"Select users or groups to share with" : "Vyberte uživatele nebo skupiny pro sdílení",
"Access for" : "Přístup pro",
"No matching user or group found." : "Nevyhovuje žádný uživatel ani skupina",
"Loading" : "Načítání",
"Share" : "Sdílet",
"Edit" : "Upravit",
"Share" : "Sdílet",
"Manage" : "Spravovat",
"Discard share" : "Zrušit sdílení",
"Update" : "Aktualizovat",
"Sharing has been disabled for your account." : "Sdílení bylo zakázáno pro váš konto.",
"Update tag" : "Aktualizovat štítek",
"Edit tag" : "Upravit štítek",
"Delete tag" : "Smazat štítek",
"Create" : "Vytvořit",
"Create a new tag" : "Vytvořit nový štítek",
"Deleted stacks" : "Smazané zásobníky",
"Deleted cards" : "Smazané karty",
"Status" : "Stav",
"No archived boards to display" : "Žádné archivované nástěnky k zobrazení",
"No shared boards to display" : "Žádné sdílené nástěnky k zobrazení",
"Title" : "Název",
"Members" : "Členové",
"More actions" : "Více akcí",
@@ -53,11 +110,19 @@ OC.L10N.register(
"Archive board" : "Archivovaná deska",
"Unarchive board" : "Odarchivovat desku",
"Delete board" : "Smazat desku",
"Reset" : "Obnovit",
"Update board" : "Aktualizovat desku",
"Reset board" : "Resetovat nástěnku",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Vrátit smazání tabule - Tabule bude jinak trvale odstraněna během příštího běhu cronjobu.",
"Create new board" : "VYtvořit ovou desku",
"Create new board" : "Vytvořit novou desku",
"New board title" : "Nadpis nové desky",
"Create board" : "Vytvořit nástěnku",
"Select an attachment" : "Vybrat přílohu",
"Cancel upload" : "Zrušit nahrávání",
"by" : "od",
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Vrátit smazání souboru v opačném případě bude soubor trvale smazán při dalším běhu cronjobu.",
"Undo file deletion" : "Vzít zpět smazání souboru",
"Insert the file into the description" : "Vložte soubor do popisku.",
"Delete attachment" : "Smazat přílohu",
"Modified:" : "Upraveno:",
"Created:" : "Vytvořeno:",
"Choose a tag" : "Vyberte štítek",
@@ -73,13 +138,15 @@ OC.L10N.register(
"Attachments" : "Přílohy",
"Saved" : "Uloženo",
"Unsaved changes" : "Neuložené změny",
"Insert attachment" : "Vložit přílohu",
"Formatting help" : "Nápověda k formátování",
"Upload attachment" : "Nahrát přílohu",
"Insert attachment" : "Vložit přílohu",
"Add a card description…" : "Přidat popis karty...",
"Add a card description…" : "Přidat popis karty…",
"Shared boards" : "Sdílené desky",
"View more" : "Ukázat více",
"Move board to archive" : "Přesunout desku do archivu",
"Create a new board" : "Vytvořit novou desku"
"Create a new board" : "Vytvořit novou desku",
"Settings" : "Nastavení",
"Limit deck to groups" : "Omezte 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í Decků brání uživatelům, kteří nejsou součástí těchto skupin, při vytváření vlastních desek. Uživatelé mohou stále pracovat na deskách, které jsou s nimi sdíleny."
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");

View File

@@ -1,49 +1,106 @@
{ "translations": {
"Are you sure you want to delete this card with all of its data?" : "Opravdu chcete smazat tuto kartu a všechna její data?",
"Delete" : "Smazat",
"Please provide a content for your comment." : "Zadejte obsah svého komentáře.",
"Posting the comment failed." : "Odeslání komentáře se nezdařilo.",
"The comment has been deleted" : "Komentář byl smazán",
"The associated stack is deleted as well, it will be restored as well." : "Související stack je také smazaný a bude také obnoven.",
"Restore associated stack" : "Obnovit související stack",
"Remove user from card" : "Odebrat uživatele z karty",
"Hours" : "Hodiny",
"Minutes" : "Minuty",
"Are you sure you want to delete the stack with all of its data?" : "Opravdu chcete smazat stack a všechna data v něm?",
"Maximum file size of {size} exceeded" : "U souboru {size} překročena nejvyšší umožněná velikost",
"You have created a new board {board}" : "Vytvořili jste nástěnku {board}",
"{user} has created a new board {board}" : "{user} vytvořil(a) novou nástěnku {board}",
"You have deleted the board {board}" : "Smazali jste nástěnku {board}",
"{user} has deleted the board {board}" : "{user} smazal(a) nástěnku {board}",
"You have restored the board {board}" : "Obnovili jste nástěnku {board}",
"{user} has restored the board {board}" : "{user} obnovil(a) nástěnku {board}",
"You have shared the board {board} with {acl}" : "Nasdíleli jste nástěnku {board} s {acl}",
"{user} has shared the board {board} with {sharee}" : "{user} nasdílel(a) nástěnku {board} pro {sharee}",
"You have removed {acl} from the board {board}" : "Odebrali jste {acl} z nástěnky {board}",
"{user} has removed {acl} from the board {board}" : "{user} odebral(a) {acl} z nástěnky {board}",
"You have renamed the board {before} to {board}" : "Přejmenovali jste nástěnku {before} na {board}",
"{user} has renamed the board {before} to {board}" : "{user} přejmenoval(a) desku {before} na {board}",
"You have archived the board {board}" : "Zaarchivovali jste nástěnku {board}",
"{user} has archived the board {before}" : "{user} zaarchivoval(a) nástěnku {before}",
"You have unarchived the board {board}" : "Zrušili jste archivaci nástěnky {board}",
"{user} has unarchived the board {before}" : "{user} zrušil(a) archivaci nástěnky {before}",
"You have renamed the card {before} to {card}" : "Přejmenovali jste kartu {before} na {card}",
"{user} has renamed the card {before} to {card}" : "{user} přejmenoval(a) {before} na {card}",
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Popis mapy</strong> v Deck-aplikace byl změněn",
"Deck" : "Balík",
"Changes in the <strong>Deck app</strong>" : "Změny v <strong>Deck aplikace</strong>",
"Personal" : "Osobní",
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kartu „%s“ na „%s“ vám přiřadil(a) %s.",
"{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} vám přiřadil(a) kartu „%s“ na „%s“.",
"The card \"%s\" on \"%s\" has reached its due date." : "U karty \"%s\" z tabule \"%s\" nastalo plánované datum dokončení.",
"%s has mentioned you in a comment on \"%s\"." : "%s vás zmínil(a) v komentáři k „%s“.",
"{user} has mentioned you in a comment on \"%s\"." : "{user} vás zmínil(a) v komentáři v „%s“.",
"The board \"%s\" has been shared with you by %s." : "Tabule \"%s\" s vámi byla nasdílena uživatelem %s.",
"{user} has shared the board %s with you." : "{user} s vámi nasdílel tabuli %s.",
"No data was provided to create an attachment." : "Žádná data k vytvoření přílohy.",
"Finished" : "Dokončeno",
"To review" : "K revizi",
"Action needed" : "Nutná akce",
"Later" : "Později",
"To do" : "Udělat",
"Doing" : "Provádí se",
"Done" : "Hotovo",
"Example Task 3" : "Třetí úkol pro ukázku",
"Example Task 2" : "Druhý úkol pro ukázku",
"Example Task 1" : "První úkol pro ukázku",
"The file was uploaded" : "Soubor byl nahrán",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Nahrávaný soubor přesahuje nastavení upload_max_filesize v php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Nahrávaný soubor přesáhl svou velikostí hodnotu direktivy MAX_FILE_SIZE, určenou v HTML formuláři",
"The file was only partially uploaded" : "Soubor byl nahrán pouze z části",
"No file was uploaded" : "Nebyl nahrán žádný soubor",
"Missing a temporary folder" : "Chybí adresář pro dočasné soubory",
"Could not write file to disk" : "Nedaří se zapsat soubor do úložiště",
"A PHP extension stopped the file upload" : "Rozšíření PHP zastavilo nahrávání souboru.",
"Deck" : "Balík",
"Missing a temporary folder" : "Chybí složka pro dočasné soubory",
"Could not write file to disk" : "Soubor se nedaří se zapsat na úložiště",
"A PHP extension stopped the file upload" : "PHP rozšíření zastavilo nahrávání souboru.",
"No file uploaded or file size exceeds maximum of %s" : "Nebyl nahrán žádný soubor nebo jeho velikost přesáhla %s",
"A kanban style project and personal management tool for Nextcloud" : "Nástroj pro projektový a osobní řízení ve stylu Kanban.",
"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 jsou nástroj zací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",
"Add a new stack" : "Přidat nový zásobník",
"Submit" : "Odeslat",
"Show archived cards" : "Zobrazit archivované karty",
"Hide archived cards" : "Skrýt archivované karty",
"Board details" : "Detaily desky",
"Toggle compact mode" : "Vyp/zap. kompaktní režim",
"Show board details" : "Zobrazit podrobnosti o desce",
"All Boards" : "Všechny desky",
"Archived boards" : "Archivované desky",
"Archive" : "Archiv",
"Unarchive" : "Zrušit archivování",
"Share board" : "Sdílet nástěnku",
"Actions" : "Akce",
"Drop your files here to upload it to the card" : "Přetáhněte soubor sem, pokud jej chcete připojit ke kartě.",
"Assign card to me" : "Přiřadit kartu mě",
"Unassign card from me" : "Zrušit přiřazení karty mě",
"Archive card" : "Archivovat kartu",
"Unarchive card" : "Zrušit archivaci karty",
"Delete card" : "Smazat kartu",
"Enter a card title" : "Zadejte nadpis karty",
"Add card" : "Přidat kartu",
"Close" : "Zavřít",
"Sharing" : "Sdílení",
"Tags" : "Značky",
"Deleted items" : "Smazané položky",
"Timeline" : "Časová osa",
"Select users or groups to share with" : "Vyberte uživatele nebo skupiny pro sdílení",
"Access for" : "Přístup pro",
"No matching user or group found." : "Nevyhovuje žádný uživatel ani skupina",
"Loading" : "Načítání",
"Share" : "Sdílet",
"Edit" : "Upravit",
"Share" : "Sdílet",
"Manage" : "Spravovat",
"Discard share" : "Zrušit sdílení",
"Update" : "Aktualizovat",
"Sharing has been disabled for your account." : "Sdílení bylo zakázáno pro váš konto.",
"Update tag" : "Aktualizovat štítek",
"Edit tag" : "Upravit štítek",
"Delete tag" : "Smazat štítek",
"Create" : "Vytvořit",
"Create a new tag" : "Vytvořit nový štítek",
"Deleted stacks" : "Smazané zásobníky",
"Deleted cards" : "Smazané karty",
"Status" : "Stav",
"No archived boards to display" : "Žádné archivované nástěnky k zobrazení",
"No shared boards to display" : "Žádné sdílené nástěnky k zobrazení",
"Title" : "Název",
"Members" : "Členové",
"More actions" : "Více akcí",
@@ -51,11 +108,19 @@
"Archive board" : "Archivovaná deska",
"Unarchive board" : "Odarchivovat desku",
"Delete board" : "Smazat desku",
"Reset" : "Obnovit",
"Update board" : "Aktualizovat desku",
"Reset board" : "Resetovat nástěnku",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Vrátit smazání tabule - Tabule bude jinak trvale odstraněna během příštího běhu cronjobu.",
"Create new board" : "VYtvořit ovou desku",
"Create new board" : "Vytvořit novou desku",
"New board title" : "Nadpis nové desky",
"Create board" : "Vytvořit nástěnku",
"Select an attachment" : "Vybrat přílohu",
"Cancel upload" : "Zrušit nahrávání",
"by" : "od",
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Vrátit smazání souboru v opačném případě bude soubor trvale smazán při dalším běhu cronjobu.",
"Undo file deletion" : "Vzít zpět smazání souboru",
"Insert the file into the description" : "Vložte soubor do popisku.",
"Delete attachment" : "Smazat přílohu",
"Modified:" : "Upraveno:",
"Created:" : "Vytvořeno:",
"Choose a tag" : "Vyberte štítek",
@@ -71,13 +136,15 @@
"Attachments" : "Přílohy",
"Saved" : "Uloženo",
"Unsaved changes" : "Neuložené změny",
"Insert attachment" : "Vložit přílohu",
"Formatting help" : "Nápověda k formátování",
"Upload attachment" : "Nahrát přílohu",
"Insert attachment" : "Vložit přílohu",
"Add a card description…" : "Přidat popis karty...",
"Add a card description…" : "Přidat popis karty…",
"Shared boards" : "Sdílené desky",
"View more" : "Ukázat více",
"Move board to archive" : "Přesunout desku do archivu",
"Create a new board" : "Vytvořit novou desku"
"Create a new board" : "Vytvořit novou desku",
"Settings" : "Nastavení",
"Limit deck to groups" : "Omezte 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í Decků brání uživatelům, kteří nejsou součástí těchto skupin, při vytváření vlastních desek. Uživatelé mohou stále pracovat na deskách, které jsou s nimi sdíleny."
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
}

View File

@@ -1,12 +1,10 @@
OC.L10N.register(
"deck",
{
"Are you sure you want to delete this card with all of its data?" : "Er du sikker på, at du vil slette dette kort med alle dets data?",
"Delete" : "Slet",
"Remove user from card" : "Fjern bruger fra kort",
"Hours" : "Timer",
"Minutes" : "Minutter",
"Are you sure you want to delete the stack with all of its data?" : "Er du sikker på, at du ønsker at slette denne stak med alle data?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "Kortet \"%s\" på \"%s\" har nået sin udløbsdato.",
"The board \"%s\" has been shared with you by %s." : "Brættet \"%s\" er blevet delt med dig af %s.",
"{user} has shared the board %s with you." : "{user} har delt brættet %s med dig.",
@@ -14,18 +12,13 @@ OC.L10N.register(
"To review" : "Gennemse",
"Action needed" : "Handling påkrævet",
"Later" : "Senere",
"Deck" : "Deck",
"A kanban style project and personal management tool for Nextcloud" : "Et Kanban-inspireret projekt- og styringsværktøj til Nextcloud",
"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- 🚀 Get your project organized" : "Deck er et Kanban-inspireret organisationsværktøj beregnet til personlig planlægning og projektstyring for teams - integreret med Nextcloud.\n\n\n- 📥 Tilføj dine opgaver til kort og organiser dem\n- 📄 Skriv yderligere noter i Markdown\n- 🔖 Marker opgaver med tags for bedre organisering\n- 👥 Del med team, venner eller familie\n- 🚀 Organiser dit projekt",
"Add a new stack" : "Tilføj en ny stak",
"Submit" : "Tilføj",
"Show archived cards" : "Vis arkiverede kort",
"Hide archived cards" : "Skjul arkiverede kort",
"Board details" : "Liste detaljer",
"All Boards" : "Alle lister",
"Archived boards" : "Arkiverede lister",
"Archive" : "Arkivér",
"Unarchive" : "Annuller arkivering",
"Enter a card title" : "Angiv titel på kort",
"Add card" : "Tilføj kort",
"Close" : "Luk",
@@ -35,11 +28,10 @@ OC.L10N.register(
"Access for" : "Adgang for",
"No matching user or group found." : "Ingen bruger eller gruppe fundet",
"Loading" : "Loader",
"Share" : "Del",
"Edit" : "Redigér",
"Share" : "Del",
"Manage" : "Administrer ",
"Discard share" : "Kasser deling",
"Update" : "Opdatér",
"Create" : "Opret",
"Create a new tag" : "Opret et nyt mærkat",
"Status" : "Status",
@@ -50,7 +42,6 @@ OC.L10N.register(
"Archive board" : "Arkivér liste",
"Unarchive board" : "Annuller arkivering af liste",
"Delete board" : "Slet liste",
"Reset" : "Nulstil",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Fortryd sletning af board - Ellers vil boardet blive slettet ved næste cronjob kørsel.",
"Create new board" : "Opret ny liste",
"New board title" : "Ny titel på liste",
@@ -72,7 +63,6 @@ OC.L10N.register(
"Formatting help" : "Hjælp til formatering",
"Add a card description…" : "Tilføj en beskrivelse...",
"Shared boards" : "Delte lister",
"View more" : "Vis mere",
"Move board to archive" : "Flyt liste til arkiv",
"Create a new board" : "Opret ny liste"
},

View File

@@ -1,10 +1,8 @@
{ "translations": {
"Are you sure you want to delete this card with all of its data?" : "Er du sikker på, at du vil slette dette kort med alle dets data?",
"Delete" : "Slet",
"Remove user from card" : "Fjern bruger fra kort",
"Hours" : "Timer",
"Minutes" : "Minutter",
"Are you sure you want to delete the stack with all of its data?" : "Er du sikker på, at du ønsker at slette denne stak med alle data?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "Kortet \"%s\" på \"%s\" har nået sin udløbsdato.",
"The board \"%s\" has been shared with you by %s." : "Brættet \"%s\" er blevet delt med dig af %s.",
"{user} has shared the board %s with you." : "{user} har delt brættet %s med dig.",
@@ -12,18 +10,13 @@
"To review" : "Gennemse",
"Action needed" : "Handling påkrævet",
"Later" : "Senere",
"Deck" : "Deck",
"A kanban style project and personal management tool for Nextcloud" : "Et Kanban-inspireret projekt- og styringsværktøj til Nextcloud",
"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- 🚀 Get your project organized" : "Deck er et Kanban-inspireret organisationsværktøj beregnet til personlig planlægning og projektstyring for teams - integreret med Nextcloud.\n\n\n- 📥 Tilføj dine opgaver til kort og organiser dem\n- 📄 Skriv yderligere noter i Markdown\n- 🔖 Marker opgaver med tags for bedre organisering\n- 👥 Del med team, venner eller familie\n- 🚀 Organiser dit projekt",
"Add a new stack" : "Tilføj en ny stak",
"Submit" : "Tilføj",
"Show archived cards" : "Vis arkiverede kort",
"Hide archived cards" : "Skjul arkiverede kort",
"Board details" : "Liste detaljer",
"All Boards" : "Alle lister",
"Archived boards" : "Arkiverede lister",
"Archive" : "Arkivér",
"Unarchive" : "Annuller arkivering",
"Enter a card title" : "Angiv titel på kort",
"Add card" : "Tilføj kort",
"Close" : "Luk",
@@ -33,11 +26,10 @@
"Access for" : "Adgang for",
"No matching user or group found." : "Ingen bruger eller gruppe fundet",
"Loading" : "Loader",
"Share" : "Del",
"Edit" : "Redigér",
"Share" : "Del",
"Manage" : "Administrer ",
"Discard share" : "Kasser deling",
"Update" : "Opdatér",
"Create" : "Opret",
"Create a new tag" : "Opret et nyt mærkat",
"Status" : "Status",
@@ -48,7 +40,6 @@
"Archive board" : "Arkivér liste",
"Unarchive board" : "Annuller arkivering af liste",
"Delete board" : "Slet liste",
"Reset" : "Nulstil",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Fortryd sletning af board - Ellers vil boardet blive slettet ved næste cronjob kørsel.",
"Create new board" : "Opret ny liste",
"New board title" : "Ny titel på liste",
@@ -70,7 +61,6 @@
"Formatting help" : "Hjælp til formatering",
"Add a card description…" : "Tilføj en beskrivelse...",
"Shared boards" : "Delte lister",
"View more" : "Vis mere",
"Move board to archive" : "Flyt liste til arkiv",
"Create a new board" : "Opret ny liste"
},"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -1,14 +1,86 @@
OC.L10N.register(
"deck",
{
"Are you sure you want to delete this card with all of its data?" : "Möchtest Du wirklich diese Karte mit all ihren Daten löschen?",
"Delete" : "Löschen",
"Please provide a content for your comment." : "Bitte gib einen Inhalt für Deinen Kommentar an.",
"Posting the comment failed." : "Absenden des Kommentars ist fehlgeschlagen.",
"The comment has been deleted" : "Der Kommentar wurde gelöscht",
"The associated stack is deleted as well, it will be restored as well." : "Der dazugehörige Stapel wurde auch gelöscht, er wird ebenfalls wiederhergestellt.",
"Restore associated stack" : "Dazugehörigen Stapel wiederherstellen",
"Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden",
"Minutes" : "Minuten",
"Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten",
"Are you sure you want to delete the stack with all of its data?" : "Möchtest du diesen Stapel mit allen Daten wirklich löschen?",
"You have created a new board {board}" : "Du hast das neue Board {board} erstellt",
"{user} has created a new board {board}" : "{user} hat das neue Board {board} erstellt",
"You have deleted the board {board}" : "Du hast das Board {board} gelöscht",
"{user} has deleted the board {board}" : "{user} hat das Board {board} gelöscht",
"You have restored the board {board}" : "Du hast das Board {board} wiederhergestellt",
"{user} has restored the board {board}" : "{user} hat das Board {board} wiederhergestellt",
"You have shared the board {board} with {acl}" : "Du hast das Board {board} mit {acl} geteilt",
"{user} has shared the board {board} with {sharee}" : "{user} hat das Board {board} mit {sharee} geteilt",
"You have removed {acl} from the board {board}" : "Du hast {acl} vom Board {board} entfernt",
"{user} has removed {acl} from the board {board}" : "{user} hat {acl} vom Board {board} entfernt",
"You have renamed the board {before} to {board}" : "Du hast das Board {before} in {board} umbenannt",
"{user} has renamed the board {before} to {board}" : "{user} hat das Board {before} in {board} umbenannt",
"You have archived the board {board}" : "Du hast das Board {board} archiviert",
"{user} has archived the board {before}" : "{user} hat das Board {before} archiviert",
"You have unarchived the board {board}" : "Du hast das Board {board} dearchiviert",
"{user} has unarchived the board {before}" : "{user} hat das Board {before} dearchiviert",
"You have created a new stack {stack} on board {board}" : "Du hast den neuen Stapel {stack} auf dem Board {board} erstellt",
"{user} has created a new stack {stack} on board {board}" : "{user} hat den neuen Stapel {stack} auf dem Board {board} erstellt",
"You have renamed stack {before} to {stack} on board {board}" : "Du hast den Stapel {before} auf dem Board {board} in {stack} umbenannt",
"{user} has renamed stack {before} to {stack} on board {board}" : "{user} hat den Stapel {before} in {stack} auf dem Board {board} umbenannt",
"You have deleted stack {stack} on board {board}" : "Du hast den Stapel {stack} auf dem Board {board} gelöscht",
"{user} has deleted stack {stack} on board {board}" : "{user} hat den Stapel {stack} auf dem Board {board} gelöscht",
"You have created card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} erstellt",
"{user} has created card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} erstellt",
"You have deleted card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht",
"{user} has deleted card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht",
"You have renamed the card {before} to {card}" : "Du hast die Karte {before} in {card} umbenannt",
"{user} has renamed the card {before} to {card}" : "{user} hat die Karte {before} in {card} umbenannt",
"You have added a description to card {card} in stack {stack} on board {board}" : "Du hast der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt",
"{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt",
"You have updated the description of card {card} in stack {stack} on board {board}" : "Du hast die Beschreibung der Karte {card} im Stapel {stack} auf dem Board {board} aktualisiert",
"{user} has updated the description card {card} in stack {stack} on board {board}" : "{user} hat die Beschreibung der Karte {card} im Stapel {stack} auf dem Board {board} aktualiesiert",
"You have archived card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} archiviert",
"{user} has archived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} archiviert",
"You have unarchived card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert",
"{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert",
"You have removed the due date of card {card}" : "Du hast das Fälligkeitsdatum der Karte {card} entfernt",
"{user} has removed the due date of card {card}" : "{user} hat das Fälligkeitsdatum der Karte {card} entfernt",
"You have set the due date of card {card} to {after}" : "Du hast das Fälligkeitsdatum der Karte {card} auf {after} gesetzt",
"{user} has set the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} gesetzt",
"You have updated the due date of card {card} to {after}" : "Du hast das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert",
"{user} has updated the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert",
"You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Sie haben der Karte {card} in Stapel {stack} auf dem Board {board} das Schlagwort {label} hinzugefügt",
"{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} in Stapel {stack} auf dem Board {board} das Schlagwort {label} hinzugefügt",
"You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Du hast von der Karte {card} im Stapel {stack} auf dem Board {board} das Label {label} entfernt",
"{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} hat von der Karte {card} in Stapel {stack} auf dem Board {board} das Label {label} entfernt",
"You have assigned {assigneduser} to card {card} on board {board}" : "Du hast {assigneduser} der Karte {card} auf dem Board {board} zugewiesen",
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} hat {assigneduser} der Karte {card} auf dem Board {board} zugewiesen",
"You have unassigned {assigneduser} from card {card} on board {board}" : "Du hast die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben",
"{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} hat die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben",
"You have moved the card {card} from stack {stackBefore} to {stack}" : "Du hast die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben",
"{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} hat die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben",
"You have added the attachment {attachment} to card {card}" : "Du hast den Anhang {attachment} zur Karte {card} hinzugefügt",
"{user} has added the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} zur Karte {card} hinzugefügt",
"You have updated the attachment {attachment} on card {card}" : "Du hast den Anhang {attachment} der Karte {card} aktualisiert",
"{user} has updated the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} aktualisiert",
"You have deleted the attachment {attachment} from card {card}" : "Du hast den Anhang {attachment} von der Karte {card} entfernt",
"{user} has deleted the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} von Karte {card} entfernt",
"You have restored the attachment {attachment} to card {card}" : "Du hast den Anhang {attachment} der Karte {card} wiederhergestellt",
"{user} has restored the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} wiederhergestellt",
"You have commented on card {card}" : "Du hast {card} kommentiert",
"{user} has commented on card {card}" : "{user} hat {card} kommentiert",
"A <strong>card description</strong> inside the Deck app has been changed" : "Eine <strong>Kartenbeschreibung</strong> wurde innerhalb der Deck-App geändert",
"Deck" : "Deck",
"Changes in the <strong>Deck app</strong>" : "Änderungen in der <strong>Deck-App</strong>",
"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.",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
"%s has mentioned you in a comment on \"%s\"." : " %s hat Dich in einem Kommentar zu \"%s\" erwähnt.",
"{user} has mentioned you in a comment on \"%s\"." : "{user} hat Dich in einem Kommentar zu “%s” erwähnt.",
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Dir geteilt.",
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Dir geteilt.",
"No data was provided to create an attachment." : "Es wurde keine Daten zum Erstellen eines Anhangs bereitgestellt.",
@@ -16,6 +88,12 @@ OC.L10N.register(
"To review" : "Zu überprüfen",
"Action needed" : "Handlung erforderlich",
"Later" : "Später",
"To do" : "Offen",
"Doing" : "In Arbeit",
"Done" : "Erledigt",
"Example Task 3" : "Beispielaufgabe 3",
"Example Task 2" : "Beispielaufgabe 2",
"Example Task 1" : "Beispielaufgabe 1",
"The file was uploaded" : "Die Datei wurde hochgeladen",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Die Datei ist größer, als die MAX_FILE_SIZE-Vorgabe, die im HTML-Formular angegeben ist.",
@@ -25,36 +103,50 @@ OC.L10N.register(
"Could not write file to disk" : "Die Datei konnte nicht auf die Festplatte geschrieben werden",
"A PHP extension stopped the file upload" : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt",
"No file uploaded or file size exceeds maximum of %s" : "Keine Datei hochgeladen oder die Dateigröße überschreitet %s",
"Deck" : "Deck",
"A kanban style project and personal management tool for Nextcloud" : "Ein Kanban Werkzeug für Nextcloud",
"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- 🚀 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 Labels für noch bessere Organisation\n- 👥 Teile mit Deinem Team, Freunden oder der Familie\n- 🚀 Organisiere Dein Projekt",
"Add a new stack" : "Stapel hinzufügen",
"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 Labels 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",
"Add a new stack" : "Neuer Stapel",
"Submit" : "Übermitteln",
"Show archived cards" : "Archivierte Karten anzeigen",
"Hide archived cards" : "Archivierte Karten ausblenden",
"Board details" : "Board-Details",
"Toggle compact mode" : "Kompaktmodus umschalten",
"Show board details" : "Board-Details anzeigen",
"All Boards" : "Alle Boards",
"Archived boards" : "Archivierte Boards",
"Share board" : "Board freigeben",
"Actions" : "Aktionen",
"Drop your files here to upload it to the card" : "Lege Deine Dateien hier ab, um sie auf die Karte hochzuladen",
"Archive" : "Archivieren",
"Unarchive" : "Dearchivieren",
"Assign card to me" : "Karte mir zuweisen",
"Unassign card from me" : "Karte nicht mir zuweisen",
"Archive card" : "Karte archivieren",
"Unarchive card" : "Karte dearchivieren",
"Delete card" : "Karte löschen",
"Enter a card title" : "Kartentitel eingeben",
"Add card" : "Karte hinzufügen",
"Close" : "Schließen",
"Sharing" : "Teilen",
"Tags" : "Schlagworte",
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
"Deleted items" : "Gelöschte Objekte",
"Timeline" : "Zeitachse",
"Select users or groups to share with" : "Benutzer oder Gruppen zum Teilen auswählen",
"Access for" : "Zugriff für",
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
"Loading" : "Lade",
"Share" : "Teilen",
"Edit" : "Bearbeiten",
"Share" : "Teilen",
"Manage" : "Verwalten",
"Discard share" : "Teilen beenden",
"Update" : "Aktualisieren",
"Sharing has been disabled for your account." : "Teilen wurde für Dein Konto deaktiviert.",
"Update tag" : "Schlagwort aktualisieren",
"Edit tag" : "Schlagwort bearbeiten",
"Delete tag" : "Schlagwort löschen",
"Create" : "Erstellen",
"Create a new tag" : "Neues Etikett erstellen",
"Create a new tag" : "Neues Schlagwort",
"Deleted stacks" : "Gelöschte Stapel",
"Deleted cards" : "Gelöschte Karten",
"Status" : "Status",
"No archived boards to display" : "Keine archivierten Boards zum Anzeigen",
"No shared boards to display" : "Keine geteilten Boards zum Anzeigen",
"Title" : "Titel",
"Members" : "Mitglieder",
"More actions" : "Weitere Aktionen",
@@ -62,15 +154,19 @@ OC.L10N.register(
"Archive board" : "Board archivieren",
"Unarchive board" : "Board dearchivieren",
"Delete board" : "Board löschen",
"Reset" : "Zurücksetzen",
"Update board" : "Board aktualisieren",
"Reset board" : "Board zurücksetzen",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.",
"Create new board" : "Neues Board erstellen",
"New board title" : "Neuer Board-Titel",
"Create new board" : "Neues Board",
"New board title" : "Board-Titel",
"Create board" : "Neues Board",
"Select an attachment" : "Anhang auswählen",
"Cancel upload" : "Hochladen abbrechen",
"by" : "von",
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - Andernfalls wird die Datei beim nächsten CronJob-Lauf gelöscht.",
"Undo file deletion" : "Dateilöschung rückgängig machen",
"Insert the file into the description" : "Füge die Datei in die Beschreibung ein",
"Delete attachment" : "Anhang löschen",
"Modified:" : "Geändert:",
"Created:" : "Erstellt:",
"Choose a tag" : "Schlagwort auswählen",
@@ -80,19 +176,21 @@ OC.L10N.register(
"Choose a user to assign" : "Wähle einen Benutzer für die Zuweisung aus",
"Assign this card to a user" : "Diese Karte einem Benutzer zuweisen",
"Due date" : "Fälligkeitsdatum",
"Click to set" : "Klicken zum Übernehmen",
"Click to set" : "Auswählen",
"Remove due date" : "Ablaufdatum löschen",
"Description" : "Beschreibung",
"Attachments" : "Anhänge",
"Saved" : "Gespeichert",
"Unsaved changes" : "Ungesicherte Änderungen",
"Insert attachment" : "Anhang einfügen",
"Formatting help" : "Formatierungshilfe",
"Upload attachment" : "Anhang hochladen",
"Insert attachment" : "Anhang einfügen",
"Add a card description…" : "Eine Kartenbeschreibung hinzufügen…",
"Shared boards" : "Geteilte Boards",
"View more" : "Mehr anzeigen",
"Move board to archive" : "Board ins Archiv verschieben",
"Create a new board" : "Neues Board erstellen"
"Create a new board" : "Neues Board",
"Settings" : "Einstellungen",
"Limit deck to groups" : "Deck auf Gruppen beschrä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."
},
"nplurals=2; plural=(n != 1);");

View File

@@ -1,12 +1,84 @@
{ "translations": {
"Are you sure you want to delete this card with all of its data?" : "Möchtest Du wirklich diese Karte mit all ihren Daten löschen?",
"Delete" : "Löschen",
"Please provide a content for your comment." : "Bitte gib einen Inhalt für Deinen Kommentar an.",
"Posting the comment failed." : "Absenden des Kommentars ist fehlgeschlagen.",
"The comment has been deleted" : "Der Kommentar wurde gelöscht",
"The associated stack is deleted as well, it will be restored as well." : "Der dazugehörige Stapel wurde auch gelöscht, er wird ebenfalls wiederhergestellt.",
"Restore associated stack" : "Dazugehörigen Stapel wiederherstellen",
"Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden",
"Minutes" : "Minuten",
"Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten",
"Are you sure you want to delete the stack with all of its data?" : "Möchtest du diesen Stapel mit allen Daten wirklich löschen?",
"You have created a new board {board}" : "Du hast das neue Board {board} erstellt",
"{user} has created a new board {board}" : "{user} hat das neue Board {board} erstellt",
"You have deleted the board {board}" : "Du hast das Board {board} gelöscht",
"{user} has deleted the board {board}" : "{user} hat das Board {board} gelöscht",
"You have restored the board {board}" : "Du hast das Board {board} wiederhergestellt",
"{user} has restored the board {board}" : "{user} hat das Board {board} wiederhergestellt",
"You have shared the board {board} with {acl}" : "Du hast das Board {board} mit {acl} geteilt",
"{user} has shared the board {board} with {sharee}" : "{user} hat das Board {board} mit {sharee} geteilt",
"You have removed {acl} from the board {board}" : "Du hast {acl} vom Board {board} entfernt",
"{user} has removed {acl} from the board {board}" : "{user} hat {acl} vom Board {board} entfernt",
"You have renamed the board {before} to {board}" : "Du hast das Board {before} in {board} umbenannt",
"{user} has renamed the board {before} to {board}" : "{user} hat das Board {before} in {board} umbenannt",
"You have archived the board {board}" : "Du hast das Board {board} archiviert",
"{user} has archived the board {before}" : "{user} hat das Board {before} archiviert",
"You have unarchived the board {board}" : "Du hast das Board {board} dearchiviert",
"{user} has unarchived the board {before}" : "{user} hat das Board {before} dearchiviert",
"You have created a new stack {stack} on board {board}" : "Du hast den neuen Stapel {stack} auf dem Board {board} erstellt",
"{user} has created a new stack {stack} on board {board}" : "{user} hat den neuen Stapel {stack} auf dem Board {board} erstellt",
"You have renamed stack {before} to {stack} on board {board}" : "Du hast den Stapel {before} auf dem Board {board} in {stack} umbenannt",
"{user} has renamed stack {before} to {stack} on board {board}" : "{user} hat den Stapel {before} in {stack} auf dem Board {board} umbenannt",
"You have deleted stack {stack} on board {board}" : "Du hast den Stapel {stack} auf dem Board {board} gelöscht",
"{user} has deleted stack {stack} on board {board}" : "{user} hat den Stapel {stack} auf dem Board {board} gelöscht",
"You have created card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} erstellt",
"{user} has created card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} erstellt",
"You have deleted card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht",
"{user} has deleted card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht",
"You have renamed the card {before} to {card}" : "Du hast die Karte {before} in {card} umbenannt",
"{user} has renamed the card {before} to {card}" : "{user} hat die Karte {before} in {card} umbenannt",
"You have added a description to card {card} in stack {stack} on board {board}" : "Du hast der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt",
"{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt",
"You have updated the description of card {card} in stack {stack} on board {board}" : "Du hast die Beschreibung der Karte {card} im Stapel {stack} auf dem Board {board} aktualisiert",
"{user} has updated the description card {card} in stack {stack} on board {board}" : "{user} hat die Beschreibung der Karte {card} im Stapel {stack} auf dem Board {board} aktualiesiert",
"You have archived card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} archiviert",
"{user} has archived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} archiviert",
"You have unarchived card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert",
"{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert",
"You have removed the due date of card {card}" : "Du hast das Fälligkeitsdatum der Karte {card} entfernt",
"{user} has removed the due date of card {card}" : "{user} hat das Fälligkeitsdatum der Karte {card} entfernt",
"You have set the due date of card {card} to {after}" : "Du hast das Fälligkeitsdatum der Karte {card} auf {after} gesetzt",
"{user} has set the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} gesetzt",
"You have updated the due date of card {card} to {after}" : "Du hast das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert",
"{user} has updated the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert",
"You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Sie haben der Karte {card} in Stapel {stack} auf dem Board {board} das Schlagwort {label} hinzugefügt",
"{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} in Stapel {stack} auf dem Board {board} das Schlagwort {label} hinzugefügt",
"You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Du hast von der Karte {card} im Stapel {stack} auf dem Board {board} das Label {label} entfernt",
"{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} hat von der Karte {card} in Stapel {stack} auf dem Board {board} das Label {label} entfernt",
"You have assigned {assigneduser} to card {card} on board {board}" : "Du hast {assigneduser} der Karte {card} auf dem Board {board} zugewiesen",
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} hat {assigneduser} der Karte {card} auf dem Board {board} zugewiesen",
"You have unassigned {assigneduser} from card {card} on board {board}" : "Du hast die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben",
"{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} hat die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben",
"You have moved the card {card} from stack {stackBefore} to {stack}" : "Du hast die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben",
"{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} hat die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben",
"You have added the attachment {attachment} to card {card}" : "Du hast den Anhang {attachment} zur Karte {card} hinzugefügt",
"{user} has added the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} zur Karte {card} hinzugefügt",
"You have updated the attachment {attachment} on card {card}" : "Du hast den Anhang {attachment} der Karte {card} aktualisiert",
"{user} has updated the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} aktualisiert",
"You have deleted the attachment {attachment} from card {card}" : "Du hast den Anhang {attachment} von der Karte {card} entfernt",
"{user} has deleted the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} von Karte {card} entfernt",
"You have restored the attachment {attachment} to card {card}" : "Du hast den Anhang {attachment} der Karte {card} wiederhergestellt",
"{user} has restored the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} wiederhergestellt",
"You have commented on card {card}" : "Du hast {card} kommentiert",
"{user} has commented on card {card}" : "{user} hat {card} kommentiert",
"A <strong>card description</strong> inside the Deck app has been changed" : "Eine <strong>Kartenbeschreibung</strong> wurde innerhalb der Deck-App geändert",
"Deck" : "Deck",
"Changes in the <strong>Deck app</strong>" : "Änderungen in der <strong>Deck-App</strong>",
"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.",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
"%s has mentioned you in a comment on \"%s\"." : " %s hat Dich in einem Kommentar zu \"%s\" erwähnt.",
"{user} has mentioned you in a comment on \"%s\"." : "{user} hat Dich in einem Kommentar zu “%s” erwähnt.",
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Dir geteilt.",
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Dir geteilt.",
"No data was provided to create an attachment." : "Es wurde keine Daten zum Erstellen eines Anhangs bereitgestellt.",
@@ -14,6 +86,12 @@
"To review" : "Zu überprüfen",
"Action needed" : "Handlung erforderlich",
"Later" : "Später",
"To do" : "Offen",
"Doing" : "In Arbeit",
"Done" : "Erledigt",
"Example Task 3" : "Beispielaufgabe 3",
"Example Task 2" : "Beispielaufgabe 2",
"Example Task 1" : "Beispielaufgabe 1",
"The file was uploaded" : "Die Datei wurde hochgeladen",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Die Datei ist größer, als die MAX_FILE_SIZE-Vorgabe, die im HTML-Formular angegeben ist.",
@@ -23,36 +101,50 @@
"Could not write file to disk" : "Die Datei konnte nicht auf die Festplatte geschrieben werden",
"A PHP extension stopped the file upload" : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt",
"No file uploaded or file size exceeds maximum of %s" : "Keine Datei hochgeladen oder die Dateigröße überschreitet %s",
"Deck" : "Deck",
"A kanban style project and personal management tool for Nextcloud" : "Ein Kanban Werkzeug für Nextcloud",
"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- 🚀 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 Labels für noch bessere Organisation\n- 👥 Teile mit Deinem Team, Freunden oder der Familie\n- 🚀 Organisiere Dein Projekt",
"Add a new stack" : "Stapel hinzufügen",
"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 Labels 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",
"Add a new stack" : "Neuer Stapel",
"Submit" : "Übermitteln",
"Show archived cards" : "Archivierte Karten anzeigen",
"Hide archived cards" : "Archivierte Karten ausblenden",
"Board details" : "Board-Details",
"Toggle compact mode" : "Kompaktmodus umschalten",
"Show board details" : "Board-Details anzeigen",
"All Boards" : "Alle Boards",
"Archived boards" : "Archivierte Boards",
"Share board" : "Board freigeben",
"Actions" : "Aktionen",
"Drop your files here to upload it to the card" : "Lege Deine Dateien hier ab, um sie auf die Karte hochzuladen",
"Archive" : "Archivieren",
"Unarchive" : "Dearchivieren",
"Assign card to me" : "Karte mir zuweisen",
"Unassign card from me" : "Karte nicht mir zuweisen",
"Archive card" : "Karte archivieren",
"Unarchive card" : "Karte dearchivieren",
"Delete card" : "Karte löschen",
"Enter a card title" : "Kartentitel eingeben",
"Add card" : "Karte hinzufügen",
"Close" : "Schließen",
"Sharing" : "Teilen",
"Tags" : "Schlagworte",
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
"Deleted items" : "Gelöschte Objekte",
"Timeline" : "Zeitachse",
"Select users or groups to share with" : "Benutzer oder Gruppen zum Teilen auswählen",
"Access for" : "Zugriff für",
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
"Loading" : "Lade",
"Share" : "Teilen",
"Edit" : "Bearbeiten",
"Share" : "Teilen",
"Manage" : "Verwalten",
"Discard share" : "Teilen beenden",
"Update" : "Aktualisieren",
"Sharing has been disabled for your account." : "Teilen wurde für Dein Konto deaktiviert.",
"Update tag" : "Schlagwort aktualisieren",
"Edit tag" : "Schlagwort bearbeiten",
"Delete tag" : "Schlagwort löschen",
"Create" : "Erstellen",
"Create a new tag" : "Neues Etikett erstellen",
"Create a new tag" : "Neues Schlagwort",
"Deleted stacks" : "Gelöschte Stapel",
"Deleted cards" : "Gelöschte Karten",
"Status" : "Status",
"No archived boards to display" : "Keine archivierten Boards zum Anzeigen",
"No shared boards to display" : "Keine geteilten Boards zum Anzeigen",
"Title" : "Titel",
"Members" : "Mitglieder",
"More actions" : "Weitere Aktionen",
@@ -60,15 +152,19 @@
"Archive board" : "Board archivieren",
"Unarchive board" : "Board dearchivieren",
"Delete board" : "Board löschen",
"Reset" : "Zurücksetzen",
"Update board" : "Board aktualisieren",
"Reset board" : "Board zurücksetzen",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.",
"Create new board" : "Neues Board erstellen",
"New board title" : "Neuer Board-Titel",
"Create new board" : "Neues Board",
"New board title" : "Board-Titel",
"Create board" : "Neues Board",
"Select an attachment" : "Anhang auswählen",
"Cancel upload" : "Hochladen abbrechen",
"by" : "von",
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - Andernfalls wird die Datei beim nächsten CronJob-Lauf gelöscht.",
"Undo file deletion" : "Dateilöschung rückgängig machen",
"Insert the file into the description" : "Füge die Datei in die Beschreibung ein",
"Delete attachment" : "Anhang löschen",
"Modified:" : "Geändert:",
"Created:" : "Erstellt:",
"Choose a tag" : "Schlagwort auswählen",
@@ -78,19 +174,21 @@
"Choose a user to assign" : "Wähle einen Benutzer für die Zuweisung aus",
"Assign this card to a user" : "Diese Karte einem Benutzer zuweisen",
"Due date" : "Fälligkeitsdatum",
"Click to set" : "Klicken zum Übernehmen",
"Click to set" : "Auswählen",
"Remove due date" : "Ablaufdatum löschen",
"Description" : "Beschreibung",
"Attachments" : "Anhänge",
"Saved" : "Gespeichert",
"Unsaved changes" : "Ungesicherte Änderungen",
"Insert attachment" : "Anhang einfügen",
"Formatting help" : "Formatierungshilfe",
"Upload attachment" : "Anhang hochladen",
"Insert attachment" : "Anhang einfügen",
"Add a card description…" : "Eine Kartenbeschreibung hinzufügen…",
"Shared boards" : "Geteilte Boards",
"View more" : "Mehr anzeigen",
"Move board to archive" : "Board ins Archiv verschieben",
"Create a new board" : "Neues Board erstellen"
"Create a new board" : "Neues Board",
"Settings" : "Einstellungen",
"Limit deck to groups" : "Deck auf Gruppen beschrä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."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -1,14 +1,86 @@
OC.L10N.register(
"deck",
{
"Are you sure you want to delete this card with all of its data?" : "Möchten Sie wirklich diese Karte mit all ihren Daten löschen?",
"Delete" : "Löschen",
"Please provide a content for your comment." : "Bitte geben Sie einen Inhalt für Ihren Kommentar an.",
"Posting the comment failed." : "Absenden des Kommentars ist fehlgeschlagen.",
"The comment has been deleted" : "Der Kommentar wurde gelöscht",
"The associated stack is deleted as well, it will be restored as well." : "Der dazugehörige Stapel wurde auch gelöscht, er wird ebenfalls wiederhergestellt.",
"Restore associated stack" : "Dazugehörigen Stapel wiederherstellen",
"Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden",
"Minutes" : "Minuten",
"Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten",
"Are you sure you want to delete the stack with all of its data?" : "Möchten Sie diesen Stapel mit allen Daten wirklich löschen?",
"You have created a new board {board}" : "Sie haben das neue Board {board} erstellt",
"{user} has created a new board {board}" : "{user} hat das neue Board {board} erstellt",
"You have deleted the board {board}" : "Sie haben das Board {board} gelöscht",
"{user} has deleted the board {board}" : "{user} hat das Board {board} gelöscht",
"You have restored the board {board}" : "Sie haben das Board {board} wiederhergestellt",
"{user} has restored the board {board}" : "{user} hat das Board {board} wiederhergestellt",
"You have shared the board {board} with {acl}" : "Sie haben das Board {board} mit {acl} geteilt",
"{user} has shared the board {board} with {sharee}" : "{user} hat das Board {board} mit {sharee} geteilt",
"You have removed {acl} from the board {board}" : "Sie haben {acl} vom Board {board} entfernt",
"{user} has removed {acl} from the board {board}" : "{user} hat {acl} vom Board {board} entfernt",
"You have renamed the board {before} to {board}" : "Sie haben das Board {before} in {board} umbenannt",
"{user} has renamed the board {before} to {board}" : "{user} hat das Board {before} in {board} umbenannt",
"You have archived the board {board}" : "Sie haben das Board {board} archiviert",
"{user} has archived the board {before}" : "{user} hat das Board {before} archiviert",
"You have unarchived the board {board}" : "Sie haben das Board {board} dearchiviert",
"{user} has unarchived the board {before}" : "{user} hat das Board {before} dearchiviert",
"You have created a new stack {stack} on board {board}" : "Sie haben den neuen Stapel {stack} auf dem Board {board} erstellt",
"{user} has created a new stack {stack} on board {board}" : "{user} hat den neuen Stapel {stack} auf dem Board {board} erstellt",
"You have renamed stack {before} to {stack} on board {board}" : "Sie haben den Stapel {before} auf dem Board {board} in {stack} umbenannt",
"{user} has renamed stack {before} to {stack} on board {board}" : "{user} hat den Stapel {before} in {stack} auf dem Board {board} umbenannt",
"You have deleted stack {stack} on board {board}" : "Sie haben den Stapel {stack} auf dem Board {board} gelöscht",
"{user} has deleted stack {stack} on board {board}" : "{user} hat den Stapel {stack} auf dem Board {board} gelöscht",
"You have created card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} erstellt",
"{user} has created card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} erstellt",
"You have deleted card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht",
"{user} has deleted card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht",
"You have renamed the card {before} to {card}" : "Sie haben die Karte {before} in {card} umbenannt",
"{user} has renamed the card {before} to {card}" : "{user} hat die Karte {before} in {card} umbenannt",
"You have added a description to card {card} in stack {stack} on board {board}" : "Sie haben der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt",
"{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt",
"You have updated the description of card {card} in stack {stack} on board {board}" : "Sie haben die Beschreibung der Karte {card} im Stapel {stack} auf derm Board {board} aktualisiert",
"{user} has updated the description card {card} in stack {stack} on board {board}" : "{user} hat die Beschreibung der Karte {card} im Stapel {stack} auf der Board {board} aktualisiert",
"You have archived card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} archiviert",
"{user} has archived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} archiviert",
"You have unarchived card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert",
"{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert",
"You have removed the due date of card {card}" : "Sie haben das Fälligkeitsdatum der Karte {card} entfernt",
"{user} has removed the due date of card {card}" : "{user} hat das Fälligkeitsdatum der Karte {card} entfernt",
"You have set the due date of card {card} to {after}" : "Sie haben das Fälligkeitsdatum der Karte {card} auf {after} gesetzt",
"{user} has set the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} gesetzt",
"You have updated the due date of card {card} to {after}" : "Sie haben das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert",
"{user} has updated the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert",
"You have added the tag {label} to card {card} in stack {stack} on board {board}" : "{actor} ist der Unterhaltung beigetreten",
"{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} in Stapel {stack} auf dem Board {board} das Schlagwort {label} hinzugefügt",
"You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Sie haben von der Karte {card} im Stapel {stack} auf dem Board {board} das Label {label} entfernt",
"{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} hat von der Karte {card} in Stapel {stack} auf dem Board {board} das Label {label} entfernt",
"You have assigned {assigneduser} to card {card} on board {board}" : "Sie haben {assigneduser} der Karte {card} auf dem Board {board} zugewiesen",
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} hat {assigneduser} der Karte {card} auf dem Board {board} zugewiesen",
"You have unassigned {assigneduser} from card {card} on board {board}" : "Sie haben die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben",
"{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} hat die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben",
"You have moved the card {card} from stack {stackBefore} to {stack}" : "Sie haben die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben",
"{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} hat die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben",
"You have added the attachment {attachment} to card {card}" : "Sie haben den Anhang {attachment} zur Karte {card} hinzugefügt",
"{user} has added the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} zur Karte {card} hinzugefügt",
"You have updated the attachment {attachment} on card {card}" : "Sie haben den Anhang {attachment} der Karte {card} aktualisiert",
"{user} has updated the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} aktualisiert",
"You have deleted the attachment {attachment} from card {card}" : "Sie haben den Anhang {attachment} von der Karte {card} entfernt",
"{user} has deleted the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} von Karte {card} entfernt",
"You have restored the attachment {attachment} to card {card}" : "Sie haben den Anhang {attachment} der Karte {card} wiederhergestellt",
"{user} has restored the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} wiederhergestellt",
"You have commented on card {card}" : "Sie haben {card} kommentiert",
"{user} has commented on card {card}" : "{user} hat {card} kommentiert",
"A <strong>card description</strong> inside the Deck app has been changed" : "Eine <strong>Kartenbeschreibung</strong> wurde innerhalb der Deck-App geändert",
"Deck" : "Deck",
"Changes in the <strong>Deck app</strong>" : "Änderungen in der <strong>Deck-App</strong>",
"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.",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
"%s has mentioned you in a comment on \"%s\"." : "%s hat Sie in einem Kommentar zu \"%s\" erwähnt.",
"{user} has mentioned you in a comment on \"%s\"." : "{user} hat Sie in einem Kommentar zu \"%s\" erwähnt.",
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Ihnen geteilt.",
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Ihnen geteilt.",
"No data was provided to create an attachment." : "Es wurde keine Daten zum Erstellen eines Anhangs bereitgestellt.",
@@ -16,6 +88,12 @@ OC.L10N.register(
"To review" : "Zu überprüfen",
"Action needed" : "Handlung erforderlich",
"Later" : "Später",
"To do" : "Offen",
"Doing" : "In Arbeit",
"Done" : "Erledigt",
"Example Task 3" : "Beispielaufgabe 3",
"Example Task 2" : "Beispielaufgabe 2",
"Example Task 1" : "Beispielaufgabe 1",
"The file was uploaded" : "Die Datei wurde hochgeladen",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Die Datei ist größer, als die MAX_FILE_SIZE-Vorgabe, die im HTML-Formular angegeben ist.",
@@ -25,36 +103,50 @@ OC.L10N.register(
"Could not write file to disk" : "Die Datei konnte nicht auf die Festplatte geschrieben werden",
"A PHP extension stopped the file upload" : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt",
"No file uploaded or file size exceeds maximum of %s" : "Keine Datei hochgeladen oder die Dateigröße überschreitet %s",
"Deck" : "Deck",
"A kanban style project and personal management tool for Nextcloud" : "Ein Kanban Werzeug für Nextcloud",
"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- 🚀 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- 🔖 Vergabe von Labels für noch bessere Organisation\n- 👥 Teilen Sie mit Ihrem Team, Ihren Freunden oder Ihrer Familie\n- 🚀 Organisieren Sie Ihr Projekt",
"Add a new stack" : "Neuen Stapel hinzufügen",
"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 Labels 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 Deinen 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",
"Add a new stack" : "Neuer Stapel",
"Submit" : "Übermitteln",
"Show archived cards" : "Archivierte Karten anzeigen",
"Hide archived cards" : "Archivierte Karten ausblenden",
"Board details" : "Board-Details",
"Toggle compact mode" : "Kompaktmodus umschalten",
"Show board details" : "Board-Details anzeigen",
"All Boards" : "Alle Boards",
"Archived boards" : "Archivierte Boards",
"Share board" : "Board freigeben",
"Actions" : "Aktionen",
"Drop your files here to upload it to the card" : "Legen Sie Ihre Dateien hier ab, um sie auf die Karte hochzuladen",
"Archive" : "Archivieren",
"Unarchive" : "Dearchivieren",
"Assign card to me" : "Karte mir zuweisen",
"Unassign card from me" : "Karte nicht mir zuweisen",
"Archive card" : "Karte archivieren",
"Unarchive card" : "Karte dearchivieren",
"Delete card" : "Karte löschen",
"Enter a card title" : "Kartentitel eingeben",
"Add card" : "Karte hinzufügen",
"Close" : "Schließen",
"Sharing" : "Teilen",
"Tags" : "Schlagworte",
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
"Deleted items" : "Gelöschte Objekte",
"Timeline" : "Zeitachse",
"Select users or groups to share with" : "Benutzer oder Gruppen zum Teilen auswählen",
"Access for" : "Zugriff für",
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
"Loading" : "Lade",
"Share" : "Teilen",
"Edit" : "Bearbeiten",
"Share" : "Teilen",
"Manage" : "Verwalten",
"Discard share" : "Teilen beenden",
"Update" : "Aktualisieren",
"Sharing has been disabled for your account." : "Teilen wurde für Ihr Konto deaktiviert.",
"Update tag" : "Schlagwort aktualisieren",
"Edit tag" : "Schlagwort bearbeiten",
"Delete tag" : "Schlagwort löschen",
"Create" : "Erstellen",
"Create a new tag" : "Tag erstellen",
"Create a new tag" : "Neues Schlagwort",
"Deleted stacks" : "Gelöschte Stapel",
"Deleted cards" : "Gelöschte Karten",
"Status" : "Status",
"No archived boards to display" : "Keine archivierten Boards zum Anzeigen",
"No shared boards to display" : "Keine geteilten Boards zum Anzeigen",
"Title" : "Titel",
"Members" : "Mitglieder",
"More actions" : "Weitere Aktionen",
@@ -62,23 +154,27 @@ OC.L10N.register(
"Archive board" : "Board archivieren",
"Unarchive board" : "Board dearchivieren",
"Delete board" : "Board löschen",
"Reset" : "Zurücksetzen",
"Update board" : "Board aktualisieren",
"Reset board" : "Board zurücksetzen",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.",
"Create new board" : "Neues Board erstellen",
"New board title" : "Neuer Board-Titel",
"Create new board" : "Neues Board",
"New board title" : "Board-Titel",
"Create board" : "Neues Board",
"Select an attachment" : "Wählen Sie einen Anhang",
"Cancel upload" : "Hochladen abbrechen",
"by" : "von",
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - Andernfalls wird die Datei beim nächsten CronJob-Lauf gelöscht.",
"Undo file deletion" : "Dateilöschung rückgängig machen",
"Insert the file into the description" : "Füge die Datei in die Beschreibung ein",
"Delete attachment" : "Anhang löschen",
"Modified:" : "Geändert:",
"Created:" : "Erstellt:",
"Choose a tag" : "Schlagwort auswählen",
"Add a tag" : "Schlagwort hinzufügen",
"Select tags" : "Schlagworte auswählen",
"Assign users" : "Benutzer zuordnen",
"Assign users" : "Benutzer zuweisen",
"Choose a user to assign" : "Wähle einen Benutzer für die Zuweisung aus",
"Assign this card to a user" : "Diese Karte einem Benutzer zuordnen",
"Assign this card to a user" : "Diese Karte einem Benutzer zuweisen",
"Due date" : "Zieltermin",
"Click to set" : "Setzen",
"Remove due date" : "Zieltermin entfernen",
@@ -86,13 +182,15 @@ OC.L10N.register(
"Attachments" : "Anhänge",
"Saved" : "Gespeichert",
"Unsaved changes" : "Ungesicherte Änderungen",
"Insert attachment" : "Anhang einfügen",
"Formatting help" : "Formatierungshilfe",
"Upload attachment" : "Anhang hochladen",
"Insert attachment" : "Anhang einfügen",
"Add a card description…" : "Beschreibung hinzufügen…",
"Shared boards" : "Geteilte Boards",
"View more" : "Mehr anzeigen",
"Move board to archive" : "Board ins Archiv verschieben",
"Create a new board" : "Neues Board erstellen"
"Create a new board" : "Neues Board",
"Settings" : "Einstellungen",
"Limit deck to groups" : "Deck auf Gruppen beschrä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."
},
"nplurals=2; plural=(n != 1);");

View File

@@ -1,12 +1,84 @@
{ "translations": {
"Are you sure you want to delete this card with all of its data?" : "Möchten Sie wirklich diese Karte mit all ihren Daten löschen?",
"Delete" : "Löschen",
"Please provide a content for your comment." : "Bitte geben Sie einen Inhalt für Ihren Kommentar an.",
"Posting the comment failed." : "Absenden des Kommentars ist fehlgeschlagen.",
"The comment has been deleted" : "Der Kommentar wurde gelöscht",
"The associated stack is deleted as well, it will be restored as well." : "Der dazugehörige Stapel wurde auch gelöscht, er wird ebenfalls wiederhergestellt.",
"Restore associated stack" : "Dazugehörigen Stapel wiederherstellen",
"Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden",
"Minutes" : "Minuten",
"Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten",
"Are you sure you want to delete the stack with all of its data?" : "Möchten Sie diesen Stapel mit allen Daten wirklich löschen?",
"You have created a new board {board}" : "Sie haben das neue Board {board} erstellt",
"{user} has created a new board {board}" : "{user} hat das neue Board {board} erstellt",
"You have deleted the board {board}" : "Sie haben das Board {board} gelöscht",
"{user} has deleted the board {board}" : "{user} hat das Board {board} gelöscht",
"You have restored the board {board}" : "Sie haben das Board {board} wiederhergestellt",
"{user} has restored the board {board}" : "{user} hat das Board {board} wiederhergestellt",
"You have shared the board {board} with {acl}" : "Sie haben das Board {board} mit {acl} geteilt",
"{user} has shared the board {board} with {sharee}" : "{user} hat das Board {board} mit {sharee} geteilt",
"You have removed {acl} from the board {board}" : "Sie haben {acl} vom Board {board} entfernt",
"{user} has removed {acl} from the board {board}" : "{user} hat {acl} vom Board {board} entfernt",
"You have renamed the board {before} to {board}" : "Sie haben das Board {before} in {board} umbenannt",
"{user} has renamed the board {before} to {board}" : "{user} hat das Board {before} in {board} umbenannt",
"You have archived the board {board}" : "Sie haben das Board {board} archiviert",
"{user} has archived the board {before}" : "{user} hat das Board {before} archiviert",
"You have unarchived the board {board}" : "Sie haben das Board {board} dearchiviert",
"{user} has unarchived the board {before}" : "{user} hat das Board {before} dearchiviert",
"You have created a new stack {stack} on board {board}" : "Sie haben den neuen Stapel {stack} auf dem Board {board} erstellt",
"{user} has created a new stack {stack} on board {board}" : "{user} hat den neuen Stapel {stack} auf dem Board {board} erstellt",
"You have renamed stack {before} to {stack} on board {board}" : "Sie haben den Stapel {before} auf dem Board {board} in {stack} umbenannt",
"{user} has renamed stack {before} to {stack} on board {board}" : "{user} hat den Stapel {before} in {stack} auf dem Board {board} umbenannt",
"You have deleted stack {stack} on board {board}" : "Sie haben den Stapel {stack} auf dem Board {board} gelöscht",
"{user} has deleted stack {stack} on board {board}" : "{user} hat den Stapel {stack} auf dem Board {board} gelöscht",
"You have created card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} erstellt",
"{user} has created card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} erstellt",
"You have deleted card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht",
"{user} has deleted card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht",
"You have renamed the card {before} to {card}" : "Sie haben die Karte {before} in {card} umbenannt",
"{user} has renamed the card {before} to {card}" : "{user} hat die Karte {before} in {card} umbenannt",
"You have added a description to card {card} in stack {stack} on board {board}" : "Sie haben der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt",
"{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt",
"You have updated the description of card {card} in stack {stack} on board {board}" : "Sie haben die Beschreibung der Karte {card} im Stapel {stack} auf derm Board {board} aktualisiert",
"{user} has updated the description card {card} in stack {stack} on board {board}" : "{user} hat die Beschreibung der Karte {card} im Stapel {stack} auf der Board {board} aktualisiert",
"You have archived card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} archiviert",
"{user} has archived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} archiviert",
"You have unarchived card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert",
"{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert",
"You have removed the due date of card {card}" : "Sie haben das Fälligkeitsdatum der Karte {card} entfernt",
"{user} has removed the due date of card {card}" : "{user} hat das Fälligkeitsdatum der Karte {card} entfernt",
"You have set the due date of card {card} to {after}" : "Sie haben das Fälligkeitsdatum der Karte {card} auf {after} gesetzt",
"{user} has set the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} gesetzt",
"You have updated the due date of card {card} to {after}" : "Sie haben das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert",
"{user} has updated the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert",
"You have added the tag {label} to card {card} in stack {stack} on board {board}" : "{actor} ist der Unterhaltung beigetreten",
"{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} in Stapel {stack} auf dem Board {board} das Schlagwort {label} hinzugefügt",
"You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Sie haben von der Karte {card} im Stapel {stack} auf dem Board {board} das Label {label} entfernt",
"{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} hat von der Karte {card} in Stapel {stack} auf dem Board {board} das Label {label} entfernt",
"You have assigned {assigneduser} to card {card} on board {board}" : "Sie haben {assigneduser} der Karte {card} auf dem Board {board} zugewiesen",
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} hat {assigneduser} der Karte {card} auf dem Board {board} zugewiesen",
"You have unassigned {assigneduser} from card {card} on board {board}" : "Sie haben die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben",
"{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} hat die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben",
"You have moved the card {card} from stack {stackBefore} to {stack}" : "Sie haben die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben",
"{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} hat die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben",
"You have added the attachment {attachment} to card {card}" : "Sie haben den Anhang {attachment} zur Karte {card} hinzugefügt",
"{user} has added the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} zur Karte {card} hinzugefügt",
"You have updated the attachment {attachment} on card {card}" : "Sie haben den Anhang {attachment} der Karte {card} aktualisiert",
"{user} has updated the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} aktualisiert",
"You have deleted the attachment {attachment} from card {card}" : "Sie haben den Anhang {attachment} von der Karte {card} entfernt",
"{user} has deleted the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} von Karte {card} entfernt",
"You have restored the attachment {attachment} to card {card}" : "Sie haben den Anhang {attachment} der Karte {card} wiederhergestellt",
"{user} has restored the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} wiederhergestellt",
"You have commented on card {card}" : "Sie haben {card} kommentiert",
"{user} has commented on card {card}" : "{user} hat {card} kommentiert",
"A <strong>card description</strong> inside the Deck app has been changed" : "Eine <strong>Kartenbeschreibung</strong> wurde innerhalb der Deck-App geändert",
"Deck" : "Deck",
"Changes in the <strong>Deck app</strong>" : "Änderungen in der <strong>Deck-App</strong>",
"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.",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
"%s has mentioned you in a comment on \"%s\"." : "%s hat Sie in einem Kommentar zu \"%s\" erwähnt.",
"{user} has mentioned you in a comment on \"%s\"." : "{user} hat Sie in einem Kommentar zu \"%s\" erwähnt.",
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Ihnen geteilt.",
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Ihnen geteilt.",
"No data was provided to create an attachment." : "Es wurde keine Daten zum Erstellen eines Anhangs bereitgestellt.",
@@ -14,6 +86,12 @@
"To review" : "Zu überprüfen",
"Action needed" : "Handlung erforderlich",
"Later" : "Später",
"To do" : "Offen",
"Doing" : "In Arbeit",
"Done" : "Erledigt",
"Example Task 3" : "Beispielaufgabe 3",
"Example Task 2" : "Beispielaufgabe 2",
"Example Task 1" : "Beispielaufgabe 1",
"The file was uploaded" : "Die Datei wurde hochgeladen",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Die Datei ist größer, als die MAX_FILE_SIZE-Vorgabe, die im HTML-Formular angegeben ist.",
@@ -23,36 +101,50 @@
"Could not write file to disk" : "Die Datei konnte nicht auf die Festplatte geschrieben werden",
"A PHP extension stopped the file upload" : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt",
"No file uploaded or file size exceeds maximum of %s" : "Keine Datei hochgeladen oder die Dateigröße überschreitet %s",
"Deck" : "Deck",
"A kanban style project and personal management tool for Nextcloud" : "Ein Kanban Werzeug für Nextcloud",
"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- 🚀 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- 🔖 Vergabe von Labels für noch bessere Organisation\n- 👥 Teilen Sie mit Ihrem Team, Ihren Freunden oder Ihrer Familie\n- 🚀 Organisieren Sie Ihr Projekt",
"Add a new stack" : "Neuen Stapel hinzufügen",
"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 Labels 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 Deinen 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",
"Add a new stack" : "Neuer Stapel",
"Submit" : "Übermitteln",
"Show archived cards" : "Archivierte Karten anzeigen",
"Hide archived cards" : "Archivierte Karten ausblenden",
"Board details" : "Board-Details",
"Toggle compact mode" : "Kompaktmodus umschalten",
"Show board details" : "Board-Details anzeigen",
"All Boards" : "Alle Boards",
"Archived boards" : "Archivierte Boards",
"Share board" : "Board freigeben",
"Actions" : "Aktionen",
"Drop your files here to upload it to the card" : "Legen Sie Ihre Dateien hier ab, um sie auf die Karte hochzuladen",
"Archive" : "Archivieren",
"Unarchive" : "Dearchivieren",
"Assign card to me" : "Karte mir zuweisen",
"Unassign card from me" : "Karte nicht mir zuweisen",
"Archive card" : "Karte archivieren",
"Unarchive card" : "Karte dearchivieren",
"Delete card" : "Karte löschen",
"Enter a card title" : "Kartentitel eingeben",
"Add card" : "Karte hinzufügen",
"Close" : "Schließen",
"Sharing" : "Teilen",
"Tags" : "Schlagworte",
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
"Deleted items" : "Gelöschte Objekte",
"Timeline" : "Zeitachse",
"Select users or groups to share with" : "Benutzer oder Gruppen zum Teilen auswählen",
"Access for" : "Zugriff für",
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
"Loading" : "Lade",
"Share" : "Teilen",
"Edit" : "Bearbeiten",
"Share" : "Teilen",
"Manage" : "Verwalten",
"Discard share" : "Teilen beenden",
"Update" : "Aktualisieren",
"Sharing has been disabled for your account." : "Teilen wurde für Ihr Konto deaktiviert.",
"Update tag" : "Schlagwort aktualisieren",
"Edit tag" : "Schlagwort bearbeiten",
"Delete tag" : "Schlagwort löschen",
"Create" : "Erstellen",
"Create a new tag" : "Tag erstellen",
"Create a new tag" : "Neues Schlagwort",
"Deleted stacks" : "Gelöschte Stapel",
"Deleted cards" : "Gelöschte Karten",
"Status" : "Status",
"No archived boards to display" : "Keine archivierten Boards zum Anzeigen",
"No shared boards to display" : "Keine geteilten Boards zum Anzeigen",
"Title" : "Titel",
"Members" : "Mitglieder",
"More actions" : "Weitere Aktionen",
@@ -60,23 +152,27 @@
"Archive board" : "Board archivieren",
"Unarchive board" : "Board dearchivieren",
"Delete board" : "Board löschen",
"Reset" : "Zurücksetzen",
"Update board" : "Board aktualisieren",
"Reset board" : "Board zurücksetzen",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.",
"Create new board" : "Neues Board erstellen",
"New board title" : "Neuer Board-Titel",
"Create new board" : "Neues Board",
"New board title" : "Board-Titel",
"Create board" : "Neues Board",
"Select an attachment" : "Wählen Sie einen Anhang",
"Cancel upload" : "Hochladen abbrechen",
"by" : "von",
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - Andernfalls wird die Datei beim nächsten CronJob-Lauf gelöscht.",
"Undo file deletion" : "Dateilöschung rückgängig machen",
"Insert the file into the description" : "Füge die Datei in die Beschreibung ein",
"Delete attachment" : "Anhang löschen",
"Modified:" : "Geändert:",
"Created:" : "Erstellt:",
"Choose a tag" : "Schlagwort auswählen",
"Add a tag" : "Schlagwort hinzufügen",
"Select tags" : "Schlagworte auswählen",
"Assign users" : "Benutzer zuordnen",
"Assign users" : "Benutzer zuweisen",
"Choose a user to assign" : "Wähle einen Benutzer für die Zuweisung aus",
"Assign this card to a user" : "Diese Karte einem Benutzer zuordnen",
"Assign this card to a user" : "Diese Karte einem Benutzer zuweisen",
"Due date" : "Zieltermin",
"Click to set" : "Setzen",
"Remove due date" : "Zieltermin entfernen",
@@ -84,13 +180,15 @@
"Attachments" : "Anhänge",
"Saved" : "Gespeichert",
"Unsaved changes" : "Ungesicherte Änderungen",
"Insert attachment" : "Anhang einfügen",
"Formatting help" : "Formatierungshilfe",
"Upload attachment" : "Anhang hochladen",
"Insert attachment" : "Anhang einfügen",
"Add a card description…" : "Beschreibung hinzufügen…",
"Shared boards" : "Geteilte Boards",
"View more" : "Mehr anzeigen",
"Move board to archive" : "Board ins Archiv verschieben",
"Create a new board" : "Neues Board erstellen"
"Create a new board" : "Neues Board",
"Settings" : "Einstellungen",
"Limit deck to groups" : "Deck auf Gruppen beschrä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."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -1,26 +1,21 @@
OC.L10N.register(
"deck",
{
"Are you sure you want to delete this card with all of its data?" : "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την κάρτα με όλα τα δεδομένα της;",
"Delete" : "Διαγραφή",
"Remove user from card" : "Αφαίρεση χρήστη από την κάρτα",
"Hours" : "Ώρες",
"Minutes" : "Λεπτά",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "Η κάρτα \"1%s\" στο \"1%s\" έχει λήξει.",
"Finished" : "Ολοκληρώθηκε",
"To review" : "Προς επισκόπηση",
"Action needed" : "Απαιτείται ενέργεια",
"Later" : "Αργότερα",
"Deck" : "Deck",
"Add a new stack" : "Πρόσθεσε νέα συστοιχία",
"Submit" : "Υποβολή",
"Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν",
"Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν",
"Board details" : "Λεπτομέριες πίνακα",
"All Boards" : "Όλοι οι πίνακες",
"Archived boards" : "Αρχειοθέτηση πινάκων ",
"Archive" : "Αρχειοθέτηση",
"Unarchive" : "Αναίρεση αρχειοθέτησης",
"Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας",
"Add card" : "Προσθήκη κάρτας",
"Close" : "Κλείσιμο",
@@ -29,11 +24,10 @@ OC.L10N.register(
"Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε",
"No matching user or group found." : "Δεν βρέθηκε χρήστης ή ομάδα να ταιριάζει.",
"Loading" : "Γίνεται φόρτωση",
"Share" : "Διαμοιρασμός",
"Edit" : "Επεξεργασία",
"Share" : "Διαμοιρασμός",
"Manage" : "Διαχείριση",
"Discard share" : "Απόρριψη διαμοιρασμού",
"Update" : "Ενημέρωση",
"Create" : "Δημιουργία",
"Create a new tag" : "Δημιούργησε νέα ετικέτα",
"Title" : "Τίτλος",
@@ -56,7 +50,6 @@ OC.L10N.register(
"Formatting help" : "Βοήθεια μορφοποίησης",
"Add a card description…" : "Προσθήκη περιγραφής κάρτας...",
"Shared boards" : "Διαμοιρασμένοι πίνακες",
"View more" : "Προβολή περισσοτέρων",
"Move board to archive" : "Μετακίνηση πίνακα στην αρχειοθήκη",
"Create a new board" : "Δημιουργία νέου πίνακα"
},

View File

@@ -1,24 +1,19 @@
{ "translations": {
"Are you sure you want to delete this card with all of its data?" : "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την κάρτα με όλα τα δεδομένα της;",
"Delete" : "Διαγραφή",
"Remove user from card" : "Αφαίρεση χρήστη από την κάρτα",
"Hours" : "Ώρες",
"Minutes" : "Λεπτά",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "Η κάρτα \"1%s\" στο \"1%s\" έχει λήξει.",
"Finished" : "Ολοκληρώθηκε",
"To review" : "Προς επισκόπηση",
"Action needed" : "Απαιτείται ενέργεια",
"Later" : "Αργότερα",
"Deck" : "Deck",
"Add a new stack" : "Πρόσθεσε νέα συστοιχία",
"Submit" : "Υποβολή",
"Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν",
"Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν",
"Board details" : "Λεπτομέριες πίνακα",
"All Boards" : "Όλοι οι πίνακες",
"Archived boards" : "Αρχειοθέτηση πινάκων ",
"Archive" : "Αρχειοθέτηση",
"Unarchive" : "Αναίρεση αρχειοθέτησης",
"Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας",
"Add card" : "Προσθήκη κάρτας",
"Close" : "Κλείσιμο",
@@ -27,11 +22,10 @@
"Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε",
"No matching user or group found." : "Δεν βρέθηκε χρήστης ή ομάδα να ταιριάζει.",
"Loading" : "Γίνεται φόρτωση",
"Share" : "Διαμοιρασμός",
"Edit" : "Επεξεργασία",
"Share" : "Διαμοιρασμός",
"Manage" : "Διαχείριση",
"Discard share" : "Απόρριψη διαμοιρασμού",
"Update" : "Ενημέρωση",
"Create" : "Δημιουργία",
"Create a new tag" : "Δημιούργησε νέα ετικέτα",
"Title" : "Τίτλος",
@@ -54,7 +48,6 @@
"Formatting help" : "Βοήθεια μορφοποίησης",
"Add a card description…" : "Προσθήκη περιγραφής κάρτας...",
"Shared boards" : "Διαμοιρασμένοι πίνακες",
"View more" : "Προβολή περισσοτέρων",
"Move board to archive" : "Μετακίνηση πίνακα στην αρχειοθήκη",
"Create a new board" : "Δημιουργία νέου πίνακα"
},"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -1,12 +1,12 @@
OC.L10N.register(
"deck",
{
"Are you sure you want to delete this card with all of its data?" : "Are you sure you want to delete this card with all of its data?",
"Delete" : "Delete",
"Please provide a content for your comment." : "Please provide a content for your comment.",
"Posting the comment failed." : "Posting the comment failed.",
"Remove user from card" : "Remove user from card",
"Hours" : "Hours",
"Minutes" : "Minutes",
"Are you sure you want to delete the stack with all of its data?" : "Are you sure you want to delete the stack with all of its data?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "The card \"%s\" on \"%s\" has reached its due date.",
"The board \"%s\" has been shared with you by %s." : "The board \"%s\" has been shared with you by %s.",
"{user} has shared the board %s with you." : "{user} has shared the board %s with you.",
@@ -14,18 +14,13 @@ OC.L10N.register(
"To review" : "To review",
"Action needed" : "Action needed",
"Later" : "Later",
"Deck" : "Deck",
"A kanban style project and personal management tool for Nextcloud" : "A kanban style project and personal management tool for Nextcloud",
"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- 🚀 Get your project organized" : "Deck is a kanban style organization tool aimed at personal planning and project organisation 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- 🚀 Get your project organised",
"Add a new stack" : "Add a new stack",
"Submit" : "Submit",
"Show archived cards" : "Show archived cards",
"Hide archived cards" : "Hide archived cards",
"Board details" : "Board details",
"All Boards" : "All Boards",
"Archived boards" : "Archived boards",
"Archive" : "Archive",
"Unarchive" : "Unarchive",
"Enter a card title" : "Enter a card title",
"Add card" : "Add card",
"Close" : "Close",
@@ -35,11 +30,10 @@ OC.L10N.register(
"Access for" : "Access for",
"No matching user or group found." : "No matching user or group found.",
"Loading" : "Loading",
"Share" : "Share",
"Edit" : "Edit",
"Share" : "Share",
"Manage" : "Manage",
"Discard share" : "Discard share",
"Update" : "Update",
"Create" : "Create",
"Create a new tag" : "Create a new tag",
"Status" : "Status",
@@ -50,7 +44,6 @@ OC.L10N.register(
"Archive board" : "Archive board",
"Unarchive board" : "Unarchive board",
"Delete board" : "Delete board",
"Reset" : "Reset",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Undo board deletion - Otherwise the board will be deleted during the next cronjob run.",
"Create new board" : "Create new board",
"New board title" : "New board title",
@@ -72,7 +65,6 @@ OC.L10N.register(
"Formatting help" : "Formatting help",
"Add a card description…" : "Add a card description…",
"Shared boards" : "Shared boards",
"View more" : "View more",
"Move board to archive" : "Move board to archive",
"Create a new board" : "Create a new board"
},

View File

@@ -1,10 +1,10 @@
{ "translations": {
"Are you sure you want to delete this card with all of its data?" : "Are you sure you want to delete this card with all of its data?",
"Delete" : "Delete",
"Please provide a content for your comment." : "Please provide a content for your comment.",
"Posting the comment failed." : "Posting the comment failed.",
"Remove user from card" : "Remove user from card",
"Hours" : "Hours",
"Minutes" : "Minutes",
"Are you sure you want to delete the stack with all of its data?" : "Are you sure you want to delete the stack with all of its data?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "The card \"%s\" on \"%s\" has reached its due date.",
"The board \"%s\" has been shared with you by %s." : "The board \"%s\" has been shared with you by %s.",
"{user} has shared the board %s with you." : "{user} has shared the board %s with you.",
@@ -12,18 +12,13 @@
"To review" : "To review",
"Action needed" : "Action needed",
"Later" : "Later",
"Deck" : "Deck",
"A kanban style project and personal management tool for Nextcloud" : "A kanban style project and personal management tool for Nextcloud",
"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- 🚀 Get your project organized" : "Deck is a kanban style organization tool aimed at personal planning and project organisation 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- 🚀 Get your project organised",
"Add a new stack" : "Add a new stack",
"Submit" : "Submit",
"Show archived cards" : "Show archived cards",
"Hide archived cards" : "Hide archived cards",
"Board details" : "Board details",
"All Boards" : "All Boards",
"Archived boards" : "Archived boards",
"Archive" : "Archive",
"Unarchive" : "Unarchive",
"Enter a card title" : "Enter a card title",
"Add card" : "Add card",
"Close" : "Close",
@@ -33,11 +28,10 @@
"Access for" : "Access for",
"No matching user or group found." : "No matching user or group found.",
"Loading" : "Loading",
"Share" : "Share",
"Edit" : "Edit",
"Share" : "Share",
"Manage" : "Manage",
"Discard share" : "Discard share",
"Update" : "Update",
"Create" : "Create",
"Create a new tag" : "Create a new tag",
"Status" : "Status",
@@ -48,7 +42,6 @@
"Archive board" : "Archive board",
"Unarchive board" : "Unarchive board",
"Delete board" : "Delete board",
"Reset" : "Reset",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Undo board deletion - Otherwise the board will be deleted during the next cronjob run.",
"Create new board" : "Create new board",
"New board title" : "New board title",
@@ -70,7 +63,6 @@
"Formatting help" : "Formatting help",
"Add a card description…" : "Add a card description…",
"Shared boards" : "Shared boards",
"View more" : "View more",
"Move board to archive" : "Move board to archive",
"Create a new board" : "Create a new board"
},"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -1,14 +1,86 @@
OC.L10N.register(
"deck",
{
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro de que quieres eliminar esta tarjeta con todos sus datos?",
"Delete" : "Eliminar",
"Please provide a content for your comment." : "Por favor, suministra un contenido para tu comentario.",
"Posting the comment failed." : "Fallo al enviar el comentario.",
"The comment has been deleted" : "El comentario ha sido borrado",
"The associated stack is deleted as well, it will be restored as well." : "Se había eliminado también la pila asociada. También será restaurada.",
"Restore associated stack" : "Restaurar la pila asociada",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Maximum file size of {size} exceeded" : "Tamaño máximo de archivo de {size} excedido",
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro de que quieres eliminar el mazo con todos sus datos?",
"You have created a new board {board}" : "Has creado el tablero nuevo {board}",
"{user} has created a new board {board}" : "{user} ha creado el tablero nuevo {board}",
"You have deleted the board {board}" : "Has eliminado el tablero {board}",
"{user} has deleted the board {board}" : "{user} ha eliminado el tablero {board}",
"You have restored the board {board}" : "Has restaurado el tablero {board}",
"{user} has restored the board {board}" : "{user} ha restaurado el tablero {board}",
"You have shared the board {board} with {acl}" : "Has compartido el tablero {board} con {acl}",
"{user} has shared the board {board} with {sharee}" : "{user} ha compartido el tablero {board} con {sharee}",
"You have removed {acl} from the board {board}" : "Has eliminado a {acl} del tablero {board}",
"{user} has removed {acl} from the board {board}" : "{user} ha elimiando a {acl} del tablero {board}",
"You have renamed the board {before} to {board}" : "Has renombrado el tablero {before} como {board}",
"{user} has renamed the board {before} to {board}" : "{user} ha renombrado el tablero {before} como {board}",
"You have archived the board {board}" : "Has archivado el tablero {board}",
"{user} has archived the board {before}" : "{user} ha archivado el tablero {board}",
"You have unarchived the board {board}" : "Has desarchivado el tablero {board}",
"{user} has unarchived the board {before}" : "{user} ha desarchivado el tablero {before}",
"You have created a new stack {stack} on board {board}" : "Has creado la pila {stack} en {board}",
"{user} has created a new stack {stack} on board {board}" : "{user} ha creado la pila {stack} en {board}",
"You have renamed stack {before} to {stack} on board {board}" : "Has renombrado la pila {before} a {stack} en {board}",
"{user} has renamed stack {before} to {stack} on board {board}" : "{user} ha renombrado la pila {before} a {stack} en {board}",
"You have deleted stack {stack} on board {board}" : "Has eliminado {stack} en {board}",
"{user} has deleted stack {stack} on board {board}" : "{user} ha eliminado la pila {stack} en {board}",
"You have created card {card} in stack {stack} on board {board}" : "Has creado {card} en la pila {stack} en {board}",
"{user} has created card {card} in stack {stack} on board {board}" : "{user} ha creado la pila {stack} en {board}",
"You have deleted card {card} in stack {stack} on board {board}" : "Has eliminado {card} en la pila {stack} en {board}",
"{user} has deleted card {card} in stack {stack} on board {board}" : "{user} ha eliminado {card} en la pila {stack} en {board}",
"You have renamed the card {before} to {card}" : "Has renombrado la tarjeta {before} como {card}",
"{user} has renamed the card {before} to {card}" : "{user} ha renombrado la tarjeta {before} como {card}",
"You have added a description to card {card} in stack {stack} on board {board}" : "Has añadido una descripción a {card} en la pila {stack} en {board}",
"{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} ha añadido una descripción a {card} en la pila {stack} en {board}",
"You have updated the description of card {card} in stack {stack} on board {board}" : "Has actualizado la descripción de {card} en la pila {stack} en {board}",
"{user} has updated the description card {card} in stack {stack} on board {board}" : "{user} ha actualizado la descripción de {card} en la pila {stack} en {stack}",
"You have archived card {card} in stack {stack} on board {board}" : "Has archivado {card} en la pila {stack} en {board}",
"{user} has archived card {card} in stack {stack} on board {board}" : "{user} ha archivado {card} en la pila {stack} en {board}",
"You have unarchived card {card} in stack {stack} on board {board}" : "Has desarchivado {card} en la pila {stack} en {board}",
"{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} ha desarchivado {card} en la pila {stack} de {board}",
"You have removed the due date of card {card}" : "Has eliminado la fecha de vencimiento de {card}",
"{user} has removed the due date of card {card}" : "{user} ha eliminado la fecha de vencimiento de {card}",
"You have set the due date of card {card} to {after}" : "Has establecido la fecha de vencimiento de {card} como {after}",
"{user} has set the due date of card {card} to {after}" : "{user} ha establecido la fecha de vencimiento de {card} como {after}",
"You have updated the due date of card {card} to {after}" : "Has actualizado la fecha de vencimiento de {card} para {after}",
"{user} has updated the due date of card {card} to {after}" : "{user} ha actualizado la fecha de vencimiento de {card} para {after}",
"You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Has añadido la etiqueta {label} a {card} en {stack} en {board}",
"{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} ha añadido la etiqueta {label} a {card} en {stack} en {board}",
"You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Has eliminado la etiqueta {label} de {card} en la pila {stack} en {board}",
"{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} ha elimininado la etiqueta {label} a {card} en {stack} en {board}",
"You have assigned {assigneduser} to card {card} on board {board}" : "Has asignado a {assigneduser} para {card} en {board}",
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} ha asignado a {assigneduser} para {card} en {board}",
"You have unassigned {assigneduser} from card {card} on board {board}" : "Has desasignado a {assigneduser} para {card} en {board}",
"{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} ha asignado a {assigneduser} para {card} en {board}",
"You have moved the card {card} from stack {stackBefore} to {stack}" : "Has movido la tarjeta {card} de {stackBefore} a {stack}",
"{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} ha movido la carta {card} de {stackBefore} a {stack}",
"You have added the attachment {attachment} to card {card}" : "Has añadido el adjunto {attachment} en {card}",
"{user} has added the attachment {attachment} to card {card}" : "{user} ha añadido el adjunto {attachment} en {card}",
"You have updated the attachment {attachment} on card {card}" : "Has actualizado el adjunto [attachment] en {card}",
"{user} has updated the attachment {attachment} to card {card}" : "{user} ha actualizado el adjunto {attachment} en {card}",
"You have deleted the attachment {attachment} from card {card}" : "Has eliminado el adjunto {attachment} de {card}",
"{user} has deleted the attachment {attachment} to card {card}" : "{user} ha eliminado el adjunto {attachment} de {card}",
"You have restored the attachment {attachment} to card {card}" : "Has restaurado el adjunto {attachment} a {card}",
"{user} has restored the attachment {attachment} to card {card}" : "{user} ha restaurado el adjunto {attachment} a {card}",
"You have commented on card {card}" : "Has comentado en la tarjeta {card}",
"{user} has commented on card {card}" : "{user} ha comentado en {card}",
"A <strong>card description</strong> inside the Deck app has been changed" : "Una <strong>descripción de tarjeta</strong> dentro de la app Deck ha cambiado",
"Deck" : "Deck",
"Changes in the <strong>Deck app</strong>" : "Cambios en la <strong>app Deck</strong>",
"Personal" : "Personal",
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "La tarjeta \"%s\" en \"%s\" te ha sido asignada por %s.",
"{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} te ha asignado la tarjeta \"%s\" en \"%s\".",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.",
"%s has mentioned you in a comment on \"%s\"." : "%s te ha mencionado en un comentario en \"%s\".",
"{user} has mentioned you in a comment on \"%s\"." : "{user} te ha comentado en un comentario en \"%s\".",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo.",
"No data was provided to create an attachment." : "No se proporcionaron datos para crear un adjunto",
@@ -16,6 +88,12 @@ OC.L10N.register(
"To review" : "Para revisar",
"Action needed" : "Acción necesaria",
"Later" : "Después",
"To do" : "Por hacer",
"Doing" : "Haciendo",
"Done" : "Hecho",
"Example Task 3" : "Tarea de ejemplo 3",
"Example Task 2" : "Tarea de ejemplo 2",
"Example Task 1" : "Tarea de ejemplo 1",
"The file was uploaded" : "Se ha subido el archivo",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El archivo subido excede la directiva upload_max_filesize en php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El archivo subido excede la directiva MAX_FILE-SIZE directive que se especificó en el formulario web",
@@ -24,36 +102,51 @@ OC.L10N.register(
"Missing a temporary folder" : "Falta una carpeta temporal",
"Could not write file to disk" : "No se ha podido escribir el archivo al disco",
"A PHP extension stopped the file upload" : "Una extensión de PHP ha detenido la subida del archivo",
"Deck" : "Deck",
"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",
"A kanban style project and personal management tool for Nextcloud" : "Una herramienta de manejo de proyectos y personal al estilo kanban para Nextcloud.",
"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- 🚀 Get your project organized" : "Deckes una herramienta de organización al estilo kanban enfocada en la planificación personal y en la organización de proyectos para equipos, integrada en Nextcloud.\n\n\n- 📥 Añade tus tareas a tarjetas y ordénalas\n- 📄 Escribe notas adicionales en markdown\n- 🔖 Asigna etiquetas para una organización aún mejor\n- 👥 Comparte con tu equipo, amigos o familia\n- 🚀 Organiza tu proyecto",
"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",
"Add a new stack" : "Añadir nuevo montón",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"Toggle compact mode" : "Mostrar/ocultar modo compacto",
"Show board details" : "Mostrar detalles del tablero",
"All Boards" : "Todos los tableros",
"Archived boards" : "Tableros archivados",
"Share board" : "Compartir tablero",
"Actions" : "Acciones",
"Drop your files here to upload it to the card" : "Arrastra tus archivos aquí para subirlos a la tarjeta",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Assign card to me" : "Asignarme tarjeta a mí",
"Unassign card from me" : "Desasignarme tarjeta",
"Archive card" : "Archivar tarjeta",
"Unarchive card" : "Desarchivar tarjeta",
"Delete card" : "Eliminar tarjeta",
"Enter a card title" : "Introducir título de tarjeta",
"Add card" : "Añadir tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartir",
"Tags" : "Etiquetas",
"Deleted items" : "Elementos eliminados",
"Timeline" : "Línea de tiempo",
"Select users or groups to share with" : "Seleccionar usuarios o grupos con los que compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron usuarios o grupos coincidentes.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Organizar",
"Discard share" : "Descartar compartición",
"Update" : "Actualizar",
"Sharing has been disabled for your account." : "Se ha deshabilitado el compartir desde tu cuenta.",
"Update tag" : "Actualizar etiqueta",
"Edit tag" : "Editar etiqueta",
"Delete tag" : "Eliminar etiqueta",
"Create" : "Crear",
"Create a new tag" : "Crear una etiqueta nueva",
"Deleted stacks" : "Pilas eliminadas",
"Deleted cards" : "Cartas eliminadas",
"Status" : "Estado",
"No archived boards to display" : "No hay tableros archivados que mostrar",
"No shared boards to display" : "No hay tableros compartidos que mostrar",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
@@ -61,15 +154,19 @@ OC.L10N.register(
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Eliminar tablero",
"Reset" : "Resetear",
"Update board" : "Actualizar tablero",
"Reset board" : "Resetear tablero",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado del tablero. Si no, el tablero será eliminado durante la próxima ejecución del cronjob.",
"Create new board" : "Crear nuevo tablero",
"New board title" : "Nuevo título de tablero",
"Create board" : "Crear tablero",
"Select an attachment" : "Selecciona un adjunto",
"Cancel upload" : "Cancelar la subida",
"by" : "por",
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Deshacer eliminación del archivo. De otra forma el archivo se borrará durante la próxima ejecución del trabajo cron.",
"Undo file deletion" : "Deshacer eliminación del archivo",
"Insert the file into the description" : "Introduce el archivo en la descripción",
"Delete attachment" : "Eliminar adjunto",
"Modified:" : "Modificado: ",
"Created:" : "Creado: ",
"Choose a tag" : "Escoge una etiqueta",
@@ -85,13 +182,15 @@ OC.L10N.register(
"Attachments" : "Adjuntos",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Insert attachment" : "Insertar adjunto",
"Formatting help" : "Ayuda de formato",
"Upload attachment" : "Subir adjunto",
"Insert attachment" : "Insertar adjunto",
"Add a card description…" : "Añadir una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover tablero al archivo",
"Create a new board" : "Crear un tablero nuevo"
"Create a new board" : "Crear un tablero nuevo",
"Settings" : "Ajustes",
"Limit deck to groups" : "Limitar Deck 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." : "Limitar Deck impedirá que usuarios que no formen parte de esos grupos creen sus propios tableros. Los usuarios todavía podrán trabajar en tableros que hayan sido compartidos con ellos."
},
"nplurals=2; plural=(n != 1);");

View File

@@ -1,12 +1,84 @@
{ "translations": {
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro de que quieres eliminar esta tarjeta con todos sus datos?",
"Delete" : "Eliminar",
"Please provide a content for your comment." : "Por favor, suministra un contenido para tu comentario.",
"Posting the comment failed." : "Fallo al enviar el comentario.",
"The comment has been deleted" : "El comentario ha sido borrado",
"The associated stack is deleted as well, it will be restored as well." : "Se había eliminado también la pila asociada. También será restaurada.",
"Restore associated stack" : "Restaurar la pila asociada",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Maximum file size of {size} exceeded" : "Tamaño máximo de archivo de {size} excedido",
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro de que quieres eliminar el mazo con todos sus datos?",
"You have created a new board {board}" : "Has creado el tablero nuevo {board}",
"{user} has created a new board {board}" : "{user} ha creado el tablero nuevo {board}",
"You have deleted the board {board}" : "Has eliminado el tablero {board}",
"{user} has deleted the board {board}" : "{user} ha eliminado el tablero {board}",
"You have restored the board {board}" : "Has restaurado el tablero {board}",
"{user} has restored the board {board}" : "{user} ha restaurado el tablero {board}",
"You have shared the board {board} with {acl}" : "Has compartido el tablero {board} con {acl}",
"{user} has shared the board {board} with {sharee}" : "{user} ha compartido el tablero {board} con {sharee}",
"You have removed {acl} from the board {board}" : "Has eliminado a {acl} del tablero {board}",
"{user} has removed {acl} from the board {board}" : "{user} ha elimiando a {acl} del tablero {board}",
"You have renamed the board {before} to {board}" : "Has renombrado el tablero {before} como {board}",
"{user} has renamed the board {before} to {board}" : "{user} ha renombrado el tablero {before} como {board}",
"You have archived the board {board}" : "Has archivado el tablero {board}",
"{user} has archived the board {before}" : "{user} ha archivado el tablero {board}",
"You have unarchived the board {board}" : "Has desarchivado el tablero {board}",
"{user} has unarchived the board {before}" : "{user} ha desarchivado el tablero {before}",
"You have created a new stack {stack} on board {board}" : "Has creado la pila {stack} en {board}",
"{user} has created a new stack {stack} on board {board}" : "{user} ha creado la pila {stack} en {board}",
"You have renamed stack {before} to {stack} on board {board}" : "Has renombrado la pila {before} a {stack} en {board}",
"{user} has renamed stack {before} to {stack} on board {board}" : "{user} ha renombrado la pila {before} a {stack} en {board}",
"You have deleted stack {stack} on board {board}" : "Has eliminado {stack} en {board}",
"{user} has deleted stack {stack} on board {board}" : "{user} ha eliminado la pila {stack} en {board}",
"You have created card {card} in stack {stack} on board {board}" : "Has creado {card} en la pila {stack} en {board}",
"{user} has created card {card} in stack {stack} on board {board}" : "{user} ha creado la pila {stack} en {board}",
"You have deleted card {card} in stack {stack} on board {board}" : "Has eliminado {card} en la pila {stack} en {board}",
"{user} has deleted card {card} in stack {stack} on board {board}" : "{user} ha eliminado {card} en la pila {stack} en {board}",
"You have renamed the card {before} to {card}" : "Has renombrado la tarjeta {before} como {card}",
"{user} has renamed the card {before} to {card}" : "{user} ha renombrado la tarjeta {before} como {card}",
"You have added a description to card {card} in stack {stack} on board {board}" : "Has añadido una descripción a {card} en la pila {stack} en {board}",
"{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} ha añadido una descripción a {card} en la pila {stack} en {board}",
"You have updated the description of card {card} in stack {stack} on board {board}" : "Has actualizado la descripción de {card} en la pila {stack} en {board}",
"{user} has updated the description card {card} in stack {stack} on board {board}" : "{user} ha actualizado la descripción de {card} en la pila {stack} en {stack}",
"You have archived card {card} in stack {stack} on board {board}" : "Has archivado {card} en la pila {stack} en {board}",
"{user} has archived card {card} in stack {stack} on board {board}" : "{user} ha archivado {card} en la pila {stack} en {board}",
"You have unarchived card {card} in stack {stack} on board {board}" : "Has desarchivado {card} en la pila {stack} en {board}",
"{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} ha desarchivado {card} en la pila {stack} de {board}",
"You have removed the due date of card {card}" : "Has eliminado la fecha de vencimiento de {card}",
"{user} has removed the due date of card {card}" : "{user} ha eliminado la fecha de vencimiento de {card}",
"You have set the due date of card {card} to {after}" : "Has establecido la fecha de vencimiento de {card} como {after}",
"{user} has set the due date of card {card} to {after}" : "{user} ha establecido la fecha de vencimiento de {card} como {after}",
"You have updated the due date of card {card} to {after}" : "Has actualizado la fecha de vencimiento de {card} para {after}",
"{user} has updated the due date of card {card} to {after}" : "{user} ha actualizado la fecha de vencimiento de {card} para {after}",
"You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Has añadido la etiqueta {label} a {card} en {stack} en {board}",
"{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} ha añadido la etiqueta {label} a {card} en {stack} en {board}",
"You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Has eliminado la etiqueta {label} de {card} en la pila {stack} en {board}",
"{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} ha elimininado la etiqueta {label} a {card} en {stack} en {board}",
"You have assigned {assigneduser} to card {card} on board {board}" : "Has asignado a {assigneduser} para {card} en {board}",
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} ha asignado a {assigneduser} para {card} en {board}",
"You have unassigned {assigneduser} from card {card} on board {board}" : "Has desasignado a {assigneduser} para {card} en {board}",
"{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} ha asignado a {assigneduser} para {card} en {board}",
"You have moved the card {card} from stack {stackBefore} to {stack}" : "Has movido la tarjeta {card} de {stackBefore} a {stack}",
"{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} ha movido la carta {card} de {stackBefore} a {stack}",
"You have added the attachment {attachment} to card {card}" : "Has añadido el adjunto {attachment} en {card}",
"{user} has added the attachment {attachment} to card {card}" : "{user} ha añadido el adjunto {attachment} en {card}",
"You have updated the attachment {attachment} on card {card}" : "Has actualizado el adjunto [attachment] en {card}",
"{user} has updated the attachment {attachment} to card {card}" : "{user} ha actualizado el adjunto {attachment} en {card}",
"You have deleted the attachment {attachment} from card {card}" : "Has eliminado el adjunto {attachment} de {card}",
"{user} has deleted the attachment {attachment} to card {card}" : "{user} ha eliminado el adjunto {attachment} de {card}",
"You have restored the attachment {attachment} to card {card}" : "Has restaurado el adjunto {attachment} a {card}",
"{user} has restored the attachment {attachment} to card {card}" : "{user} ha restaurado el adjunto {attachment} a {card}",
"You have commented on card {card}" : "Has comentado en la tarjeta {card}",
"{user} has commented on card {card}" : "{user} ha comentado en {card}",
"A <strong>card description</strong> inside the Deck app has been changed" : "Una <strong>descripción de tarjeta</strong> dentro de la app Deck ha cambiado",
"Deck" : "Deck",
"Changes in the <strong>Deck app</strong>" : "Cambios en la <strong>app Deck</strong>",
"Personal" : "Personal",
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "La tarjeta \"%s\" en \"%s\" te ha sido asignada por %s.",
"{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} te ha asignado la tarjeta \"%s\" en \"%s\".",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.",
"%s has mentioned you in a comment on \"%s\"." : "%s te ha mencionado en un comentario en \"%s\".",
"{user} has mentioned you in a comment on \"%s\"." : "{user} te ha comentado en un comentario en \"%s\".",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo.",
"No data was provided to create an attachment." : "No se proporcionaron datos para crear un adjunto",
@@ -14,6 +86,12 @@
"To review" : "Para revisar",
"Action needed" : "Acción necesaria",
"Later" : "Después",
"To do" : "Por hacer",
"Doing" : "Haciendo",
"Done" : "Hecho",
"Example Task 3" : "Tarea de ejemplo 3",
"Example Task 2" : "Tarea de ejemplo 2",
"Example Task 1" : "Tarea de ejemplo 1",
"The file was uploaded" : "Se ha subido el archivo",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El archivo subido excede la directiva upload_max_filesize en php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El archivo subido excede la directiva MAX_FILE-SIZE directive que se especificó en el formulario web",
@@ -22,36 +100,51 @@
"Missing a temporary folder" : "Falta una carpeta temporal",
"Could not write file to disk" : "No se ha podido escribir el archivo al disco",
"A PHP extension stopped the file upload" : "Una extensión de PHP ha detenido la subida del archivo",
"Deck" : "Deck",
"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",
"A kanban style project and personal management tool for Nextcloud" : "Una herramienta de manejo de proyectos y personal al estilo kanban para Nextcloud.",
"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- 🚀 Get your project organized" : "Deckes una herramienta de organización al estilo kanban enfocada en la planificación personal y en la organización de proyectos para equipos, integrada en Nextcloud.\n\n\n- 📥 Añade tus tareas a tarjetas y ordénalas\n- 📄 Escribe notas adicionales en markdown\n- 🔖 Asigna etiquetas para una organización aún mejor\n- 👥 Comparte con tu equipo, amigos o familia\n- 🚀 Organiza tu proyecto",
"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",
"Add a new stack" : "Añadir nuevo montón",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"Toggle compact mode" : "Mostrar/ocultar modo compacto",
"Show board details" : "Mostrar detalles del tablero",
"All Boards" : "Todos los tableros",
"Archived boards" : "Tableros archivados",
"Share board" : "Compartir tablero",
"Actions" : "Acciones",
"Drop your files here to upload it to the card" : "Arrastra tus archivos aquí para subirlos a la tarjeta",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Assign card to me" : "Asignarme tarjeta a mí",
"Unassign card from me" : "Desasignarme tarjeta",
"Archive card" : "Archivar tarjeta",
"Unarchive card" : "Desarchivar tarjeta",
"Delete card" : "Eliminar tarjeta",
"Enter a card title" : "Introducir título de tarjeta",
"Add card" : "Añadir tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartir",
"Tags" : "Etiquetas",
"Deleted items" : "Elementos eliminados",
"Timeline" : "Línea de tiempo",
"Select users or groups to share with" : "Seleccionar usuarios o grupos con los que compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron usuarios o grupos coincidentes.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Organizar",
"Discard share" : "Descartar compartición",
"Update" : "Actualizar",
"Sharing has been disabled for your account." : "Se ha deshabilitado el compartir desde tu cuenta.",
"Update tag" : "Actualizar etiqueta",
"Edit tag" : "Editar etiqueta",
"Delete tag" : "Eliminar etiqueta",
"Create" : "Crear",
"Create a new tag" : "Crear una etiqueta nueva",
"Deleted stacks" : "Pilas eliminadas",
"Deleted cards" : "Cartas eliminadas",
"Status" : "Estado",
"No archived boards to display" : "No hay tableros archivados que mostrar",
"No shared boards to display" : "No hay tableros compartidos que mostrar",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
@@ -59,15 +152,19 @@
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Eliminar tablero",
"Reset" : "Resetear",
"Update board" : "Actualizar tablero",
"Reset board" : "Resetear tablero",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado del tablero. Si no, el tablero será eliminado durante la próxima ejecución del cronjob.",
"Create new board" : "Crear nuevo tablero",
"New board title" : "Nuevo título de tablero",
"Create board" : "Crear tablero",
"Select an attachment" : "Selecciona un adjunto",
"Cancel upload" : "Cancelar la subida",
"by" : "por",
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Deshacer eliminación del archivo. De otra forma el archivo se borrará durante la próxima ejecución del trabajo cron.",
"Undo file deletion" : "Deshacer eliminación del archivo",
"Insert the file into the description" : "Introduce el archivo en la descripción",
"Delete attachment" : "Eliminar adjunto",
"Modified:" : "Modificado: ",
"Created:" : "Creado: ",
"Choose a tag" : "Escoge una etiqueta",
@@ -83,13 +180,15 @@
"Attachments" : "Adjuntos",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Insert attachment" : "Insertar adjunto",
"Formatting help" : "Ayuda de formato",
"Upload attachment" : "Subir adjunto",
"Insert attachment" : "Insertar adjunto",
"Add a card description…" : "Añadir una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover tablero al archivo",
"Create a new board" : "Crear un tablero nuevo"
"Create a new board" : "Crear un tablero nuevo",
"Settings" : "Ajustes",
"Limit deck to groups" : "Limitar Deck 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." : "Limitar Deck impedirá que usuarios que no formen parte de esos grupos creen sus propios tableros. Los usuarios todavía podrán trabajar en tableros que hayan sido compartidos con ellos."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -1,9 +1,9 @@
OC.L10N.register(
"deck",
{
"Delete" : "Borrar",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -11,16 +11,12 @@ OC.L10N.register(
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
@@ -30,11 +26,10 @@ OC.L10N.register(
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
@@ -45,7 +40,6 @@ OC.L10N.register(
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
@@ -66,7 +60,6 @@ OC.L10N.register(
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},

View File

@@ -1,7 +1,7 @@
{ "translations": {
"Delete" : "Borrar",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -9,16 +9,12 @@
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
@@ -28,11 +24,10 @@
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
@@ -43,7 +38,6 @@
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
@@ -64,7 +58,6 @@
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -1,36 +0,0 @@
OC.L10N.register(
"deck",
{
"Delete" : "Borrar",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tablero",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingrese el títilo de la tarjeta",
"Sharing" : "Compartiendo",
"Select users or groups to share with" : "Seleccione los usuarios o grupos con los cuales compartir",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Members" : "Miembros",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título de tablero",
"by" : "por",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"Description" : "Descripción",
"Saved" : "Guardado",
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Create a new board" : "Crear nuevo tablero"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -1,34 +0,0 @@
{ "translations": {
"Delete" : "Borrar",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tablero",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingrese el títilo de la tarjeta",
"Sharing" : "Compartiendo",
"Select users or groups to share with" : "Seleccione los usuarios o grupos con los cuales compartir",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Members" : "Miembros",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título de tablero",
"by" : "por",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"Description" : "Descripción",
"Saved" : "Guardado",
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Create a new board" : "Crear nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -1,12 +1,10 @@
OC.L10N.register(
"deck",
{
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro que deseas borrar esta tarjeta con todos sus datos? ",
"Delete" : "Borrar",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro que deseas borrar la pila con todos sus datos?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -14,16 +12,12 @@ OC.L10N.register(
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
@@ -33,11 +27,10 @@ OC.L10N.register(
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
@@ -48,7 +41,6 @@ OC.L10N.register(
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
@@ -70,7 +62,6 @@ OC.L10N.register(
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},

View File

@@ -1,10 +1,8 @@
{ "translations": {
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro que deseas borrar esta tarjeta con todos sus datos? ",
"Delete" : "Borrar",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro que deseas borrar la pila con todos sus datos?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -12,16 +10,12 @@
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
@@ -31,11 +25,10 @@
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
@@ -46,7 +39,6 @@
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
@@ -68,7 +60,6 @@
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -1,12 +1,10 @@
OC.L10N.register(
"deck",
{
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro que deseas borrar esta tarjeta con todos sus datos? ",
"Delete" : "Borrar",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro que deseas borrar la pila con todos sus datos?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -14,16 +12,12 @@ OC.L10N.register(
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
@@ -33,11 +27,10 @@ OC.L10N.register(
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
@@ -48,7 +41,6 @@ OC.L10N.register(
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
@@ -70,7 +62,6 @@ OC.L10N.register(
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},

View File

@@ -1,10 +1,8 @@
{ "translations": {
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro que deseas borrar esta tarjeta con todos sus datos? ",
"Delete" : "Borrar",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro que deseas borrar la pila con todos sus datos?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -12,16 +10,12 @@
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
@@ -31,11 +25,10 @@
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
@@ -46,7 +39,6 @@
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
@@ -68,7 +60,6 @@
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -1,12 +1,10 @@
OC.L10N.register(
"deck",
{
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro que deseas borrar esta tarjeta con todos sus datos? ",
"Delete" : "Borrar",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro que deseas borrar la pila con todos sus datos?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -14,16 +12,12 @@ OC.L10N.register(
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
@@ -33,11 +27,10 @@ OC.L10N.register(
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
@@ -48,7 +41,6 @@ OC.L10N.register(
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
@@ -70,7 +62,6 @@ OC.L10N.register(
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},

View File

@@ -1,10 +1,8 @@
{ "translations": {
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro que deseas borrar esta tarjeta con todos sus datos? ",
"Delete" : "Borrar",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro que deseas borrar la pila con todos sus datos?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -12,16 +10,12 @@
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
@@ -31,11 +25,10 @@
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
@@ -46,7 +39,6 @@
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
@@ -68,7 +60,6 @@
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -1,12 +1,10 @@
OC.L10N.register(
"deck",
{
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro que deseas borrar esta tarjeta con todos sus datos? ",
"Delete" : "Borrar",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro que deseas borrar la pila con todos sus datos?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -14,16 +12,12 @@ OC.L10N.register(
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
@@ -33,11 +27,10 @@ OC.L10N.register(
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
@@ -48,7 +41,6 @@ OC.L10N.register(
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
@@ -70,7 +62,6 @@ OC.L10N.register(
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},

View File

@@ -1,10 +1,8 @@
{ "translations": {
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro que deseas borrar esta tarjeta con todos sus datos? ",
"Delete" : "Borrar",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro que deseas borrar la pila con todos sus datos?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -12,16 +10,12 @@
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
@@ -31,11 +25,10 @@
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
@@ -46,7 +39,6 @@
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
@@ -68,7 +60,6 @@
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -1,12 +1,10 @@
OC.L10N.register(
"deck",
{
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro que deseas borrar esta tarjeta con todos sus datos? ",
"Delete" : "Borrar",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro que deseas borrar la pila con todos sus datos?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -14,16 +12,12 @@ OC.L10N.register(
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
@@ -33,11 +27,10 @@ OC.L10N.register(
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
@@ -48,7 +41,6 @@ OC.L10N.register(
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
@@ -70,7 +62,6 @@ OC.L10N.register(
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},

View File

@@ -1,10 +1,8 @@
{ "translations": {
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro que deseas borrar esta tarjeta con todos sus datos? ",
"Delete" : "Borrar",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro que deseas borrar la pila con todos sus datos?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -12,16 +10,12 @@
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
@@ -31,11 +25,10 @@
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
@@ -46,7 +39,6 @@
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
@@ -68,7 +60,6 @@
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -1,12 +1,10 @@
OC.L10N.register(
"deck",
{
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro que deseas borrar esta tarjeta con todos sus datos? ",
"Delete" : "Borrar",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro que deseas borrar la pila con todos sus datos?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -14,16 +12,12 @@ OC.L10N.register(
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
@@ -33,11 +27,10 @@ OC.L10N.register(
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
@@ -48,7 +41,6 @@ OC.L10N.register(
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
@@ -70,7 +62,6 @@ OC.L10N.register(
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},

View File

@@ -1,10 +1,8 @@
{ "translations": {
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro que deseas borrar esta tarjeta con todos sus datos? ",
"Delete" : "Borrar",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro que deseas borrar la pila con todos sus datos?",
"Deck" : "Deck",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -12,16 +10,12 @@
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
@@ -31,11 +25,10 @@
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Share" : "Compartir",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
@@ -46,7 +39,6 @@
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
@@ -68,7 +60,6 @@
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"

Some files were not shown because too many files have changed in this diff Show More