Compare commits

...

333 Commits

Author SHA1 Message Date
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
Julius Härtl
120e4e13a6 Bump version to 0.4.0-beta4
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-02 12:16:02 +02:00
Julius Härtl
04aa9df45b Merge pull request #470 from nextcloud/feature/noid/export
Implement user data export via occ command
2018-07-02 12:06:53 +02:00
Julius Härtl
8d60a4379d Add rough test and fix card array
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-02 11:51:53 +02:00
Julius Härtl
4e96dec474 Implement user data export via occ command
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-02 11:06:13 +02:00
Julius Härtl
9727356d3b Merge pull request #514 from nextcloud/feature/noid/file-progress
File upload progress
2018-07-02 09:49:00 +02:00
Julius Härtl
c0c0cb8545 Implement file upload status and cancel button
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-02 09:34:57 +02:00
Julius Härtl
af646c1999 Reset FileService status when switching cards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-07-02 09:34:57 +02:00
Julius Härtl
38bb4c7a3a Merge pull request #515 from nextcloud/dependabot/npm_and_yarn/js/mini-css-extract-plugin-0.4.1
Bump mini-css-extract-plugin from 0.4.0 to 0.4.1 in /js
2018-07-02 08:35:07 +02:00
dependabot[bot]
573fa2c457 Bump mini-css-extract-plugin from 0.4.0 to 0.4.1 in /js
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 0.4.0 to 0.4.1.
- [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.0...v0.4.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-02 06:29:23 +00:00
Julius Härtl
d7e7fd58b0 Merge pull request #516 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.14.0
Bump webpack from 4.12.1 to 4.14.0 in /js
2018-07-02 08:27:07 +02:00
dependabot[bot]
f5a234fd26 Bump webpack from 4.12.1 to 4.14.0 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.12.1 to 4.14.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.12.1...v4.14.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-02 01:14:11 +00:00
Nextcloud bot
f75c9e0d4a [tx-robot] updated from transifex 2018-07-02 00:14:13 +00:00
Nextcloud bot
5eca92a0ea [tx-robot] updated from transifex 2018-07-01 00:16:09 +00:00
Julius Härtl
384b7a41a9 Merge pull request #513 from nextcloud/bugfix/noid/img-colorpicker-dark
Add misisng colorpicker image
2018-06-30 10:59:19 +02:00
Julius Härtl
47e27a7a89 Add misisng colorpicker image
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-30 09:47:46 +02:00
Nextcloud bot
ac19621d5b [tx-robot] updated from transifex 2018-06-30 00:16:44 +00:00
Nextcloud bot
cf2e84873c [tx-robot] updated from transifex 2018-06-29 00:18:56 +00:00
Julius Härtl
c523474980 Merge pull request #508 from nextcloud/bugfix/502/markdown-newline
Fix markdownit configuration
2018-06-28 21:36:19 +02:00
Julius Härtl
754486673a Merge pull request #510 from nextcloud/bugfix/noid/upload-size-fontend
Add frontend check for file size before starting to upload
2018-06-28 21:34:54 +02:00
Julius Härtl
a7110082e7 Merge branch 'master' into bugfix/502/markdown-newline 2018-06-28 21:32:03 +02:00
Julius Härtl
db619e4cda Merge pull request #509 from nextcloud/bugfix/504/fix-inline-javascript-error
Do not prefix href of select2 with unsafe to avoid #504
2018-06-28 21:31:38 +02:00
Julius Härtl
34d05f2ac0 Merge pull request #511 from nextcloud/bugfix/501/colorpicker-invert
Invert color picker icon on bright backgrounds
2018-06-28 21:31:15 +02:00
Julius Härtl
fdb1dbf397 Invert color picker icon on bright backgrounds
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-28 16:02:24 +02:00
Julius Härtl
5c2925aeed Fix markdownit configuration
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-28 15:34:36 +02:00
Julius Härtl
dc5fbbf7eb Do not prefix href of select2 with unsafe to avoid #504
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-28 15:26:27 +02:00
Julius Härtl
e46844988e Add frontend check for file size before starting to upload
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-28 15:25:25 +02:00
Julius Härtl
9d98107f3a Merge pull request #506 from nextcloud/dependabot/npm_and_yarn/js/karma-2.0.4
Bump karma from 2.0.3 to 2.0.4 in /js
2018-06-28 10:55:53 +02:00
Nextcloud bot
681176c684 [tx-robot] updated from transifex 2018-06-28 00:18:52 +00:00
Nextcloud bot
5d4757ddf1 [tx-robot] updated from transifex 2018-06-27 00:18:47 +00:00
dependabot[bot]
9731e6811a Bump karma from 2.0.3 to 2.0.4 in /js
Bumps [karma](https://github.com/karma-runner/karma) from 2.0.3 to 2.0.4.
- [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.3...v2.0.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-06-26 08:43:48 +00:00
Julius Härtl
23c86a4fcc Merge pull request #507 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.12.1
Bump webpack from 4.12.0 to 4.12.1 in /js
2018-06-26 10:41:55 +02:00
Nextcloud bot
43ea0136c8 [tx-robot] updated from transifex 2018-06-26 00:18:51 +00:00
dependabot[bot]
2cc8eb1313 Bump webpack from 4.12.0 to 4.12.1 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.12.0 to 4.12.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.12.0...v4.12.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-06-25 22:19:43 +00:00
Julius Härtl
bfe71900d3 Bump version to 0.4.0-beta3
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-25 18:14:59 +02:00
Julius Härtl
c6a6b41193 Merge pull request #505 from nextcloud/bugfix/noid/upload-errors
Display attachment errors properly and fix uploading big files
2018-06-25 18:12:44 +02:00
Julius Härtl
b0f7bef279 Fix tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-25 18:05:02 +02:00
Julius Härtl
014f76b2fb Provide resource of tmp file instead of putting all content in memory
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-25 17:55:40 +02:00
Julius Härtl
546928fb79 Throw proper StatusException
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-25 17:55:18 +02:00
Julius Härtl
b4ead5a2eb Display proper file upload errors
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-25 17:54:28 +02:00
Nextcloud bot
124918b744 [tx-robot] updated from transifex 2018-06-25 00:18:22 +00:00
Nextcloud bot
9308ad125a [tx-robot] updated from transifex 2018-06-23 00:19:28 +00:00
Nextcloud bot
7dc43829ab [tx-robot] updated from transifex 2018-06-22 00:19:11 +00:00
Julius Härtl
63ac985f15 Add proper polyfill for IE11
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-21 14:55:28 +02:00
Julius Härtl
93725e481d Bump version to 0.4.0-beta2
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-21 14:35:42 +02:00
Nextcloud bot
8e976cb2a6 [tx-robot] updated from transifex 2018-06-21 12:30:45 +00:00
Julius Härtl
58a89374e2 Properly use babel to fix IE11 support
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-21 14:13:39 +02:00
Julius Härtl
313bbca462 Add proper controller method annotations
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-21 11:44:45 +02:00
Nextcloud bot
f0c22370e0 [tx-robot] updated from transifex 2018-06-21 00:20:04 +00:00
Julius Härtl
00554c218b Merge pull request #499 from nextcloud/release/v0.4.0-beta1
Prepare for release of v0.4.0-beta1
2018-06-20 09:36:53 +02:00
Julius Härtl
b0222a2d11 Merge pull request #500 from nextcloud/bugfix/441/fix-opacity
Fix opacity issue with the popover menu
2018-06-20 09:35:52 +02:00
Julius Härtl
03ba692f69 Fix opacity issue with the popover menu
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-20 09:21:42 +02:00
Julius Härtl
7147368ce1 Prepare for release of v0.4.0-beta1
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-20 09:07:29 +02:00
Julius Härtl
c938fdd806 Merge pull request #488 from nextcloud/feature/109/file-attachments
File attachments for cards
2018-06-20 08:34:57 +02:00
Julius Härtl
49d7f8c522 Merge branch 'master' into feature/109/file-attachments 2018-06-20 08:19:10 +02:00
Nextcloud bot
6357080f89 [tx-robot] updated from transifex 2018-06-20 00:19:26 +00:00
Julius Härtl
147c317a46 Create proper parameters with QueryBuilder
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 20:08:02 +02:00
Julius Härtl
dd1a03f243 Limit images in height
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 19:56:17 +02:00
Julius Härtl
dfa409bd68 Merge pull request #494 from nextcloud/dependabot/npm_and_yarn/js/angular-1.7.2
Bump angular from 1.7.1 to 1.7.2 in /js
2018-06-19 19:43:31 +02:00
Julius Härtl
c2c0bae3d6 Fix scrutinizer issues
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 19:40:12 +02:00
Julius Härtl
56412498f1 Fix missing index and double quotes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 19:03:28 +02:00
Julius Härtl
c720f964bb Add AttachmentMapperTest
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:41:14 +02:00
Julius Härtl
6ac3066dc8 Add more spacing to attachment list
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:40:47 +02:00
Julius Härtl
63ad39dd2d Unit tests for missing service methods
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:07 +02:00
Julius Härtl
7955a19149 Add some logging
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:06 +02:00
Julius Härtl
a83b50bb97 return empty result
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:06 +02:00
Julius Härtl
0f50f8d1d9 Use generic Exception
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:06 +02:00
Julius Härtl
5b95beb153 Insert attachments to description
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:06 +02:00
Julius Härtl
7ad8080f82 Add unit tests for new classes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:06 +02:00
Julius Härtl
1972edc38d Fix CardTest
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:06 +02:00
Julius Härtl
06ea03689b Fix codacy warnings
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:06 +02:00
Julius Härtl
22190b90cf Fix button styling
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:05 +02:00
Julius Härtl
5bc65a6eb3 Use object-src self/blob for pdf files
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:05 +02:00
Julius Härtl
0b5ded2860 Use tabbed headers for description and attachments
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:05 +02:00
Julius Härtl
48c622d19e Add file upload indicator
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:05 +02:00
Julius Härtl
581fa011e3 Implement updating files
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:05 +02:00
Julius Härtl
c816b15bfa Fix race condition when loading the user list
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:05 +02:00
Julius Härtl
2bcd5d35c0 Fix chrome hovering bug
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:05 +02:00
Julius Härtl
8229fbacea Move uploading logic to dedicated FileService
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:04 +02:00
Julius Härtl
7b230d567e Add field for user count
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:04 +02:00
Julius Härtl
344ed6d928 Fix code style and PHP5.6 errors
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:04 +02:00
Julius Härtl
94397dedb1 Fix delete cron test
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:04 +02:00
Julius Härtl
04b0807a12 Adapt existing unit tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:04 +02:00
Julius Härtl
757b041f73 Use card data from CardService so we don't need to store objects twice
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:04 +02:00
Julius Härtl
0137b882c5 Add attachment indicator
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:04 +02:00
Julius Härtl
ee5a54a575 Allow to undo file deletions
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:04 +02:00
Julius Härtl
0c711b2b0b Update package-lock.json to remove option param
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:03 +02:00
Julius Härtl
b08d416c51 Include angular-file-upload and add a fix for its dragleave issue
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 17:59:20 +02:00
Julius Härtl
bfda3e7623 Implement file attachments frontend
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 17:59:00 +02:00
Julius Härtl
f152f32952 Update database schema for attachments
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 17:59:00 +02:00
Julius Härtl
45c7241daf Implement attachment backend with a first module for app data file upload
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 17:59:00 +02:00
dependabot[bot]
cfc32c0b74 Bump angular from 1.7.1 to 1.7.2 in /js
Bumps [angular](https://github.com/angular/angular.js) from 1.7.1 to 1.7.2.
- [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.1...v1.7.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-06-19 13:04:08 +00:00
Julius Härtl
e4863b6d8d Merge pull request #493 from nextcloud/dependabot/npm_and_yarn/js/webpack-merge-4.1.3
Bump webpack-merge from 4.1.2 to 4.1.3 in /js
2018-06-19 15:02:31 +02:00
Julius Härtl
8f5d0c3f76 Merge pull request #495 from nextcloud/dependabot/npm_and_yarn/js/angular-sanitize-1.7.2
Bump angular-sanitize from 1.7.1 to 1.7.2 in /js
2018-06-19 15:01:12 +02:00
Julius Härtl
38feba1740 Merge pull request #496 from nextcloud/dependabot/npm_and_yarn/js/angular-animate-1.7.2
Bump angular-animate from 1.7.1 to 1.7.2 in /js
2018-06-19 15:00:30 +02:00
dependabot[bot]
9973eef488 Bump angular-animate from 1.7.1 to 1.7.2 in /js
Bumps [angular-animate](https://github.com/angular/angular.js) from 1.7.1 to 1.7.2.
- [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.1...v1.7.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-06-19 07:57:51 +00:00
dependabot[bot]
77b906e884 Bump webpack-merge from 4.1.2 to 4.1.3 in /js
Bumps [webpack-merge](https://github.com/survivejs/webpack-merge) from 4.1.2 to 4.1.3.
- [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.2...v4.1.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-06-19 07:57:45 +00:00
dependabot[bot]
962724f0dc Bump angular-sanitize from 1.7.1 to 1.7.2 in /js
Bumps [angular-sanitize](https://github.com/angular/angular.js) from 1.7.1 to 1.7.2.
- [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.1...v1.7.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-06-19 07:57:15 +00:00
Julius Härtl
55440c47cf Merge pull request #497 from nextcloud/dependabot/npm_and_yarn/js/karma-2.0.3
Bump karma from 2.0.2 to 2.0.3 in /js
2018-06-19 09:56:12 +02:00
Julius Härtl
002ffc4b99 Merge pull request #498 from nextcloud/dependabot/npm_and_yarn/js/webpack-cli-3.0.8
Bump webpack-cli from 3.0.3 to 3.0.8 in /js
2018-06-19 09:55:35 +02:00
dependabot[bot]
97952d775c Bump webpack-cli from 3.0.3 to 3.0.8 in /js
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 3.0.3 to 3.0.8.
- [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/compare/v3.0.3...v3.0.8)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-06-18 22:16:14 +00:00
dependabot[bot]
a5130d8032 Bump karma from 2.0.2 to 2.0.3 in /js
Bumps [karma](https://github.com/karma-runner/karma) from 2.0.2 to 2.0.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/v2.0.2...v2.0.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-06-18 22:15:32 +00:00
Nextcloud bot
5b3f1f847d [tx-robot] updated from transifex 2018-06-14 00:20:30 +00:00
Nextcloud bot
5be62756ed [tx-robot] updated from transifex 2018-06-12 00:20:18 +00:00
Julius Härtl
be2d0010f7 Merge pull request #463 from nextcloud/markdown-checkboxes
Implement github flavored markdown checkboxes
2018-06-10 21:21:59 +02:00
Julius Härtl
ab5d2c79ec [markdown-it-checkbox] add licence details
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-10 21:10:48 +02:00
Julius Härtl
1de3dc2f6c Merge pull request #468 from nextcloud/feature/405/color-picker
Implemented a colorpicker for all color selectors
2018-06-10 21:06:39 +02:00
Julius Härtl
3413e7694a [markdown-it-checkbox] remove underscore.js requirement
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-10 21:05:49 +02:00
Julius Härtl
57f58e5e68 Code style fixes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-10 20:55:12 +02:00
Julius Härtl
1a4b2e5f01 Add fork of markdown-it-checkboxes to legacy scripts folder
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-10 20:55:12 +02:00
Julius Härtl
20490dbd39 Add indicator for tasks
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-10 20:55:12 +02:00
Julius Härtl
f3088b5b48 Add support for checkboxes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-10 20:55:11 +02:00
Julius Härtl
40536a0097 Merge pull request #481 from nextcloud/dependabot/npm_and_yarn/js/webpack-cli-3.0.3
Bump webpack-cli from 2.1.4 to 3.0.3 in /js
2018-06-10 20:51:02 +02:00
Julius Härtl
6c93e99b9b Use tabs instead of spaces
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-10 20:49:06 +02:00
Julius Härtl
00ae0e6963 Fix webpack-cli
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-10 20:47:22 +02:00
dependabot[bot]
25edef4fb9 Bump webpack-cli from 2.1.4 to 3.0.3 in /js
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 2.1.4 to 3.0.3.
- [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/compare/v2.1.4...v3.0.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-06-10 20:47:22 +02:00
Julius Härtl
9f58b1ea07 Fix invisible picker and webpack migration
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-10 20:43:31 +02:00
Oskar Kurz
4a9ef92e5d Fixed color-picker width. #204, #395
Signed-off-by: oskar <oskar.kurz@gmail.com>
2018-06-10 20:38:01 +02:00
Oskar Kurz
2cc961dcdf Implemented a colorpicker for all color selectors. #204, #395
Signed-off-by: oskar <oskar.kurz@gmail.com>
2018-06-10 20:38:01 +02:00
Julius Härtl
fe383a3485 Merge pull request #482 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.12.0
Bump webpack from 4.11.1 to 4.12.0 in /js
2018-06-09 12:44:43 +02:00
dependabot[bot]
264ae7bac6 Bump webpack from 4.11.1 to 4.12.0 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.11.1 to 4.12.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.11.1...v4.12.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-06-09 10:41:12 +00:00
Julius Härtl
f6de432bcc Merge pull request #484 from nextcloud/dependabot/npm_and_yarn/js/angular-sanitize-1.7.1
Bump angular-sanitize from 1.7.0 to 1.7.1 in /js
2018-06-09 12:37:47 +02:00
dependabot[bot]
1ed28ff563 Bump angular-sanitize from 1.7.0 to 1.7.1 in /js
Bumps [angular-sanitize](https://github.com/angular/angular.js) from 1.7.0 to 1.7.1.
- [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.0...v1.7.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-06-09 10:31:00 +00:00
Julius Härtl
23492745f7 Merge pull request #483 from nextcloud/dependabot/npm_and_yarn/js/angular-animate-1.7.1
Bump angular-animate from 1.7.0 to 1.7.1 in /js
2018-06-09 12:29:13 +02:00
dependabot[bot]
a56c82928c Bump angular-animate from 1.7.0 to 1.7.1 in /js
Bumps [angular-animate](https://github.com/angular/angular.js) from 1.7.0 to 1.7.1.
- [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.0...v1.7.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-06-09 10:20:51 +00:00
Julius Härtl
78f5d24a5d Merge pull request #485 from nextcloud/dependabot/npm_and_yarn/js/angular-1.7.1
Bump angular from 1.7.0 to 1.7.1 in /js
2018-06-09 12:18:58 +02:00
dependabot[bot]
aeac40e37e Bump angular from 1.7.0 to 1.7.1 in /js
Bumps [angular](https://github.com/angular/angular.js) from 1.7.0 to 1.7.1.
- [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.0...v1.7.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-06-08 22:15:33 +00:00
Nextcloud bot
6b1015e99f [tx-robot] updated from transifex 2018-06-08 00:20:09 +00:00
Julius Härtl
6d8b856728 Merge pull request #479 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.11.1
Bump webpack from 4.10.1 to 4.11.1 in /js
2018-06-07 14:35:51 +02:00
dependabot[bot]
8c77f1bc8a Bump webpack from 4.10.1 to 4.11.1 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.10.1 to 4.11.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.10.1...v4.11.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-06-06 22:14:31 +00:00
Nextcloud bot
7714b1e83b [tx-robot] updated from transifex 2018-06-04 00:19:15 +00:00
Nextcloud bot
8ad1496eff [tx-robot] updated from transifex 2018-06-02 00:19:18 +00:00
Nextcloud bot
a5683add3a [tx-robot] updated from transifex 2018-06-01 00:19:34 +00:00
Nextcloud bot
3a155a3004 [tx-robot] updated from transifex 2018-05-31 00:19:44 +00:00
Julius Härtl
67a482cc6f Merge pull request #473 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.10.1
Bump webpack from 4.8.3 to 4.10.1 in /js
2018-05-30 16:49:07 +02:00
Nextcloud bot
fd154fafb3 [tx-robot] updated from transifex 2018-05-30 00:19:24 +00:00
dependabot[bot]
51949fa179 Bump webpack from 4.8.3 to 4.10.1 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.8.3 to 4.10.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.8.3...v4.10.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-05-29 22:13:42 +00:00
Nextcloud bot
614ddf1023 [tx-robot] updated from transifex 2018-05-29 00:19:27 +00:00
Nextcloud bot
401a7db3e9 [tx-robot] updated from transifex 2018-05-28 00:20:14 +00:00
Nextcloud bot
d52c727b92 [tx-robot] updated from transifex 2018-05-26 00:20:38 +00:00
Nextcloud bot
7ff5fb64c3 [tx-robot] updated from transifex 2018-05-25 00:22:55 +00:00
Julius Härtl
d28a408994 Merge pull request #467 from nextcloud/dependabot/npm_and_yarn/js/webpack-cli-2.1.4
Bump webpack-cli from 2.1.3 to 2.1.4 in /js
2018-05-24 11:35:23 +02:00
Nextcloud bot
541b8cc9e7 [tx-robot] updated from transifex 2018-05-24 00:21:38 +00:00
dependabot[bot]
11f78403dd Bump webpack-cli from 2.1.3 to 2.1.4 in /js
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 2.1.3 to 2.1.4.
- [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/compare/v2.1.3...v2.1.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-05-23 22:13:48 +00:00
Nextcloud bot
3db63d1761 [tx-robot] updated from transifex 2018-05-23 00:23:29 +00:00
Julius Härtl
24b00f0a85 Merge pull request #465 from nextcloud/dependabot/npm_and_yarn/js/@uirouter/angularjs-1.0.18
Bump @uirouter/angularjs from 1.0.17 to 1.0.18 in /js
2018-05-22 08:23:18 +02:00
dependabot[bot]
f711a0214b Bump @uirouter/angularjs from 1.0.17 to 1.0.18 in /js
Bumps [@uirouter/angularjs](https://github.com/angular-ui/ui-router) from 1.0.17 to 1.0.18.
- [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.17...1.0.18)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-05-21 22:12:16 +00:00
Nextcloud bot
7facc2593e [tx-robot] updated from transifex 2018-05-18 00:21:18 +00:00
Nextcloud bot
bd32f51451 [tx-robot] updated from transifex 2018-05-17 00:21:25 +00:00
Julius Härtl
3b6c04dad9 Merge pull request #461 from nextcloud/dependabot/npm_and_yarn/js/@uirouter/angularjs-1.0.17
Bump @uirouter/angularjs from 1.0.16 to 1.0.17 in /js
2018-05-16 09:58:34 +02:00
dependabot[bot]
99f845d746 Bump @uirouter/angularjs from 1.0.16 to 1.0.17 in /js
Bumps [@uirouter/angularjs](https://github.com/angular-ui/ui-router) from 1.0.16 to 1.0.17.
- [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.16...1.0.17)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-05-15 07:26:17 +00:00
Julius Härtl
22f39d28e4 Merge pull request #462 from nextcloud/dependabot/npm_and_yarn/js/webpack-4.8.3
Bump webpack from 4.8.2 to 4.8.3 in /js
2018-05-15 09:24:07 +02:00
dependabot[bot]
aa0d8b6026 Bump webpack from 4.8.2 to 4.8.3 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.8.2 to 4.8.3.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.8.2...v4.8.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-05-14 22:14:18 +00:00
Julius Härtl
dd008f0895 Use single quotes and update krankerl.toml
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-05-12 13:19:03 +02:00
Julius Härtl
c4dfb75b3a Merge pull request #460 from nextcloud/scrutinizer-patch-1
Scrutinizer Auto-Fixes
2018-05-12 13:16:30 +02:00
Scrutinizer Auto-Fixer
b633d82c5e Scrutinizer Auto-Fixes
This commit consists of patches automatically generated for this project on https://scrutinizer-ci.com
2018-05-12 11:10:23 +00:00
Julius Härtl
08d9d51bea Update README.md 2018-05-12 12:49:14 +02:00
Julius Härtl
e21c12f23d Merge pull request #459 from nextcloud/dependabot/npm_and_yarn/js/webpack-tw-4.8.2
Update webpack requirement to ^4.8.2 in /js
2018-05-12 12:30:45 +02:00
Julius Härtl
101f20095d Ignore node global in eslint
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-05-12 12:24:01 +02:00
Julius Härtl
701b5c5a5b Add package-lock.json to repo
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-05-12 12:19:14 +02:00
Julius Härtl
e92c99fe22 Fix eslint errors
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-05-12 12:13:49 +02:00
Julius Härtl
893734dff9 Update makefile to use npm commands
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-05-12 12:06:45 +02:00
Julius Härtl
43babf82b0 Cleanup dependencies
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-05-12 12:03:47 +02:00
Julius Härtl
bd5ce84c65 Migrate to webpack 4.8 and use proper jquery timepicker
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-05-12 12:03:47 +02:00
dependabot[bot]
37851bad6f Update webpack requirement to ^4.8.2 in /js
Updates the requirements on [webpack](https://github.com/webpack/webpack) to permit the latest version.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/commits/v4.8.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-05-12 12:03:47 +02:00
Julius Härtl
13c7be9dc2 Merge pull request #453 from nextcloud/fix-di
Remove unused parameter that caused failures in card view
2018-05-12 11:58:50 +02:00
Nextcloud bot
2433703fa5 [tx-robot] updated from transifex 2018-05-12 00:19:57 +00:00
Julius Härtl
e320b52b48 Merge pull request #458 from nextcloud/dependabot/composer/jakub-onderka/php-parallel-lint-tw-1.0.0
Update jakub-onderka/php-parallel-lint requirement to ^1.0.0
2018-05-11 19:23:51 +02:00
Julius Härtl
73b91246e9 Delete _config.yml 2018-05-11 18:46:24 +02:00
dependabot[bot]
822cc1aaa5 Update jakub-onderka/php-parallel-lint requirement to ^1.0.0
Updates the requirements on [jakub-onderka/php-parallel-lint](https://github.com/JakubOnderka/PHP-Parallel-Lint) to permit the latest version.
- [Release notes](https://github.com/JakubOnderka/PHP-Parallel-Lint/releases)
- [Commits](https://github.com/JakubOnderka/PHP-Parallel-Lint/commits/v1.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-05-11 15:58:23 +00:00
Julius Härtl
83e62a9bc9 Delete issue_template.md
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-05-11 17:58:04 +02:00
Julius Härtl
4057be32e8 Merge pull request #457 from nextcloud/dependabot/composer/christophwurst/nextcloud-tw-13.0
Update christophwurst/nextcloud requirement to ^13.0
2018-05-11 17:56:52 +02:00
Julius Härtl
764a28a1dd Update issue templates 2018-05-11 17:55:51 +02:00
dependabot[bot]
5565589ebf Update christophwurst/nextcloud requirement to ^13.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/13.0.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-05-11 15:29:31 +00:00
Julius Härtl
cd5d23bacc Remove unused parameter that caused failures in card view
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-05-11 08:48:56 +02:00
Nextcloud bot
b7bc38376f [tx-robot] updated from transifex 2018-05-10 00:20:04 +00:00
Nextcloud bot
3e0de1bfba [tx-robot] updated from transifex 2018-04-22 00:18:33 +00:00
Morris Jobke
8ddc21e403 Fix drone config
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-04-12 16:37:14 +02:00
Julius Härtl
9cf8ab1efb Merge pull request #410 from nextcloud/move-to-webpack
Move to webpack
2018-04-11 13:59:29 +02:00
Julius Härtl
6f254510c1 Fix eslint errors
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-04-11 13:00:22 +02:00
Julius Härtl
2cd5606d40 Fix jsbuild
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-04-11 12:57:31 +02:00
Julius Härtl
4f0c05f536 Fix js build in drone
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-04-11 11:54:37 +02:00
Julius Härtl
24f4f84eb6 Move to webpack
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-04-11 11:54:37 +02:00
Nextcloud bot
e94986744d [tx-robot] updated from transifex 2018-04-05 00:18:12 +00:00
Nextcloud bot
7b15c04976 [tx-robot] updated from transifex 2018-03-26 00:19:41 +00:00
Nextcloud bot
b9ff4ef305 [tx-robot] updated from transifex 2018-03-25 01:16:28 +00:00
Nextcloud bot
5d0173f755 [tx-robot] updated from transifex 2018-03-15 01:17:47 +00:00
Nextcloud bot
405f23f660 [tx-robot] updated from transifex 2018-03-14 01:17:53 +00:00
Nextcloud bot
6cefa20ec7 [tx-robot] updated from transifex 2018-03-13 01:18:32 +00:00
Nextcloud bot
20a2f53745 [tx-robot] updated from transifex 2018-03-12 01:19:05 +00:00
Nextcloud bot
bd7fdf7934 [tx-robot] updated from transifex 2018-03-10 01:18:11 +00:00
Nextcloud bot
8042d50d4c [tx-robot] updated from transifex 2018-03-09 01:19:11 +00:00
Nextcloud bot
2999d96a22 [tx-robot] updated from transifex 2018-03-06 01:19:05 +00:00
Nextcloud bot
9920546ec8 [tx-robot] updated from transifex 2018-03-05 01:19:10 +00:00
Nextcloud bot
eeceda539f [tx-robot] updated from transifex 2018-03-04 01:19:20 +00:00
Julius Härtl
ee262291ce Merge pull request #436 from nextcloud/fix-translations-dialog
Fix translations of the delete confirmation
2018-03-03 15:02:03 +01:00
Julius Härtl
858952a56f Fix translations of the delete confirmation
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-03-03 14:09:21 +01:00
Julius Härtl
ad9ce6cd26 Merge pull request #432 from nextcloud/auto-remove-assignments
Auto remove assignments
2018-03-02 19:30:49 +01:00
Julius Härtl
d362e0ad0e No typehinting in deck yet
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-03-02 19:16:03 +01:00
Julius Härtl
31965bf40c Fix tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-03-02 19:00:18 +01:00
Julius Härtl
691bbda056 Update view when removing sharees and track by correct property
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-03-02 17:54:16 +01:00
Julius Härtl
9b82779513 Remove deleted users from assignments
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-03-02 17:54:16 +01:00
Julius Härtl
8cb92934b1 Merge pull request #428 from nextcloud/fix-assign-user-list
Fix assign user list
2018-03-02 17:52:54 +01:00
Julius Härtl
1b471b0fe8 Disable integration tests for now
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-03-02 16:14:39 +01:00
Nextcloud bot
537e9b35da [tx-robot] updated from transifex 2018-03-02 01:19:06 +00:00
Nextcloud bot
ad5967859e [tx-robot] updated from transifex 2018-03-01 01:18:59 +00:00
Julius Härtl
afa2d247aa Merge pull request #427 from nextcloud/workaround-delete-confirmation
Add confirmation dialog to delete options
2018-02-28 17:07:15 +01:00
Julius Härtl
76e3cc5061 Do not overwrite emtpy values
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-02-28 16:54:30 +01:00
Julius Härtl
8f5ded6a28 Track by correct property
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-02-28 16:49:00 +01:00
Julius Härtl
0e092d3495 Only return updated properties not resolvable ones
fixes #406

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-02-28 16:48:40 +01:00
Julius Härtl
f32721d1e6 Fix popover position of assigned users
fixes #385

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-02-28 12:10:05 +01:00
Julius Härtl
19a3466b18 Add confirmation dialog to delete options
this is only a temporary solution but it will probably safe some users from deleting their data by accident

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-02-28 10:01:39 +01:00
Julius Härtl
5d3f952d92 Merge pull request #423 from nextcloud/fix-userlist-limit
Force limit of users that do not match exactly
2018-02-25 10:40:44 +01:00
Nextcloud bot
d1b8e3cc5f [tx-robot] updated from transifex 2018-02-21 01:18:26 +00:00
Julius Härtl
efb7da6ca5 Force limit of users that do not match exactly
fixes #422

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-02-20 12:42:30 +01:00
Nextcloud bot
cc737cf250 [tx-robot] updated from transifex 2018-02-17 01:18:31 +00:00
Nextcloud bot
da373bafe0 [tx-robot] updated from transifex 2018-02-16 01:18:03 +00:00
Nextcloud bot
9e4d48ae36 [tx-robot] updated from transifex 2018-02-15 01:18:14 +00:00
Nextcloud bot
4d84d77d27 [tx-robot] updated from transifex 2018-02-14 01:18:02 +00:00
Nextcloud bot
0a82689284 [tx-robot] updated from transifex 2018-02-12 22:34:38 +00:00
Morris Jobke
a3e14ec732 Add l10n dir
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-02-12 23:28:17 +01:00
Morris Jobke
4a56995326 Fix tx config
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-02-12 22:57:14 +01:00
Nextcloud bot
eb262a13e4 [tx-robot] updated from transifex 2018-02-12 21:40:03 +00:00
Julius Härtl
21d84343ec Merge pull request #419 from nextcloud/unperl-app
Move transifex config for updated l10n script
2018-02-12 17:58:18 +01:00
Morris Jobke
431dfe3b15 Move transifex config for updated l10n script
See nextcloud/docker-ci#78 for details

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-02-12 16:54:50 +01:00
Julius Härtl
9bb474638d Update user list when acl is changed
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-02-09 09:28:08 +01:00
Julius Härtl
220adf708f Use actual acl list for assigning users
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-02-09 09:28:08 +01:00
Julius Härtl
f616f38e67 Fix bug when user selection was staying hidden
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-02-09 09:28:08 +01:00
Julius Härtl
8e51fdbb88 Only digest on card update not for every interval
and add various track by statements

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-02-09 09:27:22 +01:00
Nextcloud bot
d5bec8d19e [tx-robot] updated from transifex 2018-02-08 01:16:15 +00:00
Nextcloud bot
742c02cbbb [tx-robot] updated from transifex 2018-02-05 01:16:02 +00:00
Julius Härtl
27aa2adf0f Merge pull request #415 from nextcloud/add-homepage-389
Add Repo as homepage
2018-02-02 10:31:18 +01:00
Julius Härtl
79550fc843 Add Repo as homepage (fixes #389)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-02-01 23:28:18 +01:00
Nextcloud bot
ac982a72a4 [tx-robot] updated from transifex 2018-01-29 01:17:04 +00:00
Nextcloud bot
de0aeaa084 [tx-robot] updated from transifex 2018-01-24 01:16:50 +00:00
Nextcloud bot
e6f4929cea [tx-robot] updated from transifex 2018-01-23 01:17:07 +00:00
Nextcloud bot
f8fbcee618 [tx-robot] updated from transifex 2018-01-20 01:17:10 +00:00
Nextcloud bot
7ffe11e8cd [tx-robot] updated from transifex 2018-01-17 01:17:09 +00:00
Nextcloud bot
99fffe750d [tx-robot] updated from transifex 2018-01-16 01:17:11 +00:00
Nextcloud bot
ae4857b75e [tx-robot] updated from transifex 2018-01-15 01:16:37 +00:00
Nextcloud bot
27bab0ec4d [tx-robot] updated from transifex 2018-01-14 01:16:40 +00:00
Julius Härtl
8ca3e5d32e Bump drone images (#391)
* Bump drone images

Signed-off-by: Julius Härtl <jus@bitgrid.net>

* Use travis for codecov

Signed-off-by: Julius Härtl <jus@bitgrid.net>

* Just test against master in travis

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-13 12:26:27 +01:00
Julius Härtl
6227583917 Merge pull request #388 from cloud2018/translation
translate attributes in templates/part.card.php
2018-01-13 11:36:44 +01:00
cloud2018
5d10f834c5 translate attributes in templates/part.card.php
translate attributes title and placeholder in class "section-content card-details-assign-users" in templates/part.card.php
2018-01-12 21:38:47 +01:00
244 changed files with 16875 additions and 1242 deletions

View File

@@ -5,7 +5,7 @@ clone:
pipeline: pipeline:
check-app-compatbility: check-app-compatbility:
image: nextcloudci/php5.6:php5.6-3 image: nextcloudci/php7.0:php7.0-17
environment: environment:
- APP_NAME=deck - APP_NAME=deck
- CORE_BRANCH=master - CORE_BRANCH=master
@@ -22,17 +22,34 @@ pipeline:
when: when:
matrix: matrix:
TESTS: check-app-compatbility TESTS: check-app-compatbility
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: signed-off-check:
image: nextcloudci/php7.0:php7.0-2 image: nextcloudci/php7.0:php7.0-17
environment: environment:
- APP_NAME=deck - APP_NAME=deck
- CORE_BRANCH=master - CORE_BRANCH=master
- DB=sqlite - DB=sqlite
commands: commands:
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh - wget https://raw.githubusercontent.com/nextcloud/server/master/build/signed-off-checker.php
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB - php ./signed-off-checker.php
- cd ../server secrets: [ github_token ]
- php ./build/signed-off-checker.php
when: when:
matrix: matrix:
TESTS: signed-off-check TESTS: signed-off-check
@@ -40,7 +57,7 @@ pipeline:
image: nextcloudci/php5.6:php5.6-8 image: nextcloudci/php5.6:php5.6-8
environment: environment:
- APP_NAME=deck - APP_NAME=deck
- CORE_BRANCH=master - CORE_BRANCH=stable13
- DB=sqlite - DB=sqlite
commands: commands:
- composer install - composer install
@@ -88,7 +105,7 @@ pipeline:
image: nextcloudci/php5.6:php5.6-8 image: nextcloudci/php5.6:php5.6-8
environment: environment:
- APP_NAME=deck - APP_NAME=deck
- CORE_BRANCH=master - CORE_BRANCH=stable13
- DB=sqlite - DB=sqlite
commands: commands:
- apt update && apt-get -y install php5-xdebug - apt update && apt-get -y install php5-xdebug
@@ -99,14 +116,8 @@ pipeline:
- cd ../server/ - cd ../server/
- ./occ app:enable $APP_NAME - ./occ app:enable $APP_NAME
- cd apps/$APP_NAME - cd apps/$APP_NAME
- phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml - phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
- phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml - phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
# Create coverage report
- wget https://codecov.io/bash -O codecov.sh
- sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t f6375299-4832-487e-b831-091772ab0384; fi"
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t f6375299-4832-487e-b831-091772ab0384; fi"
when: when:
matrix: matrix:
TESTS: php5.6 TESTS: php5.6
@@ -166,7 +177,7 @@ pipeline:
matrix: matrix:
TESTS: php7.2 TESTS: php7.2
integration: integration:
image: nextcloudci/integration-php7.0:integration-php7.0-3 image: nextcloudci/integration-php7.0:integration-php7.0-6
environment: environment:
- APP_NAME=deck - APP_NAME=deck
- CORE_BRANCH=master - CORE_BRANCH=master
@@ -193,16 +204,15 @@ pipeline:
jsbuild: jsbuild:
image: mhart/alpine-node:6.8.0 image: mhart/alpine-node:6.8.0
commands: commands:
- apk add --no-cache git - apk add --no-cache make
- cd js - make build-js
- npm install --deps
- ./node_modules/.bin/bower --allow-root install
when: when:
matrix: matrix:
TESTS: jsbuild TESTS: jsbuild
matrix: matrix:
include: include:
- TESTS: check-app-compatbility - TESTS: check-app-compatbility
- TESTS: check-app-compatbility-13
- TESTS: signed-off-check - TESTS: signed-off-check
- TESTS: syntax-php5.6 - TESTS: syntax-php5.6
- TESTS: syntax-php7.0 - TESTS: syntax-php7.0
@@ -214,7 +224,7 @@ matrix:
- TESTS: php7.2 - TESTS: php7.2
- TESTS: eslint - TESTS: eslint
- TESTS: jsbuild - TESTS: jsbuild
- TESTS: integration #- TESTS: integration
branches: [ master, stable* ] branches: [ master, stable* ]

View File

@@ -1,5 +1,6 @@
/js/tests/* /js/tests/*
/js/vendor/* /js/vendor/*
/js/legacy/*
/js/node_modules/* /js/node_modules/*
/js/public/* /js/public/*
/karma.conf.js /karma.conf.js

View File

@@ -1,6 +1,5 @@
root: true root: true
extends: extends:
- eslint:recommended - eslint:recommended
@@ -9,6 +8,7 @@ env:
amd: true amd: true
globals: globals:
global: false
app: false app: false
angular: false angular: false
$: false $: false
@@ -21,6 +21,10 @@ globals:
Clipboard: false Clipboard: false
oc_defaults: false oc_defaults: false
parserOptions:
ecmaVersion: 6
sourceType: "module"
rules: rules:
curly: error curly: error
eqeqeq: ["error", "smart"] eqeqeq: ["error", "smart"]
@@ -29,6 +33,7 @@ rules:
no-fallthrough: error no-fallthrough: error
no-mixed-spaces-and-tabs: error no-mixed-spaces-and-tabs: error
no-unused-vars: warn no-unused-vars: warn
no-useless-escape: warn
no-use-before-define: error no-use-before-define: error
semi: ["error", "always"] semi: ["error", "always"]
indent: indent:

View File

@@ -1,15 +1,33 @@
### Steps to reproduce ---
1. name: Bug report
2. about: Create a report to help us improve
3.
### Expected behaviour ---
Tell us what should happen
### Actual behaviour **Describe the bug**
Tell us what happens instead A clear and concise description of what the bug is.
### Server configuration **To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Client details:**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
- Device: [e.g. iPhone6, desktop]
<details>
<summary>Server details</summary>
<!-- <!--
You can use the Issue Template application to prefill most of the required information: https://apps.nextcloud.com/apps/issuetemplate You can use the Issue Template application to prefill most of the required information: https://apps.nextcloud.com/apps/issuetemplate
--> -->
@@ -57,12 +75,10 @@ Make sure to remove all sensitive content such as passwords. (e.g. database pass
**Are you using an external user-backend, if yes which one:** LDAP/ActiveDirectory/Webdav/... **Are you using an external user-backend, if yes which one:** LDAP/ActiveDirectory/Webdav/...
### Client configuration </details>
**Browser:**
**Operating system:** <details>
<summary>Logs</summary>
### Logs
#### Nextcloud log (data/nextcloud.log) #### Nextcloud log (data/nextcloud.log)
``` ```
@@ -77,3 +93,5 @@ a) The javascript console log
b) The network log b) The network log
c) ... c) ...
``` ```
</details>

View File

@@ -0,0 +1,17 @@
---
name: Feature request
about: Suggest an idea for this project
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

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

@@ -0,0 +1,17 @@
* Fixes 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

3
.gitignore vendored
View File

@@ -1,9 +1,10 @@
js/node_modules/* js/node_modules/*
js/vendor/ js/vendor/
js/public/ js/public/
js/package-lock.json js/build/
build/ build/
css/style.css css/style.css
css/vendor.css
tests/integration/vendor/ tests/integration/vendor/
tests/integration/composer.lock tests/integration/composer.lock
vendor/ vendor/

View File

@@ -1,35 +1,24 @@
language: php language: php
dist: trusty
sudo: required
services: services:
- mysql - mysql
php: php:
- 5.6
- 7.0 - 7.0
- 7.1 - 7.1
- 7.2 - 7.2
env: env:
- CORE_BRANCH=master DB=mysql - CORE_BRANCH=master DB=mysql
- CORE_BRANCH=stable13 DB=mysql
- CORE_BRANCH=stable12 DB=mysql
matrix:
exclude:
- php: 7.2
env: CORE_BRANCH=stable12 DB=mysql
before_install: before_install:
- wget https://phar.phpunit.de/phpunit-5.7.phar - wget https://phar.phpunit.de/phpunit-5.7.phar
- chmod +x phpunit-5.7.phar - chmod +x phpunit-5.7.phar
- mkdir bin - mkdir bin
- sudo mv phpunit-5.7.phar bin/phpunit - mv phpunit-5.7.phar bin/phpunit
- export PATH="$PWD/bin:$PATH" - export PATH="$PWD/bin:$PATH"
- phpunit --version - phpunit --version
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh - wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
- bash ./before_install.sh deck $CORE_BRANCH $DB - bash ./before_install.sh deck $CORE_BRANCH $DB
- cd ../server - cd ../server
- ./occ app:enable deck - ./occ app:enable deck
- php -S localhost:8080 &
before_script: before_script:
- cd apps/deck - cd apps/deck
@@ -37,6 +26,9 @@ before_script:
script: script:
- make test-unit - make test-unit
after_success:
- bash <(curl -s https://codecov.io/bash)
after_failure: after_failure:
- cat ../../data/nextcloud.log - cat ../../data/nextcloud.log

View File

@@ -3,7 +3,7 @@ host = https://www.transifex.com
lang_map = bg_BG: bg, cs_CZ: cs, fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja lang_map = bg_BG: bg, cs_CZ: cs, fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja
[nextcloud.deck] [nextcloud.deck]
file_filter = <lang>/deck.po file_filter = translationfiles/<lang>/deck.po
source_file = templates/deck.pot source_file = translationfiles/templates/deck.pot
source_lang = en source_lang = en
type = PO type = PO

View File

@@ -1,6 +1,21 @@
# Changelog # Changelog
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## 0.4.0 - 2018-07-11
### Added
- Attach files to cards
- Embed attachments into the card description
- Color picker to use any color value for board and labels
- Support for checkboxes inside the description
- occ command to export user data as JSON
### Fixed
- Improve frontend data management
- Fix bug the user list being empty on some occasions
## 0.3.0 - 2018-01-12 ## 0.3.0 - 2018-01-12
### Added ### Added

View File

@@ -12,26 +12,27 @@ sign_dir=$(build_dir)/sign
cert_dir=$(HOME)/.nextcloud/certificates cert_dir=$(HOME)/.nextcloud/certificates
default: build default: package
clean-build: clean-build:
rm -rf $(build_dir) rm -rf $(build_dir)
clean-dist: clean-dist:
rm -rf js/node_modules rm -rf js/node_modules
rm -rf js/vendor
install-deps: install-deps:
cd js && npm install --deps cd js && npm install
cd js && ./node_modules/.bin/bower install
build: build-js build: build-js
build-js: install-deps build-js: install-deps
cd js && ./node_modules/.bin/grunt build cd js && npm run build
build-js-dev: install-deps
cd js && npm run dev
watch: watch:
cd js && ./node_modules/.bin/grunt watch cd js && npm run watch
# appstore: clean install-deps # appstore: clean install-deps
appstore: clean-build build appstore: clean-build build
@@ -94,3 +95,5 @@ test-integration:
test-js: install-deps test-js: install-deps
cd js && run test cd js && run test
package:
krankerl package

View File

@@ -1,6 +1,6 @@
# Deck # 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) [![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/58ad558f4ca76f004ed475b3/badge.svg?style=flat)](https://www.versioneye.com/user/projects/58ad558f4ca76f004ed475b3) [![#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) [![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)
Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud. Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.
@@ -14,17 +14,9 @@ Deck is a kanban style organization tool aimed at personal planning and project
![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_Board.png)
### Planned features
- :file_folder: Attach files directly from your Nextcloud
- :earth_africa: Share boards with the public
- :calendar: Integration with Nextcloud calendar and other apps
- :speech_balloon: Comments integration
- :exclamation: Checkout the project milestones for more ...
## Installation/Update ## Installation/Update
This app is supposed to work on Nextcloud version 11 or later. This app is supposed to work on Nextcloud version 12 or later.
### Install latest release ### Install latest release
@@ -55,8 +47,7 @@ Nothing to prepare, just dig into the code.
### JavaScript ### JavaScript
When `'debug'=>true` is set in your config.php files will get loaded automatically. Otherwise you need to ensure that `public/app.js` is generated by running `make` or `make watch` to regenerate it on every change. Deck requires running a `make build-js` to install npm dependencies and build the JavaScript code using webpack. While developing you can also use `make watch` to rebuild everytime the code changes.
Make sure you have installed the dependencies with ```make install-deps```.
### Running tests ### Running tests
You can use the provided Makefile to run all tests by using: You can use the provided Makefile to run all tests by using:

View File

@@ -1,2 +0,0 @@
theme: jekyll-theme-cayman
site: https://deck-app.com

View File

@@ -198,12 +198,6 @@
<autoincrement>1</autoincrement> <autoincrement>1</autoincrement>
<length>4</length> <length>4</length>
</field> </field>
<field>
<name>title</name>
<type>text</type>
<notnull>true</notnull>
<length>100</length>
</field>
<field> <field>
<name>card_id</name> <name>card_id</name>
<type>integer</type> <type>integer</type>
@@ -218,12 +212,12 @@
</field> </field>
<field> <field>
<name>data</name> <name>data</name>
<type>clob</type> <type>text</type>
</field> </field>
<field> <field>
<name>last_modified</name> <name>last_modified</name>
<type>integer</type> <type>integer</type>
<default></default> <default/>
<length>8</length> <length>8</length>
<notnull>false</notnull> <notnull>false</notnull>
<unsigned>true</unsigned> <unsigned>true</unsigned>
@@ -231,7 +225,21 @@
<field> <field>
<name>created_at</name> <name>created_at</name>
<type>integer</type> <type>integer</type>
<default></default> <default/>
<length>8</length>
<notnull>false</notnull>
<unsigned>true</unsigned>
</field>
<field>
<name>created_by</name>
<type>text</type>
<notnull>true</notnull>
<length>64</length>
</field>
<field>
<name>deleted_at</name>
<type>integer</type>
<default>0</default>
<length>8</length> <length>8</length>
<notnull>false</notnull> <notnull>false</notnull>
<unsigned>true</unsigned> <unsigned>true</unsigned>

View File

@@ -14,18 +14,19 @@
- 🚀 Get your project organized - 🚀 Get your project organized
</description> </description>
<version>0.4.0-alpha1</version> <version>0.5.0-dev1</version>
<licence>agpl</licence> <licence>agpl</licence>
<author>Julius Härtl</author> <author>Julius Härtl</author>
<namespace>Deck</namespace> <namespace>Deck</namespace>
<category>organization</category> <category>organization</category>
<category>office</category> <category>office</category>
<website>https://github.com/nextcloud/deck</website>
<bugs>https://github.com/nextcloud/deck/issues</bugs> <bugs>https://github.com/nextcloud/deck/issues</bugs>
<repository type="git">https://github.com/nextcloud/deck.git</repository> <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_Board.png</screenshot>
<screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/Deck_Details.png</screenshot> <screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/Deck_Details.png</screenshot>
<dependencies> <dependencies>
<nextcloud min-version="12" max-version="14" /> <nextcloud min-version="13" max-version="14" />
</dependencies> </dependencies>
<background-jobs> <background-jobs>
<job>OCA\Deck\Cron\DeleteCron</job> <job>OCA\Deck\Cron\DeleteCron</job>
@@ -36,4 +37,7 @@
<step>OCA\Deck\Migration\UnknownUsers</step> <step>OCA\Deck\Migration\UnknownUsers</step>
</post-migration> </post-migration>
</repair-steps> </repair-steps>
<commands>
<command>OCA\Deck\Command\UserExport</command>
</commands>
</info> </info>

View File

@@ -59,6 +59,16 @@ return [
['name' => 'card#assignUser', 'url' => '/cards/{cardId}/assign', 'verb' => 'POST'], ['name' => 'card#assignUser', 'url' => '/cards/{cardId}/assign', 'verb' => 'POST'],
['name' => 'card#unassignUser', 'url' => '/cards/{cardId}/assign/{userId}', 'verb' => 'DELETE'], ['name' => 'card#unassignUser', 'url' => '/cards/{cardId}/assign/{userId}', 'verb' => 'DELETE'],
['name' => 'attachment#getAll', 'url' => '/cards/{cardId}/attachments', 'verb' => 'GET'],
['name' => 'attachment#create', 'url' => '/cards/{cardId}/attachment', 'verb' => 'POST'],
['name' => 'attachment#display', 'url' => '/cards/{cardId}/attachment/{attachmentId}', 'verb' => 'GET'],
['name' => 'attachment#update', 'url' => '/cards/{cardId}/attachment/{attachmentId}', 'verb' => 'PUT'],
// also allow to use POST for updates so we can properly access files when using application/x-www-form-urlencoded
['name' => 'attachment#update', 'url' => '/cards/{cardId}/attachment/{attachmentId}', 'verb' => 'POST'],
['name' => 'attachment#delete', 'url' => '/cards/{cardId}/attachment/{attachmentId}', 'verb' => 'DELETE'],
['name' => 'attachment#restore', 'url' => '/cards/{cardId}/attachment/{attachmentId}/restore', 'verb' => 'GET'],
// labels // labels
['name' => 'label#create', 'url' => '/labels', 'verb' => 'POST'], ['name' => 'label#create', 'url' => '/labels', 'verb' => 'POST'],
['name' => 'label#update', 'url' => '/labels/{labelId}', 'verb' => 'PUT'], ['name' => 'label#update', 'url' => '/labels/{labelId}', 'verb' => 'PUT'],

View File

@@ -10,7 +10,7 @@
], ],
"require": {}, "require": {},
"require-dev": { "require-dev": {
"christophwurst/nextcloud": "^12.0", "christophwurst/nextcloud": "^13.0",
"jakub-onderka/php-parallel-lint": "^0.9.2" "jakub-onderka/php-parallel-lint": "^1.0.0"
} }
} }

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

@@ -0,0 +1,38 @@
#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;
&.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;
}
}
}

View File

@@ -4,6 +4,7 @@
* @author Julius Härtl <jus@bitgrid.net> * @author Julius Härtl <jus@bitgrid.net>
* @author Artem Anufrij <artem.anufrij@live.de> * @author Artem Anufrij <artem.anufrij@live.de>
* @author Marin Treselj <marin@pixelipo.com> * @author Marin Treselj <marin@pixelipo.com>
* @author Oskar Kurz <oskar.kurz@gmail.com>
* *
* @license GNU AGPL version 3 or any later version * @license GNU AGPL version 3 or any later version
* *
@@ -69,6 +70,26 @@ input.input-inline {
cursor: text; 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 * Navigation sidebar
*/ */
@@ -101,8 +122,11 @@ input.input-inline {
} }
} }
.app-navigation-entry-edit { .app-navigation-entry-edit {
.colorselect div{ .colorselect {
height: 32px; div, label {
height: 32px;
width: auto;
}
} }
form { form {
display: flex; display: flex;
@@ -139,15 +163,18 @@ input.input-inline {
.card { .card {
opacity: 1; opacity: 1;
&.file-drop {
}
} }
&.card-selected { &.card-selected {
.card { .card {
opacity: 0.7; box-shadow: 0px 0px 7px 0px $color-grey;
&.current { &.current {
opacity: 1.0;
box-shadow: 0px 0px 7px 0px $color-darkgrey; box-shadow: 0px 0px 7px 0px $color-darkgrey;
} }
} }
@@ -231,7 +258,7 @@ input.input-inline {
} }
} }
#app-navigation-toggle { #app-navigation-toggle-custom {
width: 44px; width: 44px;
height: 44px; height: 44px;
cursor: pointer; cursor: pointer;
@@ -257,10 +284,6 @@ input.input-inline {
margin-right: 6px; margin-right: 6px;
} }
} }
> button {
padding: 16px 20px;
}
} }
.filter-select { .filter-select {
@@ -457,6 +480,21 @@ input.input-inline {
} }
} }
.card-tasks, .card-files {
border-radius: 3px;
margin: 4px 4px 4px 0px;
padding: 0 2px;
font-size: 90%;
opacity: 0.5;
display: flex;
align-items: center;
.icon {
background-size: contain;
margin-right: 2px;
}
}
button { button {
padding: 22px; padding: 22px;
margin: 0; margin: 0;
@@ -599,17 +637,6 @@ input.input-inline {
/** /**
* App sidebar * App sidebar
*/ */
#app-sidebar {
right: -500px;
max-width: 100%;
width: 500px;
display:flex;
flex-direction: column;
&.details-visible {
right: 0;
}
}
#sidebar-header { #sidebar-header {
h3 { h3 {
@@ -635,6 +662,32 @@ input.input-inline {
} }
} }
.drop-indicator {
display: none;
}
.card .nv-file-over,
.drop-indicator.nv-file-over {
display: block;
position: absolute;
width: 100%;
height: 100%;
background-color: #fff;
z-index: 100;
opacity: 0.9;
text-align: center;
p {
width: calc(100% - 20px);
height: calc(100% - 20px);
position: absolute;
padding: 20px;
border: 1px dashed #AAA;
margin: 10px;
border-radius: 5px;
}
}
#card-meta { // TODO: use .card-block instead? #card-meta { // TODO: use .card-block instead?
height: 100%; height: 100%;
display: flex; display: flex;
@@ -678,10 +731,23 @@ input.input-inline {
flex: 1; flex: 1;
} }
} }
.section-header-tabbed {
margin-top: 10px;
margin-bottom: 5px;
flex-shrink: 0;
display: flex;
.tabHeaders {
margin: 0;
flex-grow: 1;
}
.tabDetails {
display: flex;
}
}
.save-indicator { .save-indicator {
border-radius: 3px; border-radius: 3px;
float: right; margin: 5px;
padding: 0 10px; padding: 0 10px;
font-size: 8pt; font-size: 8pt;
display: none; display: none;
@@ -727,6 +793,101 @@ input.input-inline {
} }
.tooltip { .tooltip {
z-index: 998; z-index: 998;
position: fixed;
}
}
}
.icon-upload.icon-loading-small {
background-image: none;
}
.attachment-list-wrapper {
position: fixed;
width: 100%;
height: 100%;
background-color: rgba($color-darkgrey, 0.5);
left: 0;
top: 0;
}
.attachment-list {
&.selector {
padding: 10px;
position: absolute;
width: 30%;
max-width: 500px;
min-width: 200px;
max-height: 50%;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: $color-main-background;
z-index: 2;
border-radius: 3px;
box-shadow: 0 0 3px $color-darkgrey;
overflow: scroll;
}
h3.attachment-selector {
margin: 0 0 10px;
padding: 0;
.icon-close {
display: inline-block;
float: right;
}
}
li.attachment {
display: flex;
padding: 3px;
&.deleted {
opacity: .5;
}
.fileicon {
display: inline-block;
min-width: 32px;
width: 32px;
height: 32px;
background-size: contain;
}
.details {
flex-grow: 1;
flex-shrink: 1;
min-width: 0;
flex-basis: 50%;
line-height: 110%;
padding: 2px;
}
.filename {
width: 70%;
display: flex;
.basename {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding-bottom: 2px;
}
.extension {
opacity: 0.7;
}
}
.filesize, .filedate {
font-size: 90%;
color: $color-darkgrey;
}
.app-popover-menu-utils {
position: relative;
right: -10px;
button {
height: 32px;
width: 42px;
}
}
button.icon-history {
width: 44px;
}
progress {
margin-top: 3px;
} }
} }
} }
@@ -762,24 +923,11 @@ input.input-inline {
} }
} }
#card-attachments { .card-attachments {
ul { .error {
margin: 5px; padding-left: 38px;
} margin-bottom: 5px;
background-position: 10px;
.details {
font-size: 8pt;
padding-left: 15px;
}
}
#app-content {
overflow: hidden;
display: flex;
flex-direction: column;
&.details-visible {
margin-right: 500px;
} }
} }
@@ -813,6 +961,10 @@ input.input-inline {
border: none; border: none;
} }
label.color {
flex-grow: 1;
}
.selected { .selected {
background-image: url('../../../core/img/actions/checkmark.svg'); background-image: url('../../../core/img/actions/checkmark.svg');
background-position: center center; background-position: center center;
@@ -822,6 +974,22 @@ input.input-inline {
background-image: url('../../../core/img/actions/checkmark-white.svg'); background-image: url('../../../core/img/actions/checkmark-white.svg');
} }
} }
.colorselect-label, .colorselect-label-white {
background-image: url('../img/color_picker-dark.svg');
background-position: center center;
background-repeat: no-repeat;
opacity: 1;
input {
position: absolute;
visibility: hidden;
height: 32px;
width: 40px;
}
}
.colorselect-label-white {
background-image: url('../img/color_picker.svg');
}
} }
.labels { .labels {
@@ -887,7 +1055,8 @@ input.input-inline {
.colorselect { .colorselect {
flex-grow: 1; flex-grow: 1;
div { div,
label {
min-width: 32px; min-width: 32px;
} }
} }
@@ -1100,7 +1269,11 @@ input.input-inline {
border: 0 !important; border: 0 !important;
overflow: hidden; overflow: hidden;
} }
.select2-search-field {
margin-right: -10px;
}
} }
.select2-choice { .select2-choice {
height: auto; height: auto;
} }
@@ -1196,6 +1369,24 @@ input.input-inline {
white-space: pre; white-space: pre;
} }
} }
img {
max-width: 100%;
max-height: 50vh;
margin: auto;
display: block;
}
input[type=checkbox] {
margin: 0px 10px 0px 0px;
line-height: 10px;
font-size: 10px;
display: inline-block;
min-height: 12px;
}
li input[type=checkbox] {
margin: 0px 10px 0px -20px;
}
} }
/** /**
@@ -1242,3 +1433,22 @@ input.input-inline {
.ui-select-dropdown.select2-drop-active { .ui-select-dropdown.select2-drop-active {
opacity: 1 !important; 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;
}
}

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 100 100"><path d="M91.645 8.355c-4.474-4.474-11.727-4.474-16.2 0l-13.5 13.501-3.727-3.727a5.015 5.015 0 1 0-7.093 7.093l3.727 3.727-41.51 41.508a11.411 11.411 0 0 0-3.329 7.324c-.073 1.087-.347 3.105-.675 5.292a1.748 1.748 0 0 1-.487.983l-3.105 3.106a2.546 2.546 0 0 0 0 3.6l3.493 3.493a2.546 2.546 0 0 0 3.6 0l3.106-3.105c.277-.275.622-.433.981-.486 2.187-.329 4.205-.602 5.293-.675a11.412 11.412 0 0 0 7.325-3.33l41.508-41.508 3.727 3.727a5.015 5.015 0 1 0 7.093-7.093L69.507 29.419l9.697 7.577 12.44-12.441c4.475-4.473 4.474-11.726.001-16.2zM65.051 42.749l-20.53 20.53a2.546 2.546 0 0 1-3.6 0l-3.27-3.27a2.545 2.545 0 0 0-3.599.001l-.616.616-.002-.002-14.728 14.727c-.337.337-.819.401-1.076.143s-.194-.74.143-1.076l23.841-23.841.004.004 15.633-15.633a2.546 2.546 0 0 1 3.6 0l4.2 4.201a2.546 2.546 0 0 1 0 3.6z"/></svg>

After

Width:  |  Height:  |  Size: 897 B

1
img/color_picker.svg Normal file
View File

@@ -0,0 +1 @@
<svg width="15" height="15" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><path d="M91.645 8.355c-4.474-4.474-11.727-4.474-16.2 0l-13.5 13.501-3.727-3.727a5.015 5.015 0 1 0-7.093 7.093l3.727 3.727-41.51 41.508a11.411 11.411 0 0 0-3.329 7.324c-.073 1.087-.347 3.105-.675 5.292a1.748 1.748 0 0 1-.487.983l-3.105 3.106a2.546 2.546 0 0 0 0 3.6l3.493 3.493a2.546 2.546 0 0 0 3.6 0l3.106-3.105c.277-.275.622-.433.981-.486 2.187-.329 4.205-.602 5.293-.675a11.412 11.412 0 0 0 7.325-3.33l41.508-41.508 3.727 3.727a5.015 5.015 0 1 0 7.093-7.093L69.507 29.419l9.697 7.577 12.44-12.441c4.475-4.473 4.474-11.726.001-16.2zM65.051 42.749l-20.53 20.53a2.546 2.546 0 0 1-3.6 0l-3.27-3.27a2.545 2.545 0 0 0-3.599.001l-.616.616-.002-.002-14.728 14.727c-.337.337-.819.401-1.076.143s-.194-.74.143-1.076l23.841-23.841.004.004 15.633-15.633a2.546 2.546 0 0 1 3.6 0l4.2 4.201a2.546 2.546 0 0 1 0 3.6z" fill="#fff"/></svg>

After

Width:  |  Height:  |  Size: 910 B

View File

@@ -1,3 +0,0 @@
{
"directory": "vendor"
}

View File

@@ -1,124 +0,0 @@
/*
* @copyright Copyright (c) 2016 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 module */
module.exports = function(grunt) {
'use strict';
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-wrap');
grunt.loadNpmTasks('grunt-karma');
grunt.loadNpmTasks('grunt-phpunit');
grunt.initConfig({
meta: {
pkg: grunt.file.readJSON('package.json'),
version: '<%= meta.pkg.version %>',
configJS: 'config/',
buildJS: [
'app/**/*.js',
'controller/**/*.js',
'filters/**/*.js',
'directive/**/*.js',
'service/**/*.js'
],
productionJS: 'public/',
testsJS: '../tests/js/'
},
concat: {
options: {
stripBanners: true
},
dist: {
src: ['<%= meta.buildJS %>'],
dest: '<%= meta.productionJS %>app.js'
}
},
wrap: {
app: {
src: ['<%= meta.productionJS %>app.js'],
dest: '<%= meta.productionJS %>app.js',
option: {
wrapper: [
'(function(angular, $, oc_requesttoken, undefined){\n\n\'use strict\';\n\n',
'\n})(angular, jQuery, oc_requesttoken);'
]
}
}
},
jshint: {
files: [
'Gruntfile.js',
'<%= meta.buildJS %>**/*.js',
'<%= meta.testsJS %>**/*.js'
],
options: {
jshintrc: '.jshintrc',
reporter: require('jshint-stylish')
}
},
watch: {
concat: {
files: ['<%=meta.buildJS%>'],
options: {
livereload: true
},
tasks: ['build']
}
},
phpunit: {
classes: {
dir: '../tests/unit'
},
options: {
bootstrap: '../tests/bootstrap.php',
colors: true
}
},
karma: {
unit: {
configFile: '<%= meta.testsJS %>config/karma.js'
},
continuous: {
configFile: '<%= meta.testsJS %>config/karma.js',
browsers: ['Firefox'],
singleRun: true,
reporters: ['progress']
}
},
});
// make tasks available under simpler commands
grunt.registerTask('build', ['jshint', 'concat', 'wrap']);
grunt.registerTask('js-unit', ['karma:continuous']);
};

View File

@@ -41,13 +41,20 @@ angular.module('markdown', [])
}; };
}]); }]);
import uirouter from '@uirouter/angularjs';
import ngsanitize from 'angular-sanitize';
import angularuiselect from 'ui-select';
import ngsortable from 'ng-sortable';
import md from 'angular-markdown-it';
import nganimate from 'angular-animate';
import 'angular-file-upload';
var app = angular.module('Deck', [ var app = angular.module('Deck', [
'ngRoute', ngsanitize,
'ngSanitize', uirouter,
'ui.router', angularuiselect,
'ui.select', ngsortable, md, nganimate,
'as.sortable', 'angularFileUpload'
'mdMarkdownIt',
'ngAnimate'
]); ]);
export default app;

