Compare commits

...
364 Commits
Author SHA1 Message Date
Lauri Ojansivu 25e294fd92 v2.77 2019-06-11 20:27:17 +03:00
Lauri Ojansivu 017d2deeee Fix Snap build.
Thanks to xet7 !
2019-06-11 20:20:29 +03:00
Lauri Ojansivu e1e20275a6 v2.76 2019-06-11 17:03:01 +03:00
Lauri Ojansivu 3c4f8f6796 Support scopes in OAuth2, so Authentication via OAuth2 with Google is now possible.
Thanks to moserben16 !

Closes #2454
2019-06-11 16:56:45 +03:00
Lauri Ojansivu 406a9492fd Merge branch 'moserben16-patch-1' into devel 2019-06-11 16:51:36 +03:00
Lauri Ojansivu c859cd2278 Merge branch 'patch-1' of https://github.com/moserben16/wekan into moserben16-patch-1 2019-06-11 16:36:14 +03:00
Lauri Ojansivu cd70d9d09e Update changelog. 2019-06-11 16:34:36 +03:00
Lauri Ojansivu 86e7e1c600 More CORS headers settings related to https://github.com/wekan/wekan/pull/2429
Thanks to xet7 !
2019-06-11 16:32:42 +03:00
Lauri Ojansivu e540148d09 Update changelog. 2019-06-11 16:10:34 +03:00
Lauri Ojansivu 30b108ab36 Merge pull request #2442 from Jason-Cooke/patch-1
docs: fix typo
2019-06-11 16:07:58 +03:00
Lauri Ojansivu ec535aaa9c Update changelog. 2019-06-11 16:02:53 +03:00
Lauri Ojansivu bb108b2144 Merge branch 'road42-devel' into edge 2019-06-11 16:00:44 +03:00
Lauri Ojansivu f3c76ac60b Update ChangeLog. 2019-06-11 15:56:41 +03:00
Lauri Ojansivu 23ccb3b991 Show attachment name in Outgoing Webhook when attachment is removed from card.
Thanks to xet7 !

Related #2285
2019-06-11 13:11:35 +03:00
Lauri Ojansivu 992ecfefa2 Show attachment name in Outgoing Webhook when attachment is added to card.
Thanks to xet7 !

Related #2285
2019-06-11 10:53:50 +03:00
benji fd390d2560 Update oidc_server.js
with this fix, Authentication via OAuth2 with Google is possible.
1.) token endpoint and userinfo-endpoint in Google are different, so you have to check that,
2.) request the scopes of the environment variable "process.env.OAUTH2_REQUEST_PERMISSIONS"
with this small little fix the login with google in oauth2-protocol gets possible :-)
I would be very happy about a master-merge

thank you in advance
2019-06-11 09:23:12 +02:00
Lauri Ojansivu 3f1ac6b5db Update translations. 2019-06-10 18:57:07 +03:00
Lauri Ojansivu d8f112278b Additional CORS headers settings, added earlier. In progress. 2019-06-10 18:29:33 +03:00
Christoph Jahn 0704cfb8b6 isAdmin and isBoardAdmin should add rules 2019-06-08 22:04:09 +02:00
Jason Cooke 5e806c3879 docs: fix typo 2019-06-01 09:57:45 +12:00
Christoph Jahn 27b0fd35b4 Allow BoardAdmin to create board rules. #2431 2019-05-28 17:41:39 +02:00
Lauri Ojansivu 5c1818fc9a Update changelog. 2019-05-24 22:38:23 +03:00
Lauri Ojansivu a7fb9662e3 Merge branch 'risacher-master' into edge 2019-05-24 22:35:35 +03:00
Daniel Risacher cb00cfc1b7 Add support for more CORS headers 2019-05-24 12:39:54 -04:00
Lauri Ojansivu d7bc8d100d Update changelog. 2019-05-23 11:47:50 +03:00
Lauri Ojansivu d067b3976c Merge pull request #2427 from DominikPf/OAuth2-fix
Fix Scope parsing Issue for OAuth2 Login with simple String
2019-05-23 11:43:10 +03:00
DominikPf 892ee60527 Fix Scope parsing Issue for OAuth2 Login 2019-05-23 10:28:08 +02:00
Lauri Ojansivu d83cb75f95 v2.75 2019-05-22 21:47:49 +03:00
Lauri Ojansivu 697aaa895d Update translations. 2019-05-22 21:44:23 +03:00
Lauri Ojansivu 8add28d328 Update changelog. 2019-05-22 21:42:59 +03:00
Lauri Ojansivu 634df8f6f2 - Fix: OAuth2 Requested Scopes are wrong / cannot be configured.
Thanks to DominikPf and xet7 !

