Compare commits

...

80 Commits

Author SHA1 Message Date
Julius Härtl
77ea44f77c Bump version to 0.8.2
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-04-08 21:23:20 +02:00
Julius Härtl
183f614a3a Set proper paths in nextcloudignore
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-04-08 21:19:55 +02:00
Julius Härtl
e8a6ef1116 Update krankerl config
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-04-08 18:13:30 +02:00
Julius Härtl
2e182b6571 Bump version to 0.8.1
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-04-08 18:11:43 +02:00
Julius Härtl
23f86231fd Merge pull request #1664 from nextcloud/backport/1653/stable0.8
[stable0.8] Harden permission check on reshares
2020-04-07 17:35:43 +02:00
Julius Härtl
c6b25a6438 Let new shares only use the current users permissions
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-04-07 10:08:39 +00:00
dependabot-preview[bot]
b7ce980f44 Merge pull request #1637 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/webpack-4.42.1 2020-03-29 07:21:51 +00:00
dependabot-preview[bot]
615210dde4 Bump webpack from 4.42.0 to 4.42.1 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.42.0 to 4.42.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.42.0...v4.42.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-29 01:13:50 +00:00
dependabot-preview[bot]
245d5a3eaf Merge pull request #1615 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel-loader-8.1.0 2020-03-22 11:54:35 +00:00
dependabot-preview[bot]
e865776575 Merge pull request #1618 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/url-loader-4.0.0 2020-03-22 11:51:42 +00:00
dependabot-preview[bot]
8f89d34d9f Bump babel-loader from 8.0.6 to 8.1.0 in /js
Bumps [babel-loader](https://github.com/babel/babel-loader) from 8.0.6 to 8.1.0.
- [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/v8.0.6...v8.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-22 11:20:56 +00:00
dependabot-preview[bot]
c12a5ae879 Bump url-loader from 3.0.0 to 4.0.0 in /js
Bumps [url-loader](https://github.com/webpack-contrib/url-loader) from 3.0.0 to 4.0.0.
- [Release notes](https://github.com/webpack-contrib/url-loader/releases)
- [Changelog](https://github.com/webpack-contrib/url-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/url-loader/compare/v3.0.0...v4.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-22 11:20:13 +00:00
dependabot-preview[bot]
da5ef24085 Merge pull request #1613 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/core-7.9.0 2020-03-22 11:19:16 +00:00
dependabot-preview[bot]
fd88a0b85a Merge pull request #1616 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/preset-env-7.9.0 2020-03-22 11:19:05 +00:00
dependabot-preview[bot]
eca18e43f9 Merge pull request #1619 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/vue-loader-15.9.1 2020-03-22 11:18:34 +00:00
dependabot-preview[bot]
a7c302e7e0 Bump vue-loader from 15.9.0 to 15.9.1 in /js
Bumps [vue-loader](https://github.com/vuejs/vue-loader) from 15.9.0 to 15.9.1.
- [Release notes](https://github.com/vuejs/vue-loader/releases)
- [Changelog](https://github.com/vuejs/vue-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-loader/compare/v15.9.0...v15.9.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-22 02:22:59 +00:00
dependabot-preview[bot]
609eaf6929 Bump @babel/preset-env from 7.8.7 to 7.9.0 in /js
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.7 to 7.9.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.7...v7.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-22 02:21:43 +00:00
dependabot-preview[bot]
5130cc931a Bump @babel/core from 7.8.7 to 7.9.0 in /js
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.7 to 7.9.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.7...v7.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-22 02:20:37 +00:00
dependabot-preview[bot]
3de68ebfcd Merge pull request #1605 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/vuex-3.1.3 2020-03-16 07:37:43 +00:00
dependabot-preview[bot]
372935f190 Bump vuex from 3.1.2 to 3.1.3 in /js
Bumps [vuex](https://github.com/vuejs/vuex) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/vuejs/vuex/releases)
- [Commits](https://github.com/vuejs/vuex/compare/v3.1.2...v3.1.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-15 02:14:56 +00:00
Julius Härtl
fec0658102 Merge pull request #1602 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/acorn-6.4.1
[Security] Bump acorn from 6.4.0 to 6.4.1 in /js
2020-03-14 09:50:53 +01:00
dependabot-preview[bot]
1411c327cb [Security] Bump acorn from 6.4.0 to 6.4.1 in /js
Bumps [acorn](https://github.com/acornjs/acorn) from 6.4.0 to 6.4.1. **This update includes a security fix.**
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/6.4.0...6.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-13 21:58:01 +00:00
dependabot-preview[bot]
c7c9edf2e3 Merge pull request #1584 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/core-7.8.7 2020-03-07 19:37:44 +00:00
dependabot-preview[bot]
97428b51ff Bump @babel/core from 7.8.6 to 7.8.7 in /js
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.6 to 7.8.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.6...v7.8.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-07 19:31:01 +00:00
dependabot-preview[bot]
52bcd0ec03 Merge pull request #1582 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/polyfill-7.8.7 2020-03-07 19:29:05 +00:00
dependabot-preview[bot]
442d9bdedd Bump @babel/polyfill from 7.8.3 to 7.8.7 in /js
Bumps [@babel/polyfill](https://github.com/babel/babel) from 7.8.3 to 7.8.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-07 19:18:00 +00:00
dependabot-preview[bot]
d761649d44 Merge pull request #1581 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/preset-env-7.8.7 2020-03-07 19:16:12 +00:00
dependabot-preview[bot]
5da9cf5c3f Merge pull request #1580 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/webpack-4.42.0 2020-03-07 19:13:47 +00:00
dependabot-preview[bot]
d66a913089 Bump @babel/preset-env from 7.8.6 to 7.8.7 in /js
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.6 to 7.8.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.6...v7.8.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-07 17:31:52 +00:00
dependabot-preview[bot]
8999640459 Bump webpack from 4.41.6 to 4.42.0 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.41.6 to 4.42.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.41.6...v4.42.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-07 17:31:14 +00:00
dependabot-preview[bot]
e8b5577def Merge pull request #1565 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/core-7.8.6 2020-03-02 06:51:04 +00:00
dependabot-preview[bot]
3c52a85169 Bump @babel/core from 7.8.4 to 7.8.6 in /js
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.4 to 7.8.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.4...v7.8.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 06:19:55 +00:00
dependabot-preview[bot]
0f7a473c65 Merge pull request #1564 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/preset-env-7.8.6 2020-03-02 06:17:51 +00:00
dependabot-preview[bot]
8dae2b28a6 Bump @babel/preset-env from 7.8.4 to 7.8.6 in /js
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.4 to 7.8.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.4...v7.8.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-01 02:13:22 +00:00
Julius Härtl
ce1e93ab26 Merge pull request #1540 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/webpack-cli-3.3.11
Bump webpack-cli from 3.3.10 to 3.3.11 in /js
2020-02-16 14:48:49 +01:00
dependabot-preview[bot]
28352740d9 Merge pull request #1542 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/vue-loader-15.9.0 2020-02-16 13:41:58 +00:00
dependabot-preview[bot]
8de78a29ff Bump webpack-cli from 3.3.10 to 3.3.11 in /js
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 3.3.10 to 3.3.11.
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/next/CHANGELOG_v3.md)
- [Commits](https://github.com/webpack/webpack-cli/compare/v3.3.10...v3.3.11)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-16 13:39:18 +00:00
dependabot-preview[bot]
8d40d95f0b Bump vue-loader from 15.8.3 to 15.9.0 in /js
Bumps [vue-loader](https://github.com/vuejs/vue-loader) from 15.8.3 to 15.9.0.
- [Release notes](https://github.com/vuejs/vue-loader/releases)
- [Changelog](https://github.com/vuejs/vue-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-loader/compare/v15.8.3...v15.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-16 13:39:18 +00:00
Julius Härtl
de4ea71842 Merge pull request #1539 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/webpack-4.41.6
Bump webpack from 4.41.5 to 4.41.6 in /js
2020-02-16 14:37:29 +01:00
dependabot-preview[bot]
e9f7aef7a3 Bump webpack from 4.41.5 to 4.41.6 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.41.5 to 4.41.6.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.41.5...v4.41.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-16 02:14:01 +00:00
Julius Härtl
8accc8a020 Check for board membership on comments entity event
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-02-11 09:33:32 +01:00
dependabot-preview[bot]
3feb261e1b Bump @uirouter/angularjs from 1.0.24 to 1.0.25 in /js
Bumps [@uirouter/angularjs](https://github.com/angular-ui/ui-router) from 1.0.24 to 1.0.25.
- [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.24...1.0.25)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-10 09:57:35 +01:00
Julius Härtl
9275d8277a Bump @babel/core from 7.8.3 to 7.8.4 in /js (#1517)
Bump @babel/core from 7.8.3 to 7.8.4 in /js
2020-02-02 14:21:06 +01:00
Julius Härtl
2980dad4f5 Bump @babel/preset-env from 7.8.3 to 7.8.4 in /js (#1518)
Bump @babel/preset-env from 7.8.3 to 7.8.4 in /js
2020-02-02 14:20:51 +01:00
dependabot-preview[bot]
a88d19b3ce Bump @babel/preset-env from 7.8.3 to 7.8.4 in /js
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.3 to 7.8.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-02 02:14:11 +00:00
dependabot-preview[bot]
91b968cc97 Bump @babel/core from 7.8.3 to 7.8.4 in /js
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.3 to 7.8.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-02 02:13:39 +00:00
Julius Härtl
1e270389f6 Merge pull request #1491 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/plugin-syntax-dynamic-import-7.8.3
Bump @babel/plugin-syntax-dynamic-import from 7.7.4 to 7.8.3 in /js
2020-01-26 10:13:43 +01:00
dependabot-preview[bot]
a2649885a5 Bump @babel/plugin-syntax-dynamic-import from 7.7.4 to 7.8.3 in /js
Bumps [@babel/plugin-syntax-dynamic-import](https://github.com/babel/babel) from 7.7.4 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.4...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-26 08:39:41 +00:00
Nextcloud bot
be62eafe2b [tx-robot] updated from transifex 2020-01-25 02:27:38 +00:00
Julius Härtl
b77dc10812 Merge pull request #1457 from nextcloud/dependabot/npm_and_yarn/js/babel/core-7.8.3
Bump @babel/core from 7.7.7 to 7.8.3 in /js
2020-01-24 18:49:50 +01:00
Nextcloud bot
eb5a8a0655 [tx-robot] updated from transifex 2020-01-24 02:27:49 +00:00
dependabot-preview[bot]
562aad3aa3 Bump @babel/core from 7.7.7 to 7.8.3 in /js
Bumps [@babel/core](https://github.com/babel/babel) from 7.7.7 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.7...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-23 20:29:13 +00:00
Nextcloud bot
19a64a71c3 [tx-robot] updated from transifex 2020-01-23 02:30:19 +00:00
Julius Härtl
a0a0d66ebf Bump max-version to 19
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-01-22 13:39:18 +01:00
Julius Härtl
4735a2ea0c Merge pull request #1462 from nextcloud/dependabot/npm_and_yarn/js/style-loader-1.1.3
Bump style-loader from 1.1.2 to 1.1.3 in /js
2020-01-22 13:26:13 +01:00
Nextcloud bot
f282d7bd20 [tx-robot] updated from transifex 2020-01-22 02:29:37 +00:00
Nextcloud bot
e2ec15b7df [tx-robot] updated from transifex 2020-01-20 02:28:03 +00:00
dependabot-preview[bot]
3f11652c65 Bump style-loader from 1.1.2 to 1.1.3 in /js
Bumps [style-loader](https://github.com/webpack-contrib/style-loader) from 1.1.2 to 1.1.3.
- [Release notes](https://github.com/webpack-contrib/style-loader/releases)
- [Changelog](https://github.com/webpack-contrib/style-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/style-loader/compare/v1.1.2...v1.1.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-19 02:53:59 +00:00
Nextcloud bot
0720e6acbe [tx-robot] updated from transifex 2020-01-19 02:28:16 +00:00
Julius Härtl
f77e0ad5d1 Bump @babel/preset-env from 7.7.7 to 7.8.3 in /js (#1458)
Bump @babel/preset-env from 7.7.7 to 7.8.3 in /js
2020-01-18 17:06:38 +01:00
dependabot-preview[bot]
f0873d1c75 Bump @babel/preset-env from 7.7.7 to 7.8.3 in /js
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.7.7 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.7...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-18 14:00:43 +00:00
dependabot-preview[bot]
7d2b509f6b Merge pull request #1440 from nextcloud/dependabot/npm_and_yarn/js/css-loader-3.4.2 2020-01-18 13:59:08 +00:00
dependabot-preview[bot]
b91ddd3068 Bump css-loader from 3.4.1 to 3.4.2 in /js
Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 3.4.1 to 3.4.2.
- [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/v3.4.1...v3.4.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-18 13:52:38 +00:00
Julius Härtl
2bf8e41ac2 Bump @babel/polyfill from 7.7.0 to 7.8.3 in /js (#1460)
Bump @babel/polyfill from 7.7.0 to 7.8.3 in /js
2020-01-18 14:50:56 +01:00
Nextcloud bot
713bfcfd79 [tx-robot] updated from transifex 2020-01-18 02:29:44 +00:00
dependabot-preview[bot]
9b257c431f Bump @babel/polyfill from 7.7.0 to 7.8.3 in /js
Bumps [@babel/polyfill](https://github.com/babel/babel) from 7.7.0 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.0...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-17 21:51:49 +00:00
Julius Härtl
4f5433374f Merge pull request #1454 from nextcloud/release/0.8.0
Bump version to 0.8.0
2020-01-17 22:49:57 +01:00
Julius Härtl
20e085f379 Limit card assignment to users who are participants of the board (#1395)
Limit card assignment to users who are participants of the board
2020-01-16 23:10:51 +01:00
Julius Härtl
722f3a185d Bump version to 0.8.0
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-01-16 23:07:12 +01:00
Nextcloud bot
4a34df1e64 [tx-robot] updated from transifex 2020-01-16 02:29:41 +00:00
Nextcloud bot
6f6142d192 [tx-robot] updated from transifex 2020-01-15 02:29:26 +00:00
Nextcloud bot
ad1bca88a9 [tx-robot] updated from transifex 2020-01-14 02:29:12 +00:00
Julius Härtl
e21de3dc40 Merge pull request #1434 from 4workers/insensitive-search
Case insensitive searching
2020-01-13 10:04:20 +01:00
Sergey Shliakhov
bc6b97e3ba Disable eslint rule
Signed-off-by: Sergey Shliakhov <husband.sergey@gmail.com>
2020-01-13 05:36:30 +01:00
Nextcloud bot
e7fd7aa86e [tx-robot] updated from transifex 2020-01-11 02:29:24 +00:00
Sergey Shliakhov
6d0e2baad8 Fix code style
https://github.com/nextcloud/deck/issues/1233
Signed-off-by: Sergey Shliakhov <husband.sergey@gmail.com>
2020-01-10 13:33:49 +01:00
Sergey Shliakhov
fee76b296e Case insensitive searching
https://github.com/nextcloud/deck/issues/1233
Signed-off-by: Sergey Shliakhov <husband.sergey@gmail.com>
2020-01-10 11:51:53 +01:00
Nextcloud bot
408ffb7b10 [tx-robot] updated from transifex 2020-01-10 02:29:18 +00:00
Julius Härtl
e5edd96b74 Fix tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-01-08 21:50:17 +01:00
Julius Härtl
6fa7295b42 Limit card assignment to users who are participants of the board
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-01-08 21:23:44 +01:00
38 changed files with 2036 additions and 2353 deletions

31
.nextcloudignore Normal file
View File

@@ -0,0 +1,31 @@
/build/
/.git
/js/node_modules
/js/tests
/js/legacy
/js/controller
/js/directive
/js/filters
/js/service
/js/bower.json
/js/.bowerrc
/js/.jshintrc
/js/Gruntfile.js
/js/package.json
/js/package-lock.json
/docs/
/tests
/.codecov.yml
/composer.json
/composer.lock
/_config.yml
/.drone.yml
/.travis.yml
/.eslintignore
/.eslintrc.yml
/.gitignore
/issue_template.md
/krankerl.toml
/Makefile
/mkdocs.yml
/run-eslint.sh

View File

@@ -1,6 +1,33 @@
# Changelog
All notable changes to this project will be documented in this file.
## 0.8.2 - 2020-04-08
## Fixed
- Fix build with missing javascript bundles
## 0.8.1 - 2020-04-08
## Added
- Nextcloud 19 compatibility
## Fixed
- Let new shares only use the current users permissions
- Check for board membership on comments entity event
## 0.8.0 - 2020-01-16
## Added
- Case insensitive search (@matchish)
## Fixed
- Fix reversed permissions for reordering stacks (@JLueke)
- Fix reversed visibility of 'add stack' field (@JLueke)
- Fix occ export command
- Fix error causing cron execution to fail
- Fix activity entry on moving cards
- Proper wording in activity timeline (@a11exandru)
## 0.7.0 - 2019-08-20
## Added

View File

@@ -84,7 +84,7 @@ test-unit:
ifeq (, $(shell which phpunit 2> /dev/null))
@echo "No phpunit command available, downloading a copy from the web"
mkdir -p $(build_tools_directory)
curl -sSL https://phar.phpunit.de/phpunit-5.7.phar -o $(build_tools_directory)/phpunit.phar
curl -sSL https://phar.phpunit.de/phpunit-8.2.phar -o $(build_tools_directory)/phpunit.phar
php $(build_tools_directory)/phpunit.phar -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
php $(build_tools_directory)/phpunit.phar -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
else

View File

@@ -17,7 +17,7 @@
- 🚀 Get your project organized
</description>
<version>0.7.0</version>
<version>0.8.2</version>
<licence>agpl</licence>
<author>Julius Härtl</author>
<namespace>Deck</namespace>
@@ -36,7 +36,7 @@
<database min-version="9.4">pgsql</database>
<database>sqlite</database>
<database min-version="5.5">mysql</database>
<nextcloud min-version="17" max-version="18" />
<nextcloud min-version="17" max-version="19" />
</dependencies>
<background-jobs>
<job>OCA\Deck\Cron\DeleteCron</job>

View File

@@ -651,6 +651,33 @@ The board list endpoint supports setting an `If-Modified-Since` header to limit
##### 200 Success
```json
{
"id": 3,
"participant": {
"primaryKey": "admin",
"uid": "admin",
"displayname": "admin"
},
"cardId": 1
}
```
##### 400 Bad request
```json
{
"status": 400,
"message": "The user is already assigned to the card"
}
```
The request can fail with a bad request response for the following reasons:
- Missing or wrongly formatted request parameters
- The user is already assigned to the card
- The user is not part of the board
### PUT /boards/{boardId}/stacks/{stackId}/cards/{cardId}/unassignUser - Assign a user to a card
#### Request parameters

View File

@@ -4,20 +4,20 @@
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
import app from '../app/App.js';
@@ -31,7 +31,9 @@ app.filter('cardSearchFilter', function() {
angular.forEach(cards, function(card){
var _card = card;
Object.keys(rules).some(function(rule) {
if(_card[rule].search(rules[rule])>=0) {
var pattern = rules[rule];
// eslint-disable-next-line detect-non-literal-regexp
if(_card[rule].search(new RegExp(pattern, 'i'))>=0) {
_result[_card.id] = _card;
}
});

3213
js/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@
"test": "tests"
},
"dependencies": {
"@uirouter/angularjs": "^1.0.24",
"@uirouter/angularjs": "^1.0.25",
"angular": "^1.7.9",
"angular-animate": "^1.7.9",
"angular-file-upload": "^2.5.0",
@@ -23,24 +23,24 @@
"ng-sortable": "^1.3.8",
"ui-select": "^0.19.8",
"vue": "^2.6.11",
"vuex": "^3.1.2"
"vuex": "^3.1.3"
},
"devDependencies": {
"@babel/core": "^7.7.7",
"@babel/plugin-syntax-dynamic-import": "^7.7.4",
"@babel/polyfill": "^7.7.0",
"@babel/preset-env": "^7.7.7",
"babel-loader": "^8.0.6",
"css-loader": "^3.4.1",
"@babel/core": "^7.9.0",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/polyfill": "^7.8.7",
"@babel/preset-env": "^7.9.0",
"babel-loader": "^8.1.0",
"css-loader": "^3.4.2",
"karma": "^4.4.1",
"mini-css-extract-plugin": "^0.9.0",
"style-loader": "^1.1.2",
"url-loader": "^3.0.0",
"vue-loader": "^15.8.3",
"style-loader": "^1.1.3",
"url-loader": "^4.0.0",
"vue-loader": "^15.9.1",
"vue-style-loader": "^4.1.2",
"vue-template-compiler": "^2.6.11",
"webpack": "^4.41.5",
"webpack-cli": "^3.3.10",
"webpack": "^4.42.1",
"webpack-cli": "^3.3.11",
"webpack-merge": "^4.2.2"
},
"scripts": {

View File

@@ -1,38 +1,4 @@
[package]
exclude = [
"build/",
".git",
"js/node_modules",
"js/tests",
"js/legacy",
"js/controller",
"js/directive",
"js/filters",
"js/service",
"js/bower.json",
"js/.bowerrc",
"js/.jshintrc",
"js/Gruntfile.js",
"js/package.json",
"js/package-lock.json",
"docs/",
"tests",
".codecov.yml",
"composer.json",
"composer.lock",
"_config.yml",
".drone.yml",
".travis.yml",
".eslintignore",
".eslintrc.yml",
".gitignore",
"issue_template.md",
"krankerl.toml",
"Makefile",
"mkdocs.yml",
"run-eslint.sh"
]
before_cmds = [
'make clean-build',
'make build'

View File

@@ -4,13 +4,13 @@ OC.L10N.register(
"Please provide a content for your comment." : "Zadejte obsah svého komentáře.",
"Posting the comment failed." : "Odeslání komentáře se nezdařilo.",
"The comment has been deleted" : "Komentář byl smazán",
"The associated stack is deleted as well, it will be restored as well." : "Související stack je také smazaný a bude také obnoven.",
"Restore associated stack" : "Obnovit související stack",
"The associated stack is deleted as well, it will be restored as well." : "Související sloupec je také smazaný a bude také obnoven.",
"Restore associated stack" : "Obnovit související sloupec",
"Remove user from card" : "Odebrat uživatele z karty",
"Hours" : "Hodiny",
"Minutes" : "Minuty",
"Link to a board" : "Propojit s tabulí",
"Maximum file size of {size} exceeded" : "U souboru {size} překročena nejvyšší umožněná velikost",
"Maximum file size of {size} exceeded" : "Překročena nejvyšší umožněná velikost souboru {size}",
"File already exists" : "Soubor už existuje",
"You have created a new board {board}" : "Vytvořili jste tabuli {board}",
"{user} has created a new board {board}" : "{user} vytvořil(a) novou tabuli {board}",
@@ -28,55 +28,55 @@ OC.L10N.register(
"{user} has archived the board {before}" : "{user} zaarchivoval(a) tabuli {before}",
"You have unarchived the board {board}" : "Vrátili jste zpět z archivace tabuli {board}",
"{user} has unarchived the board {before}" : "{user} vrátil(a) tabuli {before} zpět z archivace",
"You have created a new stack {stack} on board {board}" : "Vytvořili jste novou hromádku {stack} na tabuli {board}",
"{user} has created a new stack {stack} on board {board}" : "{user} vytvořil(a) nový balíček {stack} na tabuli {board}",
"You have renamed stack {before} to {stack} on board {board}" : "Přejmenovali jste hromádku {before} na {stack} na desce {board}",
"{user} has renamed stack {before} to {stack} on board {board}" : "{user} přejmenoval(a) hromádku {before} na {stack} na desce {board}",
"You have deleted stack {stack} on board {board}" : "Smazali jste balíček {stack} na desce {board}",
"{user} has deleted stack {stack} on board {board}" : "{user} smazal(a) balíček {stack} na desce {board}",
"You have created card {card} in stack {stack} on board {board}" : "Vytvořili jste kartu {card} v balíčku {stack} na kartě {board}",
"You have created a new stack {stack} on board {board}" : "Vytvořili jste nový sloupec {stack} na tabuli {board}",
"{user} has created a new stack {stack} on board {board}" : "{user} vytvořil(a) nový sloupec {stack} na tabuli {board}",
"You have renamed stack {before} to {stack} on board {board}" : "Přejmenovali jste sloupec {before} na {stack} na tabuli {board}",
"{user} has renamed stack {before} to {stack} on board {board}" : "{user} přejmenoval(a) sloupec {before} na {stack} na tabuli {board}",
"You have deleted stack {stack} on board {board}" : "Smazali jste sloupec {stack} na tabuli {board}",
"{user} has deleted stack {stack} on board {board}" : "{user} smazal(a) sloupec {stack} na tabuli {board}",
"You have created card {card} in stack {stack} on board {board}" : "Vytvořili jste kartu {card} ve sloupci {stack} na tabuli {board}",
"{user} has created card {card} in stack {stack} on board {board}" : "{user} vytvořil(a) kartu {card} ve sloupci {stack} na tabuli {board}",
"You have deleted card {card} in stack {stack} on board {board}" : "Smazali jste kartu {card} na hromádce {stack} na desce {board}",
"{user} has deleted card {card} in stack {stack} on board {board}" : "{user} smazal(a) kartu {card} v balíčku {board} na desce {board}",
"You have deleted card {card} in stack {stack} on board {board}" : "Smazali jste kartu {card} ve sloupci {stack} na tabuli {board}",
"{user} has deleted card {card} in stack {stack} on board {board}" : "{user} smazal(a) kartu {card} ve sloupci {board} na tabuli {board}",
"You have renamed the card {before} to {card}" : "Přejmenovali jste kartu {before} na {card}",
"{user} has renamed the card {before} to {card}" : "{user} přejmenoval(a) {before} na {card}",
"You have added a description to card {card} in stack {stack} on board {board}" : "Přidali jste popis ke kartě {card} v hromádce {stack} na tabuli {board}",
"{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} přidal(a) popis ke kartě {card} v hromádce {stack} na tabuli {board}",
"You have updated the description of card {card} in stack {stack} on board {board}" : "Aktualizovali jste popis karty {card} v hromádce {stack} na desce {board}",
"{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} aktualizoval(a) popis karty {card} na hromádce {stack} na nástěnce {board}",
"You have archived card {card} in stack {stack} on board {board}" : "Zaarchivovali kartu {card} v balíčku {stack} na tabuli {board}",
"{user} has archived card {card} in stack {stack} on board {board}" : "{user} zaarchivoval(a) kartu {card} v balíčku {stack} na desce {board}",
"You have unarchived card {card} in stack {stack} on board {board}" : "Zrušili jste archivaci karty {card} na hromádce {stack} na desce {board}",
"{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} zrušil(a) archivaci karty {card} na hromádce {stack} na tabuli {board}",
"You have removed the due date of card {card}" : "Odebrali jste termín karty {card}",
"{user} has removed the due date of card {card}" : "{user} odebral(a) termín karty {card}",
"You have set the due date of card {card} to {after}" : "Nastavili jste termín na kartě {card} na {after}",
"{user} has set the due date of card {card} to {after}" : "{user} nastavil(a) termín karty {card} na {after}",
"You have updated the due date of card {card} to {after}" : "Změnili jste termín na kartě {card} na {after}",
"{user} has updated the due date of card {card} to {after}" : "{user} aktualizoval termín karty {card} na {after}",
"You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Přidali jste štítek {label} kartě {card} v hromádce {stack} na nástěnce {board}",
"{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} přidal(a) štítek {label} ke kartě {card} v hromádce {stack} na nástěnce {board}",
"You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Odebrali jste štítek {label} z karty {card} v hromádce {stack} na desce {board}",
"{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} odebral(a) štítek {label} z karty {card} na hromádce {stack} na tabuli {board}",
"You have added a description to card {card} in stack {stack} on board {board}" : "Přidali jste popis ke kartě {card} ve sloupci {stack} na tabuli {board}",
"{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} přidal(a) popis ke kartě {card} ve sloupci {stack} na tabuli {board}",
"You have updated the description of card {card} in stack {stack} on board {board}" : "Aktualizovali jste popis karty {card} ve sloupci {stack} na tabuli {board}",
"{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} aktualizoval(a) popis karty {card} ve sloupci {stack} na tabuli {board}",
"You have archived card {card} in stack {stack} on board {board}" : "Zaarchivovali kartu {card} ve sloupci {stack} na tabuli {board}",
"{user} has archived card {card} in stack {stack} on board {board}" : "{user} zaarchivoval(a) kartu {card} ve sloupci {stack} na tabuli {board}",
"You have unarchived card {card} in stack {stack} on board {board}" : "Zrušili jste archivaci karty {card} ve sloupci {stack} na tabuli {board}",
"{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} zrušil(a) archivaci karty {card} ve sloupci {stack} na tabuli {board}",
"You have removed the due date of card {card}" : "Odebrali jste termín u karty {card}",
"{user} has removed the due date of card {card}" : "{user} odebral(a) termín u karty {card}",
"You have set the due date of card {card} to {after}" : "Nastavili jste termín u karty {card} na {after}",
"{user} has set the due date of card {card} to {after}" : "{user} nastavil(a) termín u karty {card} na {after}",
"You have updated the due date of card {card} to {after}" : "Změnili jste termín u karty {card} na {after}",
"{user} has updated the due date of card {card} to {after}" : "{user} aktualizoval(a) termín u karty {card} na {after}",
"You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Přidali jste štítek {label} kartě {card} ve sloupci {stack} na tabuli {board}",
"{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} přidal(a) štítek {label} ke kartě {card} ve sloupci {stack} na tabuli {board}",
"You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Odebrali jste štítek {label} z karty {card} ve sloupci {stack} na tabuli {board}",
"{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} odebral(a) štítek {label} z karty {card} ve sloupci {stack} na tabuli {board}",
"You have assigned {assigneduser} to card {card} on board {board}" : "Přiřadili jste {assigneduser} ke kartě {card} na tabuli {board}",
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} přiřadil(a) {assigneduser} ke kartě {card} na desce {board}",
"You have unassigned {assigneduser} from card {card} on board {board}" : "Zrušili jste přiřazení {assigneduser} u karty {card} na nástěnce {board}",
"{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} zrušil(a) přiřazení {assigneduser} z karty {card} na desce {board}",
"You have moved the card {card} from stack {stackBefore} to {stack}" : "Přesunuli jste kartu {card} z balíčku {stackBefore} do {stack}",
"{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} přesunul(a) kartu {card} z balíčku {stackBefore} do {stack}",
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} přiřadil(a) {assigneduser} ke kartě {card} na tabuli {board}",
"You have unassigned {assigneduser} from card {card} on board {board}" : "Zrušili jste přiřazení {assigneduser} u karty {card} na tabuli {board}",
"{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} zrušil(a) přiřazení {assigneduser} z karty {card} na tabuli {board}",
"You have moved the card {card} from stack {stackBefore} to {stack}" : "Přesunuli jste kartu {card} ze sloupce {stackBefore} do {stack}",
"{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} přesunul(a) kartu {card} ze sloupce {stackBefore} do {stack}",
"You have added the attachment {attachment} to card {card}" : "Přidali jste přílohu {attachment} ke kartě {card}",
"{user} has added the attachment {attachment} to card {card}" : "{user} přidal(a) přílohu {attachment} ke kartě {card}",
"You have updated the attachment {attachment} on card {card}" : "Aktualizovali jste přílohu {attachment} na kartě {card}",
"{user} has updated the attachment {attachment} on card {card}" : "{user} aktualizoval(a) přílohu {attachment} na kartě {card}",
"You have updated the attachment {attachment} on card {card}" : "Aktualizovali jste přílohu {attachment} u karty {card}",
"{user} has updated the attachment {attachment} on card {card}" : "{user} aktualizoval(a) přílohu {attachment} u karty {card}",
"You have deleted the attachment {attachment} from card {card}" : "Smazali jste přílohu {attachment} u karty {card}",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} smazal(a) přílohu {attachment} na kartě {card}",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} smazal(a) přílohu {attachment} u karty {card}",
"You have restored the attachment {attachment} to card {card}" : "Obnovili jste přílohu {attachment} ke kartě {card}",
"{user} has restored the attachment {attachment} to card {card}" : "{user} obnovil(a) přílohu {attachment} ke kartě {card}",
"You have commented on card {card}" : "Přidali jste komentář na kartě {card}",
"{user} has commented on card {card}" : "{user} přidal(a) komentář na kartě {card}",
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Popis karty</strong> v Deck-aplikace byl změněn",
"Deck" : "Balík",
"Changes in the <strong>Deck app</strong>" : "Změny v <strong>Deck aplikace</strong>",
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Popis karty</strong> v aplikaci Deck byl změněn",
"Deck" : "Deck",
"Changes in the <strong>Deck app</strong>" : "Změny v <strong>aplikaci Deck</strong>",
"A <strong>comment</strong> was created on a card" : "Na kartě byl vytvořen <strong>komentář</strong>",
"Personal" : "Osobní",
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kartu „%s“ na „%s“ vám přiřadil(a) %s.",
@@ -107,10 +107,10 @@ OC.L10N.register(
"A PHP extension stopped the file upload" : "PHP rozšíření zastavilo nahrávání souboru.",
"No file uploaded or file size exceeds maximum of %s" : "Nebyl nahrán žádný soubor nebo jeho velikost přesáhla %s",
"A kanban style project and personal management tool for Nextcloud" : "Nástroj pro projektový a osobní řízení ve stylu Kanban.",
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Karty jsou nástroj zacílený na osobní nebo projektové plánování týmů v Kanban stylu, vestavěný v Nextcloud.\n\n\n- 📥 Zadávejte a uspořádávejte své úkoly do karet\n- 📄 Zapisujte si dodatečné poznámky \n- 🔖 Přiřazujte štítky pro ještě lepší organizaci\n- 👥 Sdílejte se svým týmem, přáteli nebo rodinou\n- 🚀 Dostaňte svůj projekt pod kontrolu",
"Select the board to link to a project" : "Vyberte nástěnku kterou propojit s projektem",
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck je nástroj cílený na osobní nebo projektové plánování týmů v Kanban stylu, vestavěný v Nextcloud.\n\n\n- 📥 Zadávejte a uspořádávejte své úkoly do karet\n- 📄 Zapisujte si dodatečné poznámky \n- 🔖 Přiřazujte štítky pro ještě lepší organizaci\n- 👥 Sdílejte se svým týmem, přáteli nebo rodinou\n- 🚀 Dostaňte svůj projekt pod kontrolu",
"Select the board to link to a project" : "Vyberte tabuli kterou propojit s projektem",
"Select board" : "Vybrat tabuli",
"Add a new stack" : "Přidat nový zásobník",
"Add a new stack" : "Přidat nový sloupec",
"Submit" : "Odeslat",
"Show archived cards" : "Zobrazit archivované karty",
"Hide archived cards" : "Skrýt archivované karty",
@@ -131,7 +131,7 @@ OC.L10N.register(
"Add card" : "Přidat kartu",
"Close" : "Zavřít",
"Sharing" : "Sdílení",
"Tags" : "Značky",
"Tags" : "Štítky",
"Deleted items" : "Smazané položky",
"Timeline" : "Časová osa",
"Select users or groups to share with" : "Vyberte uživatele nebo skupiny pro sdílení",
@@ -149,20 +149,20 @@ OC.L10N.register(
"Delete tag" : "Smazat štítek",
"Create" : "Vytvořit",
"Create a new tag" : "Vytvořit nový štítek",
"Deleted stacks" : "Smazané zásobníky",
"Deleted stacks" : "Smazané sloupce",
"Deleted cards" : "Smazané karty",
"Status" : "Stav",
"No archived boards to display" : "Žádné archivované nástěnky k zobrazení",
"No shared boards to display" : "Žádné sdílené nástěnky k zobrazení",
"No archived boards to display" : "Žádné archivované tabule k zobrazení",
"No shared boards to display" : "Žádné sdílené tabule k zobrazení",
"Title" : "Název",
"Members" : "Členové",
"More actions" : "Více akcí",
"Edit board" : "Upravit tabuli",
"Archive board" : "Archivova tabule",
"Archive board" : "Archivovat tabuli",
"Unarchive board" : "Vrátit tabuli zpět z archivu",
"Delete board" : "Smazat tabuli",
"Update board" : "Aktualizovat tabuli",
"Reset board" : "Vrátit tabuli do chozího stavu",
"Reset board" : "Vrátit tabuli do předchozího stavu",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Vrátit smazání tabule jinak bude nadobro odstraněna během příštího spuštění naplánovaných úloh.",
"Create new board" : "Vytvořit novou tabuli",
"New board title" : "Název nové tabule",
@@ -176,14 +176,14 @@ OC.L10N.register(
"Delete attachment" : "Smazat přílohu",
"Modified:" : "Změněno:",
"Created:" : "Vytvořeno:",
"Choose a tag" : "Vyberte štítek",
"Choose a tag" : "Zvolte štítek",
"Add a tag" : "Přidat štítek",
"Select tags" : "Výběr štítků",
"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 tuto kartu uživateli",
"Due date" : "Termín",
"Click to set" : "Klikněte pro výběr",
"Click to set" : "Klikn. vyberte",
"Remove due date" : "Odstranit termín",
"Description" : "Popis",
"Attachments" : "Přílohy",
@@ -192,12 +192,12 @@ OC.L10N.register(
"Insert attachment" : "Vložit přílohu",
"Formatting help" : "Nápověda k formátování",
"Upload attachment" : "Nahrát přílohu",
"Add a card description…" : "Přidat popis karty…",
"Add a card description…" : "Přidejte popis karty…",
"Shared boards" : "Sdílené tabule",
"Move board to archive" : "Přesunout tabuli do archivu",
"Create a new board" : "Vytvořit novou tabuli",
"Settings" : "Nastavení",
"Limit deck to groups" : "Omezit Deck na skupiny",
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Omezení Decků brání uživatelům, kteří nejsou součástí těchto skupin, při vytváření vlastních tabulí. Uživatelé mohou stále pracovat na tabulích, které jsou s nimi sdíleny."
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Omezení nastavené pro Deck brání uživatelům, kteří nejsou součástí těchto skupin, ve vytváření vlastních tabulí. Nicméně i tak ale pořád budou moci pracovat na tabulích, které jsou jim nasdíleny."
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");

View File

@@ -2,13 +2,13 @@
"Please provide a content for your comment." : "Zadejte obsah svého komentáře.",
"Posting the comment failed." : "Odeslání komentáře se nezdařilo.",
"The comment has been deleted" : "Komentář byl smazán",
"The associated stack is deleted as well, it will be restored as well." : "Související stack je také smazaný a bude také obnoven.",
"Restore associated stack" : "Obnovit související stack",
"The associated stack is deleted as well, it will be restored as well." : "Související sloupec je také smazaný a bude také obnoven.",
"Restore associated stack" : "Obnovit související sloupec",
"Remove user from card" : "Odebrat uživatele z karty",
"Hours" : "Hodiny",
"Minutes" : "Minuty",
"Link to a board" : "Propojit s tabulí",
"Maximum file size of {size} exceeded" : "U souboru {size} překročena nejvyšší umožněná velikost",
"Maximum file size of {size} exceeded" : "Překročena nejvyšší umožněná velikost souboru {size}",
"File already exists" : "Soubor už existuje",
"You have created a new board {board}" : "Vytvořili jste tabuli {board}",
"{user} has created a new board {board}" : "{user} vytvořil(a) novou tabuli {board}",
@@ -26,55 +26,55 @@
"{user} has archived the board {before}" : "{user} zaarchivoval(a) tabuli {before}",
"You have unarchived the board {board}" : "Vrátili jste zpět z archivace tabuli {board}",
"{user} has unarchived the board {before}" : "{user} vrátil(a) tabuli {before} zpět z archivace",
"You have created a new stack {stack} on board {board}" : "Vytvořili jste novou hromádku {stack} na tabuli {board}",
"{user} has created a new stack {stack} on board {board}" : "{user} vytvořil(a) nový balíček {stack} na tabuli {board}",
"You have renamed stack {before} to {stack} on board {board}" : "Přejmenovali jste hromádku {before} na {stack} na desce {board}",
"{user} has renamed stack {before} to {stack} on board {board}" : "{user} přejmenoval(a) hromádku {before} na {stack} na desce {board}",
"You have deleted stack {stack} on board {board}" : "Smazali jste balíček {stack} na desce {board}",
"{user} has deleted stack {stack} on board {board}" : "{user} smazal(a) balíček {stack} na desce {board}",
"You have created card {card} in stack {stack} on board {board}" : "Vytvořili jste kartu {card} v balíčku {stack} na kartě {board}",
"You have created a new stack {stack} on board {board}" : "Vytvořili jste nový sloupec {stack} na tabuli {board}",
"{user} has created a new stack {stack} on board {board}" : "{user} vytvořil(a) nový sloupec {stack} na tabuli {board}",
"You have renamed stack {before} to {stack} on board {board}" : "Přejmenovali jste sloupec {before} na {stack} na tabuli {board}",
"{user} has renamed stack {before} to {stack} on board {board}" : "{user} přejmenoval(a) sloupec {before} na {stack} na tabuli {board}",
"You have deleted stack {stack} on board {board}" : "Smazali jste sloupec {stack} na tabuli {board}",
"{user} has deleted stack {stack} on board {board}" : "{user} smazal(a) sloupec {stack} na tabuli {board}",
"You have created card {card} in stack {stack} on board {board}" : "Vytvořili jste kartu {card} ve sloupci {stack} na tabuli {board}",
"{user} has created card {card} in stack {stack} on board {board}" : "{user} vytvořil(a) kartu {card} ve sloupci {stack} na tabuli {board}",
"You have deleted card {card} in stack {stack} on board {board}" : "Smazali jste kartu {card} na hromádce {stack} na desce {board}",
"{user} has deleted card {card} in stack {stack} on board {board}" : "{user} smazal(a) kartu {card} v balíčku {board} na desce {board}",
"You have deleted card {card} in stack {stack} on board {board}" : "Smazali jste kartu {card} ve sloupci {stack} na tabuli {board}",
"{user} has deleted card {card} in stack {stack} on board {board}" : "{user} smazal(a) kartu {card} ve sloupci {board} na tabuli {board}",
"You have renamed the card {before} to {card}" : "Přejmenovali jste kartu {before} na {card}",
"{user} has renamed the card {before} to {card}" : "{user} přejmenoval(a) {before} na {card}",
"You have added a description to card {card} in stack {stack} on board {board}" : "Přidali jste popis ke kartě {card} v hromádce {stack} na tabuli {board}",
"{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} přidal(a) popis ke kartě {card} v hromádce {stack} na tabuli {board}",
"You have updated the description of card {card} in stack {stack} on board {board}" : "Aktualizovali jste popis karty {card} v hromádce {stack} na desce {board}",
"{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} aktualizoval(a) popis karty {card} na hromádce {stack} na nástěnce {board}",
"You have archived card {card} in stack {stack} on board {board}" : "Zaarchivovali kartu {card} v balíčku {stack} na tabuli {board}",
"{user} has archived card {card} in stack {stack} on board {board}" : "{user} zaarchivoval(a) kartu {card} v balíčku {stack} na desce {board}",
"You have unarchived card {card} in stack {stack} on board {board}" : "Zrušili jste archivaci karty {card} na hromádce {stack} na desce {board}",
"{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} zrušil(a) archivaci karty {card} na hromádce {stack} na tabuli {board}",
"You have removed the due date of card {card}" : "Odebrali jste termín karty {card}",
"{user} has removed the due date of card {card}" : "{user} odebral(a) termín karty {card}",
"You have set the due date of card {card} to {after}" : "Nastavili jste termín na kartě {card} na {after}",
"{user} has set the due date of card {card} to {after}" : "{user} nastavil(a) termín karty {card} na {after}",
"You have updated the due date of card {card} to {after}" : "Změnili jste termín na kartě {card} na {after}",
"{user} has updated the due date of card {card} to {after}" : "{user} aktualizoval termín karty {card} na {after}",
"You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Přidali jste štítek {label} kartě {card} v hromádce {stack} na nástěnce {board}",
"{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} přidal(a) štítek {label} ke kartě {card} v hromádce {stack} na nástěnce {board}",
"You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Odebrali jste štítek {label} z karty {card} v hromádce {stack} na desce {board}",
"{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} odebral(a) štítek {label} z karty {card} na hromádce {stack} na tabuli {board}",
"You have added a description to card {card} in stack {stack} on board {board}" : "Přidali jste popis ke kartě {card} ve sloupci {stack} na tabuli {board}",
"{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} přidal(a) popis ke kartě {card} ve sloupci {stack} na tabuli {board}",
"You have updated the description of card {card} in stack {stack} on board {board}" : "Aktualizovali jste popis karty {card} ve sloupci {stack} na tabuli {board}",
"{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} aktualizoval(a) popis karty {card} ve sloupci {stack} na tabuli {board}",
"You have archived card {card} in stack {stack} on board {board}" : "Zaarchivovali kartu {card} ve sloupci {stack} na tabuli {board}",
"{user} has archived card {card} in stack {stack} on board {board}" : "{user} zaarchivoval(a) kartu {card} ve sloupci {stack} na tabuli {board}",
"You have unarchived card {card} in stack {stack} on board {board}" : "Zrušili jste archivaci karty {card} ve sloupci {stack} na tabuli {board}",
"{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} zrušil(a) archivaci karty {card} ve sloupci {stack} na tabuli {board}",
"You have removed the due date of card {card}" : "Odebrali jste termín u karty {card}",
"{user} has removed the due date of card {card}" : "{user} odebral(a) termín u karty {card}",
"You have set the due date of card {card} to {after}" : "Nastavili jste termín u karty {card} na {after}",
"{user} has set the due date of card {card} to {after}" : "{user} nastavil(a) termín u karty {card} na {after}",
"You have updated the due date of card {card} to {after}" : "Změnili jste termín u karty {card} na {after}",
"{user} has updated the due date of card {card} to {after}" : "{user} aktualizoval(a) termín u karty {card} na {after}",
"You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Přidali jste štítek {label} kartě {card} ve sloupci {stack} na tabuli {board}",
"{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} přidal(a) štítek {label} ke kartě {card} ve sloupci {stack} na tabuli {board}",
"You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Odebrali jste štítek {label} z karty {card} ve sloupci {stack} na tabuli {board}",
"{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} odebral(a) štítek {label} z karty {card} ve sloupci {stack} na tabuli {board}",
"You have assigned {assigneduser} to card {card} on board {board}" : "Přiřadili jste {assigneduser} ke kartě {card} na tabuli {board}",
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} přiřadil(a) {assigneduser} ke kartě {card} na desce {board}",
"You have unassigned {assigneduser} from card {card} on board {board}" : "Zrušili jste přiřazení {assigneduser} u karty {card} na nástěnce {board}",
"{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} zrušil(a) přiřazení {assigneduser} z karty {card} na desce {board}",
"You have moved the card {card} from stack {stackBefore} to {stack}" : "Přesunuli jste kartu {card} z balíčku {stackBefore} do {stack}",
"{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} přesunul(a) kartu {card} z balíčku {stackBefore} do {stack}",
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} přiřadil(a) {assigneduser} ke kartě {card} na tabuli {board}",
"You have unassigned {assigneduser} from card {card} on board {board}" : "Zrušili jste přiřazení {assigneduser} u karty {card} na tabuli {board}",
"{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} zrušil(a) přiřazení {assigneduser} z karty {card} na tabuli {board}",
"You have moved the card {card} from stack {stackBefore} to {stack}" : "Přesunuli jste kartu {card} ze sloupce {stackBefore} do {stack}",
"{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} přesunul(a) kartu {card} ze sloupce {stackBefore} do {stack}",
"You have added the attachment {attachment} to card {card}" : "Přidali jste přílohu {attachment} ke kartě {card}",
"{user} has added the attachment {attachment} to card {card}" : "{user} přidal(a) přílohu {attachment} ke kartě {card}",
"You have updated the attachment {attachment} on card {card}" : "Aktualizovali jste přílohu {attachment} na kartě {card}",
"{user} has updated the attachment {attachment} on card {card}" : "{user} aktualizoval(a) přílohu {attachment} na kartě {card}",
"You have updated the attachment {attachment} on card {card}" : "Aktualizovali jste přílohu {attachment} u karty {card}",
"{user} has updated the attachment {attachment} on card {card}" : "{user} aktualizoval(a) přílohu {attachment} u karty {card}",
"You have deleted the attachment {attachment} from card {card}" : "Smazali jste přílohu {attachment} u karty {card}",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} smazal(a) přílohu {attachment} na kartě {card}",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} smazal(a) přílohu {attachment} u karty {card}",
"You have restored the attachment {attachment} to card {card}" : "Obnovili jste přílohu {attachment} ke kartě {card}",
"{user} has restored the attachment {attachment} to card {card}" : "{user} obnovil(a) přílohu {attachment} ke kartě {card}",
"You have commented on card {card}" : "Přidali jste komentář na kartě {card}",
"{user} has commented on card {card}" : "{user} přidal(a) komentář na kartě {card}",
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Popis karty</strong> v Deck-aplikace byl změněn",
"Deck" : "Balík",
"Changes in the <strong>Deck app</strong>" : "Změny v <strong>Deck aplikace</strong>",
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Popis karty</strong> v aplikaci Deck byl změněn",
"Deck" : "Deck",
"Changes in the <strong>Deck app</strong>" : "Změny v <strong>aplikaci Deck</strong>",
"A <strong>comment</strong> was created on a card" : "Na kartě byl vytvořen <strong>komentář</strong>",
"Personal" : "Osobní",
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kartu „%s“ na „%s“ vám přiřadil(a) %s.",
@@ -105,10 +105,10 @@
"A PHP extension stopped the file upload" : "PHP rozšíření zastavilo nahrávání souboru.",
"No file uploaded or file size exceeds maximum of %s" : "Nebyl nahrán žádný soubor nebo jeho velikost přesáhla %s",
"A kanban style project and personal management tool for Nextcloud" : "Nástroj pro projektový a osobní řízení ve stylu Kanban.",
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Karty jsou nástroj zacílený na osobní nebo projektové plánování týmů v Kanban stylu, vestavěný v Nextcloud.\n\n\n- 📥 Zadávejte a uspořádávejte své úkoly do karet\n- 📄 Zapisujte si dodatečné poznámky \n- 🔖 Přiřazujte štítky pro ještě lepší organizaci\n- 👥 Sdílejte se svým týmem, přáteli nebo rodinou\n- 🚀 Dostaňte svůj projekt pod kontrolu",
"Select the board to link to a project" : "Vyberte nástěnku kterou propojit s projektem",
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck je nástroj cílený na osobní nebo projektové plánování týmů v Kanban stylu, vestavěný v Nextcloud.\n\n\n- 📥 Zadávejte a uspořádávejte své úkoly do karet\n- 📄 Zapisujte si dodatečné poznámky \n- 🔖 Přiřazujte štítky pro ještě lepší organizaci\n- 👥 Sdílejte se svým týmem, přáteli nebo rodinou\n- 🚀 Dostaňte svůj projekt pod kontrolu",
"Select the board to link to a project" : "Vyberte tabuli kterou propojit s projektem",
"Select board" : "Vybrat tabuli",
"Add a new stack" : "Přidat nový zásobník",
"Add a new stack" : "Přidat nový sloupec",
"Submit" : "Odeslat",
"Show archived cards" : "Zobrazit archivované karty",
"Hide archived cards" : "Skrýt archivované karty",
@@ -129,7 +129,7 @@
"Add card" : "Přidat kartu",
"Close" : "Zavřít",
"Sharing" : "Sdílení",
"Tags" : "Značky",
"Tags" : "Štítky",
"Deleted items" : "Smazané položky",
"Timeline" : "Časová osa",
"Select users or groups to share with" : "Vyberte uživatele nebo skupiny pro sdílení",
@@ -147,20 +147,20 @@
"Delete tag" : "Smazat štítek",
"Create" : "Vytvořit",
"Create a new tag" : "Vytvořit nový štítek",
"Deleted stacks" : "Smazané zásobníky",
"Deleted stacks" : "Smazané sloupce",
"Deleted cards" : "Smazané karty",
"Status" : "Stav",
"No archived boards to display" : "Žádné archivované nástěnky k zobrazení",
"No shared boards to display" : "Žádné sdílené nástěnky k zobrazení",
"No archived boards to display" : "Žádné archivované tabule k zobrazení",
"No shared boards to display" : "Žádné sdílené tabule k zobrazení",
"Title" : "Název",
"Members" : "Členové",
"More actions" : "Více akcí",
"Edit board" : "Upravit tabuli",
"Archive board" : "Archivova tabule",
"Archive board" : "Archivovat tabuli",
"Unarchive board" : "Vrátit tabuli zpět z archivu",
"Delete board" : "Smazat tabuli",
"Update board" : "Aktualizovat tabuli",
"Reset board" : "Vrátit tabuli do chozího stavu",
"Reset board" : "Vrátit tabuli do předchozího stavu",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Vrátit smazání tabule jinak bude nadobro odstraněna během příštího spuštění naplánovaných úloh.",
"Create new board" : "Vytvořit novou tabuli",
"New board title" : "Název nové tabule",
@@ -174,14 +174,14 @@
"Delete attachment" : "Smazat přílohu",
"Modified:" : "Změněno:",
"Created:" : "Vytvořeno:",
"Choose a tag" : "Vyberte štítek",
"Choose a tag" : "Zvolte štítek",
"Add a tag" : "Přidat štítek",
"Select tags" : "Výběr štítků",
"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 tuto kartu uživateli",
"Due date" : "Termín",
"Click to set" : "Klikněte pro výběr",
"Click to set" : "Klikn. vyberte",
"Remove due date" : "Odstranit termín",
"Description" : "Popis",
"Attachments" : "Přílohy",
@@ -190,12 +190,12 @@
"Insert attachment" : "Vložit přílohu",
"Formatting help" : "Nápověda k formátování",
"Upload attachment" : "Nahrát přílohu",
"Add a card description…" : "Přidat popis karty…",
"Add a card description…" : "Přidejte popis karty…",
"Shared boards" : "Sdílené tabule",
"Move board to archive" : "Přesunout tabuli do archivu",
"Create a new board" : "Vytvořit novou tabuli",
"Settings" : "Nastavení",
"Limit deck to groups" : "Omezit Deck na skupiny",
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Omezení Decků brání uživatelům, kteří nejsou součástí těchto skupin, při vytváření vlastních tabulí. Uživatelé mohou stále pracovat na tabulích, které jsou s nimi sdíleny."
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Omezení nastavené pro Deck brání uživatelům, kteří nejsou součástí těchto skupin, ve vytváření vlastních tabulí. Nicméně i tak ale pořád budou moci pracovat na tabulích, které jsou jim nasdíleny."
},"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

@@ -197,6 +197,7 @@ OC.L10N.register(
"Move board to archive" : "Artxibatu txartela",
"Create a new board" : "Sortu taula berri bat",
"Settings" : "Ezarpenak",
"Limit deck to groups" : "Mugatu deck-a taldeei"
"Limit deck to groups" : "Mugatu deck-a taldeei",
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Deck mugatzeak taldeetako kide ez diren erabiltzaileei bere arbel propioak sortzea eragotziko die. Erabiltzaileek beraiekin partekatu diren arbeletan lan egin ahalko dute."
},
"nplurals=2; plural=(n != 1);");

View File

@@ -195,6 +195,7 @@
"Move board to archive" : "Artxibatu txartela",
"Create a new board" : "Sortu taula berri bat",
"Settings" : "Ezarpenak",
"Limit deck to groups" : "Mugatu deck-a taldeei"
"Limit deck to groups" : "Mugatu deck-a taldeei",
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Deck mugatzeak taldeetako kide ez diren erabiltzaileei bere arbel propioak sortzea eragotziko die. Erabiltzaileek beraiekin partekatu diren arbeletan lan egin ahalko dute."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -4,25 +4,40 @@ OC.L10N.register(
"Hours" : "ساعت ها",
"Minutes" : "دقایق",
"Personal" : "شخصی",
"Finished" : "تمام شده",
"Done" : "انجام شد",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "حداکثر حجم قابل بار گذاری از طریق HTML MAX_FILE_SIZE است",
"No file was uploaded" : "هیچ پروندهای بارگذاری نشده",
"Missing a temporary folder" : "یک پوشه موقت گم شده",
"Share board" : "صفحه مشترک",
"Actions" : "فعالیت ها",
"Assign card to me" : "کارت را به من اختصاص دهید",
"Unassign card from me" : "جدا کردن کارت از من",
"Archive card" : "کارت بایگانی",
"Delete card" : "حذف کارت",
"Add card" : "کارت اضافه کنید",
"Close" : "بستن",
"Sharing" : "اشتراک گذاری",
"Tags" : "برچسب‌ها",
"Group" : "گروه",
"Circle" : "حلقه",
"Loading" : "در حال بار گزاری",
"Edit" : "ویرایش",
"Share" : "هم‌رسانی",
"Create" : "ایجاد کردن",
"Title" : "عنوان",
"More actions" : "اقدامات بیشتر",
"Edit board" : "ویرایش تخته ها",
"Archive board" : " بایگانی تابلو",
"Delete board" : "حذف تابلو",
"Cancel upload" : "متوقف کردن بار گذاری",
"by" : "با",
"Modified:" : "تغییر یافته توسط:",
"Created:" : "ایجاد شده توسط:",
"Assign users" : "اختصاص کاربران",
"Due date" : "موعد مقرر",
"Description" : "توضیحات",
"Attachments" : "پیوست ها",
"Saved" : "ذخیره شد",
"Settings" : "تنظیمات"
},

View File

@@ -2,25 +2,40 @@
"Hours" : "ساعت ها",
"Minutes" : "دقایق",
"Personal" : "شخصی",
"Finished" : "تمام شده",
"Done" : "انجام شد",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "حداکثر حجم قابل بار گذاری از طریق HTML MAX_FILE_SIZE است",
"No file was uploaded" : "هیچ پروندهای بارگذاری نشده",
"Missing a temporary folder" : "یک پوشه موقت گم شده",
"Share board" : "صفحه مشترک",
"Actions" : "فعالیت ها",
"Assign card to me" : "کارت را به من اختصاص دهید",
"Unassign card from me" : "جدا کردن کارت از من",
"Archive card" : "کارت بایگانی",
"Delete card" : "حذف کارت",
"Add card" : "کارت اضافه کنید",
"Close" : "بستن",
"Sharing" : "اشتراک گذاری",
"Tags" : "برچسب‌ها",
"Group" : "گروه",
"Circle" : "حلقه",
"Loading" : "در حال بار گزاری",
"Edit" : "ویرایش",
"Share" : "هم‌رسانی",
"Create" : "ایجاد کردن",
"Title" : "عنوان",
"More actions" : "اقدامات بیشتر",
"Edit board" : "ویرایش تخته ها",
"Archive board" : " بایگانی تابلو",
"Delete board" : "حذف تابلو",
"Cancel upload" : "متوقف کردن بار گذاری",
"by" : "با",
"Modified:" : "تغییر یافته توسط:",
"Created:" : "ایجاد شده توسط:",
"Assign users" : "اختصاص کاربران",
"Due date" : "موعد مقرر",
"Description" : "توضیحات",
"Attachments" : "پیوست ها",
"Saved" : "ذخیره شد",
"Settings" : "تنظیمات"
},"pluralForm" :"nplurals=2; plural=(n > 1);"

View File

@@ -69,6 +69,7 @@ OC.L10N.register(
"You have updated the attachment {attachment} on card {card}" : "Vous avez mis à jour la pièce jointe {attachment} de la carte {card}",
"{user} has updated the attachment {attachment} on card {card}" : "{user} a mis à jour la pièce jointe {attachment} de la carte {card}",
"You have deleted the attachment {attachment} from card {card}" : "Vous avez supprimé la pièce jointe {attachment} de la carte {card}",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} a supprimé la pièce jointe {attachment} de la carte {card}",
"You have restored the attachment {attachment} to card {card}" : "Vous avez restauré la pièce jointe {attachment} de la carte {card}",
"{user} has restored the attachment {attachment} to card {card}" : "{user} a restauré la pièce jointe {attachment} de la carte {card}",
"You have commented on card {card}" : "Vous avez commenté la carte {card}",

View File

@@ -67,6 +67,7 @@
"You have updated the attachment {attachment} on card {card}" : "Vous avez mis à jour la pièce jointe {attachment} de la carte {card}",
"{user} has updated the attachment {attachment} on card {card}" : "{user} a mis à jour la pièce jointe {attachment} de la carte {card}",
"You have deleted the attachment {attachment} from card {card}" : "Vous avez supprimé la pièce jointe {attachment} de la carte {card}",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} a supprimé la pièce jointe {attachment} de la carte {card}",
"You have restored the attachment {attachment} to card {card}" : "Vous avez restauré la pièce jointe {attachment} de la carte {card}",
"{user} has restored the attachment {attachment} to card {card}" : "{user} a restauré la pièce jointe {attachment} de la carte {card}",
"You have commented on card {card}" : "Vous avez commenté la carte {card}",

View File

@@ -67,7 +67,9 @@ OC.L10N.register(
"You have added the attachment {attachment} to card {card}" : "Dodali ste privitak {attachment} kartici {card}",
"{user} has added the attachment {attachment} to card {card}" : "{user} je dodao privitak {attachment} kartici {card}",
"You have updated the attachment {attachment} on card {card}" : "Ažurirali ste privitak {attachment} na kartici {card}",
"{user} has updated the attachment {attachment} on card {card}" : "{user} je ažurirao privitak {attachment} na kartici {card}",
"You have deleted the attachment {attachment} from card {card}" : "Izbrisali ste privitak {attachment} s kartice {card}",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} je izbrisao privitak {attachment} s kartice {card}",
"You have restored the attachment {attachment} to card {card}" : "Vratili ste privitak {attachment} na karticu {card}",
"{user} has restored the attachment {attachment} to card {card}" : "{user} je vratio privitak {attachment} na karticu {card}",
"You have commented on card {card}" : "Komentirali ste karticu {card}",

View File

@@ -65,7 +65,9 @@
"You have added the attachment {attachment} to card {card}" : "Dodali ste privitak {attachment} kartici {card}",
"{user} has added the attachment {attachment} to card {card}" : "{user} je dodao privitak {attachment} kartici {card}",
"You have updated the attachment {attachment} on card {card}" : "Ažurirali ste privitak {attachment} na kartici {card}",
"{user} has updated the attachment {attachment} on card {card}" : "{user} je ažurirao privitak {attachment} na kartici {card}",
"You have deleted the attachment {attachment} from card {card}" : "Izbrisali ste privitak {attachment} s kartice {card}",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} je izbrisao privitak {attachment} s kartice {card}",
"You have restored the attachment {attachment} to card {card}" : "Vratili ste privitak {attachment} na karticu {card}",
"{user} has restored the attachment {attachment} to card {card}" : "{user} je vratio privitak {attachment} na karticu {card}",
"You have commented on card {card}" : "Komentirali ste karticu {card}",

View File

@@ -67,7 +67,9 @@ OC.L10N.register(
"You have added the attachment {attachment} to card {card}" : "Je voegde bijlage {attachment} toe aan kaart {card}",
"{user} has added the attachment {attachment} to card {card}" : "{user} voegde bijlage {attachment} toe aan kaart {card}",
"You have updated the attachment {attachment} on card {card}" : "Je werkte bijlage {attachment} bij op kaart {card}",
"{user} has updated the attachment {attachment} on card {card}" : "{user} werkte bijlage {attachment} bij op kaart {card}",
"You have deleted the attachment {attachment} from card {card}" : "Je verwijderde bijlage {attachment} van kaart {card}",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} verwijderde bijlage {attachment} van kaart {card}",
"You have restored the attachment {attachment} to card {card}" : "Je herstelde bijlage {attachment} bij kaart {card}",
"{user} has restored the attachment {attachment} to card {card}" : "{user} herstelde bijlage {attachment} bij kaart {card}",
"You have commented on card {card}" : "Je hebt gereageerd op kaart {card}",

View File

@@ -65,7 +65,9 @@
"You have added the attachment {attachment} to card {card}" : "Je voegde bijlage {attachment} toe aan kaart {card}",
"{user} has added the attachment {attachment} to card {card}" : "{user} voegde bijlage {attachment} toe aan kaart {card}",
"You have updated the attachment {attachment} on card {card}" : "Je werkte bijlage {attachment} bij op kaart {card}",
"{user} has updated the attachment {attachment} on card {card}" : "{user} werkte bijlage {attachment} bij op kaart {card}",
"You have deleted the attachment {attachment} from card {card}" : "Je verwijderde bijlage {attachment} van kaart {card}",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} verwijderde bijlage {attachment} van kaart {card}",
"You have restored the attachment {attachment} to card {card}" : "Je herstelde bijlage {attachment} bij kaart {card}",
"{user} has restored the attachment {attachment} to card {card}" : "{user} herstelde bijlage {attachment} bij kaart {card}",
"You have commented on card {card}" : "Je hebt gereageerd op kaart {card}",

View File

@@ -28,51 +28,51 @@ OC.L10N.register(
"{user} has archived the board {before}" : "Użytkownik {user} zarchiwizował(-a) tablicę {board}",
"You have unarchived the board {board}" : "Przywróciłeś(-aś) tablicę {board} z archiwum",
"{user} has unarchived the board {before}" : "{user} przywrócił(-a) tablicę {board} z archiwum",
"You have created a new stack {stack} on board {board}" : "Utworzyłeś/-aś nowy stos {stack} na tablicy {board}",
"You have created a new stack {stack} on board {board}" : "Utworzyłeś nowy stos {stack} na tablicy {board}",
"{user} has created a new stack {stack} on board {board}" : "{user} utworzył nowy stos {stack} na tablicy {board}",
"You have renamed stack {before} to {stack} on board {board}" : "Zmieniłeś/-aś nazwę stosu {before} dla {stack} na tablicy {board}",
"You have renamed stack {before} to {stack} on board {board}" : "Zmieniłeś nazwę stosu {before} dla {stack} na tablicy {board}",
"{user} has renamed stack {before} to {stack} on board {board}" : "{user} zmienił nazwę stosu {before} dla {stack} na tablicy {board}",
"You have deleted stack {stack} on board {board}" : "Usunąłeś/-aś stos {stack} na tablicy {board}",
"You have deleted stack {stack} on board {board}" : "Usunąłeś stos {stack} na tablicy {board}",
"{user} has deleted stack {stack} on board {board}" : "{user} usunął stos {stack} na tablicy {board}",
"You have created card {card} in stack {stack} on board {board}" : "Utworzyłeś/-aś kartę {card} w stosie {stack} na tablicy {board}",
"You have created card {card} in stack {stack} on board {board}" : "Utworzyłeś kartę {card} w stosie {stack} na tablicy {board}",
"{user} has created card {card} in stack {stack} on board {board}" : "{user} utworzył kartę {card} w stosie {stack} na tablicy {board}",
"You have deleted card {card} in stack {stack} on board {board}" : "Usunąłeś/-aś kartę {card} w stosie {stack} na tablicy {board}",
"You have deleted card {card} in stack {stack} on board {board}" : "Usunąłeś kartę {card} w stosie {stack} na tablicy {board}",
"{user} has deleted card {card} in stack {stack} on board {board}" : "{user} usunął kartę {card} w stosie {stack} na tablicy {board}",
"You have renamed the card {before} to {card}" : "Zmieniłeś(-aś) nazwę karty {before} na {card}",
"{user} has renamed the card {before} to {card}" : "Użytkownik {user} zmienił(-a) nazwę karty {before} na {card}",
"You have added a description to card {card} in stack {stack} on board {board}" : "Dodałeś/-aś opis karty {card} w stosie {stack} na tablicy {board}",
"You have added a description to card {card} in stack {stack} on board {board}" : "Dodałeś opis karty {card} w stosie {stack} na tablicy {board}",
"{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} dodał opis karty {card} w stosie {stack} na tablicy {board}",
"You have updated the description of card {card} in stack {stack} on board {board}" : "Zaktualizowałeś/-aś opis karty {card} w stosie {stack} na tablicy {board}",
"You have updated the description of card {card} in stack {stack} on board {board}" : "Zaktualizowałeś opis karty {card} w stosie {stack} na tablicy {board}",
"{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} zaktualizował opis karty {card} w stosie {stack} na tablicy {board}",
"You have archived card {card} in stack {stack} on board {board}" : "Zarchiwizowałeś/-aś kartę {card} w stosie {stack} na tablicy {board}",
"You have archived card {card} in stack {stack} on board {board}" : "Zarchiwizowałeś kartę {card} w stosie {stack} na tablicy {board}",
"{user} has archived card {card} in stack {stack} on board {board}" : "{user} zarchiwizował kartę {card} w stosie {stack} na tablicy {board}",
"You have unarchived card {card} in stack {stack} on board {board}" : "Masz niezarchiwizowaną kartę {card} w stosie {stack} na tablicy {board}",
"{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} ma niezarchiwizowaną kartę {card} w stosie {stack} na tablicy {board}",
"You have removed the due date of card {card}" : "Usunąłeś/-aś datę ważności karty {card}",
"You have removed the due date of card {card}" : "Usunąłeś datę ważności karty {card}",
"{user} has removed the due date of card {card}" : "{user} usunął datę ważności karty {card}",
"You have set the due date of card {card} to {after}" : "Ustawiłeś/-aś datę ważności karty {card} na {after}",
"You have set the due date of card {card} to {after}" : "Ustawiłeś datę ważności karty {card} na {after}",
"{user} has set the due date of card {card} to {after}" : "{user} ustawił datę ważności karty {card} na {after}",
"You have updated the due date of card {card} to {after}" : "Zaktualizowałeś/-aś datę ważności karty {card} na {after}",
"You have updated the due date of card {card} to {after}" : "Zaktualizowałeś datę ważności karty {card} na {after}",
"{user} has updated the due date of card {card} to {after}" : "{user} zaktualizował datę ważności karty {card} na {after}",
"You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Dodałeś/-aś etykietę {label} do karty {card} w stosie {stack} na tablicy {board}",
"You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Dodałeś etykietę {label} do karty {card} w stosie {stack} na tablicy {board}",
"{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} dodał etykietę {label} do karty {card} w stosie {stack} na tablicy {board}",
"You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Usunąłeś/-aś etykietę {label} do karty {card} w stosie {stack} na tablicy {board}",
"You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Usunąłeś etykietę {label} do karty {card} w stosie {stack} na tablicy {board}",
"{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} usunął etykietę {label} do karty {card} w stosie {stack} na tablicy {board}",
"You have assigned {assigneduser} to card {card} on board {board}" : "Przydzieliłeś/-aś {assigneduser} do karty {card} na tablicy {board}",
"You have assigned {assigneduser} to card {card} on board {board}" : "Przydzieliłeś {assigneduser} do karty {card} na tablicy {board}",
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} przydzielił {assigneduser} do karty {card} na tablicy {board}",
"You have unassigned {assigneduser} from card {card} on board {board}" : "Usunąłeś/-aś przydzielenie {assigneduser} do karty {card} na tablicy {board}",
"You have unassigned {assigneduser} from card {card} on board {board}" : "Usunąłeś przydzielenie {assigneduser} do karty {card} na tablicy {board}",
"{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} usunął przydzielenie {assigneduser} do karty {card} na tablicy {board}",
"You have moved the card {card} from stack {stackBefore} to {stack}" : "Przeniosłeś/-aś kartę {card} ze stosu {stackBefore} do {stack}",
"You have moved the card {card} from stack {stackBefore} to {stack}" : "Przeniosłeś kartę {card} ze stosu {stackBefore} do {stack}",
"{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} przeniósł kartę {card} ze stosu {stackBefore} do {stack}",
"You have added the attachment {attachment} to card {card}" : "Dodałeś/-aś załącznik {attachment} do karty {card}",
"You have added the attachment {attachment} to card {card}" : "Dodałeś załącznik {attachment} do karty {card}",
"{user} has added the attachment {attachment} to card {card}" : "{user} dodał załącznik {attachment} do karty {card}",
"You have updated the attachment {attachment} on card {card}" : "Zaktualizowałeś/-aś załącznik {attachment} na karcie {card}",
"You have updated the attachment {attachment} on card {card}" : "Zaktualizowałeś załącznik {attachment} na karcie {card}",
"{user} has updated the attachment {attachment} on card {card}" : "{user} zaktualizował załącznik {attachment} na karcie {card}",
"You have deleted the attachment {attachment} from card {card}" : "Usunąłeś/-aś załącznik {attachment} z karty {card}",
"You have deleted the attachment {attachment} from card {card}" : "Usunąłeś załącznik {attachment} z karty {card}",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} usunął załącznik {attachment} z karty {card}",
"You have restored the attachment {attachment} to card {card}" : "Przywróciłeś/-aś załącznik {attachment} na kartę {card}",
"You have restored the attachment {attachment} to card {card}" : "Przywróciłeś załącznik {attachment} na kartę {card}",
"{user} has restored the attachment {attachment} to card {card}" : "{user} przywrócił załącznik {attachment} na kartę {card}",
"You have commented on card {card}" : "Skomentowałeś/-aś kartę {card}",
"You have commented on card {card}" : "Skomentowałeś kartę {card}",
"{user} has commented on card {card}" : "{user} skomentował kartę {card}",
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Opis karty</strong> w aplikacji Deck został zmieniony",
"Deck" : "Tablica",

View File

@@ -26,51 +26,51 @@
"{user} has archived the board {before}" : "Użytkownik {user} zarchiwizował(-a) tablicę {board}",
"You have unarchived the board {board}" : "Przywróciłeś(-aś) tablicę {board} z archiwum",
"{user} has unarchived the board {before}" : "{user} przywrócił(-a) tablicę {board} z archiwum",
"You have created a new stack {stack} on board {board}" : "Utworzyłeś/-aś nowy stos {stack} na tablicy {board}",
"You have created a new stack {stack} on board {board}" : "Utworzyłeś nowy stos {stack} na tablicy {board}",
"{user} has created a new stack {stack} on board {board}" : "{user} utworzył nowy stos {stack} na tablicy {board}",
"You have renamed stack {before} to {stack} on board {board}" : "Zmieniłeś/-aś nazwę stosu {before} dla {stack} na tablicy {board}",
"You have renamed stack {before} to {stack} on board {board}" : "Zmieniłeś nazwę stosu {before} dla {stack} na tablicy {board}",
"{user} has renamed stack {before} to {stack} on board {board}" : "{user} zmienił nazwę stosu {before} dla {stack} na tablicy {board}",
"You have deleted stack {stack} on board {board}" : "Usunąłeś/-aś stos {stack} na tablicy {board}",
"You have deleted stack {stack} on board {board}" : "Usunąłeś stos {stack} na tablicy {board}",
"{user} has deleted stack {stack} on board {board}" : "{user} usunął stos {stack} na tablicy {board}",
"You have created card {card} in stack {stack} on board {board}" : "Utworzyłeś/-aś kartę {card} w stosie {stack} na tablicy {board}",
"You have created card {card} in stack {stack} on board {board}" : "Utworzyłeś kartę {card} w stosie {stack} na tablicy {board}",
"{user} has created card {card} in stack {stack} on board {board}" : "{user} utworzył kartę {card} w stosie {stack} na tablicy {board}",
"You have deleted card {card} in stack {stack} on board {board}" : "Usunąłeś/-aś kartę {card} w stosie {stack} na tablicy {board}",
"You have deleted card {card} in stack {stack} on board {board}" : "Usunąłeś kartę {card} w stosie {stack} na tablicy {board}",
"{user} has deleted card {card} in stack {stack} on board {board}" : "{user} usunął kartę {card} w stosie {stack} na tablicy {board}",
"You have renamed the card {before} to {card}" : "Zmieniłeś(-aś) nazwę karty {before} na {card}",
"{user} has renamed the card {before} to {card}" : "Użytkownik {user} zmienił(-a) nazwę karty {before} na {card}",
"You have added a description to card {card} in stack {stack} on board {board}" : "Dodałeś/-aś opis karty {card} w stosie {stack} na tablicy {board}",
"You have added a description to card {card} in stack {stack} on board {board}" : "Dodałeś opis karty {card} w stosie {stack} na tablicy {board}",
"{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} dodał opis karty {card} w stosie {stack} na tablicy {board}",
"You have updated the description of card {card} in stack {stack} on board {board}" : "Zaktualizowałeś/-aś opis karty {card} w stosie {stack} na tablicy {board}",
"You have updated the description of card {card} in stack {stack} on board {board}" : "Zaktualizowałeś opis karty {card} w stosie {stack} na tablicy {board}",
"{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} zaktualizował opis karty {card} w stosie {stack} na tablicy {board}",
"You have archived card {card} in stack {stack} on board {board}" : "Zarchiwizowałeś/-aś kartę {card} w stosie {stack} na tablicy {board}",
"You have archived card {card} in stack {stack} on board {board}" : "Zarchiwizowałeś kartę {card} w stosie {stack} na tablicy {board}",
"{user} has archived card {card} in stack {stack} on board {board}" : "{user} zarchiwizował kartę {card} w stosie {stack} na tablicy {board}",
"You have unarchived card {card} in stack {stack} on board {board}" : "Masz niezarchiwizowaną kartę {card} w stosie {stack} na tablicy {board}",
"{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} ma niezarchiwizowaną kartę {card} w stosie {stack} na tablicy {board}",
"You have removed the due date of card {card}" : "Usunąłeś/-aś datę ważności karty {card}",
"You have removed the due date of card {card}" : "Usunąłeś datę ważności karty {card}",
"{user} has removed the due date of card {card}" : "{user} usunął datę ważności karty {card}",
"You have set the due date of card {card} to {after}" : "Ustawiłeś/-aś datę ważności karty {card} na {after}",
"You have set the due date of card {card} to {after}" : "Ustawiłeś datę ważności karty {card} na {after}",
"{user} has set the due date of card {card} to {after}" : "{user} ustawił datę ważności karty {card} na {after}",
"You have updated the due date of card {card} to {after}" : "Zaktualizowałeś/-aś datę ważności karty {card} na {after}",
"You have updated the due date of card {card} to {after}" : "Zaktualizowałeś datę ważności karty {card} na {after}",
"{user} has updated the due date of card {card} to {after}" : "{user} zaktualizował datę ważności karty {card} na {after}",
"You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Dodałeś/-aś etykietę {label} do karty {card} w stosie {stack} na tablicy {board}",
"You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Dodałeś etykietę {label} do karty {card} w stosie {stack} na tablicy {board}",
"{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} dodał etykietę {label} do karty {card} w stosie {stack} na tablicy {board}",
"You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Usunąłeś/-aś etykietę {label} do karty {card} w stosie {stack} na tablicy {board}",
"You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Usunąłeś etykietę {label} do karty {card} w stosie {stack} na tablicy {board}",
"{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} usunął etykietę {label} do karty {card} w stosie {stack} na tablicy {board}",
"You have assigned {assigneduser} to card {card} on board {board}" : "Przydzieliłeś/-aś {assigneduser} do karty {card} na tablicy {board}",
"You have assigned {assigneduser} to card {card} on board {board}" : "Przydzieliłeś {assigneduser} do karty {card} na tablicy {board}",
"{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} przydzielił {assigneduser} do karty {card} na tablicy {board}",
"You have unassigned {assigneduser} from card {card} on board {board}" : "Usunąłeś/-aś przydzielenie {assigneduser} do karty {card} na tablicy {board}",
"You have unassigned {assigneduser} from card {card} on board {board}" : "Usunąłeś przydzielenie {assigneduser} do karty {card} na tablicy {board}",
"{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} usunął przydzielenie {assigneduser} do karty {card} na tablicy {board}",
"You have moved the card {card} from stack {stackBefore} to {stack}" : "Przeniosłeś/-aś kartę {card} ze stosu {stackBefore} do {stack}",
"You have moved the card {card} from stack {stackBefore} to {stack}" : "Przeniosłeś kartę {card} ze stosu {stackBefore} do {stack}",
"{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} przeniósł kartę {card} ze stosu {stackBefore} do {stack}",
"You have added the attachment {attachment} to card {card}" : "Dodałeś/-aś załącznik {attachment} do karty {card}",
"You have added the attachment {attachment} to card {card}" : "Dodałeś załącznik {attachment} do karty {card}",
"{user} has added the attachment {attachment} to card {card}" : "{user} dodał załącznik {attachment} do karty {card}",
"You have updated the attachment {attachment} on card {card}" : "Zaktualizowałeś/-aś załącznik {attachment} na karcie {card}",
"You have updated the attachment {attachment} on card {card}" : "Zaktualizowałeś załącznik {attachment} na karcie {card}",
"{user} has updated the attachment {attachment} on card {card}" : "{user} zaktualizował załącznik {attachment} na karcie {card}",
"You have deleted the attachment {attachment} from card {card}" : "Usunąłeś/-aś załącznik {attachment} z karty {card}",
"You have deleted the attachment {attachment} from card {card}" : "Usunąłeś załącznik {attachment} z karty {card}",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} usunął załącznik {attachment} z karty {card}",
"You have restored the attachment {attachment} to card {card}" : "Przywróciłeś/-aś załącznik {attachment} na kartę {card}",
"You have restored the attachment {attachment} to card {card}" : "Przywróciłeś załącznik {attachment} na kartę {card}",
"{user} has restored the attachment {attachment} to card {card}" : "{user} przywrócił załącznik {attachment} na kartę {card}",
"You have commented on card {card}" : "Skomentowałeś/-aś kartę {card}",
"You have commented on card {card}" : "Skomentowałeś kartę {card}",
"{user} has commented on card {card}" : "{user} skomentował kartę {card}",
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Opis karty</strong> w aplikacji Deck został zmieniony",
"Deck" : "Tablica",

View File

@@ -67,7 +67,9 @@ OC.L10N.register(
"You have added the attachment {attachment} to card {card}" : "Вы добавили вложение «{attachment}» в карточку «{card}»",
"{user} has added the attachment {attachment} to card {card}" : "{user} добавил(а) вложение «{attachment}» в карточку «{card}»",
"You have updated the attachment {attachment} on card {card}" : "Вы изменили вложение «{attachment}» в карточке «{card}»",
"{user} has updated the attachment {attachment} on card {card}" : "{user} изменил(а) вложение «{attachment}» в карточке «{card}»",
"You have deleted the attachment {attachment} from card {card}" : "Вы удалили вложение «{attachment}» из карточки «{card}»",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} удалил(а) вложение «{attachment}» из карточки «{card}»",
"You have restored the attachment {attachment} to card {card}" : "Вы восстановили вложение «{attachment}» в карточке «{card}»",
"{user} has restored the attachment {attachment} to card {card}" : "{user} восстановил(а) из корзины файл «{attachment}» в карточке «{card}»",
"You have commented on card {card}" : "Вы добавили комментарий к карточке «{card}»",

View File

@@ -65,7 +65,9 @@
"You have added the attachment {attachment} to card {card}" : "Вы добавили вложение «{attachment}» в карточку «{card}»",
"{user} has added the attachment {attachment} to card {card}" : "{user} добавил(а) вложение «{attachment}» в карточку «{card}»",
"You have updated the attachment {attachment} on card {card}" : "Вы изменили вложение «{attachment}» в карточке «{card}»",
"{user} has updated the attachment {attachment} on card {card}" : "{user} изменил(а) вложение «{attachment}» в карточке «{card}»",
"You have deleted the attachment {attachment} from card {card}" : "Вы удалили вложение «{attachment}» из карточки «{card}»",
"{user} has deleted the attachment {attachment} from card {card}" : "{user} удалил(а) вложение «{attachment}» из карточки «{card}»",
"You have restored the attachment {attachment} to card {card}" : "Вы восстановили вложение «{attachment}» в карточке «{card}»",
"{user} has restored the attachment {attachment} to card {card}" : "{user} восстановил(а) из корзины файл «{attachment}» в карточке «{card}»",
"You have commented on card {card}" : "Вы добавили комментарий к карточке «{card}»",

30
l10n/sr@latin.js Normal file
View File

@@ -0,0 +1,30 @@
OC.L10N.register(
"deck",
{
"Finished" : "Završeno",
"Done" : "Done",
"Share board" : "Podeli tablu",
"Assign card to me" : "Dodeli karticu meni",
"Unassign card from me" : "Skloni karticu sa mene",
"Archive card" : "Arhiviraj karticu",
"Delete card" : "Obriši karticu",
"Add card" : "Dodaj karticu",
"Close" : "Zatvori",
"Sharing" : "Deljenje",
"Tags" : "Oznake",
"Group" : "Group",
"Loading" : "Loading",
"Edit" : "Uredi",
"Share" : "Deljenje",
"Create" : "Napravi",
"Title" : "Naslov",
"Edit board" : "Izmeni tablu",
"Archive board" : "Arhiviraj tablu",
"Delete board" : "Izbriši tablu",
"Assign users" : "Dodelite korisnike",
"Due date" : "Rok",
"Description" : "Opis",
"Attachments" : "Prilozi",
"Settings" : "Postavke"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");

28
l10n/sr@latin.json Normal file
View File

@@ -0,0 +1,28 @@
{ "translations": {
"Finished" : "Završeno",
"Done" : "Done",
"Share board" : "Podeli tablu",
"Assign card to me" : "Dodeli karticu meni",
"Unassign card from me" : "Skloni karticu sa mene",
"Archive card" : "Arhiviraj karticu",
"Delete card" : "Obriši karticu",
"Add card" : "Dodaj karticu",
"Close" : "Zatvori",
"Sharing" : "Deljenje",
"Tags" : "Oznake",
"Group" : "Group",
"Loading" : "Loading",
"Edit" : "Uredi",
"Share" : "Deljenje",
"Create" : "Napravi",
"Title" : "Naslov",
"Edit board" : "Izmeni tablu",
"Archive board" : "Arhiviraj tablu",
"Delete board" : "Izbriši tablu",
"Assign users" : "Dodelite korisnike",
"Due date" : "Rok",
"Description" : "Opis",
"Attachments" : "Prilozi",
"Settings" : "Postavke"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
}

View File

@@ -19,6 +19,7 @@ OC.L10N.register(
"Hide archived cards" : "Приховати архівні картки",
"All Boards" : "Всі дошки",
"Archived boards" : "Архівовані дошки",
"Share board" : "Поширити дошку",
"Actions" : "Дії",
"Assign card to me" : "Прив'язати картку до мене",
"Unassign card from me" : "Відв'язати картку від мене",

View File

@@ -17,6 +17,7 @@
"Hide archived cards" : "Приховати архівні картки",
"All Boards" : "Всі дошки",
"Archived boards" : "Архівовані дошки",
"Share board" : "Поширити дошку",
"Actions" : "Дії",
"Assign card to me" : "Прив'язати картку до мене",
"Unassign card from me" : "Відв'язати картку від мене",

View File

@@ -138,7 +138,7 @@ OC.L10N.register(
"Group" : "分组",
"Circle" : "圈子",
"No matching user or group found." : "未找到匹配的用户或组。",
"Loading" : "加载",
"Loading" : "正在加载",
"Edit" : "编辑",
"Share" : "共享",
"Manage" : "管理",

View File

@@ -136,7 +136,7 @@
"Group" : "分组",
"Circle" : "圈子",
"No matching user or group found." : "未找到匹配的用户或组。",
"Loading" : "加载",
"Loading" : "正在加载",
"Edit" : "编辑",
"Share" : "共享",
"Manage" : "管理",

View File

@@ -33,6 +33,7 @@ use OCA\Deck\Db\CardMapper;
use OCA\Deck\Middleware\ExceptionMiddleware;
use OCA\Deck\Notification\Notifier;
use OCA\Deck\Service\FullTextSearchService;
use OCA\Deck\Service\PermissionService;
use OCP\AppFramework\App;
use OCP\Collaboration\Resources\IManager;
use OCP\Comments\CommentsEntityEvent;
@@ -151,13 +152,14 @@ class Application extends App {
$this->getContainer()->getServer()->getEventDispatcher()->addListener(CommentsEntityEvent::EVENT_ENTITY, function(CommentsEntityEvent $event) {
$event->addEntityCollection('deckCard', function($name) {
/** @var CardMapper */
$service = $this->getContainer()->query(CardMapper::class);
$cardMapper = $this->getContainer()->query(CardMapper::class);
$permissionService = $this->getContainer()->query(PermissionService::class);
try {
$service->find((int) $name);
} catch (\InvalidArgumentException $e) {
return $permissionService->checkPermission($cardMapper, (int) $name, Acl::PERMISSION_READ);
} catch (\Exception $e) {
return false;
}
return true;
});
});
$this->registerCommentsEventHandler();

View File

@@ -454,6 +454,17 @@ class BoardService {
return $board;
}
private function applyPermissions($boardId, $edit, $share, $manage) {
try {
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_MANAGE);
} catch (NoPermissionException $e) {
$acls = $this->aclMapper->findAll($boardId);
$edit = $this->permissionService->userCan($acls, Acl::PERMISSION_EDIT, $this->userId) && $edit;
$share = $this->permissionService->userCan($acls, Acl::PERMISSION_SHARE, $this->userId) && $share;
$manage = $this->permissionService->userCan($acls, Acl::PERMISSION_MANAGE, $this->userId) && $manage;
}
return [$edit, $share, $manage];
}
/**
* @param $boardId
@@ -493,6 +504,8 @@ class BoardService {
}
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_SHARE);
[$edit, $share, $manage] = $this->applyPermissions($boardId, $edit, $share, $manage);
$acl = new Acl();
$acl->setBoardId($boardId);
$acl->setType($type);
@@ -555,8 +568,10 @@ class BoardService {
}
$this->permissionService->checkPermission($this->aclMapper, $id, Acl::PERMISSION_SHARE);
/** @var Acl $acl */
$acl = $this->aclMapper->find($id);
[$edit, $share, $manage] = $this->applyPermissions($acl->getBoardId(), $edit, $share, $manage);
$acl->setPermissionEdit($edit);
$acl->setPermissionShare($share);
$acl->setPermissionManage($manage);

View File

@@ -588,10 +588,17 @@ class CardService {
$assignments = $this->assignedUsersMapper->find($cardId);
foreach ($assignments as $assignment) {
if ($assignment->getParticipant() === $userId) {
return false;
throw new BadRequestException('The user is already assigned to the card');
}
}
$card = $this->cardMapper->find($cardId);
$boardId = $this->cardMapper->findBoardId($cardId);
$boardUsers = array_keys($this->permissionService->findUsers($boardId, true));
if (!in_array($userId, $boardUsers)) {
throw new BadRequestException('The user is not part of the board');
}
if ($userId !== $this->currentUser) {
/* Notifyuser about the card assignment */

View File

@@ -221,9 +221,9 @@ class PermissionService {
* @param $boardId
* @return array
*/
public function findUsers($boardId) {
public function findUsers($boardId, $refresh = false) {
// cache users of a board so we don't query them for every cards
if (array_key_exists((string) $boardId, $this->users)) {
if (array_key_exists((string) $boardId, $this->users) && !$refresh) {
return $this->users[(string) $boardId];
}
try {

View File

@@ -102,34 +102,25 @@ class AssignedUsersMapperTest extends \Test\TestCase {
$this->stacks = $stacks;
}
/**
* @covers ::__construct
*/
public function testConstructor() {
//$this->assertAttributeInstanceOf(IDBConnection::class, 'db', $this->assignedUsersMapper);
//$this->assertAttributeEquals(AssignedUsers::class, 'entityClass', $this->assignedUsersMapper);
//$this->assertAttributeEquals('*PREFIX*deck_assigned_users', 'tableName', $this->assignedUsersMapper);
}
/**
* @covers ::find
*/
public function testFind() {
$uids = [];
$this->cardService->assignUser($this->cards[0]->getId(), self::TEST_USER1);
$this->cardService->assignUser($this->cards[0]->getId(), self::TEST_USER4);
$this->cardService->assignUser($this->cards[0]->getId(), self::TEST_USER2);
$assignedUsers = $this->assignedUsersMapper->find($this->cards[0]->getId());
foreach ($assignedUsers as $user) {
$uids[$user->getParticipant()] = $user;
}
$this->assertArrayHasKey(self::TEST_USER1, $uids);
$this->assertArrayNotHasKey(self::TEST_USER2, $uids);
$this->assertArrayHasKey(self::TEST_USER2, $uids);
$this->assertArrayNotHasKey(self::TEST_USER3, $uids);
$this->assertArrayHasKey(self::TEST_USER4, $uids);
$this->assertArrayNotHasKey(self::TEST_USER4, $uids);
$this->cardService->unassignUser($this->cards[0]->getId(), self::TEST_USER1);
$this->cardService->unassignUser($this->cards[0]->getId(), self::TEST_USER4);
$this->cardService->unassignUser($this->cards[0]->getId(), self::TEST_USER2);
}
/**

View File

@@ -34,6 +34,7 @@ use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\ChangeHelper;
use OCA\Deck\Db\LabelMapper;
use OCA\Deck\Db\StackMapper;
use OCA\Deck\NoPermissionException;
use OCA\Deck\Notification\NotificationHelper;
use OCP\IUser;
use OCP\IUserManager;
@@ -260,6 +261,93 @@ class BoardServiceTest extends TestCase {
));
}
public function dataAddAclExtendPermission() {
return [
[[false, false, false], [false, false, false], [false, false, false]],
[[false, false, false], [true, true, true], [false, false, false]],
// user has share permissions -> can only reshare with those
[[false, true, false], [false, false, false], [false, false, false]],
[[false, true, false], [false, true, false], [false, true, false]],
[[false, true, false], [true, true, true], [false, true, false]],
// user has write permissions -> can only reshare with those
[[true, true, false], [false, false, false], [false, false, false]],
[[true, true, false], [false, true, false], [false, true, false]],
[[true, true, false], [true, true, true], [true, true, false]],
// user has manage permissions -> can upgrade acl permissions
[[false, false, true], [true, true, true], [true, true, true]],
[[true, true, true], [false, false, true], [false, false, true]],
];
}
/**
* @dataProvider dataAddAclExtendPermission
* @param $currentUserAcl
* @param $providedAcl
* @param $resultingAcl
* @throws NoPermissionException
* @throws \OCA\Deck\BadRequestException
*/
public function testAddAclExtendPermission($currentUserAcl, $providedAcl, $resultingAcl) {
$existingAcl = new Acl();
$existingAcl->setBoardId(123);
$existingAcl->setType('user');
$existingAcl->setParticipant('admin');
$existingAcl->setPermissionEdit($currentUserAcl[0]);
$existingAcl->setPermissionShare($currentUserAcl[1]);
$existingAcl->setPermissionManage($currentUserAcl[2]);
$this->permissionService->expects($this->at(0))
->method('checkPermission')
->with($this->boardMapper, 123, Acl::PERMISSION_SHARE, null);
if ($currentUserAcl[2]) {
$this->permissionService->expects($this->at(1))
->method('checkPermission')
->with($this->boardMapper, 123, Acl::PERMISSION_MANAGE, null);
} else {
$this->aclMapper->expects($this->once())
->method('findAll')
->willReturn([$existingAcl]);
$this->permissionService->expects($this->at(1))
->method('checkPermission')
->with($this->boardMapper, 123, Acl::PERMISSION_MANAGE, null)
->willThrowException(new NoPermissionException('No permission'));
$this->permissionService->expects($this->at(2))
->method('userCan')
->willReturn($currentUserAcl[0]);
$this->permissionService->expects($this->at(3))
->method('userCan')
->willReturn($currentUserAcl[1]);
$this->permissionService->expects($this->at(4))
->method('userCan')
->willReturn($currentUserAcl[2]);
}
$user = $this->createMock(IUser::class);
$user->method('getUID')->willReturn('admin');
$acl = new Acl();
$acl->setBoardId(123);
$acl->setType('user');
$acl->setParticipant('admin');
$acl->setPermissionEdit($resultingAcl[0]);
$acl->setPermissionShare($resultingAcl[1]);
$acl->setPermissionManage($resultingAcl[2]);
$acl->resolveRelation('participant', function($participant) use (&$user) {
return null;
});
$this->notificationHelper->expects($this->once())
->method('sendBoardShared');
$expected = clone $acl;
$this->aclMapper->expects($this->once())
->method('insert')
->with($acl)
->willReturn($acl);
$this->assertEquals($expected, $this->service->addAcl(
123, 'user', 'admin', $providedAcl[0], $providedAcl[1], $providedAcl[2]
));
}
public function testUpdateAcl() {
$acl = new Acl();
$acl->setBoardId(123);

View File

@@ -25,6 +25,7 @@ namespace OCA\Deck\Service;
use OCA\Deck\Activity\ActivityManager;
use OCA\Deck\BadRequestException;
use OCA\Deck\Db\AssignedUsers;
use OCA\Deck\Db\AssignedUsersMapper;
use OCA\Deck\Db\Card;
@@ -46,22 +47,22 @@ use Test\TestCase;
class CardServiceTest extends TestCase {
/** @var CardService|MockObject */
private $cardService;
/** @var CardMapper|MockObject */
private $cardMapper;
/** @var StackMapper|MockObject */
private $stackMapper;
/** @var PermissionService|MockObject */
private $permissionService;
/** @var NotificationHelper */
private $notificationHelper;
/** @var AssignedUsersMapper|MockObject */
private $assignedUsersMapper;
/** @var BoardService|MockObject */
private $boardService;
/** @var LabelMapper|MockObject */
private $labelMapper;
/** @var CardService|MockObject */
private $cardService;
/** @var CardMapper|MockObject */
private $cardMapper;
/** @var StackMapper|MockObject */
private $stackMapper;
/** @var PermissionService|MockObject */
private $permissionService;
/** @var NotificationHelper */
private $notificationHelper;
/** @var AssignedUsersMapper|MockObject */
private $assignedUsersMapper;
/** @var BoardService|MockObject */
private $boardService;
/** @var LabelMapper|MockObject */
private $labelMapper;
private $boardMapper;
/** @var AttachmentService|MockObject */
private $attachmentService;
@@ -77,15 +78,15 @@ class CardServiceTest extends TestCase {
private $changeHelper;
public function setUp(): void {
parent::setUp();
$this->cardMapper = $this->createMock(CardMapper::class);
$this->stackMapper = $this->createMock(StackMapper::class);
$this->boardMapper = $this->createMock(BoardMapper::class);
$this->labelMapper = $this->createMock(LabelMapper::class);
$this->permissionService = $this->createMock(PermissionService::class);
$this->boardService = $this->createMock(BoardService::class);
$this->notificationHelper = $this->createMock(NotificationHelper::class);
$this->assignedUsersMapper = $this->createMock(AssignedUsersMapper::class);
parent::setUp();
$this->cardMapper = $this->createMock(CardMapper::class);
$this->stackMapper = $this->createMock(StackMapper::class);
$this->boardMapper = $this->createMock(BoardMapper::class);
$this->labelMapper = $this->createMock(LabelMapper::class);
$this->permissionService = $this->createMock(PermissionService::class);
$this->boardService = $this->createMock(BoardService::class);
$this->notificationHelper = $this->createMock(NotificationHelper::class);
$this->assignedUsersMapper = $this->createMock(AssignedUsersMapper::class);
$this->attachmentService = $this->createMock(AttachmentService::class);
$this->activityManager = $this->createMock(ActivityManager::class);
$this->commentsManager = $this->createMock(ICommentsManager::class);
@@ -108,10 +109,10 @@ class CardServiceTest extends TestCase {
$this->changeHelper,
$this->eventDispatcher,
'user1'
);
}
);
}
public function mockActivity($type, $object, $subject) {
public function mockActivity($type, $object, $subject) {
// ActivityManager::DECK_OBJECT_BOARD, $newAcl, ActivityManager::SUBJECT_BOARD_SHARE
$event = $this->createMock(IEvent::class);
$this->activityManager->expects($this->once())
@@ -123,214 +124,244 @@ class CardServiceTest extends TestCase {
->with($event);
}
public function testFind() {
public function testFind() {
$user = $this->createMock(IUser::class);
$this->userManager->expects($this->once())
->method('get')
->willReturn($user);
$card = new Card();
$card->setId(1337);
$this->cardMapper->expects($this->any())
->method('find')
->with(123)
->willReturn($card);
$this->assignedUsersMapper->expects($this->any())
$card = new Card();
$card->setId(1337);
$this->cardMapper->expects($this->any())
->method('find')
->with(123)
->willReturn($card);
$this->assignedUsersMapper->expects($this->any())
->method('find')
->with(1337)
->willReturn(['user1', 'user2']);
$cardExpected = new Card();
$cardExpected->setId(1337);
$cardExpected->setAssignedUsers(['user1', 'user2']);
$this->assertEquals($cardExpected, $this->cardService->find(123));
}
$this->assertEquals($cardExpected, $this->cardService->find(123));
}
public function testCreate() {
$card = new Card();
$card->setTitle('Card title');
$card->setOwner('admin');
$card->setStackId(123);
$card->setOrder(999);
$card->setType('text');
$this->cardMapper->expects($this->once())
->method('insert')
->willReturn($card);
$b = $this->cardService->create('Card title', 123, 'text', 999, 'admin');
public function testCreate() {
$card = new Card();
$card->setTitle('Card title');
$card->setOwner('admin');
$card->setStackId(123);
$card->setOrder(999);
$card->setType('text');
$this->cardMapper->expects($this->once())
->method('insert')
->willReturn($card);
$b = $this->cardService->create('Card title', 123, 'text', 999, 'admin');
$this->assertEquals($b->getTitle(), 'Card title');
$this->assertEquals($b->getOwner(), 'admin');
$this->assertEquals($b->getType(), 'text');
$this->assertEquals($b->getOrder(), 999);
$this->assertEquals($b->getStackId(), 123);
}
$this->assertEquals($b->getTitle(), 'Card title');
$this->assertEquals($b->getOwner(), 'admin');
$this->assertEquals($b->getType(), 'text');
$this->assertEquals($b->getOrder(), 999);
$this->assertEquals($b->getStackId(), 123);
}
public function testDelete() {
$cardToBeDeleted = new Card();
$this->cardMapper->expects($this->once())
->method('find')
->willReturn($cardToBeDeleted);
$this->cardMapper->expects($this->once())
->method('update')
->willReturn($cardToBeDeleted);
$this->cardService->delete(123);
$this->assertTrue($cardToBeDeleted->getDeletedAt() <= time(), 'deletedAt is in the past');
}
public function testDelete() {
$cardToBeDeleted = new Card();
$this->cardMapper->expects($this->once())
->method('find')
->willReturn($cardToBeDeleted);
$this->cardMapper->expects($this->once())
->method('update')
->willReturn($cardToBeDeleted);
$this->cardService->delete(123);
$this->assertTrue($cardToBeDeleted->getDeletedAt() <= time(), 'deletedAt is in the past');
}
public function testUpdate() {
$card = new Card();
$card->setTitle('title');
$card->setArchived(false);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->once())->method('update')->willReturnCallback(function($c) { return $c; });
$actual = $this->cardService->update(123, 'newtitle', 234, 'text', 999, 'foo', 'admin', '2017-01-01 00:00:00', null);
$this->assertEquals('newtitle', $actual->getTitle());
$this->assertEquals(234, $actual->getStackId());
$this->assertEquals('text', $actual->getType());
$this->assertEquals(999, $actual->getOrder());
$this->assertEquals('foo', $actual->getDescription());
$this->assertEquals('2017-01-01T00:00:00+00:00', $actual->getDuedate());
}
public function testUpdate() {
$card = new Card();
$card->setTitle('title');
$card->setArchived(false);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->once())->method('update')->willReturnCallback(function($c) { return $c; });
$actual = $this->cardService->update(123, 'newtitle', 234, 'text', 999, 'foo', 'admin', '2017-01-01 00:00:00', null);
$this->assertEquals('newtitle', $actual->getTitle());
$this->assertEquals(234, $actual->getStackId());
$this->assertEquals('text', $actual->getType());
$this->assertEquals(999, $actual->getOrder());
$this->assertEquals('foo', $actual->getDescription());
$this->assertEquals('2017-01-01T00:00:00+00:00', $actual->getDuedate());
}
public function testUpdateArchived() {
$card = new Card();
$card->setTitle('title');
$card->setArchived(true);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->never())->method('update');
public function testUpdateArchived() {
$card = new Card();
$card->setTitle('title');
$card->setArchived(true);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->never())->method('update');
$this->expectException(StatusException::class);
$this->cardService->update(123, 'newtitle', 234, 'text', 999, 'foo', 'admin', '2017-01-01 00:00:00', null, true);
}
$this->cardService->update(123, 'newtitle', 234, 'text', 999, 'foo', 'admin', '2017-01-01 00:00:00', null, true);
}
public function testRename() {
$card = new Card();
$card->setTitle('title');
$card->setArchived(false);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->once())->method('update')->willReturnCallback(function($c) { return $c; });
$actual = $this->cardService->rename(123, 'newtitle');
$this->assertEquals('newtitle', $actual->getTitle());
}
public function testRename() {
$card = new Card();
$card->setTitle('title');
$card->setArchived(false);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->once())->method('update')->willReturnCallback(function($c) { return $c; });
$actual = $this->cardService->rename(123, 'newtitle');
$this->assertEquals('newtitle', $actual->getTitle());
}
public function testRenameArchived() {
$card = new Card();
$card->setTitle('title');
$card->setArchived(true);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->never())->method('update');
$this->expectException(StatusException::class);
$this->cardService->rename(123, 'newtitle');
}
public function dataReorder() {
return [
[0, 0, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]],
[0, 9, [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]],
[1, 3, [0, 2, 3, 1, 4, 5, 6, 7, 8, 9]]
];
}
/** @dataProvider dataReorder */
public function testReorder($cardId, $newPosition, $order) {
$cards = $this->getCards();
$cardsTmp = [];
$this->cardMapper->expects($this->at(0))->method('findAll')->willReturn($cards);
$result = $this->cardService->reorder($cardId, 123, $newPosition);
foreach ($result as $card) {
$actual[$card->getOrder()] = $card->getId();
}
$this->assertEquals($order, $actual);
}
private function getCards() {
$cards = [];
for($i=0; $i<10; $i++) {
$cards[$i] = new Card();
$cards[$i]->setTitle($i);
$cards[$i]->setOrder($i);
$cards[$i]->setId($i);
}
return $cards;
}
public function testReorderArchived() {
$card = new Card();
$card->setTitle('title');
$card->setArchived(true);
$this->cardMapper->expects($this->once())->method('findAll')->willReturn([$card]);
$this->cardMapper->expects($this->never())->method('update')->willReturnCallback(function($c) { return $c; });
$this->expectException(StatusException::class);
$actual = $this->cardService->reorder(123, 234, 1);
}
public function testArchive() {
$card = new Card();
$this->assertFalse($card->getArchived());
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->once())->method('update')->willReturnCallback(function($c) {
return $c;
});
$this->assertTrue($this->cardService->archive(123)->getArchived());
}
public function testUnarchive() {
$card = new Card();
$card->setArchived(true);
$this->assertTrue($card->getArchived());
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->once())->method('update')->willReturnCallback(function($c) {
return $c;
});
$this->assertFalse($this->cardService->unarchive(123)->getArchived());
}
public function testAssignLabel() {
$card = new Card();
$card->setArchived(false);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->once())->method('assignLabel');
$this->cardService->assignLabel(123, 999);
}
public function testAssignLabelArchived() {
$card = new Card();
$card->setArchived(true);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->never())->method('assignLabel');
$this->expectException(StatusException::class);
$this->cardService->assignLabel(123, 999);
}
public function testRemoveLabel() {
$card = new Card();
$card->setArchived(false);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->once())->method('removeLabel');
$this->cardService->removeLabel(123, 999);
}
public function testRemoveLabelArchived() {
$card = new Card();
$card->setArchived(true);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->never())->method('removeLabel');
public function testRenameArchived() {
$card = new Card();
$card->setTitle('title');
$card->setArchived(true);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->never())->method('update');
$this->expectException(StatusException::class);
$this->cardService->removeLabel(123, 999);
}
$this->cardService->rename(123, 'newtitle');
}
public function testAssignUser() {
$assignments = [];
$this->assignedUsersMapper->expects($this->once())
public function dataReorder() {
return [
[0, 0, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]],
[0, 9, [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]],
[1, 3, [0, 2, 3, 1, 4, 5, 6, 7, 8, 9]]
];
}
/** @dataProvider dataReorder */
public function testReorder($cardId, $newPosition, $order) {
$cards = $this->getCards();
$cardsTmp = [];
$this->cardMapper->expects($this->at(0))->method('findAll')->willReturn($cards);
$result = $this->cardService->reorder($cardId, 123, $newPosition);
foreach ($result as $card) {
$actual[$card->getOrder()] = $card->getId();
}
$this->assertEquals($order, $actual);
}
private function getCards() {
$cards = [];
for($i=0; $i<10; $i++) {
$cards[$i] = new Card();
$cards[$i]->setTitle($i);
$cards[$i]->setOrder($i);
$cards[$i]->setId($i);
}
return $cards;
}
public function testReorderArchived() {
$card = new Card();
$card->setTitle('title');
$card->setArchived(true);
$this->cardMapper->expects($this->once())->method('findAll')->willReturn([$card]);
$this->cardMapper->expects($this->never())->method('update')->willReturnCallback(function($c) { return $c; });
$this->expectException(StatusException::class);
$actual = $this->cardService->reorder(123, 234, 1);
}
public function testArchive() {
$card = new Card();
$this->assertFalse($card->getArchived());
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->once())->method('update')->willReturnCallback(function($c) {
return $c;
});
$this->assertTrue($this->cardService->archive(123)->getArchived());
}
public function testUnarchive() {
$card = new Card();
$card->setArchived(true);
$this->assertTrue($card->getArchived());
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->once())->method('update')->willReturnCallback(function($c) {
return $c;
});
$this->assertFalse($this->cardService->unarchive(123)->getArchived());
}
public function testAssignLabel() {
$card = new Card();
$card->setArchived(false);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->once())->method('assignLabel');
$this->cardService->assignLabel(123, 999);
}
public function testAssignLabelArchived() {
$card = new Card();
$card->setArchived(true);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->never())->method('assignLabel');
$this->expectException(StatusException::class);
$this->cardService->assignLabel(123, 999);
}
public function testRemoveLabel() {
$card = new Card();
$card->setArchived(false);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->once())->method('removeLabel');
$this->cardService->removeLabel(123, 999);
}
public function testRemoveLabelArchived() {
$card = new Card();
$card->setArchived(true);
$this->cardMapper->expects($this->once())->method('find')->willReturn($card);
$this->cardMapper->expects($this->never())->method('removeLabel');
$this->expectException(StatusException::class);
$this->cardService->removeLabel(123, 999);
}
public function testAssignUser() {
$assignments = [];
$this->assignedUsersMapper->expects($this->once())
->method('find')
->with(123)
->willReturn($assignments);
$assignment = new AssignedUsers();
$assignment->setCardId(123);
$assignment->setParticipant('admin');
$this->assignedUsersMapper->expects($this->once())
$assignment = new AssignedUsers();
$assignment->setCardId(123);
$assignment->setParticipant('admin');
$this->cardMapper->expects($this->once())
->method('findBoardId')
->willReturn(1);
$this->permissionService->expects($this->once())
->method('findUsers')
->with(1)
->willReturn(['admin' => 'admin', 'user1' => 'user1']);
$this->assignedUsersMapper->expects($this->once())
->method('insert')
->with($assignment)
->willReturn($assignment);
$actual = $this->cardService->assignUser(123, 'admin');
$this->assertEquals($assignment, $actual);
$actual = $this->cardService->assignUser(123, 'admin');
$this->assertEquals($assignment, $actual);
}
public function testAssignUserNoParticipant() {
$this->expectException(BadRequestException::class);
$this->expectExceptionMessage('The user is not part of the board');
$assignments = [];
$this->assignedUsersMapper->expects($this->once())
->method('find')
->with(123)
->willReturn($assignments);
$assignment = new AssignedUsers();
$assignment->setCardId(123);
$assignment->setParticipant('admin');
$this->cardMapper->expects($this->once())
->method('findBoardId')
->willReturn(1);
$this->permissionService->expects($this->once())
->method('findUsers')
->with(1)
->willReturn(['user2' => 'user2', 'user1' => 'user1']);
$actual = $this->cardService->assignUser(123, 'admin');
}
public function testAssignUserExisting() {
$this->expectException(BadRequestException::class);
$this->expectExceptionMessage('The user is already assigned to the card');
$assignment = new AssignedUsers();
$assignment->setCardId(123);
$assignment->setParticipant('admin');
@@ -364,13 +395,8 @@ class CardServiceTest extends TestCase {
$this->assertEquals($assignment, $actual);
}
/**
* @expectException \OCA\Deck\NotFoundException
*
*
*
*/
public function testUnassignUserNotExisting() {
$this->expectException(NotFoundException::class);
$assignment = new AssignedUsers();
$assignment->setCardId(123);
$assignment->setParticipant('admin');