View File

@@ -22,18 +22,27 @@
/* global app oc_requesttoken markdownitLinkTarget */ /* global app oc_requesttoken markdownitLinkTarget */
app.config(function ($provide, $routeProvider, $interpolateProvider, $httpProvider, $urlRouterProvider, $stateProvider, $compileProvider, markdownItConverterProvider) { import app from './App.js';
import md from 'angular-markdown-it';
import markdownitLinkTarget from 'markdown-it-link-target';
import markdownitCheckbox from 'legacy/markdown-it-checkbox.js';
app.config(function ($provide, $interpolateProvider, $httpProvider, $urlRouterProvider, $stateProvider, $compileProvider, markdownItConverterProvider) {
'use strict'; 'use strict';
$httpProvider.defaults.headers.common.requesttoken = oc_requesttoken; $httpProvider.defaults.headers.common.requesttoken = oc_requesttoken;
$compileProvider.debugInfoEnabled(true); $compileProvider.debugInfoEnabled(true);
// This should fix adding "unsafe:" prefix to ui-select href links containing javascript
// inline JS is blocked by CSP anyway and filtered out by our markdown renderer as well
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|javascript):/);
markdownItConverterProvider.config({ markdownItConverterProvider.config({
breaks: true, breaks: true,
linkify: true, linkify: true,
xhtmlOut: true xhtmlOut: true
}); });
markdownItConverterProvider.use(markdownitLinkTarget); markdownItConverterProvider.use(markdownitLinkTarget).use(markdownitCheckbox);
$urlRouterProvider.otherwise('/'); $urlRouterProvider.otherwise('/');
@@ -62,19 +71,47 @@ app.config(function ($provide, $routeProvider, $interpolateProvider, $httpProvid
tab: {value: 0, dynamic: true}, tab: {value: 0, dynamic: true},
}, },
views: { views: {
'sidebarView': { 'sidebarView@': {
templateUrl: '/board.sidebarView.html' templateUrl: '/board.sidebarView.html',
controller: 'BoardController'
} }
} }
}) })
.state('board.card', { .state('board.card', {
url: '/card/:cardId', url: '/card/:cardId',
params: {
tab: {value: 0, dynamic: true},
},
views: { views: {
'sidebarView': { 'sidebarView@': {
templateUrl: '/card.sidebarView.html', templateUrl: '/card.sidebarView.html',
controller: 'CardController' controller: 'CardController'
} }
} }
}); });
$provide.decorator('nvFileOverDirective', function ($delegate) {
var directive = $delegate[0],
link = directive.link;
directive.compile = function () {
return function (scope, element, attrs) {
var overClass = attrs.overClass || 'nv-file-over';
link.apply(this, arguments);
let counter = 0;
element.on('dragenter', function (event) {
counter++;
});
element.on('dragleave', function (event) {
counter--;
if (counter <= 0) {
$('.' + overClass).removeClass(overClass);
}
});
};
};
return $delegate;
});
}); });