Closes #2412
2019-05-22 21:37:01 +03:00
Lauri Ojansivu d194cc7a5a - [CAS allowed LDAP groups](https://github.com/wekan/meteor-accounts-cas/pull/4).
Thanks to ppoulard !

Please test.

Related #2356
2019-05-22 20:15:24 +03:00
Lauri Ojansivu 0834f6ed1e v2.74 2019-05-14 21:33:12 +03:00
Lauri Ojansivu 9d5e288bca Update changelog. 2019-05-14 21:29:46 +03:00
Lauri Ojansivu 0fe40ad9ec - Add missing [wekan-ldap#40](https://github.com/wekan/wekan-ldap/pull/40) code about LDAP_SYNC_ADMIN_STATUS.
Thanks to JulianJacobi, n-st, chirrut2 and xet7 !

Closes #2351
2019-05-14 21:24:11 +03:00
Lauri Ojansivu 0765278195 v2.73 2019-05-14 16:48:18 +03:00
Lauri Ojansivu f782b9c298 Update translations (fi). 2019-05-14 16:42:05 +03:00
Lauri Ojansivu e611685e50 Fix lint errors. 2019-05-14 16:37:41 +03:00
Lauri Ojansivu 3edef95c4e - [Few fixes for Dockerfile](https://github.com/wekan/wekan/pulls/2407).
Thanks to bentiss !
2019-05-14 16:31:13 +03:00
Lauri Ojansivu 9b902e1ca0 Merge pull request #2407 from bentiss/dockerfile-fixes
Few fixes for Dockerfile
2019-05-14 16:28:51 +03:00
Lauri Ojansivu fc835815d8 - [Card count placement and export API functionality back](https://github.com/wekan/wekan/pulls/2406).
Thanks to bentiss.

Closes #2403,
closes #2328
2019-05-14 16:27:15 +03:00
Lauri Ojansivu da083c2e20 Merge pull request #2406 from bentiss/fixes
card count placement and export API functionality back
2019-05-14 16:25:05 +03:00
Lauri Ojansivu 6ee17ab080 - Fixed [#2338](https://github.com/wekan/wekan/issues/2338) -> [Slow opening of big boards with too many archived items](https://github.com/wekan/wekan/pull/2402).
If some Wekan users see errors with this, please empty your browser cache.
  Thanks to nerminator.

Closes #2338
2019-05-14 16:23:52 +03:00
Benjamin Tissoires 1e34585548 Dockerfile: no need to change the permissions once again
we carefully used gosu where needed, so there is no need to re-run a
check on the permissions.
2019-05-14 10:33:41 +02:00
Benjamin Tissoires 76cd5a2844 Dockerfile: use gosu for creating the openapi files 2019-05-14 10:33:41 +02:00
Benjamin Tissoires ffd1b93abf Dockerfile: bump api2html to version 0.3.3 2019-05-14 10:33:41 +02:00
Benjamin Tissoires 1eea102f26 openAPI: also handle export statement in the scripts
The files are actually modules, not plain scripts, and thus we are allowed
to use `export`. Without `parseModule`, the script would silently fail
when parsing `export.js` and the export function will not be present.
2019-05-14 10:10:21 +02:00
Benjamin Tissoires 94c1367684 Restore export API
Commit 477d71e0b9 was based on an older version of export.js, which
means it reverted a few changes that were made previously.

Fixes #2328
2019-05-14 09:37:56 +02:00
Benjamin Tissoires 9bf19f81a4 Fix card count position
When introducing markdown in the title (b795115042), the card
count got pushed outside of the List Header.

Add its own style (by manually merge small and quiet), and restore its
original placement.

Fixes #2403
2019-05-14 09:37:34 +02:00
Lauri Ojansivu 21de0ec396 Merge pull request #2402 from nerminator/feature/performance_archive
Fixed #2338 -> Slow opening of big boards with too many archived items
2019-05-13 12:56:12 +03:00
wekan ab4fec0f3c Fixed #2338 -> Slow opening of big boards with too many archived items 2019-05-13 11:01:50 +02:00
Lauri Ojansivu b983479476 v2.72 2019-05-13 10:49:41 +03:00
Lauri Ojansivu f6e5e514ef Merge pull request #2401 from guyzyl/devel
Added BIDI support to "Add Card" #884
2019-05-13 10:42:42 +03:00
Guy Zylberberg ddd828083e Added BIDI support to "Add Card" #884 2019-05-13 00:37:40 +03:00
Lauri Ojansivu e079b4df17 v2.71 2019-05-12 20:49:27 +03:00
Lauri Ojansivu 4e5ff17e18 Update translations. 2019-05-12 20:43:23 +03:00
Lauri Ojansivu 86e1a9cd5d Update changelog. 2019-05-12 20:40:32 +03:00
Lauri Ojansivu 8a0efffdf8 Merge pull request #2400 from atilaromero/devel
Add partentId support on card web API
2019-05-12 20:27:50 +03:00
Lauri Ojansivu c21f710a70 Fix typo. 2019-05-12 19:15:49 +03:00
Atila Romero f3382abe3b Add partentId support on card web API 2019-05-12 10:26:08 -03:00
Lauri Ojansivu d6c86f3cba v2.70 2019-05-11 23:50:47 +03:00
Lauri Ojansivu 3a6516f0cb Update changelog. 2019-05-11 23:47:11 +03:00
Lauri Ojansivu b795115042 - [View markdown on List names, Custom Fields (Text and Dropdown), Label names,
All Boards view Board names and Board descriptions](https://github.com/wekan/wekan/issues/2334).

Thanks to shaygover and xet7 !

Related #2334
2019-05-11 23:40:18 +03:00
Lauri Ojansivu 52fe845d24 v2.69 2019-05-11 00:07:37 +03:00
Lauri Ojansivu b2b6bb2d39 Update changelog. 2019-05-11 00:05:34 +03:00
Lauri Ojansivu db40ca25ac - Fix translation name in Wekan menu: oc to Occitan.
Thanks to xet7 !
2019-05-11 00:02:40 +03:00
Lauri Ojansivu 3eef42eee0 v2.68 2019-05-10 23:18:12 +03:00
Lauri Ojansivu 38d0ad74a9 Update changelog. 2019-05-10 23:13:20 +03:00
Lauri Ojansivu 3bbc805ee4 Option to login to the LDAP server with the user's own username and password, instead of an administrator key. Default: false (use administrator key).
With new setting: LDAP_USER_AUTHENTICATION=true
Added to Snap, Docker and Source.

Thanks to xet7 !

Related https://github.com/wekan/wekan/pull/2399
2019-05-10 23:04:51 +03:00
Lauri Ojansivu c37a454bd5 Merge branch 'thiagofernando-devel' into devel 2019-05-10 22:23:15 +03:00
Lauri Ojansivu 6f98be5608 Merge branch 'devel' of https://github.com/thiagofernando/wekan into thiagofernando-devel 2019-05-10 22:21:50 +03:00
Lauri Ojansivu ab4dab2ade v2.67 2019-05-10 21:01:34 +03:00
Lauri Ojansivu 88ffddfeba Update changelog. 2019-05-10 20:58:35 +03:00
Thiago Fernando 36f148a7cb Update loginHandler.js
additional option to login in ldap server with user account
2019-05-10 14:58:19 -03:00
Thiago Fernando fd1af07e43 Update ldap.js 2019-05-10 14:56:07 -03:00
Lauri Ojansivu fca87b53f0 Update changelog. 2019-05-10 20:55:35 +03:00
Thiago Fernando ce0473480b Merge pull request #1 from wekan/devel
ldap changes
2019-05-10 14:54:25 -03:00
Lauri Ojansivu 828f6ea321 - Add Feature: Move board to Archive button at each board at All Boards page.
Thanks to xet7 !

Related #2389
2019-05-10 20:50:53 +03:00
Lauri Ojansivu 7ff4067e88 v2.66 2019-05-09 16:32:34 +03:00
Lauri Ojansivu 491d27638a Delete user feature. 2019-05-09 16:24:13 +03:00
Lauri Ojansivu e1b016cf3d Prevent data loss.
Thanks to xet7 !
2019-05-09 16:17:53 +03:00
Lauri Ojansivu c850669777 Merge pull request #2384 from Akuket/origin/edge
Delete user feature
2019-05-09 16:06:17 +03:00
Lauri Ojansivu 04c7372a4e Update changelog. 2019-05-09 16:02:54 +03:00
Lauri Ojansivu 64ee60a008 Fix missing profile checks.
Thanks to justinr1234 !
2019-05-09 14:32:38 +03:00
Lauri Ojansivu 434ed895ed Merge pull request #2395 from guyzyl/devel
Fixed RTL issue #884
2019-05-09 14:24:35 +03:00
Guy Zylberberg 1bdc1017d6 Fixed RTL issue #884 2019-05-08 21:30:38 +03:00
Lauri Ojansivu 6218d8c7ed Update translations. 2019-05-08 18:20:49 +03:00
Lauri Ojansivu c250554177 Update translations. Add Chinese (Hong Kong). 2019-05-06 20:57:01 +03:00
Lauri Ojansivu de772a8c3b Update changelog. 2019-04-29 01:18:17 +03:00
Lauri Ojansivu 23f1cf5f49 Update translations. 2019-04-29 01:17:52 +03:00
Lauri Ojansivu 723fa11a74 Merge pull request #2385 from faust64/patch-1
fix(oidc): can not log in
2019-04-26 23:08:45 +03:00
Lauri Ojansivu 94b602e167 Update translations. 2019-04-26 23:07:38 +03:00
Samuel b17359ec6f fix(oidc): can not log in
Trying to configure wekan authenticating against LemonLDAP-NG, I used to read about errors like the following:

```
XXX: getUserInfo response:  { sub: 'demoone' }
XXX: userinfo: { sub: 'demoone' }
{"line":"431","file":"oauth.js","message":"Error in OAuth Server: id is not defined","time":{"$date":1556286530412},"level":"warn"}
Exception while invoking method 'login' { stack: 'ReferenceError: id is not defined\n    at Object.handleOauthRequest (packages/wekan-oidc.js:39:68)\n    at OAuth._requestHandlers.(anonymous function) (packages/oauth2.js:27:31)\n    at middleware (packages/oauth.js:203:5)\n    at packages/oauth.js:176:5',
source: 'method' }
```

Looking at the sources, that error message seems to be right: we have several references to `id`, `uid`, `displayName` or `email`, which are not defined. Probably a typo, assuming we meant these to be strings.

Applying that patch, I confirm I can finally log in:

```
XXX: getUserInfo response:  { sub: 'demoone' }
XXX: userinfo: { sub: 'demoone' }
XXX: serviceData: { id: undefined,
  username: undefined,
  fullname: undefined,
  accessToken: 'e57dc4e9e81cc98c279db3ed08b1c72f',
  expiresAt: 1556298699213,
  email: undefined }
XXX: profile: { name: undefined, email: undefined }
```

All the credit goes to @pcurie .
2019-04-26 18:21:42 +02:00
guillaume cdef8a33e4 Delete user feature 2019-04-26 17:53:48 +02:00
Lauri Ojansivu 11a91bfc78 Update translations. 2019-04-24 16:12:29 +03:00
Lauri Ojansivu aeb3dd0220 v2.65 2019-04-24 14:40:04 +03:00
Lauri Ojansivu 9647a33209 Update translations. 2019-04-24 14:01:38 +03:00
Lauri Ojansivu 2d966863e3 Merge branch 'Akuket-edge' into edge 2019-04-24 13:51:00 +03:00
Lauri Ojansivu a66632f767 Update translations. 2019-04-24 13:41:29 +03:00
Lauri Ojansivu 1c2ee631f4 Update changelog. 2019-04-24 13:37:19 +03:00
guillaume 259ff3436f fix lints 2019-04-24 12:35:00 +02:00
Lauri Ojansivu a750ecaafd - Remove from card menu, because they also exist at card:
members, labels, attachments, dates received/start/due/end.

Thanks to sfahrenholz, jrsupplee and xet7 !

Closes #2242,
related https://community.vanila.io/?t=517527b6-3d84-4e9d-b2ec-6f560a9cfdf7
2019-04-24 13:32:36 +03:00
guillaume 8b3601248d Loading authentication page 2019-04-24 12:28:11 +02:00
Lauri Ojansivu 6420020309 v2.64 2019-04-23 19:49:07 +03:00
Lauri Ojansivu 65d86a42d7 Update translations (es). 2019-04-23 19:45:54 +03:00
Lauri Ojansivu 4eaffdc6a4 [Board Archive: Delete Card/List/Swimlane](https://github.com/wekan/wekan/pull/2376).
Thanks to Akuket !

Closes #1625
2019-04-23 19:43:02 +03:00
Lauri Ojansivu 454e8a3962 Update translations. 2019-04-23 19:38:23 +03:00
Lauri Ojansivu 11e8a9d5c4 Merge branch 'Akuket-feature/removeArchived' into edge 2019-04-23 19:30:23 +03:00
guillaume 8137f2692f remove feature 2019-04-23 18:00:09 +02:00
Lauri Ojansivu 6933424fca Remove python2 from Dockerfile, to make Docker image smaller.
Thanks to xet7 !
2019-04-23 15:10:47 +03:00
Lauri Ojansivu ff8a10c231 v2.63 2019-04-23 14:41:33 +03:00
Lauri Ojansivu 6a94500170 Remove caddy plugins http.filter, http.ipfilter and http.realip from caddy
because they are currently broken, preventing download of caddy
during Wekan Snap build.

Thanks to xet7 !
2019-04-23 14:35:41 +03:00
Lauri Ojansivu 41eb47bc15 v2.62 2019-04-23 14:08:13 +03:00
Lauri Ojansivu 211f772447 Merge pull request #2374 from hupptechnologies/center-card-list-view
Issue : Mobile UI Center cards in list view #2371
2019-04-23 14:02:04 +03:00
Lauri Ojansivu 6d6e3fd127 Update translations. 2019-04-23 14:00:12 +03:00
hupptechnologies 14ef0ab6d1 Issue : Mobile UI Center cards in list view #2371
Resolved #2371
2019-04-23 15:09:09 +05:30
Lauri Ojansivu 8434069539 v2.61 2019-04-20 17:11:14 +03:00
Lauri Ojansivu c7621f251f Fix release build script. package repos are included to Wekan now. 2019-04-20 17:04:59 +03:00
Lauri Ojansivu a5122cc076 Update translations. 2019-04-20 16:47:54 +03:00
Lauri Ojansivu 5993d6862b Change enter => search 2019-04-20 16:46:26 +03:00
Lauri Ojansivu 348b612f98 Fix rebuild script. 2019-04-20 16:34:16 +03:00
Lauri Ojansivu f714b59c88 Uncomment not needed lines. 2019-04-20 16:31:10 +03:00
Lauri Ojansivu b627499acd Merge branch 'Akuket-edge' into edge 2019-04-20 16:29:08 +03:00
Lauri Ojansivu 43beccc2eb Update translations. 2019-04-20 16:28:03 +03:00
Lauri Ojansivu b8275b3404 Merge branch 'edge' of https://github.com/Akuket/wekan into Akuket-edge 2019-04-20 16:22:20 +03:00
Lauri Ojansivu 6e4da08164 LDAP issues now at main Wekan repo. 2019-04-20 16:21:21 +03:00
Lauri Ojansivu f2ac52bcdf Update changelog. 2019-04-20 16:20:00 +03:00
Lauri Ojansivu 46e976513b Move https://github.com/wekan/wekan-postgresql to
wekan/torodb-postgresql at https://github.com/wekan/wekan

Thanks to xet7 !
2019-04-20 16:05:54 +03:00
Lauri Ojansivu 816ccf6509 Update package names. 2019-04-20 15:24:09 +03:00
Lauri Ojansivu 73e265d8fd Include to Wekan packages directory contents, so that meteor command would build all directly.
This also simplifies build scripts.

Thanks to xet7 !
2019-04-20 15:18:33 +03:00
Lauri Ojansivu 6117097a93 - Upgrade to Node 8.16.0
- Change git repo urls from git:// to https://

Thanks to xet7 !
2019-04-20 14:52:37 +03:00
Lauri Ojansivu fee732dba1 Fix repo urls. 2019-04-20 14:47:33 +03:00
Lauri Ojansivu 1138e8062f Fix repo url. 2019-04-20 14:46:11 +03:00
Lauri Ojansivu 123cf0d7b8 Fix typos in directory names. 2019-04-20 14:03:35 +03:00
Lauri Ojansivu bd14ee3b1f Ubuntu base image to ubuntu:disco
Thanks to Ubuntu and xet7 !
2019-04-20 13:44:14 +03:00
guillaume e63eee0c68 fix lints 2019-04-19 16:39:14 +02:00
guillaume 070feb4b66 Number of users 2019-04-19 16:17:17 +02:00
guillaume 308417852c Search user in admin panel 2019-04-19 14:57:52 +02:00
Lauri Ojansivu 9c3a976250 - Remove [extra](https://github.com/wekan/wekan/pull/2332) [quotes](https://github.com/wekan/wekan/pull/2333) from docker-compose.yml.
Thanks to hibare !
2019-04-18 13:42:00 +03:00
Lauri Ojansivu 688973bae5 [Fix Full width of lists and space before first list](https://github.com/wekan/wekan/pull/2343).
Thanks to hupptehcnologies !

Closes #2336
2019-04-18 13:38:37 +03:00
Lauri Ojansivu d93b0be0d4 Add missing packages back. 2019-04-18 13:36:14 +03:00
Lauri Ojansivu 773abbae13 Merge pull request #2343 from hupptechnologies/improve-mobile-ui
Issue: Full width of lists and space before first list #2336
2019-04-18 13:35:20 +03:00
Lauri Ojansivu 0f3579fd7b Merge branch 'devel' into improve-mobile-ui 2019-04-18 13:34:40 +03:00
Lauri Ojansivu db7b7158fa Merge branch 'master' into devel 2019-04-18 13:30:49 +03:00
Lauri Ojansivu b5a61f2dd8 Merge pull request #2333 from hibare/devel
Removed quotes
2019-04-18 13:30:23 +03:00
Lauri Ojansivu 8347f15de2 Merge pull request #2332 from hibare/master
Removed quotes
2019-04-18 13:30:05 +03:00
Lauri Ojansivu 26309fad10 Update translations. 2019-04-18 13:26:46 +03:00
Lauri Ojansivu ba4d8b0b35 Update to newest GitHub flawored markdown.
Thanks to shaygover and xet7 !

Related #2334
2019-04-18 13:23:48 +03:00
hupp-mac-4 dc11e0c79c Issue: Full width of lists and space before first list #2336
Resolved #2336
2019-04-18 15:41:23 +05:30
Lauri Ojansivu a13d931cfd Change to correct issue number as noticed typo at #2295 2019-04-18 13:10:49 +03:00
Lauri Ojansivu fea2ad3d7d Test newest markdown. 2019-04-18 10:57:59 +03:00
Shubham Hibare b8c10def8e Removed quotes 2019-04-12 00:44:54 +05:30
Shubham Hibare 80afc28719 Removed quotes 2019-04-12 00:43:59 +05:30
Lauri Ojansivu 561cd77e68 Replace header login example variable names.
Related #2019
2019-04-08 12:01:26 +03:00
Lauri Ojansivu d8554ec67e Combine to same line. 2019-04-08 10:58:49 +03:00
Lauri Ojansivu a43237d4f9 v2.60 2019-04-08 10:31:48 +03:00
Lauri Ojansivu 6af7d782d4 Update translations. 2019-04-08 10:29:29 +03:00
Lauri Ojansivu 6d2b778ac5 [Fix: Description of Board is out of visible after Feature "Duplicate Board"](https://github.com/wekan/wekan/issues/2324).
Thanks to sfahrenholz and xet7 !

Closes #2324
2019-04-08 09:07:58 +03:00
Lauri Ojansivu eada773048 [Fix: Description of Board is out of visible after Feature "Duplicate Board"](https://github.com/wekan/wekan/issues/2324).
Thanks to sfahrenholz and xet7 !

Closes #2324
2019-04-08 09:03:55 +03:00
Lauri Ojansivu 9bff4e061e Update translations. 2019-04-07 18:27:17 +03:00
Lauri Ojansivu 753ce8e119 v2.59 2019-04-06 14:15:40 +03:00
Lauri Ojansivu 4be6719db4 - [Add variables for activity notifications, Fixes #2285](https://github.com/wekan/wekan/pull/2320).
Thanks to rinnaz !

Closes #2285
2019-04-06 14:07:55 +03:00
Lauri Ojansivu a6e1dc4269 Merge pull request #2320 from rinnaz/fix/issue-2285
Add variables for activity notifications Fixes #2285
2019-04-06 14:04:09 +03:00
Lauri Ojansivu ad241b9f84 v2.58 2019-04-06 13:54:32 +03:00
Lauri Ojansivu 53e76288cb [Add Duplicate Board tooltip, and remove adding text "Copy" to duplicated board](https://github.com/wekan/wekan/commit/0f15b6d1982c383f76e8411cb501ff27e8febd42).
Thanks to xet7 !
2019-04-06 13:52:05 +03:00
Lauri Ojansivu 0f15b6d198 - Add Duplicate Board tooltip, and remove adding text "Copy" to duplicated board.
Thanks to xet7 !
2019-04-06 13:47:15 +03:00
windblow 143e93f483 Add variables for activity notifications Fixes #2285 2019-04-06 12:45:31 +03:00
Lauri Ojansivu 93a5bb2baa Add the following new features:
- [Duplicate Board](https://github.com/wekan/wekan/issues/2257). Related #2225.
  Thanks to Angtrim. Closes #2257.

and fix the following bugs:

- [Fix Swimlane Rules don't work](https://github.com/wekan/wekan/issues/2225).
  Thanks to Angtrim.
2019-04-06 09:19:33 +03:00
Lauri Ojansivu ebfc8e5a1b Fix lint errors.
Thanks to xet7 !
2019-04-06 09:00:13 +03:00
Lauri Ojansivu 972b9b6e91 Remove extra files.
Thanks to xet7 !
2019-04-06 08:50:56 +03:00
Lauri Ojansivu 56cccc6781 Merge remote-tracking branch 'Angtrim/feature-duplicate' into edge 2019-04-06 08:46:40 +03:00
Lauri Ojansivu b680bb5372 - [Remove not needed ARGS from Dockerfile to reduce amount of Docker layers](https://github.com/wekan/wekan/issues/2301).
Thanks to folhabranca !

Closes #2301
2019-04-06 08:14:37 +03:00
Lauri Ojansivu 217b3ae488 Remove not needed ARGS from Dockerfile to reduce amount of Docker layers.
Thanks to folhabranca !

Closes #2301
2019-04-06 08:11:08 +03:00
Lauri Ojansivu 959392f815 [Center reduce left margin in card view on mobile browser](https://github.com/wekan/wekan/pull/2314).
Thanks to hupptechnologies !
2019-04-06 07:57:30 +03:00
Lauri Ojansivu d1e13e48fe Restore original meteor packages and versions.
Thanks to xet7 !
2019-04-06 07:47:08 +03:00
Lauri Ojansivu 1c04502963 Merge branch 'devel' of github.com:wekan/wekan into devel 2019-04-06 07:45:16 +03:00
Lauri Ojansivu 34da23783e Merge pull request #2314 from hupptechnologies/card-view-on-mobile-browser
Issue: Center reduce left margin in card view on mobile browser #2188
2019-04-06 07:45:03 +03:00
Lauri Ojansivu 2b603cfbb5 Merge branch 'edge' into devel 2019-04-06 07:44:03 +03:00
Lauri Ojansivu a1fe22c08c [Add proper variables for unjoin card](https://github.com/wekan/wekan/pull/2313).
Thanks to chotaire.
2019-04-06 07:43:14 +03:00
Lauri Ojansivu bc04ae24a7 Merge pull request #2313 from chotaire/edge
Add proper variables for unjoin card
2019-04-05 22:10:05 +03:00
Angelo Gallarello 48216e1653 Minor fixes 2019-04-05 10:38:39 +02:00
hupptechnologies 8aca82a593 Issue: Center (or reduce left margin) in card view on mobile browser #2188
Resolved #2188
2019-04-05 13:27:41 +05:30
chotaire 68d8cbe68a Merge pull request #1 from chotaire/chotaire-patch-1
Add proper variables for unjoin card
2019-04-05 03:03:57 +02:00
chotaire 4bc3acb14d Add proper variables for unjoin card 2019-04-05 02:59:35 +02:00
Lauri Ojansivu a974ec9dee Update translations. 2019-04-04 20:22:25 +03:00
Lauri Ojansivu e91c43466d Merge pull request #2303 from fossabot/devel
Add license scan report and status
2019-04-02 16:36:29 +03:00
fossabot dfc4ab6dd8 Add license scan report and status
Signed-off-by: fossabot <badges@fossa.io>
2019-04-02 06:32:34 -07:00
Lauri Ojansivu 9f5ffde2dd v2.57 2019-04-02 15:26:40 +03:00
Lauri Ojansivu 678bef2360 Update changelog. 2019-04-02 15:19:21 +03:00
Lauri Ojansivu 3b12cdc179 Merge branch 'bentiss-spinners-no-IntersectionObserver' into devel 2019-04-02 15:15:34 +03:00
Benjamin Tissoires 261754f18b list: do not use IntersectionObserver to reduce CPU usage
Switch back to a custom spinner detection, as the IntersectionObserver
is eating a lot of CPU resources on idle.

This should also take care of #2250 properly: the previous `onDestroyed()`
was removing the resize and scroll callbacks, but they were not unique
enough, and they were shared across swimlanes. So if a list had 2 swimlanes
with spinners, when one was removed, the other was not triggering its
callbacks anymore.

Related: #2294
2019-04-01 23:54:35 +02:00
Lauri Ojansivu 980db9cb0c Merge branch 'edge' of github.com:wekan/wekan into edge 2019-03-30 19:07:05 +02:00
Lauri Ojansivu a80cd455de - [Add back zoom fixes of #2250](https://github.com/wekan/wekan/issues/2250).
Thanks to xet7 !
2019-03-30 19:06:09 +02:00
Lauri Ojansivu 289e3d6286 More deps. 2019-03-30 14:34:32 +02:00
Lauri Ojansivu 4b181620d8 Added nodejs to install dependencies.
Thanks to xet7 !
2019-03-30 14:30:04 +02:00
Lauri Ojansivu 088ec7fd94 [Add proper variables for join card](https://github.com/wekan/wekan/commit/289f1fe1340c85eb2af19825f4972e9057a86b7a),
fixes [Incorrect variable replacement on email notifications](https://github.com/wekan/wekan/issues/2295).

Thanks to justinr1234 !

Closes #2295
2019-03-29 14:39:35 +02:00
Lauri Ojansivu 289f1fe134 Merge pull request #2291 from justinr1234/patch-3
Add proper variables for join card Fixes #2285
2019-03-29 14:35:06 +02:00
Lauri Ojansivu 6b9ac52af6 Update translations. 2019-03-29 14:34:24 +02:00
Lauri Ojansivu 0e422eb70d [Revert spinner etc fixes of Wekan v2.56, because of some new bugs](https://github.com/wekan/wekan/issues/2250).
Thanks to gerroon !

Related #2250
2019-03-29 14:31:26 +02:00
Lauri Ojansivu df32545b07 Revert spinner etc fixes of Wekan v2.56, because of some new bugs.
Thanks to gerroon !

Related #2250
2019-03-29 14:27:37 +02:00
justinr1234 bab340a849 Add proper variables for join card Fixes #2285 2019-03-28 19:38:02 -05:00
Lauri Ojansivu 494d44f8bb v2.56 2019-03-27 17:51:54 +02:00
Lauri Ojansivu ad1a81e8a0 Update translations. 2019-03-27 17:46:09 +02:00
Lauri Ojansivu b0d507c2dd [Fixes the following bugs](https://github.com/wekan/wekan/pull/2287):
- [#2250 -> the spinner could be shown on startup and never goes away](https://github.com/wekan/wekan/issues/2250).
- The code will now only load extra cards that will be in the current viewport.
- When 2 users were interacting on the same board, there was a situation where the spinner could show up on the other user, without being able to load the extra cards.
- The code is now much simpler, thanks to the IntersectionObserver, and all of this for fewer lines of code :)

Thanks to bentiss with Apache I-CLA !

Closes #2250
2019-03-27 17:38:54 +02:00
Lauri Ojansivu 619e5e944b Merge branch 'bentiss-fix-infinite-scroll' into edge 2019-03-27 17:33:53 +02:00
Benjamin Tissoires e2d0faa539 list: disconnect infinite-scroll observer to prevent memory leak 2019-03-26 16:28:25 +01:00
Benjamin Tissoires cbb6c82113 list: move the spinner into its own blaze component
This way, when a list is at the maximum number of cards shown and adding
a new card would make the spinner appear, the list would load the next
N items.

This can happen if user A and B are both looking at the same board,
B adds a new cards, and A will see the spinner and will not be able to
remove it.
2019-03-26 16:27:52 +01:00
Benjamin Tissoires 00376b43f8 list: make sure the spinner of infinite scrolling doesn't show on load
When loading a board on a high resolution screen, there is a chance there
is not enough cards displayed and the spinner is still there, spinning
forever.

Add an idle callback that checks if the spinner is still there, and while
it is there, extend the number of cards to show.

Fixes #2250
2019-03-26 16:26:59 +01:00
Benjamin Tissoires fb163a2493 list: simplify infinite scrolling
Use IntersectionObserver instead of custom made one.
This adds the benefit of not loading any extra cards if the list is
not shown on screen
2019-03-26 16:25:49 +01:00
Lauri Ojansivu 14c493fc63 v2.55 2019-03-25 19:11:35 +02:00
Lauri Ojansivu 625682a4da - Use older api2html@0.3.0 to fix broken snap and docker build,
because newer api2html caused
  [breaking change](https://github.com/tobilg/api2html/commit/a9a41bca18db3f9ec61395d7262eff071a995783)
  at api2html/bin/api2html.js:23 has error about "php: "PHP".

Thanks to bentiss with Apache I-CLA !

Closes #2286
2019-03-25 18:57:35 +02:00
Lauri Ojansivu eec8f45de5 v2.54 2019-03-25 17:11:29 +02:00
Lauri Ojansivu 0855e3e32f Update translations. 2019-03-25 17:04:29 +02:00
Lauri Ojansivu fab3ce46b8 - Fix typos.
- Fix Outgoing Webhook message about created new swimlane.

Related #1969
2019-03-25 17:02:36 +02:00
Lauri Ojansivu 08c8ebc100 - Fix typos.
- Fix Outgoing Webhook message about created new swimlane.

Related #1969
2019-03-25 16:59:12 +02:00
Lauri Ojansivu 0039fe09be Removed commented out text. 2019-03-24 17:44:03 +02:00
Lauri Ojansivu 97beed6fd1 v2.53 2019-03-23 21:34:43 +02:00
Lauri Ojansivu 994314cfa3 Fix filenames and urls. 2019-03-23 21:30:41 +02:00
Lauri Ojansivu db6dbe34c3 Fix docker-compose.yml 2019-03-23 21:13:03 +02:00
Lauri Ojansivu fa7ef361e2 Update translations. 2019-03-23 13:17:36 +02:00
Lauri Ojansivu 296349a83b v2.52 2019-03-22 13:08:36 +02:00
Lauri Ojansivu 563458e0b5 Update translations. 2019-03-22 12:03:25 +02:00
Lauri Ojansivu 169301fa18 Update translations. 2019-03-22 09:25:18 +02:00
Lauri Ojansivu 0363e6f122 Remove extra title quotes, so that Custom Product Name comes visible.
Thanks to xet7 !
2019-03-22 01:35:53 +02:00
Lauri Ojansivu c259324185 Fix cloning repos. 2019-03-21 23:58:58 +02:00
Lauri Ojansivu 57767d9906 Update translations. 2019-03-21 23:48:36 +02:00
Lauri Ojansivu 1a26f9fb82 Update translations. 2019-03-21 22:35:13 +02:00
Lauri Ojansivu 19ab7db239 Add vanila community link. 2019-03-21 22:34:41 +02:00
Lauri Ojansivu ded430c155 - [Add LDAP config example, remove extra text](https://github.com/wekan/wekan/commit/506acda70b5e78737c52455e5eee9c8758243196).
Thanks to xet7 !
2019-03-21 22:24:35 +02:00
Lauri Ojansivu 506acda70b - Add LDAP config example, remove extra text.
Thanks to xet7 !
2019-03-21 22:22:46 +02:00
Lauri Ojansivu d173844f98 OAUTH2_LOGIN_STYLE popup or redirect, part 2 and 3. 2019-03-21 21:41:18 +02:00
Lauri Ojansivu 7919ae3628 - OAUTH2_LOGIN_STYLE popup or redirect, part 2.
Thanks to xet7 !
2019-03-21 21:37:38 +02:00
Lauri Ojansivu 188d42dcd6 [Add option to redirect OIDC OAuth2 login](https://github.com/wekan/wekan-ldap/commit/82a894ac20ba9e7c6fdf053cff1721cab709bf8a).
Thanks to xet7 !
2019-03-21 20:59:45 +02:00
Lauri Ojansivu 7735394373 - [Fix IFTTT email sending](https://github.com/wekan/wekan/pull/2279).
Thanks to justinr1234.

Related #1972
2019-03-21 20:38:06 +02:00
Lauri Ojansivu 30bf8a1724 Merge pull request #2279 from justinr1234/patch-2
Fix IFTTT email sending
2019-03-21 20:35:38 +02:00
Lauri Ojansivu 0310560938 More whitelabeling. 2019-03-21 20:32:07 +02:00
Lauri Ojansivu 2969161afb - More whitelabeling.
Thanks to xet7 !
2019-03-21 20:27:21 +02:00
Lauri Ojansivu a6213d4a6f Update translations. 2019-03-21 20:21:21 +02:00
justinr1234 12268bd065 Fix IFTTT email sending 2019-03-21 10:22:57 -05:00
Lauri Ojansivu 35a66c3550 Fix typo. 2019-03-21 02:41:21 +02:00
Lauri Ojansivu 402a974a70 v2.51 2019-03-21 01:22:09 +02:00
Lauri Ojansivu 079cd95e0e Merge pull request #2269 from andresmanelli/fix_2268
Fix #2268
2019-03-21 01:13:33 +02:00
Lauri Ojansivu e9f5aaa397 v2.50 2019-03-21 01:11:48 +02:00
Lauri Ojansivu ca0236fdfd [Fix](https://github.com/wekan/wekan/pull/2269) [Unable to change card title in Template](https://github.com/wekan/wekan/issues/2268)
and [Fix Unable to create a new board from a template](https://github.com/wekan/wekan/issues/2267).

Thanks to andresmanelli !

Closes 2268,
closes #2267
2019-03-21 00:56:18 +02:00
Lauri Ojansivu da3edb35cc v2.49 2019-03-21 00:39:35 +02:00
Andrés Manelli ef6054b859 Fix #2268 2019-03-20 23:32:52 +01:00
Lauri Ojansivu 1046976c08 [Fix Cards disappear when rearranged on template board](https://github.com/wekan/wekan/issues/2266).
Thanks to andresmanelli !

Closes #2266
2019-03-21 00:23:35 +02:00
Lauri Ojansivu f8cbbfc2cd Merge pull request #2270 from andresmanelli/fix_2266
Fix #2266
2019-03-21 00:21:19 +02:00
Lauri Ojansivu f083fc0d7b Update changelog. 2019-03-21 00:13:31 +02:00
Lauri Ojansivu 72cb820f1f Merge branch 'andresmanelli-fix_subtasks' into edge 2019-03-21 00:12:06 +02:00
Lauri Ojansivu d5d33247fb Merge branch 'fix_subtasks' of https://github.com/andresmanelli/wekan into andresmanelli-fix_subtasks 2019-03-20 23:50:43 +02:00
Lauri Ojansivu 9f95a10591 Update translations. 2019-03-20 21:45:56 +02:00
Lauri Ojansivu 5ca083105c Update changelog. 2019-03-20 21:36:19 +02:00
Lauri Ojansivu 6bc8d8dd56 git push origin edgeMerge branch 'andresmanelli-edge' into edge 2019-03-20 21:24:45 +02:00
Lauri Ojansivu dce89bcfa8 Merge branch 'edge' of https://github.com/andresmanelli/wekan into andresmanelli-edge 2019-03-20 19:30:44 +02:00
Lauri Ojansivu e5370ce859 Merge branch 'devel' of github.com:wekan/wekan into devel 2019-03-20 19:29:32 +02:00
Lauri Ojansivu 6f35d73fe8 Update changelog. 2019-03-20 19:28:56 +02:00
Lauri Ojansivu af2fb5f399 Merge pull request #2272 from justinr1234/patch-1
Don't swallow email errors
2019-03-20 19:26:00 +02:00
Lauri Ojansivu e976565550 Update changelog. 2019-03-20 19:25:28 +02:00
justinr1234 7a6b4adcc1 Disable eslint for console error 2019-03-18 23:50:15 -05:00
justinr1234 ec30665bc4 Don't swallow email errors
Fixes #2246
2019-03-18 23:06:18 -05:00
Andrés Manelli 9651d62b96 Fix #2266 2019-03-18 22:55:56 +01:00
Andrés Manelli a6e3c8984d Fix dissapearing subtasks 2019-03-17 16:37:06 +01:00
Andrés Manelli 777d9ac353 Lint fix 2019-03-16 23:15:30 +01:00
Andrés Manelli d01fccd949 - Fix card copy & move between boards with customFields
- Fix card copy & move between boards with labels with same name
- Fix activities for labels when copying and moving card
- Fix activities for customFields when copying and moving card
2019-03-16 22:49:45 +01:00
Andrés Manelli 4cd0d1c397 Migrate customFields 2019-03-16 22:49:45 +01:00
Lauri Ojansivu bf3ec060f7 Merge pull request #2263 from inoio/devel
make emails for invitations lowercase, compatible with AccountsTemplates
2019-03-16 16:24:02 +02:00
Ole Langbehn 40a3267615 make emails for invitations all lowercase for compatibility with AccountsTemplates
Email addresses for invitations are stored case sensitive in mongo,
together with the invitation codes. When someone tries to sign up due to
an invitation, in the sign up form, due to AccountsTemplates defaults,
the email address is lowercased on blur of the textbox. When they then
try to sign in, they get an error about the invitation code not existing.
This makes it impossible to successfully invite people using
non-lowercased email addresses.

This patch lowercases the emails on the client side when inviting them.

Other possibilities would be to lowercase them on the server side before
storing them to mongodb, making a case insensitive search on mongodb, or
making the email input field in the sign up form not lowercase the email
string.

This patch was chosen in favor of the other possibilities because of its
simplicity.
2019-03-16 14:32:39 +01:00
Lauri Ojansivu ff19d6744e v2.48 2019-03-15 11:08:07 +02:00
Lauri Ojansivu c26af16688 Update translations. 2019-03-15 11:03:52 +02:00
Lauri Ojansivu 216b3cfe01 Fix LDAP login.
Thanks to xet7 !

Closes wekan/wekan-ldap#43,
closes wekan/wekan-snap#85
2019-03-15 10:59:54 +02:00
Lauri Ojansivu fd70556c82 v2.47 2019-03-14 00:39:24 +02:00
Lauri Ojansivu 0fee20cc12 Update changelog. 2019-03-14 00:27:46 +02:00
Lauri Ojansivu 32f6de1eec Try to fix [LDAP Login: "Login forbidden", ReferenceError: req is not defined](https://github.com/wekan/wekan-ldap/issues/44).
Please test.

Thanks to xet7 !

Closes wekan/wekan-ldap#44
2019-03-14 00:25:40 +02:00
Lauri Ojansivu 8671f08a0e Remove ordering of cards by stars/color/description, so that cards would not reorder all the time.
Thanks to xet7 !

Closes #2241
2019-03-14 00:16:39 +02:00
Lauri Ojansivu 299484f7b2 v2.46 2019-03-13 15:55:52 +02:00
Lauri Ojansivu d16086fcdb Update changelog. 2019-03-13 15:40:20 +02:00
Lauri Ojansivu 1968b7da31 Revert hiding of Subtask boards, because of feedback from Wekan users,
that need Subtask boards to be visible.

Thanks to xet7 !
2019-03-13 15:35:34 +02:00
Lauri Ojansivu 95a40a45e5 Update translations. 2019-03-13 00:30:07 +02:00
Lauri Ojansivu 0ad7f080b7 Merge branch 'devel' of github.com:wekan/wekan into devel 2019-03-12 23:01:31 +02:00
Lauri Ojansivu aca3048036 Update changelog. 2019-03-12 23:01:18 +02:00
Lauri Ojansivu 1158cd42cc Merge pull request #2253 from justinr1234/devel
Fix watchers undefined #2252
2019-03-12 22:57:38 +02:00
Justin Reynolds 0e2b7458d7 Fix watchers undefined #2252 2019-03-12 12:04:59 -05:00
Lauri Ojansivu cf7d740004 v2.45 2019-03-11 23:39:05 +02:00
Lauri Ojansivu dc4c4d9ade Merge pull request #2248 from andresmanelli/circular_migration
Rename migration to re run
2019-03-11 23:32:46 +02:00
Andrés Manelli a347ae3676 Rename migration to re run 2019-03-11 22:30:16 +01:00
Lauri Ojansivu 7da2a8a15e v2.44 2019-03-11 20:23:27 +02:00
Lauri Ojansivu 0002559d6e Update translations. 2019-03-11 20:20:45 +02:00
Lauri Ojansivu afda0ed4da Try to get ordering of All Boards working so that it does
not keep reordering.

Thanks to bentiss, with Apache I-CLA.

Related #2241
2019-03-11 19:56:17 +02:00
Lauri Ojansivu 473f389bbe [Changed brute force protection package from eluck:accounts-lockout to lucasantoniassi:accounts-lockout that is maintained and works.
Added Snap/Docker/Source settings](https://github.com/wekan/wekan/commit/b7c000b78b9af253fb115bbfa5ef0d4c0681abbb).

Thanks to xet7.
2019-03-11 19:53:13 +02:00
Lauri Ojansivu b7c000b78b Changed brute force protection package from eluck:accounts-lockout to
lucasantoniassi:accounts-lockout that is maintained and works.
Added Snap/Docker/Source settings.

Thanks to xet7 !

Closes #1572,
closes #1821
2019-03-11 19:47:23 +02:00
Lauri Ojansivu 4ac8247db0 [Fix imports](https://github.com/wekan/wekan/pull/2245).
Thanks to bentiss with Apache I-CLA.
2019-03-11 19:40:03 +02:00
Lauri Ojansivu 0471d1ac97 Merge branch 'edge' of github.com:wekan/wekan into edge 2019-03-11 19:37:52 +02:00
Lauri Ojansivu c0221dafde Update changelog. 2019-03-11 19:37:40 +02:00
Lauri Ojansivu 8f337f17e4 - Order All Boards by starred, color, board name and board description. Part 2.
Thanks to xet7 !
2019-03-11 19:32:58 +02:00
Lauri Ojansivu de5a63f7b2 Merge pull request #2245 from bentiss/fix-imports
Fix imports
2019-03-11 19:28:03 +02:00
Lauri Ojansivu 52a744b443 Update changelog. 2019-03-11 19:16:53 +02:00
Lauri Ojansivu 4be5fa598e Merge pull request #2244 from bentiss/edge
customFields: fix leftover from lint
2019-03-11 19:04:13 +02:00
Benjamin Tissoires d03a7e7a98 wekan-import: also import each swimlane color 2019-03-11 11:47:01 +01:00
Benjamin Tissoires ebc4d6fdbd wekan-import: also import each card color 2019-03-11 11:42:22 +01:00
Benjamin Tissoires 35ffd02814 Fix import error 500
while running an import from a previously exported board, we encounter
the following error:

Exception while invoking method 'importBoard' Error: Did not check() all arguments during call to 'importBoard'
    at ArgumentChecker.throwUnlessAllArgumentsHaveBeenChecked (packages/check.js:483:13)
    at Object._failIfArgumentsAreNotAllChecked (packages/check.js:131:16)
    at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1765:18)
    at DDP._CurrentMethodInvocation.withValue (packages/ddp-server/livedata_server.js:719:19)
    at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:15)
    at DDPServer._CurrentWriteFence.withValue (packages/ddp-server/livedata_server.js:717:46)
    at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:15)
    at Promise (packages/ddp-server/livedata_server.js:715:46)
    at new Promise (<anonymous>)
    at Session.method (packages/ddp-server/livedata_server.js:689:23)
    at packages/mdg_meteor-apm-agent.js:2617:38
    at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:15)
    at Session.sessionProto.protocol_handlers.method (packages/mdg_meteor-apm-agent.js:2616:44)
    at packages/ddp-server/livedata_server.js:559:43

Commit 4cf9813449 removed the checks as the original board might
not have all the required fields, but we actually still need to run
a general check on all parameters
2019-03-11 11:42:05 +01:00
Benjamin Tissoires 4c72479d12 customFields: fix leftover from lint
Looks like I forgot to use the camelCase notation here, and this leads
to an exception while updating a custom field.
2019-03-11 10:12:19 +01:00
Lauri Ojansivu 907c761f71 Update translations. 2019-03-10 21:35:55 +02:00
Lauri Ojansivu 97206aa8f6 Update changelog. 2019-03-10 21:31:40 +02:00
Andrés Manelli 2ec1664408 Fix removed checklistItem activity => dangling activities created 2019-03-08 21:13:41 +01:00
Andrés Manelli 97822f35fd Avoid set self as parent card, for real 2019-03-08 20:41:32 +01:00
Lauri Ojansivu c5e72d1a2b Merge branch 'edge' of github.com:wekan/wekan into edge 2019-03-08 20:51:57 +02:00
Lauri Ojansivu 117c9e069e Update changelog. 2019-03-08 20:51:43 +02:00
Lauri Ojansivu 951a9f81d6 Merge pull request #2239 from bentiss/customFields-activities
Activities: register customFields changes in the activities
2019-03-08 20:48:49 +02:00
Lauri Ojansivu 6f30c33f11 Add language: Occitan. 2019-03-08 20:47:05 +02:00
Lauri Ojansivu 8050117adf Add language: Occintan.
Thanks to translators !
2019-03-08 20:45:39 +02:00
Lauri Ojansivu 98031aacce v2.43 2019-03-08 19:12:11 +02:00
Lauri Ojansivu 2781ce6fa0 Update translations. 2019-03-08 19:02:31 +02:00
Lauri Ojansivu 08db39d76a Fix lint errors.
Thanks to xet7 !

Related #2019
2019-03-08 19:00:56 +02:00
Lauri Ojansivu da267e1488 [HTTP header automatic login](https://github.com/wekan/wekan/commit/ff825d6123ecfd033ccb08ce97c11cefee676104)
for [3rd party authentication server method](https://github.com/wekan/wekan/issues/2019) like siteminder, and any webserver that
handles authentication and based on it adds HTTP headers to be used for login. Please test.

Thanks to xet7 !

Related #2019
2019-03-08 18:55:36 +02:00
Lauri Ojansivu ff825d6123 [HTTP header automatic login. Not tested yet.](https://github.com/wekan/wekan/issues/2019).
Thanks to xet7 !

Related #2019
2019-03-08 18:40:43 +02:00
Benjamin Tissoires 6d6bb8fc57 Activities: register customFields changed in the activities
This stores the updates to the custom fields in the activities side bar.

Only manual updates to the custom fields are currently registered.
2019-03-08 11:32:59 +01:00
Lauri Ojansivu 7836ab83d0 - Order All Boards by Starred, Color and Title and Description.
Thanks to xet7 !

Closes #1990,
Related #252
2019-03-08 10:44:20 +02:00
Lauri Ojansivu 8568728152 - [Hide Subtask boards from All Boards](https://github.com/wekan/wekan/issues/1990).
- Order All Boards by Starred, Color and Title.

Thanks to xet7 !

Closes #1990,
Related #641
2019-03-08 09:41:36 +02:00
Lauri Ojansivu 8783983945 Update changelog. 2019-03-07 17:20:25 +02:00
Lauri Ojansivu 4055f451fd Reverts the following change of v2.42, because it did not fix anything:
- [Tried to fix snap mongodb-control not starting database](https://github.com/wekan/wekan/commit/2c5628b5fbcc25427021d0b22e74577a71149c21).

Thanks to xet7.
2019-03-07 17:17:21 +02:00
Lauri Ojansivu 31777ce804 Update changelog. 2019-03-07 11:27:06 +02:00
Lauri Ojansivu 97a9e92969 Merge remote-tracking branch 'andresmanelli/edge' into edge 2019-03-07 02:03:34 +02:00
Lauri Ojansivu c5ca414e8f v2.42 2019-03-07 01:52:53 +02:00
Lauri Ojansivu 2c5628b5fb Fix mongodb-control.
Thanks to xet7 and qurqar[m].
2019-03-07 01:48:42 +02:00
Andrés Manelli a338e937e5 Add migration to fix circular references 2019-03-07 00:13:21 +01:00
Lauri Ojansivu 1089572d66 v2.41 2019-03-07 00:04:50 +02:00
Lauri Ojansivu ddb2460187 [Fix: Card was selected as parent card (circular reference) and now board can be not opened anymore](https://github.com/wekan/wekan/issues/2202)
with [Avoid setting same card as parentCard. Avoid listing templates board in copy/move/more menus](https://github.com/wekan/wekan/commit/745f39ed20169f56b99c0339f2043f8c4ed43873).

Thanks to andresmanelli.

Closes #2202
2019-03-06 23:48:36 +02:00
Andrés Manelli 745f39ed20 Avoid setting same card as parentCard.
Avoid listing templates board in copy/move/more menus
2019-03-06 20:57:19 +01:00
Lauri Ojansivu 18cccd514f Fix typos. 2019-03-06 20:56:58 +02:00
Lauri Ojansivu 9c0eba4f00 v2.40 2019-03-06 18:21:26 +02:00
Lauri Ojansivu f19625d835 Fix manifest and icon urls, part 2.
Thanks to xet7 !
2019-03-06 18:18:34 +02:00
Lauri Ojansivu c4754d9f85 v2.39 2019-03-06 17:31:15 +02:00
Lauri Ojansivu acdc5dc1f4 Update translations. 2019-03-06 17:23:33 +02:00
Lauri Ojansivu 4927609af0 Update changelog. 2019-03-06 17:20:47 +02:00
Lauri Ojansivu e845fe3e71 Fix manifest and icon paths.
Thanks to xet7 !

Closes #2168,
closes #1692
2019-03-06 17:15:36 +02:00
Lauri Ojansivu d807efd4f8 Update translations. 2019-03-06 03:14:13 +02:00
Lauri Ojansivu 5f76695298 Update release scripts. 2019-03-06 03:12:27 +02:00
Lauri Ojansivu aadb1f3109 v2.38 2019-03-06 03:07:50 +02:00
Lauri Ojansivu cb986912c4 [Added support for LDAP admin status sync](https://github.com/wekan/wekan-ldap/pull/40).
Examples: LDAP_SYNC_ADMIN_STATUS=true, LDAP_SYNC_ADMIN_GROUP=group1,group2 (https://github.com/wekan/wekan/commit/7e451d9033eb6162cd37de3e5ffabdc22e272948).
Thanks to JulianJacobi and xet7.
2019-03-06 02:55:13 +02:00
Lauri Ojansivu 7e451d9033 [Add support for admin status sync](https://github.com/wekan/wekan-ldap/pull/40).
Examples: LDAP_SYNC_ADMIN_STATUS=true, LDAP_SYNC_ADMIN_GROUP=group1,group2

Thanks to JulianJacobi and xet7 !
2019-03-06 02:47:27 +02:00
Lauri Ojansivu a024b6d692 Update changelog. 2019-03-06 02:00:31 +02:00
Lauri Ojansivu a45ccf1db7 [Remove phantomjs binary from Docker/Snap/Stackerfile to reduce size](https://github.com/wekan/wekan/issues/2229).
Thanks to soohwa !

Closes #2229
2019-03-06 01:56:32 +02:00
Lauri Ojansivu 30bf430a91 - [Use ubuntu:cosmic base in Dockerfile](https://github.com/wekan/wekan/commit/df00776e6ca47080435eca9a31a16fd24c0770ed). Thanks to xet7. 2019-03-06 01:44:47 +02:00
Lauri Ojansivu df00776e6c Use ubuntu:cosmic base in Dockerfile.
Thanks to xet7 !
2019-03-06 01:42:30 +02:00
Lauri Ojansivu 1dc0d0c12e Update changelog. 2019-03-06 01:34:58 +02:00
Lauri Ojansivu 002fd411ea [Fix: LDAP Authentication with Recursive Group Filtering Does Not Work on Snap](https://github.com/wekan/wekan/issues/2228).
Thanks to apages2 !

Closes #2228,
closes wekan/wekan-ldap#23
2019-03-06 01:27:40 +02:00
Lauri Ojansivu 6311cf0c5a Update translations. 2019-03-06 01:23:40 +02:00
Lauri Ojansivu d71543beb6 - [Fix card deletion from archive](https://github.com/wekan/wekan/commit/77754cf32f28498e550a46325d90eb41f08f8552).
- [Fix card move with wrong swimlaneId](https://github.com/wekan/wekan/commit/1bef3a3f8ff4eac43bf97cc8b86d85e618b0e2ef).
  NOTE: This does not yet fix card move with Custom Field, it will be fixed later.

Thanks to andresmanelli !

Closes wekan/wekan-snap#83,
closes #2224,
closes #2230,
related #2233
2019-03-06 01:05:15 +02:00
Lauri Ojansivu 5a9837f676 Merge remote-tracking branch 'andresmanelli/edge' into edge 2019-03-06 00:58:49 +02:00
Andrés Manelli 77754cf32f Fix card deletion from archive 2019-03-05 22:48:29 +01:00
Lauri Ojansivu 43a74fb99b Merge remote-tracking branch 'andresmanelli/edge' into edge 2019-03-05 23:38:47 +02:00
Andrés Manelli 1bef3a3f8f Fix card move with wrong swimlaneId 2019-03-05 22:35:45 +01:00
Lauri Ojansivu b6b6be34f6 Update translations. 2019-03-04 21:29:04 +02:00
Lauri Ojansivu f1cde3e873 - [Added a Helm Chart to the project](https://github.com/wekan/wekan/pull/2227).
Thanks to TechnoTaff !
2019-03-04 21:27:35 +02:00
Lauri Ojansivu dcd6ae2e01 Merge pull request #2227 from TechnoTaff/devel
Added a Helm Chart to the project
2019-03-04 21:21:51 +02:00
Stephen Randall 8984172ff6 Readme updates 2019-03-04 16:44:12 +00:00
Stephen Randall 87a5e7f030 Merge branch 'devel' of https://github.com/TechnoTaff/wekan into devel 2019-03-04 16:29:29 +00:00
Stephen Randall 115d07da5a Added some notes 2019-03-04 16:28:44 +00:00
Steve Randall e67ed023cd Create .gitkeep 2019-03-04 16:26:34 +00:00
Steve Randall 1f1d753791 Delete requirements.lock 2019-03-04 16:13:34 +00:00
Steve Randall 34fcce60af Delete mongodb-replicaset-3.6.4.tgz 2019-03-04 16:13:11 +00:00
Stephen Randall e7a90d9a7c Added helm chart v1 2019-03-04 15:55:20 +00:00
Angelo Gallarello 477d71e0b9 Fixes 2019-02-12 23:40:12 +01:00
531 changed files with 44297 additions and 2347 deletions

No files matched your search

-1
View File
@@ -1,7 +1,6 @@
## Issue
Add these issues to elsewhere:
- LDAP: https://github.com/wekan/wekan-ldap/issues
- Snap: https://github.com/wekan/wekan-snap/issues
Other Wekan issues can be added here.
+13 -1
View File
@@ -8,7 +8,6 @@ npm-debug.log
.vscode/
.idea/
.build/*
packages/
package-lock.json
**/parts/
**/stage
@@ -17,3 +16,16 @@ package-lock.json
snap/.snapcraft/
.idea
.DS_Store
.DS_Store?
.build*
*.browserify.js.cached
*.browserify.js.map
.build*
versions.json
.versions
.npm
.build*
._*
.Trashes
Thumbs.db
ehthumbs.db
+4 -4
View File
@@ -31,8 +31,8 @@ kenton:accounts-sandstorm
service-configuration@1.0.11
useraccounts:unstyled
useraccounts:flow-routing
wekan:wekan-ldap
wekan:accounts-cas
wekan-ldap
wekan-accounts-cas
wekan-accounts-oidc
# Utilities
@@ -66,7 +66,6 @@ mquandalle:jquery-textcomplete
mquandalle:jquery-ui-drag-drop-sort
mquandalle:mousetrap-bindglobal
peerlibrary:blaze-components@=0.15.1
perak:markdown
templates:tabs
verron:autosize
simple:json-routes
@@ -82,7 +81,6 @@ staringatlights:fast-render
mixmax:smart-disconnect
accounts-password@1.5.0
cfs:gridfs
eluck:accounts-lockout
rzymek:fullcalendar
momentjs:moment@2.22.2
browser-policy-framing
@@ -92,3 +90,5 @@ wekan-scrollbar
mquandalle:perfect-scrollbar
mdg:meteor-apm-agent
meteorhacks:unblock
lucasantoniassi:accounts-lockout
wekan-markdown
+6 -6
View File
@@ -60,7 +60,6 @@ ecmascript-runtime@0.5.0
ecmascript-runtime-client@0.5.0
ecmascript-runtime-server@0.5.0
ejson@1.1.0
eluck:accounts-lockout@0.9.0
email@1.2.3
es5-shim@4.6.15
fastclick@1.0.13
@@ -82,6 +81,7 @@ launch-screen@1.1.1
livedata@1.0.18
localstorage@1.2.0
logging@1.1.19
lucasantoniassi:accounts-lockout@1.0.0
matb33:collection-hooks@0.8.4
matteodem:easy-search@1.6.4
mdg:meteor-apm-agent@3.1.2
@@ -132,7 +132,6 @@ peerlibrary:base-component@0.16.0
peerlibrary:blaze-components@0.15.1
peerlibrary:computed-field@0.7.0
peerlibrary:reactive-field@0.3.0
perak:markdown@1.0.5
promise@0.10.0
raix:eventemitter@0.1.3
raix:handlebar-helpers@0.2.5
@@ -145,8 +144,6 @@ reload@1.1.11
retry@1.0.9
routepolicy@1.0.12
rzymek:fullcalendar@3.8.0
wekan-accounts-oidc@1.0.10
wekan-oidc@1.0.12
service-configuration@1.0.11
session@1.1.7
sha@1.0.9
@@ -181,8 +178,11 @@ useraccounts:unstyled@1.14.2
verron:autosize@3.0.8
webapp@1.4.0
webapp-hashing@1.0.9
wekan-accounts-oidc@1.0.10
wekan-markdown@1.0.7
wekan-oidc@1.0.12
wekan-scrollbar@3.1.3
wekan:accounts-cas@0.1.0
wekan:wekan-ldap@0.0.2
wekan-accounts-cas@0.1.0
wekan-ldap@0.0.2
yasaricli:slugify@0.0.7
zimme:active-route@2.3.2
+1 -1
View File
@@ -39,7 +39,7 @@ host = https://www.transifex.com
# tap:i18n requires us to use `-` separator in the language identifiers whereas
# Transifex uses a `_` separator, without an option to customize it on one side
# or the other, so we need to do a Manual mapping.
lang_map = bg_BG:bg, en_GB:en-GB, es_AR:es-AR, el_GR:el, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, zh_CN:zh-CN, zh_TW:zh-TW
lang_map = bg_BG:bg, en_GB:en-GB, es_AR:es-AR, el_GR:el, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
[wekan.application]
file_filter = i18n/<lang>.i18n.json
+561 -23
View File
@@ -1,3 +1,541 @@
# v2.77 2019-06-11 Wekan release
This release fixes the following bugs:
- [Fix Snap build](https://github.com/wekan/wekan/commit/e1e20275a673d3065c6cf239db8d2f1a505baa69).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.76 2019-06-11 Wekan release
This release adds the following new features:
- [Add support for CORS headers "Access-control-allow-headers" and
"Access-control-expose-headers"](https://github.com/wekan/wekan/pull/2429).
Thanks to risacher and xet7.
- [Support scopes in OAuth2, so that Authentication via OAuth2 with Google is now possible](https://github.com/wekan/wekan/pull/2483).
Thanks to moserben16.
and fixes the following bugs:
- [Fix Scope parsing Issue for OAuth2 Login with simple String](https://github.com/wekan/wekan/pulls/2427).
Thanks to DominikPf.
- [Show attachment name in Outgoing Webhook when attachment is added to card](https://github.com/wekan/wekan/commit/992ecfefa2e46ee7321ec9b8bfc3400532e5645e).
Thanks to xet7. Related [#2285](https://github.com/wekan/wekan/issues/2285).
- [Show attachment name in Outgoing Webhook when attachment is removed from card](https://github.com/wekan/wekan/commit/23ccb3b991be6d7196e59f7d68df17b8949df049).
Thanks to xet7. Related [#2285](https://github.com/wekan/wekan/issues/2285).
- [Allow BoardAdmin to create board rules](https://github.com/wekan/wekan/pull/2433).
Thanks to road42.
- [Fix typo](https://github.com/wekan/wekan/pull/2442).
Thanks to Jason-Cooke.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.75 2019-05-22 Wekan release
This release adds the following new features:
- [CAS allowed LDAP groups](https://github.com/wekan/meteor-accounts-cas/pull/4).
Thanks to ppoulard. Please test. Related [#2356](https://github.com/wekan/wekan/issues/2356).
and fixes the following bugs:
- [Fix](https://github.com/wekan/wekan/commit/634df8f6f26a7a7a2df6f87a705d322d88638425):
[OAuth2 Requested Scopes are wrong / cannot be configured](https://github.com/wekan/wekan/issues/2412).
Thanks to DominikPf and xet7. Please test.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.74 2019-05-14 Wekan release
This release fixes the following bugs:
- Add missing [wekan-ldap#40](https://github.com/wekan/wekan-ldap/pull/40) code about
[LDAP_SYNC_ADMIN_STATUS](https://github.com/wekan/wekan/commit/0fe40ad9ec82ef2045578f4cc1e2ebb6cc80d47a).
Thanks to JulianJacobi, n-st, chirrut2 and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.73 2019-05-14 Wekan release
This release fixes the following bugs with Apache I-CLA:
- [Card count placement and export API functionality back](https://github.com/wekan/wekan/pulls/2406).
Thanks to bentiss.
- [Few fixes for Dockerfile](https://github.com/wekan/wekan/pulls/2407).
Thanks to bentiss.
and fixes the following bugs:
- Fixed [#2338](https://github.com/wekan/wekan/issues/2338) -> [Slow opening of big boards with too many archived items](https://github.com/wekan/wekan/pull/2402).
If some Wekan users see errors with this, please empty your browser cache.
Thanks to nerminator.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.72 2019-05-13 Wekan release
This release adds the following new features:
- [Added BIDI support to "Add Card"](https://github.com/wekan/wekan/pull/2401).
Related [#884](https://github.com/wekan/wekan/issues/884).
Thanks to guyzyl.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.71 2019-05-12 Wekan release
This release adds the following new features:
- [Add partentId support on card web API](https://github.com/wekan/wekan/pulls/2400).
Thanks to atilaromero.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.70 2019-05-11 Wekan release
This release adds the following new features:
- [View markdown on List names, Custom Fields (Text and Dropdown), Label names,
All Boards view Board names and Board descriptions](https://github.com/wekan/wekan/commit/b795115042c2eb6bccbf029f21d78849a44128ca).
Related [#2334](https://github.com/wekan/wekan/issues/2334).
Thanks to shaygover and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.69 2019-05-11 Wekan release
This release fixes the following translation names:
- [Fix translation name in Wekan menu: oc to Occitan](https://github.com/wekan/wekan/commit/db40ca25ac5df17fcc8b7c93f12b7e2bffc349d2).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.68 2019-05-10 Wekan release
This release adds the following new features:
- [Option to login to the LDAP server with the user's own username and password, instead of an administrator
key](https://github.com/wekan/wekan/pull/2399). Default: false (use administrator key).
With new setting: LDAP_USER_AUTHENTICATION=true.
Thanks to thiagofernando.
- [Added above new LDAP_USER_AUTHENTION=true option to Snap, Docker and Source settings](https://github.com/wekan/wekan/commit/3bbc805ee42e3c1638b50260d3fafc2b5f936923).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.67 2019-05-10 Wekan release
This release adds the following new features:
- [Move board to Archive button at each board at All Boards page](https://github.com/wekan/wekan/commit/828f6ea321020eda77fea399df52889e2081dfac).
Thanks to xet7. Related [#2389](https://github.com/wekan/wekan/issues/2389).
- [If adding Subtasks does not work on old board, added wiki page how to make it work again](https://github.com/wekan/wekan/wiki/Subtasks).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.66 2019-05-09 Wekan release
This release adds the following new features:
- [Delete user feature](https://github.com/wekan/wekan/pull/2384).
Thanks to Akuket.
- Change to Delete user feature: [When last board admin is removed, board is not deleted, other board users can
still use it](https://github.com/wekan/wekan/commit/e1b016cf3d4ff93e9e0fe1feb96372e3e1625233).
Thanks to xet7.
and adds the following new translations:
- Add Chinese (Hong Kong).
Thanks to translators.
and fixes the following bugs:
- [Fix OIDC login](https://github.com/wekan/wekan/pull/2385). Related [#2383](https://github.com/wekan/wekan/issues/2383).
Thanks to faust64.
- [Fix missing profile checks](https://github.com/wekan/wekan/pull/2396).
Thanks to justinr1234.
- [Fix RTL issue #884, part 1](https://github.com/wekan/wekan/pull/2395).
Thanks to guyzyl.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.65 2019-04-24 Wekan release
This release adds the following new features:
- [Now a loading animation is displayed when the authentication is performed. This allows users
to know that it's in progress](https://github.com/wekan/wekan/pull/2379).
Thanks to Akuket.
and removes the following UI duplicates:
- [Remove from card menu, because they also exist at card:
members, labels, attachments, dates received/start/due/end](https://github.com/wekan/wekan/issues/2242).
Thanks to sfahrenholz, jrsupplee and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.64 2019-04-23 Wekan release
This release adds the following new features:
- [Board Archive: Restore All/Delete All of Cards/Lists/Swimlanes](https://github.com/wekan/wekan/pull/2376).
Thanks to Akuket.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.63 2019-04-23 Wekan release
This release removes the following Caddy plugins:
- [Remove Caddy plugins http.filter, http.ipfilter and http.realip from Caddy](https://github.com/wekan/wekan/commot/6a94500170509d2d82bd9a0fdc94a7ce66215b3d)
because they are currently broken, preventing download of Caddy during Wekan Snap build.
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.62 2019-04-23 Wekan release
This release fixes the following bugs:
- [Mobile UI: Center cards in list view](https://github.com/wekan/wekan/issues/2371).
Thanks to hupptechnologies.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.61 2019-04-20 Wekan release
This release adds the following new features:
- Admin Panel/People: Can now search users by username, full name or email and using regex to find them.
Display the number of users. All registered users by default else the number of users selected by the search.
Thanks to Akuket.
and adds the following updates:
- [Update to use newest GitHub flawored markdown](https://github.com/wekan/wekan/commit/fea2ad3d7d09b44c3de1dbcdd3f8750aaa6776d5),
because [it was found old version was in use](https://github.com/wekan/wekan/issues/2334).
Thanks to shaygover and xet7.
- [Upgrade to Node 8.16.0](https://github.com/wekan/wekan/commit/6117097a93bfb11c8bd4c87a23c44a50e22ceb87).
Thanks to Node developers and xet7.
- [Upgrade Docker base image to ubuntu:disco](https://github.com/wekan/wekan/commit/bd14ee3b1f450ddc6dec26ccc8da702b839942e5).
Thanks to Ubuntu developers and xet7.
and fixes the following bugs:
- [Fix Full width of lists and space before first list](https://github.com/wekan/wekan/pull/2343).
Thanks to hupptechnologies.
- Remove [extra](https://github.com/wekan/wekan/pull/2332) [quotes](https://github.com/wekan/wekan/pull/2333) from docker-compose.yml.
Thanks to hibare.
- Fix Docker builds by moving all separately cloned wekan/packages/* repos like ldap, oidc, etc code to wekan repo code,
so that in build scripts it's not needed to clone those. Also archived those wekan repos and moved issues
to https://github.com/wekan/wekan/issues because changes and development to those packages now happends on wekan/wekan repo.
There was also fixes to repo urls etc. Thanks to xet7.
- [Additional updates](https://github.com/wekan/wekan/pull/2347) to meteor-1.8 branch, that contains
Meteor 1.8.1 version that works in Docker but not yet at Snap and Sandstorm. Thanks to justinr1234.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.60 2019-04-08 Wekan release
This release fixes the following bugs:
- [Fix: Description of Board is out of visible after Feature "Duplicate Board"](https://github.com/wekan/wekan/issues/2324).
Thanks to sfahrenholz and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.59 2019-04-06 Wekan release
This release fixes the following bugs:
- [Add variables for activity notifications, Fixes #2285](https://github.com/wekan/wekan/pull/2320).
Thanks to rinnaz.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.58 2019-04-06 Wekan release
This release adds the following new features:
- [Duplicate Board](https://github.com/wekan/wekan/issues/2257). Related #2225.
Thanks to Angtrim.
- [Add Duplicate Board tooltip, and remove adding text "Copy" to duplicated board](https://github.com/wekan/wekan/commit/0f15b6d1982c383f76e8411cb501ff27e8febd42).
Thanks to xet7.
and fixes the following bugs:
- [Add proper variables for unjoin card](https://github.com/wekan/wekan/pull/2313).
Thanks to chotaire.
- [Center reduce left margin in card view on mobile browser](https://github.com/wekan/wekan/pull/2314).
Thanks to hupptechnologies.
- [Remove not needed ARGS from Dockerfile to reduce amount of Docker layers](https://github.com/wekan/wekan/issues/2301).
Thanks to folhabranca and xet7.
- [Fix Swimlane Rules don't work](https://github.com/wekan/wekan/issues/2225).
Thanks to Angtrim.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.57 2019-04-02 Wekan release
This release fixes the following bugs, thanks to justinr1234:
- [Add proper variables for join card](https://github.com/wekan/wekan/commit/289f1fe1340c85eb2af19825f4972e9057a86b7a),
fixes [Incorrect variable replacement on email notifications](https://github.com/wekan/wekan/issues/2285).
and fixes the following bugs with Apache I-CLA, thanks to bentiss:
- [List: Do not use IntersectionObserver to reduce CPU usage](https://github.com/wekan/wekan/pull/2302).
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.56 2019-03-27 Wekan release
This release [fixes the following bugs](https://github.com/wekan/wekan/pull/2287), thanks to bentiss with Apache I-CLA:
- [#2250 -> the spinner could be shown on startup and never goes away](https://github.com/wekan/wekan/issues/2250).
- The code will now only load extra cards that will be in the current viewport.
- When 2 users were interacting on the same board, there was a situation where the spinner could show up on the other user, without being able to load the extra cards.
- The code is now much simpler, thanks to the IntersectionObserver, and all of this for fewer lines of code :)
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.55 2019-03-25 Wekan release
This release fixes the following bugs, thanks to bentiss with Apache I-CLA:
- [Use older api2html@0.3.0](https://github.com/wekan/wekan/commit/625682a4dab43c525494af10121edbfd547786d7)
to fix [broken snap and docker build](https://github.com/wekan/wekan/issues/2286),
because newer api2html caused
[breaking change](https://github.com/tobilg/api2html/commit/a9a41bca18db3f9ec61395d7262eff071a995783)
at api2html/bin/api2html.js:23 has error about "php": "PHP".
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.54 2019-03-25 Wekan release
This release fixes the following bugs:
- Fix typos.
- [Fix Outgoing Webhook message about created new swimlane](https://github.com/wekan/wekan/issues/1969).
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.53 2019-03-23 Wekan release
This release fixes the following bugs:
- [Fix filename and URLs](https://github.com/wekan/wekan/ccommit/994314cfa339e52a2ad124194af4e89f57ddd213).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.52 2019-03-22 Wekan release
This release adds the following new features:
- [More whitelabeling: Hide Wekan logo and title by default, and don't show separate option to hide logo at
Admin Panel/Layout](https://github.com/wekan/wekan/commit/2969161afbe60a1aa2e7da6cedc3ab48941faf3e).
Thanks to xet7.
- Added and then reverted option to redirect OIDC OAuth2 login [part1](https://github.com/wekan/wekan-ldap/commit/82a894ac20ba9e7c6fdf053cff1721cab709bf8a),
[part 2](https://github.com/wekan/wekan-ldap/commit/36900cc360d0d406f8fba5e43378f85c92747870) and
[part3](https://github.com/wekan/wekan/commit/7919ae362866c0cacf2a486bf91b12e4d25807d7).
This does not work yet. In Progress.
Thanks to xet7.
- [Add LDAP config example, remove extra text](https://github.com/wekan/wekan/commit/506acda70b5e78737c52455e5eee9c8758243196).
Thanks to xet7.
and fixes the following bugs:
- [Fix IFTTT email sending](https://github.com/wekan/wekan/pull/2279).
Thanks to justinr1234.
Thanks to above GitHub users for their contributions.
# v2.51 2019-03-21 Wekan release
This release fixes the following bugs:
- [Fix Unable to change board card title (=Board name) at Templates page](https://github.com/wekan/wekan/issues/2275).
and [Unable to change card title in Template](https://github.com/wekan/wekan/issues/2268) part 2.
Thanks to andresmanelli.
Thanks to above GitHub users for their contributions.
# v2.50 2019-03-21 Wekan release
This release fixes the following bugs:
- [Fix](https://github.com/wekan/wekan/pull/2269) [Unable to change card title in Template](https://github.com/wekan/wekan/issues/2268)
and [Fix Unable to create a new board from a template](https://github.com/wekan/wekan/issues/2267).
Thanks to andresmanelli.
Thanks to above GitHub users for their contributions.
# v2.49 2019-03-21 Wekan release
This release fixes the following bugs:
- [The invitation code doesn't exist - case-sensitive eMail](https://github.com/wekan/wekan/issues/1384). Thanks to neurolabs.
- [Don't swallow email errors](https://github.com/wekan/wekan/pull/2272). Thanks to justinr1234.
- [Migrate customFields model](https://github.com/wekan/wekan/pull/2264).
Modifies the customFields model to keep an array of boardIds where the customField can be used.
Adds name matching for labels when copying/moving cards between boards.
This way, customFields are not lost when copying/moving a card. Particularly useful when templates have customFields or labels with specific names (not tested for templates yet).
Thanks to andresmanelli.
- [Fix dissapearing subtasks](https://github.com/wekan/wekan/pull/2265). Thanks to andresmanelli.
- [Cards disappear when rearranged on template board](https://github.com/wekan/wekan/issues/2266). Thanks to andresmanelli.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.48 2019-03-15 Wekan release
This release fixes the following bugs, thanks to GitHub user xet7:
- [Fix LDAP login](https://github.com/wekan/wekan/commit/216b3cfe0121aa026139536c383aa27db0353411).
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.47 2019-03-14 Wekan release
This release fixes the following bugs, thanks to GitHub user xet7:
- [Remove ordering of cards by starred/color/description, so that cards would not reorder all the time](https://github.com/wekan/wekan/issues/2241).
- Try to fix [LDAP Login: "Login forbidden", ReferenceError: req is not defined](https://github.com/wekan/wekan-ldap/44).
# v2.46 2019-03-13 Wekan release
This release fixes the following bugs:
- [Fix watchers undefined](https://github.com/wekan/wekan/pull/2253).
Thanks to justinr1234.
- [Revert hiding of Subtask boards](https://github.com/wekan/wekan/commit/1968b7da31d75757fd6383417d729ff6af6bbc5b)
because of feedback from Wekan users, that need Subtask boards to be visible.
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.45 2019-03-11 Wekan release
This release fixes the following bugs, thanks to andresmanelli:
- [Rename circular card migration to re run the fix](https://github.com/wekan/wekan/commit/a347ae367654258b7768e7571831ed8f75fb5b84).
# v2.44 2019-03-11 Wekan release
This release adds the following new features and fixes with Apache I-CLA, thanks to bentiss:
- [Activities: register customFields changes in the activities](https://github.com/wekan/wekan/pull/2239).
- [customFields: fix leftover from lint](https://github.com/wekan/wekan/commit/4c72479d1206850d436261dc5c6a4127f246f6da).
Looks like I forgot to use the camelCase notation here, and this leads to an exception while updating a custom field.
- [Fix imports](https://github.com/wekan/wekan/pull/2245).
and adds the following new features:
- Add language: Occitan. Thanks to translators.
and fixes the following bugs:
- [Fix removed checklistItem activity => dangling activities created](https://github.com/wekan/wekan/commit/2ec1664408d9515b5ca77fbb46ef99208eb8cff0).
Closes #2240. Thanks to andresmanelli.
- [Avoid set self as parent card to cause circular reference, for real](https://github.com/wekan/commit/97822f35fd6365e5631c5488e8ee595f76ab4e34).
Thanks to andresmanelli.
- Try to fix [Order All Boards by starred, color, board name and board description. Part 2](https://github.com/wekan/wekan/commit/8f337f17e45f8af8d96b6043d54466e5878b7e0b).
Works on new Wekan install. Could still have boards keeping reording happening all the time on old Wekan installs.
Thanks to xet7. Note: Ordering by starred/color/description was removed at Wekan v2.47.
- [Changed brute force protection package from eluck:accounts-lockout to lucasantoniassi:accounts-lockout that is maintained and works.
Added Snap/Docker/Source settings](https://github.com/wekan/wekan/commit/b7c000b78b9af253fb115bbfa5ef0d4c0681abbb).
Thanks to xet7.
Thanks to above Wekan contributors for their contributions.
# v2.43 2019-03-08 Wekan release
This release adds the following new features, thanks to xet7:
- [Hide Subtask boards from All Boards](https://github.com/wekan/wekan/issues/1990). This was reverted in Wekan v2.46 to make Subtask boards visible again.
- [Order All Boards by Starred, Color, Title and Description](https://github.com/wekan/wekan/commit/856872815292590e0c4eff2848ea1b857a318dc4).
This was removed at Wekan v2.47.
- [HTTP header automatic login](https://github.com/wekan/wekan/commit/ff825d6123ecfd033ccb08ce97c11cefee676104)
for [3rd party authentication server method](https://github.com/wekan/wekan/issues/2019) like siteminder, and any webserver that
handles authentication and based on it adds HTTP headers to be used for login. Please test.
and adds the following partial fix, thanks to andresmanelli:
- [Add migration to fix circular references](https://github.com/wekan/wekan/commit/a338e937e508568d1f6a15c5464126d30ef69a7d).
This [runs only once](https://github.com/wekan/wekan/issues/2209#issuecomment-470445989),
so later there will be another fix to make it run every time.
and reverts the following change of v2.42, because they did not fix anything, thanks to xet7:
- [Revert: Tried to fix snap mongodb-control not starting database](https://github.com/wekan/wekan/commit/4055f451fdadfbfdef9a10be29a0eb6aed91182c).
Thanks to above GitHub users for their contributions, and translators for their translations.
# v2.42 2019-03-07 Wekan release
This release tried to fix the following bugs:
- [Tried to fix snap mongodb-control not starting database](https://github.com/wekan/wekan/commit/2c5628b5fbcc25427021d0b22e74577a71149c21).
Reverted in v2.43, because it did not fix anything.
Thanks to xet7 and qurqar[m] at IRC #wekan.
# v2.41 2019-03-07 Wekan release
This release tried to fix the following bugs:
- [Partial Fix: Card was selected as parent card (circular reference) and now board can be not opened anymore](https://github.com/wekan/wekan/issues/2202)
with [Avoid setting same card as parentCard. Avoid listing templates board in copy/move/more menus](https://github.com/wekan/wekan/commit/745f39ed20169f56b99c0339f2043f8c4ed43873).
This does not fully work yet, it will be fixed later.
Thanks to andresmanelli.
Thanks to above GitHub users for their contributions, and translators for their translations.
# v2.40 2019-03-06 Wekan release
This release fixes the following bugs:
- Part 2: [Fix](https://github.com/wekan/wekan/commit/e845fe3e7130d111be4c3a73e2551738c980ff7b)
[manifest](https://github.com/wekan/wekan/issues/2168) and
[icon](https://github.com/wekan/wekan/issues/1692) paths. Thanks to xet7.
Thanks to above GitHub users for their contributions, and translators for their translations.
# v2.39 2019-03-06 Wekan release
This release fixes the following bugs:
- [Fix](https://github.com/wekan/wekan/commit/e845fe3e7130d111be4c3a73e2551738c980ff7b)
[manifest](https://github.com/wekan/wekan/issues/2168) and
[icon](https://github.com/wekan/wekan/issues/1692) paths. Thanks to xet7.
Thanks to above GitHub users for their contributions, and translators for their translations.
# v2.38 2019-03-06 Wekan release
This release adds the following new features:
- [Added a Helm Chart to the project](https://github.com/wekan/wekan/pull/2227), thanks to TechnoTaff.
- [Added support for LDAP admin status sync](https://github.com/wekan/wekan-ldap/pull/40).
Examples: [LDAP_SYNC_ADMIN_STATUS=true, LDAP_SYNC_ADMIN_GROUP=group1,group2](https://github.com/wekan/wekan/commit/7e451d9033eb6162cd37de3e5ffabdc22e272948).
Thanks to JulianJacobi and xet7.
and fixes the following bugs:
- [Fix card deletion from archive](https://github.com/wekan/wekan/commit/77754cf32f28498e550a46325d90eb41f08f8552). Thanks to andresmanelli.
- [Fix card move with wrong swimlaneId](https://github.com/wekan/wekan/commit/1bef3a3f8ff4eac43bf97cc8b86d85e618b0e2ef). Thanks to andresmanelli.
NOTE: This does not yet fix card move [with Custom Field](https://github.com/wekan/wekan/issues/2233), it will be fixed later.
- [Fix: LDAP Authentication with Recursive Group Filtering Does Not Work on Snap](https://github.com/wekan/wekan/issues/2228). Thanks to apages2.
- [Use ubuntu:cosmic base in Dockerfile](https://github.com/wekan/wekan/commit/df00776e6ca47080435eca9a31a16fd24c0770ed). Thanks to xet7.
- [Remove phantomjs binary from Docker/Snap/Stackerfile to reduce size](https://github.com/wekan/wekan/issues/2229). Thanks to soohwa.
Thanks to above GitHub users for their contributions, and translators for their translations.
# v2.37 2019-03-04 Wekan release
This release fixes the following bugs:
@@ -27,13 +565,13 @@ and moved the following code around:
xet7 can make changes directly and GitHub issues are enabled.
Thanks to GitHub user xet7 for contributions.
# v2.35 2019-03-01 Wekan release
This release fixes the following bugs:
- [Add Filter fix back](https://github.com/wekan/wekan/issues/2213),
because there was no bug in filter fix.
- [Add Filter fix back](https://github.com/wekan/wekan/issues/2213),
because there was no bug in filter fix.
Thanks to GitHub user xet7 for contributions.
@@ -99,7 +637,7 @@ This release adds the following new Sandstorm features and fixes:
- New Sandstorm board first user is Admin and [has IFTTT Rules](https://github.com/wekan/wekan/issues/2125) and Standalone Wekan Admin Panel.
Probably some Admin Panel features do not work yet. Please keep backup of your grains before testing Admin Panel.
- Linked Cards and Linked Boards.
- Some not needed options like Logout etc have been hidden from top bar right menu.
- Some not needed options like Logout etc have been hidden from top bar right menu.
- [Import board now works. "Board not found" is not problem anymore](https://github.com/wekan/wekan/issues/1430), because you can go to All Boards page to change to imported board.
and removes the following features:
@@ -181,7 +719,7 @@ and fixes the following bugs:
mobile browser](https://github.com/wekan/wekan/issues/2183). Thanks to xet7.
Thanks to above GitHub users for their contributions, and translators for their translations.
# v2.21 2019-02-12 Wekan release
This release adds the following new features:
@@ -238,12 +776,12 @@ and fixes the following bugs with Apache I-CLA, thanks to bentiss:
header)
- make sure the placeholder never get placed between the header and the
list of cards in a swimlane
- fix the finding of the next and previous list of cards.
- fix the finding of the next and previous list of cards.
For all of this to be successful, we need to resize the swimlanes to a
known value. This can lead to some visual jumps with scrolling when you
drag or drop the swimlanea. I tried to remedy that by computing the new
scroll value. Still not ideal however, as there are still some jumps when
dropping.
dropping.
Fixes [#2159](https://github.com/wekan/wekan/issues/2159).
Thanks to above GitHub users and translators for contributions.
@@ -271,7 +809,7 @@ Thanks to GitHub user ChronikEwok for contributions.
This release fixes the following bugs:
- [Fix: Not displaying card content of public board: Snap, Docker and Sandstorm Shared Wekan Board
- [Fix: Not displaying card content of public board: Snap, Docker and Sandstorm Shared Wekan Board
Link](https://github.com/wekan/wekan/issues/1623) with
[code from ChronikEwok](https://github.com/ChronikEwok/wekan/commit/cad9b20451bb6149bfb527a99b5001873b06c3de).
@@ -303,7 +841,7 @@ This release adds the following new features with Apache I-CLA, thanks to bentis
- [When writing to minicard, press Shift-Enter on minicard to go to next line
below](https://github.com/wekan/wekan/commit/7a35099fb9778d5f3656a57c74af426cfb20fba3),
to continue writing on same minicard 2nd line.
Thanks to GitHub user bentiss for contributions.
# v2.12 2019-01-31 Wekan release
@@ -428,7 +966,7 @@ and fixes the following bugs with Apache I-CLA, thanks to bentiss:
- [Make sure Swimlanes and Lists have a populated sort field](https://github.com/wekan/wekan/commit/5c6a725712a443b4d03b4f86262033ddfb66bc3d).
When moving around the swimlanes or the lists, if one element has a sort
with a null value, the computation of the new sort value is aborted,
meaning that there are glitches in the UI.
meaning that there are glitches in the UI.
This happens on the first swimlane created with the new board, or when
a swimlane or a list gets added through the API;
- UI: Lists: [Make sure all lists boxes are the same height](https://github.com/wekan/wekan/commit/97d95b4bcbcab86629e368ea41bb9f00450b21f6).
@@ -498,7 +1036,7 @@ and fixes the following bugs:
- When clicking Move Card, go to correct page position. Currently it's at empty page position, and there is
need to scroll page up to see Move Card options. It should work similarly like Copy Card, that is visible.
- Also check that other buttons go to visible page.
Thanks to above GitHub users for their contributions.
# v1.97 2018-12-26 Wekan release
@@ -507,7 +1045,7 @@ This release adds the following new features:
- Upgrade to Node 8.15.0 and MongoDB 3.2.22.
- Stacksmith: back to Meteor 1.6.x based Wekan, because Meteor 1.8.x based is currently broken.
Thanks to GitHub user xet7 for contributions.
# v1.96 2018-12-24 Wekan release
@@ -669,7 +1207,7 @@ Thanks to GitHub user xet7 for contributions.
This release fixes the following bugs:
- Remove extra commas `,` and add missing backslash `\`.
- Remove extra commas `,` and add missing backslash `\`.
Maybe after that login, logout and CORS works.
Thanks to GitHub user xet7 for contributions.
@@ -824,7 +1362,7 @@ and hides the following features at Sandstorm:
- Hide Linked Card and Linked Board on Sandstorm, because they are only
useful when having multiple boards, and at Sandstorm
there is only one board per grain. Thanks to ocdtrekkie and xet7. Closes #1982
there is only one board per grain. Thanks to ocdtrekkie and xet7. Closes #1982
Thanks to above mentioned GitHub users for their contributions.
@@ -986,7 +1524,7 @@ and tries to fix the following bugs:
- Try to fix snap.
Thanks to GitHub users Akuket and xet7 for their contributions.
# v1.53.5 2018-10-10 Wekan Edge relase
This release tries to fix the following bugs:
@@ -1010,7 +1548,7 @@ This release adds the following new features:
- [Upgrade](https://github.com/wekan/wekan/issues/1522) to [Meteor](https://blog.meteor.com/meteor-1-8-erases-the-debts-of-1-7-77af4c931fe3) [1.8.1-beta.0](https://github.com/meteor/meteor/issues/10216).
with [these](https://github.com/wekan/wekan/commit/079e45eb52a0f62ddb6051bf2ea80fac8860d3d5)
[commits](https://github.com/wekan/wekan/commit/dd47d46f4341a8c4ced05749633f783e88623e1b). So now it's possible to use MongoDB 2.6 - 4.0.
Thanks to GitHub user xet7 for contributions.
# v1.53.2 2018-10-10 Wekan Edge release
@@ -1038,7 +1576,7 @@ and fixes the following bugs:
- [Feature rules: fixes and enhancements](https://github.com/wekan/wekan/pull/1936).
Thanks to GitHub users Akuket, Angtrim, dcmcand, lberk, maximest-pierre, InfoSec812, schulz and xet7 for their contributions.
# v1.52.1 2018-10-02 Wekan Edge release
This release adds the following new features:
@@ -1053,7 +1591,7 @@ and reverts previous change:
Oidc already works with [doorkeeper](https://github.com/doorkeeper-gem/doorkeeper-provider-app).
Thanks to GitHub user xet7 for contributions.
# v1.51.2 2018-09-30 Wekan Edge release
This release adds the following new features:
@@ -1112,7 +1650,7 @@ Thanks to GitHub users Angtrim, maurice-schleussinger, suprovsky and xet7 for th
This release adds the following new features:
- Change from Node v8.12.0 prerelease to use official Node v8.12.0.
Thanks to GitHub user xet7 for contributions.
# v1.49 2018-09-17 Wekan release
@@ -1270,10 +1808,10 @@ Thanks to GitHub users hever, salleman33, tlevine and xet7 for their contributio
This release adds the following new features:
Add Caddy plugins:
- [http.filter](https://caddyserver.com/docs/http.filter)
- [http.filter](https://caddyserver.com/docs/http.filter)
for changing Wekan UI on the fly, for example custom logo,
or changing to all different CSS file to have custom theme;
- [http.ipfilter](https://caddyserver.com/docs/http.ipfilter)
- [http.ipfilter](https://caddyserver.com/docs/http.ipfilter)
to block requests by ip address;
- [http.realip](https://caddyserver.com/docs/http.realip)
for showing real X-Forwarded-For IP to behind proxy;
@@ -1569,7 +2107,7 @@ and fixes the following bugs:
* To fix ["title is required"](https://github.com/wekan/wekan/issues/1576) fix only
[add-checklist-items and revert all other migration changes](https://github.com/wekan/wekan/issues/1734);
* [Restore invitation code logic](https://github.com/wekan/wekan/pull/1732). Please test and add comment
to those invitation code issues that this fixes.
to those invitation code issues that this fixes.
Thanks to GitHub users TNick and xet7 for their contributions.
@@ -1740,7 +2278,7 @@ This release adds the following new features:
and fixes the following bugs:
* [Error: title is required](https://github.com/wekan/wekan/issues/1576).
Thanks to GitHub users Shahar-Y, thiagofernando and ThisNeko for their contributions.
# v0.94 2018-05-03 Wekan release
+42 -101
View File
@@ -1,93 +1,12 @@
FROM debian:buster-slim
FROM ubuntu:disco
LABEL maintainer="wekan"
# Declare Arguments
ARG DEBUG
ARG NODE_VERSION
ARG METEOR_RELEASE
ARG METEOR_EDGE
ARG USE_EDGE
ARG NPM_VERSION
ARG FIBERS_VERSION
ARG ARCHITECTURE
ARG SRC_PATH
ARG WITH_API
ARG EMAIL_NOTIFICATION_TIMEOUT
ARG MATOMO_ADDRESS
ARG MATOMO_SITE_ID
ARG MATOMO_DO_NOT_TRACK
ARG MATOMO_WITH_USERNAME
ARG BROWSER_POLICY_ENABLED
ARG TRUSTED_URL
ARG WEBHOOKS_ATTRIBUTES
ARG OAUTH2_ENABLED
ARG OAUTH2_CLIENT_ID
ARG OAUTH2_SECRET
ARG OAUTH2_SERVER_URL
ARG OAUTH2_AUTH_ENDPOINT
ARG OAUTH2_USERINFO_ENDPOINT
ARG OAUTH2_TOKEN_ENDPOINT
ARG OAUTH2_ID_MAP
ARG OAUTH2_USERNAME_MAP
ARG OAUTH2_FULLNAME_MAP
ARG OAUTH2_EMAIL_MAP
ARG LDAP_ENABLE
ARG LDAP_PORT
ARG LDAP_HOST
ARG LDAP_BASEDN
ARG LDAP_LOGIN_FALLBACK
ARG LDAP_RECONNECT
ARG LDAP_TIMEOUT
ARG LDAP_IDLE_TIMEOUT
ARG LDAP_CONNECT_TIMEOUT
ARG LDAP_AUTHENTIFICATION
ARG LDAP_AUTHENTIFICATION_USERDN
ARG LDAP_AUTHENTIFICATION_PASSWORD
ARG LDAP_LOG_ENABLED
ARG LDAP_BACKGROUND_SYNC
ARG LDAP_BACKGROUND_SYNC_INTERVAL
ARG LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED
ARG LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS
ARG LDAP_ENCRYPTION
ARG LDAP_CA_CERT
ARG LDAP_REJECT_UNAUTHORIZED
ARG LDAP_USER_SEARCH_FILTER
ARG LDAP_USER_SEARCH_SCOPE
ARG LDAP_USER_SEARCH_FIELD
ARG LDAP_SEARCH_PAGE_SIZE
ARG LDAP_SEARCH_SIZE_LIMIT
ARG LDAP_GROUP_FILTER_ENABLE
ARG LDAP_GROUP_FILTER_OBJECTCLASS
ARG LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE
ARG LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE
ARG LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT
ARG LDAP_GROUP_FILTER_GROUP_NAME
ARG LDAP_UNIQUE_IDENTIFIER_FIELD
ARG LDAP_UTF8_NAMES_SLUGIFY
ARG LDAP_USERNAME_FIELD
ARG LDAP_FULLNAME_FIELD
ARG LDAP_EMAIL_FIELD
ARG LDAP_EMAIL_MATCH_ENABLE
ARG LDAP_EMAIL_MATCH_REQUIRE
ARG LDAP_EMAIL_MATCH_VERIFIED
ARG LDAP_MERGE_EXISTING_USERS
ARG LDAP_SYNC_USER_DATA
ARG LDAP_SYNC_USER_DATA_FIELDMAP
ARG LDAP_SYNC_GROUP_ROLES
ARG LDAP_DEFAULT_DOMAIN
ARG LOGOUT_WITH_TIMER
ARG LOGOUT_IN
ARG LOGOUT_ON_HOURS
ARG LOGOUT_ON_MINUTES
ARG CORS
ARG DEFAULT_AUTHENTICATION_METHOD
# Set the environment variables (defaults where required)
# DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
# ENV BUILD_DEPS="paxctl"
ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential python python3 python3-distutils git ca-certificates gcc-7" \
ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential python3 python3-pip git ca-certificates gcc-8" \
DEBUG=false \
NODE_VERSION=v8.15.1 \
NODE_VERSION=v8.16.0 \
METEOR_RELEASE=1.6.0.1 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
@@ -96,6 +15,12 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth
ARCHITECTURE=linux-x64 \
SRC_PATH=./ \
WITH_API=true \
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3 \
ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60 \
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15 \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3 \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60 \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 \
EMAIL_NOTIFICATION_TIMEOUT=30000 \
MATOMO_ADDRESS="" \
MATOMO_SITE_ID="" \
@@ -105,6 +30,7 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth
TRUSTED_URL="" \
WEBHOOKS_ATTRIBUTES="" \
OAUTH2_ENABLED=false \
OAUTH2_LOGIN_STYLE=redirect \
OAUTH2_CLIENT_ID="" \
OAUTH2_SECRET="" \
OAUTH2_SERVER_URL="" \
@@ -114,6 +40,8 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth
OAUTH2_ID_MAP="" \
OAUTH2_USERNAME_MAP="" \
OAUTH2_FULLNAME_MAP="" \
OAUTH2_ID_TOKEN_WHITELIST_FIELDS=[] \
OAUTH2_REQUEST_PERMISSIONS='openid profiles email' \
OAUTH2_EMAIL_MAP="" \
LDAP_ENABLE=false \
LDAP_PORT=389 \
@@ -135,6 +63,7 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth
LDAP_ENCRYPTION=false \
LDAP_CA_CERT="" \
LDAP_REJECT_UNAUTHORIZED=false \
LDAP_USER_AUTHENTICATION=false \
LDAP_USER_SEARCH_FILTER="" \
LDAP_USER_SEARCH_SCOPE="" \
LDAP_USER_SEARCH_FIELD="" \
@@ -159,11 +88,19 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth
LDAP_SYNC_USER_DATA_FIELDMAP="" \
LDAP_SYNC_GROUP_ROLES="" \
LDAP_DEFAULT_DOMAIN="" \
LDAP_SYNC_ADMIN_STATUS="" \
LDAP_SYNC_ADMIN_GROUPS="" \
HEADER_LOGIN_ID="" \
HEADER_LOGIN_FIRSTNAME="" \
HEADER_LOGIN_LASTNAME="" \
HEADER_LOGIN_EMAIL="" \
LOGOUT_WITH_TIMER=false \
LOGOUT_IN="" \
LOGOUT_ON_HOURS="" \
LOGOUT_ON_MINUTES="" \
CORS="" \
CORS_ALLOW_HEADERS="" \
CORS_EXPOSE_HEADERS="" \
DEFAULT_AUTHENTICATION_METHOD=""
# Copy the app to the image
@@ -176,6 +113,7 @@ RUN \
\
# OS dependencies
apt-get update -y && apt-get install -y --no-install-recommends ${BUILD_DEPS} && \
pip3 install -U pip setuptools wheel && \
\
# Meteor installer doesn't work with the default tar binary, so using bsdtar while installing.
# https://github.com/coreos/bugs/issues/1095#issuecomment-350574389
@@ -259,40 +197,43 @@ RUN \
fi; \
\
# Get additional packages
mkdir -p /home/wekan/app/packages && \
chown wekan:wekan --recursive /home/wekan && \
cd /home/wekan/app/packages && \
gosu wekan:wekan git clone --depth 1 -b master git://github.com/wekan/flow-router.git kadira-flow-router && \
gosu wekan:wekan git clone --depth 1 -b master git://github.com/meteor-useraccounts/core.git meteor-useraccounts-core && \
gosu wekan:wekan git clone --depth 1 -b master git://github.com/wekan/meteor-accounts-cas.git && \
gosu wekan:wekan git clone --depth 1 -b master git://github.com/wekan/wekan-ldap.git && \
gosu wekan:wekan git clone --depth 1 -b master git://github.com/wekan/wekan-scrollbar.git && \
gosu wekan:wekan git clone --depth 1 -b master git://github.com/wekan/meteor-accounts-oidc.git && \
gosu wekan:wekan mv meteor-accounts-oidc/packages/switch_accounts-oidc wekan_accounts-oidc && \
gosu wekan:wekan mv meteor-accounts-oidc/packages/switch_oidc wekan_oidc && \
gosu wekan:wekan rm -rf meteor-accounts-oidc && \
#mkdir -p /home/wekan/app/packages && \
#chown wekan:wekan --recursive /home/wekan && \
# REPOS BELOW ARE INCLUDED TO WEKAN REPO
#cd /home/wekan/app/packages && \
#gosu wekan:wekan git clone --depth 1 -b master https://github.com/wekan/flow-router.git kadira-flow-router && \
#gosu wekan:wekan git clone --depth 1 -b master https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core && \
#gosu wekan:wekan git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-cas.git && \
#gosu wekan:wekan git clone --depth 1 -b master https://github.com/wekan/wekan-ldap.git && \
#gosu wekan:wekan git clone --depth 1 -b master https://github.com/wekan/wekan-scrollbar.git && \
#gosu wekan:wekan git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-oidc.git && \
#gosu wekan:wekan git clone --depth 1 -b master --recurse-submodules https://github.com/wekan/markdown.git && \
#gosu wekan:wekan mv meteor-accounts-oidc/packages/switch_accounts-oidc wekan-accounts-oidc && \
#gosu wekan:wekan mv meteor-accounts-oidc/packages/switch_oidc wekan-oidc && \
#gosu wekan:wekan rm -rf meteor-accounts-oidc && \
sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' /home/wekan/app/packages/meteor-useraccounts-core/package.js && \
cd /home/wekan/.meteor && \
gosu wekan:wekan /home/wekan/.meteor/meteor -- help; \
\
# extract the OpenAPI specification
npm install -g api2html && \
npm install -g api2html@0.3.3 && \
mkdir -p /home/wekan/python && \
chown wekan:wekan --recursive /home/wekan/python && \
cd /home/wekan/python && \
gosu wekan:wekan git clone --depth 1 -b master git://github.com/Kronuz/esprima-python && \
gosu wekan:wekan git clone --depth 1 -b master https://github.com/Kronuz/esprima-python && \
cd /home/wekan/python/esprima-python && \
python3 setup.py install --record files.txt && \
cd /home/wekan/app &&\
mkdir -p ./public/api && \
python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml && \
/opt/nodejs/bin/api2html -c ./public/wekan-logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml; \
gosu wekan:wekan mkdir -p ./public/api && \
gosu wekan:wekan python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml && \
gosu wekan:wekan /opt/nodejs/bin/api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml; \
# Build app
cd /home/wekan/app && \
gosu wekan:wekan /home/wekan/.meteor/meteor add standard-minifier-js && \
gosu wekan:wekan /home/wekan/.meteor/meteor npm install && \
gosu wekan:wekan /home/wekan/.meteor/meteor build --directory /home/wekan/app_build && \
cp /home/wekan/app/fix-download-unicode/cfs_access-point.txt /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \
rm /home/wekan/app_build/bundle/programs/server/npm/node_modules/meteor/rajit_bootstrap3-datepicker/lib/bootstrap-datepicker/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs && \
chown wekan:wekan /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \
#Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
#https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
+8 -5
View File
@@ -9,6 +9,7 @@
[![Code Climate](https://codeclimate.com/github/wekan/wekan/badges/gpa.svg "Code Climate")](https://codeclimate.com/github/wekan/wekan)
[![Project Dependencies](https://david-dm.org/wekan/wekan.svg "Project Dependencies")](https://david-dm.org/wekan/wekan)
[![Code analysis at Open Hub](https://img.shields.io/badge/code%20analysis-at%20Open%20Hub-brightgreen.svg "Code analysis at Open Hub")](https://www.openhub.net/p/wekan)
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fwekan%2Fwekan.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fwekan%2Fwekan?ref=badge_shield)
## [Translate Wekan at Transifex](https://transifex.com/wekan/wekan)
@@ -22,9 +23,8 @@ It's better than at chat where details get lost when chat scrolls up.
## Chat
[![Wekan Vanila Chat][vanila_badge]][vanila_chat] - Most Wekan community and developers are here at #wekan chat channel.
Use webbrowser to register, and after that you can also alternatively use mobile app Rocket.Chat by Rocket.Chat with
address https://chat.vanila.io and same username and password.
[![Wekan Chat][vanila_badge]][wekan_chat] - Most Wekan community and developers are here. Works on webbrowser
and PWA app that can be added as icon on Android and bookmark on iOS, used like native app.
[Wekan IRC FAQ](https://github.com/wekan/wekan/wiki/IRC-FAQ)
@@ -61,7 +61,7 @@ that by providing one-click installation on various platforms.
- 64bit: Linux [Snap](https://github.com/wekan/wekan-snap/wiki/Install) or [Sandstorm](https://sandstorm.io) /
[Mac](https://github.com/wekan/wekan/wiki/Mac) / [Windows](https://github.com/wekan/wekan/wiki/Install-Wekan-from-source-on-Windows).
[More Platforms](https://github.com/wekan/wekan/wiki/Platforms). [ARM progress](https://github.com/wekan/wekan/issues/1053#issuecomment-410919264).
- 1 GB RAM minimum free for Wekan. Production server should have miminum total 4 GB RAM.
- 1 GB RAM minimum free for Wekan. Production server should have minimum total 4 GB RAM.
For thousands of users, for example with [Docker](https://github.com/wekan/wekan/blob/devel/docker-compose.yml): 3 frontend servers,
each having 2 CPU and 2 wekan-app containers. One backend wekan-db server with many CPUs.
- Enough disk space and alerts about low disk space. If you run out disk space, MongoDB database gets corrupted.
@@ -133,4 +133,7 @@ with [Meteor](https://www.meteor.com).
[open_source]: https://en.wikipedia.org/wiki/Open-source_software
[free_software]: https://en.wikipedia.org/wiki/Free_software
[vanila_badge]: https://vanila.io/img/join-chat-button2.png
[vanila_chat]: https://chat.vanila.io/channel/wekan
[wekan_chat]: https://community.vanila.io/wekan
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fwekan%2Fwekan.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fwekan%2Fwekan?ref=badge_large)
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v2.37.0"
appVersion: "v2.77.0"
files:
userUploads:
- README.md
+14 -1
View File
@@ -99,6 +99,9 @@ template(name="boardActivities")
else
| {{{_ 'activity-added' memberLink cardLink}}}.
if($eq activityType 'moveCardBoard')
| {{{_ 'activity-moved' cardLink oldBoardName boardName}}}.
if($eq activityType 'moveCard')
| {{{_ 'activity-moved' cardLink oldList.title list.title}}}.
@@ -114,6 +117,12 @@ template(name="boardActivities")
if($eq activityType 'removedLabel')
| {{{_ 'activity-removed-label' lastLabel cardLink}}}.
if($eq activityType 'setCustomField')
| {{{_ 'activity-set-customfield' lastCustomField lastCustomFieldValue cardLink}}}.
if($eq activityType 'unsetCustomField')
| {{{_ 'activity-unset-customfield' lastCustomField cardLink}}}.
if($eq activityType 'unjoinMember')
if($eq user._id member._id)
| {{{_ 'activity-unjoined' cardLink}}}.
@@ -129,7 +138,7 @@ template(name="cardActivities")
p.activity-desc
+memberName(user=user)
if($eq activityType 'createCard')
| {{_ 'activity-added' cardLabel list.title}}.
| {{_ 'activity-added' cardLabel listName}}.
if($eq activityType 'importCard')
| {{{_ 'activity-imported' cardLabel list.title sourceLink}}}.
if($eq activityType 'joinMember')
@@ -170,6 +179,10 @@ template(name="cardActivities")
| {{_ 'activity-sent' cardLabel boardLabel}}.
if($eq activityType 'moveCard')
| {{_ 'activity-moved' cardLabel oldList.title list.title}}.
if($eq activityType 'moveCardBoard')
| {{{_ 'activity-moved' cardLink oldBoardName boardName}}}.
if($eq activityType 'addAttachment')
| {{{_ 'activity-attached' attachmentLink cardLabel}}}.
if attachment.isImage
@@ -74,6 +74,8 @@ BlazeComponent.extendComponent({
lastLabel(){
const lastLabelId = this.currentData().labelId;
if (!lastLabelId)
return null;
const lastLabel = Boards.findOne(Session.get('currentBoard')).getLabelById(lastLabelId);
if(lastLabel.name === undefined || lastLabel.name === ''){
return lastLabel.color;
@@ -82,6 +84,28 @@ BlazeComponent.extendComponent({
}
},
lastCustomField(){
const lastCustomField = CustomFields.findOne(this.currentData().customFieldId);
if (!lastCustomField)
return null;
return lastCustomField.name;
},
lastCustomFieldValue(){
const lastCustomField = CustomFields.findOne(this.currentData().customFieldId);
if (!lastCustomField)
return null;
const value = this.currentData().value;
if (lastCustomField.settings.dropdownItems && lastCustomField.settings.dropdownItems.length > 0) {
const dropDownValue = _.find(lastCustomField.settings.dropdownItems, (item) => {
return item._id === value;
});
if (dropDownValue)
return dropDownValue.name;
}
return value;
},
listLabel() {
return this.currentData().list().title;
},
@@ -117,6 +141,8 @@ BlazeComponent.extendComponent({
customField() {
const customField = this.currentData().customField();
if (!customField)
return null;
return customField.name;
},
+2
View File
@@ -30,6 +30,8 @@ template(name="boardBody")
+listsGroup(currentBoard)
else if isViewCalendar
+calendarView
else
+listsGroup(currentBoard)
template(name="calendarView")
if isViewCalendar
+5 -5
View File
@@ -14,7 +14,7 @@ BlazeComponent.extendComponent({
const currentBoardId = Session.get('currentBoard');
if (!currentBoardId)
return;
const handle = subManager.subscribe('board', currentBoardId);
const handle = subManager.subscribe('board', currentBoardId, false);
Tracker.nonreactive(() => {
Tracker.autorun(() => {
this.isBoardReady.set(handle.ready());
@@ -191,19 +191,19 @@ BlazeComponent.extendComponent({
isViewSwimlanes() {
const currentUser = Meteor.user();
if (!currentUser) return false;
return (currentUser.profile.boardView === 'board-view-swimlanes');
return ((currentUser.profile || {}).boardView === 'board-view-swimlanes');
},
isViewLists() {
const currentUser = Meteor.user();
if (!currentUser) return true;
return (currentUser.profile.boardView === 'board-view-lists');
return ((currentUser.profile || {}).boardView === 'board-view-lists');
},
isViewCalendar() {
const currentUser = Meteor.user();
if (!currentUser) return false;
return (currentUser.profile.boardView === 'board-view-cal');
return ((currentUser.profile || {}).boardView === 'board-view-cal');
},
openNewListForm() {
@@ -335,6 +335,6 @@ BlazeComponent.extendComponent({
isViewCalendar() {
const currentUser = Meteor.user();
if (!currentUser) return false;
return (currentUser.profile.boardView === 'board-view-cal');
return ((currentUser.profile || {}).boardView === 'board-view-cal');
},
}).register('calendarView');
+1 -1
View File
@@ -50,6 +50,6 @@ position()
display: flex
flex-direction: column
margin: 0
padding: 0 40px 0px 0
padding: 0 0px 0px 0
overflow-x: hidden
overflow-y: auto
+8 -3
View File
@@ -85,10 +85,15 @@ template(name="boardHeaderBar")
if Filter.isActive
a.board-header-btn-close.js-filter-reset(title="{{_ 'filter-clear'}}")
i.fa.fa-times-thin
if currentUser.isAdmin
a.board-header-btn.js-open-rules-view(title="{{_ 'rules'}}")
i.fa.fa-magic
span {{_ 'rules'}}
else if currentUser.isBoardAdmin
a.board-header-btn.js-open-rules-view(title="{{_ 'rules'}}")
i.fa.fa-magic
span {{_ 'rules'}}
a.board-header-btn.js-open-search-view(title="{{_ 'search'}}")
i.fa.fa-search
@@ -98,7 +103,7 @@ template(name="boardHeaderBar")
a.board-header-btn.js-toggle-board-view(
title="{{_ 'board-view'}}")
i.fa.fa-th-large
span {{_ currentUser.profile.boardView}}
span {{#if currentUser.profile.boardView}}{{_ currentUser.profile.boardView}}{{else}}{{_ 'board-view-lists'}}{{/if}}
if canModifyBoard
a.board-header-btn.js-multiselection-activate(
@@ -193,10 +198,10 @@ template(name="boardChangeTitlePopup")
form
label
| {{_ 'title'}}
input.js-board-name(type="text" value=title autofocus)
input.js-board-name(type="text" value=title autofocus dir="auto")
label
| {{_ 'description'}}
textarea.js-board-desc= description
textarea.js-board-desc(dir="auto")= description
input.primary.wide(type="submit" value="{{_ 'rename'}}")
template(name="boardCreateRulePopup")
+5 -3
View File
@@ -89,12 +89,14 @@ BlazeComponent.extendComponent({
},
'click .js-toggle-board-view'() {
const currentUser = Meteor.user();
if (currentUser.profile.boardView === 'board-view-swimlanes') {
if ((currentUser.profile || {}).boardView === 'board-view-swimlanes') {
currentUser.setBoardView('board-view-cal');
} else if (currentUser.profile.boardView === 'board-view-lists') {
} else if ((currentUser.profile || {}).boardView === 'board-view-lists') {
currentUser.setBoardView('board-view-swimlanes');
} else if (currentUser.profile.boardView === 'board-view-cal') {
} else if ((currentUser.profile || {}).boardView === 'board-view-cal') {
currentUser.setBoardView('board-view-lists');
} else {
currentUser.setBoardView('board-view-swimlanes');
}
},
'click .js-toggle-sidebar'() {
+12 -4
View File
@@ -18,17 +18,25 @@ template(name="boardList")
else
a.js-open-board.board-list-item(href="{{pathFor 'board' id=_id slug=slug}}")
span.details
span.board-list-item-name= title
span.board-list-item-name
+viewer
= title
i.fa.js-star-board(
class="fa-star{{#if isStarred}} is-star-active{{else}}-o{{/if}}"
title="{{_ 'star-board-title'}}")
p.board-list-item-desc
+viewer
= description
if hasSpentTimeCards
i.fa.js-has-spenttime-cards(
class="fa-circle{{#if hasOvertimeCards}} has-overtime-card-active{{else}} no-overtime-card-active{{/if}}"
title="{{#if hasOvertimeCards}}{{_ 'has-overtime-cards'}}{{else}}{{_ 'has-spenttime-cards'}}{{/if}}")
p.board-list-item-desc= description
i.fa.js-clone-board(
class="fa-clone"
title="{{_ 'duplicate-board'}}")
i.fa.js-archive-board(
class="fa-archive"
title="{{_ 'archive-board'}}")
template(name="boardListHeaderBar")
h1 {{_ 'my-boards'}}
+23 -6
View File
@@ -25,23 +25,20 @@ BlazeComponent.extendComponent({
archived: false,
'members.userId': Meteor.userId(),
type: 'board',
}, {
sort: ['title'],
});
}, { sort: ['title'] });
},
isStarred() {
const user = Meteor.user();
return user && user.hasStarred(this.currentData()._id);
},
hasOvertimeCards() {
subManager.subscribe('board', this.currentData()._id);
subManager.subscribe('board', this.currentData()._id, false);
return this.currentData().hasOvertimeCards();
},
hasSpentTimeCards() {
subManager.subscribe('board', this.currentData()._id);
subManager.subscribe('board', this.currentData()._id, false);
return this.currentData().hasSpentTimeCards();
},
@@ -58,6 +55,26 @@ BlazeComponent.extendComponent({
Meteor.user().toggleBoardStar(boardId);
evt.preventDefault();
},
'click .js-clone-board'(evt) {
Meteor.call('cloneBoard',
this.currentData()._id,
Session.get('fromBoard'),
(err, res) => {
if (err) {
this.setError(err.error);
} else {
Session.set('fromBoard', null);
Utils.goBoardId(res);
}
}
);
evt.preventDefault();
},
'click .js-archive-board'(evt) {
const boardId = this.currentData()._id;
Meteor.call('archiveBoard', boardId);
evt.preventDefault();
},
'click .js-accept-invite'() {
const boardId = this.currentData()._id;
Meteor.user().removeInvite(boardId);
+28
View File
@@ -94,13 +94,41 @@ $spaceBetweenTiles = 16px
.is-star-active
color: white
.fa-clone
position: absolute;
bottom: 0
font-size: 14px
height: 18px
line-height: 18px
opacity: 0
right: 0
padding: 9px 9px
transition-duration: .15s
transition-property: color, font-size, background
.fa-archive
position: absolute;
bottom: 0
font-size: 14px
height: 18px
line-height: 18px
opacity: 0
left: 0
padding: 9px 9px
transition-duration: .15s
transition-property: color, font-size, background
li:hover a
&:hover
.fa-star,
.fa-clone,
.fa-archive,
.fa-star-o
color: white
.fa-star,
.fa-clone,
.fa-archive,
.fa-star-o
color: white
opacity: .75
@@ -4,9 +4,10 @@ template(name="cardCustomFieldsPopup")
li.item(class="")
a.name.js-select-field(href="#")
span.full-name
+viewer
= name
if hasCustomField
i.fa.fa-check
i.fa.fa-check
hr
a.quiet-button.full.js-settings
i.fa.fa-cog
@@ -61,9 +62,13 @@ template(name="cardCustomField-dropdown")
select.inline
each items
if($eq data.value this._id)
option(value=_id selected="selected") {{name}}
option(value=_id selected="selected")
+viewer
= name
else
option(value=_id) {{name}}
option(value=_id)
+viewer
= name
.edit-controls.clearfix
button.primary(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
@@ -73,4 +78,4 @@ template(name="cardCustomField-dropdown")
+viewer
= selectedItem
else
| {{_ 'edit'}}
| {{_ 'edit'}}
+20 -17
View File
@@ -77,7 +77,9 @@ template(name="cardDetails")
h3.card-details-item-title {{_ 'labels'}}
a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}")
each labels
span.card-label(class="card-label-{{color}}" title=name)= name
span.card-label(class="card-label-{{color}}" title=name)
+viewer
= name
if canModifyCard
a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
i.fa.fa-plus
@@ -86,7 +88,8 @@ template(name="cardDetails")
each customFieldsWD
.card-details-item.card-details-item-customfield
h3.card-details-item-title
= definition.name
+viewer
= definition.name
+cardCustomField
.card-details-items
@@ -197,20 +200,20 @@ template(name="cardDetails")
+activities(card=this mode="card")
template(name="editCardTitleForm")
textarea.js-edit-card-title(rows='1' autofocus)
textarea.js-edit-card-title(rows='1' autofocus dir="auto")
= getTitle
.edit-controls.clearfix
button.primary.confirm.js-submit-edit-card-title-form(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
template(name="editCardRequesterForm")
input.js-edit-card-requester(type='text' autofocus value=getRequestedBy)
input.js-edit-card-requester(type='text' autofocus value=getRequestedBy dir="auto")
.edit-controls.clearfix
button.primary.confirm.js-submit-edit-card-requester-form(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
template(name="editCardAssignerForm")
input.js-edit-card-assigner(type='text' autofocus value=getAssignedBy)
input.js-edit-card-assigner(type='text' autofocus value=getAssignedBy dir="auto")
.edit-controls.clearfix
button.primary.confirm.js-submit-edit-card-assigner-form(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
@@ -221,14 +224,14 @@ template(name="cardDetailsActionsPopup")
if canModifyCard
hr
ul.pop-over-list
li: a.js-members {{_ 'card-edit-members'}}
li: a.js-labels {{_ 'card-edit-labels'}}
li: a.js-attachments {{_ 'card-edit-attachments'}}
//li: a.js-members {{_ 'card-edit-members'}}
//li: a.js-labels {{_ 'card-edit-labels'}}
//li: a.js-attachments {{_ 'card-edit-attachments'}}
li: a.js-custom-fields {{_ 'card-edit-custom-fields'}}
li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}}
li: a.js-start-date {{_ 'editCardStartDatePopup-title'}}
li: a.js-due-date {{_ 'editCardDueDatePopup-title'}}
li: a.js-end-date {{_ 'editCardEndDatePopup-title'}}
//li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}}
//li: a.js-start-date {{_ 'editCardStartDatePopup-title'}}
//li: a.js-due-date {{_ 'editCardDueDatePopup-title'}}
//li: a.js-end-date {{_ 'editCardEndDatePopup-title'}}
li: a.js-spent-time {{_ 'editCardSpentTimePopup-title'}}
li: a.js-set-card-color {{_ 'setCardColorPopup-title'}}
hr
@@ -306,27 +309,27 @@ template(name="cardMorePopup")
h2 {{_ 'change-card-parent'}}
label {{_ 'source-board'}}:
select.js-field-parent-board
if isTopLevel
option(value="none" selected) {{_ 'custom-field-dropdown-none'}}
else
option(value="none") {{_ 'custom-field-dropdown-none'}}
each boards
if isParentBoard
option(value="{{_id}}" selected) {{title}}
else
option(value="{{_id}}") {{title}}
if isTopLevel
option(value="none" selected) {{_ 'custom-field-dropdown-none'}}
else
option(value="none") {{_ 'custom-field-dropdown-none'}}
label {{_ 'parent-card'}}:
select.js-field-parent-card
if isTopLevel
option(value="none" selected) {{_ 'custom-field-dropdown-none'}}
else
option(value="none") {{_ 'custom-field-dropdown-none'}}
each cards
if isParentCard
option(value="{{_id}}" selected) {{title}}
else
option(value="{{_id}}") {{title}}
option(value="none") {{_ 'custom-field-dropdown-none'}}
br
| {{_ 'added'}}
span.date(title=card.createdAt) {{ moment createdAt 'LLL' }}
+31 -28
View File
@@ -412,17 +412,19 @@ Template.moveCardPopup.events({
// XXX We should *not* get the currentCard from the global state, but
// instead from a “component” state.
const card = Cards.findOne(Session.get('currentCard'));
const bSelect = $('.js-select-boards')[0];
const boardId = bSelect.options[bSelect.selectedIndex].value;
const lSelect = $('.js-select-lists')[0];
const newListId = lSelect.options[lSelect.selectedIndex].value;
const listId = lSelect.options[lSelect.selectedIndex].value;
const slSelect = $('.js-select-swimlanes')[0];
card.swimlaneId = slSelect.options[slSelect.selectedIndex].value;
card.move(card.swimlaneId, newListId, 0);
const swimlaneId = slSelect.options[slSelect.selectedIndex].value;
card.move(boardId, swimlaneId, listId, 0);
Popup.close();
},
});
BlazeComponent.extendComponent({
onCreated() {
subManager.subscribe('board', Session.get('currentBoard'));
subManager.subscribe('board', Session.get('currentBoard'), false);
this.selectedBoardId = new ReactiveVar(Session.get('currentBoard'));
},
@@ -430,6 +432,7 @@ BlazeComponent.extendComponent({
const boards = Boards.find({
archived: false,
'members.userId': Meteor.userId(),
_id: {$ne: Meteor.user().getTemplatesBoardId()},
}, {
sort: ['title'],
});
@@ -450,7 +453,7 @@ BlazeComponent.extendComponent({
return [{
'change .js-select-boards'(evt) {
this.selectedBoardId.set($(evt.currentTarget).val());
subManager.subscribe('board', this.selectedBoardId.get());
subManager.subscribe('board', this.selectedBoardId.get(), false);
},
}];
},
@@ -577,11 +580,14 @@ BlazeComponent.extendComponent({
BlazeComponent.extendComponent({
onCreated() {
this.currentCard = this.currentData();
this.parentBoard = new ReactiveVar(null);
this.parentCard = this.currentCard.parentCard();
if (this.parentCard) {
this.parentBoard = this.parentCard.board();
const list = $('.js-field-parent-card');
list.val(this.parentCard._id);
this.parentBoard.set(this.parentCard.board()._id);
} else {
this.parentBoard = null;
this.parentBoard.set(null);
}
},
@@ -589,6 +595,9 @@ BlazeComponent.extendComponent({
const boards = Boards.find({
archived: false,
'members.userId': Meteor.userId(),
_id: {
$ne: Meteor.user().getTemplatesBoardId(),
},
}, {
sort: ['title'],
});
@@ -596,8 +605,12 @@ BlazeComponent.extendComponent({
},
cards() {
if (this.parentBoard) {
return this.parentBoard.cards();
const currentId = Session.get('currentCard');
if (this.parentBoard.get()) {
return Cards.find({
boardId: this.parentBoard.get(),
_id: {$ne: currentId},
});
} else {
return [];
}
@@ -605,8 +618,8 @@ BlazeComponent.extendComponent({
isParentBoard() {
const board = this.currentData();
if (this.parentBoard) {
return board._id === this.parentBoard;
if (this.parentBoard.get()) {
return board._id === this.parentBoard.get();
}
return false;
},
@@ -620,11 +633,10 @@ BlazeComponent.extendComponent({
},
setParentCardId(cardId) {
if (cardId === 'null') {
cardId = null;
this.parentCard = null;
} else {
if (cardId) {
this.parentCard = Cards.findOne(cardId);
} else {
this.parentCard = null;
}
this.currentCard.setParentId(cardId);
},
@@ -661,23 +673,14 @@ BlazeComponent.extendComponent({
'change .js-field-parent-board'(evt) {
const selection = $(evt.currentTarget).val();
const list = $('.js-field-parent-card');
list.empty();
if (selection === 'none') {
this.parentBoard = null;
list.prop('disabled', true);
this.parentBoard.set(null);
} else {
this.parentBoard = Boards.findOne(selection);
this.parentBoard.cards().forEach(function(card) {
list.append(
$('<option></option>').val(card._id).html(card.title)
);
});
subManager.subscribe('board', $(evt.currentTarget).val(), false);
this.parentBoard.set(selection);
list.prop('disabled', false);
}
list.append(
`<option value='none' selected='selected'>${TAPi18n.__('custom-field-dropdown-none')}</option>`
);
this.setParentCardId('null');
this.setParentCardId(null);
},
'change .js-field-parent-card'(evt) {
const selection = $(evt.currentTarget).val();
+2 -1
View File
@@ -133,7 +133,8 @@ input[type="submit"].attachment-add-link-submit
.card-details-canvas
width: 100%
padding-left: 0px;
.card-details-header
.close-card-details
margin-right: 0px
+1 -1
View File
@@ -56,7 +56,7 @@ template(name="addChecklistItemForm")
a.fa.fa-times-thin.js-close-inlined-form
template(name="editChecklistItemForm")
textarea.js-edit-checklist-item(rows='1' autofocus)
textarea.js-edit-checklist-item(rows='1' autofocus dir="auto")
if $eq type 'item'
= item.title
else
+2 -1
View File
@@ -31,7 +31,8 @@ template(name="cardLabelsPopup")
a.card-label-edit-button.fa.fa-pencil.js-edit-label
span.card-label.card-label-selectable.js-select-label(class="card-label-{{color}}"
class="{{# if isLabelSelected ../_id }}active{{/if}}")
= name
+viewer
= name
if(isLabelSelected ../_id)
i.card-label-selectable-icon.fa.fa-check
if currentUser.isBoardAdmin
+2 -1
View File
@@ -58,7 +58,8 @@ template(name="minicard")
.minicard-custom-field
if definition.showLabelOnMiniCard
.minicard-custom-field-item
= definition.name
+viewer
= definition.name
.minicard-custom-field-item
+viewer
= trueValue
+3 -3
View File
@@ -50,13 +50,13 @@ template(name="subtaskDeleteDialog")
button.toggle-delete-subtask-dialog(type="button") {{_ 'cancel'}}
template(name="addSubtaskItemForm")
textarea.js-add-subtask-item(rows='1' autofocus)
textarea.js-add-subtask-item(rows='1' autofocus dir="auto")
.edit-controls.clearfix
button.primary.confirm.js-submit-add-subtask-item-form(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
template(name="editSubtaskItemForm")
textarea.js-edit-subtask-item(rows='1' autofocus)
textarea.js-edit-subtask-item(rows='1' autofocus dir="auto")
if $eq type 'item'
= item.title
else
@@ -76,7 +76,7 @@ template(name="subtasksItems")
else
+subtaskItemDetail(item = item subtasks = subtasks)
if canModifyCard
+inlinedForm(autoclose=false classNames="js-add-subtask-item" subtasks = subtasks)
+inlinedForm(autoclose=false classNames="js-add-subtask-item" subtasks = subtasks dir="auto")
+addSubtaskItemForm
else
a.add-subtask-item.js-open-inlined-form
+9 -3
View File
@@ -67,7 +67,13 @@ BlazeComponent.extendComponent({
const nCards = MultiSelection.isActive() ? MultiSelection.count() : 1;
const sortIndex = calculateIndex(prevCardDom, nextCardDom, nCards);
const listId = Blaze.getData(ui.item.parents('.list').get(0))._id;
const swimlaneId = Blaze.getData(ui.item.parents('.swimlane').get(0))._id;
const currentBoard = Boards.findOne(Session.get('currentBoard'));
let swimlaneId = '';
const boardView = (Meteor.user().profile || {}).boardView;
if (boardView === 'board-view-swimlanes' || currentBoard.isTemplatesBoard())
swimlaneId = Blaze.getData(ui.item.parents('.swimlane').get(0))._id;
else if ((boardView === 'board-view-lists') || (boardView === 'board-view-cal') || !boardView)
swimlaneId = currentBoard.getDefaultSwimline()._id;
// Normally the jquery-ui sortable library moves the dragged DOM element
// to its new position, which disrupts Blaze reactive updates mechanism
@@ -80,12 +86,12 @@ BlazeComponent.extendComponent({
if (MultiSelection.isActive()) {
Cards.find(MultiSelection.getMongoSelector()).forEach((card, i) => {
card.move(swimlaneId, listId, sortIndex.base + i * sortIndex.increment);
card.move(currentBoard._id, swimlaneId, listId, sortIndex.base + i * sortIndex.increment);
});
} else {
const cardDomElement = ui.item.get(0);
const card = Blaze.getData(cardDomElement);
card.move(swimlaneId, listId, sortIndex.base);
card.move(currentBoard._id, swimlaneId, listId, sortIndex.base);
}
boardComponent.setIsDragging(false);
},
+19 -3
View File
@@ -99,6 +99,10 @@
.highlight
color: #ce1414
.cardCount
color: #8c8c8c
font-size: 0.8em
.list-body
flex: 1 1 auto
flex-direction: column
@@ -161,7 +165,7 @@
.mini-list
flex: 0 0 60px
height: 60px
height: auto
width: 100%
border-left: 0px
border-bottom: 1px solid darken(white, 20%)
@@ -170,6 +174,8 @@
display: block
width: 100%
border-left: 0px
&:first-child
margin-left: 0px
&.ui-sortable-helper
flex: 0 0 60px
@@ -188,8 +194,16 @@
border-left: 0px
border-bottom: 1px solid darken(white, 20%)
.list-header
.list-body
padding: 15px 19px;
.list-header
padding: 0 12px 0px
border-bottom: 0px solid #e4e4e4
height: 60px
margin-top: 10px
display: flex
align-items: center
.list-header-left-icon
display: inline
padding: 7px
@@ -201,8 +215,10 @@
.list-header-menu-icon
position: absolute
padding: 7px
top: -@padding
top: 50%
transform: translateY(-50%)
right: 17px
font-size: 20px
.link-board-wrapper
display: flex
+14 -11
View File
@@ -13,14 +13,7 @@ template(name="listBody")
class="{{#if MultiSelection.isSelected _id}}is-checked{{/if}}")
+minicard(this)
if (showSpinner (idOrNull ../../_id))
.sk-spinner.sk-spinner-wave.sk-spinner-list(
class=currentBoard.colorClass
id="showMoreResults")
.sk-rect1
.sk-rect2
.sk-rect3
.sk-rect4
.sk-rect5
+spinnerList
if canSeeAddCard
+inlinedForm(autoclose=false position="bottom")
@@ -30,13 +23,23 @@ template(name="listBody")
i.fa.fa-plus
| {{_ 'add-card'}}
template(name="spinnerList")
.sk-spinner.sk-spinner-wave.sk-spinner-list(
class=currentBoard.colorClass
id="showMoreResults")
.sk-rect1
.sk-rect2
.sk-rect3
.sk-rect4
.sk-rect5
template(name="addCardForm")
.minicard.minicard-composer.js-composer
if getLabels
.minicard-labels
each getLabels
.minicard-label(class="card-label-{{color}}" title="{{name}}")
textarea.minicard-composer-textarea.js-card-title(autofocus)
textarea.minicard-composer-textarea.js-card-title(autofocus dir="auto")
if members.get
.minicard-members.js-minicard-composer-members
each members.get
@@ -93,7 +96,7 @@ template(name="searchElementPopup")
form
label
| {{_ 'title'}}
input.js-element-title(type="text" placeholder="{{_ 'title'}}" autofocus required)
input.js-element-title(type="text" placeholder="{{_ 'title'}}" autofocus required dir="auto")
unless isTemplateSearch
label {{_ 'boards'}}:
.link-board-wrapper
@@ -102,7 +105,7 @@ template(name="searchElementPopup")
each boards
option(value="{{_id}}") {{title}}
form.js-search-term-form
input(type="text" name="searchTerm" placeholder="{{_ 'search-example'}}" autofocus)
input(type="text" name="searchTerm" placeholder="{{_ 'search-example'}}" autofocus dir="auto")
.list-body.js-perfect-scrollbar.search-card-results
.minicards.clearfix.js-minicards
if isBoardTemplateSearch
+64 -63
View File
@@ -7,28 +7,6 @@ BlazeComponent.extendComponent({
this.cardlimit = new ReactiveVar(InfiniteScrollIter);
},
onRendered() {
const domElement = this.find('.js-perfect-scrollbar');
this.$(domElement).on('scroll', () => this.updateList(domElement));
$(window).on(`resize.${this.data().listId}`, () => this.updateList(domElement));
// we add a Mutation Observer to allow propagations of cardlimit
// when the spinner stays in the current view (infinite scrolling)
this.mutationObserver = new MutationObserver(() => this.updateList(domElement));
this.mutationObserver.observe(domElement, {
childList: true,
});
this.updateList(domElement);
},
onDestroyed() {
$(window).off(`resize.${this.data().listId}`);
this.mutationObserver.disconnect();
},
mixins() {
return [Mixins.PerfectScrollbar];
},
@@ -70,7 +48,7 @@ BlazeComponent.extendComponent({
const board = this.data().board();
let linkedId = '';
let swimlaneId = '';
const boardView = Meteor.user().profile.boardView;
const boardView = (Meteor.user().profile || {}).boardView;
let cardType = 'cardType-card';
if (title) {
if (board.isTemplatesBoard()) {
@@ -94,7 +72,7 @@ BlazeComponent.extendComponent({
}
} else if (boardView === 'board-view-swimlanes')
swimlaneId = this.parentComponent().parentComponent().data()._id;
else if ((boardView === 'board-view-lists') || (boardView === 'board-view-cal'))
else if ((boardView === 'board-view-lists') || (boardView === 'board-view-cal') || !boardView)
swimlaneId = board.getDefaultSwimline()._id;
const _id = Cards.insert({
@@ -171,7 +149,7 @@ BlazeComponent.extendComponent({
idOrNull(swimlaneId) {
const currentUser = Meteor.user();
if (currentUser.profile.boardView === 'board-view-swimlanes' ||
if ((currentUser.profile || {}).boardView === 'board-view-swimlanes' ||
this.data().board().isTemplatesBoard())
return swimlaneId;
return undefined;
@@ -191,38 +169,11 @@ BlazeComponent.extendComponent({
});
},
spinnerInView(container) {
const parentViewHeight = container.clientHeight;
const bottomViewPosition = container.scrollTop + parentViewHeight;
const spinner = this.find('.sk-spinner-list');
const threshold = spinner.offsetTop;
return bottomViewPosition > threshold;
},
showSpinner(swimlaneId) {
const list = Template.currentData();
return list.cards(swimlaneId).count() > this.cardlimit.get();
},
updateList(container) {
// first, if the spinner is not rendered, we have reached the end of
// the list of cards, so skip and disable firing the events
const target = this.find('.sk-spinner-list');
if (!target) {
this.$(container).off('scroll');
$(window).off(`resize.${this.data().listId}`);
return;
}
if (this.spinnerInView(container)) {
this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter);
Ps.update(container);
}
},
canSeeAddCard() {
return !this.reachedWipLimit() && Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
},
@@ -397,7 +348,7 @@ BlazeComponent.extendComponent({
this.boardId = Session.get('currentBoard');
// In order to get current board info
subManager.subscribe('board', this.boardId);
subManager.subscribe('board', this.boardId, false);
this.board = Boards.findOne(this.boardId);
// List where to insert card
const list = $(Popup._getTopStack().openerElement).closest('.js-list');
@@ -405,10 +356,10 @@ BlazeComponent.extendComponent({
// Swimlane where to insert card
const swimlane = $(Popup._getTopStack().openerElement).closest('.js-swimlane');
this.swimlaneId = '';
const boardView = Meteor.user().profile.boardView;
const boardView = (Meteor.user().profile || {}).boardView;
if (boardView === 'board-view-swimlanes')
this.swimlaneId = Blaze.getData(swimlane[0])._id;
else if (boardView === 'board-view-lists')
else if (boardView === 'board-view-lists' || !boardView)
this.swimlaneId = Swimlanes.findOne({boardId: this.boardId})._id;
},
@@ -463,7 +414,7 @@ BlazeComponent.extendComponent({
events() {
return [{
'change .js-select-boards'(evt) {
subManager.subscribe('board', $(evt.currentTarget).val());
subManager.subscribe('board', $(evt.currentTarget).val(), false);
this.selectedBoardId.set($(evt.currentTarget).val());
},
'change .js-select-swimlanes'(evt) {
@@ -534,13 +485,13 @@ BlazeComponent.extendComponent({
this.isBoardTemplateSearch;
let board = {};
if (this.isTemplateSearch) {
board = Boards.findOne(Meteor.user().profile.templatesBoardId);
board = Boards.findOne((Meteor.user().profile || {}).templatesBoardId);
} else {
// Prefetch first non-current board id
board = Boards.findOne({
archived: false,
'members.userId': Meteor.userId(),
_id: {$nin: [Session.get('currentBoard'), Meteor.user().profile.templatesBoardId]},
_id: {$nin: [Session.get('currentBoard'), (Meteor.user().profile || {}).templatesBoardId]},
});
}
if (!board) {
@@ -549,17 +500,17 @@ BlazeComponent.extendComponent({
}
const boardId = board._id;
// Subscribe to this board
subManager.subscribe('board', boardId);
subManager.subscribe('board', boardId, false);
this.selectedBoardId = new ReactiveVar(boardId);
if (!this.isBoardTemplateSearch) {
this.boardId = Session.get('currentBoard');
// In order to get current board info
subManager.subscribe('board', this.boardId);
subManager.subscribe('board', this.boardId, false);
this.swimlaneId = '';
// Swimlane where to insert card
const swimlane = $(Popup._getTopStack().openerElement).parents('.js-swimlane');
if (Meteor.user().profile.boardView === 'board-view-swimlanes')
if ((Meteor.user().profile || {}).boardView === 'board-view-swimlanes')
this.swimlaneId = Blaze.getData(swimlane[0])._id;
else
this.swimlaneId = Swimlanes.findOne({boardId: this.boardId})._id;
@@ -596,7 +547,7 @@ BlazeComponent.extendComponent({
} else if (this.isBoardTemplateSearch) {
const boards = board.searchBoards(this.term.get());
boards.forEach((board) => {
subManager.subscribe('board', board.linkedId);
subManager.subscribe('board', board.linkedId, false);
});
return boards;
} else {
@@ -607,7 +558,7 @@ BlazeComponent.extendComponent({
events() {
return [{
'change .js-select-boards'(evt) {
subManager.subscribe('board', $(evt.currentTarget).val());
subManager.subscribe('board', $(evt.currentTarget).val(), false);
this.selectedBoardId.set($(evt.currentTarget).val());
},
'submit .js-search-term-form'(evt) {
@@ -661,3 +612,53 @@ BlazeComponent.extendComponent({
}];
},
}).register('searchElementPopup');
BlazeComponent.extendComponent({
onCreated() {
this.cardlimit = this.parentComponent().cardlimit;
this.listId = this.parentComponent().data()._id;
this.swimlaneId = '';
const boardView = (Meteor.user().profile || {}).boardView;
if (boardView === 'board-view-swimlanes')
this.swimlaneId = this.parentComponent().parentComponent().parentComponent().data()._id;
},
onRendered() {
this.spinner = this.find('.sk-spinner-list');
this.container = this.$(this.spinner).parents('.js-perfect-scrollbar')[0];
$(this.container).on(`scroll.spinner_${this.swimlaneId}_${this.listId}`, () => this.updateList());
$(window).on(`resize.spinner_${this.swimlaneId}_${this.listId}`, () => this.updateList());
this.updateList();
},
onDestroyed() {
$(this.container).off(`scroll.spinner_${this.swimlaneId}_${this.listId}`);
$(window).off(`resize.spinner_${this.swimlaneId}_${this.listId}`);
},
updateList() {
if (this.spinnerInView()) {
this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter);
window.requestIdleCallback(() => this.updateList());
}
},
spinnerInView() {
const parentViewHeight = this.container.clientHeight;
const bottomViewPosition = this.container.scrollTop + parentViewHeight;
const threshold = this.spinner.offsetTop;
// spinner deleted
if (!this.spinner.offsetTop) {
return false;
}
return bottomViewPosition > threshold;
},
}).register('spinnerList');
+3 -2
View File
@@ -10,7 +10,8 @@ template(name="listHeader")
a.list-header-left-icon.fa.fa-angle-left.js-unselect-list
h2.list-header-name(
class="{{#if currentUser.isBoardMember}}js-open-inlined-form is-editable{{/if}}")
= title
+viewer
= title
if wipLimit.enabled
|&nbsp;(
span(class="{{#if reachedWipLimit}}highlight{{/if}}") {{cards.count}}
@@ -18,7 +19,7 @@ template(name="listHeader")
if showCardsCountForList cards.count
|&nbsp;
p.quiet.small {{cardsCount}} {{_ 'cards-count'}}
span(class="cardCount") {{cardsCount}} {{_ 'cards-count'}}
if isMiniScreen
if currentList
if isWatching
+1 -1
View File
@@ -30,7 +30,7 @@ BlazeComponent.extendComponent({
cardsCount() {
const list = Template.currentData();
let swimlaneId = '';
const boardView = Meteor.user().profile.boardView;
const boardView = (Meteor.user().profile || {}).boardView;
if (boardView === 'board-view-swimlanes')
swimlaneId = this.parentComponent().parentComponent().data()._id;
+2 -1
View File
@@ -1,5 +1,6 @@
template(name="editor")
textarea.editor(
dir="auto"
class="{{class}}"
id=id
autofocus=autofocus
@@ -7,7 +8,7 @@ template(name="editor")
+Template.contentBlock
template(name="viewer")
.viewer
.viewer(dir="auto")
+mentions
+markdown
{{> UI.contentBlock }}
+5 -4
View File
@@ -45,15 +45,16 @@ template(name="header")
#header-main-bar(class="{{#if wrappedHeader}}wrapper{{/if}}")
+Template.dynamic(template=headerBar)
unless hideLogo
//unless hideLogo
//-
On sandstorm, the logo shouldn't be clickable, because we only have one
page/document on it, and we don't want to see the home page containing
the list of all boards.
unless currentSetting.hideLogo
a.wekan-logo(href="{{pathFor 'home'}}" title="{{_ 'header-logo-title'}}")
img(src="{{pathFor '/wekan-logo-header.png'}}" alt="Wekan")
// unless currentSetting.hideLogo
// a.wekan-logo(href="{{pathFor 'home'}}" title="{{_ 'header-logo-title'}}")
// img(src="{{pathFor '/logo-header.png'}}" alt="")
if appIsOffline
+offlineWarning
+30 -24
View File
@@ -1,37 +1,32 @@
head
title Wekan
meta(name="viewport"
content="maximum-scale=1.0,width=device-width,initial-scale=1.0,user-scalable=0")
title
meta(name="viewport" content="maximum-scale=1.0,width=device-width,initial-scale=1.0,user-scalable=0")
meta(http-equiv="X-UA-Compatible" content="IE=edge")
//- XXX We should use pathFor in the following `href` to support the case
where the application is deployed with a path prefix, but it seems to be
difficult to do that cleanly with Blaze -- at least without adding extra
packages.
link(rel="shortcut icon" href="/public/wekan-favicon.png")
link(rel="apple-touch-icon" href="/public/wekan-favicon.png")
link(rel="mask-icon" href="/public/wekan-150.svg")
link(rel="manifest" href="/public/wekan-manifest.json")
link(rel="shortcut icon" href="/wekan-favicon.png")
link(rel="apple-touch-icon" href="/wekan-favicon.png")
link(rel="mask-icon" href="/wekan-logo-150.svg")
link(rel="manifest" href="/wekan-manifest.json")
template(name="userFormsLayout")
section.auth-layout
if currentSetting.hideLogo
h1
br
br
else
h1.at-form-landing-logo
img(src="{{pathFor '/wekan-logo.png'}}" alt="Wekan")
section.auth-dialog
+Template.dynamic(template=content)
if currentSetting.displayAuthenticationMethod
+connectionMethod(authenticationMethod=currentSetting.defaultAuthenticationMethod)
div.at-form-lang
select.select-lang.js-userform-set-language
each languages
if isCurrentLanguage
option(value="{{tag}}" selected="selected") {{name}}
else
option(value="{{tag}}") {{name}}
if isLoading
+loader
else
+Template.dynamic(template=content)
if currentSetting.displayAuthenticationMethod
+connectionMethod(authenticationMethod=currentSetting.defaultAuthenticationMethod)
div.at-form-lang
select.select-lang.js-userform-set-language
each languages
if isCurrentLanguage
option(value="{{tag}}" selected="selected") {{name}}
else
option(value="{{tag}}") {{name}}
template(name="defaultLayout")
+header
@@ -64,3 +59,14 @@ template(name="message")
unless currentUser
with(pathFor route='atSignIn')
p {{{_ 'page-maybe-private' this}}}
template(name="loader")
h1.loadingText {{_ 'loading'}}
.lds-roller
div
div
div
div
div
div
div
+23 -10
View File
@@ -23,6 +23,7 @@ const validator = {
Template.userFormsLayout.onCreated(function() {
const instance = this;
instance.currentSetting = new ReactiveVar();
instance.isLoading = new ReactiveVar(false);
Meteor.subscribe('setting', {
onReady() {
@@ -47,6 +48,10 @@ Template.userFormsLayout.helpers({
return Template.instance().currentSetting.get();
},
isLoading() {
return Template.instance().isLoading.get();
},
afterBodyStart() {
return currentSetting.customHTMLafterBodyStart;
},
@@ -63,6 +68,8 @@ Template.userFormsLayout.helpers({
name = 'Brezhoneg';
} else if (lang.name === 'ig') {
name = 'Igbo';
} else if (lang.name === 'oc') {
name = 'Occitan';
}
return { tag, name };
}).sort(function(a, b) {
@@ -89,7 +96,11 @@ Template.userFormsLayout.events({
},
'click #at-btn'(event, instance) {
if (FlowRouter.getRouteName() === 'atSignIn') {
authentication(event, instance);
instance.isLoading.set(true);
authentication(event, instance)
.then(() => {
instance.isLoading.set(false);
});
}
},
});
@@ -104,11 +115,11 @@ async function authentication(event, instance) {
const match = $('#at-field-username_and_email').val();
const password = $('#at-field-password').val();
if (!match || !password) return;
if (!match || !password) return undefined;
const result = await getAuthenticationMethod(instance.currentSetting.get(), match);
if (result === 'password') return;
if (result === 'password') return undefined;
// Stop submit #at-pwd-form
event.preventDefault();
@@ -116,19 +127,21 @@ async function authentication(event, instance) {
switch (result) {
case 'ldap':
Meteor.loginWithLDAP(match, password, function() {
FlowRouter.go('/');
return new Promise((resolve) => {
Meteor.loginWithLDAP(match, password, function() {
resolve(FlowRouter.go('/'));
});
});
break;
case 'cas':
Meteor.loginWithCas(function() {
FlowRouter.go('/');
return new Promise((resolve) => {
Meteor.loginWithCas(match, password, function() {
resolve(FlowRouter.go('/'));
});
});
break;
default:
break;
return undefined;
}
}
+102 -2
View File
@@ -61,7 +61,7 @@ body
display: block
float: right
font-size: 24px
.modal-content-wide
width: 800px
min-height: 0px
@@ -290,7 +290,7 @@ kbd
// Implement a thiner close icon as suggested in
// https://github.com/FortAwesome/Font-Awesome/issues/1540#issuecomment-68689950
.fa.fa-times-thin:before
content: '\00d7';
content: '\00d7'
.fa.fa-globe.colorful, .fa.fa-bell.colorful
color: #4caf50
@@ -399,3 +399,103 @@ a
height: 37px
margin: 8px 10px 0 0
width: 50px
.select-authentication
width: 100%
.auth-layout
display: flex
flex-direction: column
align-items: center
justify-content: center
height: 100%
.auth-dialog
margin: 0 !important
.loadingText
text-align: center
.lds-roller
display: block
margin: auto
position: relative
width: 64px
height: 64px
div
animation: lds-roller 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite
transform-origin: 32px 32px
div:after
content: " "
display: block
position: absolute
width: 6px
height: 6px
border-radius: 50%
background: #dedede
margin: -3px 0 0 -3px
div:nth-child(1)
animation-delay: -0.036s
div:nth-child(1):after
top: 50px
left: 50px
div:nth-child(2)
animation-delay: -0.072s
div:nth-child(2):after
top: 54px
left: 45px
div:nth-child(3)
animation-delay: -0.108s
div:nth-child(3):after
top: 57px
left: 39px
div:nth-child(4)
animation-delay: -0.144s
div:nth-child(4):after
top: 58px
left: 32px
div:nth-child(5)
animation-delay: -0.18s
div:nth-child(5):after
top: 57px
left: 25px
div:nth-child(6)
animation-delay: -0.216s
div:nth-child(6):after
top: 54px
left: 19px
div:nth-child(7)
animation-delay: -0.252s
div:nth-child(7):after
top: 50px
left: 14px
div:nth-child(8)
animation-delay: -0.288s
div:nth-child(8):after
top: 45px
left: 10px
@keyframes lds-roller
0%
transform: rotate(0deg)
100%
transform: rotate(360deg)
@@ -64,8 +64,7 @@ template(name="boardTriggers")
div.trigger-text
| {{_'r-in-swimlane'}}
div.trigger-dropdown
input(id="create-swimlane-name",type=text,placeholder="{{_'r-swimlane-name'}}")
div.trigger-button.trigger-button-person.js-show-user-field
input(id="create-swimlane-name-2",type=text,placeholder="{{_'r-swimlane-name'}}")
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
@@ -39,15 +39,18 @@ BlazeComponent.extendComponent({
'click .js-add-moved-trigger' (event) {
const datas = this.data();
const desc = Utils.getTriggerActionDesc(event, this);
const swimlaneName = this.find('#create-swimlane-name').value;
const swimlaneName = this.find('#create-swimlane-name-2').value;
const actionSelected = this.find('#move-action').value;
const listName = this.find('#move-list-name').value;
const boardId = Session.get('currentBoard');
const divId = $(event.currentTarget.parentNode).attr('id');
const cardTitle = this.cardTitleFilters[divId];
if (actionSelected === 'moved-to') {
datas.triggerVar.set({
activityType: 'moveCard',
boardId,
listName,
cardTitle,
swimlaneName,
'oldListName': '*',
desc,
@@ -57,6 +60,7 @@ BlazeComponent.extendComponent({
datas.triggerVar.set({
activityType: 'moveCard',
boardId,
cardTitle,
swimlaneName,
'listName': '*',
'oldListName': listName,
+11 -3
View File
@@ -3,8 +3,13 @@ template(name="people")
unless currentUser.isAdmin
| {{_ 'error-notAuthorized'}}
else
.content-title
span {{_ 'people'}}
.content-title.ext-box
.ext-box-left
span {{_ 'people'}}
input#searchInput(placeholder="{{_ 'search'}}")
button#searchButton {{_ 'search'}}
.ext-box-right
span {{_ 'people-number'}} #{peopleNumber}
.content-body
.side-menu
ul
@@ -102,5 +107,8 @@ template(name="editUserPopup")
label
| {{_ 'password'}}
input.js-profile-password(type="password")
div.buttonsContainer
input.primary.wide(type="submit" value="{{_ 'save'}}")
div
input#deleteButton.primary.wide(type="button" value="{{_ 'delete'}}")
input.primary.wide(type="submit" value="{{_ 'save'}}")
+44 -1
View File
@@ -8,6 +8,8 @@ BlazeComponent.extendComponent({
this.error = new ReactiveVar('');
this.loading = new ReactiveVar(false);
this.people = new ReactiveVar(true);
this.findUsersOptions = new ReactiveVar({});
this.number = new ReactiveVar(0);
this.page = new ReactiveVar(1);
this.loadNextPageLocked = false;
@@ -26,6 +28,33 @@ BlazeComponent.extendComponent({
});
});
},
events() {
return [{
'click #searchButton'() {
this.filterPeople();
},
'keydown #searchInput'(event) {
if (event.keyCode === 13 && !event.shiftKey) {
this.filterPeople();
}
},
}];
},
filterPeople() {
const value = $('#searchInput').first().val();
if (value === '') {
this.findUsersOptions.set({});
} else {
const regex = new RegExp(value, 'i');
this.findUsersOptions.set({
$or: [
{ username: regex },
{ 'profile.fullname': regex },
{ 'emails.address': regex },
],
});
}
},
loadNextPage() {
if (this.loadNextPageLocked === false) {
this.page.set(this.page.get() + 1);
@@ -49,9 +78,14 @@ BlazeComponent.extendComponent({
this.loading.set(w);
},
peopleList() {
return Users.find({}, {
const users = Users.find(this.findUsersOptions.get(), {
fields: {_id: true},
});
this.number.set(users.count());
return users;
},
peopleNumber() {
return this.number.get();
},
}).register('people');
@@ -64,6 +98,7 @@ Template.peopleRow.helpers({
Template.editUserPopup.onCreated(function() {
this.authenticationMethods = new ReactiveVar([]);
this.errorMessage = new ReactiveVar('');
Meteor.call('getAuthenticationsEnabled', (_, result) => {
if (result) {
@@ -95,6 +130,9 @@ Template.editUserPopup.helpers({
const selected = Users.findOne(userId).authenticationMethod;
return selected === 'ldap';
},
errorMessage() {
return Template.instance().errorMessage.get();
},
});
BlazeComponent.extendComponent({
@@ -186,4 +224,9 @@ Template.editUserPopup.events({
});
} else Popup.close();
},
'click #deleteButton'() {
Users.remove(this.userId);
Popup.close();
},
});
@@ -13,3 +13,36 @@ table
tr:nth-child(even)
background-color: #dddddd;
.ext-box
display: flex;
flex-direction: row;
height: 34px;
.ext-box-left
display: flex;
width: 40%
span
vertical-align: center;
line-height: 34px;
margin-right: 10px;
input, button
margin: 0 10px 0 0;
padding: 0;
button
min-width: 60px;
.content-wrapper
margin-top: 10px
.buttonsContainer
display: flex
input
margin: 0
div
margin: auto
+3 -3
View File
@@ -134,7 +134,7 @@ template(name='announcementSettings')
template(name='layoutSettings')
ul#layout-setting.setting-detail
li.layout-form
//li.layout-form
.title {{_ 'hide-logo'}}
.form-group.flex
input.form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}")
@@ -154,7 +154,7 @@ template(name='layoutSettings')
li.layout-form
.title {{_ 'custom-product-name'}}
.form-group
input.form-control#product-name(type="text", placeholder="Wekan" value="{{currentSetting.productName}}")
input.form-control#product-name(type="text", placeholder="" value="{{currentSetting.productName}}")
li.layout-form
.title {{_ 'add-custom-html-after-body-start'}}
textarea#customHTMLafterBodyStart.form-control= currentSetting.customHTMLafterBodyStart
@@ -171,4 +171,4 @@ template(name='selectAuthenticationMethod')
if isSelected value
option(value="{{value}}" selected) {{_ value}}
else
option(value="{{value}}") {{_ value}}
option(value="{{value}}") {{_ value}}
+1 -1
View File
@@ -90,7 +90,7 @@ BlazeComponent.extendComponent({
},
inviteThroughEmail() {
const emails = $('#email-to-invite').val().trim().split('\n').join(',').split(',');
const emails = $('#email-to-invite').val().toLowerCase().trim().split('\n').join(',').split(',');
const boardsToInvite = [];
$('.js-toggle-board-choose .materialCheckBox.is-checked').each(function () {
boardsToInvite.push($(this).data('id'));
@@ -52,6 +52,10 @@
.main-body
padding: 0.1em 1em
-webkit-user-select: auto // Safari 3.1+
-moz-user-select: auto // Firefox 2+
-ms-user-select: auto // IE 10+
user-select: auto // Standard syntax
ul
li
+3 -1
View File
@@ -189,7 +189,9 @@ template(name="labelsWidget")
each currentBoard.labels
a.card-label(class="card-label-{{color}}"
class="{{#if currentUser.isNotCommentOnly}}js-label{{/if}}")
span.card-label-name= name
span.card-label-name
+viewer
= name
if currentUser.isBoardAdmin
a.card-label.add-label.js-add-label
i.fa.fa-plus
+51 -33
View File
@@ -1,38 +1,56 @@
template(name="archivesSidebar")
+basicTabs(tabs=tabs)
+tabContent(slug="cards")
each archivedCards
.minicard-wrapper.js-minicard
+minicard(this)
if currentUser.isBoardMember
if isArchiveReady.get
+basicTabs(tabs=tabs)
+tabContent(slug="cards")
p.quiet
a.js-restore-card {{_ 'restore'}}
a.js-restore-all-cards {{_ 'restore-all'}}
| -
a.js-delete-card {{_ 'delete'}}
if cardIsInArchivedList
p.quiet.small ({{_ 'warn-list-archived'}})
else
p.no-items-message {{_ 'no-archived-cards'}}
+tabContent(slug="lists")
ul.archived-lists
each archivedLists
li.archived-lists-item
a.js-delete-all-cards {{_ 'delete-all'}}
each archivedCards
.minicard-wrapper.js-minicard
+minicard(this)
if currentUser.isBoardMember
button.js-restore-list
i.fa.fa-undo
= title
else
li.no-items-message {{_ 'no-archived-lists'}}
p.quiet
a.js-restore-card {{_ 'restore'}}
| -
a.js-delete-card {{_ 'delete'}}
if cardIsInArchivedList
p.quiet.small ({{_ 'warn-list-archived'}})
else
p.no-items-message {{_ 'no-archived-cards'}}
+tabContent(slug="swimlanes")
ul.archived-lists
each archivedSwimlanes
li.archived-lists-item
if currentUser.isBoardMember
button.js-restore-swimlane
i.fa.fa-undo
= title
else
li.no-items-message {{_ 'no-archived-swimlanes'}}
+tabContent(slug="lists")
p.quiet
a.js-restore-all-lists {{_ 'restore-all'}}
| -
a.js-delete-all-lists {{_ 'delete-all'}}
ul.archived-lists
each archivedLists
li.archived-lists-item
= title
if currentUser.isBoardMember
p.quiet
a.js-restore-list {{_ 'restore'}}
| -
a.js-delete-list {{_ 'delete'}}
else
li.no-items-message {{_ 'no-archived-lists'}}
+tabContent(slug="swimlanes")
p.quiet
a.js-restore-all-swimlanes {{_ 'restore-all'}}
| -
a.js-delete-all-swimlanes {{_ 'delete-all'}}
ul.archived-lists
each archivedSwimlanes
li.archived-lists-item
= title
if currentUser.isBoardMember
p.quiet
a.js-restore-swimlane {{_ 'restore'}}
| -
a.js-delete-swimlane {{_ 'delete'}}
else
li.no-items-message {{_ 'no-archived-swimlanes'}}
else
+spinner
@@ -1,4 +1,26 @@
const subManager = new SubsManager();
BlazeComponent.extendComponent({
onCreated() {
this.isArchiveReady = new ReactiveVar(false);
// The pattern we use to manually handle data loading is described here:
// https://kadira.io/academy/meteor-routing-guide/content/subscriptions-and-data-management/using-subs-manager
// XXX The boardId should be readed from some sort the component "props",
// unfortunatly, Blaze doesn't have this notion.
this.autorun(() => {
const currentBoardId = Session.get('currentBoard');
if (!currentBoardId)
return;
const handle = subManager.subscribe('board', currentBoardId, true);
Tracker.nonreactive(() => {
Tracker.autorun(() => {
this.isArchiveReady.set( handle.ready() );
});
});
});
},
tabs() {
return [
{ name: TAPi18n.__('cards'), slug: 'cards' },
@@ -44,19 +66,67 @@ BlazeComponent.extendComponent({
card.restore();
}
},
'click .js-restore-all-cards'() {
this.archivedCards().forEach((card) => {
if(card.canBeRestored()){
card.restore();
}
});
},
'click .js-delete-card': Popup.afterConfirm('cardDelete', function() {
const cardId = this._id;
Cards.remove(cardId);
Popup.close();
}),
'click .js-delete-all-cards': Popup.afterConfirm('cardDelete', () => {
this.archivedCards().forEach((card) => {
Cards.remove(card._id);
});
Popup.close();
}),
'click .js-restore-list'() {
const list = this.currentData();
list.restore();
},
'click .js-restore-all-lists'() {
this.archivedLists().forEach((list) => {
list.restore();
});
},
'click .js-delete-list': Popup.afterConfirm('listDelete', function() {
this.remove();
Popup.close();
}),
'click .js-delete-all-lists': Popup.afterConfirm('listDelete', () => {
this.archivedLists().forEach((list) => {
list.remove();
});
Popup.close();
}),
'click .js-restore-swimlane'() {
const swimlane = this.currentData();
swimlane.restore();
},
'click .js-restore-all-swimlanes'() {
this.archivedSwimlanes().forEach((swimlane) => {
swimlane.restore();
});
},
'click .js-delete-swimlane': Popup.afterConfirm('swimlaneDelete', function() {
this.remove();
Popup.close();
}),
'click .js-delete-all-swimlanes': Popup.afterConfirm('swimlaneDelete', () => {
this.archivedSwimlanes().forEach((swimlane) => {
swimlane.remove();
});
Popup.close();
}),
}];
},
}).register('archivesSidebar');
@@ -6,7 +6,9 @@ template(name="customFieldsSidebar")
div.minicard
a.fa.fa-pencil.js-edit-custom-field.minicard-edit-button
div.minicard-title
| {{ name }} ({{ type }})
+viewer
=name
| ({{ type }})
if currentUser.isBoardMember
hr
@@ -2,7 +2,7 @@ BlazeComponent.extendComponent({
customFields() {
return CustomFields.find({
boardId: Session.get('currentBoard'),
boardIds: {$in: [Session.get('currentBoard')]},
});
},
@@ -103,7 +103,6 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
evt.preventDefault();
const data = {
boardId: Session.get('currentBoard'),
name: this.find('.js-field-name').value.trim(),
type: this.type.get(),
settings: this.getSettings(),
@@ -114,6 +113,7 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
// insert or update
if (!this.data()._id) {
data.boardIds = [Session.get('currentBoard')];
CustomFields.insert(data);
} else {
CustomFields.update(this.data()._id, {$set: data});
@@ -122,8 +122,16 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
Popup.back();
},
'click .js-delete-custom-field': Popup.afterConfirm('deleteCustomField', function() {
const customFieldId = this._id;
CustomFields.remove(customFieldId);
const customField = CustomFields.findOne(this._id);
if (customField.boardIds.length > 1) {
CustomFields.update(customField._id, {
$pull: {
boardIds: Session.get('currentBoard'),
},
});
} else {
CustomFields.remove(customField._id);
}
Popup.close();
}),
}];
@@ -1,6 +1,6 @@
template(name="searchSidebar")
form.js-search-term-form
input(type="text" name="searchTerm" placeholder="{{_ 'search-example'}}" autofocus)
input(type="text" name="searchTerm" placeholder="{{_ 'search-example'}}" autofocus dir="auto")
.list-body.js-perfect-scrollbar
.minicards.clearfix.js-minicards
each (results)
@@ -54,3 +54,7 @@ template(name="setSwimlaneColorPopup")
i.fa.fa-check
button.primary.confirm.js-submit {{_ 'save'}}
button.js-remove-color.negate.wide.right {{_ 'unset-color'}}
template(name="swimlaneDeletePopup")
p {{_ "swimlane-delete-pop"}}
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
+1 -1
View File
@@ -8,7 +8,7 @@ function currentListIsInThisSwimlane(swimlaneId) {
function currentCardIsInThisList(listId, swimlaneId) {
const currentCard = Cards.findOne(Session.get('currentCard'));
const currentUser = Meteor.user();
if (currentUser && currentUser.profile.boardView === 'board-view-swimlanes')
if (currentUser && currentUser.profile && currentUser.profile.boardView === 'board-view-swimlanes')
return currentCard && currentCard.listId === listId && currentCard.swimlaneId === swimlaneId;
else // Default view: board-view-lists
return currentCard && currentCard.listId === listId;
+4 -1
View File
@@ -53,7 +53,10 @@ template(name="editProfilePopup")
input.js-profile-email(type="email" value="{{emails.[0].address}}")
else
input.js-profile-email(type="email" value="{{emails.[0].address}}" readonly)
input.primary.wide(type="submit" value="{{_ 'save'}}")
div.buttonsContainer
input.primary.wide(type="submit" value="{{_ 'save'}}")
div
input#deleteButton.primary.wide(type="button" value="{{_ 'delete'}}")
template(name="changePasswordPopup")
+atForm(state='changePwd')
+7
View File
@@ -95,6 +95,11 @@ Template.editProfilePopup.events({
});
} else Popup.back();
},
'click #deleteButton'() {
Users.remove(Meteor.userId());
Popup.close();
AccountsTemplates.logout();
},
});
// XXX For some reason the useraccounts autofocus isnt working in this case.
@@ -114,6 +119,8 @@ Template.changeLanguagePopup.helpers({
name = 'Brezhoneg';
} else if (lang.name === 'ig') {
name = 'Igbo';
} else if (lang.name === 'oc') {
name = 'Occitan';
}
return { tag, name };
}).sort(function (a, b) {
+1 -1
View File
@@ -135,6 +135,6 @@ $(document).on('click', (evt) => {
}
});
$(document).on('click', 'a[href=#]', (evt) => {
$(document).on('click', 'a[href=\\#]', (evt) => {
evt.preventDefault();
});
+1 -1
View File
@@ -184,7 +184,7 @@ window.Popup = new class {
// positives.
const title = TAPi18n.__(translationKey);
// when popup showed as full of small screen, we need a default header to clearly see [X] button
const defaultTitle = Utils.isMiniScreen() ? 'Wekan' : false;
const defaultTitle = Utils.isMiniScreen() ? '' : false;
return title !== translationKey ? title : defaultTitle;
};
}
+109 -116
View File
@@ -90,8 +90,8 @@ services:
wekandb:
#-------------------------------------------------------------------------------------
# ==== MONGODB AND METEOR VERSION ====
# a) CURRENTLY BROKEN: For Wekan Meteor 1.8.x version at meteor-1.8 branch, use mongo 4.x
# image: mongo:4.0.4
# a) For Wekan Meteor 1.8.x version at meteor-1.8 branch, use mongo 4.x
#image: mongo:4.0.4
# b) For Wekan Meteor 1.6.x version at master/devel/edge branches.
# Only for Snap and Sandstorm while they are not upgraded yet to Meteor 1.8.x
image: mongo:3.2.21
@@ -110,12 +110,12 @@ services:
wekan:
#-------------------------------------------------------------------------------------
# ==== MONGODB AND METEOR VERSION ====
# a) CURRENTLY BROKEN: For Wekan Meteor 1.8.x version at meteor-1.8 branch,
# a) For Wekan Meteor 1.8.x version at meteor-1.8 branch,
# using https://quay.io/wekan/wekan automatic builds
# image: quay.io/wekan/wekan:meteor-1.8
#image: quay.io/wekan/wekan:meteor-1.8
# b) For Wekan Meteor 1.6.x version at master/devel/edge branches.
# Only for Snap and Sandstorm while they are not upgraded yet to Meteor 1.8.x
image: quay.io/wekan/wekan
image: quay.io/wekan/wekan:master
# c) Using specific Meteor 1.6.x version tag:
# image: quay.io/wekan/wekan:v1.95
# c) Using Docker Hub automatic builds https://hub.docker.com/r/wekanteam/wekan
@@ -169,8 +169,9 @@ services:
# For SSL in email, change smtp:// to smtps://
# NOTE: Special characters need to be url-encoded in MAIL_URL.
# You can encode those characters for example at: https://www.urlencoder.org
- MAIL_URL=smtp://user:pass@mailserver.example.com:25/
- MAIL_FROM='Example Wekan Support <support@example.com>'
#- MAIL_URL=smtp://user:pass@mailserver.example.com:25/
- MAIL_URL=smtp://<mail_url>:25/?ignoreTLS=true&tls={rejectUnauthorized:false}
- MAIL_FROM=Wekan Notifications <noreply.wekan@mydomain.com>
#---------------------------------------------------------------
# ==== OPTIONAL: MONGO OPLOG SETTINGS =====
# https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-378343587
@@ -221,6 +222,16 @@ services:
# If you disable Wekan API with false, Export Board does not work.
- WITH_API=true
#---------------------------------------------------------------
# ==== PASSWORD BRUTE FORCE PROTECTION ====
#https://atmospherejs.com/lucasantoniassi/accounts-lockout
#Defaults below. Uncomment to change. wekan/server/accounts-lockout.js
#- ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3
#- ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60
#- ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15
#---------------------------------------------------------------
# ==== EMAIL NOTIFICATION TIMEOUT, ms =====
# Defaut: 30000 ms = 30s
#- EMAIL_NOTIFICATION_TIMEOUT=30000
@@ -228,6 +239,10 @@ services:
# ==== CORS =====
# CORS: Set Access-Control-Allow-Origin header.
#- CORS=*
# CORS_ALLOW_HEADERS: Set Access-Control-Allow-Headers header. "Authorization,Content-Type" is required for cross-origin use of the API.
#- CORS_ALLOW_HEADERS=Authorization,Content-Type
# CORS_EXPOSE_HEADERS: Set Access-Control-Expose-Headers header. This is not needed for typical CORS situations
#- CORS_EXPOSE_HEADERS=*
#-----------------------------------------------------------------
# ==== MATOMO INTEGRATION ====
# Optional: Integration with Matomo https://matomo.org that is installed to your server
@@ -262,6 +277,8 @@ services:
# 2) Configure the environment variables. This differs slightly
# by installation type, but make sure you have the following:
#- OAUTH2_ENABLED=true
# OAuth2 login style: popup or redirect.
#- OAUTH2_LOGIN_STYLE=redirect
# Application GUID captured during app registration:
#- OAUTH2_CLIENT_ID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
# Secret key generated during app registration:
@@ -282,6 +299,8 @@ services:
# ==== OAUTH2 KEYCLOAK ====
# https://github.com/wekan/wekan/wiki/Keycloak <== MAPPING INFO, REQUIRED
#- OAUTH2_ENABLED=true
# OAuth2 login style: popup or redirect.
#- OAUTH2_LOGIN_STYLE=redirect
#- OAUTH2_CLIENT_ID=<Keycloak create Client ID>
#- OAUTH2_SERVER_URL=<Keycloak server name>/auth
#- OAUTH2_AUTH_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/auth
@@ -295,6 +314,8 @@ services:
# Enable the OAuth2 connection
#- OAUTH2_ENABLED=true
# OAuth2 docs: https://github.com/wekan/wekan/wiki/OAuth2
# OAuth2 login style: popup or redirect.
#- OAUTH2_LOGIN_STYLE=redirect
# OAuth2 Client ID.
#- OAUTH2_CLIENT_ID=abcde12345
# OAuth2 Secret.
@@ -307,6 +328,10 @@ services:
#- OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
# OAuth2 Token Endpoint.
#- OAUTH2_TOKEN_ENDPOINT=/oauth/token
# OAUTH2 ID Token Whitelist Fields.
#- OAUTH2_ID_TOKEN_WHITELIST_FIELDS=[]
# OAUTH2 Request Permissions.
#- OAUTH2_REQUEST_PERMISSIONS='openid profile email'
# OAuth2 ID Mapping
#- OAUTH2_ID_MAP=
# OAuth2 Username Mapping
@@ -316,191 +341,153 @@ services:
# OAuth2 Email Mapping
#- OAUTH2_EMAIL_MAP=
#-----------------------------------------------------------------
# ==== LDAP ====
# ==== LDAP: UNCOMMENT ALL TO ENABLE LDAP ====
# https://github.com/wekan/wekan/wiki/LDAP
# For Snap settings see https://github.com/wekan/wekan-snap/wiki/Supported-settings-keys
# Most settings work both on Snap and Docker below.
# Note: Do not add single quotes '' to variables. Having spaces still works without quotes where required.
#
# DEFAULT_AUTHENTICATION_METHOD : The default authentication method used if a user does not exist to create and authenticate. Can be set as ldap.
# example : DEFAULT_AUTHENTICATION_METHOD=ldap
#- DEFAULT_AUTHENTICATION_METHOD=
# The default authentication method used if a user does not exist to create and authenticate. Can be set as ldap.
#- DEFAULT_AUTHENTICATION_METHOD=ldap
#
# LDAP_ENABLE : Enable or not the connection by the LDAP
# example : LDAP_ENABLE=true
#- LDAP_ENABLE=false
# Enable or not the connection by the LDAP
#- LDAP_ENABLE=true
#
# LDAP_PORT : The port of the LDAP server
# example : LDAP_PORT=389
# The port of the LDAP server
#- LDAP_PORT=389
#
# LDAP_HOST : The host server for the LDAP server
# example : LDAP_HOST=localhost
#- LDAP_HOST=
# The host server for the LDAP server
#- LDAP_HOST=localhost
#
# LDAP_BASEDN : The base DN for the LDAP Tree
# example : LDAP_BASEDN=ou=user,dc=example,dc=org
#- LDAP_BASEDN=
# The base DN for the LDAP Tree
#- LDAP_BASEDN=ou=user,dc=example,dc=org
#
# LDAP_LOGIN_FALLBACK : Fallback on the default authentication method
# example : LDAP_LOGIN_FALLBACK=true
# Fallback on the default authentication method
#- LDAP_LOGIN_FALLBACK=false
#
# LDAP_RECONNECT : Reconnect to the server if the connection is lost
# example : LDAP_RECONNECT=false
# Reconnect to the server if the connection is lost
#- LDAP_RECONNECT=true
#
# LDAP_TIMEOUT : Overall timeout, in milliseconds
# example : LDAP_TIMEOUT=12345
# Overall timeout, in milliseconds
#- LDAP_TIMEOUT=10000
#
# LDAP_IDLE_TIMEOUT : Specifies the timeout for idle LDAP connections in milliseconds
# example : LDAP_IDLE_TIMEOUT=12345
# Specifies the timeout for idle LDAP connections in milliseconds
#- LDAP_IDLE_TIMEOUT=10000
#
# LDAP_CONNECT_TIMEOUT : Connection timeout, in milliseconds
# example : LDAP_CONNECT_TIMEOUT=12345
# Connection timeout, in milliseconds
#- LDAP_CONNECT_TIMEOUT=10000
#
# LDAP_AUTHENTIFICATION : If the LDAP needs a user account to search
# example : LDAP_AUTHENTIFICATION=true
#- LDAP_AUTHENTIFICATION=false
# If the LDAP needs a user account to search
#- LDAP_AUTHENTIFICATION=true
#
# LDAP_AUTHENTIFICATION_USERDN : The search user DN
# example : LDAP_AUTHENTIFICATION_USERDN=cn=admin,dc=example,dc=org
#- LDAP_AUTHENTIFICATION_USERDN=
# The search user DN
#- LDAP_AUTHENTIFICATION_USERDN=cn=wekan_adm,ou=serviceaccounts,ou=admin,ou=prod,dc=mydomain,dc=com
#
# LDAP_AUTHENTIFICATION_PASSWORD : The password for the search user
# example : AUTHENTIFICATION_PASSWORD=admin
#- LDAP_AUTHENTIFICATION_PASSWORD=
# The password for the search user
#- LDAP_AUTHENTIFICATION_PASSWORD=pwd
#
# LDAP_LOG_ENABLED : Enable logs for the module
# example : LDAP_LOG_ENABLED=true
#- LDAP_LOG_ENABLED=false
# Enable logs for the module
#- LDAP_LOG_ENABLED=true
#
# LDAP_BACKGROUND_SYNC : If the sync of the users should be done in the background
# example : LDAP_BACKGROUND_SYNC=true
# If the sync of the users should be done in the background
#- LDAP_BACKGROUND_SYNC=false
#
# LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds
# example : LDAP_BACKGROUND_SYNC_INTERVAL=12345
# At which interval does the background task sync in milliseconds
#- LDAP_BACKGROUND_SYNC_INTERVAL=100
#
# LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED :
# example : LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=true
#- LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false
#
# LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS :
# example : LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=true
#- LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=false
#
# LDAP_ENCRYPTION : If using LDAPS
# example : LDAP_ENCRYPTION=ssl
# If using LDAPS: LDAP_ENCRYPTION=ssl
#- LDAP_ENCRYPTION=false
#
# LDAP_CA_CERT : The certification for the LDAPS server. Certificate needs to be included in this docker-compose.yml file.
# example : LDAP_CA_CERT=-----BEGIN CERTIFICATE-----MIIE+zCCA+OgAwIBAgIkAhwR/6TVLmdRY6hHxvUFWc0+Enmu/Hu6cj+G2FIdAgIC...-----END CERTIFICATE-----
#- LDAP_CA_CERT=
# The certification for the LDAPS server. Certificate needs to be included in this docker-compose.yml file.
#- LDAP_CA_CERT=-----BEGIN CERTIFICATE-----MIIE+G2FIdAgIC...-----END CERTIFICATE-----
#
# LDAP_REJECT_UNAUTHORIZED : Reject Unauthorized Certificate
# example : LDAP_REJECT_UNAUTHORIZED=true
# Reject Unauthorized Certificate
#- LDAP_REJECT_UNAUTHORIZED=false
#
# LDAP_USER_SEARCH_FILTER : Optional extra LDAP filters. Don't forget the outmost enclosing parentheses if needed
# example : LDAP_USER_SEARCH_FILTER=
# Option to login to the LDAP server with the user's own username and password, instead of an administrator key. Default: false (use administrator key).
#- LDAP_USER_AUTHENTICATION="true"
#
# Optional extra LDAP filters. Don't forget the outmost enclosing parentheses if needed
#- LDAP_USER_SEARCH_FILTER=
#
# LDAP_USER_SEARCH_SCOPE : base (search only in the provided DN), one (search only in the provided DN and one level deep), or sub (search the whole subtree)
# example : LDAP_USER_SEARCH_SCOPE=one
#- LDAP_USER_SEARCH_SCOPE=
# base (search only in the provided DN), one (search only in the provided DN and one level deep), or sub (search the whole subtree)
#- LDAP_USER_SEARCH_SCOPE=one
#
# LDAP_USER_SEARCH_FIELD : Which field is used to find the user
# example : LDAP_USER_SEARCH_FIELD=uid
#- LDAP_USER_SEARCH_FIELD=
# Which field is used to find the user, like uid / sAMAccountName
#- LDAP_USER_SEARCH_FIELD=sAMAccountName
#
# LDAP_SEARCH_PAGE_SIZE : Used for pagination (0=unlimited)
# example : LDAP_SEARCH_PAGE_SIZE=12345
# Used for pagination (0=unlimited)
#- LDAP_SEARCH_PAGE_SIZE=0
#
# LDAP_SEARCH_SIZE_LIMIT : The limit number of entries (0=unlimited)
# example : LDAP_SEARCH_SIZE_LIMIT=12345
# The limit number of entries (0=unlimited)
#- LDAP_SEARCH_SIZE_LIMIT=0
#
# LDAP_GROUP_FILTER_ENABLE : Enable group filtering
# example : LDAP_GROUP_FILTER_ENABLE=true
# Enable group filtering
#- LDAP_GROUP_FILTER_ENABLE=false
#
# LDAP_GROUP_FILTER_OBJECTCLASS : The object class for filtering
# example : LDAP_GROUP_FILTER_OBJECTCLASS=group
# The object class for filtering. Example: group
#- LDAP_GROUP_FILTER_OBJECTCLASS=
#
# LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE :
# example :
#- LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE=
#
# LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE :
# example :
#- LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE=
#
# LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT :
# example :
#- LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT=
#
# LDAP_GROUP_FILTER_GROUP_NAME :
# example :
#- LDAP_GROUP_FILTER_GROUP_NAME=
#
# LDAP_UNIQUE_IDENTIFIER_FIELD : This field is sometimes class GUID (Globally Unique Identifier)
# example : LDAP_UNIQUE_IDENTIFIER_FIELD=guid
# LDAP_UNIQUE_IDENTIFIER_FIELD : This field is sometimes class GUID (Globally Unique Identifier). Example: guid
#- LDAP_UNIQUE_IDENTIFIER_FIELD=
#
# LDAP_UTF8_NAMES_SLUGIFY : Convert the username to utf8
# example : LDAP_UTF8_NAMES_SLUGIFY=false
#- LDAP_UTF8_NAMES_SLUGIFY=true
#
# LDAP_USERNAME_FIELD : Which field contains the ldap username
# example : LDAP_USERNAME_FIELD=username
#- LDAP_USERNAME_FIELD=
# LDAP_USERNAME_FIELD : Which field contains the ldap username. username / sAMAccountName
#- LDAP_USERNAME_FIELD=sAMAccountName
#
# LDAP_FULLNAME_FIELD : Which field contains the ldap fullname
# example : LDAP_FULLNAME_FIELD=fullname
#- LDAP_FULLNAME_FIELD=
# LDAP_FULLNAME_FIELD : Which field contains the ldap fullname. fullname / sAMAccountName
#- LDAP_FULLNAME_FIELD=fullname
#
# LDAP_MERGE_EXISTING_USERS :
# example : LDAP_MERGE_EXISTING_USERS=true
#- LDAP_MERGE_EXISTING_USERS=false
#
# LDAP_EMAIL_MATCH_ENABLE : allow existing account matching by e-mail address when username does not match
# example: LDAP_EMAIL_MATCH_ENABLE=true
#- LDAP_EMAIL_MATCH_ENABLE=false
# Allow existing account matching by e-mail address when username does not match
#- LDAP_EMAIL_MATCH_ENABLE=true
#
# LDAP_EMAIL_MATCH_REQUIRE : require existing account matching by e-mail address when username does match
# example: LDAP_EMAIL_MATCH_REQUIRE=true
#- LDAP_EMAIL_MATCH_REQUIRE=false
#- LDAP_EMAIL_MATCH_REQUIRE=true
#
# LDAP_EMAIL_MATCH_VERIFIED : require existing account email address to be verified for matching
# example: LDAP_EMAIL_MATCH_VERIFIED=true
#- LDAP_EMAIL_MATCH_VERIFIED=false
#- LDAP_EMAIL_MATCH_VERIFIED=true
#
# LDAP_EMAIL_FIELD : which field contains the LDAP e-mail address
# example: LDAP_EMAIL_FIELD=mail
#- LDAP_EMAIL_FIELD=
#- LDAP_EMAIL_FIELD=mail
#-----------------------------------------------------------------
# LDAP_SYNC_USER_DATA :
# example : LDAP_SYNC_USER_DATA=true
#- LDAP_SYNC_USER_DATA=false
#
# LDAP_SYNC_USER_DATA_FIELDMAP :
# example : LDAP_SYNC_USER_DATA_FIELDMAP={"cn":"name", "mail":"email"}
#- LDAP_SYNC_USER_DATA_FIELDMAP=
#- LDAP_SYNC_USER_DATA_FIELDMAP={"cn":"name", "mail":"email"}
#
# LDAP_SYNC_GROUP_ROLES :
# example :
#- LDAP_SYNC_GROUP_ROLES=
#- LDAP_SYNC_GROUP_ROLES=''
#
# LDAP_DEFAULT_DOMAIN : The default domain of the ldap it is used to create email if the field is not map correctly with the LDAP_SYNC_USER_DATA_FIELDMAP
# The default domain of the ldap it is used to create email if the field is not map correctly with the LDAP_SYNC_USER_DATA_FIELDMAP
# example :
#- LDAP_DEFAULT_DOMAIN=
#- LDAP_DEFAULT_DOMAIN=mydomain.com
#
# Enable/Disable syncing of admin status based on ldap groups:
#- LDAP_SYNC_ADMIN_STATUS=true
#
# Comma separated list of admin group names to sync.
#- LDAP_SYNC_ADMIN_GROUPS=group1,group2
#---------------------------------------------------------------------
# Login to LDAP automatically with HTTP header.
# In below example for siteminder, at right side of = is header name.
#- HEADER_LOGIN_ID=HEADERUID
#- HEADER_LOGIN_FIRSTNAME=HEADERFIRSTNAME
#- HEADER_LOGIN_LASTNAME=HEADERLASTNAME
#- HEADER_LOGIN_EMAIL=HEADEREMAILADDRESS
#---------------------------------------------------------------------
# ==== LOGOUT TIMER, probably does not work yet ====
# LOGOUT_WITH_TIMER : Enables or not the option logout with timer
@@ -562,9 +549,15 @@ services:
# - 80:80
# - 443:443
# volumes:
# - ./nginx/ssl:/etc/nginx/ssl/
# - ./nginx/nginx.conf:/etc/nginx/nginx.conf
# - ./nginx/ssl:/etc/nginx/ssl/:ro
# - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
## Alternative volume config:
## volumes:
## - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
## - ./nginx/ssl/ssl.conf:/etc/nginx/conf.d/ssl/ssl.conf:ro
## - ./nginx/ssl/testvm-ehu.crt:/etc/nginx/conf.d/ssl/certs/mycert.crt:ro
## - ./nginx/ssl/testvm-ehu.key:/etc/nginx/conf.d/ssl/certs/mykey.key:ro
## - ./nginx/ssl/pphrase:/etc/nginx/conf.d/ssl/pphrase:ro
volumes:
wekan-db:
+22
View File
@@ -0,0 +1,22 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
OWNERS
+13
View File
@@ -0,0 +1,13 @@
name: wekan
version: 1.0.0
appVersion: 2.x.x
kubeVersion: "^1.8.0-0"
description: Open Source kanban
home: https://wekan.github.io/
icon: https://wekan.github.io/wekan-logo.svg
sources:
- https://github.com/wekan/wekan
maintainers:
- name: technotaff
email: github@randall.cc
engine: gotpl
+4
View File
@@ -0,0 +1,4 @@
approvers:
- technotaff
reviewers:
- technotaff
+58
View File
@@ -0,0 +1,58 @@
# Helm Chart for Wekan
## Features
o Uses a MongoDB replica set by default - this allows fault-tolerant
and scalable MongoDB deployment (or just set the replicas to 1 for
a single server install)
o Optional Horizontal Pod Autoscaler (HPA), so that your Wekan pods
will scale automatically with increased CPU load.
## The configurable values (values.yaml)
Scaling Wekan:
```yaml
## Configuration for wekan component
##
replicaCount: 1
```
**replicaCount** Will set the initial number of replicas for the Wekan pod (and container)
```yaml
## Configure an horizontal pod autoscaler
##
autoscaling:
enabled: true
config:
minReplicas: 1
maxReplicas: 16
## Note: when setting this, a `resources.request.cpu` is required. You
## likely want to set it to `1` or some lower value.
##
targetCPUUtilizationPercentage: 80
```
This section (if *enabled* is set to **true**) will enable the Kubernetes Horizontal Pod Autoscaler (HPA).
**minReplicas:** this is the minimum number of pods to scale down to (We recommend setting this to the same value as **replicaCount**).
**maxReplicas:** this is the maximum number of pods to scale up to.
**targetCPUUtilizationPercentage:** This is the CPU at which the HPA will scale-out the number of Wekan pods.
```yaml
mongodb-replicaset:
enabled: true
replicas: 3
replicaSetName: rs0
securityContext:
runAsUser: 1000
fsGroup: 1000
runAsNonRoot: true
```
This section controls the scale of the MongoDB redundant Replica Set.
**replicas:** This is the number of MongoDB instances to include in the set. You can set this to 1 for a single server - this will still allow you to scale-up later with a helm upgrade.
+1
View File
@@ -0,0 +1 @@
+5
View File
@@ -0,0 +1,5 @@
dependencies:
- name: mongodb-replicaset
version: 3.6.x
repository: "https://kubernetes-charts.storage.googleapis.com/"
condition: mongodb-replicaset.enabled
+19
View File
@@ -0,0 +1,19 @@
1. Get the application URL by running these commands:
{{- if .Values.ingress.enabled }}
{{- range .Values.ingress.hosts }}
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.ingress.path }}
{{- end }}
{{- else if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "wekan.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get svc -w {{ template "wekan.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "wekan.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "wekan.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl port-forward $POD_NAME 8080:8080
{{- end }}
+82
View File
@@ -0,0 +1,82 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "wekan.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "wekan.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create a default fully qualified name for the wekan data app.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "wekan.localdata.fullname" -}}
{{- if .Values.localdata.fullnameOverride -}}
{{- .Values.localdata.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- printf "%s-localdata" .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s-localdata" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "wekan.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create the name of the service account to use for the api component
*/}}
{{- define "wekan.serviceAccountName" -}}
{{- if .Values.serviceAccounts.create -}}
{{ default (include "wekan.fullname" .) .Values.serviceAccounts.name }}
{{- else -}}
{{ default "default" .Values.serviceAccounts.name }}
{{- end -}}
{{- end -}}
{{/*
Create a default fully qualified mongodb-replicaset name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "wekan.mongodb-replicaset.fullname" -}}
{{- $name := default "mongodb-replicaset" (index .Values "mongodb-replicaset" "nameOverride") -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create the MongoDB URL. If MongoDB is installed as part of this chart, use k8s service discovery,
else use user-provided URL.
*/}}
{{- define "mongodb-replicaset.url" -}}
{{- if (index .Values "mongodb-replicaset" "enabled") -}}
{{- $count := (int (index .Values "mongodb-replicaset" "replicas")) -}}
{{- $release := .Release.Name -}}
mongodb://{{- range $v := until $count }}{{ $release }}-mongodb-replicaset-{{ $v }}.{{ $release }}-mongodb-replicaset:27017{{ if ne $v (sub $count 1) }},{{- end -}}{{- end -}}?replicaSet={{ index .Values "mongodb-replicaset" "replicaSetName" }}
{{- else -}}
{{- index .Values "mongodb-replicaset" "url" -}}
{{- end -}}
{{- end -}}
+58
View File
@@ -0,0 +1,58 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "wekan.fullname" . }}
labels:
app: {{ template "wekan.name" . }}
chart: {{ template "wekan.chart" . }}
component: wekan
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ template "wekan.name" . }}
component: wekan
release: {{ .Release.Name }}
template:
metadata:
annotations:
labels:
app: {{ template "wekan.name" . }}
component: wekan
release: {{ .Release.Name }}
spec:
serviceAccountName: {{ template "wekan.serviceAccountName" . }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
terminationMessagePolicy: FallbackToLogsOnError
ports:
- name: http
containerPort: 8080
env:
- name: ROOT_URL
value: {{ .Values.root_url | default "https://wekan.local" | quote }}
- name: MONGO_URL
value: "{{ template "mongodb-replicaset.url" . }}"
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 60
resources:
{{ toYaml .Values.resources | indent 12 }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- if .Values.affinity }}
affinity:
{{ toYaml .Values.affinity | indent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
+18
View File
@@ -0,0 +1,18 @@
{{- if .Values.autoscaling.enabled -}}
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: {{ template "wekan.fullname" . }}
labels:
app: {{ template "wekan.name" . }}
chart: {{ template "wekan.chart" . }}
component: wekan
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ template "wekan.fullname" . }}
{{ toYaml .Values.autoscaling.config | indent 2 }}
{{- end -}}
+40
View File
@@ -0,0 +1,40 @@
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "wekan.fullname" . -}}
{{- $servicePort := .Values.service.port -}}
{{- $ingressPath := .Values.ingress.path -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
app: {{ template "wekan.name" . }}
chart: {{ template "wekan.chart" . }}
component: wekan
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
{{- with .Values.ingress.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ . }}
http:
paths:
- path: {{ $ingressPath }}
backend:
serviceName: {{ $fullName }}
servicePort: http
{{- end }}
{{- end }}
+14
View File
@@ -0,0 +1,14 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ template "wekan.fullname" . }}
labels:
app: {{ template "wekan.name" . }}
chart: {{ template "wekan.chart" . }}
component: wekan
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
type: Opaque
data:
accessKey: {{ .Values.credentials.accessKey | b64enc }}
secretKey: {{ .Values.credentials.secretKey | b64enc }}
+25
View File
@@ -0,0 +1,25 @@
apiVersion: v1
kind: Service
metadata:
{{- if .Values.service.annotations }}
annotations:
{{ toYaml .Values.service.annotations | indent 4 }}
{{- end }}
name: {{ template "wekan.fullname" . }}
labels:
app: {{ template "wekan.name" . }}
chart: {{ template "wekan.chart" . }}
component: wekan
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
app: {{ template "wekan.name" . }}
component: wekan
release: {{ .Release.Name }}
+12
View File
@@ -0,0 +1,12 @@
{{- if .Values.serviceAccounts.create }}
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: {{ template "wekan.name" . }}
chart: {{ template "wekan.chart" . }}
component: wekan
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
name: {{ template "wekan.serviceAccountName" . }}
{{- end }}
@@ -0,0 +1,27 @@
apiVersion: v1
kind: Pod
metadata:
name: {{ template "wekan.fullname" . }}-test
annotations:
"helm.sh/hook": test-success
spec:
containers:
- name: {{ template "wekan.fullname" . }}-test
imagePullPolicy: IfNotPresent
image: "docker.io/mesosphere/aws-cli:1.14.5"
command:
- sh
- -c
- aws s3 --endpoint-url=http://{{ include "wekan.fullname" . }} --region=us-east-1 ls
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: {{ template "wekan.fullname" . }}
key: accessKey
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: {{ template "wekan.fullname" . }}
key: secretKey
restartPolicy: Never
+110
View File
@@ -0,0 +1,110 @@
# ------------------------------------------------------------------------------
# Wekan:
# ------------------------------------------------------------------------------
## Define serviceAccount names to create or use. Defaults to component's fully
## qualified name.
##
serviceAccounts:
create: true
name: ""
## Wekan image configuration
##
image:
repository: quay.io/wekan/wekan
tag: latest
pullPolicy: IfNotPresent
## Configuration for wekan component
##
replicaCount: 1
## Specify wekan credentials
##
credentials:
accessKey: access-key
secretKey: secret-key
## Specify additional environmental variables for the Deployment
##
env: {}
service:
type: NodePort
port: 80
annotations: {}
# prometheus.io/scrape: "true"
# prometheus.io/port: "8000"
# prometheus.io/path: "/_/monitoring/metrics"
## Comma-separated string of allowed virtual hosts for external access.
## This should match the ingress hosts
##
endpoint: wekan.local
ingress:
enabled: true
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
path: /*
# This must match 'endpoint', unless your client supports different
# hostnames.
hosts: [ wekan.local ]
# - wekan.local
tls: []
# - secretName: wekan-example-tls
# hosts:
# - wekan-example.local
resources:
requests:
memory: 128Mi
cpu: 300m
limits:
memory: 1Gi
cpu: 500m
## Node labels for pod assignment
## ref: https://kubernetes.io/docs/user-guide/node-selection/
##
nodeSelector: {}
## Tolerations for pod assignment
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
##
tolerations: []
## Affinity for pod assignment
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
##
affinity: {}
## Configure an horizontal pod autoscaler
##
autoscaling:
enabled: true
config:
minReplicas: 1
maxReplicas: 16
## Note: when setting this, a `resources.request.cpu` is required. You
## likely want to set it to `1` or some lower value.
##
targetCPUUtilizationPercentage: 80
# ------------------------------------------------------------------------------
# MongoDB:
# ------------------------------------------------------------------------------
mongodb-replicaset:
enabled: true
replicas: 3
replicaSetName: rs0
securityContext:
runAsUser: 1000
fsGroup: 1000
runAsNonRoot: true
#image:
# tag: 3.2.21
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
@@ -676,5 +682,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "добави етикет '%s'",
"activity-removed-label-card": "премахна етикет '%s'",
"activity-delete-attach-card": "изтри прикачения файл",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Правило",
"r-add-trigger": "Добави спусък",
"r-add-action": "Добави действие",
@@ -676,5 +682,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
@@ -676,5 +682,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
@@ -676,5 +682,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+57 -44
View File
@@ -1,37 +1,41 @@
{
"accept": "Přijmout",
"act-activity-notify": "Notifikace aktivit",
"act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-completeChecklist": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
"act-addBoardMember": "added member __member__ to board __board__",
"act-archivedBoard": "Board __board__ moved to Archive",
"act-archivedCard": "Card __card__ at list __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
"act-archivedList": "List __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
"act-archivedSwimlane": "Swimlane __swimlane__ at board __board__ moved to Archive",
"act-importBoard": "imported board __board__",
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addAttachment": "přidal(a) přílohu __attachment__ na kartu __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-deleteAttachment": "smazal(a) přílohu __attachment__ na kartě __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-addSubtask": "přidal(a) podúkol __subtask__ na kartu __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-addLabel": "Přídán štítek __label__ na kartu __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-addedLabel": "Přídán štítek __label__ na kartu __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-removeLabel": "Odstraněn štítek __label__ na kartě __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-removedLabel": "Odstraněn štítek __label__ na kartě __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-addChecklist": "přidal(a) zaškrtávací seznam __checklist__ na kartu __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-addChecklistItem": "přidal(a) položku zaškrtávacího seznamu __checklistItem__ do zaškrtávacího seznamu __checklist__ na kartě __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-removeChecklist": "smazal(a) zaškrtávací seznam __checklist__ na kartě __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-removeChecklistItem": "smazal(a) položku zaškrtávacího seznamu __checklistItem__ ze zaškrtávacího seznamu __checklist__ na kartě __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-checkedItem": "zaškrtl(a) __checklistItem__ na zaškrtávacím seznamu __checklist__ na kartě __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-uncheckedItem": "zrušil(a) zaškrtnutí __checklistItem__ na zaškrtávacím seznamu __checklist__ na kartě __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-completeChecklist": "dokončil(a) zaškrtávací seznam __checklist__ na kartě __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-uncompleteChecklist": "zrušil(a) dokončení zaškrtávacího seznamu __checklist__ na kartě __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-addComment": "přidal(a) komentář na kartě __card__: __comment__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-createBoard": "přidal(a) tablo __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "přidal(a) kartu __card__ do sloupce __list__ ve swimlane __swimlane__ na tablu __board__",
"act-createCustomField": "vytvořil(a) vlastní pole __customField__ na kartu __card__ do sloupce __list__ ve swimlane __swimlane__ na tablu __board__",
"act-createList": "přidal(a) sloupec __list__ do tabla __board__",
"act-addBoardMember": "přidal(a) člena __member__ do tabla __board__",
"act-archivedBoard": "Tablo __board__ přesunuto do Archivu",
"act-archivedCard": "Karta __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__ přesunuta do Archivu",
"act-archivedList": "Sloupec __list__ ve swimlane __swimlane__ na tablu __board__ přesunut do Archivu",
"act-archivedSwimlane": "Swimlane __swimlane__ na tablu __board__ přesunut do Archivu",
"act-importBoard": "importoval(a) tablo __board__",
"act-importCard": "importoval(a) karta __card__ do sloupce __list__ ve swimlane __swimlane__ na tablu __board__",
"act-importList": "importoval(a) sloupec __list__ do swimlane __swimlane__ na tablu __board__",
"act-joinMember": "přidal(a) člena __member__ na kartu __card__ v seznamu __list__ ve swimlane __swimlane__ na tablu __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "přesunul(a) kartu __card__ ze sloupce __oldList__ ve swimlane __oldSwimlane__ na tablu __oldBoard__ do sloupce __list__ ve swimlane __swimlane__ na tablu __board__",
"act-removeBoardMember": "odstranil(a) člena __member__ z tabla __board__",
"act-restoredCard": "obnovil(a) kartu __card__ do sloupce __list__ ve swimlane __swimlane__ na tablu __board__",
"act-unjoinMember": "odstranil(a) člena __member__ z karty __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Akce",
@@ -56,14 +60,14 @@
"activity-unchecked-item": "nedokončen %s v seznamu %s z %s",
"activity-checklist-added": "přidán checklist do %s",
"activity-checklist-removed": "odstraněn checklist z %s",
"activity-checklist-completed": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"activity-checklist-completed": "dokončil(a) zaškrtávací seznam __checklist__ na kartě __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"activity-checklist-uncompleted": "nedokončen seznam %s z %s",
"activity-checklist-item-added": "přidána položka checklist do '%s' v %s",
"activity-checklist-item-removed": "odstraněna položka seznamu do '%s' v %s",
"add": "Přidat",
"activity-checked-item-card": "dokončen %s v seznamu %s",
"activity-unchecked-item-card": "nedokončen %s v seznamu %s",
"activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"activity-checklist-completed-card": "dokončil(a) zaškrtávací seznam __checklist__ na kartě __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"activity-checklist-uncompleted-card": "nedokončený seznam %s",
"add-attachment": "Přidat přílohu",
"add-board": "Přidat tablo",
@@ -121,7 +125,7 @@
"boardChangeTitlePopup-title": "Přejmenovat tablo",
"boardChangeVisibilityPopup-title": "Upravit viditelnost",
"boardChangeWatchPopup-title": "Změnit sledování",
"boardMenuPopup-title": "Board Settings",
"boardMenuPopup-title": "Nastavení Tabla",
"boards": "Tabla",
"board-view": "Náhled tabla",
"board-view-cal": "Kalendář",
@@ -181,21 +185,21 @@
"close-board-pop": "Budete moci obnovit tablo kliknutím na tlačítko \"Archiv\" v hlavním menu.",
"color-black": "černá",
"color-blue": "modrá",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-crimson": "karmínová",
"color-darkgreen": "tmavě zelená",
"color-gold": "zlatá",
"color-gray": "šedá",
"color-green": "zelená",
"color-indigo": "indigo",
"color-lime": "světlezelená",
"color-magenta": "magenta",
"color-magenta": "purpurová",
"color-mistyrose": "mistyrose",
"color-navy": "tmavě modrá",
"color-orange": "oranžová",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "růžová",
"color-plum": "plum",
"color-plum": "švestková",
"color-purple": "fialová",
"color-red": "červená",
"color-saddlebrown": "saddlebrown",
@@ -350,7 +354,7 @@
"set-color-list": "Nastavit barvu",
"listActionPopup-title": "Vypsat akce",
"swimlaneActionPopup-title": "Akce swimlane",
"swimlaneAddPopup-title": "Add a Swimlane below",
"swimlaneAddPopup-title": "Přidat swimlane dolů",
"listImportCardPopup-title": "Importovat Trello kartu",
"listMorePopup-title": "Více",
"link-list": "Odkaz na tento sloupec",
@@ -465,9 +469,9 @@
"welcome-swimlane": "Milník 1",
"welcome-list1": "Základní",
"welcome-list2": "Pokročilé",
"card-templates-swimlane": "Card Templates",
"list-templates-swimlane": "List Templates",
"board-templates-swimlane": "Board Templates",
"card-templates-swimlane": "Šablony Karty",
"list-templates-swimlane": "Šablony Sloupce",
"board-templates-swimlane": "Šablony Tabla",
"what-to-do": "Co chcete dělat?",
"wipLimitErrorPopup-title": "Neplatný WIP Limit",
"wipLimitErrorPopup-dialog-pt1": "Počet úkolů v tomto sloupci je vyšší než definovaný WIP limit.",
@@ -550,7 +554,7 @@
"subtask-settings": "Nastavení podúkolů",
"boardSubtaskSettingsPopup-title": "Nastavení podúkolů tabla",
"show-subtasks-field": "Karty mohou mít podúkoly",
"deposit-subtasks-board": "Deposit subtasks to this board:",
"deposit-subtasks-board": "Vložit podúkoly do tohoto tabla",
"deposit-subtasks-list": "Landing list for subtasks deposited here:",
"show-parent-in-minicard": "Ukázat předka na minikartě",
"prefix-with-full-path": "Prefix s celou cestou",
@@ -567,6 +571,8 @@
"activity-added-label-card": "přidán štítek '%s'",
"activity-removed-label-card": "odstraněn štítek '%s'",
"activity-delete-attach-card": "odstraněna příloha",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Pravidlo",
"r-add-trigger": "Přidat spoštěč",
"r-add-action": "Přidat akci",
@@ -676,5 +682,12 @@
"error-undefined": "Něco se pokazilo",
"error-ldap-login": "Během přihlašování nastala chyba",
"display-authentication-method": "Zobraz způsob ověřování",
"default-authentication-method": "Zobraz způsob ověřování"
"default-authentication-method": "Zobraz způsob ověřování",
"duplicate-board": "Duplikovat tablo",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
@@ -676,5 +682,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+68 -55
View File
@@ -1,37 +1,41 @@
{
"accept": "Akzeptieren",
"act-activity-notify": "Aktivitätsbenachrichtigung",
"act-addAttachment": "hat Anhang __attachment__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ angehängt",
"act-deleteAttachment": "löschte Anhang __attachment__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-addSubtask": "hat Teilaufgabe __subtask__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board angehängt",
"act-addLabel": "hat Label __label__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ angehängt",
"act-removeLabel": "entfernte Label __label__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-addChecklist": "hat Checkliste __checklist__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ angehängt",
"act-addChecklistItem": "hat Checklistenposition __checklistItem__ zu Checkliste __checkList__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ angehängt",
"act-removeChecklist": "entfernt Checkliste __checklist__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-removeChecklistItem": "entfernt Checklistenposition __checklistItem__ von Checkliste __checkList__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-checkedItem": "hakte __checklistItem__ von der Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ ab",
"act-uncheckedItem": "unabgehakt __checklistItem__ von der Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-completeChecklist": "vervollständigte Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-uncompleteChecklist": "unvollendete Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-addComment": "kommentierte eine Karte __card__: __comment__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-addAttachment": "hat Anhang __attachment__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
"act-deleteAttachment": "hat Anhang __attachment__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ gelöscht",
"act-addSubtask": "hat Teilaufgabe __subtask__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
"act-addLabel": "hat Label __label__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
"act-addedLabel": "hat Label __label__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
"act-removeLabel": "hat Label __label__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
"act-removedLabel": "hat Label __label__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
"act-addChecklist": "hat Checkliste __checklist__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
"act-addChecklistItem": "hat Checklistenposition __checklistItem__ zu Checkliste __checkList__ auf der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
"act-removeChecklist": "hat Checkliste __checklist__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
"act-removeChecklistItem": "hat Checklistenposition __checklistItem__ von Checkliste __checkList__ auf der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
"act-checkedItem": "hat __checklistItem__ der Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ abgehakt",
"act-uncheckedItem": "hat Haken von __checklistItem__ der Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
"act-completeChecklist": "hat Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ vervollständigt",
"act-uncompleteChecklist": "hat Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ unvervollständigt",
"act-addComment": "hat Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ kommentiert: __comment__",
"act-createBoard": "hat Board __board__ erstellt",
"act-createCard": "erstellte Karte __card__ auf Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-createCustomField": "erstellte ein benutzerdefiniertes Feld __customField__ für Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-createSwimlane": "hat Swimlane __swimlane__ in Board __board__ erstellt",
"act-createCard": "hat Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ erstellt",
"act-createCustomField": "hat das benutzerdefinierte Feld __customField__ auf Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ erstellt",
"act-createList": "hat Liste __list__ zu Board __board__ hinzugefügt",
"act-addBoardMember": "hat Mitglied __member__ zu Board __board__ hinzugefügt",
"act-archivedBoard": "Board __board__ ins Archiv verschoben",
"act-archivedCard": "Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ von Board __board__ ins Archiv verschoben",
"act-archivedList": "Liste __list__ bei Swimlane __swimlane__ von Board __board__ ins Archiv verschoben",
"act-archivedSwimlane": "Swimlane __swimlane__ von Board __board__ ins Archiv verschoben",
"act-importBoard": "importiert Board __board__",
"act-importCard": "importiert Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ in Board __board__ ",
"act-importList": "importiert Liste __list__ bei Swimlane __swimlane__ in Board __board__ ",
"act-joinMember": "fügt Mitglied __member__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ hinzu",
"act-moveCard": "verschiebe Karte __card__ von Liste __oldList__ von Swimlane __oldSwimlane__ von Board __oldBoard__ nach Liste __list__ in Swimlane __swimlane__ zu Board __board__",
"act-removeBoardMember": "entfernte Mitglied __member__ vom Board __board__",
"act-restoredCard": "wiederherstellte Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-unjoinMember": "entfernte Mitglied __member__ von Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-archivedBoard": "hat Board __board__ ins Archiv verschoben",
"act-archivedCard": "hat Karte __card__ von der Liste __list__ in Swimlane __swimlane__ in Board __board__ ins Archiv verschoben",
"act-archivedList": "hat Liste __list__ in Swimlane __swimlane__ in Board __board__ ins Archiv verschoben",
"act-archivedSwimlane": "hat Swimlane __swimlane__ von Board __board__ ins Archiv verschoben",
"act-importBoard": "hat Board __board__ importiert",
"act-importCard": "hat Karte __card__ in Liste __list__ in Swimlane __swimlane__ in Board __board__ importiert",
"act-importList": "hat Liste __list__ in Swimlane __swimlane__ in Board __board__ importiert",
"act-joinMember": "hat Mitglied __member__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
"act-moveCard": "hat Karte __card__ in Board __board__ von Liste __oldList__ in Swimlane __oldSwimlane__ zu Liste __list__ in Swimlane __swimlane__ verschoben",
"act-moveCardToOtherBoard": "hat Karte __card__ von Liste __oldList__ in Swimlane __oldSwimlane__ in Board __oldBoard__ zu Liste __list__ in Swimlane __swimlane__ in Board __board__ verschoben",
"act-removeBoardMember": "hat Mitglied __member__ von Board __board__ entfernt",
"act-restoredCard": "hat Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ wiederhergestellt",
"act-unjoinMember": "hat Mitglied __member__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Aktionen",
@@ -56,14 +60,14 @@
"activity-unchecked-item": "hat %s in Checkliste %s von %s abgewählt",
"activity-checklist-added": "hat eine Checkliste zu %s hinzugefügt",
"activity-checklist-removed": "entfernte eine Checkliste von %s",
"activity-checklist-completed": "vervollständigte Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"activity-checklist-completed": "hat Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ vervollständigt",
"activity-checklist-uncompleted": "unvervollständigte die Checkliste %s von %s",
"activity-checklist-item-added": "hat ein Checklistenelement zu '%s' in %s hinzugefügt",
"activity-checklist-item-removed": "hat ein Checklistenelement von '%s' in %s entfernt",
"add": "Hinzufügen",
"activity-checked-item-card": "markiere %s in Checkliste %s",
"activity-unchecked-item-card": "hat %s in Checkliste %s abgewählt",
"activity-checklist-completed-card": "vervollständigte Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"activity-checklist-completed-card": "hat Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ vervollständigt",
"activity-checklist-uncompleted-card": "unvervollständigte die Checkliste %s",
"add-attachment": "Datei anhängen",
"add-board": "neues Board",
@@ -267,9 +271,9 @@
"email-enrollAccount-subject": "Ihr Benutzerkonto auf __siteName__ wurde erstellt",
"email-enrollAccount-text": "Hallo __user__,\n\num den Dienst nutzen zu können, klicken Sie bitte auf folgenden Link:\n\n__url__\n\nDanke.",
"email-fail": "Senden der E-Mail fehlgeschlagen",
"email-fail-text": "Fehler beim Senden des E-Mails",
"email-fail-text": "Fehler beim Senden der E-Mail",
"email-invalid": "Ungültige E-Mail-Adresse",
"email-invite": "via E-Mail einladen",
"email-invite": "per E-Mail einladen",
"email-invite-subject": "__inviter__ hat Ihnen eine Einladung geschickt",
"email-invite-text": "Hallo __user__,\n\n__inviter__ hat Sie zu dem Board \"__board__\" eingeladen.\n\nBitte klicken Sie auf folgenden Link:\n\n__url__\n\nDanke.",
"email-resetPassword-subject": "Setzten Sie ihr Passwort auf __siteName__ zurück",
@@ -567,47 +571,49 @@
"activity-added-label-card": "Label hinzugefügt '%s'",
"activity-removed-label-card": "Label entfernt '%s'",
"activity-delete-attach-card": "hat einen Anhang gelöscht",
"activity-set-customfield": "setze benutzerdefiniertes Feld '%s' zu '%s' in %s",
"activity-unset-customfield": "entferne benutzerdefiniertes Feld '%s' in %s",
"r-rule": "Regel",
"r-add-trigger": "Auslöser hinzufügen",
"r-add-action": "Aktion hinzufügen",
"r-board-rules": "Board Regeln",
"r-board-rules": "Boardregeln",
"r-add-rule": "Regel hinzufügen",
"r-view-rule": "Regel anzeigen",
"r-delete-rule": "Regel löschen",
"r-new-rule-name": "Neuer Regeltitel",
"r-no-rules": "Keine Regeln",
"r-when-a-card": "Wenn eine Karte",
"r-is": "ist",
"r-when-a-card": "Wenn Karte",
"r-is": "wird",
"r-is-moved": "verschoben wird",
"r-added-to": "hinzugefügt wird zu",
"r-removed-from": "Entfernt von",
"r-added-to": "hinzugefügt zu",
"r-removed-from": "entfernt von",
"r-the-board": "das Board",
"r-list": "Liste",
"set-filter": "Setze Filter",
"r-moved-to": "Verschieben nach",
"r-moved-from": "Verschieben von",
"r-archived": "Ins Archiv verschieben",
"r-unarchived": "Aus dem Archiv wiederhergestellt",
"r-a-card": "eine Karte",
"r-when-a-label-is": "Wenn ein Label ist",
"r-when-the-label-is": " Wenn das Label ist",
"r-moved-to": "verschoben nach",
"r-moved-from": "verschoben von",
"r-archived": "ins Archiv verschoben",
"r-unarchived": "aus dem Archiv wiederhergestellt",
"r-a-card": "einer Karte",
"r-when-a-label-is": "Wenn ein Label",
"r-when-the-label-is": " Wenn das Label",
"r-list-name": "Listenname",
"r-when-a-member": "Wenn ein Mitglied ist",
"r-when-a-member": "Wenn ein Mitglied",
"r-when-the-member": "Wenn das Mitglied",
"r-name": "Name",
"r-when-a-attach": "Wenn ein Anhang",
"r-when-a-checklist": "Wenn eine Checkliste ist",
"r-when-a-checklist": "Wenn eine Checkliste wird",
"r-when-the-checklist": "Wenn die Checkliste",
"r-completed": "Abgeschlossen",
"r-made-incomplete": "Unvollständig gemacht",
"r-when-a-item": "Wenn ein Checklistenelement ist",
"r-when-the-item": "Wenn das Checklistenelement",
"r-checked": "Markiert",
"r-unchecked": "Abgewählt",
"r-move-card-to": "Verschiebe Karte nach",
"r-completed": "abgeschlossen",
"r-made-incomplete": "unvollständig gemacht",
"r-when-a-item": "Wenn eine Checklistenposition",
"r-when-the-item": "Wenn die Checklistenposition",
"r-checked": "markiert wird",
"r-unchecked": "abgewählt wird",
"r-move-card-to": "Verschiebe Karte an",
"r-top-of": "Anfang von",
"r-bottom-of": "Ende von",
"r-its-list": "seine Liste",
"r-its-list": "seiner Liste",
"r-archive": "Ins Archiv verschieben",
"r-unarchive": "Aus dem Archiv wiederherstellen",
"r-card": "Karte",
@@ -676,5 +682,12 @@
"error-undefined": "Etwas ist schief gelaufen",
"error-ldap-login": "Es ist ein Fehler beim Anmelden aufgetreten",
"display-authentication-method": "Anzeige Authentifizierungsverfahren",
"default-authentication-method": "Standardauthentifizierungsverfahren"
"default-authentication-method": "Standardauthentifizierungsverfahren",
"duplicate-board": "Board duplizieren",
"people-number": "Anzahl der Personen:",
"swimlaneDeletePopup-title": "Swimlane löschen?",
"swimlane-delete-pop": "Alle Aktionen werden aus dem Aktivitätenfeed entfernt und die Swimlane kann nicht wiederhergestellt werden. Es gibt kein Rückgängig!",
"restore-all": "Alles wiederherstellen",
"delete-all": "Alles löschen",
"loading": "Laden, bitte warten."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
@@ -676,5 +682,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
@@ -676,5 +682,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
@@ -679,5 +685,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is: ",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
@@ -676,5 +682,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
@@ -676,5 +682,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+81 -68
View File
@@ -1,47 +1,51 @@
{
"accept": "Aceptar",
"act-activity-notify": "Notificación de actividad",
"act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-completeChecklist": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
"act-addBoardMember": "added member __member__ to board __board__",
"act-archivedBoard": "Board __board__ moved to Archive",
"act-archivedCard": "Card __card__ at list __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
"act-archivedList": "List __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
"act-archivedSwimlane": "Swimlane __swimlane__ at board __board__ moved to Archive",
"act-importBoard": "imported board __board__",
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addAttachment": "añadido el adjunto __attachment__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-deleteAttachment": "eliminado el adjunto __attachment__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-addSubtask": "añadida la subtarea __subtask__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-addLabel": "añadida la etiqueta __label__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-addedLabel": "añadida la etiqueta __label__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-removeLabel": "eliminada la etiqueta __label__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-removedLabel": "eliminada la etiqueta __label__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-addChecklist": "añadida la lista de verificación __checklist__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-addChecklistItem": "añadido el elemento __checklistItem__ a la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-removeChecklist": "eliminada la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-removeChecklistItem": "eliminado el elemento __checklistItem__ de la lista de verificación __checkList__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-checkedItem": "marcado el elemento __checklistItem__ de la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-uncheckedItem": "desmarcado el elemento __checklistItem__ de la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-completeChecklist": "completada la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-uncompleteChecklist": "no completada la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-addComment": "comentario en la tarjeta__card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-createBoard": "creó el tablero __board__",
"act-createSwimlane": "creó el carril de flujo __swimlane__ en el tablero __board__",
"act-createCard": "creada la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-createCustomField": "creó el campo personalizado __customField__ en la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-createList": "añadida la lista __list__ al tablero __board__",
"act-addBoardMember": "añadido el mimbro __member__ al tablero __board__",
"act-archivedBoard": "El tablero __board__ se ha archivado",
"act-archivedCard": "La tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__ se ha archivado",
"act-archivedList": "La lista __list__ del carril __swimlane__ del tablero __board__ se ha archivado",
"act-archivedSwimlane": "El carril __swimlane__ del tablero __board__ se ha archivado",
"act-importBoard": "importado el tablero __board__",
"act-importCard": "importada la tarjeta __card__ a la lista __list__ del carrril __swimlane__ del tablero __board__",
"act-importList": "importada la lista __list__ al carril __swimlane__ del tablero __board__",
"act-joinMember": "añadido el miembro __member__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-moveCard": "movida la tarjeta __card__ del tablero __board__ de la lista __oldList__ del carril __oldSwimlane__ a la lista __list__ del carril __swimlane__",
"act-moveCardToOtherBoard": "movida la tarjeta __card__ de la lista __oldList__ del carril __oldSwimlane__ del tablero __oldBoard__ a la lista __list__ del carril __swimlane__ del tablero __board__",
"act-removeBoardMember": "eliminado el miembro __member__ del tablero __board__",
"act-restoredCard": "restaurada la tarjeta __card__ a la lista __list__ del carril __swimlane__ del tablero __board__",
"act-unjoinMember": "eliminado el miembro __member__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Acciones",
"activities": "Actividades",
"activity": "Actividad",
"activity-added": "ha añadido %s a %s",
"activity-archived": "%s movido a Archivo",
"activity-archived": "%s se ha archivado",
"activity-attached": "ha adjuntado %s a %s",
"activity-created": "ha creado %s",
"activity-customfield-created": "creado el campo personalizado %s",
"activity-customfield-created": "creó el campo personalizado %s",
"activity-excluded": "ha excluido %s de %s",
"activity-imported": "ha importado %s a %s desde %s",
"activity-imported-board": "ha importado %s desde %s",
@@ -56,14 +60,14 @@
"activity-unchecked-item": "desmarcado %s en lista %s de %s",
"activity-checklist-added": "ha añadido una lista de verificación a %s",
"activity-checklist-removed": "eliminada una lista de verificación desde %s ",
"activity-checklist-completed": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"activity-checklist-completed": "completada la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"activity-checklist-uncompleted": "no completado la lista %s de %s",
"activity-checklist-item-added": "ha añadido el elemento de la lista de verificación a '%s' en %s",
"activity-checklist-item-removed": "eliminado un elemento de la lista de verificación desde '%s' en %s",
"add": "Añadir",
"activity-checked-item-card": "marcado %s en la lista de verificación %s",
"activity-unchecked-item-card": "desmarcado %s en la lista de verificación %s",
"activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"activity-checklist-completed-card": "completada la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"activity-checklist-uncompleted-card": "no completó la lista de verificación %s",
"add-attachment": "Añadir adjunto",
"add-board": "Añadir tablero",
@@ -88,19 +92,19 @@
"and-n-other-card_plural": "y otras __count__ tarjetas",
"apply": "Aplicar",
"app-is-offline": "Cargando, espera por favor. Refrescar esta página causará pérdida de datos. Si la carga no funciona, por favor comprueba que el servidor no se ha parado.",
"archive": "Mover al Archivo",
"archive-all": "Mover todo al Archivo",
"archive-board": "Mover Tablero al Archivo",
"archive-card": "Mover tarjeta al Archivo",
"archive-list": "Mover Lista al Archivo",
"archive-swimlane": "Mover carril al Archivo",
"archive-selection": "Mover selección al Archivo",
"archiveBoardPopup-title": "¿Mover Tablero al Archivo?",
"archived-items": "Archivar",
"archive": "Archivar",
"archive-all": "Archivar todo",
"archive-board": "Archivar este tablero",
"archive-card": "Archivar esta tarjeta",
"archive-list": "Archivar esta lista",
"archive-swimlane": "Archivar este carril",
"archive-selection": "Archivar esta selección",
"archiveBoardPopup-title": "¿Archivar este tablero?",
"archived-items": "Archivo",
"archived-boards": "Tableros en Archivo",
"restore-board": "Restaurar el tablero",
"no-archived-boards": "No hay Tableros en el Archivo",
"archives": "Archivar",
"archives": "Archivo",
"template": "Plantilla",
"templates": "Plantillas",
"assign-member": "Asignar miembros",
@@ -129,8 +133,8 @@
"board-view-lists": "Listas",
"bucket-example": "Como “Cosas por hacer” por ejemplo",
"cancel": "Cancelar",
"card-archived": "Esta tarjeta se movió al Archivo",
"board-archived": "Este tablero se movió al Archivo",
"card-archived": "Se archivó esta tarjeta",
"board-archived": "Se archivó este tablero",
"card-comments-title": "Esta tarjeta tiene %s comentarios.",
"card-delete-notice": "la eliminación es permanente. Perderás todas las acciones asociadas a esta tarjeta.",
"card-delete-pop": "Se eliminarán todas las acciones del historial de actividades y no se podrá volver a abrir la tarjeta. Esta acción no puede deshacerse.",
@@ -243,7 +247,7 @@
"decline": "Declinar",
"default-avatar": "Avatar por defecto",
"delete": "Eliminar",
"deleteCustomFieldPopup-title": "¿Borrar el campo personalizado?",
"deleteCustomFieldPopup-title": "¿Eliminar el campo personalizado?",
"deleteLabelPopup-title": "¿Eliminar la etiqueta?",
"description": "Descripción",
"disambiguateMultiLabelPopup-title": "Desambiguar la acción de etiqueta",
@@ -343,7 +347,7 @@
"leave-board-pop": "¿Seguro que quieres abandonar __boardTitle__? Serás desvinculado de todas las tarjetas en este tablero.",
"leaveBoardPopup-title": "¿Abandonar el tablero?",
"link-card": "Enlazar a esta tarjeta",
"list-archive-cards": "Mover todas las tarjetas de la lista al Archivo",
"list-archive-cards": "Archivar todas las tarjetas de esta lista",
"list-archive-cards-pop": "Esto eliminará del tablero todas las tarjetas en esta lista. Para ver las tarjetas en el Archivo y recuperarlas al tablero haga click en \"Menu\" > \"Archivo\"",
"list-move-cards": "Mover todas las tarjetas de esta lista",
"list-select-cards": "Seleccionar todas las tarjetas de esta lista",
@@ -417,8 +421,8 @@
"search-cards": "Buscar entre los títulos y las descripciones de las tarjetas en este tablero.",
"search-example": "¿Texto a buscar?",
"select-color": "Seleccionar el color",
"set-wip-limit-value": "Fija un límite para el número máximo de tareas en esta lista.",
"setWipLimitPopup-title": "Fija el límite del trabajo en proceso",
"set-wip-limit-value": "Cambiar el límite para el número máximo de tareas en esta lista.",
"setWipLimitPopup-title": "Cambiar el límite del trabajo en proceso",
"shortcut-assign-self": "Asignarte a ti mismo a la tarjeta actual",
"shortcut-autocomplete-emoji": "Autocompletar emoji",
"shortcut-autocomplete-members": "Autocompletar miembros",
@@ -510,7 +514,7 @@
"OS_Loadavg": "Carga media del sistema",
"OS_Platform": "Plataforma del sistema",
"OS_Release": "Publicación del sistema",
"OS_Totalmem": "Memoria Total del sistema",
"OS_Totalmem": "Memoria total del sistema",
"OS_Type": "Tipo de sistema",
"OS_Uptime": "Tiempo activo del sistema",
"days": "días",
@@ -524,8 +528,8 @@
"no": "No",
"accounts": "Cuentas",
"accounts-allowEmailChange": "Permitir cambiar el correo electrónico",
"accounts-allowUserNameChange": "Permitir el cambio del nombre de usuario",
"createdAt": "Creado en",
"accounts-allowUserNameChange": "Permitir cambiar el nombre de usuario",
"createdAt": "Fecha de alta",
"verified": "Verificado",
"active": "Activo",
"card-received": "Recibido",
@@ -542,8 +546,8 @@
"requested-by": "Solicitado por",
"board-delete-notice": "Se eliminarán todas las listas, tarjetas y acciones asociadas a este tablero. Esta acción no puede deshacerse.",
"delete-board-confirm-popup": "Se eliminarán todas las listas, tarjetas, etiquetas y actividades, y no podrás recuperar los contenidos del tablero. Esta acción no puede deshacerse.",
"boardDeletePopup-title": "¿Borrar el tablero?",
"delete-board": "Borrar el tablero",
"boardDeletePopup-title": "¿Eliminar el tablero?",
"delete-board": "Eliminar el tablero",
"default-subtasks-board": "Subtareas para el tablero __board__",
"default": "Por defecto",
"queue": "Cola",
@@ -563,10 +567,12 @@
"no-parent": "No mostrar la tarjeta padre",
"activity-added-label": "añadida etiqueta %s a %s",
"activity-removed-label": "eliminada etiqueta '%s' desde %s",
"activity-delete-attach": "borrado un adjunto desde %s",
"activity-delete-attach": "eliminado un adjunto desde %s",
"activity-added-label-card": "añadida etiqueta '%s'",
"activity-removed-label-card": "eliminada etiqueta '%s'",
"activity-delete-attach-card": "borrado un adjunto",
"activity-delete-attach-card": "eliminado un adjunto",
"activity-set-customfield": "Cambiar el campo personalizado '%s' a '%s' en %s",
"activity-unset-customfield": "Desmarcar el campo personalizado '%s' en %s",
"r-rule": "Regla",
"r-add-trigger": "Añadir disparador",
"r-add-action": "Añadir acción",
@@ -586,7 +592,7 @@
"set-filter": "Filtrar",
"r-moved-to": "Movido a",
"r-moved-from": "Movido desde",
"r-archived": "Movido a Archivo",
"r-archived": "Se archivó",
"r-unarchived": "Restaurado del archivo",
"r-a-card": "una tarjeta",
"r-when-a-label-is": "Cuando una etiqueta es",
@@ -604,11 +610,11 @@
"r-when-the-item": "Cuando el elemento de la lista de verificación es",
"r-checked": "Marcado",
"r-unchecked": "Desmarcado",
"r-move-card-to": "Mover tarjeta a",
"r-move-card-to": "Mover la tarjeta a",
"r-top-of": "Arriba de",
"r-bottom-of": "Abajo de",
"r-its-list": "su lista",
"r-archive": "Mover al Archivo",
"r-archive": "Archivar",
"r-unarchive": "Restaurar del Archivo",
"r-card": "tarjeta",
"r-add": "Añadir",
@@ -629,15 +635,15 @@
"r-to": "a",
"r-subject": "asunto",
"r-rule-details": "Detalle de la regla",
"r-d-move-to-top-gen": "Mover tarjeta arriba de su lista",
"r-d-move-to-top-spec": "Mover tarjeta arriba de la lista",
"r-d-move-to-bottom-gen": "Mover tarjeta abajo de su lista",
"r-d-move-to-bottom-spec": "Mover tarjeta al fondo de la lista",
"r-d-move-to-top-gen": "Mover la tarjeta al inicio de su lista",
"r-d-move-to-top-spec": "Mover la tarjeta al inicio de la lista",
"r-d-move-to-bottom-gen": "Mover la tarjeta al final de su lista",
"r-d-move-to-bottom-spec": "Mover la tarjeta al final de la lista",
"r-d-send-email": "Enviar email",
"r-d-send-email-to": "a",
"r-d-send-email-subject": "asunto",
"r-d-send-email-message": "mensaje",
"r-d-archive": "Mover tarjeta al Archivo",
"r-d-archive": "Archivar la tarjeta",
"r-d-unarchive": "Restaurar tarjeta del Archivo",
"r-d-add-label": "Añadir etiqueta",
"r-d-remove-label": "Eliminar etiqueta",
@@ -669,12 +675,19 @@
"authentication-method": "Método de autenticación",
"authentication-type": "Tipo de autenticación",
"custom-product-name": "Nombre de producto personalizado",
"layout": "Disñeo",
"layout": "Diseño",
"hide-logo": "Ocultar logo",
"add-custom-html-after-body-start": "Añade HTML personalizado después de <body> ",
"add-custom-html-before-body-end": "Añade HTML personalizado después de </body>",
"error-undefined": "Algo no está bien",
"error-ldap-login": "Ocurrió un error al intentar acceder",
"display-authentication-method": "Mostrar el método de autenticación",
"default-authentication-method": "Método de autenticación por defecto"
"default-authentication-method": "Método de autenticación por defecto",
"duplicate-board": "Duplicar tablero",
"people-number": "El número de personas es:",
"swimlaneDeletePopup-title": "¿Eliminar el carril de flujo?",
"swimlane-delete-pop": "Todas las acciones serán eliminadas del historial de actividades y no se podrá recuperar el carril de flujo. Esta acción no puede deshacerse.",
"restore-all": "Restaurar todas",
"delete-all": "Borrar todas",
"loading": "Cargando. Por favor, espere."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
@@ -676,5 +682,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "افزودن لیبل '%s'",
"activity-removed-label-card": "حذف لیبل '%s'",
"activity-delete-attach-card": "حذف ضمیمه",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "نقش",
"r-add-trigger": "افزودن گیره",
"r-add-action": "افزودن عملیات",
@@ -676,5 +682,12 @@
"error-undefined": "یک اشتباه رخ داده شده است",
"error-ldap-login": "هنگام تلاش برای ورود به یک خطا رخ داد",
"display-authentication-method": "نمایش نوع اعتبارسنجی",
"default-authentication-method": "نوع اعتبارسنجی پیشفرض"
"default-authentication-method": "نوع اعتبارسنجی پیشفرض",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+83 -70
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "poistettu liite __attachment__ kortilla __card__ listalla __list__ swimlanella __swimlane__ taululla __board__",
"act-addSubtask": "lisätty alitehtävä __subtask__ kortille __card__ listalla __list__ swimlanella __swimlane__ taululla __board__",
"act-addLabel": "Lisätty tunniste __label__ kortille __card__ listalla __list__ swimlanella __swimlane__ taululla __board__",
"act-addedLabel": "Lisätty tunniste __label__ kortille __card__ listalla __list__ swimlanella __swimlane__ taululla __board__",
"act-removeLabel": "Poistettu tunniste __label__ kortilta __card__ listalla __list__ swimlanella __swimlane__ taululla __board__",
"act-removedLabel": "Poistettu tunniste __label__ kortilta __card__ listalla __list__ swimlanella __swimlane__ taululla __board__",
"act-addChecklist": "lisätty tarkistuslista __checklist__ kortille __card__ listalla __list__ swimlanella __swimlane__ taululla __board__",
"act-addChecklistItem": "lisätty tarkistuslistan kohta __checklistItem__ tarkistuslistalle __checklist__ kortilla __card__ listalla __list__ swimlanella __swimlane__ taululla __board__",
"act-removeChecklist": "poistettu tarkistuslista __checklist__ kortilta __card__ listalla __list__ swimlanella __swimlane__ taululla __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "tehty ei valmistuneeksi tarkistuslista __checklist__ kortilla __card__ listalla __list__ swimlanella __swimlane__ taululla __board__",
"act-addComment": "kommentoitu kortilla __card__: __comment__ listalla __list__ swimlanella __swimlane__ taululla __board__",
"act-createBoard": "luotu taulu __board__",
"act-createSwimlane": "loi swimlanen __swimlane__ taululle __board__",
"act-createCard": "luotu kortti __card__ listalle __list__ swimlanella __swimlane__ taululla __board__",
"act-createCustomField": "luotu mukautettu kenttä __customField__ kortille __card__ listalla __list__ swimlanella __swimlane__ taululla __board__",
"act-createList": "lisätty lista __list__ taululle __board__",
@@ -28,7 +31,8 @@
"act-importCard": "tuotu kortti __card__ listalle __list__ swimlanella __swimlane__ taululla __board__",
"act-importList": "tuotu lista __list__ swimlanelle __swimlane__ taululla __board__",
"act-joinMember": "lisätty jäsen __member__ kortille __card__ listalla __list__ swimlanella __swimlane__ taululla __board__",
"act-moveCard": "siirretty kortti __card__ listasta __oldList__ swimlanella __oldSwimlane__ taululla __oldBoard__ listalle __list__ swimlanella __swimlane__ taululla __board__",
"act-moveCard": "siirsi kortin __card__ taululla __board__ listasta __oldList__ swimlanelta __oldSwimlane__ listalle __list__ swimlanelle __swimlane__",
"act-moveCardToOtherBoard": "siirretty kortti __card__ listasta __oldList__ swimlanella __oldSwimlane__ taululla __oldBoard__ listalle __list__ swimlanella __swimlane__ taululla __board__",
"act-removeBoardMember": "poistettu jäsen __member__ taululta __board__",
"act-restoredCard": "palautettu kortti __card__ listalle __list__ swimlanella __swimlane__ taululla __board__",
"act-unjoinMember": "poistettu jäsen __member__ kortilta __card__ listalla __list__ swimlanella __swimlane__ taululla __board__",
@@ -79,7 +83,7 @@
"added": "Lisätty",
"addMemberPopup-title": "Jäsenet",
"admin": "Ylläpitäjä",
"admin-desc": "Voi nähfä ja muokata kortteja, poistaa jäseniä, ja muuttaa taulun asetuksia.",
"admin-desc": "Voi nähdä ja muokata kortteja, poistaa jäseniä, ja muuttaa taulun asetuksia.",
"admin-announcement": "Ilmoitus",
"admin-announcement-active": "Aktiivinen järjestelmänlaajuinen ilmoitus",
"admin-announcement-title": "Ilmoitus ylläpitäjältä",
@@ -99,7 +103,7 @@
"archived-items": "Arkisto",
"archived-boards": "Taulut Arkistossa",
"restore-board": "Palauta taulu",
"no-archived-boards": "Ei tauluja Arkistossa",
"no-archived-boards": "Ei tauluja Arkistossa.",
"archives": "Arkisto",
"template": "Malli",
"templates": "Mallit",
@@ -110,7 +114,7 @@
"attachmentDeletePopup-title": "Poista liitetiedosto?",
"attachments": "Liitetiedostot",
"auto-watch": "Automaattisesti seuraa tauluja kun ne on luotu",
"avatar-too-big": "Profiilikuva on liian suuri (70KB maksimi)",
"avatar-too-big": "Profiilikuva on liian suuri (enintään 70 kt)",
"back": "Takaisin",
"board-change-color": "Muokkaa väriä",
"board-nb-stars": "%s tähteä",
@@ -121,9 +125,9 @@
"boardChangeTitlePopup-title": "Nimeä taulu uudelleen",
"boardChangeVisibilityPopup-title": "Muokkaa näkyvyyttä",
"boardChangeWatchPopup-title": "Muokkaa seuraamista",
"boardMenuPopup-title": "Taulu asetukset",
"boardMenuPopup-title": "Tauluasetukset",
"boards": "Taulut",
"board-view": "Taulu näkymä",
"board-view": "Taulunäkymä",
"board-view-cal": "Kalenteri",
"board-view-swimlanes": "Swimlanet",
"board-view-lists": "Listat",
@@ -132,8 +136,8 @@
"card-archived": "Tämä kortti on siirretty Arkistoon.",
"board-archived": "Tämä taulu on siirretty Arkistoon.",
"card-comments-title": "Tässä kortissa on %s kommenttia.",
"card-delete-notice": "Poistaminen on lopullista. Menetät kaikki toimet jotka on liitetty tähän korttiin.",
"card-delete-pop": "Kaikki toimet poistetaan toimintasyötteestä ja et tule pystymään uudelleenavaamaan korttia. Tätä ei voi peruuttaa.",
"card-delete-notice": "Poistaminen on lopullista. Menetät kaikki tähän korttiin liitetyt toimet.",
"card-delete-pop": "Kaikki toimet poistetaan toimintasyötteestä, etkä pysty avata korttia uudelleen. Tätä ei voi peruuttaa.",
"card-delete-suggest-archive": "Voit siirtää kortin Arkistoon poistaaksesi sen taululta ja säilyttääksesi toimintalokin.",
"card-due": "Erääntyy",
"card-due-on": "Erääntyy",
@@ -150,14 +154,14 @@
"cardCustomField-datePopup-title": "Muokkaa päivää",
"cardCustomFieldsPopup-title": "Muokkaa mukautettuja kenttiä",
"cardDeletePopup-title": "Poista kortti?",
"cardDetailsActionsPopup-title": "Kortti toimet",
"cardDetailsActionsPopup-title": "Korttitoimet",
"cardLabelsPopup-title": "Tunnisteet",
"cardMembersPopup-title": "Jäsenet",
"cardMorePopup-title": "Lisää",
"cardTemplatePopup-title": "Luo malli",
"cards": "Kortit",
"cards-count": "korttia",
"casSignIn": "CAS kirjautuminen",
"casSignIn": "CAS-kirjautuminen",
"cardType-card": "Kortti",
"cardType-linkedCard": "Linkitetty kortti",
"cardType-linkedBoard": "Linkitetty taulu",
@@ -178,7 +182,7 @@
"clipboard": "Leikepöytä tai raahaa ja pudota",
"close": "Sulje",
"close-board": "Sulje taulu",
"close-board-pop": "Voit palauttaa taulun klikkaamalla “Arkisto” painiketta taululistan yläpalkista.",
"close-board-pop": "Voit palauttaa taulun klikkaamalla “Arkisto”-painiketta taululistan yläpalkista.",
"color-black": "musta",
"color-blue": "sininen",
"color-crimson": "karmiininpunainen",
@@ -212,14 +216,14 @@
"no-comments": "Ei kommentteja",
"no-comments-desc": "Ei voi nähdä kommentteja ja toimintaa.",
"computer": "Tietokone",
"confirm-subtask-delete-dialog": "Oletko varma että haluat poistaa alitehtävän?",
"confirm-checklist-delete-dialog": "Oletko varma että haluat poistaa tarkistuslistan?",
"confirm-subtask-delete-dialog": "Haluatko varmasti poistaa alitehtävän?",
"confirm-checklist-delete-dialog": "Haluatko varmasti poistaa tarkistuslistan?",
"copy-card-link-to-clipboard": "Kopioi kortin linkki leikepöydälle",
"linkCardPopup-title": "Linkitä kortti",
"searchElementPopup-title": "Etsi",
"copyCardPopup-title": "Kopioi kortti",
"copyChecklistToManyCardsPopup-title": "Kopioi tarkistuslistan malli monille korteille",
"copyChecklistToManyCardsPopup-instructions": "Kohde korttien otsikot ja kuvaukset JSON muodossa",
"copyChecklistToManyCardsPopup-instructions": "Kohde korttien otsikot ja kuvaukset JSON-muodossa",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Ensimmäisen kortin otsikko\", \"description\":\"Ensimmäisen kortin kuvaus\"}, {\"title\":\"Toisen kortin otsikko\",\"description\":\"Toisen kortin kuvaus\"},{\"title\":\"Viimeisen kortin otsikko\",\"description\":\"Viimeisen kortin kuvaus\"} ]",
"create": "Luo",
"createBoardPopup-title": "Luo taulu",
@@ -233,7 +237,7 @@
"custom-field-date": "Päivämäärä",
"custom-field-dropdown": "Pudotusvalikko",
"custom-field-dropdown-none": "(ei mitään)",
"custom-field-dropdown-options": "Luettelon vaihtoehdot",
"custom-field-dropdown-options": "Listan vaihtoehdot",
"custom-field-dropdown-options-placeholder": "Paina Enter lisätäksesi lisää vaihtoehtoja",
"custom-field-dropdown-unknown": "(tuntematon)",
"custom-field-number": "Numero",
@@ -241,13 +245,13 @@
"custom-fields": "Mukautetut kentät",
"date": "Päivämäärä",
"decline": "Kieltäydy",
"default-avatar": "Oletus profiilikuva",
"default-avatar": "Oletusprofiilikuva",
"delete": "Poista",
"deleteCustomFieldPopup-title": "Poista mukautettu kenttä?",
"deleteLabelPopup-title": "Poista tunniste?",
"description": "Kuvaus",
"disambiguateMultiLabelPopup-title": "Yksikäsitteistä tunniste toiminta",
"disambiguateMultiMemberPopup-title": "Yksikäsitteistä jäsen toiminta",
"disambiguateMultiLabelPopup-title": "Yksikäsitteistä tunnistetoiminta",
"disambiguateMultiMemberPopup-title": "Yksikäsitteistä jäsentoiminta",
"discard": "Hylkää",
"done": "Valmis",
"download": "Lataa",
@@ -255,7 +259,7 @@
"edit-avatar": "Muokkaa profiilikuvaa",
"edit-profile": "Muokkaa profiilia",
"edit-wip-limit": "Muokkaa WIP-rajaa",
"soft-wip-limit": "Pehmeä WIP raja",
"soft-wip-limit": "Pehmeä WIP-raja",
"editCardStartDatePopup-title": "Muokkaa aloituspäivää",
"editCardDueDatePopup-title": "Muokkaa eräpäivää",
"editCustomFieldPopup-title": "Muokkaa kenttää",
@@ -264,25 +268,25 @@
"editNotificationPopup-title": "Muokkaa ilmoituksia",
"editProfilePopup-title": "Muokkaa profiilia",
"email": "Sähköposti",
"email-enrollAccount-subject": "An account created for you on __siteName__",
"email-enrollAccount-text": "Hei __user__,\n\nAlkaaksesi käyttämään palvelua, klikkaa allaolevaa linkkiä.\n\n__url__\n\nKiitos.",
"email-enrollAccount-subject": "Sinulle on luotu tili palveluun __siteName__",
"email-enrollAccount-text": "Hei __user__,\n\nKlikkaa alla olevaa linkkiä aloittaaksesi palvelun käytön.\n\n__url__\n\nKiitos.",
"email-fail": "Sähköpostin lähettäminen epäonnistui",
"email-fail-text": "Virhe yrittäessä lähettää sähköpostia",
"email-invalid": "Virheellinen sähköposti",
"email-invite": "Kutsu sähköpostilla",
"email-invite-subject": "__inviter__ lähetti sinulle kutsun",
"email-invite-text": "Hyvä __user__,\n\n__inviter__ kutsuu sinut liittymään taululle \"__board__\" yhteistyötä varten.\n\nOle hyvä ja seuraa allaolevaa linkkiä:\n\n__url__\n\nKiitos.",
"email-resetPassword-subject": "Reset your password on __siteName__",
"email-resetPassword-text": "Hei __user__,\n\nNollataksesi salasanasi, klikkaa allaolevaa linkkiä.\n\n__url__\n\nKiitos.",
"email-invite-text": "Hyvä __user__,\n\n__inviter__ kutsuu sinut liittymään taululle \"__board__\" yhteistyötä varten.\n\nOle hyvä ja seuraa alla olevaa linkkiä:\n\n__url__\n\nKiitos.",
"email-resetPassword-subject": "Nollaa salasanasi palvelussa __siteName__",
"email-resetPassword-text": "Hei __user__,\n\nNollataksesi salasanasi, klikkaa alla olevaa linkkiä.\n\n__url__\n\nKiitos.",
"email-sent": "Sähköposti lähetetty",
"email-verifyEmail-subject": "Varmista sähköpostiosoitteesi osoitteessa __url__",
"email-verifyEmail-text": "Hei __user__,\n\nvahvistaaksesi sähköpostiosoitteesi, klikkaa allaolevaa linkkiä.\n\n__url__\n\nKiitos.",
"email-verifyEmail-text": "Hei __user__,\n\nvahvistaaksesi sähköpostiosoitteesi, klikkaa alla olevaa linkkiä.\n\n__url__\n\nKiitos.",
"enable-wip-limit": "Ota käyttöön WIP-raja",
"error-board-doesNotExist": "Tämä taulu ei ole olemassa",
"error-board-doesNotExist": "Tätä taulua ei ole olemassa",
"error-board-notAdmin": "Tehdäksesi tämän sinun täytyy olla tämän taulun ylläpitäjä",
"error-board-notAMember": "Tehdäksesi tämän sinun täytyy olla tämän taulun jäsen",
"error-json-malformed": "Tekstisi ei ole kelvollisessa JSON muodossa",
"error-json-schema": "JSON tietosi ei sisällä oikeaa tietoa oikeassa muodossa",
"error-json-malformed": "Tekstisi ei ole kelvollisessa JSON-muodossa",
"error-json-schema": "JSON-tietosi ei sisällä oikeaa tietoa oikeassa muodossa",
"error-list-doesNotExist": "Tätä listaa ei ole olemassa",
"error-user-doesNotExist": "Tätä käyttäjää ei ole olemassa",
"error-user-notAllowSelf": "Et voi kutsua itseäsi",
@@ -312,14 +316,14 @@
"import-board-c": "Tuo taulu",
"import-board-title-trello": "Tuo taulu Trellosta",
"import-board-title-wekan": "Tuo taulu edellisestä viennistä",
"import-sandstorm-backup-warning": "Älä poista tietoja joita toit alkuperäisestä viennistä tai Trellosta ennenkuin tarkistat onnistuuko sulkea ja avata tämä jyvä uudelleen, vai näkyykö Board not found virhe, joka tarkoittaa tietojen häviämistä.",
"import-sandstorm-warning": "Tuotu taulu poistaa kaikki olemassaolevan taulun tiedot ja korvaa ne tuodulla taululla.",
"import-sandstorm-backup-warning": "Älä poista tietoja joita toit alkuperäisestä viennistä tai Trellosta ennen kuin tarkistat onnistuuko sulkea ja avata tämä jyvä uudelleen, vai näkyykö Board not found -virhe, joka tarkoittaa tietojen häviämistä.",
"import-sandstorm-warning": "Tuotu taulu poistaa kaikki olemassa olevan taulun tiedot ja korvaa ne tuodulla taululla.",
"from-trello": "Trellosta",
"from-wekan": "Edellisestä viennistä",
"import-board-instruction-trello": "Trello taulullasi, mene 'Menu', sitten 'More', 'Print and Export', 'Export JSON', ja kopioi tuloksena saamasi teksti",
"import-board-instruction-trello": "Mene Trello-taulullasi 'Menu', sitten 'More', 'Print and Export', 'Export JSON', ja kopioi tuloksena saamasi teksti",
"import-board-instruction-wekan": "Taulullasi, mene 'Valikko', sitten 'Vie taulu', ja kopioi teksti ladatusta tiedostosta.",
"import-board-instruction-about-errors": "Jos virheitä tulee taulua tuotaessa, joskus tuonti silti toimii, ja taulu on Kaikki taulut sivulla.",
"import-json-placeholder": "Liitä kelvollinen JSON tietosi tähän",
"import-json-placeholder": "Liitä kelvollinen JSON-tietosi tähän",
"import-map-members": "Vastaavat jäsenet",
"import-members-map": "Tuomallasi taululla on muutamia jäseniä. Ole hyvä ja valitse tuomiasi jäseniä vastaavat käyttäjäsi",
"import-show-user-mapping": "Tarkasta vastaavat jäsenet",
@@ -341,17 +345,17 @@
"last-admin-desc": "Et voi vaihtaa rooleja koska täytyy olla olemassa ainakin yksi ylläpitäjä.",
"leave-board": "Jää pois taululta",
"leave-board-pop": "Haluatko varmasti poistua taululta __boardTitle__? Sinut poistetaan kaikista tämän taulun korteista.",
"leaveBoardPopup-title": "Jää pois taululta ?",
"leaveBoardPopup-title": "Poistu taululta?",
"link-card": "Linkki tähän korttiin",
"list-archive-cards": "Siirrä kaikki tämän listan kortit Arkistoon",
"list-archive-cards-pop": "Tämä poistaa kaikki tämän listan kortit taululta. Nähdäksesi Arkistossa olevat kortit ja tuodaksesi ne takaisin taululle, klikkaa “Valikko” > “Arkisto”.",
"list-move-cards": "Siirrä kaikki kortit tässä listassa",
"list-select-cards": "Valitse kaikki kortit tässä listassa",
"set-color-list": "Aseta väri",
"listActionPopup-title": "Listaa toimet",
"swimlaneActionPopup-title": "Swimlane toimet",
"listActionPopup-title": "Listatoimet",
"swimlaneActionPopup-title": "Swimlane-toimet",
"swimlaneAddPopup-title": "Lisää Swimlane alle",
"listImportCardPopup-title": "Tuo Trello kortti",
"listImportCardPopup-title": "Tuo Trello-kortti",
"listMorePopup-title": "Lisää",
"link-list": "Linkki tähän listaan",
"list-delete-pop": "Kaikki toimet poistetaan toimintasyötteestä ja listan poistaminen on lopullista. Tätä ei pysty peruuttamaan.",
@@ -361,7 +365,7 @@
"log-out": "Kirjaudu ulos",
"log-in": "Kirjaudu sisään",
"loginPopup-title": "Kirjaudu sisään",
"memberMenuPopup-title": "Jäsen asetukset",
"memberMenuPopup-title": "Jäsenasetukset",
"members": "Jäsenet",
"menu": "Valikko",
"move-selection": "Siirrä valinta",
@@ -386,7 +390,7 @@
"notify-watch": "Vastaanota päivityksiä kaikilta tauluilta, listoilta tai korteilta joita seuraat.",
"optional": "valinnainen",
"or": "tai",
"page-maybe-private": "Tämä sivu voi olla yksityinen. Voit ehkä pystyä näkemään sen <a href='%s'>kirjautumalla sisään</a>.",
"page-maybe-private": "Tämä sivu voi olla yksityinen. Saatat nähdä sen <a href='%s'>kirjautumalla sisään</a>.",
"page-not-found": "Sivua ei löytynyt.",
"password": "Salasana",
"paste-or-dragdrop": "liittääksesi, tai vedä & pudota kuvatiedosto siihen (vain kuva)",
@@ -403,7 +407,7 @@
"remove-cover": "Poista kansi",
"remove-from-board": "Poista taululta",
"remove-label": "Poista tunniste",
"listDeletePopup-title": "Poista lista ?",
"listDeletePopup-title": "Poista lista?",
"remove-member": "Poista jäsen",
"remove-member-from-card": "Poista kortilta",
"remove-member-pop": "Poista __name__ (__username__) taululta __boardTitle__? Jäsen poistetaan kaikilta taulun korteilta. Heille lähetetään ilmoitus.",
@@ -415,7 +419,7 @@
"search": "Etsi",
"rules": "Säännöt",
"search-cards": "Etsi korttien otsikoista ja kuvauksista tällä taululla",
"search-example": "Teksti jota etsitään?",
"search-example": "Etsittävä teksti?",
"select-color": "Valitse väri",
"set-wip-limit-value": "Aseta tämän listan tehtävien enimmäismäärä",
"setWipLimitPopup-title": "Aseta WIP-raja",
@@ -425,9 +429,9 @@
"shortcut-clear-filters": "Poista kaikki suodattimet",
"shortcut-close-dialog": "Sulje valintaikkuna",
"shortcut-filter-my-cards": "Suodata korttini",
"shortcut-show-shortcuts": "Tuo esiin tämä pikavalinta lista",
"shortcut-toggle-filterbar": "Muokkaa suodatus sivupalkin näkyvyyttä",
"shortcut-toggle-sidebar": "Muokkaa taulu sivupalkin näkyvyyttä",
"shortcut-show-shortcuts": "Tuo esiin tämä pikavalintalista",
"shortcut-toggle-filterbar": "Muokkaa suodatussivupalkin näkyvyyttä",
"shortcut-toggle-sidebar": "Muokkaa taulusivupalkin näkyvyyttä",
"show-cards-minimum-count": "Näytä korttien lukumäärä jos lista sisältää enemmän kuin",
"sidebar-open": "Avaa sivupalkki",
"sidebar-close": "Sulje sivupalkki",
@@ -442,8 +446,8 @@
"spent-time-hours": "Käytetty aika (tuntia)",
"overtime-hours": "Ylityö (tuntia)",
"overtime": "Ylityö",
"has-overtime-cards": "Sisältää ylityö kortteja",
"has-spenttime-cards": "Sisältää käytetty aika kortteja",
"has-overtime-cards": "Sisältää ylityökortteja",
"has-spenttime-cards": "Sisältää käytetty aika -kortteja",
"time": "Aika",
"title": "Otsikko",
"tracking": "Ilmoitukset",
@@ -461,13 +465,13 @@
"watch": "Seuraa",
"watching": "Seurataan",
"watching-info": "Sinulle ilmoitetaan tämän taulun muutoksista",
"welcome-board": "Tervetuloa taulu",
"welcome-board": "Tervetuloa-taulu",
"welcome-swimlane": "Merkkipaalu 1",
"welcome-list1": "Perusasiat",
"welcome-list2": "Edistynyt",
"card-templates-swimlane": "Kortti mallit",
"list-templates-swimlane": "Lista mallit",
"board-templates-swimlane": "Taulu mallit",
"card-templates-swimlane": "Korttimallit",
"list-templates-swimlane": "Listamallit",
"board-templates-swimlane": "Taulumallit",
"what-to-do": "Mitä haluat tehdä?",
"wipLimitErrorPopup-title": "Virheellinen WIP-raja",
"wipLimitErrorPopup-dialog-pt1": "Tässä listassa olevien tehtävien määrä on korkeampi kuin asettamasi WIP-raja.",
@@ -476,36 +480,36 @@
"settings": "Asetukset",
"people": "Ihmiset",
"registration": "Rekisteröinti",
"disable-self-registration": "Poista käytöstä itse-rekisteröityminen",
"disable-self-registration": "Poista käytöstä itserekisteröityminen",
"invite": "Kutsu",
"invite-people": "Kutsu ihmisiä",
"to-boards": "Taulu(i)lle",
"email-addresses": "Sähköpostiosoite",
"smtp-host-description": "SMTP palvelimen osoite jolla sähköpostit lähetetään.",
"smtp-port-description": "Portti jota STMP palvelimesi käyttää lähteville sähköposteille.",
"smtp-tls-description": "Ota käyttöön TLS tuki SMTP palvelimelle",
"smtp-host": "SMTP isäntä",
"smtp-port": "SMTP portti",
"smtp-host-description": "SMTP-palvelimen osoite jolla sähköpostit lähetetään.",
"smtp-port-description": "STMP-palvelimesi käyttämä lähteville sähköposteille tarkoitettu portti.",
"smtp-tls-description": "Ota käyttöön TLS-tuki SMTP-palvelimelle",
"smtp-host": "SMTP-isäntä",
"smtp-port": "SMTP-portti",
"smtp-username": "Käyttäjätunnus",
"smtp-password": "Salasana",
"smtp-tls": "TLS tuki",
"smtp-tls": "TLS-tuki",
"send-from": "Lähettäjä",
"send-smtp-test": "Lähetä testi sähköposti itsellesi",
"send-smtp-test": "Lähetä testisähköposti itsellesi",
"invitation-code": "Kutsukoodi",
"email-invite-register-subject": "__inviter__ lähetti sinulle kutsun",
"email-invite-register-text": "Hei __user__,\n\n__inviter__ kutsuu sinut mukaan kanban taulun käyttöön.\n\nOle hyvä ja seuraa allaolevaa linkkiä:\n__url__\n\nJa kutsukoodisi on: __icode__\n\nKiitos.",
"email-smtp-test-subject": "SMTP testi sähköposti",
"email-invite-register-text": "Hei __user__,\n\n__inviter__ kutsuu sinut mukaan kanban-taulun käyttöön.\n\nOle hyvä ja seuraa alla olevaa linkkiä:\n__url__\n\nKutsukoodisi on: __icode__\n\nKiitos.",
"email-smtp-test-subject": "SMTP-testisähköposti",
"email-smtp-test-text": "Olet onnistuneesti lähettänyt sähköpostin",
"error-invitation-code-not-exist": "Kutsukoodi ei ole olemassa",
"error-invitation-code-not-exist": "Kutsukoodia ei ole olemassa",
"error-notAuthorized": "Sinulla ei ole oikeutta tarkastella tätä sivua.",
"outgoing-webhooks": "Lähtevät Webkoukut",
"outgoingWebhooksPopup-title": "Lähtevät Webkoukut",
"boardCardTitlePopup-title": "Kortin otsikko suodatin",
"boardCardTitlePopup-title": "Kortin otsikkosuodatin",
"new-outgoing-webhook": "Uusi lähtevä Webkoukku",
"no-name": "(Tuntematon)",
"Node_version": "Node versio",
"Node_version": "Node-versio",
"OS_Arch": "Käyttöjärjestelmän arkkitehtuuri",
"OS_Cpus": "Käyttöjärjestelmän CPU määrä",
"OS_Cpus": "Käyttöjärjestelmän CPU-määrä",
"OS_Freemem": "Käyttöjärjestelmän vapaa muisti",
"OS_Loadavg": "Käyttöjärjestelmän kuorman keskiarvo",
"OS_Platform": "Käyttöjärjestelmäalusta",
@@ -544,13 +548,13 @@
"delete-board-confirm-popup": "Kaikki listat, kortit, tunnisteet ja toimet poistetaan ja et pysty palauttamaan taulun sisältöä. Tätä ei voi peruuttaa.",
"boardDeletePopup-title": "Poista taulu?",
"delete-board": "Poista taulu",
"default-subtasks-board": "Alitehtävät __board__ taululle",
"default-subtasks-board": "Alitehtävät taululle __board__",
"default": "Oletus",
"queue": "Jono",
"subtask-settings": "Alitehtävä asetukset",
"boardSubtaskSettingsPopup-title": "Taulu alitehtävien asetukset",
"subtask-settings": "Alitehtävä-asetukset",
"boardSubtaskSettingsPopup-title": "Taulualitehtävien asetukset",
"show-subtasks-field": "Korteilla voi olla alitehtäviä",
"deposit-subtasks-board": "Tallenta alitehtävät tälle taululle:",
"deposit-subtasks-board": "Talleta alitehtävät tälle taululle:",
"deposit-subtasks-list": "Laskeutumislista alatehtäville tallennettu tänne:",
"show-parent-in-minicard": "Näytä ylätehtävä minikortilla:",
"prefix-with-full-path": "Etuliite koko polulla",
@@ -558,7 +562,7 @@
"subtext-with-full-path": "Aliteksti koko polulla",
"subtext-with-parent": "Aliteksti ylätehtävällä",
"change-card-parent": "Muuta kortin ylätehtävää",
"parent-card": "Ylätehtävä kortti",
"parent-card": "Ylätehtäväkortti",
"source-board": "Lähdetaulu",
"no-parent": "Älä näytä ylätehtävää",
"activity-added-label": "lisätty tunniste '%s' kohteeseen %s",
@@ -567,10 +571,12 @@
"activity-added-label-card": "lisätty tunniste '%s'",
"activity-removed-label-card": "poistettu tunniste '%s'",
"activity-delete-attach-card": "poistettu liitetiedosto",
"activity-set-customfield": "asetettu mukautettu kentän '%s' sisällöksi '%s' kortilla %s",
"activity-unset-customfield": "poistettu mukautettu kenttä '%s' kortilla %s",
"r-rule": "Sääntö",
"r-add-trigger": "Lisää liipaisin",
"r-add-action": "Lisää toimi",
"r-board-rules": "Taulu säännöt",
"r-board-rules": "Taulusäännöt",
"r-add-rule": "Lisää sääntö",
"r-view-rule": "Näytä sääntö",
"r-delete-rule": "Poista sääntö",
@@ -676,5 +682,12 @@
"error-undefined": "Jotain meni pieleen",
"error-ldap-login": "Virhe tapahtui yrittäessä kirjautua sisään",
"display-authentication-method": "Näytä kirjautumistapa",
"default-authentication-method": "Oletus kirjautumistapa"
"default-authentication-method": "Oletuskirjautumistapa",
"duplicate-board": "Tee kaksoiskappale taulusta",
"people-number": "Ihmisten määrä on:",
"swimlaneDeletePopup-title": "Poista Swimlane?",
"swimlane-delete-pop": "Kaikki toimet poistetaan toimintasyötteestä ja swimlanen poistaminen on lopullista. Tätä ei pysty peruuttamaan.",
"restore-all": "Palauta kaikki",
"delete-all": "Poista kaikki",
"loading": "Ladataan, odota hetki."
}
+58 -45
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "a supprimé la pièce jointe __attachment__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-addSubtask": "a ajouté la sous-tâche __checklist__ à la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-addLabel": "a ajouté l'étiquette __label__ à la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-addedLabel": "a ajouté l'étiquette __label__ à la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-removeLabel": "a enlevé l'étiquette __label__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-removedLabel": "a enlevé l'étiquette __label__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-addChecklist": "a ajouté la checklist __checklist__ à la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-addChecklistItem": "a ajouté l'élément __checklistItem__ à la checklist __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-removeChecklist": "a supprimé la checklist __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "a rendu incomplet la checklist __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-addComment": "a commenté la carte __card__ : __comment__ dans la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-createBoard": "a créé le tableau __board__",
"act-createSwimlane": "a créé le couloir __swimlane__ dans le tableau __board__",
"act-createCard": "a créé la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-createCustomField": "a créé le champ personnalisé __customField__ pour la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-createList": "a ajouté la liste __list__ au tableau __board__",
@@ -28,7 +31,8 @@
"act-importCard": "a importé la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-importList": "a importé la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-joinMember": "a ajouté le participant __member__ à la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-moveCard": "a déplacé la carte __card__ de la liste __oldList__ du couloir __oldSwimlane__ du tableau __oldBoard__ vers la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-moveCard": "a déplacé la carte __card__ du tableau __board__ de la liste __oldList__ du couloir __oldSwimlane__ vers la liste __list__ du couloir __swimlane__",
"act-moveCardToOtherBoard": "a déplacé la carte __card__ de la liste __oldList__ du couloir __oldSwimlane__ du tableau __oldBoard__ vers la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-removeBoardMember": "a supprimé le participant __member__ du tableau __board__",
"act-restoredCard": "a restauré la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
"act-unjoinMember": "a supprimé le participant __member__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
@@ -75,11 +79,11 @@
"add-cover": "Ajouter la couverture",
"add-label": "Ajouter une étiquette",
"add-list": "Ajouter une liste",
"add-members": "Assigner des membres",
"add-members": "Assigner des participants",
"added": "Ajouté le",
"addMemberPopup-title": "Membres",
"addMemberPopup-title": "Participants",
"admin": "Admin",
"admin-desc": "Peut voir et éditer les cartes, supprimer des membres et changer les paramètres du tableau.",
"admin-desc": "Peut voir et éditer les cartes, supprimer des participants et changer les paramètres du tableau.",
"admin-announcement": "Annonce",
"admin-announcement-active": "Annonce destinée à tous",
"admin-announcement-title": "Annonce de l'administrateur",
@@ -103,7 +107,7 @@
"archives": "Archiver",
"template": "Modèle",
"templates": "Modèles",
"assign-member": "Affecter un membre",
"assign-member": "Affecter un participant",
"attached": "joint",
"attachment": "Pièce jointe",
"attachment-delete-pop": "La suppression d'une pièce jointe est définitive. Elle ne peut être annulée.",
@@ -141,9 +145,9 @@
"card-edit-attachments": "Modifier les pièces jointes",
"card-edit-custom-fields": "Éditer les champs personnalisés",
"card-edit-labels": "Gérer les étiquettes",
"card-edit-members": "Gérer les membres",
"card-edit-members": "Gérer les participants",
"card-labels-title": "Modifier les étiquettes de la carte.",
"card-members-title": "Ajouter ou supprimer des membres à la carte.",
"card-members-title": "Assigner ou supprimer des participants à la carte.",
"card-start": "Début",
"card-start-on": "Commence le",
"cardAttachmentsPopup-title": "Ajouter depuis",
@@ -152,7 +156,7 @@
"cardDeletePopup-title": "Supprimer la carte ?",
"cardDetailsActionsPopup-title": "Actions sur la carte",
"cardLabelsPopup-title": "Étiquettes",
"cardMembersPopup-title": "Membres",
"cardMembersPopup-title": "Participants",
"cardMorePopup-title": "Plus",
"cardTemplatePopup-title": "Créer un modèle",
"cards": "Cartes",
@@ -247,7 +251,7 @@
"deleteLabelPopup-title": "Supprimer l'étiquette ?",
"description": "Description",
"disambiguateMultiLabelPopup-title": "Préciser l'action sur l'étiquette",
"disambiguateMultiMemberPopup-title": "Préciser l'action sur le membre",
"disambiguateMultiMemberPopup-title": "Préciser l'action sur le participant",
"discard": "Mettre à la corbeille",
"done": "Fait",
"download": "Télécharger",
@@ -263,13 +267,13 @@
"editLabelPopup-title": "Modifier l'étiquette",
"editNotificationPopup-title": "Modifier la notification",
"editProfilePopup-title": "Modifier le profil",
"email": "Email",
"email": "E-mail",
"email-enrollAccount-subject": "Un compte a été créé pour vous sur __siteName__",
"email-enrollAccount-text": "Bonjour __user__,\n\nPour commencer à utiliser ce service, il suffit de cliquer sur le lien ci-dessous.\n\n__url__\n\nMerci.",
"email-fail": "Échec de l'envoi du courriel.",
"email-fail-text": "Une erreur est survenue en tentant d'envoyer l'email",
"email-invalid": "Adresse email incorrecte.",
"email-invite": "Inviter par email",
"email-invalid": "Adresse e-mail incorrecte.",
"email-invite": "Inviter par e-mail",
"email-invite-subject": "__inviter__ vous a envoyé une invitation",
"email-invite-text": "Cher __user__,\n\n__inviter__ vous invite à rejoindre le tableau \"__board__\" pour collaborer.\n\nVeuillez suivre le lien ci-dessous :\n\n__url__\n\nMerci.",
"email-resetPassword-subject": "Réinitialiser votre mot de passe sur __siteName__",
@@ -280,7 +284,7 @@
"enable-wip-limit": "Activer la limite WIP",
"error-board-doesNotExist": "Ce tableau n'existe pas",
"error-board-notAdmin": "Vous devez être administrateur de ce tableau pour faire cela",
"error-board-notAMember": "Vous devez être membre de ce tableau pour faire cela",
"error-board-notAMember": "Vous devez être participant de ce tableau pour faire cela",
"error-json-malformed": "Votre texte JSON n'est pas valide",
"error-json-schema": "Vos données JSON ne contiennent pas l'information appropriée dans un format correct",
"error-list-doesNotExist": "Cette liste n'existe pas",
@@ -294,7 +298,7 @@
"filter-cards": "Filtrer les cartes",
"filter-clear": "Supprimer les filtres",
"filter-no-label": "Aucune étiquette",
"filter-no-member": "Aucun membre",
"filter-no-member": "Aucun participant",
"filter-no-custom-fields": "Pas de champs personnalisés",
"filter-on": "Le filtre est actif",
"filter-on-desc": "Vous êtes en train de filtrer les cartes sur ce tableau. Cliquez ici pour modifier les filtres.",
@@ -310,9 +314,9 @@
"link": "Lien",
"import-board": "importer un tableau",
"import-board-c": "Importer un tableau",
"import-board-title-trello": "Importer le tableau depuis Trello",
"import-board-title-wekan": "Importer le tableau depuis l'export précédent",
"import-sandstorm-backup-warning": "Ne supprimez pas les données que vous importez du tableau exporté d'origine ou de Trello avant de vérifier que la graine peut se fermer et s'ouvrir à nouveau, ou qu'une erreur \"Tableau introuvable\" survient, sinon vous perdrez vos données.",
"import-board-title-trello": "Importer un tableau depuis Trello",
"import-board-title-wekan": "Importer un tableau depuis un export précédent",
"import-sandstorm-backup-warning": "Ne supprimez pas les données que vous importez d'un tableau exporté d'origine ou de Trello avant de vérifier que la graine peut se fermer et s'ouvrir à nouveau ou qu'une erreur \"Tableau introuvable\" survient, sinon vous perdrez vos données.",
"import-sandstorm-warning": "Le tableau importé supprimera toutes les données du tableau et les remplacera avec celles du tableau importé.",
"from-trello": "Depuis Trello",
"from-wekan": "Depuis un export précédent",
@@ -320,15 +324,15 @@
"import-board-instruction-wekan": "Dans votre tableau, allez dans 'Menu', puis 'Exporter un tableau', et copier le texte du fichier téléchargé.",
"import-board-instruction-about-errors": "Si une erreur survient en important le tableau, il se peut que l'import ait fonctionné, et que le tableau se trouve sur la page \"Tous les tableaux\".",
"import-json-placeholder": "Collez ici les données JSON valides",
"import-map-members": "Faire correspondre aux membres",
"import-members-map": "Le tableau que vous venez d'importer contient des membres. Veuillez associer les membres que vous souhaitez importer à vos utilisateurs.",
"import-show-user-mapping": "Contrôler l'association des membres",
"import-user-select": "Sélectionnez l'utilisateur existant que vous voulez associer à ce membre",
"importMapMembersAddPopup-title": "Sélectionner le membre",
"import-map-members": "Assigner des participants",
"import-members-map": "Le tableau que vous venez d'importer contient des participants. Veuillez assigner les participants que vous souhaitez importer à vos utilisateurs.",
"import-show-user-mapping": "Contrôler l'assignation des participants",
"import-user-select": "Sélectionnez l'utilisateur existant que vous voulez associer à ce participant",
"importMapMembersAddPopup-title": "Sélectionner le participant",
"info": "Version",
"initials": "Initiales",
"invalid-date": "Date invalide",
"invalid-time": "Temps invalide",
"invalid-time": "Heure invalide",
"invalid-user": "Utilisateur invalide",
"joined": "a rejoint",
"just-invited": "Vous venez d'être invité à ce tableau",
@@ -354,15 +358,15 @@
"listImportCardPopup-title": "Importer une carte Trello",
"listMorePopup-title": "Plus",
"link-list": "Lien vers cette liste",
"list-delete-pop": "Toutes les actions seront supprimées du fil d'activité et il ne sera plus possible de les récupérer. Cette action ne peut pas être annulée.",
"list-delete-pop": "Toutes les actions seront supprimées du fil d'activité et il ne sera plus possible de les récupérer. Cette action est irréversible.",
"list-delete-suggest-archive": "Vous pouvez archiver une liste pour l'enlever du tableau tout en conservant son activité.",
"lists": "Listes",
"swimlanes": "Couloirs",
"log-out": "Déconnexion",
"log-in": "Connexion",
"loginPopup-title": "Connexion",
"memberMenuPopup-title": "Préférence de membre",
"members": "Membres",
"memberMenuPopup-title": "Préférence du participant",
"members": "Participants",
"menu": "Menu",
"move-selection": "Déplacer la sélection",
"moveCardPopup-title": "Déplacer la carte",
@@ -382,7 +386,7 @@
"normal": "Normal",
"normal-desc": "Peut voir et modifier les cartes. Ne peut pas changer les paramètres.",
"not-accepted-yet": "L'invitation n'a pas encore été acceptée",
"notify-participate": "Recevoir les mises à jour de toutes les cartes auxquelles vous participez en tant que créateur ou que membre ",
"notify-participate": "Recevoir les mises à jour de toutes les cartes auxquelles vous participez en tant que créateur ou que participant",
"notify-watch": "Recevoir les mises à jour de tous les tableaux, listes ou cartes que vous suivez",
"optional": "optionnel",
"or": "ou",
@@ -404,10 +408,10 @@
"remove-from-board": "Retirer du tableau",
"remove-label": "Retirer l'étiquette",
"listDeletePopup-title": "Supprimer la liste ?",
"remove-member": "Supprimer le membre",
"remove-member": "Supprimer le participant",
"remove-member-from-card": "Supprimer de la carte",
"remove-member-pop": "Supprimer __name__ (__username__) de __boardTitle__ ? Ce membre sera supprimé de toutes les cartes du tableau et recevra une notification.",
"removeMemberPopup-title": "Supprimer le membre ?",
"remove-member-pop": "Supprimer __name__ (__username__) de __boardTitle__ ? Ce participant sera supprimé de toutes les cartes du tableau et recevra une notification.",
"removeMemberPopup-title": "Supprimer le participant ?",
"rename": "Renommer",
"rename-board": "Renommer le tableau",
"restore": "Restaurer",
@@ -421,14 +425,14 @@
"setWipLimitPopup-title": "Définir la limite WIP",
"shortcut-assign-self": "Affecter cette carte à vous-même",
"shortcut-autocomplete-emoji": "Auto-complétion des emoji",
"shortcut-autocomplete-members": "Auto-complétion des membres",
"shortcut-autocomplete-members": "Auto-complétion des participants",
"shortcut-clear-filters": "Retirer tous les filtres",
"shortcut-close-dialog": "Fermer la boîte de dialogue",
"shortcut-filter-my-cards": "Filtrer mes cartes",
"shortcut-show-shortcuts": "Afficher cette liste de raccourcis",
"shortcut-toggle-filterbar": "Afficher/Cacher la barre latérale des filtres",
"shortcut-toggle-sidebar": "Afficher/Cacher la barre latérale du tableau",
"show-cards-minimum-count": "Afficher le nombre de cartes si la liste en contient plus de ",
"shortcut-toggle-filterbar": "Afficher/Masquer la barre latérale des filtres",
"shortcut-toggle-sidebar": "Afficher/Masquer la barre latérale du tableau",
"show-cards-minimum-count": "Afficher le nombre de cartes si la liste en contient plus de",
"sidebar-open": "Ouvrir le panneau",
"sidebar-close": "Fermer le panneau",
"signupPopup-title": "Créer un compte",
@@ -447,9 +451,9 @@
"time": "Temps",
"title": "Titre",
"tracking": "Suivi",
"tracking-info": "Vous serez notifié de toute modification concernant les cartes pour lesquelles vous êtes impliqué en tant que créateur ou membre.",
"tracking-info": "Vous serez notifié de toute modification concernant les cartes pour lesquelles vous êtes impliqué en tant que créateur ou participant.",
"type": "Type",
"unassign-member": "Retirer le membre",
"unassign-member": "Retirer le participant",
"unsaved-description": "Vous avez une description non sauvegardée",
"unwatch": "Arrêter de suivre",
"upload": "Télécharger",
@@ -480,7 +484,7 @@
"invite": "Inviter",
"invite-people": "Inviter une personne",
"to-boards": "Au(x) tableau(x)",
"email-addresses": "Adresses email",
"email-addresses": "Adresses mail",
"smtp-host-description": "L'adresse du serveur SMTP qui gère vos mails.",
"smtp-port-description": "Le port des mails sortants du serveur SMTP.",
"smtp-tls-description": "Activer la gestion de TLS sur le serveur SMTP",
@@ -494,7 +498,7 @@
"invitation-code": "Code d'invitation",
"email-invite-register-subject": "__inviter__ vous a envoyé une invitation",
"email-invite-register-text": "Cher __user__,\n\n__inviter__ vous invite à le rejoindre sur le tableau kanban pour collaborer.\n\nVeuillez suivre le lien ci-dessous :\n__url__\n\nVotre code d'invitation est : __icode__\n\nMerci.",
"email-smtp-test-subject": "Email de test SMTP",
"email-smtp-test-subject": "E-mail de test SMTP",
"email-smtp-test-text": "Vous avez envoyé un mail avec succès",
"error-invitation-code-not-exist": "Ce code d'invitation n'existe pas.",
"error-notAuthorized": "Vous n'êtes pas autorisé à accéder à cette page.",
@@ -567,6 +571,8 @@
"activity-added-label-card": "a ajouté l'étiquette '%s'",
"activity-removed-label-card": "a supprimé l'étiquette '%s'",
"activity-delete-attach-card": "a supprimé une pièce jointe",
"activity-set-customfield": "a défini le champ personnalisé '%s' à '%s' dans %s",
"activity-unset-customfield": "a effacé le champ personnalisé '%s' dans %s",
"r-rule": "Règle",
"r-add-trigger": "Ajouter un déclencheur",
"r-add-action": "Ajouter une action",
@@ -592,8 +598,8 @@
"r-when-a-label-is": "Quand une étiquette est",
"r-when-the-label-is": "Quand l'étiquette est",
"r-list-name": "Nom de la liste",
"r-when-a-member": "Quand un membre est",
"r-when-the-member": "Quand le membre",
"r-when-a-member": "Quand un participant est",
"r-when-the-member": "Quand le participant",
"r-name": "nom",
"r-when-a-attach": "Quand une pièce jointe",
"r-when-a-checklist": "Quand une checklist est",
@@ -614,7 +620,7 @@
"r-add": "Ajouter",
"r-remove": "Supprimer",
"r-label": "étiquette",
"r-member": "membre",
"r-member": "participant",
"r-remove-all": "Supprimer tous les membres de la carte",
"r-set-color": "Définir la couleur à",
"r-checklist": "checklist",
@@ -644,9 +650,9 @@
"r-create-card": "Créer une nouvelle carte",
"r-in-list": "dans la liste",
"r-in-swimlane": "Dans le couloir",
"r-d-add-member": "Ajouter un membre",
"r-d-remove-member": "Supprimer un membre",
"r-d-remove-all-member": "Supprimer tous les membres",
"r-d-add-member": "Ajouter un participant",
"r-d-remove-member": "Supprimer un participant",
"r-d-remove-all-member": "Supprimer tous les participants",
"r-d-check-all": "Cocher tous les éléments d'une liste",
"r-d-uncheck-all": "Décocher tous les éléments d'une liste",
"r-d-check-one": "Cocher l'élément",
@@ -676,5 +682,12 @@
"error-undefined": "Une erreur inconnue s'est produite",
"error-ldap-login": "Une erreur s'est produite lors de la tentative de connexion",
"display-authentication-method": "Afficher la méthode d'authentification",
"default-authentication-method": "Méthode d'authentification par défaut"
"default-authentication-method": "Méthode d'authentification par défaut",
"duplicate-board": "Dupliquer le tableau",
"people-number": "Le nombre d'utilisateurs est de :",
"swimlaneDeletePopup-title": "Supprimer le couloir ?",
"swimlane-delete-pop": "Toutes les actions vont être supprimées du suivi d'activités et vous ne pourrez plus utiliser ce couloir. Cette action est irréversible.",
"restore-all": "Tout supprimer",
"delete-all": "Tout restaurer",
"loading": "Chargement, merci de patienter."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
@@ -676,5 +682,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+39 -26
View File
@@ -1,34 +1,38 @@
{
"accept": "אישור",
"act-activity-notify": "הודעת פעילות",
"act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addAttachment": "הקובץ __attachment__ צורף אל הכרטיס __card__ ברשימה __list__ למסלול __swimlane__ שבלוח __board__",
"act-deleteAttachment": "הקובץ __attachment__ נמחק מהכרטיס __card__ ברשימה __list__ מהמסלול __swimlane__ שבלוח __board__",
"act-addSubtask": "תת־משימה __attachment__ נוספה אל הכרטיס __card__ ברשימה __list__ למסלול __swimlane__ שבלוח __board__",
"act-addLabel": "התווית __label__ נוספה לכרטיס __card__ ברשימה __list__ למסלול __swimlane__ שבלוח __board__",
"act-addedLabel": "התווית __label__ נוספה לכרטיס __card__ ברשימה __list__ למסלול __swimlane__ שבלוח __board__",
"act-removeLabel": "התווית __label__ הוסרה מהכרטיס __card__ ברשימה __list__ מהמסלול __swimlane__ שבלוח __board__",
"act-removedLabel": "התווית __label__ הוסרה מהכרטיס __card__ ברשימה __list__ מהמסלול __swimlane__ שבלוח __board__",
"act-addChecklist": "נוספה רשימת מטלות __checklist__ לכרטיס __card__ ברשימה __list__ שבמסלול __swimlane__ בלוח __board__",
"act-addChecklistItem": "נוסף פריט סימון __checklistItem__ לרשימת המטלות __checklist__ לכרטיס __card__ ברשימה __list__ במסלול __swimlane__ בלוח __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-completeChecklist": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "הוסרה רשימת מטלות __checklist__ מהכרטיס __card__ ברשימה __list__ שבמסלול __swimlane__ בלוח __board__",
"act-removeChecklistItem": "פריט הסימון __checklistItem__ הוסר מרשימת המטלות __checkList__ בכרטיס __card__ ברשימה __list__ מהמסלול __swimlane__ בלוח __board__",
"act-checkedItem": "הפריט __checklistItem__ ששייך לרשימת המשימות __checklist__ בכרטיס __card__ שברשימת __list__ במסלול __swimlane__ שבלוח __board__ סומן",
"act-uncheckedItem": "בוטל הסימון __checklistItem__ ברשימת המטלות __checklist__ בכרטיס __card__ ברשימה __list__ במסלול __swimlane__ בלוח __board__",
"act-completeChecklist": "רשימת המטלות __checklist__ בכרטיס __card__ שברשימה __list__ תחת המסלול __swimlane__ בלוח __board__ הושלמה",
"act-uncompleteChecklist": "ההשלמה של רשימת המטלות __checklist__ בכרטיס __card__ שברשימה __list__ תחת המסלול __swimlane__ בלוח __board__ בוטלה",
"act-addComment": "התקבלה תגובה על הכרטיס __card__:‏ __comment__ ברשימה __list__ במסלול __swimlane__ בלוח __board__",
"act-createBoard": "הלוח __board__ נוצר",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
"act-addBoardMember": "added member __member__ to board __board__",
"act-createSwimlane": "נוצר מסלול __swimlane__ בלוח __board__",
"act-createCard": "הכרטיס __card__ נוצר ברשימה __list__ במסלול __swimlane__ שבלוח __board__",
"act-createCustomField": "נוצר שדה בהתאמה אישית __customField__ בכרטיס __card__ שברשימה __list__ במסלול __swimlane__ שבלוח __board__",
"act-createList": "הרשימה __list__ נוספה ללוח __board__",
"act-addBoardMember": "החבר __member__ נוסף אל __board__",
"act-archivedBoard": "הלוח __board__ הועבר לארכיון",
"act-archivedCard": "הכרטיס __card__ ברשימה __list__ במסלול __swimlane__ בלוח __board__ הועבר לארכיון",
"act-archivedList": "הרשימה __list__ במסלול __swimlane__ בלוח __board__ הועברה לארכיון",
"act-archivedSwimlane": "המסלול __swimlane__ בלוח __board__ הועבר לארכיון",
"act-importBoard": "הייבוא של הלוח __board__ הושלם",
"act-importCard": "הייבוא של הכרטיס __card__ לרשימה __list__ למסלול __swimlane__ ללוח __board__ הושלם",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-importList": "הרשימה __list__ ייובאה למסלול __swimlane__ שבלוח __board__",
"act-joinMember": "החבר __member__ נוסף לכרטיס __card__ לרשימה __list__ במסלול __swimlane__ בלוח __board__",
"act-moveCard": "הכרטיס __card__ הועבר מהרשימה __oldList__ במסלול __oldSwimlane__ בלוח __oldBoard__ לרשימה __list__ במסלול __swimlane__ בלוח __board__",
"act-moveCard": "הועבר הכרטיס __card__ בלוח __board__ מהרשימה __oldList__ במסלול __oldSwimlane__ לרשימה __list__ במסלול __swimlane__.",
"act-moveCardToOtherBoard": "הכרטיס __card__ הועבר מהרשימה __oldList__ במסלול __oldSwimlane__ בלוח __oldBoard__ לרשימה __list__ במסלול __swimlane__ בלוח __board__",
"act-removeBoardMember": "החבר __member__ הוסר מהלוח __board__",
"act-restoredCard": "הכרטיס __card__ שוחזר לרשימה __list__ למסלול __swimlane__ ללוח __board__",
"act-unjoinMember": "החבר __member__ הוסר מהכרטיס __card__ ברשימה __list__ במסלול __swimlane__ בלוח __board__",
@@ -56,14 +60,14 @@
"activity-unchecked-item": "בוטל הסימון של %s ברשימת המשימות %s מתוך %s",
"activity-checklist-added": "נוספה רשימת משימות אל %s",
"activity-checklist-removed": "הוסרה רשימת משימות מ־%s",
"activity-checklist-completed": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"activity-checklist-completed": "רשימת המטלות __checklist__ בכרטיס __card__ שברשימה __list__ תחת המסלול __swimlane__ בלוח __board__ הושלמה",
"activity-checklist-uncompleted": "רשימת המשימות %s מתוך %s סומנה כבלתי מושלמת",
"activity-checklist-item-added": "נוסף פריט רשימת משימות אל ‚%s‘ תחת %s",
"activity-checklist-item-removed": "הוסר פריט מרשימת המשימות ‚%s’ תחת %s",
"add": "הוספה",
"activity-checked-item-card": "סומן %s ברשימת המשימות %s",
"activity-unchecked-item-card": "הסימון של %s בוטל ברשימת המשימות %s",
"activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"activity-checklist-completed-card": "רשימת המטלות __checklist__ בכרטיס __card__ שברשימה __list__ תחת המסלול __swimlane__ בלוח __board__ הושלמה",
"activity-checklist-uncompleted-card": "רשימת המשימות %s סומנה כבלתי מושלמת",
"add-attachment": "הוספת קובץ מצורף",
"add-board": "הוספת לוח",
@@ -207,17 +211,17 @@
"unset-color": "בטל הגדרה",
"comment": "לפרסם",
"comment-placeholder": "כתיבת הערה",
"comment-only": "תגובה בלבד",
"comment-only": "הערה בלבד",
"comment-only-desc": "ניתן להגיב על כרטיסים בלבד.",
"no-comments": " אין תגובות",
"no-comments": " אין הערות",
"no-comments-desc": "לא ניתן לצפות בתגובות ובפעילויות.",
"computer": "מחשב",
"confirm-subtask-delete-dialog": "האם למחוק את תת המשימה?",
"confirm-subtask-delete-dialog": "למחוק את תת המשימה?",
"confirm-checklist-delete-dialog": "למחוק את רשימת המשימות?",
"copy-card-link-to-clipboard": "העתקת קישור הכרטיס ללוח הגזירים",
"linkCardPopup-title": "קישור כרטיס",
"searchElementPopup-title": "חיפוש",
"copyCardPopup-title": "העתק כרטיס",
"copyCardPopup-title": "העתקת כרטיס",
"copyChecklistToManyCardsPopup-title": "העתקת תבנית רשימת מטלות למגוון כרטיסים",
"copyChecklistToManyCardsPopup-instructions": "כותרות ותיאורים של כרטיסי יעד בתצורת JSON זו",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"כותרת כרטיס ראשון\", \"description\":\"תיאור כרטיס ראשון\"}, {\"title\":\"כותרת כרטיס שני\",\"description\":\"תיאור כרטיס שני\"},{\"title\":\"כותרת כרטיס אחרון\",\"description\":\"תיאור כרטיס אחרון\"} ]",
@@ -567,6 +571,8 @@
"activity-added-label-card": "התווית ‚%s’ נוספה",
"activity-removed-label-card": "התווית ‚%s’ הוסרה",
"activity-delete-attach-card": "קובץ מצורף נמחק",
"activity-set-customfield": "הגדרת שדה בהתאמה אישית ‚%s’ לערך ‚%s’ תחת %s",
"activity-unset-customfield": "ביטול הגדרת שדה בהתאמה אישית ‚%s’ תחת %s",
"r-rule": "כלל",
"r-add-trigger": "הוספת הקפצה",
"r-add-action": "הוספת פעולה",
@@ -676,5 +682,12 @@
"error-undefined": "מהו השתבש",
"error-ldap-login": "אירעה שגיאה בעת ניסיון הכניסה",
"display-authentication-method": "הצגת שיטת אימות",
"default-authentication-method": "שיטת אימות כבררת מחדל"
"default-authentication-method": "שיטת אימות כבררת מחדל",
"duplicate-board": "שכפול לוח",
"people-number": "מספר האנשים הוא:",
"swimlaneDeletePopup-title": "למחוק מסלול?",
"swimlane-delete-pop": "כל הפעולות יוסרו מהזנת הפעילות ולא תהיה לך אפשרות לשחזר את המסלול. אי אפשר לחזור אחורה.",
"restore-all": "לשחזר הכול",
"delete-all": "למחוק הכול",
"loading": "העמוד בטעינה, אנא המתינו."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "हटाए गए अनुलग्नक __attachment__ कार्ड पर __card__ सूचि मेें __list__ तैराक में __swimlane__ बोर्ड पर __board__",
"act-addSubtask": "जोड़ा उपकार्य __checklist__ को __card__ सूचि मेें __list__ तैराक में __swimlane__ बोर्ड पर __board__",
"act-addLabel": "जोड़ा गया लेबल __label__ कार्ड के लिए __card__ सूचि मेें __list__ तैराक में __swimlane__ बोर्ड पर __board__",
"act-addedLabel": "जोड़ा गया लेबल __label__ कार्ड के लिए __card__ सूचि मेें __list__ तैराक में __swimlane__ बोर्ड पर __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "संकलित label '%s'",
"activity-removed-label-card": "हटा दिया label '%s'",
"activity-delete-attach-card": "deleted an संलग्नक",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "जोड़ें trigger",
"r-add-action": "जोड़ें action",
@@ -676,5 +682,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+48 -35
View File
@@ -1,11 +1,13 @@
{
"accept": "Elfogadás",
"act-activity-notify": "Activity Notification",
"act-activity-notify": "Tevékenység értesítés",
"act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -51,7 +55,7 @@
"activity-removed": "%s eltávolítva innen: %s",
"activity-sent": "%s elküldve ide: %s",
"activity-unjoined": "%s kilépett a csoportból",
"activity-subtask-added": "added subtask to %s",
"activity-subtask-added": "Alfeladat hozzáadva ehhez: %s",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-checklist-added": "ellenőrzőlista hozzáadva ehhez: %s",
@@ -69,7 +73,7 @@
"add-board": "Tábla hozzáadása",
"add-card": "Kártya hozzáadása",
"add-swimlane": "Add Swimlane",
"add-subtask": "Add Subtask",
"add-subtask": "Alfeladat hozzáadása",
"add-checklist": "Ellenőrzőlista hozzáadása",
"add-checklist-item": "Elem hozzáadása az ellenőrzőlistához",
"add-cover": "Borító hozzáadása",
@@ -88,7 +92,7 @@
"and-n-other-card_plural": "És __count__ egyéb kártya",
"apply": "Alkalmaz",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Move to Archive",
"archive": "Mozgatás az archívumba",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
"archive-card": "Move Card to Archive",
@@ -121,10 +125,10 @@
"boardChangeTitlePopup-title": "Tábla átnevezése",
"boardChangeVisibilityPopup-title": "Láthatóság megváltoztatása",
"boardChangeWatchPopup-title": "Megfigyelés megváltoztatása",
"boardMenuPopup-title": "Board Settings",
"boardMenuPopup-title": "Tábla beállítások",
"boards": "Táblák",
"board-view": "Tábla nézet",
"board-view-cal": "Calendar",
"board-view-cal": "Naptár",
"board-view-swimlanes": "Swimlanes",
"board-view-lists": "Listák",
"bucket-example": "Mint például „Bakancslista”",
@@ -171,7 +175,7 @@
"changePasswordPopup-title": "Jelszó megváltoztatása",
"changePermissionsPopup-title": "Jogosultságok megváltoztatása",
"changeSettingsPopup-title": "Beállítások megváltoztatása",
"subtasks": "Subtasks",
"subtasks": "Alfeladat",
"checklists": "Ellenőrzőlisták",
"click-to-star": "Kattintson a tábla csillagozásához.",
"click-to-unstar": "Kattintson a tábla csillagának eltávolításához.",
@@ -212,7 +216,7 @@
"no-comments": "No comments",
"no-comments-desc": "Can not see comments and activities.",
"computer": "Számítógép",
"confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
"confirm-subtask-delete-dialog": "Biztosan törölni szeretnél az alfeladatot?",
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Kártya hivatkozásának másolása a vágólapra",
"linkCardPopup-title": "Link Card",
@@ -547,8 +551,8 @@
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"subtask-settings": "Alfeladat beállítások",
"boardSubtaskSettingsPopup-title": "Tábla alfeladat beállítások",
"show-subtasks-field": "Cards can have subtasks",
"deposit-subtasks-board": "Deposit subtasks to this board:",
"deposit-subtasks-list": "Landing list for subtasks deposited here:",
@@ -567,6 +571,8 @@
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
@@ -586,8 +592,8 @@
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-archived": "Archívumba helyezve",
"r-unarchived": "Helyreállítva az archívumból",
"r-a-card": "a card",
"r-when-a-label-is": "When a label is",
"r-when-the-label-is": "When the label is",
@@ -608,8 +614,8 @@
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-archive": "Move to Archive",
"r-unarchive": "Restore from Archive",
"r-archive": "Mozgatás az archívumba",
"r-unarchive": "Helyreállítás az archívumból",
"r-card": "card",
"r-add": "Hozzáadás",
"r-remove": "Remove",
@@ -624,7 +630,7 @@
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-of-checklist": "of checklist",
"r-of-checklist": "ellenőrzőlistából",
"r-send-email": "Send an email",
"r-to": "to",
"r-subject": "subject",
@@ -649,32 +655,39 @@
"r-d-remove-all-member": "Remove all member",
"r-d-check-all": "Check all items of a list",
"r-d-uncheck-all": "Uncheck all items of a list",
"r-d-check-one": "Check item",
"r-d-check-one": "Elem ellenőrzése",
"r-d-uncheck-one": "Uncheck item",
"r-d-check-of-list": "of checklist",
"r-d-add-checklist": "Add checklist",
"r-d-remove-checklist": "Remove checklist",
"r-by": "by",
"r-add-checklist": "Add checklist",
"r-with-items": "with items",
"r-d-check-of-list": "ellenőrzőlistából",
"r-d-add-checklist": "Ellenőrzőlista hozzáadása",
"r-d-remove-checklist": "Ellenőrzőlista eltávolítása",
"r-by": "által",
"r-add-checklist": "Ellenőrzőlista hozzáadása",
"r-with-items": "elemekkel",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "When a card is moved to another list",
"r-when-a-card-is-moved": "Amikor egy kártya másik listába kerül",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentication method",
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"authentication-method": "Hitelesítési mód",
"authentication-type": "Hitelesítés típusa",
"custom-product-name": "Saját terméknév",
"layout": "Elrendezés",
"hide-logo": "Logo elrejtése",
"add-custom-html-after-body-start": "Egyedi HTML hozzáadása <body> után",
"add-custom-html-before-body-end": "1",
"error-undefined": "Valami hiba történt",
"error-ldap-login": "Hiba történt bejelentkezés közben",
"display-authentication-method": "Hitelelesítési mód mutatása",
"default-authentication-method": "Alapértelmezett hitelesítési mód",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
@@ -676,5 +682,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
@@ -676,5 +682,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+15 -2
View File
@@ -5,7 +5,9 @@
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -16,6 +18,7 @@
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
@@ -28,7 +31,8 @@
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -567,6 +571,8 @@
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
@@ -676,5 +682,12 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
+49 -36
View File
@@ -1,37 +1,41 @@
{
"accept": "Accetta",
"act-activity-notify": "Notifica attività ",
"act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-completeChecklist": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
"act-addBoardMember": "added member __member__ to board __board__",
"act-archivedBoard": "Board __board__ moved to Archive",
"act-archivedCard": "Card __card__ at list __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
"act-archivedList": "List __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
"act-archivedSwimlane": "Swimlane __swimlane__ at board __board__ moved to Archive",
"act-importBoard": "imported board __board__",
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-activity-notify": "Notifica attività",
"act-addAttachment": "aggiunto allegato __attachment__ alla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
"act-deleteAttachment": "eliminato allegato __attachment__ dalla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
"act-addSubtask": "aggiunto sottotask __subtask__ alla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
"act-addLabel": "aggiunta etichetta __label__ alla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
"act-addedLabel": "aggiunta etichetta __label__ alla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
"act-removeLabel": "rimossa etichetta __label__ dalla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
"act-removedLabel": "rimossa etichetta __label__ dalla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
"act-addChecklist": "aggiunta lista di controllo __label__ alla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
"act-addChecklistItem": "aggiunto elemento __checklistItem__ alla lista di controllo __checklist__ della scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
"act-removeChecklist": "rimossa lista di controllo __checklist__ dalla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
"act-removeChecklistItem": "rimosso elemento __checklistitem__ dalla lista di controllo __checkList__ della scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
"act-checkedItem": "attivato __checklistitem__ nella lista di controllo __checklist__ della scheda __card__ della lista __list__ della corsia __swimlane__ nella bacheca __board__",
"act-uncheckedItem": "disattivato __checklistItem__ della lista di controllo __checklist__ dalla scheda __card__ della lista __list__ della corsia __swimlane__ nella bacheca __board__",
"act-completeChecklist": "completata lista di controllo __checklist__ nella scheda __card__ della lista __list__ della corsia __swimlane__ nella bacheca __board__",
"act-uncompleteChecklist": "lista di controllo __checklist__ incompleta nella scheda __card__ della lista __list__ in corsia __swimlane__ della bacheca __board__",
"act-addComment": "commento sulla scheda __card__: __comment__ nella lista __list__ della corsia __swimlane__ della bacheca __board__",
"act-createBoard": "bacheca __board__ creata",
"act-createSwimlane": "creata corsia __swimlane__ alla bacheca __board__",
"act-createCard": "scheda __card__ creata nella lista __list__ della corsia __swimlane__ della bacheca __board__",
"act-createCustomField": "campo personalizzato __customField__ creato nella scheda __card__ della lista __list__ in corsia __swimlane__ della bacheca __board__",
"act-createList": "aggiunta lista __list__ alla bacheca __board__",
"act-addBoardMember": "aggiunto membro __member__ alla bacheca __board__",
"act-archivedBoard": "Bacheca __board__ archiviata",
"act-archivedCard": "Scheda __card__ della lista __list__ della corsia __swimlane__ della bacheca __board__ archiviata",
"act-archivedList": "Lista __list__ della corsia __swimlane__ della bacheca __board__ archiviata",
"act-archivedSwimlane": "Corsia __swimlane__ della bacheca __board__ archiviata",
"act-importBoard": "Bacheca __board__ importata",
"act-importCard": "scheda importata __card__ nella lista __list__ della corsia __swimlane__ della bacheca __board__",
"act-importList": "lista __list__ importata nella corsia __swimlane__ della bacheca __board__",
"act-joinMember": "aggiunto membro __member__ alla scheda __card__ della list __list__ nella corsia __swimlane__ della bacheca __board__",
"act-moveCard": "spostata scheda __card__ della bacheca __board__ dalla lista __oldList__ della corsia __oldSwimlane__ alla lista __list__ della corsia __swimlane__",
"act-moveCardToOtherBoard": "postata scheda __card__ dalla lista __oldList__ della corsia __oldSwimlane__ della bacheca __oldBoard__ alla lista __list__ nella corsia __swimlane__ della bacheca __board__",
"act-removeBoardMember": "rimosso membro __member__ dalla bacheca __board__",
"act-restoredCard": "scheda ripristinata __card__ della lista __list__ nella corsia __swimlane__ della bacheca __board__",
"act-unjoinMember": "rimosso membro __member__ dalla scheda __card__ della lista __list__ della corsia __swimlane__ nella bacheca __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Azioni",
@@ -56,14 +60,14 @@
"activity-unchecked-item": "disattivato %s nella checklist %s di %s",
"activity-checklist-added": "aggiunta checklist a %s",
"activity-checklist-removed": "È stata rimossa una checklist da%s",
"activity-checklist-completed": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"activity-checklist-completed": "checklist __checklist__ completata nella scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
"activity-checklist-uncompleted": "La checklist non è stata completata",
"activity-checklist-item-added": "Aggiunto l'elemento checklist a '%s' in %s",
"activity-checklist-item-removed": "è stato rimosso un elemento della checklist da '%s' in %s",
"add": "Aggiungere",
"activity-checked-item-card": "%s è stato selezionato nella checklist %s",
"activity-unchecked-item-card": "%s è stato deselezionato nella checklist %s",
"activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"activity-checklist-completed-card": "checklist __label__ completata nella scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
"activity-checklist-uncompleted-card": "La checklist %s non è completa",
"add-attachment": "Aggiungi Allegato",
"add-board": "Aggiungi Bacheca",
@@ -567,6 +571,8 @@
"activity-added-label-card": "aggiunta etichetta '%s'",
"activity-removed-label-card": "L' etichetta '%s' è stata rimossa.",
"activity-delete-attach-card": "Cancella un allegato",
"activity-set-customfield": "imposta campo personalizzato '%s' a '%s' in %s",
"activity-unset-customfield": "campo personalizzato non impostato '%s' in %s",
"r-rule": "Ruolo",
"r-add-trigger": "Aggiungi trigger",
"r-add-action": "Aggiungi azione",
@@ -668,7 +674,7 @@
"cas": "CAS",
"authentication-method": "Metodo di Autenticazione",
"authentication-type": "Tipo Autenticazione",
"custom-product-name": "Personalizza il nome del prodotto",
"custom-product-name": "Nome prodotto personalizzato",
"layout": "Layout",
"hide-logo": "Nascondi il logo",
"add-custom-html-after-body-start": "Aggiungi codice HTML personalizzato dopo <body> inzio",
@@ -676,5 +682,12 @@
"error-undefined": "Qualcosa è andato storto",
"error-ldap-login": "C'è stato un errore mentre provavi ad effettuare il login",
"display-authentication-method": "Mostra il metodo di autenticazione",
"default-authentication-method": "Metodo di autenticazione predefinito"
"default-authentication-method": "Metodo di autenticazione predefinito",
"duplicate-board": "Duplica bacheca",
"people-number": "Il numero di persone è:",
"swimlaneDeletePopup-title": "Cancella diagramma swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Cancella tutto",
"loading": "Loading, please wait."
}
Loaded 100 of 531 files, more files were not shown because too many files have changed in this diff. Show more