View File

@@ -19,10 +19,12 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from './App.js';
/* global Snap */ /* global Snap */
app.run(function ($document, $rootScope, $transitions, BoardService) { app.run(function ($document, $rootScope, $transitions, BoardService) {
'use strict'; 'use strict';
$document.click(function (event) { $document.click(function (event) {
$rootScope.$broadcast('documentClicked', event); $rootScope.$broadcast('documentClicked', event);
}); });
@@ -54,26 +56,6 @@ app.run(function ($document, $rootScope, $transitions, BoardService) {
OC.filePath('deck', 'img', 'app-512.png') 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 // Select all elements with data-toggle="tooltips" in the document
$('body').tooltip({ $('body').tooltip({
selector: '[data-toggle="tooltip"]' selector: '[data-toggle="tooltip"]'

View File

@@ -1,29 +0,0 @@
{
"name": "deck",
"version": "0.0.1",
"dependencies": {
"angular": "~1.6.1",
"angular-route": "~1.6.1",
"angular-mocks": "~1.6.1",
"angular-sanitize": "~1.6.1",
"angular-animate": "~1.6.1",
"ng-sortable": "1.3.8",
"jquery": "3.2.x",
"es6-shim": "~0.*",
"js-url": "~2.*",
"angular-ui-select": "~0.19.6",
"angular-markdown-it": "~0.6.1",
"angular-ui-router": "~1.0.0",
"markdown-it-link-target": "~1.0.1",
"jquery-timepicker": "883bb2cd94"
},
"license": "AGPL-3.0",
"private": true,
"ignore": [
"'**/.*",
"node_modules",
"bower_components",
"test",
"tests"
]
}

View File

@@ -20,11 +20,23 @@
* *
*/ */
import app from '../app/App.js';
/** global: OC */ /** global: OC */
app.controller('AppController', function ($scope, $location, $http, $route, $log, $rootScope) { app.controller('AppController', function ($scope, $location, $http, $log, $rootScope, $attrs) {
$rootScope.sidebar = { $rootScope.sidebar = {
show: false show: false
}; };
$scope.sidebar = $rootScope.sidebar; $scope.sidebar = $rootScope.sidebar;
$scope.user = oc_current_user; $scope.user = oc_current_user;
$rootScope.config = JSON.parse($attrs.config);
$scope.appNavigationHide = false;
$scope.toggleSidebar = function() {
if ($(window).width() > 768) {
$scope.appNavigationHide = !$scope.appNavigationHide;
console.log($scope.appNavigationHide);
}
};
}); });

View File

@@ -0,0 +1,78 @@
/*
* @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 */
class AttachmentListController {
constructor ($scope, CardService, FileService) {
'ngInject';
this.cardservice = CardService;
this.fileservice = FileService;
this.attachments = CardService.getCurrent().attachments;
}
mimetypeForAttachment(attachment) {
let url = OC.MimeType.getIconUrl(attachment.extendedData.mimetype);
let styles = {
'background-image': `url("${url}")`,
};
return styles;
}
attachmentUrl(attachment) {
let cardId = this.cardservice.getCurrent().id;
let attachmentId = attachment.id;
return OC.generateUrl(`/apps/deck/cards/${cardId}/attachment/${attachmentId}`);
}
getAttachmentMarkdown(attachment) {
const inlineMimetypes = ['image/png', 'image/jpg', 'image/jpeg'];
let url = this.attachmentUrl(attachment);
let filename = attachment.data;
let insertText = `[📎 ${filename}](${url})`;
if (inlineMimetypes.indexOf(attachment.extendedData.mimetype) > -1) {
insertText = `![📎 ${filename}](${url})`;
}
return insertText;
}
select(attachment) {
this.onSelect({attachment: this.getAttachmentMarkdown(attachment)});
}
abort() {
this.onAbort();
}
}
let attachmentListComponent = {
templateUrl: '/card.attachments.html',
controller: AttachmentListController,
bindings: {
isFileSelector: '<',
attachments: '=',
onSelect: '&',
onAbort: '&'
}
};
export default attachmentListComponent;

View File

@@ -20,8 +20,9 @@
* *
*/ */
import app from '../app/App.js';
/* global oc_defaults OC */ /* global oc_defaults OC */
app.controller('BoardController', function ($rootScope, $scope, $stateParams, StatusService, BoardService, StackService, CardService, LabelService, $state, $transitions, $filter) { app.controller('BoardController', function ($rootScope, $scope, $stateParams, StatusService, BoardService, StackService, CardService, LabelService, $state, $transitions, $filter, FileService) {
$scope.sidebar = $rootScope.sidebar; $scope.sidebar = $rootScope.sidebar;
@@ -39,6 +40,7 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
$scope.labelservice = LabelService; $scope.labelservice = LabelService;
$scope.defaultColors = ['31CC7C', '317CCC', 'FF7A66', 'F1DB50', '7C31CC', 'CC317C', '3A3B3D', 'CACBCD']; $scope.defaultColors = ['31CC7C', '317CCC', 'FF7A66', 'F1DB50', '7C31CC', 'CC317C', '3A3B3D', 'CACBCD'];
$scope.board = BoardService.getCurrent(); $scope.board = BoardService.getCurrent();
$scope.uploader = FileService.uploader;
// workaround for $stateParams changes not being propagated // workaround for $stateParams changes not being propagated
$scope.$watch(function() { $scope.$watch(function() {
@@ -46,8 +48,24 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
}, function (params) { }, function (params) {
$scope.params = params; $scope.params = params;
}, true); }, true);
$scope.params = $state; $scope.params = $state.params;
/**
* Check for markdown checkboxes in description to render the counter
*
* This should probably be moved to the backend at some point
*
* @param text
* @returns array of [finished, total] checkboxes
*/
$scope.getCheckboxes = function(text) {
const regTotal = /\[(X|\s|\_|\-)\]\s(.*)/ig;
const regFinished = /\[(X|\_|\-)\]\s(.*)/ig;
return [
((text || '').match(regFinished) || []).length,
((text || '').match(regTotal) || []).length
];
};
$scope.search = function (searchText) { $scope.search = function (searchText) {
$scope.searchText = searchText; $scope.searchText = searchText;
@@ -152,7 +170,7 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
// Create a new Stack // Create a new Stack
$scope.createStack = function () { $scope.createStack = function () {
StackService.create($scope.newStack).then(function (data) { StackService.create($scope.newStack).then(function (data) {
$scope.newStack.title = ""; $scope.newStack.title = '';
}); });
}; };
@@ -164,18 +182,47 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
}; };
CardService.create(newCard).then(function (data) { CardService.create(newCard).then(function (data) {
$scope.stackservice.addCard(data); $scope.stackservice.addCard(data);
$scope.newCard.title = ""; $scope.newCard.title = '';
}); });
}; };
$scope.cardDelete = function (card) { $scope.cardDelete = function (card) {
CardService.delete(card.id); OC.dialogs.confirm(t('deck', 'Are you sure you want to delete this card with all of its data?'), t('deck', 'Delete'), function(state) {
StackService.removeCard(card); if (!state) {
return;
}
CardService.delete(card.id).then(function () {
StackService.removeCard(card);
});
});
}; };
$scope.cardArchive = function (card) { $scope.cardArchive = function (card) {
CardService.archive(card); CardService.archive(card);
StackService.removeCard(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) { $scope.cardUnarchive = function (card) {
CardService.unarchive(card); CardService.unarchive(card);
StackService.removeCard(card); StackService.removeCard(card);
@@ -191,7 +238,7 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
$scope.labelCreate = function (label) { $scope.labelCreate = function (label) {
label.boardId = $scope.id; label.boardId = $scope.id;
LabelService.create(label).then(function (data) { LabelService.create(label).then(function (data) {
$scope.newStack.title = ""; $scope.newStack.title = '';
BoardService.getCurrent().labels.push(data); BoardService.getCurrent().labels.push(data);
$scope.status.createLabel = false; $scope.status.createLabel = false;
$scope.newLabel = {}; $scope.newLabel = {};
@@ -208,7 +255,10 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
$scope.status.addSharee = null; $scope.status.addSharee = null;
}; };
$scope.aclDelete = function (acl) { $scope.aclDelete = function (acl) {
BoardService.deleteAcl(acl); BoardService.deleteAcl(acl).then(function(data) {
$scope.loadDefault();
$scope.refreshData();
});
}; };
$scope.aclUpdate = function (acl) { $scope.aclUpdate = function (acl) {
BoardService.updateAcl(acl); BoardService.updateAcl(acl);
@@ -264,7 +314,7 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
// auto scroll on drag // auto scroll on drag
dragMove: function (itemPosition, containment, eventObj) { dragMove: function (itemPosition, containment, eventObj) {
if (eventObj) { if (eventObj) {
var container = $("#board"); var container = $('#board');
var offset = container.offset(); var offset = container.offset();
var targetX = eventObj.pageX - (offset.left || container.scrollLeft()); var targetX = eventObj.pageX - (offset.left || container.scrollLeft());
var targetY = eventObj.pageY - (offset.top || container.scrollTop()); var targetY = eventObj.pageY - (offset.top || container.scrollTop());
@@ -299,7 +349,7 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
containment: '#innerBoard', containment: '#innerBoard',
dragMove: function (itemPosition, containment, eventObj) { dragMove: function (itemPosition, containment, eventObj) {
if (eventObj) { if (eventObj) {
var container = $("#board"); var container = $('#board');
var offset = container.offset(); var offset = container.offset();
var targetX = eventObj.pageX - (offset.left || container.scrollLeft()); var targetX = eventObj.pageX - (offset.left || container.scrollLeft());
var targetY = eventObj.pageY - (offset.top || container.scrollTop()); var targetY = eventObj.pageY - (offset.top || container.scrollTop());
@@ -327,4 +377,11 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
}; };
}; };
$scope.attachmentCount = function(card) {
if (Array.isArray(card.attachments)) {
return card.attachments.filter((obj) => obj.deletedAt === 0).length;
}
return card.attachmentCount;
};
}); });

View File

@@ -20,9 +20,10 @@
* *
*/ */
/* global app moment */ /* global app moment angular OC */
import app from '../app/App.js';
app.controller('CardController', function ($scope, $rootScope, $routeParams, $location, $stateParams, $interval, $timeout, $filter, BoardService, CardService, StackService, StatusService) { app.controller('CardController', function ($scope, $rootScope, $sce, $location, $stateParams, $state, $interval, $timeout, $filter, BoardService, CardService, StackService, StatusService, markdownItConverter, FileService) {
$scope.sidebar = $rootScope.sidebar; $scope.sidebar = $rootScope.sidebar;
$scope.status = { $scope.status = {
lastEdit: 0, lastEdit: 0,
@@ -30,16 +31,60 @@ app.controller('CardController', function ($scope, $rootScope, $routeParams, $lo
}; };
$scope.cardservice = CardService; $scope.cardservice = CardService;
$scope.fileservice = FileService;
$scope.cardId = $stateParams.cardId; $scope.cardId = $stateParams.cardId;
$scope.statusservice = StatusService.getInstance(); $scope.statusservice = StatusService.getInstance();
$scope.boardservice = BoardService; $scope.boardservice = BoardService;
$scope.isArray = angular.isArray;
// workaround for $stateParams changes not being propagated
$scope.$watch(function() {
return $state.params;
}, function (params) {
$scope.params = params;
$scope.fileservice.reset();
}, true);
$scope.params = $state.params;
$scope.addAttachmentToDescription = function(insertText) {
let el = document.querySelectorAll('textarea')[0];
let start = el.selectionStart;
let end = el.selectionEnd;
let text = $scope.status.edit.description || '';
let before = text.substring(0, start);
let after = text.substring(end, text.length);
let newText = before + '\n' + insertText + '\n' + after;
$scope.status.edit.description = newText;
el.selectionStart = el.selectionEnd = start + newText.length;
el.focus();
$scope.status.continueEdit = false;
$scope.cardEditDescriptionChanged();
$scope.status.selectAttachment = false;
};
$scope.abortAttachmentSelection = function() {
$scope.status.continueEdit = false;
$scope.status.selectAttachment = false;
let el = document.querySelectorAll('textarea')[0];
el.focus();
};
$scope.statusservice.retainWaiting(); $scope.statusservice.retainWaiting();
$scope.description = function() {
return $scope.rendered;
};
$scope.updateMarkdown = function(content) {
// only trust the html from markdown-it-checkbox
$scope.rendered = $sce.trustAsHtml(markdownItConverter.render(content || ''));
};
CardService.fetchOne($scope.cardId).then(function (data) { CardService.fetchOne($scope.cardId).then(function (data) {
$scope.statusservice.releaseWaiting(); $scope.statusservice.releaseWaiting();
$scope.archived = CardService.getCurrent().archived; $scope.archived = CardService.getCurrent().archived;
$scope.updateMarkdown(CardService.getCurrent().description);
}, function (error) { }, function (error) {
}); });
@@ -50,7 +95,43 @@ app.controller('CardController', function ($scope, $rootScope, $routeParams, $lo
$scope.status.cardRename = true; $scope.status.cardRename = true;
} }
}; };
$scope.cardEditDescriptionShow = function ($event) {
$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 nth = 0;
$scope.status.edit.description = $scope.status.edit.description.replace(reg, function (match, i, original) {
var result = match;
if (nth++ === id) {
if (match.match(/^\[\s\]/i)) {
result = match.replace(/\[\s\]/i, '[x]');
}
if (match.match(/^\[x\]/i)) {
result = match.replace(/\[x\]/i, '[ ]');
}
return result;
}
return match;
});
CardService.update($scope.status.edit).then(function (data) {
var header = $('.section-header-tabbed .tabDetails');
header.find('.save-indicator.unsaved').hide();
header.find('.save-indicator.saved').fadeIn(250).fadeOut(1000);
});
$('#markdown input[type=checkbox]').removeAttr('disabled');
};
$scope.clickCardDescription = function ($event) {
var checkboxId = $($event.target).data('id');
if ($event.target.tagName === 'LABEL') {
$scope.toggleCheckbox(checkboxId);
return;
}
if ($event.target.tagName === 'INPUT') {
$scope.toggleCheckbox(checkboxId);
return;
}
if (BoardService.isArchived() || CardService.getCurrent().archived) { if (BoardService.isArchived() || CardService.getCurrent().archived) {
return false; return false;
} }
@@ -63,51 +144,50 @@ app.controller('CardController', function ($scope, $rootScope, $routeParams, $lo
}; };
$scope.cardEditDescriptionChanged = function ($event) { $scope.cardEditDescriptionChanged = function ($event) {
$scope.status.lastEdit = Date.now(); $scope.status.lastEdit = Date.now();
var header = $('.section-header.card-description'); var header = $('.section-header-tabbed .tabDetails');
header.find('.save-indicator.unsaved').show(); header.find('.save-indicator.unsaved').show();
header.find('.save-indicator.saved').hide(); header.find('.save-indicator.saved').hide();
}; };
$interval(function() { $interval(function() {
var currentTime = Date.now(); var currentTime = Date.now();
var timeSinceEdit = currentTime-$scope.status.lastEdit; var timeSinceEdit = currentTime-$scope.status.lastEdit;
if (timeSinceEdit > 1000 && $scope.status.lastEdit > $scope.status.lastSave) { if (timeSinceEdit > 1000 && $scope.status.lastEdit > $scope.status.lastSave && !$scope.status.saving) {
$scope.status.lastSave = currentTime; $scope.status.lastSave = currentTime;
var header = $('.section-header.card-description'); $scope.status.saving = true;
var header = $('.section-header-tabbed .tabDetails');
header.find('.save-indicator.unsaved').fadeIn(500); header.find('.save-indicator.unsaved').fadeIn(500);
CardService.update($scope.status.edit).then(function (data) { CardService.update($scope.status.edit).then(function (data) {
var header = $('.section-header.card-description'); var header = $('.section-header-tabbed .tabDetails');
header.find('.save-indicator.unsaved').hide(); header.find('.save-indicator.unsaved').hide();
header.find('.save-indicator.saved').fadeIn(250).fadeOut(1000); header.find('.save-indicator.saved').fadeIn(250).fadeOut(1000);
$scope.status.saving = false;
}); });
} }
}, 500); }, 500, 0, false);
// handle rename to update information on the board as well // handle rename to update information on the board as well
$scope.cardRename = function (card) { $scope.cardRename = function (card) {
CardService.rename(card).then(function (data) { CardService.rename(card).then(function (data) {
StackService.updateCard(card);
$scope.status.renameCard = false; $scope.status.renameCard = false;
}); });
}; };
$scope.cardUpdate = function (card) { $scope.cardUpdate = function (card) {
CardService.update(card).then(function (data) { CardService.update(card).then(function (data) {
$scope.status.cardEditDescription = false; $scope.status.cardEditDescription = false;
var header = $('.section-content.card-description'); $scope.updateMarkdown($scope.status.edit.description);
var header = $('.section-header-tabbed .tabDetails');
header.find('.save-indicator.unsaved').hide(); header.find('.save-indicator.unsaved').hide();
header.find('.save-indicator.saved').fadeIn(500).fadeOut(1000); header.find('.save-indicator.saved').fadeIn(500).fadeOut(1000);
StackService.updateCard(card);
}); });
}; };
$scope.labelAssign = function (element, model) { $scope.labelAssign = function (element, model) {
CardService.assignLabel($scope.cardId, element.id).then(function (data) { CardService.assignLabel($scope.cardId, element.id).then(function (data) {
StackService.updateCard(CardService.getCurrent());
}); });
}; };
$scope.labelRemove = function (element, model) { $scope.labelRemove = function (element, model) {
CardService.removeLabel($scope.cardId, element.id).then(function (data) { CardService.removeLabel($scope.cardId, element.id).then(function (data) {
StackService.updateCard(CardService.getCurrent());
}); });
}; };
@@ -122,7 +202,6 @@ app.controller('CardController', function ($scope, $rootScope, $routeParams, $lo
newDate.year(duedate.year()); newDate.year(duedate.year());
element.duedate = newDate.toISOString(); element.duedate = newDate.toISOString();
CardService.update(element); CardService.update(element);
StackService.updateCard(element);
}; };
$scope.setDuedateTime = function (time) { $scope.setDuedateTime = function (time) {
var element = CardService.getCurrent(); var element = CardService.getCurrent();
@@ -134,45 +213,41 @@ app.controller('CardController', function ($scope, $rootScope, $routeParams, $lo
newDate.minute(time.minute()); newDate.minute(time.minute());
element.duedate = newDate.toISOString(); element.duedate = newDate.toISOString();
CardService.update(element); CardService.update(element);
StackService.updateCard(element);
}; };
$scope.resetDuedate = function () { $scope.resetDuedate = function () {
var element = CardService.getCurrent(); var element = CardService.getCurrent();
element.duedate = null; element.duedate = null;
CardService.update(element); CardService.update(element);
StackService.updateCard(element);
}; };
/** /**
* Show ui-select field when clicking the add button * Show ui-select field when clicking the add button
*/ */
$scope.showAssignUser = function() { $scope.toggleAssignUser = function() {
$scope.status.showAssignUser = true; $scope.status.showAssignUser = !$scope.status.showAssignUser;
$timeout(function() { if ($scope.status.showAssignUser === true) {
$('#assignUserSelect').find('a').click(); $timeout(function () {
}); $('#assignUserSelect').find('a').click();
});
}
}; };
/** /**
* Hide ui-select when select list is closed * Hide ui-select when select list is closed
*/ */
$scope.assingUserOpenClose = function(isOpen) { $scope.assingUserOpenClose = function(isOpen) {
if (!isOpen) { $scope.status.showAssignUser = isOpen;
$scope.status.showAssignUser = false;
}
}; };
$scope.addAssignedUser = function(item) { $scope.addAssignedUser = function(item) {
CardService.assignUser(CardService.getCurrent(), item.uid).then(function (data) { CardService.assignUser(CardService.getCurrent(), item.uid).then(function (data) {
StackService.updateCard(CardService.getCurrent());
}); });
$scope.status.showAssignUser = false; $scope.status.showAssignUser = false;
}; };
$scope.removeAssignedUser = function(uid) { $scope.removeAssignedUser = function(uid) {
CardService.unassignUser(CardService.getCurrent(), uid).then(function (data) { CardService.unassignUser(CardService.getCurrent(), uid).then(function (data) {
StackService.updateCard(CardService.getCurrent());
}); });
}; };

View File

@@ -0,0 +1,44 @@
/*
* @copyright Copyright (c) 2018 Oskar Kurz <oskar.kurz@gmail.com>
*
* @author Oskar Kurz <oskar.kurz@gmail.com>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
import app from '../app/App.js';
/* global oc_defaults OC */
app.controller('ColorPickerController', ['$scope', function ($scope) {
$scope.hashedColor = '';
$scope.setColor = function (object, color) {
object.color = color;
object.hashedColor = '#' + color;
return object;
};
$scope.setHashedColor = function (object) {
object.color = object.hashedColor.substr(1);
return object;
};
$scope.getCustomBackground = function (color) {
return {'background-color': color};
};
}]);

View File

@@ -22,7 +22,7 @@
/* global app angular */ /* global app angular */
app.controller('ListController', function ($scope, $location, $filter, BoardService, $element, $timeout, $stateParams, $state, StatusService) { var ListController = function ($scope, $location, $filter, BoardService, $element, $timeout, $stateParams, $state, StatusService) {
function calculateNewColor() { function calculateNewColor() {
var boards = BoardService.getAll(); var boards = BoardService.getAll();
@@ -193,5 +193,6 @@ app.controller('ListController', function ($scope, $location, $filter, BoardServ
}); });
}; };
}); };
export default ListController;

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
app.directive('appPopoverMenuUtils', function () { app.directive('appPopoverMenuUtils', function () {
'use strict'; 'use strict';

View File

@@ -20,6 +20,7 @@
* *
*/ */
import app from '../app/App.js';
// OwnCloud Click Handling // OwnCloud Click Handling
// https://doc.owncloud.org/server/8.0/developer_manual/app/css.html // https://doc.owncloud.org/server/8.0/developer_manual/app/css.html
app.directive('appNavigationEntryUtils', function () { app.directive('appNavigationEntryUtils', function () {

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
app.directive('autofocusOnInsert', function () { app.directive('autofocusOnInsert', function () {
'use strict'; 'use strict';

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
app.directive('avatar', function() { app.directive('avatar', function() {
'use strict'; 'use strict';

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
app.directive('contactsmenudelete', function() { app.directive('contactsmenudelete', function() {
'use strict'; 'use strict';

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
/* global app */ /* global app */
/* gloabl t */ /* gloabl t */

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
// original idea from blockloop: http://stackoverflow.com/a/24090733 // original idea from blockloop: http://stackoverflow.com/a/24090733
app.directive('elastic', [ app.directive('elastic', [

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
app.directive('search', function ($document, $location) { app.directive('search', function ($document, $location) {
'use strict'; 'use strict';

View File

@@ -19,6 +19,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
import '../legacy/jquery.ui.timepicker.js';
import 'legacy/jquery.ui.timepicker.css';
/* global app */ /* global app */
/* global t */ /* global t */
@@ -29,7 +32,7 @@ app.directive('timepicker', function() {
return { return {
restrict: 'A', restrict: 'A',
link: function(scope, elm, attr) { link: function(scope, elm, attr) {
return elm.timepicker({ return $(elm).timepicker({
onSelect: function(date, inst) { onSelect: function(date, inst) {
scope.setDuedateTime(moment('2000-01-01 ' + date)); scope.setDuedateTime(moment('2000-01-01 ' + date));
scope.$apply(); scope.$apply();

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
app.filter('boardFilterAcl', function() { app.filter('boardFilterAcl', function() {
return function(boards) { return function(boards) {

37
js/filters/bytesFilter.js Normal file
View File

@@ -0,0 +1,37 @@
/*
* @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.filter('bytes', function () {
return function (bytes, precision) {
if (isNaN(parseFloat(bytes, 10)) || !isFinite(bytes)) {
return '-';
}
if (typeof precision === 'undefined') {
precision = 2;
}
var units = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB'],
number = Math.floor(Math.log(bytes) / Math.log(1024));
return (bytes / Math.pow(1024, Math.floor(number))).toFixed(precision) + ' ' + units[number];
};
});

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
// usage | cardFilter({ member: 'admin'}) // usage | cardFilter({ member: 'admin'})

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
app.filter('cardSearchFilter', function() { app.filter('cardSearchFilter', function() {
return function(cards, searchString) { return function(cards, searchString) {

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
/* global app */ /* global app */
/* global OC */ /* global OC */

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
app.filter('iconWhiteFilter', function () { app.filter('iconWhiteFilter', function () {
return function (hex) { return function (hex) {
@@ -31,7 +32,7 @@ app.filter('iconWhiteFilter', function () {
b: parseInt(result[3], 16) b: parseInt(result[3], 16)
} : null; } : null;
if (result === null) { if (result === null) {
return ""; return '';
} }
var r = color.r / 255; var r = color.r / 255;
var g = color.g / 255; var g = color.g / 255;
@@ -58,9 +59,9 @@ app.filter('iconWhiteFilter', function () {
h /= 6; h /= 6;
} }
if (l < 0.5) { if (l < 0.5) {
return "-white"; return '-white';
} else { } else {
return ""; return '';
} }
}; };
}); });

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
app.filter('lightenColorFilter', function() { app.filter('lightenColorFilter', function() {
return function (hex) { return function (hex) {
@@ -29,9 +30,9 @@ app.filter('lightenColorFilter', function() {
b: parseInt(result[3], 16) b: parseInt(result[3], 16)
} : null; } : null;
if (result !== null) { if (result !== null) {
return "rgba(" + color.r + "," + color.g + "," + color.b + ",0.7)"; return 'rgba(' + color.r + ',' + color.g + ',' + color.b + ',0.7)';
} else { } else {
return "#" + hex; return '#' + hex;
} }
}; };
}); });

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
app.filter('orderObjectBy', function(){ app.filter('orderObjectBy', function(){
return function(input, attribute) { return function(input, attribute) {

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
app.filter('textColorFilter', function () { app.filter('textColorFilter', function () {
return function (hex) { return function (hex) {
@@ -56,12 +57,12 @@ app.filter('textColorFilter', function () {
h /= 6; h /= 6;
} }
if (l < 0.5) { if (l < 0.5) {
return "#ffffff"; return '#ffffff';
} else { } else {
return "#000000"; return '#000000';
} }
} else { } else {
return "#000000"; return '#000000';
} }
}; };

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
/* global app */ /* global app */
/* global angular */ /* global angular */

28
js/init.js Normal file
View File

@@ -0,0 +1,28 @@
'use strict';
// used for building a vendor stylesheet
import 'ng-sortable/dist/ng-sortable.css';
import angular from 'angular';
import markdownit from 'markdown-it';
global.markdownit = markdownit;
import app from './app/App.js';
import './app/Config.js';
import './app/Run.js';
import ListController from 'controller/ListController.js';
import attachmentListComponent from './controller/AttachmentController.js';
app.controller('ListController', ListController);
app.component('attachmentListComponent', attachmentListComponent);
// require all the js files from subdirectories
var context = require.context('.', true, /(controller|service|filters|directive)\/(.*)\.js$/);
context.keys().forEach(function (key) {
context(key);
});

57
js/legacy/jquery.ui.timepicker.css vendored Normal file
View File

@@ -0,0 +1,57 @@
/*
* Timepicker stylesheet
* Highly inspired from datepicker
* FG - Nov 2010 - Web3R
*
* version 0.0.3 : Fixed some settings, more dynamic
* version 0.0.4 : Removed width:100% on tables
* version 0.1.1 : set width 0 on tables to fix an ie6 bug
*/
.ui-timepicker-inline { display: inline; }
#ui-timepicker-div { padding: 0.2em; }
.ui-timepicker-table { display: inline-table; width: 0; }
.ui-timepicker-table table { margin:0.15em 0 0 0; border-collapse: collapse; }
.ui-timepicker-hours, .ui-timepicker-minutes { padding: 0.2em; }
.ui-timepicker-table .ui-timepicker-title { line-height: 1.8em; text-align: center; }
.ui-timepicker-table td { padding: 0.1em; width: 2.2em; }
.ui-timepicker-table th.periods { padding: 0.1em; width: 2.2em; }
/* span for disabled cells */
.ui-timepicker-table td span {
display:block;
padding:0.2em 0.3em 0.2em 0.5em;
width: 1.2em;
text-align:right;
text-decoration:none;
}
/* anchors for clickable cells */
.ui-timepicker-table td a {
display:block;
padding:0.2em 0.3em 0.2em 0.5em;
width: 1.2em;
cursor: pointer;
text-align:right;
text-decoration:none;
}
/* buttons and button pane styling */
.ui-timepicker .ui-timepicker-buttonpane {
background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0;
}
.ui-timepicker .ui-timepicker-buttonpane button { margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
/* The close button */
.ui-timepicker .ui-timepicker-close { float: right }
/* the now button */
.ui-timepicker .ui-timepicker-now { float: left; }
/* the deselect button */
.ui-timepicker .ui-timepicker-deselect { float: left; }

1496
js/legacy/jquery.ui.timepicker.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,114 @@
/**
* Original source code from https://github.com/mcecot/markdown-it-checkbox
* © 2015 Markus Cecot
* licenced under MIT
* https://github.com/mcecot/markdown-it-checkbox/blob/master/LICENSE
*/
var checkboxReplace;
checkboxReplace = function(md, options, Token) {
"use strict";
var arrayReplaceAt, createTokens, defaults, lastId, pattern, splitTextToken;
arrayReplaceAt = md.utils.arrayReplaceAt;
lastId = 0;
defaults = {
divWrap: false,
divClass: 'checkbox',
idPrefix: 'checkbox'
};
options = Object.assign(defaults, options);
pattern = /\[(X|\s|\_|\-)\]\s(.*)/i;
createTokens = function(checked, label, Token) {
var id, idNumeric, nodes, token;
nodes = [];
/**
* <div class="checkbox">
*/
if (options.divWrap) {
token = new Token("checkbox_open", "div", 1);
token.attrs = [["class", options.divClass]];
nodes.push(token);
}
/**
* <input type="checkbox" id="checkbox{n}" checked="true">
*/
id = options.idPrefix + lastId;
idNumeric = lastId;
lastId += 1;
token = new Token("checkbox_input", "input", 0);
token.attrs = [["type", "checkbox"], ["id", id], ["data-id", idNumeric]];
if (checked === true) {
token.attrs.push(["checked", "true"]);
}
nodes.push(token);
/**
* <label for="checkbox{n}">
*/
token = new Token("label_open", "label", 1);
token.attrs = [["for", id], ["data-id", idNumeric]];
nodes.push(token);
/**
* content of label tag
*/
token = new Token("text", "", 0);
token.content = label;
nodes.push(token);
/**
* closing tags
*/
nodes.push(new Token("label_close", "label", -1));
if (options.divWrap) {
nodes.push(new Token("checkbox_close", "div", -1));
}
return nodes;
};
splitTextToken = function(original, Token) {
var checked, label, matches, text, value;
text = original.content;
matches = text.match(pattern);
if (matches === null) {
return original;
}
checked = false;
value = matches[1];
label = matches[2];
if (value === "X" || value === "x") {
checked = true;
}
return createTokens(checked, label, Token);
};
return function(state) {
lastId = 0;
var blockTokens, i, j, l, token, tokens;
blockTokens = state.tokens;
j = 0;
l = blockTokens.length;
while (j < l) {
if (blockTokens[j].type !== "inline") {
j++;
continue;
}
tokens = blockTokens[j].children;
i = tokens.length - 1;
while (i >= 0) {
token = tokens[i];
blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, splitTextToken(token, state.Token));
i--;
}
j++;
}
};
};
/*global module */
module.exports = function(md, options) {
"use strict";
md.core.ruler.push("checkbox", checkboxReplace(md, options));
};

8969
js/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,29 +1,44 @@
{ {
"name": "deck", "name": "deck",
"description": "Frontend for the Nextcloud Deck app",
"repository": "https://github.com/nextcloud/deck",
"version": "1.0.0", "version": "1.0.0",
"main": "Gruntfile.js", "main": "Gruntfile.js",
"directories": { "directories": {
"test": "tests" "test": "tests"
}, },
"dependencies": {}, "dependencies": {
"@uirouter/angularjs": "^1.0.19",
"angular": "^1.7.2",
"angular-animate": "^1.7.2",
"angular-file-upload": "^2.5.0",
"angular-markdown-it": "^0.6.1",
"angular-sanitize": "^1.7.2",
"babel-polyfill": "^6.26.0",
"markdown-it": "^8.4.2",
"markdown-it-link-target": "^1.0.2",
"ng-sortable": "^1.3.8",
"ui-select": "^0.19.8"
},
"devDependencies": { "devDependencies": {
"bower": "^1.8.0", "babel-core": "^6.26.0",
"grunt": "^1.0.1", "babel-loader": "^7.1.5",
"grunt-contrib-concat": "^1.0.1", "babel-preset-env": "^1.7.0",
"grunt-contrib-jshint": "^1.1.0", "css-loader": "^1.0.0",
"grunt-contrib-watch": "^1.0.0", "karma": "^2.0.4",
"grunt-karma": "^2.0.0", "mini-css-extract-plugin": "^0.4.1",
"grunt-phpunit": "^0.3.6", "node-sass": "^4.9.2",
"grunt-wrap": "^0.3.0", "webpack": "^4.16.1",
"jshint-stylish": "^2.2.1", "webpack-cli": "^3.1.0",
"karma": "^1.4.1", "webpack-merge": "^4.1.3"
"node-sass": "^4.5.3"
}, },
"scripts": { "scripts": {
"build": "./node_modules/webpack-cli/bin/cli.js --mode production --config webpack.prod.config.js",
"dev": "./node_modules/webpack-cli/bin/cli.js --mode development --config webpack.dev.config.js",
"watch": "./node_modules/webpack-cli/bin/cli.js --mode development --config webpack.dev.config.js --watch",
"test": "echo \"Warning: no test specified\" && exit 0" "test": "echo \"Warning: no test specified\" && exit 0"
}, },
"author": "", "author": "",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"keywords": [], "keywords": []
"description": ""
} }

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
/** global: oc_defaults */ /** global: oc_defaults */
app.factory('ApiService', function ($http, $q) { app.factory('ApiService', function ($http, $q) {
@@ -124,7 +125,9 @@ app.factory('ApiService', function ($http, $q) {
this.data[entity.id] = entity; this.data[entity.id] = entity;
} else { } else {
Object.keys(entity).forEach(function (key) { Object.keys(entity).forEach(function (key) {
element[key] = entity[key]; if (entity[key] !== null && element[key] !== entity[key]) {
element[key] = entity[key];
}
}); });
element.status = {}; element.status = {};
} }
@@ -160,10 +163,14 @@ app.factory('ApiService', function ($http, $q) {
return this.data; return this.data;
}; };
ApiService.prototype.get = function (id) {
return this.data[id];
};
ApiService.prototype.getName = function () { ApiService.prototype.getName = function () {
var funcNameRegex = /function (.{1,})\(/; var funcNameRegex = /function (.{1,})\(/;
var results = (funcNameRegex).exec((this).constructor.toString()); var results = (funcNameRegex).exec((this).constructor.toString());
return (results && results.length > 1) ? results[1] : ""; return (results && results.length > 1) ? results[1] : '';
}; };
return ApiService; return ApiService;

View File

@@ -19,7 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
/* global app OC */ /* global app OC */
app.factory('BoardService', function (ApiService, $http, $q) { app.factory('BoardService', function (ApiService, $http, $q) {
var BoardService = function ($http, ep, $q) { var BoardService = function ($http, ep, $q) {
@@ -77,8 +77,8 @@ app.factory('BoardService', function (ApiService, $http, $q) {
} }
self.sharees = []; self.sharees = [];
var users = response.ocs.data.exact.users.concat(response.ocs.data.users); var users = response.ocs.data.exact.users.concat(response.ocs.data.users.slice(0, 4));
var groups = response.ocs.data.exact.groups.concat(response.ocs.data.groups); var groups = response.ocs.data.exact.groups.concat(response.ocs.data.groups.slice(0, 4));
// filter out everyone who is already in the share list // filter out everyone who is already in the share list
angular.forEach(users, function (item) { angular.forEach(users, function (item) {
@@ -141,6 +141,11 @@ app.factory('BoardService', function (ApiService, $http, $q) {
board.acl = {}; board.acl = {};
} }
board.acl[response.data.id] = response.data; board.acl[response.data.id] = response.data;
if (response.data.type === OC.Share.SHARE_TYPE_USER) {
self._updateUsers();
} else {
self.fetchOne(response.data.boardId);
}
deferred.resolve(response.data); deferred.resolve(response.data);
}, function (error) { }, function (error) {
deferred.reject('Error creating ACL ' + _acl); deferred.reject('Error creating ACL ' + _acl);
@@ -155,6 +160,11 @@ app.factory('BoardService', function (ApiService, $http, $q) {
var self = this; var self = this;
$http.delete(this.baseUrl + '/' + acl.boardId + '/acl/' + acl.id).then(function (response) { $http.delete(this.baseUrl + '/' + acl.boardId + '/acl/' + acl.id).then(function (response) {
delete board.acl[response.data.id]; delete board.acl[response.data.id];
if (response.data.type === OC.Share.SHARE_TYPE_USER) {
self._updateUsers();
} else {
self.fetchOne(response.data.boardId);
}
deferred.resolve(response.data); deferred.resolve(response.data);
}, function (error) { }, function (error) {
deferred.reject('Error deleting ACL ' + acl.id); deferred.reject('Error deleting ACL ' + acl.id);
@@ -170,6 +180,11 @@ app.factory('BoardService', function (ApiService, $http, $q) {
var _acl = acl; var _acl = acl;
$http.put(this.baseUrl + '/' + acl.boardId + '/acl', _acl).then(function (response) { $http.put(this.baseUrl + '/' + acl.boardId + '/acl', _acl).then(function (response) {
board.acl[_acl.id] = response.data; board.acl[_acl.id] = response.data;
if (response.data.type === OC.Share.SHARE_TYPE_USER) {
self._updateUsers();
} else {
self.fetchOne(response.data.boardId);
}
deferred.resolve(response.data); deferred.resolve(response.data);
}, function (error) { }, function (error) {
deferred.reject('Error updating ACL ' + _acl); deferred.reject('Error updating ACL ' + _acl);
@@ -178,6 +193,27 @@ app.factory('BoardService', function (ApiService, $http, $q) {
return deferred.promise; return deferred.promise;
}; };
BoardService.prototype._updateUsers = function () {
if (!this.getCurrent() || !this.getCurrent().acl) {
return [];
}
this.getCurrent().users = [this.getCurrent().owner];
let self = this;
angular.forEach(this.getCurrent().acl, function(value, key) {
if (value.type === OC.Share.SHARE_TYPE_USER) {
self.getCurrent().users.push(value.participant);
}
});
};
BoardService.prototype.getUsers = function () {
if (this.getCurrent() && !this.getCurrent().users) {
this._updateUsers();
}
return this.getCurrent().users;
};
BoardService.prototype.canRead = function () { BoardService.prototype.canRead = function () {
if (!this.getCurrent() || !this.getCurrent().permissions) { if (!this.getCurrent() || !this.getCurrent().permissions) {
return false; return false;

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
app.factory('CardService', function (ApiService, $http, $q) { app.factory('CardService', function (ApiService, $http, $q) {
var CardService = function ($http, ep, $q) { var CardService = function ($http, ep, $q) {
@@ -105,11 +106,11 @@ app.factory('CardService', function (ApiService, $http, $q) {
CardService.prototype.assignUser = function (card, user) { CardService.prototype.assignUser = function (card, user) {
var deferred = $q.defer(); var deferred = $q.defer();
var self = this; var self = this;
if (self.getCurrent().assignedUsers === null) { if (self.get(card.id).assignedUsers === null) {
self.getCurrent().assignedUsers = []; self.get(card.id).assignedUsers = [];
} }
$http.post(this.baseUrl + '/' + card.id + '/assign', {'userId': user}).then(function (response) { $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); deferred.resolve(response.data);
}, function (error) { }, function (error) {
deferred.reject('Error while update ' + self.endpoint); deferred.reject('Error while update ' + self.endpoint);
@@ -122,7 +123,7 @@ app.factory('CardService', function (ApiService, $http, $q) {
var deferred = $q.defer(); var deferred = $q.defer();
var self = this; var self = this;
$http.delete(this.baseUrl + '/' + card.id + '/assign/' + user, {}).then(function (response) { $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; return obj.participant.uid !== user;
}); });
deferred.resolve(response.data); deferred.resolve(response.data);
@@ -132,6 +133,45 @@ app.factory('CardService', function (ApiService, $http, $q) {
return deferred.promise; return deferred.promise;
}; };
CardService.prototype.attachmentRemove = function (attachment) {
var deferred = $q.defer();
var self = this;
$http.delete(this.baseUrl + '/' + this.getCurrent().id + '/attachment/' + attachment.id, {}).then(function (response) {
if (response.data.deletedAt > 0) {
let currentAttachment = self.getCurrent().attachments.find(function (obj) {
if (obj.id === attachment.id) {
obj.deletedAt = response.data.deletedAt;
}
});
} else {
self.getCurrent().attachments = self.getCurrent().attachments.filter(function (obj) {
return obj.id !== attachment.id;
});
}
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error when removing the attachment');
});
return deferred.promise;
};
CardService.prototype.attachmentRemoveUndo = function (attachment) {
var deferred = $q.defer();
var self = this;
$http.get(this.baseUrl + '/' + this.getCurrent().id + '/attachment/' + attachment.id + '/restore', {}).then(function (response) {
let currentAttachment = self.getCurrent().attachments.find(function (obj) {
if (obj.id === attachment.id) {
obj.deletedAt = response.data.deletedAt;
}
});
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error when restoring the attachment');
});
return deferred.promise;
};
var service = new CardService($http, 'cards', $q); var service = new CardService($http, 'cards', $q);
return service; return service;
}); });

137
js/service/FileService.js Normal file
View File

@@ -0,0 +1,137 @@
/*
* @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';
/* global OC oc_requesttoken */
export default class FileService {
constructor (FileUploader, CardService, $rootScope, $filter) {
this.$filter = $filter;
this.uploader = new FileUploader();
this.cardservice = CardService;
this.uploader.onAfterAddingFile = this.onAfterAddingFile.bind(this);
this.uploader.onSuccessItem = this.onSuccessItem.bind(this);
this.uploader.onErrorItem = this.onErrorItem.bind(this);
this.uploader.onCancelItem = this.onCancelItem.bind(this);
this.maxUploadSize = $rootScope.config.maxUploadSize;
this.progress = [];
this.status = null;
}
reset () {
this.status = null;
}
runUpload (fileItem, attachmentId) {
this.status = null;
fileItem.url = OC.generateUrl('/apps/deck/cards/' + fileItem.cardId + '/attachment?type=deck_file');
if (typeof attachmentId !== 'undefined') {
fileItem.url = OC.generateUrl('/apps/deck/cards/' + fileItem.cardId + '/attachment/' + attachmentId + '?type=deck_file');
} else {
fileItem.formData = [
{
requesttoken: oc_requesttoken,
type: 'deck_file',
}
];
}
fileItem.headers = {requesttoken: oc_requesttoken};
this.uploader.uploadItem(fileItem);
}
onAfterAddingFile (fileItem) {
if (this.maxUploadSize > 0 && fileItem.file.size > this.maxUploadSize) {
this.status = {
error: t('deck', `Failed to upload {name}`, {name: fileItem.file.name}),
message: t('deck', 'Maximum file size of {size} exceeded', {size: this.$filter('bytes')(this.maxUploadSize)})
};
return;
}
// Fetch card details before trying to upload so we can detect filename collisions properly
let self = this;
this.progress.push(fileItem);
this.cardservice.fetchOne(fileItem.cardId).then(function (data) {
let attachments = self.cardservice.get(fileItem.cardId).attachments;
let existingFile = attachments.find((attachment) => {
return attachment.data === fileItem.file.name;
});
if (typeof existingFile !== 'undefined') {
OC.dialogs.confirm(
`A file with the name ${fileItem.file.name} already exists. Do you want to overwrite it?`,
'File already exists',
function (result) {
if (result) {
self.runUpload(fileItem, existingFile.id);
} else {
let fileName = existingFile.extendedData.info.filename;
let foundFilesMatching = attachments.filter((attachment) => {
return attachment.extendedData.info.extension === existingFile.extendedData.info.extension
&& attachment.extendedData.info.filename.startsWith(fileName);
});
let nextIndex = foundFilesMatching.length + 1;
fileItem.file.name = fileName + ' (' + nextIndex + ').' + existingFile.extendedData.info.extension;
self.runUpload(fileItem);
}
}
);
} else {
self.runUpload(fileItem);
}
}, function (error) {
this.progress = this.progress.filter((item) => (fileItem.file.name !== item.file.name));
});
}
onSuccessItem (item, response) {
let attachments = this.cardservice.get(item.cardId).attachments;
let index = attachments.indexOf(attachments.find((attachment) => attachment.id === response.id));
if (~index) {
attachments = attachments.splice(index, 1);
}
this.cardservice.get(item.cardId).attachments.push(response);
this.progress = this.progress.filter((fileItem) => (fileItem.file.name !== item.file.name));
}
onErrorItem (item, response) {
this.progress = this.progress.filter((fileItem) => (fileItem.file.name !== item.file.name));
this.status = {
error: t('deck', `Failed to upload:`) + ' ' + item.file.name,
message: response.message
};
}
onCancelItem (item) {
this.progress = this.progress.filter((fileItem) => (fileItem.file.name !== item.file.name));
}
getProgressItemsForCard (cardId) {
return this.progress.filter((fileItem) => (fileItem.cardId === cardId));
}
}
app.service('FileService', FileService);

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
app.factory('LabelService', function (ApiService, $http, $q) { app.factory('LabelService', function (ApiService, $http, $q) {
var LabelService = function ($http, ep, $q) { var LabelService = function ($http, ep, $q) {

View File

@@ -19,8 +19,10 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
app.factory('StackService', function (ApiService, $http, $q) { /* global app angular */
app.factory('StackService', function (ApiService, CardService, $http, $q) {
var StackService = function ($http, ep, $q) { var StackService = function ($http, ep, $q) {
ApiService.call(this, $http, ep, $q); ApiService.call(this, $http, ep, $q);
}; };
@@ -31,6 +33,12 @@ app.factory('StackService', function (ApiService, $http, $q) {
$http.get(this.baseUrl + '/' + boardId).then(function (response) { $http.get(this.baseUrl + '/' + boardId).then(function (response) {
self.clear(); self.clear();
self.addAll(response.data); self.addAll(response.data);
// When loading a stack add cards to the CardService so we can fetch
// information from there. That way we don't need to refresh the whole
// stack data during digest if some value changes
angular.forEach(response.data, function (entity) {
CardService.addAll(entity.cards);
});
deferred.resolve(self.data); deferred.resolve(self.data);
}, function (error) { }, function (error) {
deferred.reject('Error while loading stacks'); deferred.reject('Error while loading stacks');
@@ -44,6 +52,9 @@ app.factory('StackService', function (ApiService, $http, $q) {
$http.get(this.baseUrl + '/' + boardId + '/archived').then(function (response) { $http.get(this.baseUrl + '/' + boardId + '/archived').then(function (response) {
self.clear(); self.clear();
self.addAll(response.data); self.addAll(response.data);
angular.forEach(response.data, function (entity) {
CardService.addAll(entity.cards);
});
deferred.resolve(self.data); deferred.resolve(self.data);
}, function (error) { }, function (error) {
deferred.reject('Error while loading stacks'); deferred.reject('Error while loading stacks');
@@ -118,6 +129,26 @@ app.factory('StackService', function (ApiService, $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); var service = new StackService($http, 'stacks', $q);
return service; return service;
}); });

View File

@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
import app from '../app/App.js';
app.factory('StatusService', function () { app.factory('StatusService', function () {
// Status Helper // Status Helper

68
js/webpack.config.js Normal file
View File

@@ -0,0 +1,68 @@
const path = require('path');
const webpack = require('webpack');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
require('babel-polyfill');
module.exports = {
node: {
fs: 'empty',
},
entry: {
deck: ['babel-polyfill', './init.js'],
},
output: {
filename: '[name].js',
path: __dirname + '/build'
},
resolve: {
modules: [path.resolve(__dirname), 'node_modules'],
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader',
query: {
presets: ['env'],
}
},
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader'
]
}
]
},
optimization: {
splitChunks: {
cacheGroups: {
/* separate vendor chunk for node_modules and legacy scripts */
commons: {
test: /[\\/]node_modules[\\/]/,
name: 'vendor',
chunks: 'all'
},
legacy: {
test: /[\\/]legacy[\\/]/,
name: 'vendor',
chunks: 'all'
}
}
}
},
/* use external jQuery from server */
externals: {
'jquery': 'jQuery'
},
plugins: [
new MiniCssExtractPlugin('[name].css'),
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
})
]
};

6
js/webpack.dev.config.js Normal file
View File

@@ -0,0 +1,6 @@
const merge = require('webpack-merge');
const baseConfig = require('./webpack.config.js');
module.exports = merge(baseConfig, {
mode: 'development'
});

15
js/webpack.prod.config.js Normal file
View File

@@ -0,0 +1,15 @@
const webpack = require('webpack');
const merge = require('webpack-merge');
const baseConfig = require('./webpack.config.js');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
module.exports = merge(baseConfig, {
mode: 'production',
optimization: {
minimizer: [
new UglifyJsPlugin({
test: /(vendor\.js)+/i
})
]
}});

View File

@@ -4,13 +4,17 @@ exclude = [
".git", ".git",
"js/node_modules", "js/node_modules",
"js/tests", "js/tests",
"js/legacy",
"js/controller",
"js/directive",
"js/filters",
"js/service",
"js/bower.json", "js/bower.json",
"js/.bowerrc", "js/.bowerrc",
"js/.jshintrc", "js/.jshintrc",
"js/Gruntfile.js", "js/Gruntfile.js",
"js/package.json", "js/package.json",
"js/package-lock.json", "js/package-lock.json",
"js/vendor/jquery",
"tests", "tests",
".codecov.yml", ".codecov.yml",
"composer.json", "composer.json",

0
l10n/.gitkeep Normal file
View File

View File

@@ -1,27 +0,0 @@
OC.L10N.register(
"deck",
{
"Hours" : "Hores",
"Minutes" : "Minutos",
"Finished" : "Finó",
"Action needed" : "Precísase aición",
"Later" : "Más sero",
"Deck" : "Deck",
"Show archived cards" : "Amosar tarxetes archivaes",
"Delete" : "Desaniciar",
"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.",
"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,25 +0,0 @@
{ "translations": {
"Hours" : "Hores",
"Minutes" : "Minutos",
"Finished" : "Finó",
"Action needed" : "Precísase aición",
"Later" : "Más sero",
"Deck" : "Deck",
"Show archived cards" : "Amosar tarxetes archivaes",
"Delete" : "Desaniciar",
"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.",
"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,24 +0,0 @@
OC.L10N.register(
"deck",
{
"Finished" : "Завършен",
"To review" : "За преглед",
"Action needed" : "Необходимо е действие",
"Later" : "По-късно",
"Archive" : "Архивиране",
"Unarchive" : "Разархивиране",
"Delete" : "Изтриване",
"Sharing" : "Споделяне",
"Select users or groups to share with" : "Избор на потребители и групи за споделяне",
"No matching user or group found." : "Не са намерени съвпадащи потребители или групи",
"Share" : "Сподели",
"Edit" : "Редакция",
"Manage" : "Управление",
"Discard share" : "Отхвърляне на споделяне",
"Members" : "Членове",
"Modified:" : "Променен на:",
"Created:" : "Създаден на:",
"by" : "от",
"Saved" : "Запазено"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -1,22 +0,0 @@
{ "translations": {
"Finished" : "Завършен",
"To review" : "За преглед",
"Action needed" : "Необходимо е действие",
"Later" : "По-късно",
"Archive" : "Архивиране",
"Unarchive" : "Разархивиране",
"Delete" : "Изтриване",
"Sharing" : "Споделяне",
"Select users or groups to share with" : "Избор на потребители и групи за споделяне",
"No matching user or group found." : "Не са намерени съвпадащи потребители или групи",
"Share" : "Сподели",
"Edit" : "Редакция",
"Manage" : "Управление",
"Discard share" : "Отхвърляне на споделяне",
"Members" : "Членове",
"Modified:" : "Променен на:",
"Created:" : "Създаден на:",
"by" : "от",
"Saved" : "Запазено"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -1,6 +1,8 @@
OC.L10N.register( OC.L10N.register(
"deck", "deck",
{ {
"Delete" : "Esborra",
"Remove user from card" : "Esborra usuari de la targeta",
"Hours" : "Hores", "Hours" : "Hores",
"Minutes" : "Minuts", "Minutes" : "Minuts",
"Finished" : "Acabat", "Finished" : "Acabat",
@@ -16,7 +18,6 @@ OC.L10N.register(
"Archived boards" : "Taulers arxivats", "Archived boards" : "Taulers arxivats",
"Archive" : "Arxiu", "Archive" : "Arxiu",
"Unarchive" : "Desbloquejar", "Unarchive" : "Desbloquejar",
"Delete" : "Esborra",
"Enter a card title" : "Introduïu un títol de la targeta", "Enter a card title" : "Introduïu un títol de la targeta",
"Sharing" : "Compartir", "Sharing" : "Compartir",
"Tags" : "Etiquetes", "Tags" : "Etiquetes",
@@ -36,15 +37,15 @@ OC.L10N.register(
"Delete board" : "Eliminat", "Delete board" : "Eliminat",
"Create new board" : "Crear nova", "Create new board" : "Crear nova",
"New board title" : "Nou títol", "New board title" : "Nou títol",
"by" : "per",
"Modified:" : "Modificat:", "Modified:" : "Modificat:",
"Created:" : "Creat:", "Created:" : "Creat:",
"by" : "per",
"Due date" : "Per la data", "Due date" : "Per la data",
"Click to set" : "Feu clic per configurar", "Click to set" : "Feu clic per configurar",
"Remove due date" : "Elimina la data de venciment", "Remove due date" : "Elimina la data de venciment",
"Description" : "Descripció", "Description" : "Descripció",
"Formatting help" : "Format d'ajuda",
"Saved" : "Desat", "Saved" : "Desat",
"Formatting help" : "Format d'ajuda",
"Add a card description…" : "Afegeix una descripció de la targeta ...", "Add a card description…" : "Afegeix una descripció de la targeta ...",
"Shared boards" : "Taulers compartits", "Shared boards" : "Taulers compartits",
"Move board to archive" : "Mou la placa a l'arxiu", "Move board to archive" : "Mou la placa a l'arxiu",

View File

@@ -1,4 +1,6 @@
{ "translations": { { "translations": {
"Delete" : "Esborra",
"Remove user from card" : "Esborra usuari de la targeta",
"Hours" : "Hores", "Hours" : "Hores",
"Minutes" : "Minuts", "Minutes" : "Minuts",
"Finished" : "Acabat", "Finished" : "Acabat",
@@ -14,7 +16,6 @@
"Archived boards" : "Taulers arxivats", "Archived boards" : "Taulers arxivats",
"Archive" : "Arxiu", "Archive" : "Arxiu",
"Unarchive" : "Desbloquejar", "Unarchive" : "Desbloquejar",
"Delete" : "Esborra",
"Enter a card title" : "Introduïu un títol de la targeta", "Enter a card title" : "Introduïu un títol de la targeta",
"Sharing" : "Compartir", "Sharing" : "Compartir",
"Tags" : "Etiquetes", "Tags" : "Etiquetes",
@@ -34,15 +35,15 @@
"Delete board" : "Eliminat", "Delete board" : "Eliminat",
"Create new board" : "Crear nova", "Create new board" : "Crear nova",
"New board title" : "Nou títol", "New board title" : "Nou títol",
"by" : "per",
"Modified:" : "Modificat:", "Modified:" : "Modificat:",
"Created:" : "Creat:", "Created:" : "Creat:",
"by" : "per",
"Due date" : "Per la data", "Due date" : "Per la data",
"Click to set" : "Feu clic per configurar", "Click to set" : "Feu clic per configurar",
"Remove due date" : "Elimina la data de venciment", "Remove due date" : "Elimina la data de venciment",
"Description" : "Descripció", "Description" : "Descripció",
"Formatting help" : "Format d'ajuda",
"Saved" : "Desat", "Saved" : "Desat",
"Formatting help" : "Format d'ajuda",
"Add a card description…" : "Afegeix una descripció de la targeta ...", "Add a card description…" : "Afegeix una descripció de la targeta ...",
"Shared boards" : "Taulers compartits", "Shared boards" : "Taulers compartits",
"Move board to archive" : "Mou la placa a l'arxiu", "Move board to archive" : "Mou la placa a l'arxiu",

View File

@@ -1,16 +1,40 @@
OC.L10N.register( OC.L10N.register(
"deck", "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",
"Remove user from card" : "Odebrat uživatele z karty",
"Hours" : "Hodiny", "Hours" : "Hodiny",
"Minutes" : "Minuty", "Minutes" : "Minuty",
"Maximum file size of {size} exceeded" : "U souboru {size} překročena nejvyšší umožněná velikost",
"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?",
"Personal" : "Osobní",
"The card \"%s\" on \"%s\" has reached its due date." : "U karty \"%s\" z tabule \"%s\" nastalo plánované datum dokončení.", "The card \"%s\" on \"%s\" has reached its due date." : "U karty \"%s\" z tabule \"%s\" nastalo plánované datum dokončení.",
"The board \"%s\" has been shared with you by %s." : "Tabule \"%s\" s vámi byla nasdílena uživatelem %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.", "{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", "Finished" : "Dokončeno",
"To review" : "K revizi", "To review" : "K revizi",
"Action needed" : "Nutná akce", "Action needed" : "Nutná akce",
"Later" : "Později", "Later" : "Později",
"To do" : "Udělat",
"Doing" : "Provádím",
"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" : "Odeslaný soubor přesáhl svou velikostí parametr MAX_FILE_SIZE specifikovaný ve formuláři HTML",
"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.",
"No file uploaded or file size exceeds maximum of %s" : "Soubor nebyl nahrán nebo jeho velikost přesáhla %s",
"Deck" : "Balík", "Deck" : "Balík",
"A kanban style project and personal management tool for Nextcloud" : "Nástroj pro projektový a osobní management 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- 🚀 Get your project organized" : "Karty jsou nástroj zacílený na osobní nebo projektové plánování týmů v Kanban stylu, jenž je zaintegrovaný do Nextcloudu.\n\n\n- 📥 Vložte a uspořádejte své úkoly do karet\n- 📄 Zapište si dodatečné poznámky \n- 🔖 Přilepte štítek pro ještě lepší organizaci\n- 👥 Sdílejte se svým týmem, přátely nebo rodinou\n- 🚀 Dostaťe svůj projekt pod kontrolu",
"Add a new stack" : "Přidat nový zásobník", "Add a new stack" : "Přidat nový zásobník",
"Submit" : "Odeslat", "Submit" : "Odeslat",
"Show archived cards" : "Zobrazit archivované karty", "Show archived cards" : "Zobrazit archivované karty",
@@ -18,9 +42,11 @@ OC.L10N.register(
"Board details" : "Detaily desky", "Board details" : "Detaily desky",
"All Boards" : "Všechny desky", "All Boards" : "Všechny desky",
"Archived boards" : "Archivované desky", "Archived boards" : "Archivované desky",
"Drop your files here to upload it to the card" : "Přetáhněte soubor sem, pokud jej chcete připojit ke kartě.",
"Assign to me" : "Přiřadit mě",
"Unassign from me" : "Zrušit přiřazení mě",
"Archive" : "Archiv", "Archive" : "Archiv",
"Unarchive" : "Zrušit archivování", "Unarchive" : "Zrušit archivování",
"Delete" : "Smazat",
"Enter a card title" : "Zadejte nadpis karty", "Enter a card title" : "Zadejte nadpis karty",
"Add card" : "Přidat kartu", "Add card" : "Přidat kartu",
"Close" : "Zavřít", "Close" : "Zavřít",
@@ -36,7 +62,7 @@ OC.L10N.register(
"Discard share" : "Zrušit sdílení", "Discard share" : "Zrušit sdílení",
"Update" : "Aktualizovat", "Update" : "Aktualizovat",
"Create" : "Vytvořit", "Create" : "Vytvořit",
"Create a new tag" : "Vytvořit novou značku", "Create a new tag" : "Vytvořit nový štítek",
"Status" : "Stav", "Status" : "Stav",
"Title" : "Název", "Title" : "Název",
"Members" : "Členové", "Members" : "Členové",
@@ -47,27 +73,36 @@ OC.L10N.register(
"Delete board" : "Smazat desku", "Delete board" : "Smazat desku",
"Reset" : "Obnovit", "Reset" : "Obnovit",
"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.", "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", "New board title" : "Nadpis nové desky",
"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.",
"Modified:" : "Upraveno:", "Modified:" : "Upraveno:",
"Created:" : "Vytvořeno:", "Created:" : "Vytvořeno:",
"by" : "od",
"Choose a tag" : "Vyberte štítek", "Choose a tag" : "Vyberte štítek",
"Add a tag" : "Přidat štítek", "Add a tag" : "Přidat štítek",
"Select tags" : "Výběr štítků", "Select tags" : "Výběr štítků",
"Assign users" : "Přiřadit uživatele", "Assign users" : "Přiřadit uživatele",
"Choose a user to assign" : "Zvolte uživatele kterého přiřadit",
"Assign this card to a user" : "Přiřadit kartu uživateli", "Assign this card to a user" : "Přiřadit kartu uživateli",
"Due date" : "Termín", "Due date" : "Termín",
"Click to set" : "Klikněte pro výběr", "Click to set" : "Klikněte pro výběr",
"Remove due date" : "Odstranit termín", "Remove due date" : "Odstranit termín",
"Description" : "Popis", "Description" : "Popis",
"Formatting help" : "Nápověda k formátování", "Attachments" : "Přílohy",
"Saved" : "Uloženo", "Saved" : "Uloženo",
"Unsaved changes" : "Neuložené změny", "Unsaved changes" : "Neuložené změny",
"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", "Shared boards" : "Sdílené desky",
"View more" : "Ukázat více", "View more" : "Ukázat více",
"Move board to archive" : "Přesunout desku do archivu", "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"
}, },
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); "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,14 +1,38 @@
{ "translations": { { "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",
"Remove user from card" : "Odebrat uživatele z karty",
"Hours" : "Hodiny", "Hours" : "Hodiny",
"Minutes" : "Minuty", "Minutes" : "Minuty",
"Maximum file size of {size} exceeded" : "U souboru {size} překročena nejvyšší umožněná velikost",
"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?",
"Personal" : "Osobní",
"The card \"%s\" on \"%s\" has reached its due date." : "U karty \"%s\" z tabule \"%s\" nastalo plánované datum dokončení.", "The card \"%s\" on \"%s\" has reached its due date." : "U karty \"%s\" z tabule \"%s\" nastalo plánované datum dokončení.",
"The board \"%s\" has been shared with you by %s." : "Tabule \"%s\" s vámi byla nasdílena uživatelem %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.", "{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", "Finished" : "Dokončeno",
"To review" : "K revizi", "To review" : "K revizi",
"Action needed" : "Nutná akce", "Action needed" : "Nutná akce",
"Later" : "Později", "Later" : "Později",
"To do" : "Udělat",
"Doing" : "Provádím",
"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" : "Odeslaný soubor přesáhl svou velikostí parametr MAX_FILE_SIZE specifikovaný ve formuláři HTML",
"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.",
"No file uploaded or file size exceeds maximum of %s" : "Soubor nebyl nahrán nebo jeho velikost přesáhla %s",
"Deck" : "Balík", "Deck" : "Balík",
"A kanban style project and personal management tool for Nextcloud" : "Nástroj pro projektový a osobní management 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- 🚀 Get your project organized" : "Karty jsou nástroj zacílený na osobní nebo projektové plánování týmů v Kanban stylu, jenž je zaintegrovaný do Nextcloudu.\n\n\n- 📥 Vložte a uspořádejte své úkoly do karet\n- 📄 Zapište si dodatečné poznámky \n- 🔖 Přilepte štítek pro ještě lepší organizaci\n- 👥 Sdílejte se svým týmem, přátely nebo rodinou\n- 🚀 Dostaťe svůj projekt pod kontrolu",
"Add a new stack" : "Přidat nový zásobník", "Add a new stack" : "Přidat nový zásobník",
"Submit" : "Odeslat", "Submit" : "Odeslat",
"Show archived cards" : "Zobrazit archivované karty", "Show archived cards" : "Zobrazit archivované karty",
@@ -16,9 +40,11 @@
"Board details" : "Detaily desky", "Board details" : "Detaily desky",
"All Boards" : "Všechny desky", "All Boards" : "Všechny desky",
"Archived boards" : "Archivované desky", "Archived boards" : "Archivované desky",
"Drop your files here to upload it to the card" : "Přetáhněte soubor sem, pokud jej chcete připojit ke kartě.",
"Assign to me" : "Přiřadit mě",
"Unassign from me" : "Zrušit přiřazení mě",
"Archive" : "Archiv", "Archive" : "Archiv",
"Unarchive" : "Zrušit archivování", "Unarchive" : "Zrušit archivování",
"Delete" : "Smazat",
"Enter a card title" : "Zadejte nadpis karty", "Enter a card title" : "Zadejte nadpis karty",
"Add card" : "Přidat kartu", "Add card" : "Přidat kartu",
"Close" : "Zavřít", "Close" : "Zavřít",
@@ -34,7 +60,7 @@
"Discard share" : "Zrušit sdílení", "Discard share" : "Zrušit sdílení",
"Update" : "Aktualizovat", "Update" : "Aktualizovat",
"Create" : "Vytvořit", "Create" : "Vytvořit",
"Create a new tag" : "Vytvořit novou značku", "Create a new tag" : "Vytvořit nový štítek",
"Status" : "Stav", "Status" : "Stav",
"Title" : "Název", "Title" : "Název",
"Members" : "Členové", "Members" : "Členové",
@@ -45,27 +71,36 @@
"Delete board" : "Smazat desku", "Delete board" : "Smazat desku",
"Reset" : "Obnovit", "Reset" : "Obnovit",
"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.", "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", "New board title" : "Nadpis nové desky",
"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.",
"Modified:" : "Upraveno:", "Modified:" : "Upraveno:",
"Created:" : "Vytvořeno:", "Created:" : "Vytvořeno:",
"by" : "od",
"Choose a tag" : "Vyberte štítek", "Choose a tag" : "Vyberte štítek",
"Add a tag" : "Přidat štítek", "Add a tag" : "Přidat štítek",
"Select tags" : "Výběr štítků", "Select tags" : "Výběr štítků",
"Assign users" : "Přiřadit uživatele", "Assign users" : "Přiřadit uživatele",
"Choose a user to assign" : "Zvolte uživatele kterého přiřadit",
"Assign this card to a user" : "Přiřadit kartu uživateli", "Assign this card to a user" : "Přiřadit kartu uživateli",
"Due date" : "Termín", "Due date" : "Termín",
"Click to set" : "Klikněte pro výběr", "Click to set" : "Klikněte pro výběr",
"Remove due date" : "Odstranit termín", "Remove due date" : "Odstranit termín",
"Description" : "Popis", "Description" : "Popis",
"Formatting help" : "Nápověda k formátování", "Attachments" : "Přílohy",
"Saved" : "Uloženo", "Saved" : "Uloženo",
"Unsaved changes" : "Neuložené změny", "Unsaved changes" : "Neuložené změny",
"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", "Shared boards" : "Sdílené desky",
"View more" : "Ukázat více", "View more" : "Ukázat více",
"Move board to archive" : "Přesunout desku do archivu", "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"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" },"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,16 +1,22 @@
OC.L10N.register( OC.L10N.register(
"deck", "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", "Hours" : "Timer",
"Minutes" : "Minutter", "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?",
"The card \"%s\" on \"%s\" has reached its due date." : "Kortet \"%s\" på \"%s\" har nået sin udløbsdato.", "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.", "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.", "{user} has shared the board %s with you." : "{user} har delt brættet %s med dig.",
"Finished" : "Færdiggjort", "Finished" : "Færdiggjort",
"To review" : "Efterse", "To review" : "Gennemse",
"Action needed" : "Handling påkrævet", "Action needed" : "Handling påkrævet",
"Later" : "Senere", "Later" : "Senere",
"Deck" : "Tavle", "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", "Add a new stack" : "Tilføj en ny stak",
"Submit" : "Tilføj", "Submit" : "Tilføj",
"Show archived cards" : "Vis arkiverede kort", "Show archived cards" : "Vis arkiverede kort",
@@ -20,7 +26,6 @@ OC.L10N.register(
"Archived boards" : "Arkiverede lister", "Archived boards" : "Arkiverede lister",
"Archive" : "Arkivér", "Archive" : "Arkivér",
"Unarchive" : "Annuller arkivering", "Unarchive" : "Annuller arkivering",
"Delete" : "Slet",
"Enter a card title" : "Angiv titel på kort", "Enter a card title" : "Angiv titel på kort",
"Add card" : "Tilføj kort", "Add card" : "Tilføj kort",
"Close" : "Luk", "Close" : "Luk",
@@ -49,21 +54,22 @@ OC.L10N.register(
"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.", "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", "Create new board" : "Opret ny liste",
"New board title" : "Ny titel på liste", "New board title" : "Ny titel på liste",
"by" : "af",
"Modified:" : "Ændret:", "Modified:" : "Ændret:",
"Created:" : "Oprettet:", "Created:" : "Oprettet:",
"by" : "af",
"Choose a tag" : "Vælg et tag", "Choose a tag" : "Vælg et tag",
"Add a tag" : "Tilføj et tag", "Add a tag" : "Tilføj et tag",
"Select tags" : "Vælg tags", "Select tags" : "Vælg tags",
"Assign users" : "Tildel brugere", "Assign users" : "Tildel brugere",
"Choose a user to assign" : "Vælg en bruger at tildele til",
"Assign this card to a user" : "Tildel dette kort til en bruger", "Assign this card to a user" : "Tildel dette kort til en bruger",
"Due date" : "Forfaldsdato", "Due date" : "Forfaldsdato",
"Click to set" : "Klik for at sætte", "Click to set" : "Klik for at sætte",
"Remove due date" : "Fjern forfaldsdato", "Remove due date" : "Fjern forfaldsdato",
"Description" : "Beskrivelse", "Description" : "Beskrivelse",
"Formatting help" : "Hjælp til formatering",
"Saved" : "Gemt", "Saved" : "Gemt",
"Unsaved changes" : "Ikke gemte ændringer", "Unsaved changes" : "Ikke gemte ændringer",
"Formatting help" : "Hjælp til formatering",
"Add a card description…" : "Tilføj en beskrivelse...", "Add a card description…" : "Tilføj en beskrivelse...",
"Shared boards" : "Delte lister", "Shared boards" : "Delte lister",
"View more" : "Vis mere", "View more" : "Vis mere",

View File

@@ -1,14 +1,20 @@
{ "translations": { { "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", "Hours" : "Timer",
"Minutes" : "Minutter", "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?",
"The card \"%s\" on \"%s\" has reached its due date." : "Kortet \"%s\" på \"%s\" har nået sin udløbsdato.", "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.", "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.", "{user} has shared the board %s with you." : "{user} har delt brættet %s med dig.",
"Finished" : "Færdiggjort", "Finished" : "Færdiggjort",
"To review" : "Efterse", "To review" : "Gennemse",
"Action needed" : "Handling påkrævet", "Action needed" : "Handling påkrævet",
"Later" : "Senere", "Later" : "Senere",
"Deck" : "Tavle", "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", "Add a new stack" : "Tilføj en ny stak",
"Submit" : "Tilføj", "Submit" : "Tilføj",
"Show archived cards" : "Vis arkiverede kort", "Show archived cards" : "Vis arkiverede kort",
@@ -18,7 +24,6 @@
"Archived boards" : "Arkiverede lister", "Archived boards" : "Arkiverede lister",
"Archive" : "Arkivér", "Archive" : "Arkivér",
"Unarchive" : "Annuller arkivering", "Unarchive" : "Annuller arkivering",
"Delete" : "Slet",
"Enter a card title" : "Angiv titel på kort", "Enter a card title" : "Angiv titel på kort",
"Add card" : "Tilføj kort", "Add card" : "Tilføj kort",
"Close" : "Luk", "Close" : "Luk",
@@ -47,21 +52,22 @@
"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.", "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", "Create new board" : "Opret ny liste",
"New board title" : "Ny titel på liste", "New board title" : "Ny titel på liste",
"by" : "af",
"Modified:" : "Ændret:", "Modified:" : "Ændret:",
"Created:" : "Oprettet:", "Created:" : "Oprettet:",
"by" : "af",
"Choose a tag" : "Vælg et tag", "Choose a tag" : "Vælg et tag",
"Add a tag" : "Tilføj et tag", "Add a tag" : "Tilføj et tag",
"Select tags" : "Vælg tags", "Select tags" : "Vælg tags",
"Assign users" : "Tildel brugere", "Assign users" : "Tildel brugere",
"Choose a user to assign" : "Vælg en bruger at tildele til",
"Assign this card to a user" : "Tildel dette kort til en bruger", "Assign this card to a user" : "Tildel dette kort til en bruger",
"Due date" : "Forfaldsdato", "Due date" : "Forfaldsdato",
"Click to set" : "Klik for at sætte", "Click to set" : "Klik for at sætte",
"Remove due date" : "Fjern forfaldsdato", "Remove due date" : "Fjern forfaldsdato",
"Description" : "Beskrivelse", "Description" : "Beskrivelse",
"Formatting help" : "Hjælp til formatering",
"Saved" : "Gemt", "Saved" : "Gemt",
"Unsaved changes" : "Ikke gemte ændringer", "Unsaved changes" : "Ikke gemte ændringer",
"Formatting help" : "Hjælp til formatering",
"Add a card description…" : "Tilføj en beskrivelse...", "Add a card description…" : "Tilføj en beskrivelse...",
"Shared boards" : "Delte lister", "Shared boards" : "Delte lister",
"View more" : "Vis mere", "View more" : "Vis mere",

View File

@@ -1,17 +1,40 @@
OC.L10N.register( OC.L10N.register(
"deck", "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",
"Remove user from card" : "Benutzer von Karte entfernen", "Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden", "Hours" : "Stunden",
"Minutes" : "Minuten", "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?",
"Personal" : "Persönlich",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.", "The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Dir geteilt.", "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.", "{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.",
"Finished" : "Abgeschlossen", "Finished" : "Abgeschlossen",
"To review" : "Zu überprüfen", "To review" : "Zu überprüfen",
"Action needed" : "Handlung erforderlich", "Action needed" : "Handlung erforderlich",
"Later" : "Später", "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.",
"The file was only partially uploaded" : "Die Datei konnte nur teilweise hochgeladen werden",
"No file was uploaded" : "Es wurde keine Datei hochgeladen",
"Missing a temporary folder" : "Kein temporärer Ordner vorhanden",
"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", "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", "Add a new stack" : "Stapel hinzufügen",
"Submit" : "Übermitteln", "Submit" : "Übermitteln",
"Show archived cards" : "Archivierte Karten anzeigen", "Show archived cards" : "Archivierte Karten anzeigen",
@@ -19,14 +42,16 @@ OC.L10N.register(
"Board details" : "Board-Details", "Board details" : "Board-Details",
"All Boards" : "Alle Boards", "All Boards" : "Alle Boards",
"Archived boards" : "Archivierte Boards", "Archived boards" : "Archivierte Boards",
"Drop your files here to upload it to the card" : "Lege Deine Dateien hier ab, um sie auf die Karte hochzuladen",
"Assign to me" : "Mir zuweisen",
"Unassign from me" : "Nicht mir zuweisen",
"Archive" : "Archivieren", "Archive" : "Archivieren",
"Unarchive" : "Dearchivieren", "Unarchive" : "Dearchivieren",
"Delete" : "Löschen",
"Enter a card title" : "Kartentitel eingeben", "Enter a card title" : "Kartentitel eingeben",
"Add card" : "Karte hinzufügen", "Add card" : "Karte hinzufügen",
"Close" : "Schließen", "Close" : "Schließen",
"Sharing" : "Teilen", "Sharing" : "Teilen",
"Tags" : "Etiketten", "Tags" : "Schlagworte",
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll", "Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
"Access for" : "Zugriff für", "Access for" : "Zugriff für",
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.", "No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
@@ -50,21 +75,30 @@ OC.L10N.register(
"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.", "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", "Create new board" : "Neues Board erstellen",
"New board title" : "Neuer Board-Titel", "New board title" : "Neuer Board-Titel",
"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",
"Modified:" : "Geändert:", "Modified:" : "Geändert:",
"Created:" : "Erstellt:", "Created:" : "Erstellt:",
"by" : "von",
"Choose a tag" : "Schlagwort auswählen", "Choose a tag" : "Schlagwort auswählen",
"Add a tag" : "Schlagwort hinzufügen", "Add a tag" : "Schlagwort hinzufügen",
"Select tags" : "Schlagwörter auswählen", "Select tags" : "Schlagworte auswählen",
"Assign users" : "Nutzer zuweisen", "Assign users" : "Nutzer zuweisen",
"Assign this card to a user" : "Diese Karte einem Nutzer 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 zuweisen",
"Due date" : "Fälligkeitsdatum", "Due date" : "Fälligkeitsdatum",
"Click to set" : "Klicken zum Übernehmen", "Click to set" : "Klicken zum Übernehmen",
"Remove due date" : "Ablaufdatum löschen", "Remove due date" : "Ablaufdatum löschen",
"Description" : "Beschreibung", "Description" : "Beschreibung",
"Formatting help" : "Formatierungshilfe", "Attachments" : "Anhänge",
"Saved" : "Gespeichert", "Saved" : "Gespeichert",
"Unsaved changes" : "Ungesicherte Änderungen", "Unsaved changes" : "Ungesicherte Änderungen",
"Formatting help" : "Formatierungshilfe",
"Upload attachment" : "Anhang hochladen",
"Insert attachment" : "Anhang einfügen",
"Add a card description…" : "Eine Kartenbeschreibung hinzufügen…", "Add a card description…" : "Eine Kartenbeschreibung hinzufügen…",
"Shared boards" : "Geteilte Boards", "Shared boards" : "Geteilte Boards",
"View more" : "Mehr anzeigen", "View more" : "Mehr anzeigen",

View File

@@ -1,15 +1,38 @@
{ "translations": { { "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",
"Remove user from card" : "Benutzer von Karte entfernen", "Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden", "Hours" : "Stunden",
"Minutes" : "Minuten", "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?",
"Personal" : "Persönlich",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.", "The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Dir geteilt.", "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.", "{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.",
"Finished" : "Abgeschlossen", "Finished" : "Abgeschlossen",
"To review" : "Zu überprüfen", "To review" : "Zu überprüfen",
"Action needed" : "Handlung erforderlich", "Action needed" : "Handlung erforderlich",
"Later" : "Später", "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.",
"The file was only partially uploaded" : "Die Datei konnte nur teilweise hochgeladen werden",
"No file was uploaded" : "Es wurde keine Datei hochgeladen",
"Missing a temporary folder" : "Kein temporärer Ordner vorhanden",
"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", "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", "Add a new stack" : "Stapel hinzufügen",
"Submit" : "Übermitteln", "Submit" : "Übermitteln",
"Show archived cards" : "Archivierte Karten anzeigen", "Show archived cards" : "Archivierte Karten anzeigen",
@@ -17,14 +40,16 @@
"Board details" : "Board-Details", "Board details" : "Board-Details",
"All Boards" : "Alle Boards", "All Boards" : "Alle Boards",
"Archived boards" : "Archivierte Boards", "Archived boards" : "Archivierte Boards",
"Drop your files here to upload it to the card" : "Lege Deine Dateien hier ab, um sie auf die Karte hochzuladen",
"Assign to me" : "Mir zuweisen",
"Unassign from me" : "Nicht mir zuweisen",
"Archive" : "Archivieren", "Archive" : "Archivieren",
"Unarchive" : "Dearchivieren", "Unarchive" : "Dearchivieren",
"Delete" : "Löschen",
"Enter a card title" : "Kartentitel eingeben", "Enter a card title" : "Kartentitel eingeben",
"Add card" : "Karte hinzufügen", "Add card" : "Karte hinzufügen",
"Close" : "Schließen", "Close" : "Schließen",
"Sharing" : "Teilen", "Sharing" : "Teilen",
"Tags" : "Etiketten", "Tags" : "Schlagworte",
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll", "Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
"Access for" : "Zugriff für", "Access for" : "Zugriff für",
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.", "No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
@@ -48,21 +73,30 @@
"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.", "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", "Create new board" : "Neues Board erstellen",
"New board title" : "Neuer Board-Titel", "New board title" : "Neuer Board-Titel",
"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",
"Modified:" : "Geändert:", "Modified:" : "Geändert:",
"Created:" : "Erstellt:", "Created:" : "Erstellt:",
"by" : "von",
"Choose a tag" : "Schlagwort auswählen", "Choose a tag" : "Schlagwort auswählen",
"Add a tag" : "Schlagwort hinzufügen", "Add a tag" : "Schlagwort hinzufügen",
"Select tags" : "Schlagwörter auswählen", "Select tags" : "Schlagworte auswählen",
"Assign users" : "Nutzer zuweisen", "Assign users" : "Nutzer zuweisen",
"Assign this card to a user" : "Diese Karte einem Nutzer 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 zuweisen",
"Due date" : "Fälligkeitsdatum", "Due date" : "Fälligkeitsdatum",
"Click to set" : "Klicken zum Übernehmen", "Click to set" : "Klicken zum Übernehmen",
"Remove due date" : "Ablaufdatum löschen", "Remove due date" : "Ablaufdatum löschen",
"Description" : "Beschreibung", "Description" : "Beschreibung",
"Formatting help" : "Formatierungshilfe", "Attachments" : "Anhänge",
"Saved" : "Gespeichert", "Saved" : "Gespeichert",
"Unsaved changes" : "Ungesicherte Änderungen", "Unsaved changes" : "Ungesicherte Änderungen",
"Formatting help" : "Formatierungshilfe",
"Upload attachment" : "Anhang hochladen",
"Insert attachment" : "Anhang einfügen",
"Add a card description…" : "Eine Kartenbeschreibung hinzufügen…", "Add a card description…" : "Eine Kartenbeschreibung hinzufügen…",
"Shared boards" : "Geteilte Boards", "Shared boards" : "Geteilte Boards",
"View more" : "Mehr anzeigen", "View more" : "Mehr anzeigen",

View File

@@ -1,17 +1,40 @@
OC.L10N.register( OC.L10N.register(
"deck", "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",
"Remove user from card" : "Benutzer von Karte entfernen", "Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden", "Hours" : "Stunden",
"Minutes" : "Minuten", "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?",
"Personal" : "Persönlich",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.", "The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Ihnen geteilt.", "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.", "{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.",
"Finished" : "Abgeschlossen", "Finished" : "Abgeschlossen",
"To review" : "Zu überprüfen", "To review" : "Zu überprüfen",
"Action needed" : "Handlung erforderlich", "Action needed" : "Handlung erforderlich",
"Later" : "Später", "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.",
"The file was only partially uploaded" : "Die Datei konnte nur teilweise hochgeladen werden",
"No file was uploaded" : "Es wurde keine Datei hochgeladen",
"Missing a temporary folder" : "Kein temporärer Ordner vorhanden",
"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", "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- 🔖 Zuweisung 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", "Add a new stack" : "Neuen Stapel hinzufügen",
"Submit" : "Übermitteln", "Submit" : "Übermitteln",
"Show archived cards" : "Archivierte Karten anzeigen", "Show archived cards" : "Archivierte Karten anzeigen",
@@ -19,14 +42,16 @@ OC.L10N.register(
"Board details" : "Board-Details", "Board details" : "Board-Details",
"All Boards" : "Alle Boards", "All Boards" : "Alle Boards",
"Archived boards" : "Archivierte Boards", "Archived boards" : "Archivierte Boards",
"Drop your files here to upload it to the card" : "Legen Sie Ihre Dateien hier ab, um sie auf die Karte hochzuladen",
"Assign to me" : "Mir zuweisen",
"Unassign from me" : "Nicht mir zuweisen",
"Archive" : "Archivieren", "Archive" : "Archivieren",
"Unarchive" : "Dearchivieren", "Unarchive" : "Dearchivieren",
"Delete" : "Löschen",
"Enter a card title" : "Kartentitel eingeben", "Enter a card title" : "Kartentitel eingeben",
"Add card" : "Karte hinzufügen", "Add card" : "Karte hinzufügen",
"Close" : "Schließen", "Close" : "Schließen",
"Sharing" : "Teilen", "Sharing" : "Teilen",
"Tags" : "Tags", "Tags" : "Schlagworte",
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll", "Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
"Access for" : "Zugriff für", "Access for" : "Zugriff für",
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.", "No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
@@ -37,7 +62,7 @@ OC.L10N.register(
"Discard share" : "Teilen beenden", "Discard share" : "Teilen beenden",
"Update" : "Aktualisieren", "Update" : "Aktualisieren",
"Create" : "Erstellen", "Create" : "Erstellen",
"Create a new tag" : "Tag erstellen", "Create a new tag" : "Schlagwort erstellen",
"Status" : "Status", "Status" : "Status",
"Title" : "Titel", "Title" : "Titel",
"Members" : "Mitglieder", "Members" : "Mitglieder",
@@ -50,21 +75,30 @@ OC.L10N.register(
"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.", "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", "Create new board" : "Neues Board erstellen",
"New board title" : "Neuer Board-Titel", "New board title" : "Neuer Board-Titel",
"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",
"Modified:" : "Geändert:", "Modified:" : "Geändert:",
"Created:" : "Erstellt:", "Created:" : "Erstellt:",
"by" : "von",
"Choose a tag" : "Schlagwort auswählen", "Choose a tag" : "Schlagwort auswählen",
"Add a tag" : "Schlagwort hinzufügen", "Add a tag" : "Schlagwort hinzufügen",
"Select tags" : "Schlagwörter auswählen", "Select tags" : "Schlagworte auswählen",
"Assign users" : "Benutzer zuordnen", "Assign users" : "Benutzer zuweisen",
"Assign this card to a user" : "Diese Karte einem Benutzer zuordnen", "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" : "Zieltermin", "Due date" : "Zieltermin",
"Click to set" : "Setzen", "Click to set" : "Setzen",
"Remove due date" : "Zieltermin entfernen", "Remove due date" : "Zieltermin entfernen",
"Description" : "Beschreibung", "Description" : "Beschreibung",
"Formatting help" : "Formatierungshilfe", "Attachments" : "Anhänge",
"Saved" : "Gespeichert", "Saved" : "Gespeichert",
"Unsaved changes" : "Ungesicherte Änderungen", "Unsaved changes" : "Ungesicherte Änderungen",
"Formatting help" : "Formatierungshilfe",
"Upload attachment" : "Anhang hochladen",
"Insert attachment" : "Anhang einfügen",
"Add a card description…" : "Beschreibung hinzufügen…", "Add a card description…" : "Beschreibung hinzufügen…",
"Shared boards" : "Geteilte Boards", "Shared boards" : "Geteilte Boards",
"View more" : "Mehr anzeigen", "View more" : "Mehr anzeigen",

View File

@@ -1,15 +1,38 @@
{ "translations": { { "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",
"Remove user from card" : "Benutzer von Karte entfernen", "Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden", "Hours" : "Stunden",
"Minutes" : "Minuten", "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?",
"Personal" : "Persönlich",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.", "The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Ihnen geteilt.", "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.", "{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.",
"Finished" : "Abgeschlossen", "Finished" : "Abgeschlossen",
"To review" : "Zu überprüfen", "To review" : "Zu überprüfen",
"Action needed" : "Handlung erforderlich", "Action needed" : "Handlung erforderlich",
"Later" : "Später", "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.",
"The file was only partially uploaded" : "Die Datei konnte nur teilweise hochgeladen werden",
"No file was uploaded" : "Es wurde keine Datei hochgeladen",
"Missing a temporary folder" : "Kein temporärer Ordner vorhanden",
"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", "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- 🔖 Zuweisung 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", "Add a new stack" : "Neuen Stapel hinzufügen",
"Submit" : "Übermitteln", "Submit" : "Übermitteln",
"Show archived cards" : "Archivierte Karten anzeigen", "Show archived cards" : "Archivierte Karten anzeigen",
@@ -17,14 +40,16 @@
"Board details" : "Board-Details", "Board details" : "Board-Details",
"All Boards" : "Alle Boards", "All Boards" : "Alle Boards",
"Archived boards" : "Archivierte Boards", "Archived boards" : "Archivierte Boards",
"Drop your files here to upload it to the card" : "Legen Sie Ihre Dateien hier ab, um sie auf die Karte hochzuladen",
"Assign to me" : "Mir zuweisen",
"Unassign from me" : "Nicht mir zuweisen",
"Archive" : "Archivieren", "Archive" : "Archivieren",
"Unarchive" : "Dearchivieren", "Unarchive" : "Dearchivieren",
"Delete" : "Löschen",
"Enter a card title" : "Kartentitel eingeben", "Enter a card title" : "Kartentitel eingeben",
"Add card" : "Karte hinzufügen", "Add card" : "Karte hinzufügen",
"Close" : "Schließen", "Close" : "Schließen",
"Sharing" : "Teilen", "Sharing" : "Teilen",
"Tags" : "Tags", "Tags" : "Schlagworte",
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll", "Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
"Access for" : "Zugriff für", "Access for" : "Zugriff für",
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.", "No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
@@ -35,7 +60,7 @@
"Discard share" : "Teilen beenden", "Discard share" : "Teilen beenden",
"Update" : "Aktualisieren", "Update" : "Aktualisieren",
"Create" : "Erstellen", "Create" : "Erstellen",
"Create a new tag" : "Tag erstellen", "Create a new tag" : "Schlagwort erstellen",
"Status" : "Status", "Status" : "Status",
"Title" : "Titel", "Title" : "Titel",
"Members" : "Mitglieder", "Members" : "Mitglieder",
@@ -48,21 +73,30 @@
"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.", "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", "Create new board" : "Neues Board erstellen",
"New board title" : "Neuer Board-Titel", "New board title" : "Neuer Board-Titel",
"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",
"Modified:" : "Geändert:", "Modified:" : "Geändert:",
"Created:" : "Erstellt:", "Created:" : "Erstellt:",
"by" : "von",
"Choose a tag" : "Schlagwort auswählen", "Choose a tag" : "Schlagwort auswählen",
"Add a tag" : "Schlagwort hinzufügen", "Add a tag" : "Schlagwort hinzufügen",
"Select tags" : "Schlagwörter auswählen", "Select tags" : "Schlagworte auswählen",
"Assign users" : "Benutzer zuordnen", "Assign users" : "Benutzer zuweisen",
"Assign this card to a user" : "Diese Karte einem Benutzer zuordnen", "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" : "Zieltermin", "Due date" : "Zieltermin",
"Click to set" : "Setzen", "Click to set" : "Setzen",
"Remove due date" : "Zieltermin entfernen", "Remove due date" : "Zieltermin entfernen",
"Description" : "Beschreibung", "Description" : "Beschreibung",
"Formatting help" : "Formatierungshilfe", "Attachments" : "Anhänge",
"Saved" : "Gespeichert", "Saved" : "Gespeichert",
"Unsaved changes" : "Ungesicherte Änderungen", "Unsaved changes" : "Ungesicherte Änderungen",
"Formatting help" : "Formatierungshilfe",
"Upload attachment" : "Anhang hochladen",
"Insert attachment" : "Anhang einfügen",
"Add a card description…" : "Beschreibung hinzufügen…", "Add a card description…" : "Beschreibung hinzufügen…",
"Shared boards" : "Geteilte Boards", "Shared boards" : "Geteilte Boards",
"View more" : "Mehr anzeigen", "View more" : "Mehr anzeigen",

View File

@@ -1,6 +1,9 @@
OC.L10N.register( OC.L10N.register(
"deck", "deck",
{ {
"Are you sure you want to delete this card with all of its data?" : "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την κάρτα με όλα τα δεδομένα της;",
"Delete" : "Διαγραφή",
"Remove user from card" : "Αφαίρεση χρήστη από την κάρτα",
"Hours" : "Ώρες", "Hours" : "Ώρες",
"Minutes" : "Λεπτά", "Minutes" : "Λεπτά",
"The card \"%s\" on \"%s\" has reached its due date." : "Η κάρτα \"1%s\" στο \"1%s\" έχει λήξει.", "The card \"%s\" on \"%s\" has reached its due date." : "Η κάρτα \"1%s\" στο \"1%s\" έχει λήξει.",
@@ -18,17 +21,20 @@ OC.L10N.register(
"Archived boards" : "Αρχειοθέτηση πινάκων ", "Archived boards" : "Αρχειοθέτηση πινάκων ",
"Archive" : "Αρχειοθέτηση", "Archive" : "Αρχειοθέτηση",
"Unarchive" : "Αναίρεση αρχειοθέτησης", "Unarchive" : "Αναίρεση αρχειοθέτησης",
"Delete" : "Διαγραφή",
"Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας", "Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας",
"Add card" : "Προσθήκη κάρτας", "Add card" : "Προσθήκη κάρτας",
"Close" : "Κλείσιμο",
"Sharing" : "Διαμοιρασμός", "Sharing" : "Διαμοιρασμός",
"Tags" : "Ετικέτες", "Tags" : "Ετικέτες",
"Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε", "Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε",
"No matching user or group found." : "Δεν βρέθηκε χρήστης ή ομάδα να ταιριάζει.", "No matching user or group found." : "Δεν βρέθηκε χρήστης ή ομάδα να ταιριάζει.",
"Loading" : "Γίνεται φόρτωση",
"Share" : "Διαμοιρασμός", "Share" : "Διαμοιρασμός",
"Edit" : "Επεξεργασία", "Edit" : "Επεξεργασία",
"Manage" : "Διαχείριση", "Manage" : "Διαχείριση",
"Discard share" : "Απόρριψη διαμοιρασμού", "Discard share" : "Απόρριψη διαμοιρασμού",
"Update" : "Ενημέρωση",
"Create" : "Δημιουργία",
"Create a new tag" : "Δημιούργησε νέα ετικέτα", "Create a new tag" : "Δημιούργησε νέα ετικέτα",
"Title" : "Τίτλος", "Title" : "Τίτλος",
"Members" : "Μέλη", "Members" : "Μέλη",
@@ -39,17 +45,18 @@ OC.L10N.register(
"Delete board" : "Διαγραφή πίνακα", "Delete board" : "Διαγραφή πίνακα",
"Create new board" : "Δημιουργία νέου πίνακα", "Create new board" : "Δημιουργία νέου πίνακα",
"New board title" : "Νέος τίτλος πίνακα", "New board title" : "Νέος τίτλος πίνακα",
"by" : "από",
"Modified:" : "Τροποποιήθηκε:", "Modified:" : "Τροποποιήθηκε:",
"Created:" : "Δημιουργήθηκε:", "Created:" : "Δημιουργήθηκε:",
"by" : "από",
"Due date" : "Ημερομηνία λήξης", "Due date" : "Ημερομηνία λήξης",
"Click to set" : "Κλικ για να ορίσετε", "Click to set" : "Κλικ για να ορίσετε",
"Remove due date" : "Αφαίρεση ημερομηνίας λήξης", "Remove due date" : "Αφαίρεση ημερομηνίας λήξης",
"Description" : "Περιγραφή", "Description" : "Περιγραφή",
"Formatting help" : "Βοήθεια μορφοποίησης",
"Saved" : "Αποθηκεύτηκε", "Saved" : "Αποθηκεύτηκε",
"Formatting help" : "Βοήθεια μορφοποίησης",
"Add a card description…" : "Προσθήκη περιγραφής κάρτας...", "Add a card description…" : "Προσθήκη περιγραφής κάρτας...",
"Shared boards" : "Διαμοιρασμένοι πίνακες", "Shared boards" : "Διαμοιρασμένοι πίνακες",
"View more" : "Προβολή περισσοτέρων",
"Move board to archive" : "Μετακίνηση πίνακα στην αρχειοθήκη", "Move board to archive" : "Μετακίνηση πίνακα στην αρχειοθήκη",
"Create a new board" : "Δημιουργία νέου πίνακα" "Create a new board" : "Δημιουργία νέου πίνακα"
}, },

View File

@@ -1,4 +1,7 @@
{ "translations": { { "translations": {
"Are you sure you want to delete this card with all of its data?" : "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την κάρτα με όλα τα δεδομένα της;",
"Delete" : "Διαγραφή",
"Remove user from card" : "Αφαίρεση χρήστη από την κάρτα",
"Hours" : "Ώρες", "Hours" : "Ώρες",
"Minutes" : "Λεπτά", "Minutes" : "Λεπτά",
"The card \"%s\" on \"%s\" has reached its due date." : "Η κάρτα \"1%s\" στο \"1%s\" έχει λήξει.", "The card \"%s\" on \"%s\" has reached its due date." : "Η κάρτα \"1%s\" στο \"1%s\" έχει λήξει.",
@@ -16,17 +19,20 @@
"Archived boards" : "Αρχειοθέτηση πινάκων ", "Archived boards" : "Αρχειοθέτηση πινάκων ",
"Archive" : "Αρχειοθέτηση", "Archive" : "Αρχειοθέτηση",
"Unarchive" : "Αναίρεση αρχειοθέτησης", "Unarchive" : "Αναίρεση αρχειοθέτησης",
"Delete" : "Διαγραφή",
"Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας", "Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας",
"Add card" : "Προσθήκη κάρτας", "Add card" : "Προσθήκη κάρτας",
"Close" : "Κλείσιμο",
"Sharing" : "Διαμοιρασμός", "Sharing" : "Διαμοιρασμός",
"Tags" : "Ετικέτες", "Tags" : "Ετικέτες",
"Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε", "Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε",
"No matching user or group found." : "Δεν βρέθηκε χρήστης ή ομάδα να ταιριάζει.", "No matching user or group found." : "Δεν βρέθηκε χρήστης ή ομάδα να ταιριάζει.",
"Loading" : "Γίνεται φόρτωση",
"Share" : "Διαμοιρασμός", "Share" : "Διαμοιρασμός",
"Edit" : "Επεξεργασία", "Edit" : "Επεξεργασία",
"Manage" : "Διαχείριση", "Manage" : "Διαχείριση",
"Discard share" : "Απόρριψη διαμοιρασμού", "Discard share" : "Απόρριψη διαμοιρασμού",
"Update" : "Ενημέρωση",
"Create" : "Δημιουργία",
"Create a new tag" : "Δημιούργησε νέα ετικέτα", "Create a new tag" : "Δημιούργησε νέα ετικέτα",
"Title" : "Τίτλος", "Title" : "Τίτλος",
"Members" : "Μέλη", "Members" : "Μέλη",
@@ -37,17 +43,18 @@
"Delete board" : "Διαγραφή πίνακα", "Delete board" : "Διαγραφή πίνακα",
"Create new board" : "Δημιουργία νέου πίνακα", "Create new board" : "Δημιουργία νέου πίνακα",
"New board title" : "Νέος τίτλος πίνακα", "New board title" : "Νέος τίτλος πίνακα",
"by" : "από",
"Modified:" : "Τροποποιήθηκε:", "Modified:" : "Τροποποιήθηκε:",
"Created:" : "Δημιουργήθηκε:", "Created:" : "Δημιουργήθηκε:",
"by" : "από",
"Due date" : "Ημερομηνία λήξης", "Due date" : "Ημερομηνία λήξης",
"Click to set" : "Κλικ για να ορίσετε", "Click to set" : "Κλικ για να ορίσετε",
"Remove due date" : "Αφαίρεση ημερομηνίας λήξης", "Remove due date" : "Αφαίρεση ημερομηνίας λήξης",
"Description" : "Περιγραφή", "Description" : "Περιγραφή",
"Formatting help" : "Βοήθεια μορφοποίησης",
"Saved" : "Αποθηκεύτηκε", "Saved" : "Αποθηκεύτηκε",
"Formatting help" : "Βοήθεια μορφοποίησης",
"Add a card description…" : "Προσθήκη περιγραφής κάρτας...", "Add a card description…" : "Προσθήκη περιγραφής κάρτας...",
"Shared boards" : "Διαμοιρασμένοι πίνακες", "Shared boards" : "Διαμοιρασμένοι πίνακες",
"View more" : "Προβολή περισσοτέρων",
"Move board to archive" : "Μετακίνηση πίνακα στην αρχειοθήκη", "Move board to archive" : "Μετακίνηση πίνακα στην αρχειοθήκη",
"Create a new board" : "Δημιουργία νέου πίνακα" "Create a new board" : "Δημιουργία νέου πίνακα"
},"pluralForm" :"nplurals=2; plural=(n != 1);" },"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -1,9 +1,12 @@
OC.L10N.register( OC.L10N.register(
"deck", "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",
"Remove user from card" : "Remove user from card", "Remove user from card" : "Remove user from card",
"Hours" : "Hours", "Hours" : "Hours",
"Minutes" : "Minutes", "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?",
"The card \"%s\" on \"%s\" has reached its due date." : "The card \"%s\" on \"%s\" has reached its due date.", "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.", "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.", "{user} has shared the board %s with you." : "{user} has shared the board %s with you.",
@@ -12,6 +15,8 @@ OC.L10N.register(
"Action needed" : "Action needed", "Action needed" : "Action needed",
"Later" : "Later", "Later" : "Later",
"Deck" : "Deck", "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", "Add a new stack" : "Add a new stack",
"Submit" : "Submit", "Submit" : "Submit",
"Show archived cards" : "Show archived cards", "Show archived cards" : "Show archived cards",
@@ -21,7 +26,6 @@ OC.L10N.register(
"Archived boards" : "Archived boards", "Archived boards" : "Archived boards",
"Archive" : "Archive", "Archive" : "Archive",
"Unarchive" : "Unarchive", "Unarchive" : "Unarchive",
"Delete" : "Delete",
"Enter a card title" : "Enter a card title", "Enter a card title" : "Enter a card title",
"Add card" : "Add card", "Add card" : "Add card",
"Close" : "Close", "Close" : "Close",
@@ -50,21 +54,22 @@ OC.L10N.register(
"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.", "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", "Create new board" : "Create new board",
"New board title" : "New board title", "New board title" : "New board title",
"by" : "by",
"Modified:" : "Modified:", "Modified:" : "Modified:",
"Created:" : "Created:", "Created:" : "Created:",
"by" : "by",
"Choose a tag" : "Choose a tag", "Choose a tag" : "Choose a tag",
"Add a tag" : "Add a tag", "Add a tag" : "Add a tag",
"Select tags" : "Select tags", "Select tags" : "Select tags",
"Assign users" : "Assign users", "Assign users" : "Assign users",
"Choose a user to assign" : "Choose a user to assign",
"Assign this card to a user" : "Assign this card to a user", "Assign this card to a user" : "Assign this card to a user",
"Due date" : "Due date", "Due date" : "Due date",
"Click to set" : "Click to set", "Click to set" : "Click to set",
"Remove due date" : "Remove due date", "Remove due date" : "Remove due date",
"Description" : "Description", "Description" : "Description",
"Formatting help" : "Formatting help",
"Saved" : "Saved", "Saved" : "Saved",
"Unsaved changes" : "Unsaved changes", "Unsaved changes" : "Unsaved changes",
"Formatting help" : "Formatting help",
"Add a card description…" : "Add a card description…", "Add a card description…" : "Add a card description…",
"Shared boards" : "Shared boards", "Shared boards" : "Shared boards",
"View more" : "View more", "View more" : "View more",

View File

@@ -1,7 +1,10 @@
{ "translations": { { "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",
"Remove user from card" : "Remove user from card", "Remove user from card" : "Remove user from card",
"Hours" : "Hours", "Hours" : "Hours",
"Minutes" : "Minutes", "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?",
"The card \"%s\" on \"%s\" has reached its due date." : "The card \"%s\" on \"%s\" has reached its due date.", "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.", "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.", "{user} has shared the board %s with you." : "{user} has shared the board %s with you.",
@@ -10,6 +13,8 @@
"Action needed" : "Action needed", "Action needed" : "Action needed",
"Later" : "Later", "Later" : "Later",
"Deck" : "Deck", "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", "Add a new stack" : "Add a new stack",
"Submit" : "Submit", "Submit" : "Submit",
"Show archived cards" : "Show archived cards", "Show archived cards" : "Show archived cards",
@@ -19,7 +24,6 @@
"Archived boards" : "Archived boards", "Archived boards" : "Archived boards",
"Archive" : "Archive", "Archive" : "Archive",
"Unarchive" : "Unarchive", "Unarchive" : "Unarchive",
"Delete" : "Delete",
"Enter a card title" : "Enter a card title", "Enter a card title" : "Enter a card title",
"Add card" : "Add card", "Add card" : "Add card",
"Close" : "Close", "Close" : "Close",
@@ -48,21 +52,22 @@
"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.", "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", "Create new board" : "Create new board",
"New board title" : "New board title", "New board title" : "New board title",
"by" : "by",
"Modified:" : "Modified:", "Modified:" : "Modified:",
"Created:" : "Created:", "Created:" : "Created:",
"by" : "by",
"Choose a tag" : "Choose a tag", "Choose a tag" : "Choose a tag",
"Add a tag" : "Add a tag", "Add a tag" : "Add a tag",
"Select tags" : "Select tags", "Select tags" : "Select tags",
"Assign users" : "Assign users", "Assign users" : "Assign users",
"Choose a user to assign" : "Choose a user to assign",
"Assign this card to a user" : "Assign this card to a user", "Assign this card to a user" : "Assign this card to a user",
"Due date" : "Due date", "Due date" : "Due date",
"Click to set" : "Click to set", "Click to set" : "Click to set",
"Remove due date" : "Remove due date", "Remove due date" : "Remove due date",
"Description" : "Description", "Description" : "Description",
"Formatting help" : "Formatting help",
"Saved" : "Saved", "Saved" : "Saved",
"Unsaved changes" : "Unsaved changes", "Unsaved changes" : "Unsaved changes",
"Formatting help" : "Formatting help",
"Add a card description…" : "Add a card description…", "Add a card description…" : "Add a card description…",
"Shared boards" : "Shared boards", "Shared boards" : "Shared boards",
"View more" : "View more", "View more" : "View more",

View File

@@ -1,17 +1,40 @@
OC.L10N.register( OC.L10N.register(
"deck", "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",
"Remove user from card" : "Eliminar usuario de la tarjeta", "Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas", "Hours" : "Horas",
"Minutes" : "Minutos", "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?",
"Personal" : "Personal",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.", "The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %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.", "{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",
"Finished" : "Finalizado", "Finished" : "Finalizado",
"To review" : "Para revisar", "To review" : "Para revisar",
"Action needed" : "Acción necesaria", "Action needed" : "Acción necesaria",
"Later" : "Después", "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",
"The file was only partially uploaded" : "El archivo se ha subido solo parcialmente",
"No file was uploaded" : "No se ha subido ningún archivo",
"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",
"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",
"Deck" : "Deck", "Deck" : "Deck",
"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",
"Add a new stack" : "Añadir nuevo montón", "Add a new stack" : "Añadir nuevo montón",
"Submit" : "Enviar", "Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas",
@@ -19,9 +42,9 @@ OC.L10N.register(
"Board details" : "Detalles del tablero", "Board details" : "Detalles del tablero",
"All Boards" : "Todos los tableros", "All Boards" : "Todos los tableros",
"Archived boards" : "Tableros archivados", "Archived boards" : "Tableros archivados",
"Drop your files here to upload it to the card" : "Arrastra tus archivos aquí para subirlos a la tarjeta",
"Archive" : "Archivar", "Archive" : "Archivar",
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"Delete" : "Eliminar",
"Enter a card title" : "Introducir título de tarjeta", "Enter a card title" : "Introducir título de tarjeta",
"Add card" : "Añadir tarjeta", "Add card" : "Añadir tarjeta",
"Close" : "Cerrar", "Close" : "Cerrar",
@@ -50,21 +73,30 @@ OC.L10N.register(
"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.", "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", "Create new board" : "Crear nuevo tablero",
"New board title" : "Nuevo título de tablero", "New board title" : "Nuevo título de 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",
"Modified:" : "Modificado: ", "Modified:" : "Modificado: ",
"Created:" : "Creado: ", "Created:" : "Creado: ",
"by" : "por",
"Choose a tag" : "Escoge una etiqueta", "Choose a tag" : "Escoge una etiqueta",
"Add a tag" : "Añade una etiqueta", "Add a tag" : "Añade una etiqueta",
"Select tags" : "Selecciona etiquetas", "Select tags" : "Selecciona etiquetas",
"Assign users" : "Asignar usuarios", "Assign users" : "Asignar usuarios",
"Choose a user to assign" : "Escoge un usuario al que asignar",
"Assign this card to a user" : "Asignar esta tarjeta a un usuario", "Assign this card to a user" : "Asignar esta tarjeta a un usuario",
"Due date" : "Fecha límite", "Due date" : "Fecha límite",
"Click to set" : "Pinchar para establecer", "Click to set" : "Pinchar para establecer",
"Remove due date" : "Eliminar fecha límite", "Remove due date" : "Eliminar fecha límite",
"Description" : "Descripción", "Description" : "Descripción",
"Formatting help" : "Ayuda de formato", "Attachments" : "Adjuntos",
"Saved" : "Guardado", "Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados", "Unsaved changes" : "Cambios no guardados",
"Formatting help" : "Ayuda de formato",
"Upload attachment" : "Subir adjunto",
"Insert attachment" : "Insertar adjunto",
"Add a card description…" : "Añadir una descripción de tarjeta...", "Add a card description…" : "Añadir una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos", "Shared boards" : "Tableros compartidos",
"View more" : "Ver más", "View more" : "Ver más",

View File

@@ -1,15 +1,38 @@
{ "translations": { { "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",
"Remove user from card" : "Eliminar usuario de la tarjeta", "Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas", "Hours" : "Horas",
"Minutes" : "Minutos", "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?",
"Personal" : "Personal",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.", "The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %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.", "{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",
"Finished" : "Finalizado", "Finished" : "Finalizado",
"To review" : "Para revisar", "To review" : "Para revisar",
"Action needed" : "Acción necesaria", "Action needed" : "Acción necesaria",
"Later" : "Después", "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",
"The file was only partially uploaded" : "El archivo se ha subido solo parcialmente",
"No file was uploaded" : "No se ha subido ningún archivo",
"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",
"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",
"Deck" : "Deck", "Deck" : "Deck",
"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",
"Add a new stack" : "Añadir nuevo montón", "Add a new stack" : "Añadir nuevo montón",
"Submit" : "Enviar", "Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas", "Show archived cards" : "Mostrar tarjetas archivadas",
@@ -17,9 +40,9 @@
"Board details" : "Detalles del tablero", "Board details" : "Detalles del tablero",
"All Boards" : "Todos los tableros", "All Boards" : "Todos los tableros",
"Archived boards" : "Tableros archivados", "Archived boards" : "Tableros archivados",
"Drop your files here to upload it to the card" : "Arrastra tus archivos aquí para subirlos a la tarjeta",
"Archive" : "Archivar", "Archive" : "Archivar",
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"Delete" : "Eliminar",
"Enter a card title" : "Introducir título de tarjeta", "Enter a card title" : "Introducir título de tarjeta",
"Add card" : "Añadir tarjeta", "Add card" : "Añadir tarjeta",
"Close" : "Cerrar", "Close" : "Cerrar",
@@ -48,21 +71,30 @@
"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.", "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", "Create new board" : "Crear nuevo tablero",
"New board title" : "Nuevo título de tablero", "New board title" : "Nuevo título de 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",
"Modified:" : "Modificado: ", "Modified:" : "Modificado: ",
"Created:" : "Creado: ", "Created:" : "Creado: ",
"by" : "por",
"Choose a tag" : "Escoge una etiqueta", "Choose a tag" : "Escoge una etiqueta",
"Add a tag" : "Añade una etiqueta", "Add a tag" : "Añade una etiqueta",
"Select tags" : "Selecciona etiquetas", "Select tags" : "Selecciona etiquetas",
"Assign users" : "Asignar usuarios", "Assign users" : "Asignar usuarios",
"Choose a user to assign" : "Escoge un usuario al que asignar",
"Assign this card to a user" : "Asignar esta tarjeta a un usuario", "Assign this card to a user" : "Asignar esta tarjeta a un usuario",
"Due date" : "Fecha límite", "Due date" : "Fecha límite",
"Click to set" : "Pinchar para establecer", "Click to set" : "Pinchar para establecer",
"Remove due date" : "Eliminar fecha límite", "Remove due date" : "Eliminar fecha límite",
"Description" : "Descripción", "Description" : "Descripción",
"Formatting help" : "Ayuda de formato", "Attachments" : "Adjuntos",
"Saved" : "Guardado", "Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados", "Unsaved changes" : "Cambios no guardados",
"Formatting help" : "Ayuda de formato",
"Upload attachment" : "Subir adjunto",
"Insert attachment" : "Insertar adjunto",
"Add a card description…" : "Añadir una descripción de tarjeta...", "Add a card description…" : "Añadir una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos", "Shared boards" : "Tableros compartidos",
"View more" : "Ver más", "View more" : "Ver más",

View File

@@ -1,6 +1,7 @@
OC.L10N.register( OC.L10N.register(
"deck", "deck",
{ {
"Delete" : "Borrar",
"Hours" : "Horas", "Hours" : "Horas",
"Minutes" : "Minutos", "Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega", "The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
@@ -20,7 +21,6 @@ OC.L10N.register(
"Archived boards" : "Tableros archivados", "Archived boards" : "Tableros archivados",
"Archive" : "Archivar", "Archive" : "Archivar",
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta", "Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta", "Add card" : "Agregar tarjeta",
"Close" : "Cerrar", "Close" : "Cerrar",
@@ -49,9 +49,9 @@ OC.L10N.register(
"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. ", "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", "Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero", "New board title" : "Nuevo título del tablero",
"by" : "por",
"Modified:" : "Modificado:", "Modified:" : "Modificado:",
"Created:" : "Creado:", "Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta", "Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta", "Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas", "Select tags" : "Selecciona las etiquetas",
@@ -61,9 +61,9 @@ OC.L10N.register(
"Click to set" : "Da click aquí para establecer", "Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración", "Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción", "Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado", "Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados", "Unsaved changes" : "Cambios no guardados",
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...", "Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos", "Shared boards" : "Tableros compartidos",
"View more" : "Ver más", "View more" : "Ver más",

View File

@@ -1,4 +1,5 @@
{ "translations": { { "translations": {
"Delete" : "Borrar",
"Hours" : "Horas", "Hours" : "Horas",
"Minutes" : "Minutos", "Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega", "The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
@@ -18,7 +19,6 @@
"Archived boards" : "Tableros archivados", "Archived boards" : "Tableros archivados",
"Archive" : "Archivar", "Archive" : "Archivar",
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta", "Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta", "Add card" : "Agregar tarjeta",
"Close" : "Cerrar", "Close" : "Cerrar",
@@ -47,9 +47,9 @@
"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. ", "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", "Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero", "New board title" : "Nuevo título del tablero",
"by" : "por",
"Modified:" : "Modificado:", "Modified:" : "Modificado:",
"Created:" : "Creado:", "Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta", "Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta", "Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas", "Select tags" : "Selecciona las etiquetas",
@@ -59,9 +59,9 @@
"Click to set" : "Da click aquí para establecer", "Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración", "Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción", "Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado", "Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados", "Unsaved changes" : "Cambios no guardados",
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...", "Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos", "Shared boards" : "Tableros compartidos",
"View more" : "Ver más", "View more" : "Ver más",

View File

@@ -1,6 +1,7 @@
OC.L10N.register( OC.L10N.register(
"deck", "deck",
{ {
"Delete" : "Borrar",
"Finished" : "Terminado", "Finished" : "Terminado",
"To review" : "Para revisar", "To review" : "Para revisar",
"Action needed" : "Acción requerida", "Action needed" : "Acción requerida",
@@ -12,7 +13,6 @@ OC.L10N.register(
"All Boards" : "Todos los Tablero", "All Boards" : "Todos los Tablero",
"Archive" : "Archivar", "Archive" : "Archivar",
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingrese el títilo de la tarjeta", "Enter a card title" : "Ingrese el títilo de la tarjeta",
"Sharing" : "Compartiendo", "Sharing" : "Compartiendo",
"Select users or groups to share with" : "Seleccione los usuarios o grupos con los cuales compartir", "Select users or groups to share with" : "Seleccione los usuarios o grupos con los cuales compartir",
@@ -24,12 +24,12 @@ OC.L10N.register(
"Members" : "Miembros", "Members" : "Miembros",
"Create new board" : "Crear un nuevo tablero", "Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título de tablero", "New board title" : "Nuevo título de tablero",
"by" : "por",
"Modified:" : "Modificado:", "Modified:" : "Modificado:",
"Created:" : "Creado:", "Created:" : "Creado:",
"by" : "por",
"Description" : "Descripción", "Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado", "Saved" : "Guardado",
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...", "Add a card description…" : "Agregar una descripción de tarjeta...",
"Create a new board" : "Crear nuevo tablero" "Create a new board" : "Crear nuevo tablero"
}, },

View File

@@ -1,4 +1,5 @@
{ "translations": { { "translations": {
"Delete" : "Borrar",
"Finished" : "Terminado", "Finished" : "Terminado",
"To review" : "Para revisar", "To review" : "Para revisar",
"Action needed" : "Acción requerida", "Action needed" : "Acción requerida",
@@ -10,7 +11,6 @@
"All Boards" : "Todos los Tablero", "All Boards" : "Todos los Tablero",
"Archive" : "Archivar", "Archive" : "Archivar",
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingrese el títilo de la tarjeta", "Enter a card title" : "Ingrese el títilo de la tarjeta",
"Sharing" : "Compartiendo", "Sharing" : "Compartiendo",
"Select users or groups to share with" : "Seleccione los usuarios o grupos con los cuales compartir", "Select users or groups to share with" : "Seleccione los usuarios o grupos con los cuales compartir",
@@ -22,12 +22,12 @@
"Members" : "Miembros", "Members" : "Miembros",
"Create new board" : "Crear un nuevo tablero", "Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título de tablero", "New board title" : "Nuevo título de tablero",
"by" : "por",
"Modified:" : "Modificado:", "Modified:" : "Modificado:",
"Created:" : "Creado:", "Created:" : "Creado:",
"by" : "por",
"Description" : "Descripción", "Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado", "Saved" : "Guardado",
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...", "Add a card description…" : "Agregar una descripción de tarjeta...",
"Create a new board" : "Crear nuevo tablero" "Create a new board" : "Crear nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);" },"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -1,8 +1,12 @@
OC.L10N.register( OC.L10N.register(
"deck", "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", "Hours" : "Horas",
"Minutes" : "Minutos", "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?",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega", "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.", "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. ", "{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -20,7 +24,6 @@ OC.L10N.register(
"Archived boards" : "Tableros archivados", "Archived boards" : "Tableros archivados",
"Archive" : "Archivar", "Archive" : "Archivar",
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta", "Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta", "Add card" : "Agregar tarjeta",
"Close" : "Cerrar", "Close" : "Cerrar",
@@ -49,21 +52,22 @@ OC.L10N.register(
"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. ", "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", "Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero", "New board title" : "Nuevo título del tablero",
"by" : "por",
"Modified:" : "Modificado:", "Modified:" : "Modificado:",
"Created:" : "Creado:", "Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta", "Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta", "Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas", "Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios", "Assign users" : "Asingar usuarios",
"Choose a user to assign" : "Elige un usuario a asignar",
"Assign this card to a user" : "Asignar esta tarjeta al usuario", "Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento", "Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer", "Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración", "Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción", "Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado", "Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados", "Unsaved changes" : "Cambios no guardados",
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...", "Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos", "Shared boards" : "Tableros compartidos",
"View more" : "Ver más", "View more" : "Ver más",

View File

@@ -1,6 +1,10 @@
{ "translations": { { "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", "Hours" : "Horas",
"Minutes" : "Minutos", "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?",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega", "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.", "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. ", "{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -18,7 +22,6 @@
"Archived boards" : "Tableros archivados", "Archived boards" : "Tableros archivados",
"Archive" : "Archivar", "Archive" : "Archivar",
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta", "Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta", "Add card" : "Agregar tarjeta",
"Close" : "Cerrar", "Close" : "Cerrar",
@@ -47,21 +50,22 @@
"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. ", "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", "Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero", "New board title" : "Nuevo título del tablero",
"by" : "por",
"Modified:" : "Modificado:", "Modified:" : "Modificado:",
"Created:" : "Creado:", "Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta", "Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta", "Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas", "Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios", "Assign users" : "Asingar usuarios",
"Choose a user to assign" : "Elige un usuario a asignar",
"Assign this card to a user" : "Asignar esta tarjeta al usuario", "Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento", "Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer", "Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración", "Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción", "Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado", "Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados", "Unsaved changes" : "Cambios no guardados",
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...", "Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos", "Shared boards" : "Tableros compartidos",
"View more" : "Ver más", "View more" : "Ver más",

View File

@@ -1,8 +1,12 @@
OC.L10N.register( OC.L10N.register(
"deck", "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", "Hours" : "Horas",
"Minutes" : "Minutos", "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?",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega", "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.", "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. ", "{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -20,7 +24,6 @@ OC.L10N.register(
"Archived boards" : "Tableros archivados", "Archived boards" : "Tableros archivados",
"Archive" : "Archivar", "Archive" : "Archivar",
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta", "Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta", "Add card" : "Agregar tarjeta",
"Close" : "Cerrar", "Close" : "Cerrar",
@@ -49,21 +52,22 @@ OC.L10N.register(
"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. ", "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", "Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero", "New board title" : "Nuevo título del tablero",
"by" : "por",
"Modified:" : "Modificado:", "Modified:" : "Modificado:",
"Created:" : "Creado:", "Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta", "Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta", "Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas", "Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios", "Assign users" : "Asingar usuarios",
"Choose a user to assign" : "Elige un usuario a asignar",
"Assign this card to a user" : "Asignar esta tarjeta al usuario", "Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento", "Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer", "Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración", "Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción", "Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado", "Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados", "Unsaved changes" : "Cambios no guardados",
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...", "Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos", "Shared boards" : "Tableros compartidos",
"View more" : "Ver más", "View more" : "Ver más",

View File

@@ -1,6 +1,10 @@
{ "translations": { { "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", "Hours" : "Horas",
"Minutes" : "Minutos", "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?",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega", "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.", "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. ", "{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -18,7 +22,6 @@
"Archived boards" : "Tableros archivados", "Archived boards" : "Tableros archivados",
"Archive" : "Archivar", "Archive" : "Archivar",
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta", "Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta", "Add card" : "Agregar tarjeta",
"Close" : "Cerrar", "Close" : "Cerrar",
@@ -47,21 +50,22 @@
"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. ", "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", "Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero", "New board title" : "Nuevo título del tablero",
"by" : "por",
"Modified:" : "Modificado:", "Modified:" : "Modificado:",
"Created:" : "Creado:", "Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta", "Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta", "Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas", "Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios", "Assign users" : "Asingar usuarios",
"Choose a user to assign" : "Elige un usuario a asignar",
"Assign this card to a user" : "Asignar esta tarjeta al usuario", "Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento", "Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer", "Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración", "Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción", "Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado", "Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados", "Unsaved changes" : "Cambios no guardados",
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...", "Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos", "Shared boards" : "Tableros compartidos",
"View more" : "Ver más", "View more" : "Ver más",

View File

@@ -1,8 +1,12 @@
OC.L10N.register( OC.L10N.register(
"deck", "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", "Hours" : "Horas",
"Minutes" : "Minutos", "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?",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega", "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.", "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. ", "{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -20,7 +24,6 @@ OC.L10N.register(
"Archived boards" : "Tableros archivados", "Archived boards" : "Tableros archivados",
"Archive" : "Archivar", "Archive" : "Archivar",
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta", "Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta", "Add card" : "Agregar tarjeta",
"Close" : "Cerrar", "Close" : "Cerrar",
@@ -49,21 +52,22 @@ OC.L10N.register(
"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. ", "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", "Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero", "New board title" : "Nuevo título del tablero",
"by" : "por",
"Modified:" : "Modificado:", "Modified:" : "Modificado:",
"Created:" : "Creado:", "Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta", "Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta", "Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas", "Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios", "Assign users" : "Asingar usuarios",
"Choose a user to assign" : "Elige un usuario a asignar",
"Assign this card to a user" : "Asignar esta tarjeta al usuario", "Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento", "Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer", "Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración", "Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción", "Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado", "Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados", "Unsaved changes" : "Cambios no guardados",
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...", "Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos", "Shared boards" : "Tableros compartidos",
"View more" : "Ver más", "View more" : "Ver más",

View File

@@ -1,6 +1,10 @@
{ "translations": { { "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", "Hours" : "Horas",
"Minutes" : "Minutos", "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?",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega", "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.", "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. ", "{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
@@ -18,7 +22,6 @@
"Archived boards" : "Tableros archivados", "Archived boards" : "Tableros archivados",
"Archive" : "Archivar", "Archive" : "Archivar",
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta", "Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta", "Add card" : "Agregar tarjeta",
"Close" : "Cerrar", "Close" : "Cerrar",
@@ -47,21 +50,22 @@
"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. ", "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", "Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero", "New board title" : "Nuevo título del tablero",
"by" : "por",
"Modified:" : "Modificado:", "Modified:" : "Modificado:",
"Created:" : "Creado:", "Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta", "Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta", "Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas", "Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios", "Assign users" : "Asingar usuarios",
"Choose a user to assign" : "Elige un usuario a asignar",
"Assign this card to a user" : "Asignar esta tarjeta al usuario", "Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento", "Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer", "Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración", "Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción", "Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado", "Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados", "Unsaved changes" : "Cambios no guardados",
"Formatting help" : "Ayuda de formato",
"Add a card description…" : "Agregar una descripción de tarjeta...", "Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos", "Shared boards" : "Tableros compartidos",
"View more" : "Ver más", "View more" : "Ver más",

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