Compare commits

...
2640 Commits
Author SHA1 Message Date
Lauri Ojansivu 79745d1892 v2.78 2019-06-12 06:34:46 +03:00
Lauri Ojansivu 8b31c0768c Try to fix OIDC login.
Thanks to xet7 !
2019-06-12 06:29:57 +03:00
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
Lauri Ojansivu 9d6d5e1a14 v2.37 2019-03-04 12:08:55 +02:00
Lauri Ojansivu 763cf81c97 [Fix Adding Labels to cards is not possible anymore](https://github.com/wekan/wekan/issues/2223).
Thanks to xet7 !

Closes #2223
2019-03-04 12:04:12 +02:00
Lauri Ojansivu 0b64a46bdc Update translations. 2019-03-04 08:55:42 +02:00
Lauri Ojansivu d417bf058d v2.36 2019-03-03 22:39:09 +02:00
Lauri Ojansivu 46088bfbb5 Update translations. 2019-03-03 22:33:17 +02:00
Lauri Ojansivu a6ea622f78 Update changelog. 2019-03-03 22:32:00 +02:00
Lauri Ojansivu 847ed8570b [Combine hamburger menus at right](https://github.com/wekan/wekan/issues/2219).
Thanks to xet7 !

Related #2219
2019-03-03 22:27:05 +02:00
Lauri Ojansivu 3a9ab817a9 Update translations. 2019-03-03 20:43:12 +02:00
Lauri Ojansivu 2a5c2ed192 [Forked salleman-oidc](https://github.com/wekan/wekan/commit/8867bec8e65f1ef6be0c731918e8eefcacb7acb0)
to https://github.com/wekan/meteor-accounts-oidc where salleman also has write access,
xet7 can make changes directly and GitHub issues are enabled.

Thanks to xet7 !
2019-03-03 20:40:37 +02:00
Lauri Ojansivu 8867bec8e6 Forked salleman-oidc to https://github.com/wekan/meteor-accounts-oidc
where salleman also has write access, xet7 can make changes directly
and GitHub issues are enabled.

Thanks to xet7 !
2019-03-03 20:36:44 +02:00
Lauri Ojansivu 262da85399 Update translations. 2019-03-03 18:10:52 +02:00
Lauri Ojansivu 51a70f2164 Fix translation. 2019-03-03 18:07:14 +02:00
Lauri Ojansivu 0854a658d8 Fix typos in translation. 2019-03-03 17:55:34 +02:00
Lauri Ojansivu d99056ced5 Fix translation. 2019-03-03 17:41:11 +02:00
Lauri Ojansivu 4a5473b4e7 Update translation. 2019-03-03 17:38:23 +02:00
Lauri Ojansivu d3f368efd7 Fix typos in translation. 2019-03-03 17:30:57 +02:00
Lauri Ojansivu ca052566de Fix translation. 2019-03-03 17:19:01 +02:00
Lauri Ojansivu c101e262d6 Fix translation. 2019-03-03 16:52:55 +02:00
Lauri Ojansivu 1f942301ad Fix translation. 2019-03-03 16:45:33 +02:00
Lauri Ojansivu b6db1e12b7 - [Add more Webhook translations](https://github.com/wekan/wekan/issues/1969).
In progress.

Thanks to xet7 !
2019-03-03 16:40:35 +02:00
Lauri Ojansivu 3bfc6ea8d7 [Add more Webhook translations](https://github.com/wekan/wekan/issues/1969).
In progress.

Thanks to xet7 !

Related #1969
2019-03-03 16:33:43 +02:00
Lauri Ojansivu ec30dd4788 Update changelog. 2019-03-03 10:45:50 +02:00
Lauri Ojansivu 990ebbdbcb Update translations. 2019-03-03 10:36:58 +02:00
Lauri Ojansivu 99a856be97 Change board menu:
- Board menu (hamburger icon) to Board Settings (Cog icon)
- Sidebar arrows icons to hamburger icon

Thanks to xet7 !

Related #2219
2019-03-03 10:31:30 +02:00
Lauri Ojansivu 260d0641df Rename Board Menu to Board Settings.
Thanks to xet7 !
2019-03-03 10:26:18 +02:00
Lauri Ojansivu 16963859e1 Update translations. 2019-03-02 17:32:06 +02:00
Lauri Ojansivu 010a201d0c Update readme. 2019-03-02 17:27:34 +02:00
Lauri Ojansivu 95014e6348 Update readme. 2019-03-02 17:26:00 +02:00
Lauri Ojansivu 724912ec48 Update readme. 2019-03-02 17:24:26 +02:00
Lauri Ojansivu 46d8a11c51 Remove outdated team page. 2019-03-02 17:15:18 +02:00
Lauri Ojansivu 065cd05c96 Update readme. 2019-03-02 17:13:50 +02:00
Lauri Ojansivu a4564bed3a v2.35 2019-03-01 15:42:23 +02:00
Lauri Ojansivu 4ef3e587cb [Add Filter fix back](https://github.com/wekan/wekan/issues/2213),
because there was no bug in filter fix.
2019-03-01 14:48:25 +02:00
Lauri Ojansivu d6259836e0 - [Add Filter fix back](https://github.com/wekan/wekan/issues/2213),
because there was no bug in filter fix.

Thanks to xet7 !

Closes #2213,
related #2209
2019-03-01 14:41:09 +02:00
Lauri Ojansivu ef246cfef3 v2.34 2019-03-01 07:10:50 +02:00
Lauri Ojansivu 90dd0ddb94 Revert [Filter fix](https://github.com/wekan/wekan/issues/2213) because of
[mongodb data tampered](https://github.com/wekan/wekan-snap/issues/83).

Thanks to xet7 !
2019-03-01 07:05:49 +02:00
Lauri Ojansivu bd2c54398b v2.33 2019-02-28 23:31:39 +02:00
Lauri Ojansivu e65776f9f0 [Upgrade Node.js to v8.15.1](https://github.com/wekan/wekan/commit/5cafdd9878ab4b6123024ec33279ccdae75f554f).
Thanks to Node.js developers and xet7 !
2019-02-28 23:29:13 +02:00
Lauri Ojansivu 5cafdd9878 Upgrade node to v8.15.1
Thanks to xet7 !
2019-02-28 23:25:03 +02:00
Lauri Ojansivu 49882a05d1 v2.32 2019-02-28 23:01:56 +02:00
Lauri Ojansivu 8e36a2bc83 [Fix filtering in swimlane view](https://github.com/wekan/wekan/commit/49229e1723de14cdc66dc6480624bba426d35e36)
that was [broken since v2.29](https://github.com/wekan/wekan/issues/2213).

Thanks to andresmanelli !

Closes #2213,
Related #2209
2019-02-28 22:57:40 +02:00
Lauri Ojansivu 24e47195e5 - [Fix](https://github.com/wekan/wekan/commit/49229e1723de14cdc66dc6480624bba426d35e36)
[Filtering in swimlane view is broken since v2.29](https://github.com/wekan/wekan/issues/2213).

Thanks to andresmanelli !

Related #2209
2019-02-28 22:45:37 +02:00
Lauri Ojansivu 4b37958140 Merge branch 'devel' into edge 2019-02-28 22:39:02 +02:00
Lauri Ojansivu 3edff32bde [Performance improvements](https://github.com/wekan/wekan/pull/2214), thanks to justinr1234:
- New indexes for queries that were missing an index;
- Bulk querying documents to reduce the number of mongo queries when loading a board;
- Ensure oplog is being used to query the database by providing a `sort` key when `limit` is used querying the `boards` collection.
2019-02-28 22:37:28 +02:00
Lauri Ojansivu 78c5e0f7ef Merge branch 'justinr1234-wekan-perf-improvements' into devel 2019-02-28 22:32:33 +02:00
Andrés Manelli 49229e1723 Fix filter in swimlanes view 2019-02-28 20:46:50 +01:00
Lauri Ojansivu 14e2bfd1bf Merge branch 'wekan-perf-improvements' of https://github.com/justinr1234/wekan into justinr1234-wekan-perf-improvements 2019-02-28 21:19:50 +02:00
Justin Reynolds 3c49e2d0ed Performance Enhancements 2019-02-28 11:44:29 -06:00
Lauri Ojansivu d5bc66c9a4 v2.31 2019-02-28 12:41:07 +02:00
Lauri Ojansivu 4f6977668b Update translations. 2019-02-28 12:37:36 +02:00
Lauri Ojansivu 17826c28e5 - [Fix copy card](https://github.com/wekan/wekan/issues/2210).
Thanks to andresmanelli !

Closes #2210,
Related #2209
2019-02-28 12:34:48 +02:00
Lauri Ojansivu a3d71dd694 Merge remote-tracking branch 'andresmanelli/edge' into edge 2019-02-28 12:29:14 +02:00
Andrés Manelli a5c39342ba Fix card copy 2019-02-28 08:10:33 +01:00
Lauri Ojansivu ad75c541cf v2.30 2019-02-28 00:52:36 +02:00
Lauri Ojansivu cd46cbeb8f Add new [Template features](https://github.com/wekan/wekan/issues/2209):
- [Fix popup title. Add element title modification](https://github.com/wekan/wekan/commit/888e1ad5d3e32be53283aa32198057f669f3d706);
- [Copy template attachments](https://github.com/wekan/wekan/commit/abb71083215462d91b084c4de13af0b130638e4d);
- [Standarize copy functions. Match labels by name](https://github.com/wekan/wekan/commit/da21a2a410c9b905de89d66236748e0c8f5357ea).

Thanks to andresmanelli !

Related #2209
2019-02-28 00:44:13 +02:00
Andrés Manelli 888e1ad5d3 Fix popup title
Add element title modification
2019-02-27 21:50:08 +01:00
Andrés Manelli abb7108321 Copy template attachments 2019-02-27 21:50:08 +01:00
Andrés Manelli da21a2a410 Standarize copy functions. Match labels by name 2019-02-27 21:50:08 +01:00
Lauri Ojansivu 904b5bf0f5 v2.29 2019-02-27 21:01:32 +02:00
Lauri Ojansivu d21aa97219 Update translations. 2019-02-27 20:39:56 +02:00
Andrés Manelli 6ee75fbdba Fix templates board not found 2019-02-27 19:34:53 +01:00
Lauri Ojansivu c3b2a0c955 Merge branch 'devel' into edge 2019-02-27 17:29:21 +02:00
Lauri Ojansivu 0ac42c145e Fix typo. 2019-02-27 17:28:44 +02:00
Lauri Ojansivu 4a77bc930f Merge branch 'devel' into edge 2019-02-27 16:26:48 +02:00
Lauri Ojansivu 29c3080eb6 v2.28 2019-02-27 16:21:31 +02:00
Lauri Ojansivu 57516177a0 Update ChangeLog. 2019-02-27 16:17:21 +02:00
Lauri Ojansivu 34d8235551 Add the following new Sandstorm features and fixes:
- All Boards page [so it's possible to go back from subtask board](https://github.com/wekan/wekan/issues/2082)
- Board favorites
- 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 testig Admin Panel.
- Linked Cards and Linked Boards.
- 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:

- Remove Welcome Board from Standalone Wekan, [to fix Welcome board not translated](https://github.com/wekan/wekan/issues/1601).
  Sandstorm Wekan does not have Welcome Board.

Thanks to xet7 !

Closes #2125,
closes #2082,
closes #1430,
closes #1601,
related #2205,
related #2070,
related #1695,
related #1192.
2019-02-27 16:14:14 +02:00
Lauri Ojansivu 8d51245161 Merge branch 'devel' into edge 2019-02-27 06:20:30 +02:00
Lauri Ojansivu 55ad98ecc4 v2.27 2019-02-27 06:18:51 +02:00
Lauri Ojansivu ed04181bb9 Update translations. 2019-02-27 06:16:37 +02:00
Lauri Ojansivu 868fba55cd Update changelog. 2019-02-27 06:14:15 +02:00
Lauri Ojansivu 05351c0ac1 - Fix OIDC error "a.join is not a function" b reverting
configurable OAUTH2_ID_TOKEN_WHITELIST_FIELDS and
  OAUTH2_REQUEST_PERMISSIONS from Wekan v2.22-2.26.

Thanks to xet7 !

Closes #2206,
Related #1874,
Related #1722
2019-02-27 06:02:00 +02:00
Lauri Ojansivu a707129146 Removed console.log. 2019-02-26 16:51:24 +02:00
Lauri Ojansivu 2f3138207c Update translations. 2019-02-26 00:28:01 +02:00
Andrés Manelli dc7286a0ef Fix list view issues. Allow creation of boards from templates 2019-02-25 22:48:32 +01:00
Lauri Ojansivu 5e66119bf0 v2.26 2019-02-25 20:03:36 +02:00
Lauri Ojansivu b751fd11e4 - [Fix OAuth2 requestPermissions](https://github.com/wekan/wekan/commit/5e238bfbfea16940ae29647ae347bbdc0d78efb0).
This maybe makes [Auth0 login possible](https://github.com/wekan/wekan/issues/1722) with OIDC.
  Thanks to GitHub user xet7.
2019-02-25 19:51:17 +02:00
Lauri Ojansivu 5e238bfbfe - Fix OAuth2 requestPermissions.
Thanks to xet7 !

Closes #1722
2019-02-25 19:45:41 +02:00
Lauri Ojansivu 7e20a3cac6 - Add setting [EMAIL_NOTIFICATION_TIMEOUT](https://github.com/wekan/wekan/issues/2203).
Defaut 30000 ms (30s). Thanks to GitHub users ngru and xet7.
2019-02-25 18:13:43 +02:00
Lauri Ojansivu 7c1d6e4d2e - Add setting EMAIL_NOTIFICATION_TIMEOUT. Defaut 30000 ms (30s).
Thanks to xet7 !

Closes #2203
2019-02-25 18:10:36 +02:00
Lauri Ojansivu 13c2157e36 Update translations. 2019-02-25 06:14:43 +02:00
Andrés Manelli 7033315cd3 Add migrations 2019-02-24 12:55:34 +01:00
Andrés Manelli 775476f97c Fix miniscreen render 2019-02-24 11:54:52 +01:00
Andrés Manelli eb62c9ce6a Fix lint errors 2019-02-24 00:13:35 +01:00
Andrés Manelli 60be4df76e Allow swimlane creation from template
Mix lists with same name to avoid duplicates
2019-02-24 00:05:00 +01:00
Andrés Manelli f888cfd565 Allow list creation from template 2019-02-24 00:05:00 +01:00
Andrés Manelli 044126188d Allow card creation from template 2019-02-24 00:05:00 +01:00
Andrés Manelli 0fec711545 Prepare to create card from template 2019-02-24 00:05:00 +01:00
Andrés Manelli 7a6afb8aea Add template search in Add Card menu
Archive all cards in list when list is archived
Remove default board in link popup
Only list non-template boards in card link and search
2019-02-24 00:05:00 +01:00
Andrés Manelli 1e72177991 Avoid links on a template-board
Allow creation of template boards with a linked card
Avoid changing the name of the template-container swimlanes
2019-02-24 00:05:00 +01:00
Andrés Manelli cdf070189e Remove links from templates board for the moment
Insert the correct template type in templates board
Allow independant lists in templates board
Add some helpers
2019-02-24 00:05:00 +01:00
Andrés Manelli 64bf455b29 Save template swimlanes in profile. Fix swimlane view for templates board. Avoid deleting template containers 2019-02-24 00:05:00 +01:00
Andrés Manelli 0a53ee87b9 Add first draft of data model and user interface. No actions. 2019-02-24 00:05:00 +01:00
Lauri Ojansivu ef85b71ee4 v2.25 2019-02-23 19:54:37 +02:00
Lauri Ojansivu ac0133e8fa - Revert file permission changes from v2.24 LDAP changes that
caused snap version to not build.

Thanks to xet7 !
2019-02-23 19:51:33 +02:00
Lauri Ojansivu 25ba6df007 v2.24 2019-02-23 19:23:36 +02:00
Lauri Ojansivu 6d750897a8 - [Add LDAP email] matching support](https://github.com/wekan/wekan-ldap/pull/39) and
[related env variables](https://github.com/wekan/wekan/pull/2198).
  Thanks to GitHub user stevenpwaters.
2019-02-23 19:18:43 +02:00
Lauri Ojansivu a7747c537b Merge pull request #2198 from stevenpwaters/devel
Add LDAP email environment variables
2019-02-23 19:07:16 +02:00
Lauri Ojansivu 65b6a21938 - Add missing text .env to wekan/server/authentication.js.
Thanks to Vanila Chat user .gitignore.
2019-02-23 19:04:02 +02:00
Lauri Ojansivu 4e6e78ccd2 - Add missing text .env
Thanks to Vanila Chat user .gitignore !
2019-02-23 19:00:29 +02:00
Lauri Ojansivu fd5d6546b2 Update translations. 2019-02-23 18:52:44 +02:00
Steven Waters 402d484182 Added LDAP email environment variables
Support for LDAP matching existing accounts with e-mail address.
2019-02-21 09:02:47 +00:00
Lauri Ojansivu 4bf0914f1e v2.23 2019-02-17 18:13:54 +02:00
Lauri Ojansivu 96519296e1 Update translations (sv). 2019-02-15 18:47:21 +02:00
Lauri Ojansivu 03d06685b0 - [Fix authentication dropdown](https://github.com/wekan/wekan/pull/2191).
Thanks to Akuket.
2019-02-15 18:45:41 +02:00
Lauri Ojansivu 7d57c56b17 Merge pull request #2191 from Akuket/feature-improve-authentication
Fix authentication dropdown
2019-02-15 18:41:38 +02:00
guillaume 4ce766853c Fix authentication dropdown 2019-02-15 17:06:05 +01:00
Lauri Ojansivu dc7bbd848c v2.22 2019-02-13 03:14:18 +02:00
Lauri Ojansivu 81744e6523 - Add [configurable](https://github.com/wekan/wekan/issues/1874#issuecomment-462759627)
settings [OAUTH2_ID_TOKEN_WHITELIST_FIELDS and
  OAUTH2_REQUEST_PERMISSIONS](https://github.com/wekan/wekan/commit/b66f471e530d41a3f12e4bfc29548313e9a73c35).
  Thanks to xet7.
2019-02-13 03:07:31 +02:00
Lauri Ojansivu b66f471e53 - Add configurable settings OAUTH2_ID_TOKEN_WHITELIST_FIELDS
and OAUTH2_REQUEST_PERMISSIONS.

Thanks to xet7.

Related #1874
2019-02-13 03:01:10 +02:00
Lauri Ojansivu 202b8a92af - Add Kadira integration. Thanks to GavinLilly.
Closes #2152
2019-02-13 02:24:21 +02:00
Lauri Ojansivu 1e98f6b781 Merge branch 'edge' into devel 2019-02-13 02:15:19 +02:00
Lauri Ojansivu f53e8fbd21 Merge pull request #2187 from GavinLilly/kadira-integration
Kadira integration
2019-02-13 02:13:46 +02:00
Gavin Lilly 8e95871534 Adding wekan-ldap back in to build in the Dockerfile 2019-02-13 00:01:47 +00:00
Gavin Lilly 595a2d2baa Cleaning up docker-compose for merge 2019-02-13 00:00:34 +00:00
Gavin Lilly 227772bc33 Added back wekan-ldap after it's fixed in a separate change 2019-02-12 23:56:40 +00:00
Lauri Ojansivu 2ca98e477d - Fix2: Remove overlap of side bar button with card/list menu button on mobile browser
Thanks to xet7 !

Closes #2183
2019-02-13 01:04:30 +02:00
Angelo Gallarello 477d71e0b9 Fixes 2019-02-12 23:40:12 +01:00
Lauri Ojansivu 677bfc3f6b - Fix: Remove overlap of side bar button with card/list menu button on mobile browser
Thanks to xet7 !

Closes #2183
2019-02-13 00:01:38 +02:00
Lauri Ojansivu c7721b048d - Fix indenting textline. 2019-02-12 23:46:25 +02:00
Lauri Ojansivu 1417f091fe Update translations. 2019-02-12 23:38:24 +02:00
Lauri Ojansivu d22964bcfd v2.21 2019-02-12 03:24:32 +02:00
Lauri Ojansivu 59314ab17d - Add OIDC claim mapping parameters to docker-compose.yml/Snap/Source.
Thanks to xet7 !
2019-02-12 03:09:30 +02:00
Gavin Lilly 5c083d99e2 Moved to meteor-apm-agent and removed Wekan LDAP to test if working 2019-02-11 23:16:37 +00:00
Gavin Lilly d3abb0756e Pulled Wekan-LDAP locally for debug 2019-02-11 20:12:53 +00:00
Lauri Ojansivu 4de9848e34 Merge pull request #2182 from danpatdav/oidc
Add parameters for OIDC claim mapping
2019-02-11 20:30:01 +02:00
Daniel Davis bdbbb12f96 Added parameters for OIDC claim mapping
These mapping parameters take advantage of new code in salleman-oidc 1.0.12 to override the default claim names provided by the userinfo endpoint.
2019-02-11 10:48:20 -06:00
Gavin Lilly c1ea3f49ca Merge branch 'devel' of github.com:wekan/wekan into devel 2019-02-11 16:43:57 +00:00
Gavin Lilly 905c45f225 Replaced Kadira by meteor-apm-agent 2019-02-11 16:43:52 +00:00
Daniel Davis 352e5c6cb0 Bump salleman-oidc to 1.0.12 2019-02-11 10:41:24 -06:00
Lauri Ojansivu 2d291c8f5e v2.20 2019-02-11 16:45:11 +02:00
Lauri Ojansivu 86630fa1e0 Update changelog. 2019-02-11 16:38:23 +02:00
Lauri Ojansivu 8e02170dd1 - Add option DEBUG=true for docker-compose.yml/Snap/Source.
Thanks to xet7 !
2019-02-11 16:32:24 +02:00
Lauri Ojansivu 9edf95ec93 Merge pull request #2181 from danpatdav/debug-oidc
Added debug flag and bumped salleman package version
2019-02-11 16:11:15 +02:00
Lauri Ojansivu 2add875a38 Update translations. 2019-02-11 16:09:39 +02:00
Daniel Davis b20309f7aa Syntax 2019-02-11 07:46:24 -06:00
Gavin Lilly 8996df5c09 Added Kadira using meteor add method 2019-02-09 23:37:01 +00:00
Gavin Lilly 7b5f02b4c8 Added Kadira packages and env settings in Docker Compose 2019-02-09 23:22:22 +00:00
Lauri Ojansivu fc0287a829 Update translations. 2019-02-09 21:22:36 +02:00
Lauri Ojansivu ed8bca5394 Update translations (es). 2019-02-09 00:04:51 +02:00
Lauri Ojansivu 9458f4011d v2.19 2019-02-09 00:02:49 +02:00
Lauri Ojansivu f1bd36a3b8 - Remove oplog. Need to think how to do it properly.
Thanks to xet7 !
2019-02-08 23:58:13 +02:00
Lauri Ojansivu f060e02fc0 v2.18 2019-02-08 20:56:45 +02:00
Lauri Ojansivu 0fa2e5d3a0 Add commit link to changelog. 2019-02-08 20:52:28 +02:00
Lauri Ojansivu 6d0055ecb5 Add issue link to changelog. 2019-02-08 20:49:39 +02:00
Lauri Ojansivu 2d3ce9c290 Add commit link to changelog. 2019-02-08 20:48:05 +02:00
Lauri Ojansivu 796b276d02 Update changelog. 2019-02-08 20:37:30 +02:00
Lauri Ojansivu ed98b5c807 Update changelog. 2019-02-08 20:09:42 +02:00
Lauri Ojansivu f1da7dcb0c Merge pull request #2174 from bentiss/fix-sw-reordering
Fix swimlanes sorting
2019-02-08 19:49:50 +02:00
Lauri Ojansivu 35a539eee2 Update translations. 2019-02-08 19:48:12 +02:00
Lauri Ojansivu 79ffb7d502 - Add oplog to snap mongodb.
Thanks to xet7 !
2019-02-08 19:43:21 +02:00
Benjamin Tissoires a2e6f621a2 Fix swimlanes sorting
Since 7cc185ac "Properly fix horizontal rendering on Chrome and Firefox"

The rendering of the new design of the swimlanes was correct, but this
commit broke the reordering capability. Having the swimlane header at
the same level than the lists of cards makes the whole sortable
pattern fail.

2 solutions:
- revert to only have 1 div per swimlane. But this introduces the firefox
  bug mentioned in 7cc185ac, so not ideal
- force the sortable pattern to do what we want.

To force the sortable pattern, we need:
- add in the helper a clone of the list of cards (to not just move the
  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.

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.

Fixes #2159
2019-02-08 17:37:20 +01:00
Lauri Ojansivu 96e97143f2 Update translations. 2019-02-08 13:06:35 +02:00
Lauri Ojansivu 4126a1a808 Translate also Admin Panel/Layout/Display Authentication Method and Default Authentication Method. Thanks to Akuket and xet7 ! 2019-02-08 12:46:07 +02:00
Lauri Ojansivu 3ce902123f Lint also async. Thanks to Akuket ! 2019-02-08 12:44:48 +02:00
Lauri Ojansivu 7125357a44 Merge remote-tracking branch 'upstream/feature-improve-authentication' into feature-improve-authentication 2019-02-08 12:33:39 +02:00
guillaume ec453b89b8 Fix lints 2019-02-07 11:38:04 +01:00
Daniel Davis 303404acc6 Bumped salleman packages to 1.0.11
1.0.11 includes new debugging code
2019-02-06 10:18:05 -06:00
Daniel Davis f11d42e72d Add a debug argument
Implementing this for OIDC debugging, but I think it will be broadly useful for runtime debugging.
2019-02-06 10:12:32 -06:00
Lauri Ojansivu 329c8d64a8 v2.17 2019-02-04 21:47:50 +02:00
Lauri Ojansivu 698ce8f0e6 Update translations (sv). 2019-02-04 21:07:36 +02:00
Lauri Ojansivu b06e11ba09 Merge pull request #2164 from gil0109/edge
Fix trailing spaces for OIDC fix
2019-02-04 20:23:41 +02:00
Karim Gillani d689a7408b Fix trailing spaces 2019-02-04 09:36:21 -08:00
Lauri Ojansivu c899218fb9 Merge pull request #2162 from gil0109/edge
OIDC BoardView Fix
2019-02-04 19:30:24 +02:00
Karim Gillani c42f2a05d2 OIDC BoardView Fix 2019-02-04 08:24:10 -08:00
Lauri Ojansivu 70ed552e1a Update translations. 2019-02-03 15:45:00 +02:00
Lauri Ojansivu 9a07649b8a v2.16 2019-02-03 05:18:50 +02:00
Lauri Ojansivu 9a6ac544dd - Fix Sandstorm open card on public board, part 2.
Thanks to ChronikEwok !
2019-02-03 05:12:50 +02:00
Lauri Ojansivu 06a1e26655 Add missing text. 2019-02-03 03:06:54 +02:00
Lauri Ojansivu 626e7c2c61 v2.15 2019-02-03 02:31:51 +02:00
Lauri Ojansivu a7aeb491ba Update changelog. 2019-02-03 02:25:14 +02:00
Lauri Ojansivu 7ba8f72d7b - [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).

Thanks to ChronikEwok !

Closes #1623
2019-02-03 02:18:35 +02:00
Lauri Ojansivu d0f74d7a99 Add missing text. 2019-02-02 21:55:50 +02:00
Lauri Ojansivu 7f33fa5368 v2.14 2019-02-02 21:00:16 +02:00
Lauri Ojansivu 0ab97266f6 - [Fix Sandstorm export board from web](https://github.com/wekan/wekan/issues/2157).
- [Fix Error when logging in to Wekan REST API when using Sandstorm Wekan](https://github.com/wekan/wekan/issues/1279).
  Sandstorm API works this way: Make API key, and from that key copy API URL and API KEY to below. It saves Wekan board to file.
  `curl http://Bearer:APIKEY@api-12345.local.sandstorm.io:6080/api/boards/sandstorm/export?authToken=#APIKEY > wekanboard.json`
  If later API key does not work, you need to remove it and make a new one.

Thanks to xet7 !
2019-02-02 20:57:47 +02:00
Lauri Ojansivu 32f896f19d - [Fix Sandstorm export board from web](https://github.com/wekan/wekan/issues/2157).
- [Fix Error when logging in to Wekan REST API when using Sandstorm Wekan](https://github.com/wekan/wekan/issues/1279).
  Sandstorm API works this way: Make API key, and from that key copy API URL and API KEY to below. It saves Wekan board to file.
  `curl http://Bearer:APIKEY@api-12345.local.sandstorm.io:6080/api/boards/sandstorm/export?authToken=#APIKEY > wekanboard.json`
  If later API key does not work, you need to remove it and make a new one.

Closes #2157,
closes #1279
2019-02-02 20:52:09 +02:00
Lauri Ojansivu de9965213a - Fix lint errors.
Thanks to xet7 !
2019-02-01 21:26:04 +02:00
guillaume c2118f4830 Improve authentication 2019-02-01 19:00:44 +01:00
Lauri Ojansivu 6f0e0748e1 v2.13 2019-02-01 17:15:15 +02:00
Lauri Ojansivu 8e5fc13ba4 Update changelog with latest changes from bentiss. 2019-02-01 17:09:05 +02:00
Lauri Ojansivu 7a35099fb9 - When writing to minicard, press Shift-Enter on minicard to go to next line below,
to continue writing on same minicard 2nd line.

Thanks to bentiss!
2019-02-01 17:03:59 +02:00
Lauri Ojansivu d08bee6817 Merge branch 'bentiss-infinite-scrolling' into edge 2019-02-01 16:54:41 +02:00
Lauri Ojansivu 4fc96904d6 Merge branch 'infinite-scrolling' of https://github.com/bentiss/wekan into bentiss-infinite-scrolling 2019-02-01 16:05:46 +02:00
Benjamin Tissoires 66bc1f28dd Use infinite-scrolling on lists
This allows to reduce the loading time of a big board.

Note that there is an infinite scroll implementation in the mixins,
but this doesn't fit well as the cards in the list can have arbitrary
height.

The idea to rely on the visibility of a spinner is based on
http://www.meteorpedia.com/read/Infinite_Scrolling
2019-02-01 14:58:02 +01:00
Benjamin Tissoires 30d082e709 Use infinite-scrolling on lists
This allows to reduce the loading time of a big board.

Note that there is an infinite scroll implementation in the mixins,
but this doesn't fit well as the cards in the list can have arbitrary
height.

The idea to rely on the visibility of a spinner is based on
http://www.meteorpedia.com/read/Infinite_Scrolling
2019-02-01 13:53:45 +01:00
Lauri Ojansivu 1b11123797 v2.12 2019-01-31 19:32:27 +02:00
Lauri Ojansivu 654c2add0d - [Bumped the salleman oidc packages versions to include an upstream bug fix](https://github.com/wekan/wekan/commit/361faa6646556de68ad78dc90d9eb9f78956ce0f).
Thanks to danpatdav !
2019-01-31 19:19:47 +02:00
Lauri Ojansivu 6d179d6d3d Merge pull request #2149 from danpatdav/salleman-1.0.10
Bumped the salleman oidc packages versions to include an upstream bug…
2019-01-31 19:10:03 +02:00
Daniel Davis 361faa6646 Bumped the salleman oidc packages versions to include an upstream bug fix 2019-01-31 11:45:55 -05:00
Lauri Ojansivu 7fc22ba0b7 v2.11 2019-01-31 14:27:36 +02:00
Lauri Ojansivu 9c82e6ab68 Update translations. 2019-01-31 14:23:57 +02:00
Lauri Ojansivu 78c18d4ffe Update changelog. 2019-01-31 14:23:23 +02:00
Lauri Ojansivu 978dafc62b - Fix: Bug: Not logged in public board page has calendar.
Thanks to xet7 !

Closes #2061
2019-01-31 14:19:14 +02:00
Lauri Ojansivu 8919d8fb7d Fix typo. 2019-01-30 18:52:14 +02:00
Lauri Ojansivu cdb7dd9175 Fix typo. 2019-01-30 18:49:38 +02:00
Lauri Ojansivu d6b7c17402 v2.10 2019-01-30 18:17:15 +02:00
Lauri Ojansivu 7e247c14b2 Update translations (mk). 2019-01-30 18:07:23 +02:00
Lauri Ojansivu e6af48fc4a Update changelog with latest changes. 2019-01-30 18:04:44 +02:00
Lauri Ojansivu 9703843602 - Revert [Sandstorm API changes](https://github.com/wekan/wekan/commit/be03a191c4321c2f80116c0ee1ae6c826d882535
that were done at [Wekan v2.05](https://github.com/wekan/wekan/blob/devel/CHANGELOG.md#v205-2019-01-27-wekan-release)
  to fix #2143.

Thanks to pantraining and xet7 !

Closes #2143
2019-01-30 17:56:53 +02:00
Lauri Ojansivu d53a7ce5f1 Update translations. 2019-01-30 16:06:31 +02:00
Lauri Ojansivu 6e4a6515e0 - Translations: Add Macedonian. 2019-01-30 02:18:27 +02:00
Lauri Ojansivu bf304ffde5 - Translations: Add Macedonian. 2019-01-30 02:16:55 +02:00
Lauri Ojansivu 7cefe9d367 Update translations. 2019-01-29 18:56:11 +02:00
Lauri Ojansivu 12cccc25cc v2.09 2019-01-28 18:29:46 +02:00
Lauri Ojansivu 34f62cb3b3 - [Fix vertical automatic scrolling when opening a card](https://github.com/wekan/wekan/commit/820d3270935dc89f046144a7bbf2c8277e2484bc).
Thanks to bentiss !
2019-01-28 18:23:28 +02:00
Lauri Ojansivu 820d327093 Merge pull request #2140 from bentiss/scrolling-fixes
automatic scroll: fix vertical automatic scrolling when opening a card
2019-01-28 18:12:51 +02:00
Lauri Ojansivu 04279342a4 v2.08 2019-01-28 17:26:18 +02:00
Benjamin Tissoires 1cfe084cc2 automatic scroll: fix vertical automatic scrolling when opening a card
We actually want the vertical scrolling to be fixed when opening the
card details.
I am not sure where the `100` value comes from, but this makes the
scrolling happy on the swimlane view and on the lists view.
2019-01-28 16:21:43 +01:00
Lauri Ojansivu 4629cc1b19 Update translations. 2019-01-28 17:08:47 +02:00
Lauri Ojansivu b4e87466ba Merge branch 'bentiss-horizontal-fixes' into edge 2019-01-28 17:06:56 +02:00
Benjamin Tissoires ae82f43078 make the max height of the swimlane not too big
We should take a full screen minus the header height
2019-01-28 15:34:12 +01:00
Benjamin Tissoires 7cc185ac57 Properly fix horizontal rendering on Chrome and Firefox
This reverts commit 74cf9e2573 "- Fix Firefox left-rigth scrollbar."

This reverts commit 9dd8216dfb.
"- Fix cards below swimlane title in Firefox by making
[previous fix](https://github.com/wekan/wekan/pull/2132/commits/f7c6b7fce237a6dbdbbd6d728cfb11ad3f4378eb)"

And this partially reverts commit dd88eb4cc

The root of the issue was that I was adding a new div and nesting
the list of lists in this new list. This resulted in some
weird behavior that Firefox could not handled properly
Revert to a code colser to v2.02, by just having the
swimlane header in a separate line, and keep only one
flex element.

fixes #2137
2019-01-28 15:33:47 +01:00
Lauri Ojansivu 4d37e1d640 v2.07 2019-01-28 02:58:02 +02:00
Lauri Ojansivu 74cf9e2573 - Fix Firefox left-rigth scrollbar.
Thanks to xet7 !

Closes #2137
2019-01-28 02:50:25 +02:00
Lauri Ojansivu 3c2de2a38d v2.06 2019-01-27 19:11:57 +02:00
Lauri Ojansivu 9dd8216dfb - Fix cards below swimlane title in Firefox by making [previous fix](https://github.com/wekan/wekan/pull/2132/commits/f7c6b7fce237a6dbdbbd6d728cfb11ad3f4378eb)
Firefox-only.

Thanks to xet7 !
2019-01-27 19:03:50 +02:00
Lauri Ojansivu 905ddafe41 v2.05 2019-01-27 18:27:21 +02:00
Lauri Ojansivu 62a0e57f38 Update translations. 2019-01-27 18:18:20 +02:00
Lauri Ojansivu be03a191c4 - Try to have some progress on Wekan Sandstorm API. I did not get it fully working yet.
Thanks to xet7.
2019-01-27 18:16:27 +02:00
Lauri Ojansivu cf7d3b5a7e - Add back scrollbars that [were hidden when trying to fix another
bug](https://github.com/wekan/wekan/pull/2132/commits/f7c6b7fce237a6dbdbbd6d728cfb11ad3f4378eb).

Thanks to xet7 !

Closes #2134
2019-01-27 18:09:53 +02:00
Lauri Ojansivu 939d8a7078 v2.04 2019-01-26 20:20:54 +02:00
Lauri Ojansivu db62a51d5a Update translations. 2019-01-26 19:48:28 +02:00
Lauri Ojansivu 9ebf5751fd Merge pull request #2132 from bentiss/edge
Fix for v2.03
2019-01-26 19:45:56 +02:00
Benjamin Tissoires f7c6b7fce2 ui: fix rendering issue on firefox
When a list have more cards that can fit in the screen, the members icons
are drawn on top of the swimlane below and the scrollbar is not available.

According to https://github.com/utatti/perfect-scrollbar the container
must have an `overflow: hidden` css style.

When changing the swimlane header from vertical to horizontal, dd88eb4cc1
broke this which led to this weird bug.
2019-01-26 17:38:51 +01:00
Benjamin Tissoires 850b34ce33 ifttt: card actions: simplify the logic for setting the color
Jade allows a simpler approach than my initial manual update.
Just declare the correct ReactiveVar and accessor, and done.
2019-01-26 17:38:51 +01:00
Lauri Ojansivu 1a64a88d3d Waiting for bugfix. 2019-01-25 23:06:34 +02:00
Lauri Ojansivu be8f00ab8a v2.03 2019-01-25 22:18:39 +02:00
Lauri Ojansivu ddedb8a48b Update translations (de). 2019-01-25 22:14:09 +02:00
Lauri Ojansivu ba392362ee Update ChangeLog for all that huge amount of contributions from bentiss. 2019-01-25 22:09:40 +02:00
Lauri Ojansivu 8fbd47e199 Merge pull request #2130 from bentiss/color-lists
lists-color: only colorize the bottom border
2019-01-25 20:02:26 +02:00
Lauri Ojansivu 6aaf0c812a Update translations. 2019-01-25 19:25:46 +02:00
Benjamin Tissoires 33977b2282 lists-color: only colorize the bottom border
And make the background clearer to visually separate the header from
the list of cards
2019-01-25 18:13:37 +01:00
Lauri Ojansivu 37f70bdf0f Merge branch 'devel' into edge 2019-01-25 19:13:08 +02:00
Lauri Ojansivu 5d6203f5f9 Merge pull request #2128 from bentiss/color-lists
Color lists
2019-01-25 19:05:44 +02:00
Lauri Ojansivu 082aabc735 Merge pull request #2127 from bentiss/fix-set-member
api: fix set_board_member_permission
2019-01-25 19:05:26 +02:00
Lauri Ojansivu ba15526516 Merge pull request #2126 from bentiss/color-swimlanes
Color for swimlanes
2019-01-25 19:05:09 +02:00
Lauri Ojansivu 4a2576fbc2 Merge pull request #2121 from bentiss/color
Color picker in IFTTT
2019-01-25 19:04:45 +02:00
Benjamin Tissoires 97d95b4bcb ui: lists: make sure all lists boxes are the same height
When `Show card count` is enabled, the lists with the card counts have
two lines of text while the lists without have only one.

This results in the box around the list headers are not of the same size
and this is visible when setting a color to the list.
2019-01-25 15:58:52 +01:00
Benjamin Tissoires d0a9d8c581 colors: add per list color
Hamburger menu only.

Note that I am definitively not responsible for the resulting Christmas
tree.

fixes #328
2019-01-25 15:56:40 +01:00
Benjamin Tissoires 78c779faaf client: lists headers: use padding instead of margin
No visual changes but allows to set a background color to the list header.
2019-01-25 14:25:28 +01:00
Benjamin Tissoires 8d81aca439 api: fix set_board_member_permission
If the data is passed as a boolean, through json, data.toLowerCase()
raises an error.

Also define query which we are returning in case of success.
2019-01-25 14:15:08 +01:00
Benjamin Tissoires 6c3dbc3c6f api: new_card: add the card at the end of the list
If we keep the `0` value, the card might be inserted in the middle of the
list, making it hard to find it later on.

Always append the card at the end of the list by setting a sort value
based on the number of cards in the list.
2019-01-25 12:44:27 +01:00
Benjamin Tissoires b5411841cf api: fix the sort field when inserting a swimlane or a list
This has the side effect of always inserting the element at the end.
2019-01-25 11:04:56 +01:00
Benjamin Tissoires 5c6a725712 Make sure Swimlanes and Lists have a populated sort field
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.

This happens on the first swimlane created with the new board, or when
a swimlane or a list gets added through the API.
2019-01-25 11:04:56 +01:00
Benjamin Tissoires 03efeaeb1a Add colors to swimlanes
fixes #1688
2019-01-25 11:04:40 +01:00
Benjamin Tissoires c075187088 swimlane: insert the new swimlane after the one we clicked on 2019-01-24 20:52:03 +01:00
Benjamin Tissoires 416b17062e Remove the 'Add Swimlane' entry and replace it by a plus sign
Still need to create the swimlane right after the one that has been
created
2019-01-24 20:51:38 +01:00
Benjamin Tissoires dd88eb4cc1 swimlane-view: have the swimlane header horizontal
This allows to use the header as a separator between swimlanes.

This will be most useful when we can set the background color of these
headers.
2019-01-24 20:50:42 +01:00
Benjamin Tissoires 5fa0821e07 card colors: remove unused variables 2019-01-24 20:50:42 +01:00
Benjamin Tissoires 6e9bad5772 IFTTT: card colors: add an actual white entry
To unset the color through the IFTTT, we need a white entry.
However, we do not want to show the white enry in the hamburger
`Set Color` entry.

We can also give the `white` capability to the API, it won't hurt
and be more straightforward.
2019-01-24 16:51:06 +01:00
Benjamin Tissoires 5769d438a0 rules: set card color: use the color picker 2019-01-24 16:51:06 +01:00
Benjamin Tissoires 8a48ff96ef set card colors: properly set the title of the popups 2019-01-24 16:51:06 +01:00
Benjamin Tissoires 0782c97d4f card colors: force overwrite of text color
This allows to show checks on the color with the correct color instead
of plain white.
2019-01-24 09:32:38 +01:00
Lauri Ojansivu 542cc75dc4 Update translations (tr). 2019-01-22 19:27:32 +02:00
Lauri Ojansivu 1b445ad789 v2.02 2019-01-22 17:31:57 +02:00
Lauri Ojansivu 9baed4256a Update translations (he). 2019-01-22 17:28:19 +02:00
Lauri Ojansivu 2b4df7e8c7 Update changelog. 2019-01-22 17:26:48 +02:00
Lauri Ojansivu 6e28dec712 Merge pull request #2119 from bentiss/fix-color-translation
Fix: Translate and add colors to IFTTT Rules dropdown."
2019-01-22 16:45:29 +02:00
Benjamin Tissoires ba9f0ca672 Fix: Translate and add colors to IFTTT Rules dropdown."
This fixes commit 44e4df2492.

When the label has a name, not setting `translatedname` results in a
blank item in the IFTTT label trigger.
2019-01-22 15:40:54 +01:00
Lauri Ojansivu 7261ccdc90 Update translations. 2019-01-22 16:32:43 +02:00
Lauri Ojansivu 6fbadbe5bc Merge pull request #2118 from bentiss/export
Allow to call export from the API
2019-01-22 16:29:42 +02:00
Benjamin Tissoires 26d7ba72aa api: export board: allow authentication through generic authentication
This allows to retrieve the full export of the board from the API.
When the board is big, retrieving individual cards is heavy for both
the server and the number of requests.

Allowing the API to directly call on export and then treat the data
makes the whole process smoother.
2019-01-22 15:14:01 +01:00
Lauri Ojansivu 44e4df2492 - Translate and add colors to IFTTT Rules dropdown.
Thanks to xet7 !
2019-01-22 15:22:31 +02:00
Lauri Ojansivu d8482b533a Merge pull request #2117 from bentiss/color
Set the card color with the color picker
2019-01-22 14:57:00 +02:00
Benjamin Tissoires 2082480ddd Set the card color with the color picker
When triggered from the hamburger
2019-01-22 13:45:08 +01:00
Lauri Ojansivu e8c4e394fd Update translations. 2019-01-22 14:01:07 +02:00
Lauri Ojansivu 0c5052ebae Merge pull request #2116 from bentiss/color
Add per card color
2019-01-22 13:02:14 +02:00
Lauri Ojansivu d3b2ae1975 Update translations. 2019-01-22 12:12:18 +02:00
Benjamin Tissoires f4f0f489eb add action: set card color 2019-01-22 11:10:29 +01:00
Benjamin Tissoires 3368ebf067 color: add option in hamburger to change the card color
Currently only dropdown, no palette

Fixes: #428
2019-01-22 11:10:29 +01:00
Benjamin Tissoires b0ac10d94a Add the ability to change the card background
Currently the only way to set it is via the REST API
2019-01-22 11:10:29 +01:00
Lauri Ojansivu c87a8b86ae - Added missing translation for 'days'
Thanks to Chartman123 !

Closes #2114
2019-01-21 16:26:55 +02:00
Lauri Ojansivu d5d71d7097 Update upcase/lowercase. 2019-01-20 00:53:59 +02:00
Lauri Ojansivu c960a8b909 - [OpenAPI and generating of REST API Docs](https://github.com/wekan/wekan/pull/1965).
Thanks to bentiss.
2019-01-19 21:14:32 +02:00
Lauri Ojansivu 3257f78d24 Merge branch 'bentiss-openapi' into devel 2019-01-19 21:09:42 +02:00
Lauri Ojansivu a9133bf933 Merge branch 'openapi' of https://github.com/bentiss/wekan into bentiss-openapi 2019-01-19 20:55:14 +02:00
Lauri Ojansivu 8e8147b5ac - Fix License to 2019. https://github.com/wekan/wekan/pull/2112
Thanks to ajRiverav !
2019-01-19 20:45:43 +02:00
Lauri Ojansivu 711f4de3d7 Merge pull request #2112 from ajRiverav/devel
update license to year 2019
2019-01-19 20:43:42 +02:00
Lauri Ojansivu 68998e062e Update translations. 2019-01-19 20:42:41 +02:00
AJ Rivera f40d1f6bd5 update license to year 2019 2019-01-18 17:25:48 -04:00
Benjamin Tissoires 048c3cd14d snap: also generate the html doc of the REST API
Same for snap: embed the documentation of the REST API
in the snap.
2019-01-18 19:33:08 +01:00
Benjamin Tissoires 08ca353205 openapi: generate the HTML documentation too and embed it in the image
Aligning with the requirement to run the container without
external resources: embed the documentation of the REST API
directly in the Docker image.
2019-01-18 19:33:08 +01:00
Benjamin Tissoires c83cdc9335 Add openapi in snaps
Same thing than in the Dockerfile, snaps need
to embed the current openapi yaml file.
2019-01-18 17:07:18 +01:00
Benjamin Tissoires e91e3c076d snapcraft add nodejs and npm as build dependencies
When pulling the docker container snapcore/snapcraft
to build the snap, those 2 packages are not present
by default leading to a failure in the snap creation.

Note: it is good to call `apt-get update` before
`snapcraft` or the build will fail.
2019-01-18 17:05:41 +01:00
Benjamin Tissoires 8be7eec2ca openapi: make the code python 3.5 compatible
It is common to use Ubuntu 16.04 to build snaps. For example,
the official docker container to build snaps is using this old
distribution.

However, Ubuntu 16.04 ships Python 3.5.X which is not compatible
with the f-strings in generate_openapi.py. This is sad, because
we need to use the `.format()` syntax to make it compatible.
2019-01-18 17:03:12 +01:00
Benjamin Tissoires acc4493517 Generate the OpenAPI in the Dockerfile
When we build the docker container, we need to generate the openapi
description in it so the geenrated API actually matches the code
the container is running.
2019-01-18 17:03:05 +01:00
Benjamin Tissoires ff467402c0 RESTAPI: Add some JSDoc
So we can have a decent REST API documentation generated.
2019-01-18 17:02:56 +01:00
Benjamin Tissoires 49d3eb5a3f Add OpenAPI description of the REST API
The API is generated by a custom script that parses the models directory.
Once the API is generated, tools like https://editor.swagger.io/ or
Python bravado can parse the file and generate a language friendly API.

Note that the tool generate an OpenAPI 2.0 version because bravado
doesn't handle OpenAPI 3.0.

The script also parses the JSDoc with a custom parser to allow
customization of the description of the fields.
2019-01-18 17:01:11 +01:00
Benjamin Tissoires 889aa6d652 Revert "models: boards: add PUT members entry point"
This reverts commit f61942e5cb.

Adding a member is actually already handled by
POST', '/api/boards/:boardId/members/:userId/add'

So this function is purely duplicated.

Not to mention that the '/add' one allows to set permissions
so this one in this commit is less interesting.
2019-01-18 17:01:03 +01:00
Lauri Ojansivu 78e0457843 Update translations (ca). 2019-01-15 15:47:46 +02:00
Lauri Ojansivu 7f568faef6 Fix typo.
Thanks to xorander00 !

Closes #2101
2019-01-13 20:12:57 +02:00
Lauri Ojansivu be045f3156 Fix typo.
Thanks to xorander00 !

Closes #2101
2019-01-13 20:10:20 +02:00
Lauri Ojansivu 3b5e81d514 Update translations. 2019-01-11 16:34:02 +02:00
Lauri Ojansivu 346bdf2ca8 v2.01 2019-01-06 13:29:04 +02:00
Lauri Ojansivu 501289786c Update translations (cs and he). 2019-01-06 13:26:10 +02:00
Lauri Ojansivu 24ffe223be v2.00 2019-01-04 20:07:22 +02:00
Lauri Ojansivu 32c561d78e Update translations. 2019-01-04 20:03:16 +02:00
Lauri Ojansivu ff65b37336 v1.99 2019-01-04 12:17:05 +02:00
Lauri Ojansivu 3f698ca012 Update translations. 2019-01-04 12:07:03 +02:00
Lauri Ojansivu 785bc2556e - Merge duplicate translation.
Thanks to xet7 !
2019-01-04 11:26:38 +02:00
Lauri Ojansivu e198282b4d - Remove duplicate translation.
Thanks to xet7 !
2019-01-04 11:18:26 +02:00
Lauri Ojansivu 24e59c378b Merge branch 'edge' into devel 2019-01-04 11:14:18 +02:00
Lauri Ojansivu c1b4aae573 Merge branch 'Angtrim-feature-rules' into devel 2019-01-04 11:12:54 +02:00
Lauri Ojansivu f5339ef97f - Fix lint errors.
Thanks to xet7 !
2019-01-04 11:00:33 +02:00
Lauri Ojansivu 2b53fae16f Merge branch 'feature-rules' of https://github.com/Angtrim/wekan into Angtrim-feature-rules 2019-01-04 09:23:54 +02:00
Lauri Ojansivu 1d3466c7a0 Update translations (pt-BR). 2019-01-04 09:05:57 +02:00
Angelo Gallarello 4d8b2029d2 Fixed errors 2019-01-02 22:51:00 +01:00
Angelo Gallarello 8ad0da2109 Added create card action 2019-01-02 22:32:08 +01:00
Angelo Gallarello 12827ef0a6 Added notes 2019-01-02 15:52:58 +01:00
Angelo Gallarello 4c399a41f7 Add action: create checklist with items 2019-01-02 15:42:10 +01:00
Angelo Gallarello 25968a35cc Finished triggers improvements 2019-01-02 14:45:45 +01:00
Lauri Ojansivu 548d095223 - Add find.sh bash script that ignores extra directories when searching.
xet7 uses this a lot when developing.

Thanks to xet7 !
2019-01-02 13:22:21 +02:00
Lauri Ojansivu 1683bcb3e5 v1.98 2019-01-01 14:08:44 +02:00
Lauri Ojansivu 991843acb0 - [Mobile fixes](https://github.com/wekan/wekan/pull/2084), thanks to hupptechnologies:
- Move home button / avatar bar from bottom to top. So at top first is home button / avatar, then others.
  - 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.
2019-01-01 14:03:24 +02:00
Lauri Ojansivu 8b85437b6b Merge branch 'hupptechnologies-wekan-mobile-use-issue' into devel 2019-01-01 13:59:34 +02:00
Lauri Ojansivu 6259f0de70 - Add removed packages back.
Thanks to xet7 !
2019-01-01 13:42:13 +02:00
Lauri Ojansivu d86bc1d84d Merge branch 'wekan-mobile-use-issue' of https://github.com/hupptechnologies/wekan into hupptechnologies-wekan-mobile-use-issue 2019-01-01 13:41:26 +02:00
Lauri Ojansivu 88bdb0815d Update translations (cs). 2019-01-01 13:40:22 +02:00
hupptechnologies 97f64fe5e6 Issue: Hard to use Wekan on mobile because of UI/UX issues #953
Resolved #953
2019-01-01 16:35:18 +05:30
Angelo Gallarello 196fef3a1b Added popup 2018-12-31 00:45:11 +01:00
Angelo Gallarello a2d756074f Added swimlane trigger 2018-12-30 22:08:34 +01:00
Angelo Gallarello b2f23d619d Triggers by username, updated desc 2018-12-29 17:36:57 +01:00
Angelo Gallarello 9d1d66b0f5 Added triggers by username 2018-12-29 16:59:50 +01:00
Lauri Ojansivu c61e44d55b - Add optional Nginx reverse proxy config to docker-compose.yml and nginx directory.
Thanks to MyTheValentinus !
2018-12-28 17:26:30 +02:00
Lauri Ojansivu 76c5c283b9 - docker-compose.yml back to MongoDB 3.2.21 because 3.2.22 MongoDB container does not exist yet.
Thanks to xet7 !
2018-12-27 00:35:39 +02:00
Lauri Ojansivu 2d88afb77e - docker-compose.yml back to MongoDB 3.2.21 because 3.2.22 MongoDB container does not exist yet.
Thanks to xet7 !
2018-12-26 23:57:00 +02:00
Lauri Ojansivu 7fd09761cb v1.97 2018-12-26 22:49:14 +02:00
Lauri Ojansivu cb53c53c2b - Use 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 xet7 !
2018-12-26 22:32:25 +02:00
Lauri Ojansivu 77ff6349f6 - Use 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 xet7 !
2018-12-26 22:29:04 +02:00
Lauri Ojansivu 879ad4001d Update translations (he). 2018-12-26 11:40:31 +02:00
Lauri Ojansivu e1436ab964 Update rebuild script. 2018-12-24 23:54:57 +02:00
Lauri Ojansivu 007bea0a4b Update rebuild script. 2018-12-24 23:50:43 +02:00
Lauri Ojansivu 67b76558fc v1.96 2018-12-24 18:26:33 +02:00
Lauri Ojansivu f60429efdf - Comment out docker build from source part of docker-compose.yml
Thanks to xet7 !
2018-12-24 18:24:32 +02:00
Lauri Ojansivu f140e20c6f - Revert "Improve authentication" and "Default Authentication Method"
to make login work again.
- Fixes to docker-compose.yml so that Wekan Meteor 1.6.x version would work.
  Most likely Meteor 1.8.x version is still broken.

Thanks to xet7 !
2018-12-24 18:22:30 +02:00
Lauri Ojansivu c502ab9500 - Revert "Improve authentication" and "Default Authentication Method"
to make login work again.
- Fixes to docker-compose.yml so that Wekan Meteor 1.6.x version would work.
  Most likely Meteor 1.8.x version is still broken.

Thanks to xet7 !
2018-12-24 18:18:41 +02:00
Lauri Ojansivu 425ae55422 Update translations (fa). 2018-12-24 16:41:36 +02:00
Lauri Ojansivu e9006a234b - Fix docker-compose.yml to use Meteor 1.6.x based Wekan,
because currently Meteor 1.8.x based version is broken.

Thanks to xet7 !
2018-12-24 16:29:53 +02:00
Lauri Ojansivu ef6aa4e415 - Move wekan-postgresql back to https://github.com/wekan/wekan-postgresql
because there is many differences in database settings.

Thanks to xet7 !
2018-12-22 21:40:34 +02:00
Lauri Ojansivu 1901c3c798 Fix typo. 2018-12-22 19:04:43 +02:00
Lauri Ojansivu 6cb046f29e Update translations (de). 2018-12-22 18:57:23 +02:00
Lauri Ojansivu e7e67e300b - [Combine all docker-compose.yml files](https://github.com/wekan/wekan/commit/3f948ba49ba7266c436ff138716bdcae9e879903). Thanks to xet7. 2018-12-22 18:46:45 +02:00
Lauri Ojansivu 3f948ba49b - Combine all docker-compose.yml files.
Thanks to xet7 !
2018-12-22 18:44:08 +02:00
Lauri Ojansivu 96f33e4052 v1.95 2018-12-21 22:23:12 +02:00
Lauri Ojansivu 68d60f4f64 - Upgrade to node v8.14.1
Thanks to xet7 !
2018-12-21 22:12:54 +02:00
Lauri Ojansivu f7153da83d - Upgrade to node v8.14.1
Thanks to xet7 !
2018-12-21 22:11:43 +02:00
Lauri Ojansivu 16d53897c7 - [Drag handles and long press on mobile when using desktop mode of mobile
browser](https://github.com/wekan/wekan/pull/2067). Thanks to hupptechnologies.
2018-12-21 21:56:30 +02:00
Lauri Ojansivu 32d405bca4 Merge branch 'hupptechnologies-ui-feature-drag-handler' into devel 2018-12-21 21:52:42 +02:00
Lauri Ojansivu 2f747fc09d - Added removed packages back.
Thanks to xet7 !
2018-12-21 21:10:00 +02:00
Lauri Ojansivu 32d5a1d3f7 Merge branch 'ui-feature-drag-handler' of https://github.com/hupptechnologies/wekan into hupptechnologies-ui-feature-drag-handler 2018-12-21 21:09:31 +02:00
Lauri Ojansivu db44b8ea54 Merge branch 'Akuket-devel' into devel 2018-12-21 20:53:31 +02:00
Lauri Ojansivu 1f512c8ba1 - [Improve authentication](https://github.com/wekan/wekan/pull/2065): remove login dropdown,
and add setting `DEFAULT_AUTHENTICATION_METHOD=ldap` or
  `sudo snap set wekan default-authentication-method='ldap'`. Thanks to Akuket. Closes wekan/wekan-ldap#31
2018-12-21 20:52:48 +02:00
Lauri Ojansivu 417dc9dc42 Fix lint errors. 2018-12-21 20:36:26 +02:00
Lauri Ojansivu bd66ea8acc Update translations (ru). 2018-12-21 20:16:35 +02:00
Lauri Ojansivu dba9d13b00 Update translations. 2018-12-21 20:11:32 +02:00
Lauri Ojansivu 1e034a794f - Update translated text. 2018-12-21 19:47:34 +02:00
Lauri Ojansivu a261c66f34 Merge branch 'devel' of https://github.com/Akuket/wekan into Akuket-devel 2018-12-21 19:34:32 +02:00
hupptechnologies b94bd73d33 Uncommect packages 2018-12-20 14:43:21 +05:30
hupptechnologies a9be6b17b9 Issue : UI feature suggestion: drag handles and long press #1772
Resolved #1772
2018-12-20 14:42:46 +05:30
Lauri Ojansivu ac6f8e8551 - Output Meteor 1.8.x version in build log.
Thanks to xet7 !
2018-12-19 19:55:30 +02:00
Lauri Ojansivu 23fb2bfc7f - Use meteor 1.8.x, because Stacksmith uses MongoDB 4.0.3.
Thanks to xet7 !
2018-12-19 19:42:40 +02:00
guillaume ff1c3722a8 Patch currentBoard doesn't exist when logout 2018-12-19 17:22:16 +01:00
guillaume 1712368f6a Improves UI for ldap error messages 2018-12-19 17:21:27 +01:00
guillaume d7529bf6b5 Add help message for the new env var in snap 2018-12-19 13:53:05 +01:00
guillaume 6b145bb3cc Add a new env var to select the default authentication method 2018-12-19 13:42:51 +01:00
guillaume 72e905675d Removes the dropdown for the authentication method 2018-12-19 13:41:21 +01:00
Lauri Ojansivu 2fbcf7e9b6 v1.94 2018-12-18 20:22:11 +02:00
Lauri Ojansivu 0ade4dbf00 - Use wekan/wekan repo.
Thanks to xet7 !
2018-12-18 20:05:10 +02:00
Lauri Ojansivu d70ad9d733 - Comment out extra node version.
Thanks to xet7 !
2018-12-18 19:42:04 +02:00
Lauri Ojansivu 51a19878dd Merge pull request #2064 from j-fuentes/devel
Add Bitnami Stacksmith
2018-12-18 19:40:44 +02:00
Lauri Ojansivu ddca6a1ad8 Update translations. 2018-12-18 19:27:23 +02:00
Jose Fuentes cac74122f2 Wait for DB on boot 2018-12-17 13:09:32 +01:00
Lauri Ojansivu 991b2b9721 Update translations (he). 2018-12-17 01:15:44 +02:00
Lauri Ojansivu b6663acf91 Update translations. 2018-12-16 23:48:43 +02:00
Lauri Ojansivu 7f74e72cea - Trying to get custom HTML working as described at
https://guide.meteor.com/v1.3/blaze.html#rendering-html
  Still does not work yet.

Thanks to xet7 !
2018-12-16 23:46:04 +02:00
Lauri Ojansivu bd1df642fa - Maybe custom html should be here. But it still does not work yet.
Thanks to xet7 !
2018-12-16 22:50:23 +02:00
Lauri Ojansivu 575b0241e4 Update translations. 2018-12-16 22:27:45 +02:00
Lauri Ojansivu f1ed6304a4 - Admin Panel / Layout / Custom HTML after <body> start, and Custom HTML before </body> end.
In progress, does not work yet.

Thanks to xet7 !
2018-12-16 22:21:16 +02:00
Lauri Ojansivu a42d9871bd v1.93 2018-12-16 19:09:16 +02:00
Lauri Ojansivu 7a2ea7cace Fix typo. 2018-12-16 19:03:49 +02:00
Lauri Ojansivu fb39811d95 Update translations. 2018-12-16 19:02:09 +02:00
Lauri Ojansivu 78e88f4c42 - Remove Wekan_version translation string.
Thanks to xet7 !
2018-12-16 18:36:50 +02:00
Lauri Ojansivu db63af5f7a - In tranlations, only show name "Wekan" in Admin Panel Wekan version.
Elsewhere use general descriptions for whitelabeling.

Thanks to xet7 !
2018-12-16 18:27:47 +02:00
Lauri Ojansivu c3e04da796 - Update translations (ru). 2018-12-16 18:14:18 +02:00
Lauri Ojansivu 2a59043ef1 v1.92 2018-12-16 11:58:44 +02:00
Lauri Ojansivu 3d76a35a68 - Fix [favicon paths for non-suburl cases](https://github.com/wekan/wekan/commit/c1733fc89c4c73a1ab3f4054d0a9ebff7741a804).
Thanks to xet7 !

Related #1692
2018-12-16 11:45:12 +02:00
Lauri Ojansivu c1733fc89c - Fix favicon paths for non-suburl cases.
Thanks to xet7 !

Related #1692
2018-12-16 11:41:10 +02:00
Lauri Ojansivu 388c1bec45 - Fix [Card scrollbar ignores mousewheel](https://github.com/wekan/wekan-scrollbar/commit/94a40da51627c6322afca50a5b1f4aa55c7ce7bf).
Thanks to rinnaz and xet7 !

Closes #2058
2018-12-16 11:14:16 +02:00
Lauri Ojansivu a2869e9d2a - Fix [Popup class declares member name _current but use current instead](https://github.com/wekan/wekan/issues/2059).
Thanks to peishaofeng !

Closes #2059
2018-12-16 11:10:06 +02:00
Lauri Ojansivu 3e5ff42474 - Fix [Popup class declares member name _current but use current instead](https://github.com/wekan/wekan/issues/2059).
Thanks to peishaofeng !

Closes #2059
2018-12-16 11:06:29 +02:00
Lauri Ojansivu 9366eaf374 - Fix typo.
Thanks to xet7 !
2018-12-16 00:42:13 +02:00
Lauri Ojansivu cb4c93a632 v1.91 2018-12-15 22:44:25 +02:00
Lauri Ojansivu adaffd7189 - [Add back mquandalle:perfect-scrollbar package so that Firefox and Chrome
stop complaning in browser dev tools console](https://github.com/wekan/wekan/issues/2057).

Thanks uusijani and xet7 !

Closes #2057
2018-12-15 22:41:10 +02:00
Lauri Ojansivu 821dc22e80 - Add back mquandalle:perfect-scrollbar package so that Firefox and Chrome
stop complaning in browser dev tools console.

Thanks to uusijani and xet7 !

Closes #2057
2018-12-15 22:36:15 +02:00
Lauri Ojansivu b0a71e96cc v1.90 2018-12-15 22:01:57 +02:00
Lauri Ojansivu 40e156992a - [Remove not working duplicate saveMailServerInfo](https://github.com/wekan/wekan/commit/ab031d9da134aa13490a26dbe97ad2d7d01d534a),
to remove error from browser dev tools console.

Thanks to xet7 !
2018-12-15 21:59:29 +02:00
Lauri Ojansivu ab031d9da1 - Remove not working duplicate saveMailServerInfo, to remove
error from browser dev tools console.

Thanks to xet7 !
2018-12-15 21:55:20 +02:00
Lauri Ojansivu 209a76c5ce v1.89 2018-12-15 20:52:11 +02:00
Lauri Ojansivu 4bd74b5817 - Admin Panel / Layout / Custom Product Name [now changes webpage title](https://github.com/wekan/wekan/commit/dbb1a86ca377e551063cc04c5189fad4aa9148c0).
Related #1196

Thanks to xet7 !
2018-12-15 20:46:47 +02:00
Lauri Ojansivu dbb1a86ca3 - Admin Panel / Layout / Custom Product Name now changes webpage title.
Thanks to xet7 !

Related #1196
2018-12-15 20:39:01 +02:00
Lauri Ojansivu c066883dbd v1.88 2018-12-14 23:31:17 +02:00
Lauri Ojansivu 0b6b6dc7fd - Fix: [Scrollbar used](https://github.com/wekan/wekan/issues/2056) [remote file from CDN](https://github.com/MaazAli/Meteor-Malihu-Custom-Scrollbar/blob/master/jquery.mCustomScrollbar.js#L50),
so forked package to https://github.com/wekan/wekan-scrollbar and included
  non-minified file locally to Wekan, so that using scrollbar works without direct connection
  to Internet. Wekan should not load any external files by default, as was case before
  new scrollbar, and is again now [after this fix](https://github.com/wekan/wekan/commit/c546464d9f56117a8bf580512cd62fc1102559c3).

Thanks to xet7 !

Closes #2056
2018-12-14 23:27:22 +02:00
Lauri Ojansivu c546464d9f - Because scrollbar uses [remote file from CDN](https://github.com/MaazAli/Meteor-Malihu-Custom-Scrollbar/blob/master/jquery.mCustomScrollbar.js#L50),
fork package to https://github.com/wekan/wekan-scrollbar and include
  non-minified file locally to Wekan, so that using scrollbar works without direct connection
  to Internet. Wekan should not load any external files by default, as was case before
  new scrollbar, and is again now after this fix.

Closes #2056
2018-12-14 23:13:15 +02:00
Jose Fuentes 7b3e2c58e2 Pipefail error 2018-12-14 11:06:00 +01:00
Jose Fuentes d6127082e9 Add stacksmith scripts 2018-12-13 20:27:35 +01:00
Lauri Ojansivu 67a5fdaf96 v1.87 2018-12-13 20:13:50 +02:00
Lauri Ojansivu af9156b18a Update translations (es). 2018-12-13 20:12:03 +02:00
Lauri Ojansivu 7af20fd2d9 - Fix Reference error.
Thanks to Akuket !
2018-12-13 20:10:00 +02:00
Lauri Ojansivu 2a5a428bc0 - Fix Reference error.
Thanks to Akuket !
2018-12-13 20:07:55 +02:00
Lauri Ojansivu 4b7d47465a v1.86 2018-12-13 14:40:16 +02:00
Lauri Ojansivu 5f4e2d8e06 - Fix [Cannot login with new LDAP account when auto-registration disabled (request invitation code)](https://github.com/wekan/wekan-ldap/issues/29);
- Fix [Unable to create new account from LDAP](https://github.com/wekan/wekan-ldap/issues/32).

Thanks to Akuket !
2018-12-13 14:34:11 +02:00
Lauri Ojansivu f8ef8507b5 - Fix [Cannot login with new LDAP account when auto-registration disabled (request invitation code)](https://github.com/wekan/wekan-ldap/issues/29);
- Fix [Unable to create new account from LDAP](https://github.com/wekan/wekan-ldap/issues/32).

Thanks to Akuket !

Closes wekan/wekan-ldap#29,
closes wekan/wekan-ldap#32
2018-12-13 14:27:34 +02:00
Lauri Ojansivu 2ae143e6da Update translations. 2018-12-13 14:10:55 +02:00
Lauri Ojansivu 38e8f52293 Add missing text about bugs fixes. 2018-12-09 01:44:08 +02:00
Lauri Ojansivu b143fc9297 v1.85 2018-12-09 00:49:07 +02:00
Lauri Ojansivu dd10f78401 Merge branch 'hupptechnologies-scrollbar-closes-card-chrome' into devel 2018-12-09 00:44:47 +02:00
Lauri Ojansivu 90208b774a - Fix [Clicking the scrollbar closes the card on Chrome](https://github.com/wekan/wekan/issues/1404)
by changing [mquandalle:perfect-scrollbar to malihu-jquery-custom-scrollbar](https://github.com/wekan/wekan/pull/2050).
  that works also when clicking scrollbar in Chrome. Also added back required packages that were removed in PR.

Thanks to hupptechnologies and xet7 !
2018-12-09 00:43:21 +02:00
Lauri Ojansivu bc35d9fe1a - Fix [Clicking the scrollbar closes the card on Chrome](https://github.com/wekan/wekan/issues/1404)
by changing [mquandalle:perfect-scrollbar to malihu-jquery-custom-scrollbar](https://github.com/wekan/wekan/pull/2050).
  that works also when clicking scrollbar in Chrome. Also added back required packages that were removed in PR.

Thanks to hupptechnologies and xet7 !

Closes #1404
2018-12-09 00:33:36 +02:00
Lauri Ojansivu 472d637c9f Merge branch 'scrollbar-closes-card-chrome' of https://github.com/hupptechnologies/wekan into hupptechnologies-scrollbar-closes-card-chrome 2018-12-09 00:21:35 +02:00
Lauri Ojansivu 20c86613a7 Update translations (ru). 2018-12-09 00:16:48 +02:00
hupptechnologies 5ac69ed7de Fix lineter issue 2018-12-08 18:05:59 +05:30
hupptechnologies 0620fe5e11 Issue : Clicking the scrollbar closes the card on Chrome #1404
Resolved #1404
2018-12-08 17:53:26 +05:30
hupptechnologies 44a819226f Merge branch 'devel' into edge 2018-12-08 17:20:56 +05:30
Lauri Ojansivu cf2cf7898a - Fix lint warning.
Thanks to xet7 !
2018-12-07 06:18:46 +02:00
Lauri Ojansivu ee212b69a9 v1.84 2018-12-07 05:20:06 +02:00
Lauri Ojansivu 87d91560f8 Update translations (ru). 2018-12-07 05:11:08 +02:00
Lauri Ojansivu bccca00aaf - Fix 2/8: IFTTT Rule action/trigger ["Remove all members from the card"](https://github.com/wekan/wekan/issues/1972).
Thanks to BurakTuran9 !
2018-12-07 05:07:22 +02:00
Lauri Ojansivu d6e36ed50a - Fix: IFTTT Rule "Remove all members from the card" doesn't work.
Thanks to BurakTuran9 !

Related #1972
2018-12-07 04:57:51 +02:00
Lauri Ojansivu 83f7fa768d v1.83 2018-12-06 01:59:37 +02:00
Lauri Ojansivu 2d49006aee - Fix IFTTT Rule action/trigger part 1 of 7: [When a checklist is completed](https://github.com/wekan/wekan/issues/1972).
And partial incomplete fix to when all of checklist is set as uncompleted. Help in fixing welcome.

Thanks to BurakTuran9 and xet7 !

Related #1972
2018-12-06 01:55:02 +02:00
Lauri Ojansivu c2e58dcb62 - Partial fix to unchecked rule, and tips for fixing.
Related #1972
2018-12-06 01:49:57 +02:00
Lauri Ojansivu f154c5e521 Update translations. 2018-12-05 15:45:42 +02:00
Lauri Ojansivu eadbebb4fa - Fix IFTTT Rule action/trigger: When a checklist is completed/made incomplete.
Thanks to BurakTuran9 !

Related #1972
2018-12-05 15:45:10 +02:00
Lauri Ojansivu 40cf1c7549 - Fix IFTTT Rule action/trigger: When a checklist is completed/made incomplete.
Thanks to BurakTuran9 !

Related #1972
2018-12-05 15:21:24 +02:00
Lauri Ojansivu 9c4e305a84 v1.82 2018-12-05 08:53:40 +02:00
Lauri Ojansivu 167197fcda - Partially #2045 revert, continue.
Thanks to xet7 !
2018-12-05 08:47:48 +02:00
Lauri Ojansivu e3a40aca6f This release fixes the following bugs:
- Partially #2045 revert [Improve authentication](https://github.com/wekan/wekan/issues/2016),
  adding back password/LDAP dropdown, because login did now work.
  NOTE: This was added in v1.71, reverted at v1.73 because login did not work, added back at v1.79,
  and then reverted partially at v1.82 because login did not work.
  Related LDAP logout timer does not work yet.

Thanks to xet7 !
2018-12-05 08:20:59 +02:00
Lauri Ojansivu 0611e0c4bd Add text about fixing bugs. 2018-12-04 22:32:30 +02:00
Lauri Ojansivu d6857693bb v1.81 2018-12-04 22:30:54 +02:00
Lauri Ojansivu b5ccf7a58f - Remove extra commas , and add missing backslash \.
Maybe after that login, logout and CORS works.

Thanks to xet7 !

Related #2045,
related wekan/wekan-snap#69
2018-12-04 22:23:49 +02:00
Lauri Ojansivu bfca1822a0 - Remove extra commas , and add missing backslash \.
Maybe after that login, logout and CORS works.

Thanks to xet7 !

Related #2045,
related wekan/wekan-snap#69
2018-12-04 22:20:24 +02:00
Lauri Ojansivu 30151de269 v1.80 2018-12-03 18:22:41 +02:00
Lauri Ojansivu fe7c4528d7 - Upgrade Node from v8.12 to v8.14
- Revert non-working architectures that were added at v1.79, so now Wekan is just amd64 as before.

Thanks to xet7 !
2018-12-03 18:19:25 +02:00
Lauri Ojansivu 40367995e7 v1.79 2018-12-03 16:29:58 +02:00
Lauri Ojansivu b75fafc5f2 - Add CORS https://enable-cors.org/server_meteor.html
- Add missing LDAP and TIMER environment variables.

Thanks to xet7 !

Closes wekan/wekan-snap#69
2018-12-03 16:20:04 +02:00
Lauri Ojansivu b788deb002 - Add CORS https://enable-cors.org/server_meteor.html
- Add missing LDAP and TIMER environment variables.

Thanks to xet7 !

Closes wekan/wekan-snap#69
2018-12-03 16:05:24 +02:00
Lauri Ojansivu fa6b2e5679 - Improve authentication. Thanks to Akuket. 2018-12-03 11:31:03 +02:00
Lauri Ojansivu 70fd1ce57d Fix lint errors. 2018-12-03 11:18:54 +02:00
Lauri Ojansivu 97158de70f Merge branch 'Akuket-devel' into edge 2018-12-02 23:30:10 +02:00
Lauri Ojansivu 926faf0031 Merge branch 'devel' of https://github.com/Akuket/wekan into Akuket-devel 2018-12-02 23:28:39 +02:00
Lauri Ojansivu 228996412c - Fix wrong dates in ChangeLog.
Thanks to kelvinhammond !
2018-12-02 23:24:32 +02:00
Lauri Ojansivu c9c1464c79 Merge pull request #2041 from kelvinhammond/patch-1
Updated CHANGELOG.md - Fixed 2018-20-24 dates
2018-12-02 23:22:58 +02:00
Lauri Ojansivu 30c80f167c Update translations. 2018-12-02 23:19:51 +02:00
Lauri Ojansivu af9ca9b6c4 - Build snap also on i386, armhf and arm64. Ignore if it fails.
Most likely armhf and arm64 does not build yet, I will add fixes later.

Thanks to xet7 !
2018-12-02 23:17:14 +02:00
Lauri Ojansivu 3e03f557cf - Build snap also on i386, armhf and arm64. Ignore if it fails.
Most likely armhf and arm64 does not build yet, I will add fixes later.

Thanks to xet7 !

Related #1503,
related wekan/wekan-snap#46
2018-12-02 23:12:45 +02:00
Kelvin f19dc77d2c Updated CHANGELOG.md - Fixed 2018-20-24 dates 2018-12-01 23:43:37 -05:00
hupptechnologies 1bad630641 autoamted local change 2018-11-27 12:57:03 +05:30
hupptechnologies 8a9a82fc80 Pull code 2018-11-24 16:30:12 +05:30
guillaume 745bd7e806 finish prepare for test 2018-11-23 18:04:05 +01:00
Lauri Ojansivu cdb44da71e - Fix: Message box for deleting subtask unreachable.
Thanks to hupptechnologies. Closes #1800
2018-11-23 16:37:34 +02:00
Lauri Ojansivu 064a2deaaf - Fix: Message box for deleting subtask unreachable.
Thanks to hupptechnologies !

Closes #1800
2018-11-23 16:30:18 +02:00
Lauri Ojansivu a085ed1e1b Update translations. 2018-11-22 23:41:50 +02:00
guillaume f23448be33 revert changes for patch authentication 2018-11-22 18:00:21 +01:00
Lauri Ojansivu a27c16e434 v1.78 2018-11-20 22:50:44 +02:00
Lauri Ojansivu d5be48b905 Update translations. 2018-11-20 22:49:04 +02:00
Lauri Ojansivu 7432af67c1 v1.77 2018-11-20 22:45:42 +02:00
Lauri Ojansivu 24b61cf772 v1.76 2018-11-20 12:24:38 +02:00
Lauri Ojansivu cc64ef903f - Add [LDAP_FULLNAME_FIELD](https://github.com/wekan/wekan-ldap/issues/10) to
[configs](https://github.com/wekan/wekan/commit/8e3f53021775069dba125efd4b7200d0d70a1ed1)
  and other options that were not in all config files. Thanks to alkemyst and xet7.
2018-11-20 12:19:05 +02:00
Lauri Ojansivu 8e3f530217 - Add [LDAP_FULLNAME_FIELD](https://github.com/wekan/wekan-ldap/issues/10). Thanks to alkemyst and xet7.
Closes wekan/wekan-ldap#21,
closes wekan/wekan-ldap#10
2018-11-20 12:11:37 +02:00
Lauri Ojansivu f9b272c223 - Fix: When saving Custom Layout, save also SMTP settings. Thanks to xet7. 2018-11-20 11:38:39 +02:00
Lauri Ojansivu f0232fb5cb - Fix: When saving Admin Panel / Layout, save also SMTP settings.
Thanks to xet7 !
2018-11-20 11:35:14 +02:00
Lauri Ojansivu f84bad13b4 v1.75 2018-11-20 02:45:03 +02:00
Lauri Ojansivu b72a68705c Update translations. 2018-11-20 02:42:14 +02:00
Lauri Ojansivu dd6ba152a0 Admin Panel / Layout: Hide Logo: Yes / No. This does hide Wekan logo on Login page and Board page. Thanks to xet7. 2018-11-20 02:38:00 +02:00
Lauri Ojansivu cb9ced756f - [Fix Snap database-list-backups command](https://github.com/wekan/wekan-snap/issues/26). Thanks to WaryWolf.
Closes wekan/wekan-snap#26
2018-11-19 23:28:37 +02:00
Lauri Ojansivu dbf3a48b5f Update GitHub issue template for LDAP and Snap issues elsewhere. 2018-11-19 23:11:37 +02:00
Lauri Ojansivu b5d1799f5a v1.74.1
- Full Name from LDAP server via environment variable. Thanks to alkemyst.

Closes wekan/wekan-ldap#10
2018-11-18 20:15:18 +02:00
Lauri Ojansivu d4ec0cc647 v1.74 2018-11-17 17:41:31 +02:00
Lauri Ojansivu 21a8c7cc45 v1.73 2018-11-17 16:57:12 +02:00
Lauri Ojansivu aa691b0af1 - Revert Improve authentication to [fix Login failure](https://github.com/wekan/wekan/issues/2004).
Thanks to xet7 !

Closes #2004
2018-11-17 16:50:42 +02:00
Lauri Ojansivu 7a75d82114 v1.72 2018-11-17 15:20:33 +02:00
Lauri Ojansivu 4daf69e4b6 Update translations. 2018-11-17 15:15:50 +02:00
Lauri Ojansivu 960b33c3d9 v1.71 2018-11-17 00:30:49 +02:00
Lauri Ojansivu 685eb0f22c - [Improve shell scripts](https://github.com/wekan/wekan/pull/2002). Thanks to warnerjon12. 2018-11-16 22:00:50 +02:00
Lauri Ojansivu 81a51c8dfc Merge branch 'warnerjon12-devel' into devel 2018-11-16 21:55:32 +02:00
Lauri Ojansivu 75c1dff1f8 Merge branch 'devel' of https://github.com/warnerjon12/wekan into warnerjon12-devel 2018-11-16 21:54:16 +02:00
Lauri Ojansivu cb24b85191 Improve authentication. Thanks to Akuket. 2018-11-16 21:48:53 +02:00
Lauri Ojansivu 3aec8087f7 Fix lint errors. 2018-11-16 21:32:01 +02:00
Lauri Ojansivu 39ff51ef96 Merge branch 'Akuket-devel' into devel 2018-11-16 21:28:19 +02:00
Lauri Ojansivu 033a9482fc Merge branch 'devel' of https://github.com/Akuket/wekan into Akuket-devel 2018-11-16 21:26:07 +02:00
Lauri Ojansivu 017017623f Fix typo. 2018-11-16 21:22:41 +02:00
Lauri Ojansivu 4b53a532bd Update readme for clarity. 2018-11-16 21:17:06 +02:00
Lauri Ojansivu 6df296da47 - Rename Recycle Bin to Archive.
Thanks to xet7 !
2018-11-16 21:14:10 +02:00
Lauri Ojansivu 9f5d04de27 - Add language: Danish.
Thanks to translators.
2018-11-16 21:12:06 +02:00
Lauri Ojansivu c11b91d32a - Update translations.
- Add language: Swahili / Kiswahili.

Thanks to translators.
2018-11-16 21:04:58 +02:00
Lauri Ojansivu e266902ba9 Update translations. 2018-11-13 13:39:30 +02:00
Lauri Ojansivu b919eb23ab Rename Recycle Bin to Archive.
Closes #1784,
closes #1489
2018-11-13 12:17:46 +02:00
Jonathan Warner 22a9e783c9 Revised shell scripts to check for wekan repository
The scripts used to assume that ~/repos/wekan was a local wekan repo.
They now check that the active directory is a wekan repo.
2018-11-12 05:45:51 -07:00
Jonathan Warner d4e75165dd Revised rebuild-wekan.sh to work correctly with npm
The use of sudo npm is bugged. This is a workaround patch.
Fixes issue #2001
2018-11-12 05:45:42 -07:00
Lauri Ojansivu 73daf191ae Update translations. 2018-11-11 20:20:19 +02:00
Lauri Ojansivu 329471e7e3 Fix typo. 2018-11-10 04:12:56 +02:00
Lauri Ojansivu 644e2c334f Fix IRC link ;) 2018-11-10 03:36:26 +02:00
Lauri Ojansivu 16d925e588 Reorganize readme. 2018-11-10 02:47:01 +02:00
Lauri Ojansivu 0daa6d3f7b Update readme for clarity. 2018-11-10 02:41:27 +02:00
Lauri Ojansivu e3b3e8b8c6 v1.70 2018-11-09 21:44:50 +02:00
Lauri Ojansivu ddef1ea89c Update translations. 2018-11-09 21:18:17 +02:00
Lauri Ojansivu 8ddf136928 Update changelog based on previous commits. 2018-11-09 20:54:27 +02:00
guillaume 893329d9c6 patch authentication 2018-11-09 17:46:02 +01:00
guillaume cb091c8a54 Merge https://github.com/wekan/wekan into devel 2018-11-09 14:12:17 +01:00
Lauri Ojansivu 043f9813ef Update translations. 2018-11-08 23:41:11 +02:00
Lauri Ojansivu 717891bee9 Merge remote-tracking branch 'origin/edge' into devel 2018-11-08 23:18:10 +02:00
Lauri Ojansivu 508f47f940 - Fix typo. 2018-11-08 23:17:26 +02:00
Lauri Ojansivu e4c0623cf7 Merge branch 'tugal-devel' into devel 2018-11-08 23:15:21 +02:00
Lauri Ojansivu 4cf9813449 - Some fixes to Wekan import:
- isCommentOnly and isNoComments are now optional
  - Turn off import error checking, so something is imported anyway, and import does not stop at error.
  - Now most of Sandstorm export do import to Standalone Wekan, but some of imported cards, dates etc are missing.
  - Sandstorm Import Wekan board warning messages are now translateable.

Thanks to xet7 !

Closes #1945,
closes #1616,
closes #1903
2018-11-08 22:49:08 +02:00
Lauri Ojansivu d44fb6bedd Update translations. 2018-11-07 23:20:10 +02:00
Nunes Nelson f2dd725eff custom fields upgrade -- correct 2018-11-07 18:23:28 +01:00
guillaume 3646a9c259 Logout with timer 2018-11-06 17:48:12 +01:00
guillaume 8c497efb46 patch authentication 2018-11-06 11:28:35 +01:00
Nunes Nelson a82aa87850 custom fields upgrade 2018-11-05 21:46:57 +01:00
Lauri Ojansivu 68e5909c96 - Add more options to start-wekan.bat 2018-11-04 18:47:18 +02:00
Lauri Ojansivu 4c2857b6e8 Add build scripts. 2018-11-04 18:32:08 +02:00
Lauri Ojansivu 6f2275e8cb v1.69 2018-11-03 18:18:02 +02:00
Lauri Ojansivu d42d7a89fb Update translations. 2018-11-03 18:13:41 +02:00
Lauri Ojansivu cba8b56cb5 v1.68 2018-11-03 11:00:16 +02:00
Lauri Ojansivu ece009f556 Update translations (hi). 2018-11-03 10:58:17 +02:00
Lauri Ojansivu 53ed1f1a2c v1.67 2018-11-03 10:41:33 +02:00
Lauri Ojansivu 22a09f3e7d - 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
2018-11-03 10:37:22 +02:00
Lauri Ojansivu dda36f4eb3 - 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
2018-11-03 10:25:31 +02:00
Lauri Ojansivu 8c6c089363 - Add Hindi language. Thanks to saurabharch. 2018-11-03 09:53:58 +02:00
Lauri Ojansivu 997a902ae4 Add hindi language. 2018-11-03 09:51:53 +02:00
Lauri Ojansivu defcfed272 v1.66 2018-10-31 22:03:30 +02:00
Lauri Ojansivu 0f1b157bda Update translations. 2018-10-31 21:59:41 +02:00
Lauri Ojansivu 7188879567 - [Fix typo about ldaps](https://github.com/wekan/wekan/pull/1980).
Documentation said to set LDAP_ENCRYPTION to true if we want to use
  ldaps, but the code in wekan-ldap does not check if it is set to true,
  but if the value equals to 'ssl' instead. Thanks to imkwx.
2018-10-31 21:58:13 +02:00
Lauri Ojansivu c753d40f6c - Fix typo about ldaps.
Documentation said to set LDAP_ENCRYPTION to true if we want to use
  ldaps, but the code in wekan-ldap does not check if it is set to true,
  but if the value equals to 'ssl' instead. Thanks to imkwx.
2018-10-31 21:57:05 +02:00
Lauri Ojansivu 706436b638 Merge pull request #1980 from imkwx/devel
Fix typo about ldaps
2018-10-31 20:29:30 +02:00
Robin BRUCKER 13aab4d410 Fix typo about ldaps
Documentation said to set LDAP_ENCRYPTION to true if we want to use
ldaps, but the code in wekan-ldap does not check if it is set to true,
but if the value equals to 'ssl' instead.
2018-10-31 18:59:16 +01:00
Lauri Ojansivu a06fd63690 Fix syntax. 2018-10-30 16:32:58 +02:00
Lauri Ojansivu 07369b9784 Update translations. 2018-10-30 00:07:35 +02:00
Lauri Ojansivu 415e28b471 - Fix typos in CHANGELOG.md, thanks to loginKing !
https://github.com/wekan/wekan/pull/1975
2018-10-30 00:05:24 +02:00
Lauri Ojansivu f62d0530ec Merge pull request #1975 from loginKing/patch-1
Update CHANGELOG.md
2018-10-30 00:03:26 +02:00
loginKing d12561aae9 Update CHANGELOG.md 2018-10-29 16:09:10 +08:00
Lauri Ojansivu d1ab38e57e - Typo fix etc. 2018-10-26 17:15:24 +03:00
Lauri Ojansivu 27bc03d452 docker-compose.yml and docker-compose-build.yml:
- Remove single quotes, because settings are quoted automatically.
- Comment out most settings that have default values.

Thanks to xet7 !
2018-10-26 17:10:14 +03:00
Lauri Ojansivu 9cff76f110 Update translations. 2018-10-26 16:55:19 +03:00
Lauri Ojansivu a5a487caf8 Merge pull request #1974 from Hillside502/patch-1
Update CHANGELOG.md
2018-10-26 15:14:20 +03:00
Hillside502 9cfef8c337 Update CHANGELOG.md
typo
2018-10-26 09:22:08 +00:00
Lauri Ojansivu 46e2679f82 v1.65 2018-10-25 18:30:25 +03:00
Lauri Ojansivu 08383ed22d Update translations (bg). 2018-10-25 18:25:10 +03:00
Lauri Ojansivu 3602d59125 This release adds the [following new features](https://github.com/wekan/wekan/pull/1967), with Apache I-CLA:
- UI: list headers: show the card count smaller in grey color below list name
- UI: lists: only output the number of cards for each swimlane

Thanks to bentiss !
2018-10-25 18:23:03 +03:00
Lauri Ojansivu c72b3a870e Merge branch 'bentiss-ui-fixes' into edge 2018-10-25 18:12:13 +03:00
Lauri Ojansivu 078bab405b Merge branch 'ui-fixes' of https://github.com/bentiss/wekan into bentiss-ui-fixes 2018-10-25 17:31:56 +03:00
Benjamin Tissoires e57269ed57 UI: lists: only output the number of cards for each swimlane 2018-10-25 16:18:02 +02:00
Benjamin Tissoires 05e0fb8fbe UI: list headers: show the card count smaller
The card count was at the same level than the title, which made
reading the list title harder. Use the quiet and small class
to put it in the following line and not make it jump out of the screen
2018-10-25 16:17:30 +02:00
Lauri Ojansivu 500ba88781 v1.64.2 2018-10-25 13:22:42 +03:00
Lauri Ojansivu 7f941840cb - Additional fix to [Impossible to connect to LDAP if UserDN contain space(s)](https://github.com/wekan/wekan/issues/1970).
Thanks to Akuket and xet7 !
2018-10-25 13:19:27 +03:00
Lauri Ojansivu b4670f12a5 v1.64.1 2018-10-25 13:16:15 +03:00
Lauri Ojansivu 2a4eb0bcc2 - Fix: [Impossible to connect to LDAP if UserDN contain space(s)](https://github.com/wekan/wekan/issues/1970).
Thanks to Akuket and xet7 !

Closes #1970
2018-10-25 13:15:15 +03:00
Lauri Ojansivu f2b64c1aaa Remove console.log 2018-10-25 13:09:25 +03:00
Lauri Ojansivu 05b9e825bb - Try to fix: Impossible to connect to LDAP if UserDN contain space(s) #1970
Thanks to Akuket and xet7 !
2018-10-25 12:38:30 +03:00
Lauri Ojansivu 187b4632e6 v1.64 2018-10-24 22:10:58 +03:00
Lauri Ojansivu ce2b8a8d1a Update translations. 2018-10-24 20:09:02 +03:00
Lauri Ojansivu d3517f03f6 v1.63 2018-10-24 19:50:38 +03:00
Lauri Ojansivu 0583bf6df0 REST API: [Allow to remove the full list of labels/members through the API](https://github.com/wekan/wekan/pull/1968), with Apache I-CLA:
- [Models: Cards: an empty string in members or label deletes the list](https://github.com/wekan/wekan/commit/e5949504b7ed42ad59742d2a0aa001fe6c762873).
  There is currently no way to remove all members or all labels attached
  to a card. If an empty string is provided, we can consider as a hint to
  remove the list from the card.
- [Models: Cards: allow singletons to be assigned to members and labelIds](https://github.com/wekan/wekan/commit/2ce1ba37a1d0a09f8b3d2a1db4c8a11d1f98caa0).
  If we need to set only one member or one label, the data provided will
  not give us an array, but the only element as a string.
  We need to detect that and convert the parameter into an array.

Thanks to bentiss !
2018-10-24 19:46:12 +03:00
Lauri Ojansivu d446075239 Merge branch 'bentiss-api-fixes' into edge 2018-10-24 19:36:07 +03:00
Benjamin Tissoires e5949504b7 models: cards: an empty string in members or label deletes the list
There is currently no way to remove all members or all labels attached
to a card. If an empty string is provided, we can consider as a hint to
remove the list from the card.
2018-10-24 16:55:33 +02:00
Benjamin Tissoires 2ce1ba37a1 models: cards: allow singletons to be assigned to members and labelIds
If we need to set only one member or one label, the data provided will
not give us an array, but the only element as a string.
We need to detect that and convert the parameter into an array.
2018-10-24 16:55:27 +02:00
Lauri Ojansivu 6d4ffdd8b4 v1.62 2018-10-24 12:44:45 +03:00
Lauri Ojansivu 8ff2e1f16a - Fix missing dropdown arrow on Chrome. Thanks to xet7 ! Closes #1964 2018-10-24 12:40:40 +03:00
Lauri Ojansivu 09b05ea3fb v1.61 2018-10-24 12:15:11 +03:00
Lauri Ojansivu 90a0478d0b - Fix lint error. Thanks to xet7 ! 2018-10-24 12:13:20 +03:00
Lauri Ojansivu ecb3a18206 v1.60 2018-10-24 12:07:43 +03:00
Lauri Ojansivu e580109dd6 Update translations. 2018-10-24 12:06:33 +03:00
Lauri Ojansivu 9561049668 v1.59 2018-10-24 11:57:16 +03:00
Lauri Ojansivu d4dd646bf4 This release adds the beginning of following new features:
- Custom Product Name in Admin Panel / Layout. In Progress, setting does not affect change UI yet. Thanks to xet7.

and fixes the following bugs:

- Fix LDAP User Search Scope. Thanks to Vnimos and Akuket. Related #119
- Fix Save Admin Panel STMP password. Thanks to saurabharch and xet7. Closes #1856
2018-10-24 11:53:47 +03:00
Lauri Ojansivu 4cb25a5bcf - Custom Product Name in Admin Panel / Layout. In Progress, setting does not affect change UI yet. Thanks to xet7 !
- Fix LDAP User Search Scope. Thanks to Vnimos and Akuket ! Related #119
- Fix Save Admin Panel STMP password. Thanks to saurabharch and xet7 ! Closes #1856
2018-10-24 11:39:45 +03:00
Lauri Ojansivu 82e90f7b94 v1.58 2018-10-23 21:19:48 +03:00
Lauri Ojansivu 760c008f5b Adds [following new features and fixes](https://github.com/wekan/wekan/pull/1962), with Apache I-CLA:
- Also export the cards created with an older wekan instance (without linked cards) (related to #1873);
- Fix the GET customFields API that was failing;
- Allow to directly overwrite the members of cards and boards with a PUT call (this avoids to do multiple calls to add and remove users);
- Allow to change the swimlane of a card from the API.

Thanks to bentiss !
2018-10-23 21:08:04 +03:00
Lauri Ojansivu 54f8d4f308 Merge branch 'bentiss-api-fixes' into edge 2018-10-23 21:02:13 +03:00
Lauri Ojansivu 0de0135619 Merge branch 'api-fixes' of https://github.com/bentiss/wekan into bentiss-api-fixes 2018-10-23 20:44:35 +03:00
Benjamin Tissoires dfdba25ea0 api: add the ability to change the Swimlane of a card 2018-10-23 18:48:05 +02:00
Benjamin Tissoires f61942e5cb models: boards: add PUT members entry point
Allows to change the members from the API.
2018-10-23 18:48:05 +02:00
Benjamin Tissoires 33d4ad76ca models: cards: add members PUT entry point
Allows to change the members from the API
2018-10-23 18:48:05 +02:00
Benjamin Tissoires 53c8e63a09 models: customFields: fix GET api
Calling GET on /api/board/XXXX/customfields
returns a 500 error:

 TypeError: Converting circular structure to JSON
2018-10-23 18:48:01 +02:00
Benjamin Tissoires 9aa5584c9c models: make the REST API more uniform
All of the other REST API are in the form 'modelId' but a few ones in
boards.js and users.js.

Change it for a more uniform API.
2018-10-23 18:02:15 +02:00
Benjamin Tissoires 24f66c9f88 fix cards export
6eeb708e4d (Fix cards export and add customFields export.) is
incomplete as it allows to export newer cards inserted in the db after
the linkedId has been set, but not older cards present in an earlier
version of wekan.

Allow both null and empty value to be retrieved to match all cards.

related #1873
2018-10-23 18:02:15 +02:00
Lauri Ojansivu fa548a4c32 v1.57 2018-10-23 14:21:59 +03:00
Lauri Ojansivu 10bc2c0d1a v1.56 2018-10-23 14:19:31 +03:00
Lauri Ojansivu 5188f2f2c9 - This docker-compose.yml uses prebuilt image.
Thanks to xet7 !
2018-10-23 14:18:17 +03:00
Lauri Ojansivu 1019f6272e - Add separate docker-compose-build.yml
Thanks to xet7 !
2018-10-23 14:17:00 +03:00
Lauri Ojansivu dbd34c3254 Update translations. 2018-10-23 14:16:34 +03:00
Lauri Ojansivu 20af78e50b - Back to Meteor 1.6.0.1 and MongoDB 3.2.21 to make Snap work.
Thanks to xet7 !
2018-10-23 14:15:33 +03:00
Lauri Ojansivu 96151a54fb Merge branch 'devel' into edge 2018-10-23 13:35:32 +03:00
Benjamin Tissoires ccf66905e7 Dockerfile: use set -o xtrace
This allows to see the progress of the generation of the
Docker image.
2018-10-23 11:52:24 +02:00
Lauri Ojansivu ced56ed83f - Add info about using prebuild image.
Thanks to xet7 !
2018-10-17 12:11:26 +03:00
Lauri Ojansivu 790234775f Update translations. 2018-10-17 12:00:51 +03:00
Lauri Ojansivu aac8933186 Update translations. 2018-10-17 11:59:06 +03:00
Lauri Ojansivu 73edfd90a6 v1.55.1 2018-10-16 20:01:55 +03:00
Lauri Ojansivu a168f885d9 Update translations. 2018-10-16 19:58:43 +03:00
Lauri Ojansivu 50136fe314 v1.55 2018-10-16 14:11:33 +03:00
Lauri Ojansivu 6308352f90 Update translations. 2018-10-16 14:05:47 +03:00
Lauri Ojansivu ba5ee34d83 - [Automatically close the sidebar](https://github.com/wekan/wekan/pull/1954).
- [Fix: Update broke the ability to mute notifications](https://github.com/wekan/wekan/issues/1952).

Thanks to Akuket !
2018-10-16 13:57:38 +03:00
Lauri Ojansivu 849f15ceee - Fix: Update broke the ability to mute notifications;
- Automatically close the sidebar.

Thanks to Akuket !

Closes #1952
2018-10-16 13:52:45 +03:00
Lauri Ojansivu 5979fc1d3d - [Automatically close the sidebar](https://github.com/wekan/wekan/pull/1954);
- [Fix: Update broke the ability to mute notifications](https://github.com/wekan/wekan/pull/1954).

Thanks to Akuket !
2018-10-16 13:42:58 +03:00
Lauri Ojansivu 81f98e2da1 Merge branch 'Akuket-edge' into edge 2018-10-16 13:40:17 +03:00
Akuket 50edffee47 Merge branch 'edge' into edge 2018-10-16 11:46:21 +02:00
guillaume 41330b15dc update broke ability to mute notifications 2018-10-16 11:33:16 +02:00
Lauri Ojansivu f5125b76bc v1.54 2018-10-14 00:37:00 +03:00
Lauri Ojansivu ad663d2df9 - [REST API: Get cards by swimlane id](https://github.com/wekan/wekan/pull/1944). Please [add docs](https://github.com/wekan/wekan/wiki/REST-API-Swimlanes).
Thanks to dcmcand !

Closes #1934
2018-10-14 00:19:41 +03:00
Lauri Ojansivu 9faa85a1c3 - [REST API: Get cards by swimlane id](https://github.com/wekan/wekan/pull/1944). Please [add docs](https://github.com/wekan/wekan/wiki/REST-API-Swimlanes).
Thanks to dcmcand !

Closes #1934
2018-10-14 00:18:20 +03:00
Lauri Ojansivu cb98b1326d - [Improve notifications](https://github.com/wekan/wekan/pull/1948).
Thanks to Akuket !

Closes #1304
2018-10-14 00:11:18 +03:00
Lauri Ojansivu e9f8e150e7 - [Improve notifications](https://github.com/wekan/wekan/pull/1948).
Thanks to Akuket !

Closes #1304
2018-10-14 00:09:41 +03:00
Lauri Ojansivu a90f648d5e - [Fix deleting Custom Fields, removing broken references](https://github.com/wekan/wekan/issues/1872).
Thanks to Akuket and Clement87 !

Closes #1872
2018-10-13 23:53:41 +03:00
Lauri Ojansivu 8cd5f7c185 - [Fix deleting Custom Fields, removing broken references](https://github.com/wekan/wekan/issues/1872).
Thanks to Akuket and Clement87 !
2018-10-13 23:51:54 +03:00
Lauri Ojansivu bedd3767ce Update translations. 2018-10-13 23:42:13 +03:00
Lauri Ojansivu 63ee764a9b - [Fix vertical text for swimlanes in IE11](https://github.com/wekan/wekan/issues/1798).
Thanks to tomodwyer !

Closes #1798
2018-10-13 23:37:46 +03:00
Lauri Ojansivu 3dcebe8a9e - [Fix vertical text for swimlanes in IE11](https://github.com/wekan/wekan/issues/1798).
Thanks to tomodwyer !

Closes #1798
2018-10-13 23:33:52 +03:00
Lauri Ojansivu 232685919f - Fix vertical text for swimlanes in IE11
Thanks to tomodwyer !

Closes #1798
2018-10-13 23:27:40 +03:00
Lauri Ojansivu b7f59db03c Merge pull request #1951 from tomodwyer/ie11-fix-swimlanes
Fix vertical text for swimlanes in IE11
2018-10-13 23:23:40 +03:00
Tom O'Dwyer 9e5d016017 Fix vertical text for swimlanes in IE11
https://github.com/wekan/wekan/issues/1798
2018-10-13 18:08:53 +01:00
Lauri Ojansivu 8c8f51a84b Update translations. 2018-10-12 23:28:04 +03:00
Lauri Ojansivu de146f9aaf - Fix lint errors.
Thanks to xet7 !
2018-10-12 23:22:41 +03:00
Lauri Ojansivu 25bb0bfa22 - [Fix deleting Custom Fields, removing broken references](https://github.com/wekan/wekan/issues/1872).
Thanks to Akuket and Clement87 !

Closes #1872
2018-10-12 23:09:52 +03:00
Lauri Ojansivu 00eeb86332 - Remove broken customFields references.
Thanks to Clement87 and Akuket !
2018-10-12 23:04:09 +03:00
Lauri Ojansivu 25ab20bcb4 Merge branch 'edge' of https://github.com/Akuket/wekan into edge 2018-10-12 23:03:03 +03:00
guillaume 5c588b2424 patch for customFields when deleting them 2018-10-12 11:18:11 +02:00
Lauri Ojansivu e77cda938c Merge branch 'Akuket-edge' into edge 2018-10-11 23:48:15 +03:00
Lauri Ojansivu 99793c0a12 - [Improve notifications](https://github.com/wekan/wekan/pull/1948).
Thanks to Akuket !

Closes #1304
2018-10-11 23:47:02 +03:00
Lauri Ojansivu 178beee476 - Fix lint errors.
Note: variable trackingUsers is not used anywhere, so it was removed.

Thanks to xet7 !
2018-10-11 23:41:50 +03:00
Lauri Ojansivu b4402b72ac Merge branch 'edge' of https://github.com/Akuket/wekan into Akuket-edge 2018-10-11 22:47:11 +03:00
guillaume 23a35d9707 improve notifications 2018-10-11 16:46:59 +02:00
guillaume b925b8e74d improve notifications 2018-10-11 16:44:52 +02:00
Lauri Ojansivu 6742dd0585 Update translations. 2018-10-11 15:39:40 +03:00
Lauri Ojansivu 769b1b8110 v1.53.9 2018-10-11 02:07:40 +03:00
Lauri Ojansivu f6040ab43c - Add experimental Docker edge that works.
Thanks to xet7 !
2018-10-11 01:59:47 +03:00
Lauri Ojansivu 11b7ade355 - Try some changes to snap.
Thanks to xet7 !
2018-10-11 01:58:13 +03:00
Lauri Ojansivu 7d39283aec - Try to fix Dockerfile.
Thanks to xet7 !
2018-10-10 19:40:28 +03:00
Lauri Ojansivu f21afdc5f1 - Try to fix Dockerfile
Thanks to xet7 !
2018-10-10 19:33:38 +03:00
Lauri Ojansivu a864223f4a v1.53.8 2018-10-10 19:04:01 +03:00
Lauri Ojansivu b7a74e25bc - Try to fix Docker.
Thanks to xet7 !
2018-10-10 19:02:03 +03:00
Lauri Ojansivu 219091eb5e v1.53.7 2018-10-10 18:50:41 +03:00
Lauri Ojansivu 74a89e6610 - Try MongoDB 4.0.3
Thanks to xet7 !
2018-10-10 18:48:24 +03:00
Lauri Ojansivu 371ce30462 v1.53.6 2018-10-10 17:34:45 +03:00
Lauri Ojansivu 1b65cbd3db - Try to get latest npm. 2018-10-10 17:31:52 +03:00
Lauri Ojansivu b63ba110b8 Update translations. 2018-10-10 17:28:19 +03:00
Lauri Ojansivu 5f4f447539 - [Add LDAP to Snap Help](https://github.com/wekan/wekan/commit/809c8f64f69721d51b7d963248a77585867fac53).
Thanks to GitHub user Akuket for contributions.

Related #119
2018-10-10 17:27:48 +03:00
Lauri Ojansivu 809c8f64f6 - Add LDAP to Snap Help.
Thanks to Akuket !

Related #119
2018-10-10 17:24:05 +03:00
Lauri Ojansivu beaf20d256 v1.53.5 2018-10-10 17:09:06 +03:00
Lauri Ojansivu 644376a356 - Try to fix snap.
Thanks to xet7 !
2018-10-10 17:06:11 +03:00
Lauri Ojansivu db757f20b3 Try to fix snap 2018-10-10 16:57:07 +03:00
Lauri Ojansivu 961d9dcbdb v1.53.4 2018-10-10 16:28:02 +03:00
Lauri Ojansivu 0b971b6ddb - Upgrade hoek.
Thanks to xet7 !
2018-10-10 16:25:24 +03:00
Lauri Ojansivu ffdd6ff806 v1.53.3 2018-10-10 16:01:17 +03:00
Lauri Ojansivu 2b2315032d - [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 xet7 !
2018-10-10 15:57:46 +03:00
Lauri Ojansivu dd47d46f43 - Use Meteor 1.8.1-beta.0
Thanks to xet7 !
2018-10-10 15:39:54 +03:00
Lauri Ojansivu 079e45eb52 - Trying Meteor 1.8.1-beta.0
Thanks to xet7 !
2018-10-10 14:58:52 +03:00
Lauri Ojansivu 55aea69948 - Remove whitespace.
Thanks to xet7 !
2018-10-10 01:44:56 +03:00
Lauri Ojansivu fc5c2f40ba v1.53.2 2018-10-10 01:43:18 +03:00
Lauri Ojansivu f599391419 - Add LDAP package to Docker and Snap.
Thanks to xet7 !
2018-10-10 01:38:59 +03:00
Lauri Ojansivu ab0e1b3203 v1.53.1 2018-10-10 01:16:02 +03:00
Lauri Ojansivu 1dda8bff5e Merge branch 'dcmcand-dcmcand-dev' into edge 2018-10-10 00:49:07 +03:00
Lauri Ojansivu 1db6efa9c8 - [REST API: Get cards by swimlane id](https://github.com/wekan/wekan/pull/1944). Please [add docs](https://github.com/wekan/wekan/wiki/REST-API-Swimlanes).
Thanks to dcmcand !

Closes #1934
2018-10-10 00:46:18 +03:00
Lauri Ojansivu d4774d398e - Fix lint error: tab to spaces.
Thanks to xet7 !
2018-10-10 00:40:42 +03:00
Lauri Ojansivu 04f5bda70a Merge branch 'dcmcand-dev' of https://github.com/dcmcand/wekan into dcmcand-dcmcand-dev 2018-10-10 00:36:42 +03:00
Lauri Ojansivu f11c8727d9 Update translations. 2018-10-10 00:26:11 +03:00
Lauri Ojansivu 9e120cd44b - [Add LDAP support and authentications dropdown menu on login page](https://github.com/wekan/wekan/pull/1943).
Thanks to Akuket !
2018-10-10 00:21:18 +03:00
Lauri Ojansivu bf42372eef Merge branch 'Akuket-edge' into edge 2018-10-10 00:14:51 +03:00
Lauri Ojansivu 5e9bf61d3f - Use existing translation of "Back".
Thanks to xet7 !
2018-10-10 00:11:32 +03:00
Lauri Ojansivu 3a7ae7c5f2 Fix lint errors. 2018-10-09 21:16:47 +03:00
Chuck McAndrew be42b8d4cb Add route to get cards by swimlaneid 2018-10-09 15:05:57 +00:00
Akuket 28a01862d0 Merge branch 'edge' into edge 2018-10-09 14:49:12 +02:00
guillaume 3b4f285fea add ldap support | simplify authentications 2018-10-09 14:14:39 +02:00
Lauri Ojansivu 58855ada97 - Fix lint errors and warnings.
Thanks to xet7 !
2018-10-08 00:44:02 +03:00
Lauri Ojansivu 5d0b23ee3f - [Feature rules: fixes and enhancements](https://github.com/wekan/wekan/pull/1936).
Thanks to Angtrim !
2018-10-08 00:29:36 +03:00
Lauri Ojansivu 9cd980d9e6 Merge branch 'Angtrim-feature-rules' into edge
Closes #1912
2018-10-08 00:26:25 +03:00
Lauri Ojansivu d516ecb20c Update translations. 2018-10-08 00:13:38 +03:00
Lauri Ojansivu d91e0358f3 Merge branch 'feature-rules' of https://github.com/Angtrim/wekan into Angtrim-feature-rules 2018-10-08 00:06:55 +03:00
Angelo Gallarello 6931b88e40 Prevent rules with no name 2018-10-07 18:19:51 +02:00
Angelo Gallarello d0735e1d8e Fixed rules conflicts 2018-10-07 18:10:01 +02:00
Angelo Gallarello 506b95107c Fixed uppercase rules details 2018-10-07 17:55:24 +02:00
Angelo Gallarello 02422cc8f2 Fixed language source typo 2018-10-07 17:50:08 +02:00
Angelo Gallarello f19948f993 Added back button 2018-10-07 17:47:01 +02:00
Angelo Gallarello ebd884e654 Fixed lint errors 2018-10-07 17:27:26 +02:00
Lauri Ojansivu a2866ce6f3 Update translations (pt-BR). 2018-10-06 15:06:56 +03:00
Lauri Ojansivu 4c6c6ffb16 Update translations (pt-BR). 2018-10-06 14:01:21 +03:00
Lauri Ojansivu 525a6defd9 Merge branch 'devel' of github.com:wekan/wekan into devel 2018-10-03 21:34:18 +03:00
Lauri Ojansivu 1623ef65bb v1.53 2018-10-03 21:34:00 +03:00
Lauri Ojansivu 76bff73121 - Add info about edge.
Thanks to xet7 !
2018-10-03 21:24:02 +03:00
Lauri Ojansivu 22077af137 - Add info about stable and edge.
Thanks to xet7 !
2018-10-03 19:25:11 +03:00
Lauri Ojansivu a26f9bc1e7 - [OpenShift: Drop default namespace value and duplicate WEKAN_SERVICE_NAME parameter](https://github.com/wekan/wekan/pull/1930);
Thanks to lberk and InfoSec812 !
2018-10-03 18:15:01 +03:00
Lauri Ojansivu 56c7b3d00f - [OpenShift: Drop default namespace value and duplicate WEKAN_SERVICE_NAME parameter.commit](https://github.com/wekan/wekan/commit/fcc3560df4dbcc418c63470776376238af4f6ddc).
Thanks to lberk and InfoSec812 !
2018-10-03 18:12:55 +03:00
Lauri Ojansivu fcc3560df4 - OpenShift: Drop default namespace value and duplicate WEKAN_SERVICE_NAME parameter.
Thanks to lberk and InfoSec812 !
2018-10-03 18:08:18 +03:00
Lauri Ojansivu f79f2733a0 - Add info about root-url to GitHub issue template https://github.com/wekan/wekan/commit/4c0eb7dcc19ca9ae8c5d2d0276e0d024269de236).
Thanks to xet7 !
2018-10-03 18:04:25 +03:00
Lauri Ojansivu 4c0eb7dcc1 - Add info about root-url to GitHub issue template.
Thanks to xet7 !
2018-10-03 18:01:02 +03:00
Lauri Ojansivu 35677d0c55 - Fix Card URL https://github.com/wekan/wekan/pull/1932
Thanks to schulz !
2018-10-03 17:58:03 +03:00
Lauri Ojansivu 2206c5c84c - Fix Card URL https://github.com/wekan/wekan/pull/1932/files
Thanks to schulz !
2018-10-03 17:46:00 +03:00
Lauri Ojansivu 0d22f683fe - [Add info about root-url to GitHub issue template](https://github.com/wekan/wekan/commit/001c8f2b0138fb26a8c84acab62a604d0c6e5dda).
Thanks to xet7 !
2018-10-03 17:24:38 +03:00
Lauri Ojansivu 001c8f2b01 - Add info about root-url to GitHub issue template.
Thanks to xet7 !
2018-10-03 17:20:20 +03:00
Lauri Ojansivu 463b4f2442 - Add whole packages/ directory to .gitignore
Thanks to xet7 !
2018-10-03 17:07:56 +03:00
Lauri Ojansivu f437d8370e - Add whole packages/ directory to .gitignore
Thanks to xet7 !
2018-10-03 17:05:01 +03:00
Lauri Ojansivu 29cebc8d3d - OpenShift: Drop default namespace value and duplicate WEKAN_SERVICE_NAME parameter.
Thanks to lberk !
Thanks to GitHub users lberk and schulz for their contributions.
2018-10-03 17:03:45 +03:00
Lauri Ojansivu 5704dd9f8b Merge pull request #1930 from lberk/devel
Drop default namespace value and duplicate WEKAN_SERVICE_NAME parameter
2018-10-03 17:01:07 +03:00
Lauri Ojansivu 3d150b63dd - Fix Card URL https://github.com/wekan/wekan/pull/1932
Thanks to schulz !
2018-10-03 16:46:20 +03:00
Lauri Ojansivu 7ca21d5260 Merge branch 'schulz-devel' into devel 2018-10-03 16:43:11 +03:00
Lauri Ojansivu 111e4d8478 - Fix lint error: whitespace.
Thanks to xet7 !
2018-10-03 16:39:16 +03:00
Lukas Berk 0aac9405ee Update wekan.yml 2018-10-03 09:34:51 -04:00
Schulz f8b89129a3 Card url fixed 2018-10-03 15:58:17 +03:00
Lauri Ojansivu 5b8c642d8f - Add whole packages/ directory to .gitignore.
Thanks to xet7 !
2018-10-03 14:24:39 +03:00
Lauri Ojansivu 6c1ddf58ed Fix typo. 2018-10-03 12:00:54 +03:00
Lauri Ojansivu f32b27d2e3 - [LDAP](https://github.com/wekan/wekan/commit/288800eafc91d07f859c4f59588e0b646137ccb9). In progress.
Please test and [add info about bugs](https://github.com/wekan/wekan/issues/119).

Thanks to maximest-pierre, Akuket and xet7 !

Related #119
2018-10-03 11:59:57 +03:00
Lauri Ojansivu 288800eafc - Add LDAP. In progress.
Thanks to maximest-pierre, Akuket and xet.

Related #119
2018-10-03 11:50:52 +03:00
Lukas Berk cb9c94cf9d Drop default namespace value and duplicate WEKAN_SERVICE_NAME parameter 2018-10-02 14:50:11 -04:00
Lauri Ojansivu 18a1d4c5c6 v1.52.1 2018-10-02 01:02:00 +03:00
Lauri Ojansivu ef4292b559 Add edge. 2018-10-02 00:49:26 +03:00
Lauri Ojansivu 6a5e053da1 - REST API: [Add member with role to board. Remove member from board](https://github.com/wekan/wekan/commit/33caf1809a459b136b671f7061f08eb5e8d5e920).
[Docs](https://github.com/wekan/wekan/wiki/REST-API-Role). Related to [role issue](https://github.com/wekan/wekan/issues/1861).
- OAuth2: [Revert Oidc preferred_username back to username](https://github.com/wekan/wekan/commit/33caf1809a459b136b671f7061f08eb5e8d5e920).
  This [does not fix or break anything](https://github.com/wekan/wekan/issues/1874#issuecomment-425179291),
  Oidc already works with [doorkeeper](https://github.com/doorkeeper-gem/doorkeeper-provider-app).

Thanks to xet7 !

Related #1861
2018-10-02 00:36:51 +03:00
Lauri Ojansivu 33caf1809a - REST API: Add member with role to board. Remove member from board.
Docs: https://github.com/wekan/wekan/wiki/REST-API-Role
- OAuth2: Change Oidc preferred_username back to username.

Thanks to xet7 !

Related #1861
2018-10-02 00:21:43 +03:00
Lauri Ojansivu 1d803d4b51 v1.52 2018-10-01 16:47:06 +03:00
Lauri Ojansivu 2ad318b57c - Removed CAS from Wekan stable, because it does not work correctly.
CAS developent continues at edge.

Thanks to xet7 !

Related #1925
2018-10-01 16:40:18 +03:00
Lauri Ojansivu 5923585584 - Remove CAS from Wekan stable, because it does not work correctly.
CAS developent continues at edge.

Thanks to xet7 !

Related #1925
2018-10-01 16:33:29 +03:00
Lauri Ojansivu fccdffb9cc v1.51.2 2018-09-30 02:57:35 +03:00
Lauri Ojansivu 181c988706 - [REST API: Change role of board member](https://github.com/wekan/wekan/commit/51ac6c839ecf2226b2a81b0d4f985d3b942f0938).
Docs: https://github.com/wekan/wekan/wiki/REST-API-Role

Related #1861
2018-09-30 02:48:16 +03:00
Lauri Ojansivu 51ac6c839e - REST API: Change role on board. Docs: https://github.com/wekan/wekan/wiki/REST-API-Role
Thanks to entrptaher and xet7 !
2018-09-30 02:37:16 +03:00
Lauri Ojansivu 3a3666312f Fix typo. 2018-09-28 12:25:48 +03:00
Lauri Ojansivu c433e3f80f v1.51.1 2018-09-28 11:49:09 +03:00
Lauri Ojansivu 6b86b3b6e7 v1.51 2018-09-28 11:00:26 +03:00
Lauri Ojansivu d61d9994e3 - Move Add Board button to top left, so there is no need to scroll
to bottom when there is a lot of boards.

Thanks to xet7 !
2018-09-28 10:51:01 +03:00
Lauri Ojansivu a10b6fb173 - Move Add Board button to top left, so there is no need to scroll
to bottom when there is a lot of boards.

Thanks to xet7 !
2018-09-28 10:48:30 +03:00
Lauri Ojansivu f6e8e3d107 - Move Add Board button to top left, so there is no need to scroll
to bottom when there is a lot of boards.

Thanks to xet7 !
2018-09-28 10:46:37 +03:00
Lauri Ojansivu fb46a88a0f - Move Add Board button to top left, so there is no need to scroll
to bottom when there is a lot of boards.

Thanks to xet7 !
2018-09-28 10:40:20 +03:00
Lauri Ojansivu a8f1711890 Update translations. 2018-09-28 01:03:05 +03:00
Lauri Ojansivu d671a4bb32 Update translations. 2018-09-28 01:01:59 +03:00
Lauri Ojansivu cf5b962349 Update translations. 2018-09-28 00:52:10 +03:00
Lauri Ojansivu 07f155d82e - Add CAS with attributes
Thanks to ppoulard !
2018-09-28 00:39:43 +03:00
Lauri Ojansivu c6cea2fb4e - Add CAS with attributes.
Thanks to ppoulard !
2018-09-28 00:38:17 +03:00
Lauri Ojansivu 7ee453648c Fix typo. 2018-09-28 00:27:06 +03:00
Lauri Ojansivu b0826e2d7b - Add CAS with attributes.
Thanks to ppoulard !
2018-09-28 00:26:01 +03:00
Lauri Ojansivu bd6e4a351b Add CAS with attributes.
Thanks to ppoulard !
2018-09-28 00:23:31 +03:00
Lauri Ojansivu 209da19566 Merge pull request #1913 from ppoulard/devel
Add CAS with attributes
2018-09-25 00:33:49 +03:00
ppoulard b342cfed3a Add CAS with attributes 2018-09-24 16:14:41 +02:00
Lauri Ojansivu a404612174 v1.50.3 2018-09-23 12:47:14 +03:00
Lauri Ojansivu 4dd66eed8e Update translations. 2018-09-23 12:44:49 +03:00
Lauri Ojansivu 1ccacf60b2 - Remove "Fix Cannot setup mail server via snap variables"
to see does Wekan Snap start correctly after removing it.

Thanks to xet7 !
2018-09-23 12:42:44 +03:00
Lauri Ojansivu 6d88baebc7 - Remove "Fix Cannot setup mail server via snap variables" to see
does Wekan Snap start correctly after removing it.

Thanks to xet7 !
2018-09-23 12:38:32 +03:00
Lauri Ojansivu e52cfc84b4 v1.50.2 2018-09-23 11:34:51 +03:00
Lauri Ojansivu 98003e26b1 Update translations. 2018-09-23 11:33:37 +03:00
Lauri Ojansivu 3d4352ba0f v1.50.1 2018-09-22 11:18:39 +03:00
Lauri Ojansivu c060f2322b - Try to fix OAuth2: Change oidc username to preferred_username.
Thanks to xet7 !
2018-09-22 11:05:07 +03:00
Lauri Ojansivu 734e4e5f3f - Try to fix OAuth2: Change oidc username to preferred_username.
Thanks to xet7 !
2018-09-22 11:02:29 +03:00
Lauri Ojansivu b21a0caa4f - Fix Cannot setup mail server via snap variables
Thanks to suprovsky !

Closes #1906
2018-09-22 10:56:34 +03:00
Lauri Ojansivu c55563696e Merge branch 'suprovsky-edge' into edge 2018-09-22 10:47:18 +03:00
Lauri Ojansivu b8043d2dfc Merge branch 'edge' of https://github.com/suprovsky/wekan into suprovsky-edge 2018-09-22 10:45:45 +03:00
Lauri Ojansivu 3942b584bf - Fix Feature Rules.
Thanks to Angtrim !
2018-09-22 10:43:12 +03:00
Lauri Ojansivu dce63842bb Merge branch 'Angtrim-feature-rules' into edge 2018-09-22 10:41:18 +03:00
Lauri Ojansivu 8c1630c638 Update translations. 2018-09-22 10:29:11 +03:00
Lauri Ojansivu f6db23b469 Merge branch 'feature-rules' of https://github.com/Angtrim/wekan into Angtrim-feature-rules 2018-09-22 10:21:20 +03:00
Lauri Ojansivu 8c85955e6b Update translations (pl). 2018-09-22 10:16:06 +03:00
Lauri Ojansivu 86e3df0e5f Update translations (pl). 2018-09-22 10:14:57 +03:00
Lauri Ojansivu fd805399aa - Add default Wekan Snap MongoDB bind IP 127.0.0.1
Thanks to xet7 !

Related #1908
2018-09-22 10:13:23 +03:00
Lauri Ojansivu 6ac726e198 - Add default Wekan Snap MongoDB bind IP 127.0.0.1
Thanks to xet7 !

Related #1908
2018-09-22 10:09:37 +03:00
Lauri Ojansivu 73480a3e1c v1.50 2018-09-22 01:11:31 +03:00
Lauri Ojansivu 12656ee9a1 - Add default Wekan Snap MongoDB bind IP 127.0.0.1
Related #1908
2018-09-22 00:57:25 +03:00
Radosław Serba fff11d7fc9 export syntax error in bash 2018-09-21 20:25:53 +02:00
Angelo Gallarello dba5de1882 Lint fix 2018-09-21 20:19:47 +02:00
Angelo Gallarello 6201809810 Added general move trigger 2018-09-21 17:20:45 +02:00
Angelo Gallarello 99d38f2d61 Fixed card move to top/bottom 2018-09-21 17:06:22 +02:00
Angelo Gallarello 80e06b8ffc Rules hidden from non admin 2018-09-21 17:02:43 +02:00
Angelo Gallarello 93e69c94a2 Fixed card filter 2018-09-21 15:32:38 +02:00
Angelo Gallarello 1f02321e27 Fixed rules about member and box dropdowns width 2018-09-21 14:53:04 +02:00
Angelo Gallarello 37a53e7466 Fixed some rules 2018-09-21 14:22:00 +02:00
Lauri Ojansivu 254c7fe951 Update ChangeLog.
Thanks to xet7 !
2018-09-20 20:56:27 +03:00
Lauri Ojansivu 02a35f94a7 Merge branch 'devel' of github.com:wekan/wekan into devel 2018-09-20 20:52:59 +03:00
Lauri Ojansivu 39099106c6 - Update ChangeLog.
Thanks to xet7 !
2018-09-20 20:52:35 +03:00
Lauri Ojansivu 4f54442947 - Update readme.
Thanks to xet7 !
2018-09-20 20:51:17 +03:00
Lauri Ojansivu 1c4ce56b0f - Add more required debug info to GitHub issue template.
Thanks to xet7 !
2018-09-20 20:44:33 +03:00
Lauri Ojansivu 44f4a1c3bf - Add npm-debug.log and .DS_Store to .gitignore
Thanks to xet7 !
2018-09-20 20:43:19 +03:00
Lauri Ojansivu d652eb5cee - Add .DS_Store to .gitignore
Thansk to xet7 !
2018-09-20 20:41:41 +03:00
Lauri Ojansivu f7731f4f5e - Add npm-debug.log to .gitignore
Thanks to xet7 !
2018-09-20 20:40:40 +03:00
Lauri Ojansivu 94cd2ce690 Add more debug log requirements 2018-09-20 20:38:17 +03:00
Lauri Ojansivu 156164b5fd - Fix Dockerfile Meteor install by changing tar to bsdtar.
Thanks to maurice-schleussinger and xet7 !

Closes #1900
2018-09-19 19:29:40 +03:00
Lauri Ojansivu 1bad81ca86 - Fix Dockerfile Meteor install by changing tar to bsdtar.
Thanks to maurice-schleussinger and xet7 !

Closes #1900
2018-09-19 19:18:53 +03:00
Lauri Ojansivu ff2d467d42 - Fix Dockerfile Meteor install by changing tar to bsdtar.
Thanks to maurice-schleussinger and xet7 !

Closes #1900
2018-09-19 19:17:05 +03:00
Lauri Ojansivu 352e9033b6 - Fix Dockerfile Meteor install by changing tar to bsdtar.
Thanks to maurice-schleussinger and xet7 !

Closes #1900
2018-09-19 19:13:07 +03:00
Lauri Ojansivu 60ffe5ab9b Update translations. 2018-09-18 21:58:17 +03:00
Lauri Ojansivu 51c21fe639 Update translations. 2018-09-18 21:54:10 +03:00
Lauri Ojansivu bfabd63460 - Change from Node v8.12.0 prerelease to use official Node v8.12.0.
Thanks to GitHub user xet7 for contributions.
2018-09-17 20:42:50 +03:00
Lauri Ojansivu e7a03bb187 - Use official Node v8.12.0
Thanks to xet7 !
2018-09-17 20:39:49 +03:00
Lauri Ojansivu 9083d5f88d v1.49.1 2018-09-17 19:12:54 +03:00
Lauri Ojansivu e4cf94606c v1.49-edge-1 2018-09-17 19:05:15 +03:00
Lauri Ojansivu df4498f845 Update translations. 2018-09-17 18:54:15 +03:00
Lauri Ojansivu 7ec7a5f27c - Use official Node v8.12.0
Thanks to xet7 !
2018-09-17 18:52:30 +03:00
Lauri Ojansivu 4e21004c42 v1.49 2018-09-17 16:30:30 +03:00
Lauri Ojansivu ddb8c28c38 Update translations. 2018-09-17 16:27:49 +03:00
Lauri Ojansivu eb8c1530a5 Fix lint errors. 2018-09-17 15:53:03 +03:00
Lauri Ojansivu 70623df899 v1.48 2018-09-17 13:41:20 +03:00
Lauri Ojansivu 6d11f3345f - Remove OAuth2 until it is fixed.
Thanks to xet7 !
2018-09-17 13:35:38 +03:00
Lauri Ojansivu 3941066ba5 Update translations. 2018-09-17 13:26:08 +03:00
Lauri Ojansivu 53a020a23a - Remove OAuth2, until it is fixed.
Thanks to xet7 !
2018-09-17 13:23:08 +03:00
Lauri Ojansivu 2e52ff9e9d This release removes the following new features:
- Remove IFTTT rules, until they are fixed.

Thanks to xet7 !
2018-09-17 12:53:34 +03:00
Lauri Ojansivu 5445955a77 - Revert IFTTT.
Thanks to xet7 !
2018-09-17 12:49:43 +03:00
Lauri Ojansivu 338e18870f v1.47 2018-09-16 13:46:43 +03:00
Lauri Ojansivu 6516b96ee0 Update translations. 2018-09-16 13:42:24 +03:00
Lauri Ojansivu 0c28c5b087 Fix typo. 2018-09-16 13:38:51 +03:00
Lauri Ojansivu b23cbbf925 Merge branch 'Angtrim-feature-rules' into devel 2018-09-16 03:33:45 +03:00
Lauri Ojansivu 4f299b72f7 - IFTTT Rules. Useful to automate things like [adding labels, members, moving card, archiving them, checking checklists etc.
Please test and report bugs. Later colors need to be made translatable.

Thanks to GitHub users Angtrim and xet7 for their contributions.

Related #1160
2018-09-16 03:32:18 +03:00
Lauri Ojansivu ef04c2a826 Update translations. 2018-09-16 03:00:57 +03:00
Lauri Ojansivu b42649c777 Fix translation. 2018-09-16 02:48:52 +03:00
Lauri Ojansivu 5474099916 Fix translation. 2018-09-16 02:40:24 +03:00
Lauri Ojansivu 983a56b89b Fix translation. 2018-09-16 02:39:01 +03:00
Lauri Ojansivu 6fe7f3c553 Archive => Recycle Bin 2018-09-16 02:24:33 +03:00
Lauri Ojansivu df84a2be9a Fix lint errors. 2018-09-16 01:50:36 +03:00
Lauri Ojansivu b3a752ef34 Merge rules. 2018-09-16 00:44:41 +03:00
Lauri Ojansivu 6ab5f093d5 Detele temp files. 2018-09-16 00:11:55 +03:00
Lauri Ojansivu 6673b79738 Merge branch 'feature-rules' of https://github.com/Angtrim/wekan into Angtrim-feature-rules 2018-09-16 00:10:40 +03:00
Lauri Ojansivu 053757f135 Merge branch 'entrptaher-patch-1' into devel 2018-09-16 00:01:29 +03:00
Lauri Ojansivu c17bef2cce We do have some sponsors. 2018-09-16 00:00:51 +03:00
Angelo Gallarello 36c04edb9f Removed rasd file 2018-09-15 18:12:01 +02:00
Md. Abu Taher 4f7fd3bb7b Update README.md 2018-09-15 15:37:58 +06:00
Lauri Ojansivu 1983d3422b v1.46 2018-09-15 09:17:47 +03:00
Angelo Gallarello 8cb132f492 Export/Import done for rules 2018-09-14 19:20:24 +02:00
Angelo Gallarello a57806b054 Fixed listid 2018-09-14 18:03:57 +02:00
Angelo Gallarello 25da8376ca Beautyfied 2018-09-14 17:39:37 +02:00
Angelo Gallarello 30a3daa6af Finished alpha rules 2018-09-14 17:35:14 +02:00
Angelo Gallarello fc73dc5bbc Refactoring rules description 2018-09-14 16:49:06 +02:00
Lauri Ojansivu 9b43dd4fae - Allow Announcement to be markdown.
Note: xet7 did not yet figure out how to keep announcement on one line
  when markdown was added, so now Font Awesome icons are above and below.

Thanks to xet7 !

Closes #1892
2018-09-14 16:02:20 +03:00
Lauri Ojansivu e9f449e680 - [Allow Announcement to be markdown](https://github.com/wekan/wekan/issues/1892).
Note: xet7 did not yet figure out how to keep announcement on one line
  when markdown was added, so now Font Awesome icons are above and below.

Thanks to xet7 !

Closes #1892
2018-09-14 15:57:38 +03:00
Lauri Ojansivu 2e7a31f872 Update translations. 2018-09-13 15:13:13 +03:00
Lauri Ojansivu 2d546627e9 - Partially fix: Cannot move card from one swimline to the other if moving in the same list;
- Fix: Linking cards from empty board is possible and makes current board not load anymore.

Thanks to andresmanelli !

Related #1887,
closes #1885
2018-09-13 15:06:26 +03:00
Lauri Ojansivu f0cb948046 Merge branch 'andresmanelli-devel' into devel 2018-09-13 15:03:00 +03:00
Andrés Manelli 31f73057bf Fix #1885 2018-09-12 22:27:24 +02:00
Andrés Manelli 6aa7a2abef Fix #1887 2018-09-12 18:35:56 +02:00
Angelo Gallarello e649c79bb7 Fixed board id bug in move 2018-09-12 12:19:53 +02:00
Angelo Gallarello 34b37116cf Fixed rule allows 2018-09-12 00:52:29 +02:00
Lauri Ojansivu 4e7f33b9e2 - Add source-map-support.
Thanks to HLFH and xet7 !

Closes #1889
2018-09-11 16:32:23 +03:00
Lauri Ojansivu 1e2582f043 - Add source-map-support.
Thanks to xet7 !

Closes #1889
2018-09-11 16:25:24 +03:00
Lauri Ojansivu 63d4e0489f - Turn of http/2 in Caddyfile so that Firefox Inspect Console does not show errors about wss
websocket config. Chrome web console supports http/2.
  Note: If you are already using Caddy and have modified your Caddyfile, you need to edit your Caddyfile manually.

Thanks to GitHub user xet7 for contributions.
2018-09-11 00:49:54 +03:00
Lauri Ojansivu f1ab46d517 - Turn of http/2 so that Firefox Inspect Console does not show
wss websocket config. Chrome web console supports http/2.
  Note: If you are already using Caddy and have modified your
  Caddyfile, you need to edit your Caddyfile manually.

Thanks to xet7 !

Related #934
2018-09-11 00:43:27 +03:00
Lauri Ojansivu 4608c057d5 - Upgrade to MongoDB v3.2.21
Thanks to xet7 !
2018-09-10 00:56:16 +03:00
Lauri Ojansivu 0cb3aee803 - Upgrade to MongoDB v3.2.21
Thanks to xet7 !
2018-09-10 00:54:08 +03:00
Lauri Ojansivu b39458d2ee v1.45 2018-09-09 22:18:54 +03:00
Lauri Ojansivu ca90220d18 - Fix lint error.
Thanks to xet7 !
2018-09-09 22:17:50 +03:00
Lauri Ojansivu 45c0343f45 - Fix lint error.
Thanks to xet7 !
2018-09-09 22:12:47 +03:00
Lauri Ojansivu eb166737e3 v1.44 2018-09-09 22:03:04 +03:00
Lauri Ojansivu a58ee144ac Update translations. 2018-09-09 21:53:00 +03:00
Lauri Ojansivu 54260ca325 Merge remote-tracking branch 'origin/master' into devel 2018-09-09 21:45:56 +03:00
Lauri Ojansivu cb7eebaed0 - Fix cards export and add customFields export.
Thanks to ymeramees !

Closes #1873,
related #1775
2018-09-09 21:43:45 +03:00
Lauri Ojansivu 6eeb708e4d - Fix cards export and add customFields export.
Thanks to ymeramees !

Closes #1873,
related #1775
2018-09-09 21:40:23 +03:00
Lauri Ojansivu 1c49469b33 Merge pull request #1886 from ymeramees/devel
Fix cards export and add customFields export
2018-09-09 21:17:26 +03:00
ymeramees d18cd59c05 Fixed cards export
Fixed cards export.
2018-09-09 14:23:53 +03:00
Ymeramees 960cb27eef Added customFields export. 2018-09-08 08:10:23 +03:00
Ymeramees cdab6076cc Merge remote-tracking branch 'upstream/master' into devel
Updated to upstream master 1.43
2018-09-08 07:04:55 +03:00
Lauri Ojansivu be9cf34462 - REST API: Add startAt/dueAt/endAt etc. https://github.com/wekan/wekan/wiki/REST-API-Cards
Thanks to xet7 !

Closes #1879
2018-09-07 12:36:12 +03:00
Lauri Ojansivu 1e0fdf8abc - REST API: Add startAt/dueAt/endAt etc. https://github.com/wekan/wekan/wiki/REST-API-Cards
Thanks to xet7 !

Closes #1879
2018-09-07 12:30:06 +03:00
Lauri Ojansivu 2ef8803dfd Merge branch 'devel' 2018-09-06 19:55:04 +03:00
Lauri Ojansivu 1d2896886e v1.43 2018-09-06 19:54:07 +03:00
Lauri Ojansivu e52351dcbf - Fix "No Comments" permission on Wekan and Trello import.
Thanks to xet7 !
2018-09-06 19:37:18 +03:00
Lauri Ojansivu 0a001d505d - Fix "No Comments" permission on Wekan and Trello import.
Thanks to xet7 !
2018-09-06 19:29:52 +03:00
Lauri Ojansivu 55072c529a Merge branch 'devel' 2018-09-06 12:48:03 +03:00
Lauri Ojansivu 66e22a2c87 v1.42 2018-09-06 12:46:26 +03:00
Lauri Ojansivu 07b505aa32 Update translations (fr). 2018-09-06 12:40:54 +03:00
Lauri Ojansivu 3c86cf854e - Add swimlaneId in activity. Create default swimlaneId in API.
Thanks to andresmanelli !
2018-09-06 12:33:16 +03:00
Lauri Ojansivu 334c15ff71 Merge branch 'devel' of https://github.com/andresmanelli/wekan into devel 2018-09-06 12:06:54 +03:00
Lauri Ojansivu 1aecf8da6b - REST API: [Create board options to be modifiable](https://github.com/wekan/wekan/commit/9cea76e4efaacaebcb2e9f0690dfeb4ef6d62527),
like permissions, public/private board - now private by default,
  and board background color.
  Docs at https://github.com/wekan/wekan/wiki/REST-API-Boards

Thanks to xet7 !

Related #1037
2018-09-06 12:04:09 +03:00
Lauri Ojansivu 9cea76e4ef - REST API: Create board options to be modifiable, like
permissions, public/private board - now private by default,
  and board background color.
  Docs at https://github.com/wekan/wekan/wiki/REST-API-Boards

Thanks to xet7 !

Related #1037
2018-09-06 11:56:38 +03:00
Andrés Manelli e74fb2f5b0 Add swimlaneId in activity. Create default swimlaneId in API 2018-09-06 00:23:50 +02:00
Ymeramees 6c0b6ca670 Merge remote-tracking branch 'upstream/master' into devel
Merge to update to latest upstream/master
2018-09-05 07:23:34 +03:00
Lauri Ojansivu 9492daf9bc Merge branch 'devel' 2018-09-05 02:13:10 +03:00
Lauri Ojansivu f346ce04f5 v1.41 2018-09-05 02:11:38 +03:00
Lauri Ojansivu b465500afa Update translations (de). 2018-09-05 02:06:50 +03:00
Lauri Ojansivu adf969f6ff - Try to fix Wekan Sandstorm API. https://github.com/wekan/wekan/commit/6462f855c9388416517b0e5d29e11b4ede21f78e
Thanks to ocdtrekkie and xet7 !

Related #1279
2018-09-05 02:01:13 +03:00
Lauri Ojansivu 6462f855c9 - Try to fix Wekan Sandstorm API.
Thanks to ocdtrekkie and xet7 !
2018-09-05 01:58:18 +03:00
Lauri Ojansivu 3721742327 Merge branch 'devel' 2018-09-04 20:52:45 +03:00
Lauri Ojansivu 910771708a v1.40 2018-09-04 20:51:22 +03:00
Lauri Ojansivu 7ba361e2c9 Update translations. 2018-09-04 20:24:00 +03:00
Lauri Ojansivu cc2e0a7c7c - Add permission "No comments" https://github.com/wekan/wekan/commit/77efcf71376d3da6c19ad1a4910567263e83c0ca
It is like normal user, but does not show comments and activities.

Thanks to xet7 !

Related #1861
2018-09-04 20:13:44 +03:00
Lauri Ojansivu 77efcf7137 - Add permission "No comments". It is like normal user, but does not show comments and activities.
Thanks to xet7 !
2018-09-04 20:09:36 +03:00
Lauri Erm 1298a07838 Merge remote-tracking branch 'upstream/master' into devel
Merge with upstream/master
2018-09-02 06:13:55 +03:00
Lauri Ojansivu bcbe1aaaf5 Update translations. 2018-08-31 13:54:44 +03:00
Lauri Ojansivu 0c351f4864 Merge branch 'devel' 2018-08-29 00:39:30 +03:00
Lauri Ojansivu 066237de08 v1.39 2018-08-29 00:37:21 +03:00
Lauri Ojansivu ec3902021e - Only allow ifCanModify users to add dates on cards.
Thanks to rjevnikar !
2018-08-29 00:29:43 +03:00
Lauri Ojansivu 6928fd71a9 Merge pull request #1867 from rjevnikar/commentOnlyDateFix
Only allow ifCanModify users to add dates on cards
2018-08-29 00:18:10 +03:00
Lauri Ojansivu 035334125b Merge branch 'devel' 2018-08-29 00:11:55 +03:00
Lauri Ojansivu 70f37c55fd v1.38 2018-08-29 00:10:40 +03:00
Lauri Ojansivu 670ace6a8d - Add msavin:userCache to speedup Wekan.
https://forums.meteor.com/t/introducing-a-new-approach-to-meteor-user-this-simple-trick-can-save-you-millions-of-database-requests/45336/7
  https://github.com/msavin/userCache

Thanks to msavin and xet7 !

Related #1672
2018-08-28 23:43:01 +03:00
Lauri Ojansivu ebaccbccca - Add msavin:userCache.
https://forums.meteor.com/t/introducing-a-new-approach-to-meteor-user-this-simple-trick-can-save-you-millions-of-database-requests/45336/7
  https://github.com/msavin/userCache

Thanks to msavin and xet7 !

Related #1672
2018-08-28 23:36:54 +03:00
Lauri Ojansivu 652f4e693b - Fix Delete Board.
Thanks to rjevnikar and xet7 !
2018-08-28 23:28:57 +03:00
rjevnikar 555d31cca6 Only allow ifCanModify users to add dates (received, start, end, and due). 2018-08-28 20:23:29 +00:00
Lauri Ojansivu 534b20feda - Fix Delete Board and keep confirmation popup.
Thanks to xet7 !
2018-08-28 23:23:24 +03:00
Lauri Ojansivu 24f59b1855 Merge branch 'devel' 2018-08-28 21:21:10 +03:00
Lauri Ojansivu c0df1dd4aa v1.37 2018-08-28 21:20:16 +03:00
Lauri Ojansivu ba63627ebf Fix typo. 2018-08-28 21:16:32 +03:00
Lauri Ojansivu da636ed17d - Add Missing Index on cards.parentId since Swimlane integration
to speedup Wekan;
- Update OpenShift template to add Route and parameterize;
- Fix typos in Wekan snap help.

Thanks to Clement87, InfoSec812 and xet7 !
2018-08-28 21:12:24 +03:00
Lauri Ojansivu 4e12bcc378 - Add Missing Index on cards.parentId since Swimlane integration
to speedup Wekan.

Thanks to Clement87 !

Closes #1863
2018-08-28 21:01:55 +03:00
Lauri Ojansivu 6cec3b36de Update translations. 2018-08-28 19:22:39 +03:00
Lauri Ojansivu 3e7247891d Merge pull request #1865 from InfoSec812/InfoSec812-openshift-route-parameterized
Update OpenShift template to add Route and parameterize
2018-08-28 19:22:13 +03:00
Deven Phillips 6bb2f311e2 Change MongoDB ImageStream Config
Also debugging some issues
2018-08-28 12:11:35 -04:00
Lauri Ojansivu 0c5fc6d7fd Fix typos. 2018-08-28 19:01:00 +03:00
Deven Phillips 8fae676551 Add route to template and parameterize 2018-08-28 11:58:52 -04:00
Lauri Ojansivu 379f1af89e Update translations. 2018-08-27 19:34:34 +03:00
Lauri Ojansivu 5e128583ac Merge branch 'devel' 2018-08-25 01:24:02 +03:00
Lauri Ojansivu 23c27f9e07 v1.36 2018-08-25 01:22:50 +03:00
Lauri Ojansivu c36509095a Add empty oauth2 settings to Sandstorm. 2018-08-25 01:11:18 +03:00
Lauri Ojansivu f85a05e454 - Fix typos in security documentation.
Thanks to tlevine !

Related https://github.com/wekan/wekan/pull/1857
2018-08-25 01:01:45 +03:00
Lauri Ojansivu 067e4d15f3 Merge pull request #1857 from tlevine/security-typos
Security documentation typos
2018-08-25 00:59:56 +03:00
Lauri Ojansivu 65d1330d35 Merge branch 'salleman33-devel' into devel 2018-08-25 00:51:16 +03:00
Lauri Ojansivu 39312a075e - [OAuth2 Login on Standalone Wekan](https://github.com/wekan/wekan/wiki/OAuth2). For example, Rocket.Chat can provide OAuth2 login to Wekan.
Also, if you have Rocket.Chat using LDAP/SAML/Google/etc for logging into Rocket.Chat, then same users can login to Wekan when
  Rocket.Chat is providing OAuth2 login to Wekan.

Thanks to salleman33 and xet7 !

Closes #234
2018-08-25 00:49:02 +03:00
Lauri Ojansivu 96173ad431 Merge branch 'devel' of https://github.com/salleman33/wekan into salleman33-devel 2018-08-24 19:46:42 +03:00
Thomas Levine c0957ce173 I removed the period from a non-sentence. 2018-08-24 10:09:45 +00:00
Thomas Levine fdc168a476 I corrected typos in security documentation. 2018-08-24 10:09:45 +00:00
Lauri Ojansivu 3d76b8e1c1 - Move labels back to original place at minicard.
Thanks to hever and xet7 !

Closes #1842
2018-08-23 17:01:38 +03:00
Lauri Ojansivu 1296fce72a - Move labels back to original place at minicard.
Thanks to hever and xet7 !

Closes #1842
2018-08-23 16:58:07 +03:00
Lauri Ojansivu c34b1a9ec5 Merge branch 'devel' 2018-08-23 00:07:12 +03:00
Lauri Ojansivu 13db2fd7b2 v1.35 2018-08-23 00:06:15 +03:00
Lauri Ojansivu 511d1973eb Add webhooks-attributes to Sandstorm.
Thanks to xet7 !
2018-08-23 00:02:00 +03:00
Lauri Ojansivu dfd26e4843 - Remove avatar url fix javascript version, it breaks too easily.
Same can be done with Caddy.

Thanks to xet7 !

Closes #1776,
closes #386
2018-08-22 23:58:47 +03:00
Lauri Ojansivu d2c3ecdbcd Fix typos. 2018-08-22 22:46:56 +03:00
Lauri Ojansivu 1249bef93e Fix typo. 2018-08-22 22:45:20 +03:00
Lauri Ojansivu 71b642a2ba Fix lint errors. 2018-08-22 22:42:17 +03:00
Lauri Ojansivu f170c116bb Fix typo. 2018-08-22 22:35:52 +03:00
Lauri Ojansivu 4ed2f29e30 - Make the attributes that the webhook sends configurable.
Thanks to omarsy and xet7 !
2018-08-22 22:23:39 +03:00
Lauri Ojansivu d0731a4bf4 Merge branch 'omarsy-devel' into devel 2018-08-22 22:20:14 +03:00
Lauri Ojansivu d165733242 - Add webhooks-attributes to Snap and Docker.
Thanks to xet7 !
2018-08-22 22:19:06 +03:00
Lauri Ojansivu a91f0b5c3b Merge branch 'devel' of https://github.com/omarsy/wekan into omarsy-devel 2018-08-22 22:02:04 +03:00
Lauri Ojansivu cc84bf2de3 - Remove suburl from beginning of avatar file path,
so that avatar images don't get broken when root-url changes
  to different sub-url. This does not change avatar urls
  in database, instead this fixes url on the fly after
  loading avatar url from database.

Thanks to xet7 !
2018-08-22 21:57:38 +03:00
Lauri Ojansivu 7e0bc1e33a - Remove suburl from beginning of avatar file path, so that avatar images
don't get broken when root-url changes to different sub-url.
  This does not change avatar urls in database, instead this
  fixes url on the fly after loading avatar url from database.

Thanks to xet7 !

Closes #1776,
closes #386
2018-08-22 21:42:53 +03:00
Lauri Ojansivu 1b94b919fe This release adds the following new features:
Add Caddy plugins:
- [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)
  to block requests by ip address;
- [http.realip](https://caddyserver.com/docs/http.realip)
  for showing real X-Forwarded-For IP to behind proxy;
- Turn off Caddy telemetry.

Thanks to Caddy contributors and xet7 !
2018-08-22 16:56:02 +03:00
Lauri Ojansivu d68ad5af04 Add Caddy plugins:
- [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)
  to block requests by ip address;
- [http.realip](https://caddyserver.com/docs/http.realip)
  for showing real X-Forwarded-For IP to behind proxy.

Thanks to Caddy contributors and xet7 !
2018-08-22 16:16:56 +03:00
Omar Sy fcbbb93bb6 change let to const 2018-08-22 15:07:46 +02:00
Omar Sy b3b8d3c086 make the attributes that the webhook sends configurable 2018-08-22 14:24:21 +02:00
Lauri Ojansivu 676140f5c8 Merge branch 'devel' 2018-08-22 11:01:06 +03:00
Lauri Ojansivu 20757efc7e v1.34 2018-08-22 11:00:45 +03:00
Lauri Ojansivu 4d615057fe Update translations. 2018-08-22 10:17:43 +03:00
Lauri Ojansivu 9bdb5aea87 - Add Favicon for pinned tab on Safari browser.
Thanks to woodyart and xet7 !

Closes #1795
2018-08-22 10:04:31 +03:00
Lauri Ojansivu d67c435132 - Add Favicon for pinned tab on Safari browser.
Thanks to woodyart and xet7 !

Closes #1795
2018-08-22 10:01:19 +03:00
Lauri Ojansivu 18de911a7f - Allow Sandstorm to serve Wekan HTTP API. This may help towards #1279
Thanks to ocdtrekkie !

Related #1279
2018-08-22 09:41:14 +03:00
Lauri Ojansivu 39b1871e4d Merge pull request #1851 from ocdtrekkie/patch-1
Allow Sandstorm to serve Wekan HTTP API
2018-08-22 09:39:21 +03:00
Lauri Ojansivu eecac0e37f - Fix and improve linked cards.
Thanks to andresmanelli !
2018-08-22 09:30:12 +03:00
Lauri Ojansivu 3e0352c586 Merge branch 'andresmanelli-devel' into devel 2018-08-22 09:09:05 +03:00
Jacob Weisz 485f6b5ac2 Allow Sandstorm to serve Wekan HTTP API
This is probably not a "whole" fix, but this may be a missing piece.
2018-08-21 22:23:32 -05:00
Andrés Manelli 3e715bbcc9 Fix and improve linked cards 2018-08-21 22:21:23 +02:00
Lauri Ojansivu b881c3b908 Update translations. 2018-08-21 00:10:15 +03:00
Lauri Ojansivu 9e29d4c815 - Move color labels on minicard to bottom of minicard.
Thanks to therampagerado and xet7 !

Closes #1842
2018-08-21 00:03:24 +03:00
Lauri Ojansivu f09d9b63de - Move color labels on minicard to bottom of minicard.
Thanks to xet7 !

Closes #1842
2018-08-20 23:59:43 +03:00
Lauri Ojansivu 0588c2f605 - Restored SMTP settings at Admin Panel, and disabled showing password.
Thanks to xet7 !

Closes #1790
2018-08-20 23:19:14 +03:00
Lauri Ojansivu b216c63c13 - Restored SMTP settings at Admin Panel, and disabled showing password.
Thanks to xet7 !

Closes #1790
2018-08-20 23:16:24 +03:00
Angelo Gallarello 1f5f429fc4 Completed rules 2018-08-19 18:53:50 +02:00
Angelo Gallarello 3b62b5ec5d Fixed triggers to use names and not id 2018-08-17 14:16:56 +02:00
Angelo Gallarello 2f24dcfc7d Progress on triggers UI 2018-08-16 23:37:29 +02:00
Angelo Gallarello fda4e954eb Completed activities log in card 2018-08-16 22:10:05 +02:00
Angelo Gallarello cc285afd59 Complete checklist activities 2018-08-16 21:49:56 +02:00
Lauri Ojansivu b186561355 Merge branch 'devel' 2018-08-16 22:23:10 +03:00
Lauri Ojansivu c9ca79aac8 Update translations. 2018-08-16 22:21:26 +03:00
Lauri Ojansivu 6b4e6d0c63 v1.33 2018-08-16 22:12:37 +03:00
Lauri Ojansivu c60ae13b5f - Change default value of label ids.
Thanks to omarsy !
2018-08-16 21:34:56 +03:00
Lauri Ojansivu 4e1fedb236 Merge pull request #1837 from omarsy/devel
Change of the default value of labelIds
2018-08-16 21:20:46 +03:00
Omar Sy 3c9aa65ca3 Change of the default value of labelIds 2018-08-16 19:10:47 +02:00
Angelo Gallarello f7446ba934 Remove attachment activity 2018-08-16 17:18:55 +02:00
Angelo Gallarello 9c6d374b95 Labels activities 2018-08-16 16:54:29 +02:00
Lauri Ojansivu 365e2e5b4b Merge branch 'devel' 2018-08-16 14:40:56 +03:00
Lauri Ojansivu 4064429047 v1.32 2018-08-16 14:39:19 +03:00
Lauri Ojansivu 62dd28d91c - Use only framing policy, not all of content policy.
- Fix Date and Time Formats are only US in every language.

Thanks to xet7 !

Closes #1833
2018-08-16 14:34:01 +03:00
Lauri Ojansivu b3005f828d - Use only framing policy, not all of content policy.
- Fix Date and Time Formats are only US in every language.

Thanks to xet7 !

Closes #1833
2018-08-16 14:29:38 +03:00
Angelo Gallarello 99e7c65907 Fixed remove 2018-08-16 00:42:14 +02:00
Angelo Gallarello 6828ccd7f1 Main flow implemented 2018-08-16 00:32:31 +02:00
Lauri Ojansivu 36447ba1c0 - Content Policy: Allow inline scripts, otherwise there is errors in browser
- Set default matomo settings to disabled
- Fix hidden system [messages](https://github.com/wekan/wekan/issues/1830)
- Fix Requested By and Assigned By fields.

Thanks to andresmanelli and xet7 !

Closes #1830
2018-08-15 23:52:32 +03:00
Lauri Ojansivu c694505885 Merge branch 'devel' of github.com:wekan/wekan into devel 2018-08-15 23:44:07 +03:00
Lauri Ojansivu 807c6ce09e - Content Policy: Allow inline scripts, otherwise there is errors in browser/inspect/console.
- Set default matomo settings to disabled.

Thanks to xet7 !
2018-08-15 23:41:01 +03:00
Lauri Ojansivu 9fc3de8502 Merge pull request #1832 from andresmanelli/devel
Fix hiddenSystemMessages
2018-08-15 23:24:11 +03:00
Andrés Manelli be00465e67 Fix hiddenSystemMessages 2018-08-15 22:17:52 +02:00
Lauri Ojansivu 5c33a85341 Merge pull request #1831 from andresmanelli/devel
Fix removed setters and getters
2018-08-15 22:08:19 +03:00
Andrés Manelli e55d7e4f72 Fix removed setters and getters 2018-08-15 20:50:51 +02:00
Angelo Gallarello 9b0eb0a9f1 Almost full circle 2018-08-15 18:47:09 +02:00
Lauri Ojansivu 53c0a52788 Remove Trello. 2018-08-14 21:22:46 +03:00
Lauri Ojansivu 89b535ac0f Merge branch 'devel' 2018-08-14 18:52:19 +03:00
Lauri Ojansivu c2eb300e21 v1.31
- Fix: Export of Board does not work on Docker.

Thanks to xet7 !

Closes #1820
2018-08-14 18:50:05 +03:00
Lauri Ojansivu eea077e57e Fix quotes. 2018-08-14 18:43:09 +03:00
Lauri Ojansivu f725291e14 Try to fix Dockerfile. 2018-08-14 18:27:37 +03:00
Lauri Ojansivu bec1256727 Try to fix Docker env variables. 2018-08-14 17:36:03 +03:00
Lauri Ojansivu 9407992312 Fix typo. 2018-08-14 17:29:53 +03:00
Lauri Ojansivu c7e02ad2ee Fix trusted url on docker-compose.yml. 2018-08-14 17:09:46 +03:00
Lauri Ojansivu ac12aa7ede Merge branch 'devel' 2018-08-14 15:19:53 +03:00
Lauri Ojansivu cec5f45459 v1.30 2018-08-14 15:18:58 +03:00
Lauri Ojansivu ab73afe17a Fix lint errors. 2018-08-14 14:43:15 +03:00
Lauri Ojansivu dc4e93ad56 - Fix Import from Trello error 400.
Thanks to xet7 !
2018-08-14 01:33:52 +03:00
Lauri Ojansivu 2f557ae3a5 - Fix Import from Trello error 400.
Thanks to xet7 !
2018-08-14 01:28:53 +03:00
Lauri Ojansivu be25e372a3 Update translations. 2018-08-13 20:10:41 +03:00
Lauri Ojansivu 3f937764cb Fix lint errors. 2018-08-13 20:01:08 +03:00
Lauri Ojansivu 0b9748dff6 - When Content Policy is enabled, allow one URL to have iframe that embeds Wekan
- Add option to turn off Content Policy
- Allow always in Wekan markdown <img src="any-image-url-here">

Thanks to xet7 !

Closes #1676
2018-08-13 19:34:42 +03:00
Lauri Ojansivu b9929dc682 - When Content Policy is enabled, allow one URL to have iframe that embeds Wekan
- Add option to turn off Content Policy
- Allow always in Wekan markdown <img src="any-image-url-here">

Thanks to xet7 !

Closes #1676
2018-08-13 19:24:07 +03:00
Lauri Ojansivu 034981cd3d Merge branch 'devel' 2018-08-12 17:36:50 +03:00
Lauri Ojansivu 79e464bf90 v1.29 2018-08-12 17:36:06 +03:00
Lauri Ojansivu b015b5b724 Revert eslint changes, because they caused breakage. 2018-08-12 17:32:53 +03:00
Lauri Ojansivu f5515cb95f Fix lint errors. 2018-08-12 14:36:37 +03:00
Lauri Ojansivu 16bbd892aa Merge branch 'devel' 2018-08-12 14:14:10 +03:00
Lauri Ojansivu 32d9a2c10b v1.27 2018-08-12 14:12:52 +03:00
Lauri Ojansivu 9967859f42 Merge branch 'andresmanelli-devel' into devel 2018-08-12 14:07:19 +03:00
Lauri Ojansivu eac0b3e7bb - Linked Cards and Linked Boards.
Thanks to andresmanelli !
2018-08-12 14:05:58 +03:00
Lauri Ojansivu 8177a1ed0a Update translations. 2018-08-12 14:03:13 +03:00
Andrés Manelli 17308dc5f3 Fix lint errors 2018-08-11 01:00:21 +02:00
Andrés Manelli 67301e07e2 Fix rebase errors 2018-08-11 00:50:20 +02:00
Andrés Manelli 315db00e83 Fix lint warning 2018-08-11 00:17:42 +02:00
Andrés Manelli 692a1bc369 Refactor imported -> linked in server and i18n 2018-08-11 00:17:42 +02:00
Andrés Manelli f76d8e47a8 Refactor imported -> linked in components 2018-08-11 00:17:42 +02:00
Andrés Manelli 6adfcb3513 Refactor imported -> linked in models 2018-08-11 00:16:31 +02:00
Andrés Manelli bce2242528 Add imported card location 2018-08-11 00:15:51 +02:00
Andrés Manelli f0597ef0c4 Indicate board or card through icons. Indicate if archived 2018-08-11 00:15:13 +02:00
Andrés Manelli 10aab8a733 Remove imported cards and boards colors 2018-08-11 00:14:13 +02:00
Andrés Manelli fb75a487fc Fix lint errors 2018-08-11 00:14:13 +02:00
Andrés Manelli 37306c8d22 Add title binding 2018-08-11 00:14:13 +02:00
Andrés Manelli 4ffa8784a2 Avoid reimport imported card 2018-08-11 00:07:29 +02:00
Andrés Manelli 74a01691e3 Add two way binding of activities, comments, and attachments 2018-08-11 00:07:29 +02:00
Andrés Manelli 49c415f023 Add two way binding of checklists 2018-08-11 00:07:29 +02:00
Andrés Manelli b2e175ba8c Avoid exporting imported cards 2018-08-11 00:07:29 +02:00
Andrés Manelli 724d26379c Add two way binding of card/board times 2018-08-11 00:07:29 +02:00
Andrés Manelli 0a62089df0 Allow description and member two way binding 2018-08-10 23:59:08 +02:00
Andrés Manelli a93de07fb9 Avoid importing imported cards or boards 2018-08-10 23:57:35 +02:00
Andrés Manelli 64367a01dd Link description 2018-08-10 23:57:35 +02:00
Andrés Manelli 5644ef66af Import card-as-card, board-as-card. Add styling. Missing details and links 2018-08-10 23:56:02 +02:00
Andrés Manelli 061a13e46e Avoid showing current board 2018-08-10 23:55:19 +02:00
Andrés Manelli dcc7b2970f Add UI for importing card-as-card and board-as-card 2018-08-10 23:55:19 +02:00
Lauri Ojansivu d509b2608f Merge branch 'devel' 2018-08-09 17:13:02 +03:00
Lauri Ojansivu 193af893ee v1.26 2018-08-09 17:11:02 +03:00
Lauri Ojansivu acd105e61b - Set Matomo blank settings on Sandstorm.
Thanks to xet7 !
2018-08-09 17:08:22 +03:00
Lauri Ojansivu a300b73d56 - Set WITH_API=true on Sandstorm, so that export works.
Thanks to xet7 !
2018-08-09 16:56:58 +03:00
Lauri Ojansivu 5168fb7717 Merge branch 'devel' 2018-08-09 13:28:39 +03:00
Lauri Ojansivu 945ffeda34 v1.25 2018-08-09 13:27:18 +03:00
Lauri Ojansivu 66adc397bf Merge pull request #1822 from Yanonix/devel
Fix showing only the cards of the current board in calendar view
2018-08-09 13:21:26 +03:00
Lauri Ojansivu 82a6b4245c Merge branch 'devel' 2018-08-09 13:16:51 +03:00
Lauri Ojansivu ae5ea46d7f v1.24 2018-08-09 13:15:53 +03:00
Lauri Ojansivu b5022529ac - Use new WITH_API and Matomo env variables at Dockerfile.
Thanks to xadagaras and xet7 !

Closes #1820
2018-08-09 12:51:28 +03:00
Lauri Ojansivu 49c471d816 Use new WITH_API and Matomo env variables at Dockerfile.
Thanks to xadagaras and xet7 !
2018-08-09 12:50:04 +03:00
Lauri Ojansivu 445aa89e4f - Use new WITH_API and Matomo env variables at Dockerfile.
Closes #1820
2018-08-09 12:46:19 +03:00
Yanonix 787941857d Fix showing only the cards of the current board in calendar view 2018-08-09 12:23:34 +03:00
Lauri Ojansivu 6a2b494713 Update translations. 2018-08-08 10:38:26 +03:00
Lauri Ojansivu 04d7c47f4c Update node to v8.12.0 prerelease build. 2018-08-04 21:47:02 +03:00
Lauri Ojansivu 9c94ea58b4 Revert snap changes. 2018-08-04 18:47:46 +03:00
Lauri Ojansivu 9f65696fcc Try to fix snap. 2018-08-04 16:47:21 +03:00
Angelo Gallarello 93cc7f0232 Triggers view 2018-08-04 15:15:04 +02:00
Angelo Gallarello 7e4bd4a0a7 Add and remove ui 2018-08-03 20:43:37 +02:00
Angelo Gallarello f63482b587 UI for rules list 2018-08-03 19:47:20 +02:00
Lauri Ojansivu 95b21943ee Fix port order, hopefully correctly.
Related #1778

Thanks to xet7 !
2018-08-02 16:47:50 +03:00
Lauri Ojansivu d1400f48c3 Merge pull request #1816 from Worteks/devel
Change Run User for Openshift compliance
2018-08-02 16:25:27 +03:00
Thibaut Demaret 53d545eeef Change Run User for Openshift compliance 2018-08-02 15:09:34 +02:00
Lauri Ojansivu afeb2de412 Merge branch 'rjevnikar-dateCSS' into devel 2018-08-02 00:55:08 +03:00
Lauri Ojansivu 83d6ef7301 - Fix the flagging of dates.
Thanks to rjevnikar and xet7 !
2018-08-02 00:54:20 +03:00
Lauri Ojansivu d2e93c4927 Fix typo. 2018-08-02 00:51:45 +03:00
Lauri Ojansivu fd67bb8e67 Merge branch 'dateCSS' of https://github.com/rjevnikar/wekan into rjevnikar-dateCSS 2018-08-02 00:50:52 +03:00
Lauri Ojansivu da6c2b5503 Add Matomo options. 2018-08-01 22:04:33 +03:00
Lauri Ojansivu 57d43f916f Optional integration with Matomo. 2018-08-01 21:45:11 +03:00
Lauri Ojansivu 10a6dbd080 Enable API by default, so that Export Board works.
Thanks to xet7 !
2018-08-01 21:38:03 +03:00
Lauri Ojansivu 0498671cd4 Update translations (ru). 2018-08-01 21:30:42 +03:00
Lauri Ojansivu b2eeff9697 Enable Wekan API by default, so that Export Board to JSON works. 2018-08-01 21:21:14 +03:00
RJevnikar a8146e61f3 Fix flagging of dates (i.e. due date only flagged when before end date) 2018-07-31 22:01:14 +00:00
Lauri Ojansivu 6a23f73d94 Reverting change, Docker container did not build. 2018-07-30 22:10:49 +03:00
Lauri Ojansivu b9bcb8f979 Try to fix glibc in Dockerfile. 2018-07-30 22:07:17 +03:00
Lauri Ojansivu 0416fbdcc4 Merge branch 'master' of github.com:wekan/wekan 2018-07-30 21:45:27 +03:00
Lauri Ojansivu 064d125a1c Merge branch 'devel' 2018-07-30 21:45:16 +03:00
Lauri Ojansivu 1cc8452752 v1.23 2018-07-30 21:44:12 +03:00
Lauri Ojansivu 5bfb6c6411 Check for existing directories when building snap. 2018-07-30 21:27:22 +03:00
Lauri Ojansivu a48f560a85 No error if existing directory, with mkdir. 2018-07-30 21:18:04 +03:00
Lauri Ojansivu 92bb646977 Merge branch 'devel' 2018-07-30 17:42:57 +03:00
Lauri Ojansivu 43c38f87a5 v1.22 2018-07-30 17:42:16 +03:00
Lauri Ojansivu 01c12d7abc Add missing packages. 2018-07-30 17:28:52 +03:00
Lauri Ojansivu 63e3f6907a Merge pull request #1806 from Akuket/devel
Integration of matomo with env vars
2018-07-27 21:22:23 +03:00
Lauri Ojansivu 2e62524d5e Update translations. 2018-07-27 21:12:35 +03:00
guillaume ec59af3777 Integration of matomo with env vars 2018-07-27 18:08:09 +02:00
Lauri Ojansivu aa080a7506 Merge pull request #1799 from Akuket/devel
enable/disable api with env var
2018-07-26 15:44:34 +03:00
Lauri Ojansivu 397dda11ce Upggrade xss to v1.0.3 2018-07-26 15:41:04 +03:00
guillaume 6173a73381 enable/disable api with env var 2018-07-24 18:09:30 +02:00
Lauri Ojansivu dafe1e39a5 Update translations (pt-BR). 2018-07-20 20:30:29 +03:00
Lauri Ojansivu b77be874e0 - Backup script now uses mongodump from snap to
do backups: https://github.com/wekan/wekan/wiki/Backup

Thanks to Akuket !
2018-07-18 17:26:05 +03:00
Lauri Ojansivu aca4bffac8 Fix typos. 2018-07-18 16:23:09 +03:00
Lauri Ojansivu 2bb80956dd Merge branch 'devel' 2018-07-18 15:15:43 +03:00
Lauri Ojansivu e5148b4571 v1.21 2018-07-18 15:14:56 +03:00
Lauri Ojansivu 6204edd76e - Add logo from Wekan website to login logo.
Thanks to xet7 !
2018-07-18 14:55:03 +03:00
Lauri Ojansivu 4eed23afe0 Add new Wekan logo. 2018-07-18 14:52:41 +03:00
Lauri Ojansivu 2b02e09b07 - Allow to resend invites.
Thanks to Akuket and xet7 !

Closes #1320
2018-07-18 14:22:59 +03:00
Lauri Ojansivu c708877dde Merge pull request #1785 from Akuket/devel
Bugfix : Resending invitation code.
2018-07-18 14:17:36 +03:00
guillaume e2ae5d6b8e remove invitation code 2018-07-18 10:07:03 +02:00
Lauri Ojansivu a798713919 Merge branch 'devel' 2018-07-18 01:24:57 +03:00
Lauri Ojansivu 19402f5850 v1.20 2018-07-18 01:24:05 +03:00
Lauri Ojansivu 2beb91ba5d Update translations. 2018-07-18 01:19:46 +03:00
Lauri Ojansivu 1c35f05224 - Add scrolling to long cards.
Thanks to jnso !

Closes #1780
2018-07-18 01:13:21 +03:00
Lauri Ojansivu 758ec48e5c Merge pull request #1782 from jnso/scroll-fix
bug fix: #1780 (adding scroll to long cards)
2018-07-18 01:10:31 +03:00
Lauri Ojansivu f8d5c91659 - Remove SMTP settings from Admin Panel, because they
are set in environment variable settings like source/snap/docker
  already, and password was exposed in plain text.
- Added info how to limit snap to root user.

Thanks to LyR33x and xet7 !

Closes #1783
2018-07-18 01:02:41 +03:00
Lauri Ojansivu a8f41f7994 Remove SMTP settings from Admin Panel, because they
are set in environment variable settings like source/snap/docker
already, and password was exposed in plain text.

Thanks to xet7 !

Closes #1783
2018-07-18 00:46:45 +03:00
Akuket bf5596b201 patch re invit 2018-07-17 16:07:46 +02:00
Jonas Olsson b0f410f82d bug fix: #1780
Cards that are longer than the screen height can now scroll on the y-axis in order to be able to see the whole card.
2018-07-17 16:22:57 +04:00
guillaume df54f15ecb patch re-invit 2018-07-16 19:20:47 +02:00
Lauri Ojansivu 6a0e4c9b21 Merge branch 'devel' 2018-07-16 15:30:02 +03:00
Lauri Ojansivu c0ddecb2ee v1.19 2018-07-16 15:27:14 +03:00
Lauri Ojansivu 1a7796f2ca Merge branch 'Akuket-devel' into devel 2018-07-16 14:48:46 +03:00
Lauri Ojansivu 7119896a3c - Fix invitation code.
Thanks to Akuket and xet7 !

Closes #1749
2018-07-16 14:47:48 +03:00
Lauri Ojansivu 1b32509496 Fix lint errors. 2018-07-16 14:46:33 +03:00
Lauri Ojansivu a0d2df0647 Merge branch 'devel' of https://github.com/Akuket/wekan into Akuket-devel 2018-07-16 14:44:50 +03:00
Lauri Ojansivu d8c62cf242 Update translations. 2018-07-16 14:16:51 +03:00
Akuket 980fd4f61e Patch Invitation Code 2018-07-16 12:51:18 +02:00
Lauri Ojansivu 0dd82fedaf Remove Greenkeeper. 2018-07-13 02:51:40 +03:00
Lauri Ojansivu 058f7e430b Update translations. 2018-07-13 02:45:13 +03:00
Lauri Ojansivu 9487406fc3 Fix typos. 2018-07-13 02:34:55 +03:00
Lauri Ojansivu bf35b09998 - Snap Caddy: set -agree flag for Let's Encrypt.
Thanks to halunk3 and xet7 !

Closes wekan/wekan-snap#54
2018-07-13 02:11:34 +03:00
Lauri Ojansivu d50e78c787 - Snap Caddy: set -agree flag for Let's Encrypt.
Thanks to halunk3 and xet7 !
2018-07-13 02:07:56 +03:00
Lauri Ojansivu 5dd43fa147 - Wekan integration with OpenShift.
Thanks to adyachok !
2018-07-13 02:05:33 +03:00
Lauri Ojansivu 5f345e851a Merge pull request #1765 from adyachok/devel
Wekan integration with OpenShift
2018-07-13 01:59:12 +03:00
Andras Gyacsok 687c7923e7 Wekan integration with OpenShift
Added OpenShift template to run WeCan in OpenShift.
Tested on OpensShift 3.7 Dedicated.
2018-07-11 18:22:21 +02:00
Lauri Ojansivu 90707aaab3 Build from source on macOS. 2018-07-09 14:35:21 +03:00
Lauri Ojansivu d5870472fb - Hotfix for mobile device.
Thanks to Haocen !
2018-07-07 08:57:37 +03:00
Lauri Ojansivu efb083aabf Merge pull request #1757 from Haocen/mobile-hotfix
Mobile hotfix
2018-07-07 08:50:19 +03:00
Haocen Xu 5c77407061 Fix missing utility function. 2018-07-06 20:15:39 -04:00
Haocen Xu 9c204d9bbe Avoid default behavior 2018-07-06 15:25:26 -04:00
Haocen Xu 616dade81c Hotfix more sortable elements 2018-07-06 14:42:36 -04:00
Haocen Xu 43d86d7d5d Hotfix for mobile device 2018-07-06 12:48:46 -04:00
Lauri Ojansivu dea9df2a3b Merge branch 'devel' 2018-07-06 16:21:54 +03:00
Lauri Ojansivu 6c7eab4456 v1.18 2018-07-06 16:20:31 +03:00
Lauri Ojansivu 35a3b0b62e - Fix Title is required by setting Checklist title during migration.
Thanks to centigrade-kdk and xet7 !
2018-07-06 16:17:09 +03:00
Lauri Ojansivu 7683f98b7b - Fix Title is required by setting Checklist title
during migration.

Thanks to centigrade-kdk and xet7 !

Closes #1576,
closes #1753
2018-07-06 16:14:07 +03:00
Lauri Ojansivu 09dbcf3bea Merge branch 'devel' 2018-07-06 15:35:14 +03:00
Lauri Ojansivu 369da1e09d v1.17 2018-07-06 15:33:34 +03:00
Lauri Ojansivu 94a1446a08 - Made Subtask Settings visible at Board menu at Sandstorm.
Thanks to xet7 !
2018-07-06 15:27:04 +03:00
Lauri Ojansivu 884cd0e6b8 - Made Subtask Settings visible at Board menu at Sandstorm.
Thanks to xet7 !
2018-07-06 15:23:29 +03:00
Lauri Ojansivu 5e17b01077 Merge branch 'devel' 2018-07-06 14:39:24 +03:00
Lauri Ojansivu 644b235bbb v1.16 2018-07-06 14:38:23 +03:00
Lauri Ojansivu 3d3096104e - Fix: Boards.forEach is not function.
Thanks to xet7 !
2018-07-06 14:35:33 +03:00
Lauri Ojansivu a41190cdf0 - Fix: Boards.forEach is not function.
Thanks to xet7 !
2018-07-06 14:32:57 +03:00
Lauri Ojansivu 1189259a55 Merge branch 'devel' 2018-07-06 13:41:34 +03:00
Lauri Ojansivu 9a053164ac v1.15 2018-07-06 13:37:44 +03:00
Lauri Ojansivu c31602da42 - Fix Title is required by making Checklist title optional.
Thanks to centigrade-kdk and xet7 !

Closes #1576,
closes #1753
2018-07-06 13:34:54 +03:00
Lauri Ojansivu 074a1218fd - Fix [Title is required](https://github.com/wekan/wekan/issues/1576)
by making [Checkist title optional](https://github.com/wekan/wekan/issues/1753).

Thanks to xet7 !

Closes #1576,
closes #1753
2018-07-06 13:29:05 +03:00
Lauri Ojansivu 5d573a7aa1 Merge branch 'devel' 2018-07-06 11:45:51 +03:00
Lauri Ojansivu c26a31f498 v1.14 2018-07-06 11:42:56 +03:00
Lauri Ojansivu 4b65c5cc33 - Fix Checklists.forEach is not a function.
Thanks to xet7 !

Closes #1753
2018-07-06 11:36:24 +03:00
Lauri Ojansivu af8bf1af2e - Fix Checklists.forEach is not a function.
Thanks to xet7 !

Closes #1753
2018-07-06 11:33:13 +03:00
Lauri Ojansivu aaae3150c4 Merge branch 'devel' 2018-07-06 01:14:53 +03:00
Lauri Ojansivu 5220111822 v1.13 2018-07-06 01:14:02 +03:00
Lauri Ojansivu 62e5e5db49 v1.12 2018-07-06 01:03:51 +03:00
Lauri Ojansivu eb6373a879 Merge branch 'ppoulard-devel' into devel 2018-07-05 23:27:07 +03:00
Lauri Ojansivu a4ca6dce25 - SSO CAS.
Thanks to ppoulard !

Closes #620
2018-07-05 23:25:13 +03:00
Lauri Ojansivu 5986f64d72 Update translations. 2018-07-05 23:23:37 +03:00
Lauri Ojansivu b1b9170afe Merge branch 'devel' of https://github.com/ppoulard/wekan into ppoulard-devel 2018-07-05 23:22:57 +03:00
Lauri Ojansivu 13e5ccb56e Fix missing space in jade file.
Thanks to xet7 !
2018-07-05 23:06:02 +03:00
Lauri Ojansivu 8d24fc4bcf Merge branch 'TNick-calendar' into devel 2018-07-05 23:04:35 +03:00
Lauri Ojansivu cc63a575ab - Calendar improvements.
Thanks to TNick !
2018-07-05 23:03:48 +03:00
Lauri Ojansivu a02c51cc3b Merge branch 'calendar' of https://github.com/TNick/wekan into TNick-calendar 2018-07-05 23:02:20 +03:00
Lauri Ojansivu ca6cadbe6d Merge branch 'TNick-nested-tasks' into devel 2018-07-05 22:54:04 +03:00
Lauri Ojansivu cc753cf4e4 - Nested tasks.
Thanks to TNick !

Closes #709
2018-07-05 22:51:10 +03:00
Lauri Ojansivu 7e4fddd932 Update translations. 2018-07-05 22:49:25 +03:00
Lauri Ojansivu 06423164fb Merge branch 'nested-tasks' of https://github.com/TNick/wekan into TNick-nested-tasks 2018-07-05 22:48:43 +03:00
Lauri Ojansivu 515c9be051 - Fix Minimize board sidebar actually just moves it over.
Thanks to dagomar !

Closes #1589
2018-07-05 21:57:17 +03:00
Nicu Tofan 243797d2e9 Merge branch 'upstream-devel' into calendar 2018-07-05 20:17:18 +03:00
Lauri Ojansivu c997786e64 - Fix lint warning: EditCardDate is assigned a value but never used no-unused-vars
Thanks to xet7 !
2018-07-04 00:01:05 +03:00
Lauri Ojansivu dd324aa581 - Fix lint warning: EditCardDate is assigned a value but never used no-unused-vars
Thanks to xet7 !
2018-07-03 23:57:05 +03:00
Lauri Ojansivu 177c00e974 - Fix warning about missing space in jade file.
Thanks to xet7 !
2018-07-03 23:40:31 +03:00
Lauri Ojansivu 067aef9de9 Fix warning about missing space in jade file.
Thanks to xet7 !
2018-07-03 23:33:28 +03:00
ppoulard 02f14d967f Fix stupid error 💥🗯💣🕳💢☠ 2018-07-03 16:21:51 +02:00
Lauri Ojansivu 122a61b333 - Revert "Fix vertical align of user avatar initials",
so that initials are again visible.

Thanks to pravdomil and xet7 !

Reverts https://github.com/wekan/wekan/pull/1714
2018-07-03 17:19:13 +03:00
ppoulard 49a89b80cf Fix QA 2018-07-03 16:08:18 +02:00
ppoulard ee81775dc8 Adding SSO CAS to Wekan 2018-07-03 15:55:19 +02:00
Lauri Ojansivu 05869792ad Revert Dockerfile changes. 2018-07-02 20:06:22 +03:00
Lauri Ojansivu 2ac7660f29 Fix typo. 2018-07-02 20:01:13 +03:00
Lauri Ojansivu abf7890941 Try to fix Dockerfile. 2018-07-02 19:59:00 +03:00
Lauri Ojansivu e139e140f4 Fix typo. 2018-07-02 19:42:04 +03:00
Lauri Ojansivu 1f7db171d9 Try to fix Dockerfile. 2018-07-02 19:38:49 +03:00
Lauri Ojansivu bf06c715fe Fix URL. 2018-07-02 19:09:57 +03:00
Lauri Ojansivu 44e20023cc Try to fix Dockerfile. 2018-07-02 19:05:39 +03:00
Lauri Ojansivu e03ee1bd2f Try to fix Dockerfile. 2018-07-02 18:51:42 +03:00
Lauri Ojansivu aea5ed7848 Try to fix Dockerfile. 2018-07-02 18:48:49 +03:00
Lauri Ojansivu bbdb6a90b2 Download node from sandstorm in Dockerfile. 2018-07-02 18:40:08 +03:00
Lauri Ojansivu f4eac833ed Merge branch 'devel' 2018-06-30 12:39:57 +03:00
Lauri Ojansivu 8fbbc104f7 v1.11 2018-06-30 12:38:40 +03:00
Lauri Ojansivu 6ba4574c67 - Less margin-bottom after minicard.
Thanks to pravdomil and xet7 !
2018-06-30 12:23:49 +03:00
Lauri Ojansivu 928d88cfe1 - More margin-bottom after minicard.
Thanks to pravdomil and xet7 !
2018-06-30 12:22:35 +03:00
Lauri Ojansivu 4f5086c5cd - Revert previous More margin-bottom after minicard.
Thanks to pravdomil and xet7 !
2018-06-30 12:03:15 +03:00
Lauri Ojansivu fe69ab9030 Merge branch 'pravdomil-patch-7' into devel 2018-06-30 11:42:47 +03:00
Lauri Ojansivu 08a1927c0c - Remove card shadow, Wekan users now prefer not to have it.
Thanks to GitHub users pravdomil and xet7 for their contributions.
2018-06-30 11:42:03 +03:00
Lauri Ojansivu f02d5e64f0 Merge branch 'patch-7' of https://github.com/pravdomil/wekan into pravdomil-patch-7 2018-06-30 11:39:51 +03:00
Lauri Ojansivu 5bca2f802b Update translations. 2018-06-30 11:34:00 +03:00
Nicu Tofan 3eba6ef285 Merge branch 'devel' into nested-tasks 2018-06-28 17:00:35 +03:00
Lauri Ojansivu 5f81b73a49 Merge branch 'devel' 2018-06-28 14:03:57 +03:00
Lauri Ojansivu ad54a8a484 v1.10 2018-06-28 14:02:57 +03:00
Lauri Ojansivu 5adce79842 Update translations (de) 2018-06-28 13:59:43 +03:00
Lauri Ojansivu 9fceb212d9 Fix migration error "TypeError: Checklists.foreach" at Snap, Docker etc.
Thanks to Jubi94, kestrelhawk and xet7 !
2018-06-28 13:56:41 +03:00
Lauri Ojansivu e044769d85 - Fix migration error "TypeError: Checklists.foreach"
Thanks to Jubi94, kestrelhawk and xet7 !

Fixes #1736,
fixes wekan/wekan-snap#51
2018-06-28 13:48:36 +03:00
Lauri Ojansivu a86a8eff2d Fix typo. 2018-06-28 00:26:37 +03:00
Lauri Ojansivu 7b9aaddb5b Merge branch 'devel' 2018-06-28 00:15:24 +03:00
Lauri Ojansivu 541dc67a02 v1.09 2018-06-28 00:14:02 +03:00
Nicu Tofan db5ff4e1e2 Changing events in calendar updates the card 2018-06-28 00:13:35 +03:00
Lauri Ojansivu d0611e1bff Update translations. 2018-06-28 00:09:52 +03:00
Lauri Ojansivu 523ebea4dd Merge branch 'TNick-calendar' into devel 2018-06-27 23:57:02 +03:00
Lauri Ojansivu bccfa320a9 - Calendar.
Thanks to TNick !
2018-06-27 23:56:15 +03:00
Lauri Ojansivu 72d0db7a59 Merge branch 'calendar' of https://github.com/TNick/wekan into TNick-calendar 2018-06-27 23:55:06 +03:00
Lauri Ojansivu ed0ef5b7d3 Merge branch 'TNick-invitation-code-setting' into devel 2018-06-27 23:38:58 +03:00
Lauri Ojansivu 5619eef620 - Restore invitation code logic. Please test and add comment
to those invitation code issues that this fixes.

Thanks to TNick !
2018-06-27 23:37:50 +03:00
Lauri Ojansivu ae2e42e1b4 Merge branch 'invitation-code-setting' of https://github.com/TNick/wekan into TNick-invitation-code-setting 2018-06-27 23:30:23 +03:00
Lauri Ojansivu 864ad3827d - To fix "title is required" fix only add-checklist-items and
revert all other migration changes.

Closes #1576,
closes #1734
2018-06-27 23:25:48 +03:00
Nicu Tofan 9cb8aab3ba Reactive change when a date is modified. 2018-06-27 23:00:14 +03:00
Nicu Tofan 374e986579 Can show card on event click 2018-06-27 22:37:32 +03:00
Nicu Tofan 3c4549fe64 Can show card on top of calendar 2018-06-27 22:23:28 +03:00
Nicu Tofan 0394a78ece Get rid of extra package
staringatlights:flow-router is another incarnation of kadira:flow-router
kadira:flow-router is not an explicit dependency but useraccounts:flow-routing depends on it.
This commit gets rid of an anoying message informing that a route has
not been found.
2018-06-27 17:39:29 +03:00
Nicu Tofan 19d239f4cf Prevent errors due to missing date fields 2018-06-27 16:25:57 +03:00
Nicu Tofan d23ac2b385 Restore invitation code logic 2018-06-27 15:30:52 +03:00
Lauri Ojansivu ae5d2b7908 Merge branch 'devel' 2018-06-27 11:07:52 +03:00
Lauri Ojansivu 766b58d91b v1.08 2018-06-27 11:06:37 +03:00
Lauri Ojansivu 663a4040f9 Add Georgian language. 2018-06-27 10:24:07 +03:00
Nicu Tofan 18467dfe40 Show cards in calendar 2018-06-26 22:11:51 +03:00
Lauri Ojansivu 2a165dccd4 Update translations (sv). 2018-06-26 21:37:21 +03:00
Lauri Ojansivu d501e5832a Fix typo. 2018-06-26 21:31:29 +03:00
Lauri Ojansivu b198a3ed99 Fix typo. 2018-06-26 21:29:38 +03:00
Nicu Tofan 226d25ca94 Introducing third board view: calendar.
A dependency to rzymek:fullcalendar has also been added.
2018-06-26 19:55:23 +03:00
Nicu Tofan b7d508e8c4 Added ability to change card's parent. 2018-06-26 17:39:31 +03:00
Nicu Tofan 439d7c3dbc Fix conflict in migrations
(Error: title is required by removing find() from all of migrations.)
2018-06-26 14:49:21 +03:00
Nicu Tofan bac490d2f3 Links for parents in card details. 2018-06-26 14:33:05 +03:00
Nicu Tofan 3a4a075dba Fix minicard parents display 2018-06-26 14:33:05 +03:00
Nicu Tofan c0ffd6c20f Show parent in card (no links, yet) 2018-06-26 14:32:51 +03:00
Nicu Tofan 94a52080cf Board level settings for subtasks 2018-06-26 14:32:51 +03:00
Nicu Tofan c9f70cf382 Check for null and undefined in board defaults 2018-06-26 14:32:51 +03:00
Nicu Tofan 04745f0c2f implement getDefaultSwimline for boards 2018-06-26 14:32:51 +03:00
Nicu Tofan aead18eb58 change all mentions of Kids => Children 2018-06-26 14:32:50 +03:00
Nicu Tofan a0c02f4a50 typo in renaming itemDetail to checklistItemDetail 2018-06-26 14:32:50 +03:00
Nicu Tofan 50f170b75d A better name for incoming subtasks 2018-06-26 14:32:50 +03:00
Nicu Tofan 989b026b33 Can now navigate to subtask 2018-06-26 14:32:50 +03:00
Nicu Tofan 4ac6a507cd Get rid of old implementation for substacks 2018-06-26 14:32:50 +03:00
Nicu Tofan cd36194477 Archive subtask instead of permanent delete 2018-06-26 14:32:49 +03:00
Nicu Tofan 6ab1cbb341 Take archived status into consideration for subtasks 2018-06-26 14:32:49 +03:00
Nicu Tofan 5a023e4315 Can add cards as subtasks 2018-06-26 14:32:49 +03:00
Nicu Tofan adb7f5b2ca Switch from subtasks to cards in model 2018-06-26 14:32:49 +03:00
Nicu Tofan fd465fbb60 Helpers for dealing with trees of cards 2018-06-26 14:32:48 +03:00
Nicu Tofan 879a84184f added ability to create a tree of cards 2018-06-26 14:32:48 +03:00
Nicu Tofan f89de026c4 Change order using drag-n-drop for subtasks 2018-06-26 14:32:48 +03:00
Nicu Tofan 5f20e56721 Remove leftovers from checklist conversion 2018-06-26 14:32:47 +03:00
Nicu Tofan d59583915c Initial implementation for subtasks 2018-06-26 14:32:47 +03:00
Nicu Tofan b627ced605 Some inspiration from checklists to subtasks 2018-06-26 14:32:47 +03:00
Nicu Tofan c3037b155f Added subtasks model and APIs for it 2018-06-26 14:32:47 +03:00
pravdomil c3e839c885 revert 6a58729 2018-06-26 10:54:22 +02:00
Lauri Ojansivu b0444ae338 Merge branch 'devel' 2018-06-26 02:37:23 +03:00
Lauri Ojansivu 43dde4a10f - Fix "Error: title is required" by removing find() from all of migrations.
Thanks to xet7 !

Closes #1576
2018-06-26 02:14:52 +03:00
Lauri Ojansivu 97922c90cb - Fix "Error: title is required" by removing find() from all of migrations.
Thanks to xet7 !

Closes #1576
2018-06-26 02:11:37 +03:00
Lauri Ojansivu c372ea02f7 Merge branch 'pravdomil-patch-6' into devel 2018-06-26 01:42:02 +03:00
Lauri Ojansivu daa95c582e - Submit inline form on click outside, fixes
"You have an unsaved description" doesn't go away after saving.

Thanks to pravdomil and xet7 !

Fixes #1287
2018-06-26 01:40:13 +03:00
Lauri Ojansivu aa2a15bf1b Fix lint errors. 2018-06-26 01:36:44 +03:00
Lauri Ojansivu f629a7b3f7 Merge branch 'patch-6' of https://github.com/pravdomil/wekan into pravdomil-patch-6 2018-06-26 01:35:09 +03:00
Lauri Ojansivu 03921a969a Merge branch 'pravdomil-patch-3' into devel 2018-06-26 01:08:18 +03:00
Lauri Ojansivu b7d51456eb - Add more card inner shadow;
- Less margin-bottom after minicard.

Thanks pravdomil and xet7 !

Related #1690
Related https://github.com/wekan/wekan/pull/1713
2018-06-26 01:06:14 +03:00
Lauri Ojansivu 6a587299b8 - Add more card inner shadow.
Thanks to pravdomil and xet7 !

Related #1690
2018-06-26 01:02:19 +03:00
Lauri Ojansivu f5aa1b795b Merge branch 'patch-3' of https://github.com/pravdomil/wekan into pravdomil-patch-3 2018-06-26 01:01:12 +03:00
Lauri Ojansivu 2efc5ab4e9 Merge branch 'pravdomil-patch-4' into devel 2018-06-26 00:46:32 +03:00
Lauri Ojansivu fde26c2183 - Fix vertical align of user avatar initials.
Thanks to pravdomil !
2018-06-26 00:45:51 +03:00
Lauri Ojansivu 8ad8f17731 Merge branch 'patch-4' of https://github.com/pravdomil/wekan into pravdomil-patch-4 2018-06-26 00:43:36 +03:00
Lauri Ojansivu e9d56b0804 Merge branch 'zypA13510-zypA13510-patch-1' into devel 2018-06-26 00:37:58 +03:00
Lauri Ojansivu 43a967b274 - Fix typo in English translation.
Thanks to zypA13510 !
2018-06-26 00:37:02 +03:00
Lauri Ojansivu c1ecaf3959 Merge branch 'zypA13510-patch-1' of https://github.com/zypA13510/wekan into zypA13510-zypA13510-patch-1 2018-06-26 00:04:05 +03:00
Lauri Ojansivu 0b5ecd24f9 Update translations. 2018-06-26 00:01:02 +03:00
Lauri Ojansivu 9a55f38d90 Change fr.md to not be executeable. 2018-06-25 23:57:53 +03:00
Lauri Ojansivu 09c8f29de8 Update translations. 2018-06-23 02:11:44 +03:00
pravdomil 620bbb3394 refactor 2018-06-19 16:43:02 +02:00
pravdomil 77ae6c17e7 submit inline form on click outside 2018-06-19 16:38:42 +02:00
pravdomil b8bbdcc4c5 fix vertical align of user avatar initials 2018-06-19 16:10:48 +02:00
pravdomil 18e936fd28 less margin-bottom after minicard 2018-06-19 14:12:17 +02:00
Yuping Zuo c94edb6bb0 Update en.i18n.json
Fixed incorrect syntax in advanced filter description.
2018-06-19 10:37:59 +08:00
Lauri Ojansivu 615f66c820 Merge branch 'devel' 2018-06-15 19:21:56 +03:00
Lauri Ojansivu 484d495259 Update translations (de). 2018-06-15 19:21:32 +03:00
Lauri Ojansivu bec0c4b4d0 Merge branch 'devel' 2018-06-14 23:56:36 +03:00
Lauri Ojansivu dfbcca2a2d Try to fix broken markdown of \ character. 2018-06-14 23:55:55 +03:00
Lauri Ojansivu 4526845fd1 Merge branch 'devel' 2018-06-14 23:33:59 +03:00
Lauri Ojansivu 73c6c07c47 v1.07 2018-06-14 23:32:30 +03:00
Lauri Ojansivu 896a149fb9 - Regex for Advanced filter.
It aims to solve search in bigger text fields, and using wildcards.
  A change to translations was made for adding info about regex and escaping characters with \

Thanks to feuerball11 and xet7 !
2018-06-14 23:29:58 +03:00
Lauri Ojansivu 0034d2d3be Merge branch 'feuerball11-feature-custom-fields' into devel 2018-06-14 23:25:39 +03:00
Lauri Ojansivu 880dcab0b1 Update translations. 2018-06-14 23:24:29 +03:00
Lauri Ojansivu 98eb4453c5 Fix typo. 2018-06-14 23:09:47 +03:00
Lauri Ojansivu 3e686e4379 Merge branch 'feature-custom-fields' of https://github.com/feuerball11/wekan into feuerball11-feature-custom-fields 2018-06-14 22:51:43 +03:00
IgnatzHome 8509dad58f changing loca to explain regex and escape character 2018-06-14 21:42:18 +02:00
Lauri Ojansivu 0f53220122 Merge branch 'devel' 2018-06-14 22:31:26 +03:00
Lauri Ojansivu 1214af04a9 v1.06 2018-06-14 22:30:36 +03:00
Lauri Ojansivu 8c0d61c4a5 v1.06 2018-06-14 22:29:54 +03:00
IgnatzHome ba2012af43 regex for advanced filter 2018-06-14 21:14:16 +02:00
IgnatzHome b5e6e6ee10 Merge branch 'devel' of https://github.com/wekan/wekan into feature-custom-fields 2018-06-14 20:38:10 +02:00
IgnatzHome 61ee6cf09f This seems to make more sense. 2018-06-14 20:26:44 +02:00
IgnatzHome 04925f7347 trying to understand hirachy 2018-06-14 20:11:29 +02:00
Lauri Ojansivu 37817fcaf8 Merge branch 'devel' 2018-06-14 20:44:43 +03:00
Lauri Ojansivu 8a7ad0df54 v1.05 2018-06-14 20:43:28 +03:00
IgnatzHome a433f7d9fe Merge branch 'feature-custom-fields' of https://github.com/feuerball11/wekan into feature-custom-fields 2018-06-14 19:42:09 +02:00
IgnatzHome 991e74bfc2 testing mobile detail view fix. 2018-06-14 19:38:57 +02:00
Lauri Ojansivu c46817f23a Fix lint errors. 2018-06-14 20:14:43 +03:00
Lauri Ojansivu 94bd63c8a7 Merge branch 'rjevnikar-fixRDate' into devel 2018-06-14 19:45:22 +03:00
Lauri Ojansivu 3e8b2620a1 Fix minicardReceivedDate typo in
1.04 regression: Socket connection error and boards not loading

Thanks to Fran-KTA and rjevnikar !

Closes #1694
2018-06-14 19:43:33 +03:00
Lauri Ojansivu ce8c78eb34 Merge branch 'fixRDate' of https://github.com/rjevnikar/wekan into rjevnikar-fixRDate 2018-06-14 19:39:27 +03:00
Lauri Ojansivu 85e02010d4 Merge branch 'feuerball11-feature-custom-fields' into devel 2018-06-14 19:38:16 +03:00
RJevnikar a912960a58 Add back language files 2018-06-14 16:31:54 +00:00
Lauri Ojansivu aeec9f6ef8 - Markdown support in Custom Fields, and view on minicard
- Fixes to Advanced Filter, you are now able to filter for Dropdown and Numbers,
  also Dropdown are now correctly displayed on minicard
- Fix Issue with custom fields shown on card
- Fix showing public board in list mode
- Fix for not able to remove Custom Field "Show on Card"

Related #807

Closes #1659,
closes #1623,
closes #1683
2018-06-14 19:28:06 +03:00
RJevnikar 718adc6c47 Fix minicardReceivedDate typo identified in #1694 2018-06-14 16:11:41 +00:00
Lauri Ojansivu 454aa05987 Another fix for checklists item migration error "title is required"
https://github.com/wekan/wekan/commit/8d5cbf1e6c2b6d467fe1c0708cd794fd11b98a2e#commitcomment-29362180

Thanks to oec !

Closes #1576
2018-06-14 19:03:44 +03:00
Lauri Ojansivu 23726136bd Merge branch 'feature-custom-fields' of https://github.com/feuerball11/wekan into feuerball11-feature-custom-fields 2018-06-14 18:58:09 +03:00
Lauri Ojansivu fa82efe7d2 Merge branch 'rjevnikar-dateColourFix' into devel
Fix data colour changes on cards.

Related https://github.com/wekan/wekan/pull/1698

Fixes #1693
2018-06-14 18:47:26 +03:00
Lauri Ojansivu 011fad6701 Update translations. 2018-06-14 18:46:28 +03:00
Ignatz fcf262cc98 testing markdown support for custom fields 2018-06-14 15:08:30 +02:00
Ignatz c5f0e87dd0 fix for not able to remove "Show on Card" 2018-06-14 14:10:30 +02:00
Ignatz 6a154ee9b0 correcting error in advanced filter 2018-06-14 12:56:29 +02:00
Ignatz 558539e21b trying to fix integer search 2018-06-14 12:49:59 +02:00
Ignatz 571f55f904 fixing search for dropdown fields, and error on loading board 2018-06-14 12:41:16 +02:00
Ignatz 259614b647 trying to fix display Issue with dropdown custom fields 2018-06-14 11:58:37 +02:00
Ignatz 8ec60879dc hotfix public board 2018-06-14 10:55:53 +02:00
RJevnikar edd2e9db3c Fix lint errors 2018-06-13 22:26:45 +00:00
RJevnikar 67454d0491 Fix data colour changes on cards.
Addressing both #1685 and #1693
2018-06-13 22:18:00 +00:00
Lauri Ojansivu 9e14733478 Merge branch 'devel' 2018-06-13 00:35:11 +03:00
Lauri Ojansivu 848d8ac95d Removed duplicate text. 2018-06-13 00:34:51 +03:00
Lauri Ojansivu 93e7c8aecf Merge branch 'devel' 2018-06-12 22:21:23 +03:00
Lauri Ojansivu a98ae8dc71 v1.04 2018-06-12 22:20:17 +03:00
Lauri Ojansivu 193ff20c23 Add SECURITY.md 2018-06-12 22:11:43 +03:00
Lauri Ojansivu 92a85a991b Merge branch 'rjevnikar-labelText' into devel 2018-06-12 21:48:46 +03:00
Lauri Ojansivu 38af71d9c9 - Change label text colour to black for specific label colours for better visibility
Thanks to rjevnikar !
2018-06-12 21:48:02 +03:00
Lauri Ojansivu 246267276a Update translations. 2018-06-12 21:46:37 +03:00
Lauri Ojansivu ea19176d3c Merge branch 'labelText' of https://github.com/rjevnikar/wekan into rjevnikar-labelText 2018-06-12 21:46:03 +03:00
Lauri Ojansivu f28889de59 - Modify card covers/mini-cards so that:
1) Received date is shown unless there is a start date
  2) Due Date is shown, unless there is an end date.

This begins to address #1668

Thanks to rjevnikar !
2018-06-12 21:42:52 +03:00
Lauri Ojansivu aa7199af2d Merge branch 'rjevnikar-cardCoverTimeBadges' into devel 2018-06-12 21:36:16 +03:00
Lauri Ojansivu fba0a52e4a Update translations. 2018-06-12 21:34:57 +03:00
Lauri Ojansivu 6d7bdad140 Merge branch 'cardCoverTimeBadges' of https://github.com/rjevnikar/wekan into rjevnikar-cardCoverTimeBadges 2018-06-12 21:21:56 +03:00
Lauri Ojansivu aef871833b - SECURITY FIX: Do not publish all of people collection.
Thanks to Adrian Genaid.
2018-06-12 21:18:38 +03:00
Lauri Ojansivu dda49d2f07 - Security Fix: Do not publish all of people collection.
Thanks to Adrian Genaid !
2018-06-12 21:13:50 +03:00
RJevnikar 199ea3d6f9 Change label text colour to black for specific label colours for better visibility 2018-06-11 16:21:35 +00:00
Lauri Ojansivu 6478dd7da8 Merge branch 'devel' 2018-06-10 19:45:33 +03:00
Lauri Ojansivu 53bd527947 - Add Khmer language.
Thanks to xet7 and translators !
2018-06-10 19:45:03 +03:00
Lauri Ojansivu 2156e45869 Add Khmer language. 2018-06-10 19:42:24 +03:00
Lauri Ojansivu 72a66c1d5b Merge branch 'devel' 2018-06-10 18:41:58 +03:00
Lauri Ojansivu 1ced919dfb Update translations. 2018-06-10 18:38:07 +03:00
Lauri Ojansivu d948e78d1e Update translations. 2018-06-10 18:02:07 +03:00
Lauri Ojansivu bd5fd77655 Fix typo. 2018-06-10 17:45:02 +03:00
RJevnikar 45cf2843a6 Adjust classes given to due date to take into account end date 2018-06-08 21:09:52 +00:00
RJevnikar ca51ace22d Modify mini cards so that received date is shown if there is no start date, and due date is shown if there is no end date. 2018-06-08 20:42:16 +00:00
Lauri Ojansivu 93a7040c77 Update translations. 2018-06-08 18:00:35 +03:00
Lauri Ojansivu d4df405862 Merge branch 'devel' 2018-06-08 14:20:40 +03:00
Lauri Ojansivu dc687848e6 v1.03 2018-06-08 14:19:45 +03:00
Lauri Ojansivu 85187817a7 Update translations. 2018-06-08 14:17:04 +03:00
Lauri Ojansivu 5f5a1b780e Merge branch 'rjevnikar-moreFieldsColours' into devel
Closes #833
2018-06-08 01:52:27 +03:00
Lauri Ojansivu e31741cd7b Update translations. 2018-06-08 01:51:58 +03:00
Lauri Ojansivu d5bfa468f7 - Additional label colors
- Assigned By and Requested By text fields on card
- Delete board from Recycle Bin

Thanks to JamesLavin and rjevnikar !
2018-06-08 01:18:41 +03:00
Lauri Ojansivu 9990f9856b Change button order at Boards Recycle Bin. 2018-06-08 00:41:39 +03:00
Lauri Ojansivu b3bb03fed4 Merge branch 'moreFieldsColours' of https://github.com/rjevnikar/wekan into rjevnikar-moreFieldsColours 2018-06-07 22:53:06 +03:00
RJevnikar 1332a57890 Fix double comma in i18n/en.i18n.json 2018-06-07 19:15:58 +00:00
Lauri Ojansivu 123d9659c1 - Update to newest Sandstorm fork of Node.js that includes
performance etc fixes.

Thanks to xet7 !
2018-06-07 22:13:39 +03:00
Lauri Ojansivu 90d55777f7 Copy latest Sandstorm Node.js fork binary from installed Sandstorm
/opt/sandstorm/sandstorm-234/bin/node to https://releases.wekan.team
download server.

Node binary is compiled by https://github.com/kentonv
when doing new release of Sandstorm.

Source code of binary is at:
https://github.com/sandstorm-io/node
2018-06-07 21:54:08 +03:00
RJevnikar ec4e1b6eff Fix spacing on cardDetails.jade to get 'Add' buttons in <a> tag for RequestedBy & AssignedBy 2018-06-07 16:26:20 +00:00
RJevnikar c72b769f82 Attempt to lineup buttons in recycle bin & get delete board popup to appear 2018-06-07 16:02:44 +00:00
Lauri Ojansivu 8471f389eb Merge branch 'rjevnikar-boardViewMigration' into devel
Fixes #1675
2018-06-06 23:12:00 +03:00
Lauri Ojansivu 23e6b4ec0a - Try to fix: Missing board-view-lists Field after DB updated to Wekan 1.02.
Thanks to rjevnikar !
2018-06-06 23:10:40 +03:00
RJevnikar 8f364281d2 Remove delete option from board hamburger menu 2018-06-06 20:05:44 +00:00
RJevnikar 1f17cee39b Remove double template for deleteCardPopup 2018-06-06 17:45:43 +00:00
RJevnikar 4787a1186b Adjust 'add-profile-view' in migrations.js in attempt to resolve 1675 2018-06-06 17:36:20 +00:00
RJevnikar 3c4b09157e Fix AssignedBy & RequestedBy fields & forms 2018-06-06 16:44:15 +00:00
RJevnikar 87ee0ca646 Fix display of card details - cardDetails.styl - remove trailing comma 2018-06-06 16:31:18 +00:00
RJevnikar de59758471 Add delete board to Recycle Bin, fix delete-board menu item on board menu 2018-06-06 15:27:05 +00:00
RJevnikar ea109cfdd7 Add migrations for requestedBy and assignedBy fields. 2018-06-06 13:19:53 +00:00
RJevnikar 9035989abf Finish adding delete board feature 2018-06-05 22:03:46 +00:00
RJevnikar aa6076e087 Fix lint error 2018-06-05 21:29:28 +00:00
RJevnikar 78b9436f38 Fix problems highlighted by Codacy/PR Quality Review 2018-06-05 21:21:14 +00:00
RJevnikar 3ce3fa74b3 Add additional label colours (from pull by JamesLavin), Add Assigned & Requested By text fields. 2018-06-05 20:23:29 +00:00
Lauri Ojansivu d6eff2a074 Update translations. 2018-06-04 00:15:22 +03:00
Lauri Ojansivu ccf1e8bc3c Merge branch 'devel' 2018-05-28 22:02:49 +03:00
Lauri Ojansivu 6d75fe4d86 Update translations. 2018-05-28 22:02:30 +03:00
Lauri Ojansivu 82a01edc54 Merge branch 'devel' 2018-05-26 09:40:43 +03:00
Lauri Ojansivu 9ff2340cdb v1.02 2018-05-26 09:39:18 +03:00
Lauri Ojansivu b727204716 Merge branch 'devel' of github.com:wekan/wekan into devel 2018-05-26 09:37:39 +03:00
Lauri Ojansivu 5b4f2f55aa Update translations.
Correction: Releasing Wekan v1.02
2018-05-26 09:36:11 +03:00
Lauri Ojansivu 60119153de Update translations. 2018-05-26 09:29:58 +03:00
Lauri Ojansivu 2b2d596da6 v1.0.2 2018-05-26 08:58:40 +03:00
Lauri Ojansivu 63c1ef9f9e Actually, without @latest it works the same. 2018-05-26 08:47:37 +03:00
Lauri Ojansivu 0cc183682e Use latest npm. 2018-05-26 08:43:20 +03:00
Lauri Ojansivu 4d193f5650 Remove bcrypt, continued. 2018-05-26 08:28:16 +03:00
Lauri Ojansivu 73c4806864 Merge branch 'xadagaras-bugfix/received_end_date_picker' into devel 2018-05-26 08:27:07 +03:00
Lauri Ojansivu b0cf60a3d9 - Fix Received Date and End Date on Cards.
Thanks to xadagaras !
2018-05-26 07:52:20 +03:00
Lauri Ojansivu 3ca3d063a7 Merge branch 'bugfix/received_end_date_picker' of https://github.com/xadagaras/wekan into xadagaras-bugfix/received_end_date_picker 2018-05-26 07:49:49 +03:00
Lauri Ojansivu 01741750f8 Merge branch 'kubiko-devel' into devel 2018-05-26 07:48:38 +03:00
Lauri Ojansivu 4377381fd3 - Snap: Filtering out swap file created at build time, adding stage package.
Thanks to kubiko !
2018-05-26 07:47:59 +03:00
Lauri Ojansivu 9cf1b62cd6 Merge branch 'devel' of https://github.com/kubiko/wekan into kubiko-devel 2018-05-26 07:45:41 +03:00
Lauri Ojansivu 5ded2e5121 - Removed binary version of bcrypt because of vulnerability that has issue that is not fixed yet. This may cause some slowdown.
Thanks to xet7 !
2018-05-26 07:44:36 +03:00
Lauri Ojansivu 7eeabf14be Remove binary version of bcrypt because of security vulnerability.
This may cause some slowdown.
2018-05-26 07:33:32 +03:00
Daniel Kreuter be507e567a Extend editCardReceivedDatePopup and editCardEndDatePopup from DatePicker to fix #1654 2018-05-25 19:44:49 +02:00
Ondrej Kubik 1117d1c2ae filtering out swap file created at build time, adding stage package
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-05-25 13:49:24 +00:00
Lauri Ojansivu 9eaac52b73 Merge branch 'devel' 2018-05-24 18:07:20 +03:00
Lauri Ojansivu 4b20102139 Remove bcrypt 2018-05-24 18:06:39 +03:00
Lauri Ojansivu edae64b1c7 Merge branch 'devel' 2018-05-24 14:08:44 +03:00
Lauri Ojansivu 9242bdb10b Go back to xss 0.3.8, because 1.0.0 did break snap build. 2018-05-24 14:07:57 +03:00
Lauri Ojansivu 171d0c8629 Merge branch 'devel' 2018-05-24 11:04:53 +03:00
Lauri Ojansivu a69997d31e Merge remote-tracking branch 'upstream/devel' into devel 2018-05-24 11:04:31 +03:00
Lauri Ojansivu 31e4400c66 Merge branch 'devel' 2018-05-24 10:55:39 +03:00
Lauri Ojansivu 3bcd578fcb Merge branch 'greenkeeper/xss-1.0.0' into devel 2018-05-24 10:55:12 +03:00
Lauri Ojansivu 4c5daf5d85 - Update xss to version 1.00
Thanks to xet7 !
2018-05-24 10:51:29 +03:00
greenkeeper[bot] 5b4d75a976 fix(package): update xss to version 1.0.0 2018-05-24 07:11:37 +00:00
Lauri Ojansivu 05020241aa Merge branch 'devel' 2018-05-23 22:55:29 +03:00
Lauri Ojansivu b9c63a8c8f v1.01 2018-05-23 22:54:12 +03:00
Lauri Ojansivu f75f686271 Update translations. 2018-05-23 21:56:11 +03:00
Lauri Ojansivu 505fc71665 - Possible quickfix for all customFields Import errors, please test.
Thanks to feuerball11 and xet7 !

Related #807

Closes #1652, closes #1651
2018-05-23 21:04:24 +03:00
Lauri Ojansivu 529594ef55 Fix lint errors. 2018-05-23 20:58:28 +03:00
Ignatz 3d1f004e90 lint corrections 2018-05-23 11:04:12 +02:00
Ignatz 0195044ba1 possible quickfix for all customFields Import errors 2018-05-23 11:02:23 +02:00
Lauri Ojansivu e8c24aeaf9 Merge branch 'devel' 2018-05-22 09:46:20 +03:00
Lauri Ojansivu ad8f227880 More details to issue template. 2018-05-22 09:45:59 +03:00
Lauri Ojansivu ddfcb235cc Merge branch 'devel' 2018-05-22 09:38:15 +03:00
Lauri Ojansivu c4d83c6e66 Simplify issue template 2018-05-22 09:37:46 +03:00
Lauri Ojansivu 90b589d993 Remove duplicate Contributing.md 2018-05-22 09:29:00 +03:00
Lauri Ojansivu 94fc172366 Merge branch 'devel' 2018-05-21 17:30:21 +03:00
Lauri Ojansivu d4cc337577 v1.00 2018-05-21 17:29:04 +03:00
Lauri Ojansivu 25695bdef2 Update translations. 2018-05-21 17:22:46 +03:00
Lauri Ojansivu af496839f5 Fix typo.
Thanks to yarons !

Closes #1647
2018-05-21 16:31:09 +03:00
Lauri Ojansivu a8feb8ed32 Merge branch 'devel' 2018-05-21 15:07:12 +03:00
Lauri Ojansivu 9c09d926e3 v0.99 2018-05-21 15:05:56 +03:00
Lauri Ojansivu cba480d3ae Update translations (de) 2018-05-21 15:03:26 +03:00
Lauri Ojansivu dbfdba75f9 Merge branch 'feuerball11-feature-advanced-filter' into devel 2018-05-21 02:41:48 +03:00
Lauri Ojansivu d46afc12be Advanced Filter for Custom Fields.
Thanks to feuerball11 and xet7 !
2018-05-21 02:41:02 +03:00
Lauri Ojansivu 531cea489e Update translations. 2018-05-21 02:27:15 +03:00
Lauri Ojansivu 9e4758ec9e Update translations. 2018-05-21 01:03:42 +03:00
Lauri Ojansivu e8206f2983 Merge branch 'feature-advanced-filter' of https://github.com/feuerball11/wekan into feuerball11-feature-advanced-filter 2018-05-20 22:53:36 +03:00
SpeaKeasY e5c6da5a39 Added initial DJango 2.0.5 project config with pyjade, python 3.6.5 venv. 2018-05-20 18:38:33 +00:00
IgnatzHome 2119a6568b forgot a ' 2018-05-20 14:59:32 +02:00
IgnatzHome dd7c9997a9 Removing Debug Lines, correcting behavior, caching las valide filter, and adding description 2018-05-20 14:53:00 +02:00
IgnatzHome 256ca129f0 Correcting not Filter 2018-05-20 14:03:48 +02:00
IgnatzHome 6d9ac3ae48 testing theorie: subcommands are allways 1 entry 2018-05-20 13:19:18 +02:00
IgnatzHome 59046d448f making custom-fields uneditable on minicard 2018-05-20 12:24:07 +02:00
IgnatzHome d9e291635a customFields bevore mebers on minicard 2018-05-20 12:17:25 +02:00
Lauri Ojansivu b8158fadfc Merge branch 'devel' 2018-05-20 13:13:35 +03:00
Lauri Ojansivu 1133b7a04a Update translations. 2018-05-20 13:13:15 +03:00
IgnatzHome 43fe9ef34a style correction for custom fields on minicard 2018-05-20 12:11:58 +02:00
IgnatzHome f910b66ef2 correcting indent in jade 2018-05-20 11:49:49 +02:00
IgnatzHome bfac626fa4 showOnCard test implementation 2018-05-20 11:40:32 +02:00
IgnatzHome ecbb8ef071 correcting strings not part of subcommand 2018-05-20 11:27:22 +02:00
IgnatzHome 1c0c5bde0f More conditions and logic Operators, Also Brackets. 2018-05-20 11:15:57 +02:00
IgnatzHome c3044a6b8b removing .cmd in oricessing Operators 2018-05-20 10:20:29 +02:00
IgnatzHome 778a29855f stringify console.logs becouse of asynchrone nature from chromes interpretation... WAT 2018-05-20 10:11:46 +02:00
IgnatzHome eb859dac3a More Debugging Logs 2018-05-20 09:57:40 +02:00
IgnatzHome 9ac1164440 Testing 'or' condition for advanced Filter 2018-05-20 09:47:20 +02:00
IgnatzHome 39974c9532 rewrite Filter._getMongoSelecto to not include Empty Filter. 2018-05-20 09:33:51 +02:00
IgnatzHome 4ff8989e8f More Debugging 2018-05-19 22:29:12 +02:00
IgnatzHome 2bf13a50c4 find to findOne 2018-05-19 22:17:00 +02:00
IgnatzHome 382b14ea27 debugging _fieldNameToId 2018-05-19 21:54:20 +02:00
IgnatzHome 17fcfd3697 correcting _fieldNameToId(field); 2018-05-19 21:42:11 +02:00
IgnatzHome 811ccf0f10 i was constructing the wrong and the whole time.. *sigh* 2018-05-19 21:31:43 +02:00
IgnatzHome 422424d21c fixing string detection in advanced filter 2018-05-19 21:19:10 +02:00
IgnatzHome 0bdc7efc8b another debug line 2018-05-19 21:06:53 +02:00
IgnatzHome 32058e8018 damm i got the eslint file again.... 2018-05-19 20:53:59 +02:00
IgnatzHome ba12b53e49 correct way, wrong idea 2018-05-19 20:53:25 +02:00
IgnatzHome b9ead144fb javascript is confusing sometimes 2018-05-19 20:33:49 +02:00
IgnatzHome 1d58e40133 this took me way too long 2018-05-19 20:17:52 +02:00
IgnatzHome cd749bc385 console log for debug 2018-05-19 19:59:10 +02:00
IgnatzHome 01cd2df369 correcting return type from constructed 2018-05-19 19:16:10 +02:00
IgnatzHome 1854f5c061 correcting push not part of string 2018-05-19 19:00:20 +02:00
IgnatzHome b00bd04baa first test for Advanced Filter 2018-05-19 18:38:48 +02:00
Lauri Ojansivu 8b32cf42cb Merge branch 'devel' 2018-05-19 18:45:37 +03:00
Lauri Ojansivu 3075791a93 v0.98 2018-05-19 18:43:59 +03:00
Lauri Ojansivu 38ab2b766d Merge branch 'feuerball11-feature-custom-fields-filter' into devel 2018-05-19 18:40:03 +03:00
Lauri Ojansivu 410e5aa28d - Filtering by Custom Field
- Update to NPM 6.0.1 and MongoDB 3.2.20

Thanks to feuerball11 and xet7 !
2018-05-19 18:37:02 +03:00
Lauri Ojansivu 82f7541131 Update translations. 2018-05-19 18:30:29 +03:00
Lauri Ojansivu 106b135eba Use NPM 6.0.1 2018-05-19 18:13:43 +03:00
Lauri Ojansivu 7dfec58128 Merge branch 'feature-custom-fields-filter' of https://github.com/feuerball11/wekan into feuerball11-feature-custom-fields-filter 2018-05-19 17:39:05 +03:00
IgnatzHome 977bce9eb2 correcting 'no custom fields' 2018-05-19 16:23:18 +02:00
IgnatzHome bc0aef3332 More Filter Corrections (Custom Fields) 2018-05-19 16:06:06 +02:00
Lauri Ojansivu 8101d7ade8 MongoDB v3.2.20 2018-05-19 17:05:28 +03:00
IgnatzHome f6d19d2833 Filter Sidebar Corrections 2018-05-19 15:40:51 +02:00
IgnatzHome c431af27c2 Correcting FIlter search with Multiple Custom Fields 2018-05-19 15:35:25 +02:00
IgnatzHome 973a0d93ae reverting .eslintrc (i always forget to dont commit this) 2018-05-19 15:21:48 +02:00
IgnatzHome cbdb7b4f64 Correcting constructed mongoSelector 2018-05-19 15:21:12 +02:00
Lauri Ojansivu 9c5bcd7321 Merge branch 'devel' 2018-05-19 16:10:30 +03:00
Lauri Ojansivu 8f0c3b45c0 Fix date. 2018-05-19 16:10:12 +03:00
IgnatzHome 78317ef792 Filter on custom fields presence 2018-05-19 14:51:01 +02:00
IgnatzHome 1ab4f5b913 Merge remote-tracking branch 'original/devel' into feature-custom-fields-filter 2018-05-19 14:18:40 +02:00
Lauri Ojansivu 04f09b6042 Merge branch 'devel' 2018-05-19 14:21:30 +03:00
Lauri Ojansivu f48e2fbd14 v0.97 2018-05-19 14:20:08 +03:00
Lauri Ojansivu 27f9e9e104 Update translations. 2018-05-19 14:18:20 +03:00
Lauri Ojansivu 9a509778d3 Merge branch 'devel' 2018-05-19 14:10:53 +03:00
Lauri Ojansivu 12b08b9915 v0.96 2018-05-19 14:09:33 +03:00
Lauri Ojansivu bd8a8ab90e Update translations. 2018-05-19 14:01:16 +03:00
Lauri Ojansivu 642507fb42 Merge branch 'feature-custom-fields' of https://github.com/feuerball11/wekan into devel 2018-05-19 13:06:06 +03:00
IgnatzHome 4600e4e237 Migration Test 2018-05-19 08:58:30 +02:00
Lauri Ojansivu c2e6f67689 Update translations. 2018-05-18 22:49:35 +03:00
Lauri Ojansivu 9dec10bad3 Add CLA back 2018-05-18 18:57:42 +03:00
Ignatz 3e390503fc first test for custom fields filter 2018-05-18 16:41:03 +02:00
Lauri Ojansivu a7f8614f04 Fix: checklistItems broken after upgrade.
Thanks to feuerball11 !

Closes #1636
2018-05-18 16:29:18 +03:00
Lauri Ojansivu 0be7a5d783 Merge branch 'franksiler-migration-checklistitems-fix' into devel 2018-05-18 16:26:44 +03:00
Lauri Ojansivu 41b938ea69 Merge branch 'migration-checklistitems-fix' of https://github.com/franksiler/wekan into franksiler-migration-checklistitems-fix 2018-05-18 16:25:42 +03:00
Lauri Ojansivu 12a374bec7 Changed place of greenkeeper badge. 2018-05-18 16:24:26 +03:00
Lauri Ojansivu 8dd1566316 Merge branch 'greenkeeper/initial' into devel 2018-05-18 16:23:53 +03:00
Lauri Ojansivu 50f751e0a9 Merge branch 'devel' into greenkeeper/initial 2018-05-18 16:22:53 +03:00
Lauri Ojansivu 1984a6b1c8 Merge branch 'feuerball11-feature-custom-fields' into devel 2018-05-18 16:19:48 +03:00
Lauri Ojansivu 1d904adc61 - Add: Custom Fields.
Thanks to feuerball11, papoola and xet7 !

Closes #807
2018-05-18 16:15:49 +03:00
Lauri Ojansivu 22882a0603 Update translations. 2018-05-18 16:11:32 +03:00
Lauri Ojansivu 9b465bc98b Fix lint errors back to eslint requirements. 2018-05-18 15:20:20 +03:00
Ignatz ef99e6a6b1 indend corrections 2018-05-18 11:13:01 +02:00
greenkeeper[bot] 61b240d126 docs(readme): add Greenkeeper badge 2018-05-18 09:09:23 +00:00
greenkeeper[bot] 1f3b5604c0 chore(package): update dependencies 2018-05-18 09:09:21 +00:00
Ignatz 3bf4f3ef40 Line Endings back to Unix (Was Temporarly on Windows) 2018-05-18 11:03:04 +02:00
Ignatz 838578657d template literals correction 2018-05-18 10:43:43 +02:00
Ignatz d6cfac0122 linter corrections 2018-05-18 10:24:51 +02:00
Ignatz c1d2e27c09 correcting missing loca 2018-05-18 10:02:32 +02:00
IgnatzHome b43779e408 That should do it 2018-05-17 22:15:35 +02:00
IgnatzHome f9df38d333 Style Changes 2018-05-17 22:14:41 +02:00
IgnatzHome 80088174fc More style corrections 2018-05-17 22:08:17 +02:00
IgnatzHome 0dfc62c025 Removing Doupling start / end and more style corrections 2018-05-17 21:57:54 +02:00
IgnatzHome 7186b947b2 correcting style errors 2018-05-17 21:49:14 +02:00
IgnatzHome 98df01060d removing checkbox types part 2 2018-05-17 21:17:40 +02:00
IgnatzHome 9184bf3946 removing checkbox type 2018-05-17 21:06:52 +02:00
IgnatzHome 9518a5c11e resolving merge conflicts 2018-05-17 20:21:07 +02:00
Frank Siler 9a766c0f74 ensure checklistItem titles are correct when migrating 2018-05-16 19:40:27 -05:00
Lauri Ojansivu c0c7b269a7 Update translations. 2018-05-16 12:58:31 +03:00
Lauri Ojansivu 5dafea405d Merge branch 'devel' 2018-05-10 09:53:08 +03:00
Lauri Ojansivu 77a5f8f339 Update dependencies. 2018-05-10 09:52:43 +03:00
Lauri Ojansivu be97efb791 Merge branch 'devel' 2018-05-10 02:33:01 +03:00
Lauri Ojansivu 7e34dd0c2b Update translations. 2018-05-10 02:31:22 +03:00
Lauri Ojansivu 0ecbb73419 Merge branch 'devel' 2018-05-08 11:14:26 +03:00
Lauri Ojansivu f3aa524b77 v0.95 2018-05-08 11:13:35 +03:00
Lauri Ojansivu 792f187d06 Update translation (de). 2018-05-08 10:57:31 +03:00
Lauri Ojansivu 4c18df757f Update translations. 2018-05-08 10:54:24 +03:00
Lauri Ojansivu 9d47d3e397 Admin Panel: Option to block username change.
Thanks to thiagofernando !
2018-05-08 01:33:52 +03:00
Lauri Ojansivu 0b9328a1be Merge pull request #1627 from thiagofernando/devel
Includes possibility to block username change
2018-05-08 01:31:01 +03:00
Lauri Ojansivu fc033c30e6 Add a new API route to create a new label in a given board.
Thanks to ThisNeko !
2018-05-08 01:29:10 +03:00
Lauri Ojansivu da180472c1 Merge pull request #1630 from ThisNeko/devel
Add a new API route to create a new label in a given board
2018-05-08 01:27:09 +03:00
Lauri Ojansivu cdc2b920ee Fix error: title is required.
Thanks to Shahar-Y !

Related https://github.com/wekan/wekan/commit/8d5cbf1e6c2b6d467fe1c0708cd794fd11b98a2e#commitcomment-28880774

Closes #1576
2018-05-08 01:24:24 +03:00
Lauri Ojansivu 16d75f549d Fix error: title is required.
Related https://github.com/wekan/wekan/commit/8d5cbf1e6c2b6d467fe1c0708cd794fd11b98a2e

Closes #1576
2018-05-08 01:20:56 +03:00
Thiago Fernando S. dos Santos c43508cacb send settingBody.jade 2018-05-07 13:57:23 -03:00
NET\faguet 6b2d022a93 correction 2018-05-07 14:27:07 +02:00
NET\faguet 1cb8a6e7fe Add a new API route to create a new label in a given board 2018-05-07 13:32:33 +02:00
Lauri Ojansivu 5e109de8d5 Fix link. 2018-05-06 18:21:21 +03:00
Lauri Ojansivu c4b5145db4 Fix link. 2018-05-06 18:12:51 +03:00
Lauri Ojansivu e5638e5e5a Fix link 2018-05-06 18:07:56 +03:00
Lauri Ojansivu 7e49ab5fea Tried to fix, but it did not work yet. 2018-05-06 18:00:36 +03:00
Lauri Ojansivu 682eab74d9 Fix lint error.
Related https://github.com/wekan/wekan/pull/1626
2018-05-05 00:30:34 +03:00
Lauri Ojansivu 9edbc349b9 - REST API Edit Card Labels.
Thanks to ThisNeko !
2018-05-04 23:57:40 +03:00
Thiago Fernando S. dos Santos c751f05962 revert translations files 2018-05-04 17:35:37 -03:00
Thiago Fernando S. dos Santos 2fa1b3122d Includes possibility to block username change 2018-05-04 16:44:50 -03:00
Lauri Ojansivu c48c18c4e9 Merge pull request #1626 from ThisNeko/devel
API Edit Card Labels
2018-05-04 15:50:00 +03:00
thisNeko 2da157dbb0 API Edit Card Labels 2018-05-04 14:32:36 +02:00
Lauri Ojansivu daeb06f7b7 Merge branch 'devel' 2018-05-03 09:27:29 +03:00
Lauri Ojansivu dcd5af0a76 v0.94 2018-05-03 09:26:09 +03:00
Lauri Ojansivu e576e0f9cf Merge pull request #1622 from couscous3/patch-2
POST /cards: allow setting card members
2018-05-03 09:20:01 +03:00
couscous3 83e7e4fb27 POST /cards: allow setting card members
if members isn't specified then the authorId will be the only member of the card, otherwise the provided members attribute will be used
2018-05-03 00:35:47 +02:00
Lauri Ojansivu 01804daf24 Merge branch 'devel' 2018-05-02 18:19:19 +03:00
Lauri Ojansivu d77e54fff6 v0.93 2018-05-02 18:18:16 +03:00
Lauri Ojansivu 0aa78d9847 Merge branch 'lichtamberg-devel' into devel 2018-05-02 17:18:22 +03:00
Lauri Ojansivu e5c1351e82 - Checklist items lineheight to 18px, and positioning improvements.
Thanks to lichtamberg !
2018-05-02 17:16:56 +03:00
Peter L f6656a4791 Changed px to em and added margin for add-checklist-item link 2018-05-02 15:32:53 +02:00
Peter L d2354827da Move checkbox down, so it aligns at the same height like the text 2018-05-02 15:20:54 +02:00
Peter Lampesberger 814164e53e Change checklist-item line-height to 18px. Fixes #1619 2018-05-02 14:43:47 +02:00
Lauri Ojansivu bde9cc7cea Merge branch 'devel' 2018-05-01 23:07:53 +03:00
Lauri Ojansivu 7b0cf760e9 Better text formatting. 2018-05-01 23:07:27 +03:00
Lauri Ojansivu 6a16063f7d Merge branch 'devel' 2018-05-01 20:53:02 +03:00
Lauri Ojansivu 130aa1161e v0.92 2018-05-01 20:50:21 +03:00
Lauri Ojansivu eaebe8b893 Try to fix: Users who register with an invitation code can't see lists/cards.
Please test.

Thanks to andresmanelli !

Related #1610
2018-05-01 20:03:16 +03:00
Lauri Ojansivu c4b898633e Try to fix: Users who register with an invitation code can't see lists/cards.
Please test.

Thanks to andresmanelli !

Related #1610
2018-05-01 20:00:50 +03:00
Lauri Ojansivu 88fca396d4 Merge branch 'devel' 2018-05-01 13:08:35 +03:00
Lauri Ojansivu cfa3c4bfcb v0.91 2018-05-01 13:07:45 +03:00
Lauri Ojansivu bf7520c430 Merge branch 'zebby76-devel' into devel 2018-05-01 13:06:15 +03:00
Lauri Ojansivu 166324df01 - Fix Wekan Import / Export lists not being sortable.
Thanks to zebby76 !
2018-05-01 13:05:17 +03:00
zebby76 539c1ab87a Define sort property on swimlanes and lists 2018-05-01 07:55:41 +02:00
Lauri Ojansivu e5cb190693 Merge branch 'devel' 2018-05-01 00:12:21 +03:00
Lauri Ojansivu 359d0b376f v0.90 2018-05-01 00:10:59 +03:00
Lauri Ojansivu a6cf57e988 - Remove space from between checklist items, so longer checklists can be seen at once.
Thanks to xet7 !
2018-05-01 00:07:16 +03:00
Lauri Ojansivu 1124f4120c - Remove space from between checklist items, so longer checklists can be seen at once.
Thanks to xet7 !
2018-05-01 00:05:09 +03:00
Lauri Ojansivu 6ee6dbade5 Merge branch 'devel' 2018-04-30 18:45:14 +03:00
Lauri Ojansivu f219e2151f Text to lowercase. 2018-04-30 16:45:15 +03:00
Lauri Ojansivu c5b7f30d65 Shorter text. 2018-04-30 16:43:26 +03:00
Lauri Ojansivu e3f1fbc967 Fix links. 2018-04-30 16:37:49 +03:00
Lauri Ojansivu e6df7d81cf Update readme layout. 2018-04-30 16:29:08 +03:00
Lauri Ojansivu 24ad97cddb Add badges. 2018-04-30 16:26:18 +03:00
Lauri Ojansivu b70252468a Merge branch 'devel' 2018-04-29 11:47:17 +03:00
Lauri Ojansivu f9941c0f9c v0.89 2018-04-29 11:46:23 +03:00
Lauri Ojansivu 26c8505d9e Merge branch 'devel' 2018-04-29 10:48:35 +03:00
Lauri Ojansivu e7e558e865 Merge branch 'zebby76-devel' into devel 2018-04-29 09:19:44 +03:00
Lauri Ojansivu 6167d447fd - Fix Wekan import / Export for ChecklistItems.
Thanks to zebby76 !
2018-04-29 09:11:23 +03:00
Sebastian Molle 30b17ff6c9 Fix Wekan import / Export for ChecklistItems 2018-04-28 22:17:56 +02:00
Lauri Ojansivu df91d1e632 Merge branch 'devel' 2018-04-27 18:14:36 +03:00
Lauri Ojansivu 1f42aac19f v0.88 2018-04-27 18:10:24 +03:00
Lauri Ojansivu 212440862b Fix lint errors of
https://github.com/wekan/wekan/pull/1611

Thanks to xet7 !
2018-04-27 17:49:14 +03:00
Lauri Ojansivu 21e68f3e54 Merge branch 'zebby76-devel' into devel 2018-04-27 17:00:56 +03:00
Lauri Ojansivu 116bc38136 - Fix Trello import of ChecklistItems.
Thanks to zebby76 !
2018-04-27 16:59:54 +03:00
ZeBBy e721dba1e2 Fix Trello importation for ChecklistItems 2018-04-27 15:29:31 +02:00
Lauri Ojansivu 3b6ec34bf5 Try to fix snap build 2018-04-27 15:09:57 +03:00
Lauri Ojansivu be61904a1e Merge branch 'devel' 2018-04-27 14:03:49 +03:00
Lauri Ojansivu 170acf6948 v0.87 2018-04-27 14:02:25 +03:00
Lauri Ojansivu d69f8f4cda Fix: Copy Card, Move Card and Copy Checklist Template to Many Cards - No longer works in menu in Sandstorm.
Thanks to xet7 !

Closes #1607
2018-04-27 14:00:05 +03:00
Lauri Ojansivu db80e73804 Fix: Copy Card, Move Card and Copy Checklist Template to Many Cards - No longer works in menu in Sandstorm.
Thanks to xet7 !

Closes #1607
2018-04-27 13:57:28 +03:00
Lauri Ojansivu 25668eb7c4 Try to fix snap 2018-04-27 13:23:09 +03:00
Lauri Ojansivu 11177196e3 Update translations. 2018-04-27 12:50:32 +03:00
Lauri Ojansivu 6d21ffe660 Try to fix snap. 2018-04-27 12:42:33 +03:00
Lauri Ojansivu ce79645455 Removed not-used plugins part of Caddy download URL.
Thanks to xet7 !
2018-04-20 18:42:35 +03:00
Lauri Ojansivu 7b91b341fe Removed not-used plugins part of Caddy download URL.
Thanks to xet7 !
2018-04-20 18:40:20 +03:00
Lauri Ojansivu 6856f4d95f Use override-build instead of old deprecated prepare/build/install.
https://github.com/canonical-docs/snappy-docs/blob/master/deprecation-notices/dn7.md

Thanks to kyrofa !

Closes wekan/wekan-snap#45
2018-04-20 18:39:29 +03:00
Lauri Ojansivu 075ea1c43d Use override-build instead of old deprecated prepare/build/install.
https://github.com/canonical-docs/snappy-docs/blob/master/deprecation-notices/dn7.md

Thanks to kyrofa !

Closes wekan/wekan-snap#45
2018-04-20 18:30:48 +03:00
Lauri Ojansivu b7247f8d52 Merge branch 'devel' 2018-04-20 15:37:24 +03:00
Lauri Ojansivu 87d2cee02a v0.86 2018-04-20 15:35:51 +03:00
Lauri Ojansivu fa758a73bd Update translations. 2018-04-20 15:26:51 +03:00
Lauri Ojansivu 4191ede176 Merge branch 'devel' 2018-04-18 19:16:00 +03:00
Lauri Ojansivu ded98d73d7 Merge branch 'devel' of github.com:wekan/wekan into devel 2018-04-18 19:15:05 +03:00
Lauri Ojansivu bbfacc06e3 v0.85
And:
- Use curl to download 100% CPU fibers fixed node in snap
- Remove paxctl from snap package

Thanks to xet7 !
2018-04-18 19:14:05 +03:00
Lauri Ojansivu e45b8ea48c - Use curl to download 100% CPU fibers fixed node in snap
- Remove paxctl from snap package

Thanks to xet7 !
2018-04-18 19:08:28 +03:00
Lauri Ojansivu 179ff7a124 Use curl to download 100% CPU usage fibers fixed node in snap. 2018-04-18 19:04:08 +03:00
Lauri Ojansivu fc4d7a0bde Merge branch 'devel' 2018-04-18 18:28:23 +03:00
Lauri Ojansivu 5415a7c4b9 Fix typo. 2018-04-18 18:28:06 +03:00
Lauri Ojansivu 84fd00c566 Merge branch 'devel' 2018-04-18 18:25:34 +03:00
Lauri Ojansivu f41589ba82 - Removed paxctl alpine fix #1303 , because it did not work anymore, so Docker container
and Snap did not build correctly.

Thanks to xet7 !

Closes #1594
2018-04-18 18:24:20 +03:00
Lauri Ojansivu ce65963217 Removed paxctl alpine fix #1303 , because it did not work anymore.
Thanks to xet7 !

Closes #1594
2018-04-18 18:19:22 +03:00
Lauri Ojansivu 1e0fcfd20d - Fix checklists items migration error "title is required"
Thanks to xet7 !

Closes #1576
2018-04-18 17:28:24 +03:00
Lauri Ojansivu 8d5cbf1e6c - Fix checklists items migration error "title is required"
Thanks to xet7 !

Closes #1576
2018-04-18 17:27:15 +03:00
Lauri Ojansivu 7cc930f6b9 Fix lint error in Fibers size setting 2018-04-18 16:03:49 +03:00
Lauri Ojansivu e9bb7e0041 Fix Wekan logo positioning.
Thanks to iwkse and xet7 !

Closes #1583, closes #1378
2018-04-17 21:36:15 +03:00
Lauri Ojansivu 61538ab577 Try to fix Dockerfile. 2018-04-16 22:39:52 +03:00
Lauri Ojansivu bca4f0b842 Try to fix Dockerfile 2018-04-16 22:30:48 +03:00
Lauri Ojansivu 0723a204e8 Try to fix Dockerfile 2018-04-16 22:03:51 +03:00
Lauri Ojansivu 2cd1fbf9d9 Merge branch 'andresmanelli-viewProfile' into devel 2018-04-16 21:51:10 +03:00
Lauri Ojansivu 29c3d939a7 Fix Switch List/swimlane view only working with admin privileges.
Thanks to andresmanelli !

Closes #1567
2018-04-16 21:49:23 +03:00
Lauri Ojansivu 02e8749540 Merge branch 'viewProfile' of https://github.com/andresmanelli/wekan into andresmanelli-viewProfile 2018-04-16 21:35:07 +03:00
Lauri Ojansivu e402200b87 Merge branch 'devel' 2018-04-16 21:27:24 +03:00
Lauri Ojansivu ea289c7810 v0.84 2018-04-16 21:25:54 +03:00
Lauri Ojansivu f3058133b3 Fix Node Fibers 100% CPU issue.
Thanks to kentonv !
2018-04-16 21:22:33 +03:00
Lauri Ojansivu e26a4824cf Fix Node Fibers 100% CPU issue.
Thanks to kentonv !

Related wekan/wekan-mongodb#2, related meteor/meteor#9796
2018-04-16 21:18:09 +03:00
Andrés Manelli e5995477b8 Fix #1567 2018-04-16 14:43:10 -03:00
Lauri Ojansivu c12e003fd3 Update changelog with changes from andresmanelli. 2018-04-16 19:55:03 +03:00
Lauri Ojansivu 8e11d278d3 Update translations. 2018-04-16 19:42:48 +03:00
Andrés Manelli de13705289 Fix lint errors 2018-04-16 00:25:54 -03:00
Andrés Manelli 09bc8ac44c Fix #1561 Filter checklist items 2018-04-16 00:19:03 -03:00
Andrés Manelli eae4bb2d37 Fix #1565 2018-04-16 00:19:03 -03:00
Andrés Manelli 31584e849c Fix #1570, now zero means hide cards count 2018-04-16 00:19:03 -03:00
Andrés Manelli b735817901 Fix #1577 2018-04-16 00:19:03 -03:00
Andrés Manelli 4dbe6feb8c Fix lint errors 2018-04-16 00:19:03 -03:00
Andrés Manelli 9eef5112dc Add REST API for Checklist Items (Related to #1562) 2018-04-16 00:18:55 -03:00
Andrés Manelli 4861da52a0 Fix checklists REST API (#1562) 2018-04-16 00:18:44 -03:00
Lauri Ojansivu aede4dd9c5 Merge branch 'devel' 2018-04-12 20:46:19 +03:00
Lauri Ojansivu 4505e6edc9 v0.83 2018-04-12 20:44:09 +03:00
Lauri Ojansivu 85e86136e9 Update translations. 2018-04-12 20:39:35 +03:00
Lauri Ojansivu 9b961edb36 Merge branch 'devel' 2018-04-11 15:09:27 +03:00
Lauri Ojansivu 82fc4d011f v0.82 2018-04-11 15:08:56 +03:00
Lauri Ojansivu bfe03ac89f - Restore original font and font sizes.
- Admin panel people and version texts to darker.

Thanks to apn3a and xet7 !

Closes #1582
2018-04-11 15:06:04 +03:00
Lauri Ojansivu db74c86e55 Restore original font and font sizes.
Admin panel people and version texts to darker.
2018-04-11 14:59:58 +03:00
Lauri Ojansivu b7ee0173ec Merge branch 'devel' 2018-04-10 22:21:38 +03:00
Lauri Ojansivu ce177117a0 v0.81 2018-04-10 22:19:51 +03:00
Lauri Ojansivu b05f3595f0 Update translations. 2018-04-10 22:17:00 +03:00
Allemand Sylvain 3e927b4e58 merge oidc and local account if exists 2018-04-10 11:44:54 +02:00
Allemand Sylvain 1c8a00943c authentification oauth2 2018-04-09 16:49:07 +02:00
Lauri Ojansivu f00797de5c Merge branch 'devel' 2018-04-06 17:46:42 +03:00
Lauri Ojansivu c115046a7c Update translations. 2018-04-06 17:46:23 +03:00
Lauri Ojansivu 8051f6affa Board title as markdown in board view.
Thanks to xet7 !
2018-04-06 00:14:01 +03:00
Lauri Ojansivu 973b416885 Board title as markdown in board view.
Thanks to xet7 !
2018-04-06 00:11:15 +03:00
Lauri Ojansivu b501d35b55 Merge branch 'devel' 2018-04-05 22:14:20 +03:00
Lauri Ojansivu 8fc4011bf8 Use lighter and smaller font sizes.
Thanks to xet7 !
2018-04-05 22:13:51 +03:00
Lauri Ojansivu 7b94b04701 Use lighter and smaller font sizes.
Thanks to xet7 !
2018-04-05 22:10:51 +03:00
Lauri Ojansivu 217ae207b9 Fix commit URL. 2018-04-05 16:27:53 +03:00
Lauri Ojansivu 4f1eaa6b82 - Renamed Archives to Recycle Bin
Thanks to BruceZCQ and xet7 !

Closes #1429
2018-04-05 16:25:08 +03:00
Lauri Ojansivu 49c7a6c223 Separate translations for cards in Recycle Bin and cards count. 2018-04-05 16:19:22 +03:00
Lauri Ojansivu 0e883675fc Merge branch 'devel' 2018-04-05 12:58:51 +03:00
Lauri Ojansivu 5a6be37d52 - Removed checkbox from checklist name to have more of material design look.
Thanks to quantazelle and xet7 !

Related #1568
2018-04-05 12:56:03 +03:00
Lauri Ojansivu c295e47f76 Merge branch 'devel' 2018-04-05 12:01:59 +03:00
Lauri Ojansivu 9711945e48 - Removed forcing "cards" translations to lowercase in count of cards.
- Finnish translation of cards to lowercase.

Thanks to Chartman123 and xet7 !

Closes #1571
2018-04-05 12:00:12 +03:00
Lauri Ojansivu fb87e4b1f2 Merge branch 'devel' 2018-04-04 23:27:49 +03:00
Lauri Ojansivu a320a71467 v0.80 2018-04-04 23:26:25 +03:00
Lauri Ojansivu bda6ee26d7 Added meteor packages for security:
- browser-policy
- eluck:accounts-lockout

Thanks to xet7 !
2018-04-04 23:20:19 +03:00
Lauri Ojansivu 40d438a517 Added meteor packages for security:
- browser-policy
- eluck:accounts-lockout

Thanks to xet7 !
2018-04-04 23:18:06 +03:00
Lauri Ojansivu 5d2dd66450 - Changed icon of checklist name to unchecked
Thanks to quantazelle ! Related #1568
2018-04-04 21:49:33 +03:00
Lauri Ojansivu f9539aa2a8 Changed icon of checklist name. Related #1568 2018-04-04 21:44:53 +03:00
Lauri Ojansivu 66e56849a4 Merge branch 'devel' 2018-04-04 17:36:38 +03:00
Lauri Ojansivu 75512043e8 Try to fix travis 2018-04-04 17:36:19 +03:00
Lauri Ojansivu 3631cd5026 Merge branch 'devel' 2018-04-04 17:34:17 +03:00
Lauri Ojansivu 09c59ff562 Update translations. 2018-04-04 17:33:54 +03:00
Lauri Ojansivu e3d1fbc7f4 Update all from wekan-mongodb to main wekan repo docker-compose.yml file 2018-04-04 14:22:59 +03:00
Lauri Ojansivu 05f1d197f5 Remove warnings about Docker. MongoDB to 3.2.19. 2018-04-04 13:42:45 +03:00
Lauri Ojansivu 485ccf4007 Merge branch 'devel' 2018-04-03 19:39:28 +03:00
Lauri Ojansivu fe79a3e763 Update translations. 2018-04-03 19:39:08 +03:00
Lauri Ojansivu 30a4494af2 Merge branch 'devel' 2018-03-31 21:22:33 +03:00
Lauri Ojansivu add5d22c4e v0.79 2018-03-31 21:20:46 +03:00
Lauri Ojansivu 08af6a0cf1 Update translations. 2018-03-31 20:41:11 +03:00
Lauri Ojansivu 38a8d82735 Fix lint errors. 2018-03-31 20:29:17 +03:00
Lauri Ojansivu 42a4ca3678 Merge branch 'andresmanelli-fixDragInListsView' into devel 2018-03-31 20:04:47 +03:00
Lauri Ojansivu 66c20df5ba - Fix drag in lists view
- Set fixed width for swimlane header

Thanks to andresmanelli !

Closes #1553, closes #1546
2018-03-31 20:02:16 +03:00
Lauri Ojansivu 4505495762 Merge branch 'fixDragInListsView' of https://github.com/andresmanelli/wekan into andresmanelli-fixDragInListsView 2018-03-31 19:38:33 +03:00
Andrés Manelli 679e50af64 Fix drag in lists view 2018-03-31 13:19:14 -03:00
Andrés Manelli 2e8f8924dd Set fixed width for swimlane header 2018-03-31 13:11:22 -03:00
Lauri Ojansivu 568a1a11fd Merge branch 'devel' 2018-03-29 15:04:27 +03:00
Lauri Ojansivu 5e88cb24cb Merge branch 'rjevnikar-additionalDates' into devel 2018-03-29 15:03:59 +03:00
Lauri Ojansivu 023b41b205 - Add Received Date and End Date. Between them is already existing Start and Due Date.
Thanks to rjevnikar !
2018-03-29 15:02:24 +03:00
Lauri Ojansivu cca4a3e372 Merge branch 'additionalDates' of https://github.com/rjevnikar/wekan into rjevnikar-additionalDates 2018-03-29 14:54:46 +03:00
Lauri Ojansivu caca2e34fc Update translations. 2018-03-29 12:31:37 +03:00
RJevnikar 07217d0e51 Add additional dates (received & end), default title of checklists to 'Checklist'
Remove translations

Add additional dates (received & end), default name checklists to Checklist
2018-03-26 20:51:24 +00:00
Lauri Ojansivu 75b3d51b39 Merge branch 'devel' 2018-03-21 13:48:31 +02:00
Lauri Ojansivu 80941e57d3 Update translations. 2018-03-21 13:48:10 +02:00
Lauri Ojansivu 3d0bac1f49 Merge branch 'devel' 2018-03-21 12:44:19 +02:00
Lauri Ojansivu 10f24a8a8a Use personal license for non-commercial use only for Caddy.
Related wekan/wekan-snap#39
2018-03-21 12:41:29 +02:00
Lauri Ojansivu 578bdf9e67 Merge branch 'devel' 2018-03-20 22:58:59 +02:00
Lauri Ojansivu a7855f3f58 Merge branch 'andresmanelli-checklistItems' into devel 2018-03-20 22:58:22 +02:00
Lauri Ojansivu ac19904ee8 Checklist items sort fix, and checklist sort capability.
Thanks to andresmanelli !

Closes #876, closes #1483, closes #1237
2018-03-20 22:57:52 +02:00
Lauri Ojansivu ec1630f8dd Merge branch 'checklistItems' of https://github.com/andresmanelli/wekan into andresmanelli-checklistItems 2018-03-20 22:13:18 +02:00
Lauri Ojansivu a7f88d24a1 Merge branch 'devel' 2018-03-20 21:32:21 +02:00
Lauri Ojansivu 90f3f7ba16 Added note about no new issues about Docker. 2018-03-20 21:31:24 +02:00
Andrés Manelli 5e5a5ed9be Fix class name change when clicking check box 2018-03-19 18:49:00 -03:00
Andrés Manelli 3eb6f97291 Fix lint errors 2018-03-19 17:31:53 -03:00
Andrés Manelli 06e64d24a8 Add styling 2018-03-19 17:19:46 -03:00
Andrés Manelli 243af32fc7 Add checklist ordering capability 2018-03-19 16:47:07 -03:00
Andrés Manelli ca89442f3a Clean checklists model 2018-03-19 15:31:38 -03:00
Andrés Manelli 153960742c Fix migration. Replace old checklist-item sort algorithm. 2018-03-19 15:03:44 -03:00
Andrés Manelli bf7de463f1 Add checklist items model, migration and publication 2018-03-19 01:25:33 -03:00
Lauri Ojansivu fa0fd5f21f Merge branch 'devel' 2018-03-17 09:36:51 +02:00
Lauri Ojansivu 83848dbee2 v0.78 2018-03-17 09:34:57 +02:00
Lauri Ojansivu cb099d1093 "DANGER" data loss warning to bigger text. 2018-03-17 09:20:12 +02:00
Lauri Ojansivu 89a8a6f5e3 - Fix scroll board when opening cardDetails
- Fix swimlane info not displayed in activities
- Fix sandstorm default swimlane creation
- Extend lists to bottom of frame in lists view
- Fix drag and drop issues when re-enter board

Thanks to andresmanelli !

Closes #1529, closes #1530, closes #1506, closes #1494, closes #1538, closes #1528
2018-03-17 09:18:31 +02:00
Lauri Ojansivu 22923d08af Enabled import at Sandtorm. Keep there warning about possible data loss bug. 2018-03-17 08:49:22 +02:00
Lauri Ojansivu 57ccfcde63 Update translations. 2018-03-17 08:48:55 +02:00
Lauri Ojansivu 75693d16e2 Add language: Armenian. 2018-03-17 08:48:30 +02:00
Andrés Manelli 454523dd47 Fix scroll board when opening cardDetails 2018-03-17 00:31:19 -03:00
Andrés Manelli bb37d8fa96 Fix swimlane info not displayed in activities 2018-03-16 23:31:24 -03:00
Andrés Manelli f470323ee7 Fix sandstorm default swimlane creation 2018-03-16 23:18:26 -03:00
Andrés Manelli c62a2ee11f Extend lists to bottom of frame in lists view 2018-03-16 22:37:08 -03:00
Andrés Manelli 5b0f7f8aef Fix drag and drop issues when re-enter board 2018-03-16 22:13:40 -03:00
Lauri Ojansivu 0495e61c28 Change snap to previous MongoDB version 3.2.18 because of data loss:
https://github.com/wekan/wekan-mongodb/issues/9
2018-03-15 18:54:03 +02:00
Lauri Ojansivu c1c3421006 Change to previous MongoDB version 3.2.18 because of data loss:
https://github.com/wekan/wekan-mongodb/issues/9
2018-03-15 18:53:28 +02:00
Lauri Ojansivu dfc5537107 Merge branch 'devel' 2018-03-13 02:02:21 +02:00
Lauri Ojansivu 3ce90e9766 Update translations. 2018-03-13 02:01:52 +02:00
Lauri Ojansivu 5b98f139d1 Merge branch 'devel' 2018-03-07 21:19:50 +02:00
Lauri Ojansivu 293718d90c - Fix card copy and move with swimlanes
Thanks andresmanelli ! Closes #1520
2018-03-07 21:18:08 +02:00
Andrés Manelli 4b53b0c90a Fix card copy and move with swimlanes 2018-03-07 14:11:21 -03:00
Lauri Ojansivu 862239019a Merge branch 'devel' 2018-03-07 15:35:09 +02:00
Lauri Ojansivu 98103bb2f7 Merge branch 'lumatijev-patch-1' into devel 2018-03-07 15:33:09 +02:00
Lauri Ojansivu e5b003f5ab - Fix swimlane header rotation on Google Chrome. After this change
both Firefox 58 and Google Chrome 64 have properly rotated
  swimlane header.

Thanks to lumatijev !
2018-03-07 15:31:34 +02:00
Luka Matijević 9a1b1a5bed Fix swimlane header rotation on Google Chrome
After this change both Firefox 58 and Google Chrome 64 have properly rotated swimlane header.
2018-03-07 09:42:35 +01:00
Lauri Ojansivu 983649a6cb Merge branch 'devel' 2018-03-07 09:05:31 +02:00
Lauri Ojansivu 990af4e5c2 Update translations. 2018-03-07 09:05:10 +02:00
Lauri Ojansivu 660b578ab3 Merge branch 'devel' 2018-03-07 08:17:16 +02:00
Lauri Ojansivu f7a9bafe4c - Fix scroll when dragging elements. Remove
scrollbars from swimlanes.
- Partial fix for scroll bar inside cardDetails.

Thanks to andresmanelli !

Closes #1458, closes #1484,
closes #1481, closes #1497,
closes #1521
2018-03-07 08:13:35 +02:00
Andrés Manelli ac7d44f8a8 Partial fix for scroll bar inside cardDetails 2018-03-06 22:00:13 -03:00
Andrés Manelli ed8471be9b Fix scroll when dragging elements. Remove scrollbars from swimlanes. 2018-03-06 21:36:16 -03:00
Lauri Ojansivu 65beb89944 MongoDB 3.2.19 2018-03-06 01:08:56 +02:00
Lauri Ojansivu 594daa9cf8 Merge branch 'devel' 2018-03-05 23:05:47 +02:00
Lauri Ojansivu 663d8e3c34 Fix Scrollbar near top of screen when using internet explorer on Win7.
Thanks to lunatic4ever ! Closes #1524
2018-03-05 23:05:02 +02:00
Lauri Ojansivu 128a356b92 - Fix Scrollbar near top of screen when using internet explorer on Win7
Thanks to lunatic4ever ! Closes #1524
2018-03-05 23:01:09 +02:00
Lauri Ojansivu ebb48f3ee8 Merge branch 'devel' 2018-03-05 22:44:36 +02:00
Lauri Ojansivu 2092b429db - Fix Add Card Button dissapearing when dragging
Thanks to andresmanelli ! Closes #1519
2018-03-05 22:43:02 +02:00
Andrés Manelli 58e5e9b308 Fix #1519 Add Card Btn dissapear on drag 2018-03-05 17:25:00 -03:00
Lauri Ojansivu 4a2b30d08b Merge branch 'devel' 2018-03-03 17:47:10 +02:00
Lauri Ojansivu 338fb5304d Update translations. 2018-03-03 17:46:49 +02:00
Lauri Ojansivu 0cee496270 Merge branch 'devel' 2018-03-02 12:48:01 +02:00
Lauri Ojansivu 9e62584b26 Merge branch 'GhassenRjab-feature/list-default-view' into devel 2018-03-02 12:47:17 +02:00
Lauri Ojansivu 5849ffbb53 - Lists view is the default view when creating boards.
Thanks to GhassenRjab ! Closes #1507
2018-03-02 12:45:20 +02:00
Lauri Ojansivu a58bffbb3e Merge branch 'feature/list-default-view' of https://github.com/GhassenRjab/wekan into GhassenRjab-feature/list-default-view 2018-03-02 12:39:10 +02:00
Lauri Ojansivu a8ae6adbc2 Merge branch 'GhassenRjab-hotfix/wekan-import' into devel 2018-03-02 12:38:02 +02:00
Lauri Ojansivu 946dcf0b0a - Import missing card fields: isOvertime, startAt and spentTime.
Thanks to GhassenRjab ! Closes #1516, closes #1428
2018-03-02 12:36:30 +02:00
Ghassen Rjab 1ca9e96f35 Lists view is the default view when creating boards 2018-03-02 00:06:45 +01:00
Ghassen Rjab b475127c53 Import missing card fields : isOvertime, startAt and spenTime 2018-03-01 23:34:17 +01:00
Lauri Ojansivu 2c1dadf712 Merge branch 'devel' 2018-03-01 14:38:33 +02:00
Lauri Ojansivu bbca361aeb Merge branch 'kubiko-devel' into devel 2018-03-01 14:37:31 +02:00
Lauri Ojansivu f96e21f462 Snap:
- Adding network hooks for configure hook to fix security denials
- Fixing problem when mongodb was not started at install/refresh

Thanks to kubiko ! Closes wekan/wekan-snap#36
2018-03-01 14:13:47 +02:00
Ondrej Kubik 1be8e5625f Fixing problem when mongodb was not started at install/refresh
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-03-01 11:53:40 +00:00
Ondrej Kubik 9084158aec Adding network hooks for configure hook to fix security denials
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-03-01 11:53:21 +00:00
Lauri Ojansivu 6fc89a04de Merge branch 'devel' 2018-03-01 13:01:23 +02:00
Lauri Ojansivu d454fa7dd7 - Remove list max-height 350px.
Thanks to xet7 !
Closes #1512, closes wekan/wekan-snap#35
2018-03-01 13:00:48 +02:00
Lauri Ojansivu b6d3e79548 Remove list max-height 350px. Thanks to xet7 !
Closes #1512, closes wekan/wekan-snap#35
2018-03-01 12:54:28 +02:00
Lauri Ojansivu 4994f66e9c Merge branch 'devel' 2018-03-01 01:02:46 +02:00
Lauri Ojansivu a23d93391b - Fix scrollbar inside list and outer scroll.
Thanks to andresmanelli ! Closes #1485
2018-03-01 01:02:09 +02:00
Andrés Manelli a033c35a34 Fix scrollbar inside list and outer scroll 2018-02-28 15:48:36 -03:00
Lauri Ojansivu 91bab1c274 Merge branch 'devel' 2018-02-28 16:44:58 +02:00
Lauri Ojansivu 48cd551a69 Merge remote-tracking branch 'upstream/devel' into devel 2018-02-28 16:36:46 +02:00
Lauri Ojansivu daf1a67dc2 Merge branch 'devel' 2018-02-28 16:35:56 +02:00
Andrés Manelli 8d2839f0c3 Fix order lists in lists view 2018-02-28 11:24:39 -03:00
Lauri Ojansivu 284fac043b - Allow swimlanes reordering
- Avoid swimlane title overlap

Thanks to andresmanelli !
Related #955. Closes #1487
2018-02-28 10:30:05 +02:00
Lauri Ojansivu bd239351fd Update translations. 2018-02-28 09:07:42 +02:00
Andrés Manelli 37c94622e4 Allow swimlanes reordering 2018-02-27 20:11:43 -03:00
Andrés Manelli c4fa9010f3 Avoid swimlane title overlap 2018-02-27 13:51:47 -03:00
Lauri Ojansivu e44c46bcd2 Merge branch 'devel' 2018-02-27 08:43:24 +02:00
Lauri Ojansivu 843381a36c Merge pull request #1510 from GhassenRjab/feature/fix-lint-warnings
Fix lint warnings
2018-02-27 08:41:35 +02:00
Ghassen Rjab 59ba2111e8 Fix lint warnings 2018-02-27 02:57:58 +01:00
Lauri Ojansivu 1efa66b58c Merge branch 'GhassenRjab-feature/fix-lint' into devel 2018-02-26 16:11:03 +02:00
Lauri Ojansivu dc8c9053c2 - Fix lint errors related to sandstorm
- Add Swimlanes to globals
- Fix lint errors related to trello creator
- Fix lint errors related to language names

Thanks to GhassenRjab !
2018-02-26 16:10:18 +02:00
Ghassen Rjab 0a16147470 Fix lint errors related to sandstorm 2018-02-26 03:19:59 +01:00
Ghassen Rjab 373e9782dc Add Swimlanes to globals 2018-02-26 03:19:27 +01:00
Ghassen Rjab 951a0db380 Fix lint errors related to trello creator 2018-02-26 03:18:26 +01:00
Ghassen Rjab c0d33d97f2 Fix lint errors related to language names 2018-02-26 03:17:56 +01:00
Lauri Ojansivu 57cf86a79f Merge branch 'devel' 2018-02-23 21:01:44 +02:00
Lauri Ojansivu 5bdb392258 v0.77 2018-02-23 21:00:09 +02:00
Lauri Ojansivu a48630ffcf Merge branch 'GhassenRjab-feature/search' into devel 2018-02-23 20:40:48 +02:00
Lauri Ojansivu fe1941008c Update translations. 2018-02-23 20:36:46 +02:00
Lauri Ojansivu 190aa36a51 Add Bulgarian language. 2018-02-23 19:42:13 +02:00
Lauri Ojansivu 468f4de0cf Search from card titles and descriptions on this board.
Thanks to GhassenRjab ! Closes #552
2018-02-23 19:17:52 +02:00
Lauri Ojansivu 93215be2cf Better descriptions about search. 2018-02-23 19:08:21 +02:00
Ghassen Rjab ab2884cae0 Fix lint error related to this feature 2018-02-23 01:38:12 +01:00
Ghassen Rjab 5f374b2fd2 Open search sidebar from an opened board 2018-02-23 01:10:21 +01:00
Ghassen Rjab 636e1657f6 Add search sidebar 2018-02-23 01:09:59 +01:00
Ghassen Rjab 2001c01b4d Add search cards helper to boards model 2018-02-23 01:09:25 +01:00
Lauri Ojansivu a9166d877f Snap specific updates:
- Service life cycle improvements
- Wekan help text changes and tweaks

https://github.com/wekan/wekan/pull/1495

Thanks to kubiko !
2018-02-23 00:27:55 +02:00
Lauri Ojansivu 435501fb8e Merge pull request #1500 from kubiko/devel
service life cycle improvements
2018-02-22 21:50:41 +02:00
Ondrej Kubik fd47e10e52 Tuning services life cycle
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-22 13:14:03 +00:00
Ondrej Kubik e3bd1c4d23 Adding mongodb service control to configure hook
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-22 11:48:33 +00:00
Ondrej Kubik f7b72a1a80 Fixing typo and improving help text
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-22 11:48:33 +00:00
Lauri Ojansivu 31f25bcddb Merge branch 'stefano-pogliani-card-shadow' into devel 2018-02-22 02:24:43 +02:00
Lauri Ojansivu 1ec5e90706 Fix card shadow to cover the full page.
Thanks to stefano-pogliani !
2018-02-22 02:23:34 +02:00
Lauri Ojansivu 20d6ea85d4 Merge branch 'card-shadow' of https://github.com/stefano-pogliani/wekan into stefano-pogliani-card-shadow 2018-02-22 02:19:20 +02:00
Lauri Ojansivu 7498dba32c Merge branch 'kubiko-devel' into devel 2018-02-22 02:17:52 +02:00
Lauri Ojansivu d374cd2f81 Snap updates:
- cleanup of snap helper scripts
- cleanup and snapctl settings handling
- fix for snap store auto review refusal
- adding support for automatic restart of services when setting(s) are changed.
  No need to call systemctl restart anymore.....
- fixing snap set functionality
- adding optional caddy service support ( by default caddy service is disabled),
  it can be enabled by calling: snap set wekan caddy-enabled=true

Thanks to kubiko !

Closes wekan/wekan-snap#25, closes wekan/wekan-snap#12,
closes wekan/wekan-snap#29, closes wekan/wekan-snap#33
2018-02-22 02:09:05 +02:00
Stefano Pogliani ffbd3ccc2a Fix card shadow to cover the full page. 2018-02-21 22:54:15 +00:00
Ondrej Kubik ad1a181f6d Fixing wrong port number shown in wekan.help
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:26 +00:00
Ondrej Kubik fcd83ea7bd Fixing automatic review fail for snap store upload
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:25 +00:00
Ondrej Kubik 07fc296762 Cleaning snapctl usage
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:25 +00:00
Ondrej Kubik 62fca18fea Updating gitignore
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:25 +00:00
Ondrej Kubik af82a80b2b Using upstream caddy instead of compiling from source
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:25 +00:00
Ondrej Kubik 9966c19f94 Fixing wrong caddy file path
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:24 +00:00
Ondrej Kubik ff320f7b3a enabling verbose logging from configure hook
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:24 +00:00
Ondrej Kubik 9c9694bcd1 Fixing snapctl start/stop to control service lifecycle
Adding disable and enable options for snapctl start/stop

Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:24 +00:00
Ondrej Kubik fcd7097aba Renaming caddy service for simplicity
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:24 +00:00
Ondrej Kubik 19089e8930 rewording helper script output
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:23 +00:00
Ondrej Kubik f7920da0cf fixing go build error because of go version used on build server
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:23 +00:00
Ondrej Kubik d7ea73ff82 adding uspport for snapctl restart
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:23 +00:00
Ondrej Kubik e077c85d00 Adding caddy support
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:23 +00:00
Ondrej Kubik 3665a9131c splitting hooks and using snapctl instead of local settings file
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:23 +00:00
Ondrej Kubik f7fe44fcdf removing unused variables
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:23 +00:00
Ondrej Kubik a533caa944 rearranging helper scripts in snap-src
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-21 22:29:23 +00:00
Lauri Ojansivu 1ef663531b Merge branch 'devel' 2018-02-21 21:05:43 +02:00
Lauri Ojansivu 26f66f3cf0 v0.76 2018-02-21 21:03:29 +02:00
Lauri Ojansivu 2e449e9e78 Update translations. 2018-02-21 20:49:33 +02:00
Lauri Ojansivu e30f6515c6 Disabled Import temporarily on Sandstorm because of data loss bug.
Thanks to xet7 !
2018-02-21 20:20:19 +02:00
Lauri Ojansivu 11e9811f82 Added path to capnp.js to make Wekan work on Sandstorm. 2018-02-21 20:15:40 +02:00
Lauri Ojansivu df5be82840 Update translations. 2018-02-20 15:09:34 +02:00
Lauri Ojansivu 599c83e0da Persian (Iran) => Persian 2018-02-20 14:43:04 +02:00
Lauri Ojansivu c0dbb79ac9 Merge branch 'couscous3-patch-1' into devel 2018-02-20 14:22:38 +02:00
Lauri Ojansivu 0375c551f3 Add swimlaneId to API. Thanks to couscous3 ! 2018-02-20 14:21:34 +02:00
couscous3 ee0f42eeb1 add swimlaneId to POST /api/boards/:boardId/lists/:listId/cards route 2018-02-19 14:55:56 +01:00
Lauri Ojansivu becdcbd5a7 Merge branch 'devel' 2018-02-16 00:23:35 +02:00
Lauri Ojansivu 7f4b382d2f Merge branch 'erikturk-copyMany' into devel
v0.75
2018-02-16 00:08:29 +02:00
Lauri Ojansivu 96d81768bc v0.75 2018-02-16 00:06:00 +02:00
Lauri Ojansivu cd012954e9 Adding Finnish changelog to Sandstorm. 2018-02-15 23:47:55 +02:00
Lauri Ojansivu 3b202c284a Update translations. 2018-02-15 23:41:04 +02:00
Lauri Ojansivu 8da1dd524d Merge branch 'copyMany' of https://github.com/erikturk/wekan into erikturk-copyMany 2018-02-15 22:40:59 +02:00
Erik Turk cfaeb43f1f changed variable names 2018-02-15 15:26:19 -05:00
Erik Turk 25e0c38ad8 change copyMany to copyChecklistToManyCards for instructions and title 2018-02-15 11:55:15 -05:00
Erik Turk 756fbd0f4c i18n fixes 2018-02-14 15:18:54 -05:00
Lauri Ojansivu d3bdc8edbc Merge branch 'devel' 2018-02-13 00:19:15 +02:00
Lauri Ojansivu 55a53e2655 Add note about Unicode Emojis. 2018-02-13 00:17:57 +02:00
Lauri Ojansivu ffc825e348 Merge branch 'devel' 2018-02-13 00:07:44 +02:00
Lauri Ojansivu 29461cb110 v0.74 2018-02-13 00:06:20 +02:00
Lauri Ojansivu a30f61d72f Remove Emoji support, so MAC addresses etc show correctly.
Thanks to xet7 ! Closes #1248, closes #323
2018-02-12 23:58:09 +02:00
Lauri Ojansivu 056843d66c Remove Emoji support, so MAC addresses etc show correctly.
Thanks to xet7 ! Closes #1248, closes #323
2018-02-12 23:52:22 +02:00
Lauri Ojansivu 69e4ad48bf Update translations. 2018-02-12 22:40:08 +02:00
Lauri Ojansivu 3588f4324c License year to 2018 2018-02-12 21:08:11 +02:00
Lauri Ojansivu 71decc370d Update screenshot. 2018-02-12 20:52:11 +02:00
Lauri Ojansivu 3171af613a Add Quay. Comment out Travis. 2018-02-12 20:49:08 +02:00
Erik Turk 11b8e12ede spaces/tabs okay - no 'git add i18n/en-GB.i18n.json' 2018-02-08 13:11:20 -05:00
Erik Turk 69aeee536d Merge branch 'devel' into copyMany 2018-02-08 13:04:43 -05:00
Erik Turk ab6a7c2dd6 Merge branch 'devel' of https://github.com/wekan/wekan into devel 2018-02-08 13:03:37 -05:00
Erik Turk 0a5af2b719 more spacing/tabs fixes 2018-02-08 10:32:09 -05:00
Erik Turk ecd77c8704 fixed spacing & indentation - changed var to const 2018-02-08 10:13:54 -05:00
Erik Turk c5019e620a remove console.log statements 2018-02-08 08:14:33 -05:00
Erik Turk 257ed56db3 finish adding[4~ copyMany 2018-02-08 08:13:31 -05:00
Lauri Ojansivu 9db64a95b6 Merge branch 'devel' 2018-02-08 13:46:22 +02:00
Lauri Ojansivu edc2459ff8 v0.73 2018-02-08 13:45:09 +02:00
Lauri Ojansivu 36a2aa355e Merge branch 'kubiko-devel-fix' into devel
Fix snap store rejection. Thanks to kubiko !
Closes wekan/wekan-snap#20,
closes wekan/wekan-snap#28,
closes wekan/wekan-snap#27,
closes wekan/wekan-snap#24
2018-02-08 13:43:01 +02:00
Lauri Ojansivu cea8101574 Fix snap store rejection. Thanks to kubiko !
Closes wekan/wekan-snap#20,
closes wekan/wekan-snap#27,
closes wekan/wekan-snap#24
2018-02-08 13:35:40 +02:00
Ondrej Kubik 3cb356eb1d Fixing snap store rejection
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-02-08 11:03:58 +00:00
Lauri Ojansivu c5a707a7f5 Merge branch 'devel' 2018-02-07 15:37:53 +02:00
Lauri Ojansivu b3d3158863 v0.72 2018-02-07 15:37:02 +02:00
Lauri Ojansivu f795edc640 Fix import Trello board without swimlanes. Fix swimlane move parameters.
Thanks to andresmanelli ! Closes #1442
2018-02-07 15:33:29 +02:00
Lauri Ojansivu c1ddaaa475 Merge remote-tracking branch 'upstream/devel' into devel 2018-02-07 15:24:22 +02:00
Lauri Ojansivu 2dc71e97a7 Merge branch 'ViViDboarder-fix-card-sorting' into devel 2018-02-07 15:23:33 +02:00
Lauri Ojansivu 92122f0fa2 Fix card sorting. Thanks to ViViDboarder ! Closes #1461 2018-02-07 15:21:02 +02:00
Lauri Ojansivu ce1fd00517 Update translations. 2018-02-07 15:17:40 +02:00
Andrés Manelli 5871a478e1 Fix import Trello board without swimlanes 2018-02-07 01:47:18 -03:00
Andrés Manelli fcebb2a537 Fix move parameters 2018-02-07 01:24:15 -03:00
ViViDboarder b267015d8c Fixing cards query to apply sort
Issue #1461
2018-02-06 19:35:01 -08:00
Erik Turk 842c8b83d2 missing ) 2018-02-05 15:03:21 -05:00
Erik Turk 9705118ca2 add titleList.split to copyManyCard 2018-02-05 14:47:37 -05:00
Erik Turk 326b4c5350 added copyManyCard 2018-02-05 13:27:47 -05:00
Erik Turk f3ed6ee6f6 added copyManyCardPopup to i18n 2018-02-05 13:26:26 -05:00
Erik Turk 60c6f4f5af added Popup 2018-02-05 11:11:41 -05:00
Erik Turk 3c1cd85f6f added copyManyCard 2018-02-05 11:02:01 -05:00
Erik Turk bb9d5cb694 Revert "added copyManyCard"
This reverts commit c3fe70e094.
2018-02-05 10:58:36 -05:00
Erik Turk 669c2f3861 Revert "Revert "v0.71""
This reverts commit 6a93a93d0b.
2018-02-05 10:58:13 -05:00
Erik Turk 6a93a93d0b Revert "v0.71"
This reverts commit 79ae90825e.
2018-02-05 10:57:08 -05:00
Erik Turk c3fe70e094 added copyManyCard 2018-02-05 10:49:37 -05:00
Lauri Ojansivu b2d3138220 Merge branch 'devel' 2018-02-03 12:57:15 +02:00
Lauri Ojansivu 79ae90825e v0.71 2018-02-03 12:56:09 +02:00
Lauri Ojansivu b0f0bf4a24 Fix Welcome board is not editable: Added default swimlane to Welcome board.
Fix Import Wekan board with swimlanes.
Thanks to andresmanelli ! Closes #1457, closes #1445
2018-02-03 12:49:45 +02:00
Lauri Ojansivu 9dba6ff6fd Update translations. 2018-02-03 12:11:58 +02:00
Andrés Manelli d77afe3e2e Add trailing comma 2018-02-02 23:09:42 -03:00
Andrés Manelli ec0a8449ba Fix import wekan board with swimlanes 2018-02-02 23:04:54 -03:00
Andrés Manelli 9df3e3d26b Add default swimlane to welkome board 2018-02-02 21:52:00 -03:00
Lauri Ojansivu 405514fd6b Merge branch 'devel' 2018-02-02 14:37:19 +02:00
Lauri Ojansivu 73401a5d74 v0.70 2018-02-02 14:36:07 +02:00
Lauri Ojansivu 653f2b1ac8 Update translations. 2018-02-02 14:28:42 +02:00
Lauri Ojansivu 2cd4caa76a Add missing text to changelog. 2018-02-02 14:21:48 +02:00
Lauri Ojansivu 000b267eaf Update changelog. 2018-02-02 14:06:40 +02:00
Andrés Manelli 5953fb8a44 Add popup menu and archive action 2018-02-01 14:29:49 -03:00
Andrés Manelli 3414cb84ad Add ability to edit swimlane name 2018-02-01 14:24:21 -03:00
Andrés Manelli 42bc905c16 Remove unused hack 2018-02-01 14:24:21 -03:00
Lauri Ojansivu efa2d99bf4 Merge branch 'devel' 2018-02-01 16:49:06 +02:00
Lauri Ojansivu d94f11c778 v0.69 2018-02-01 16:47:14 +02:00
Lauri Ojansivu fcd5fda751 Merge branch 'd-Rickyy-b-patch-1' into devel 2018-02-01 16:25:27 +02:00
Lauri Ojansivu 66bfb1cdc8 Fix typo. 2018-02-01 16:24:57 +02:00
Lauri Ojansivu 69dfa1033f Fix typo in issue template. Thanks to d-Rickyy-b ! 2018-02-01 16:23:51 +02:00
Lauri Ojansivu 94b8bba324 Merge branch 'patch-1' of https://github.com/d-Rickyy-b/wekan into d-Rickyy-b-patch-1 2018-02-01 16:21:41 +02:00
Lauri Ojansivu 5dd8c9829d Update translations: Hebrew. Related #884 2018-02-01 16:20:29 +02:00
Lauri Ojansivu e0e6f06a83 Fix swimlanes card details and drag bugs. Thanks to andresmanelli ! 2018-02-01 15:59:22 +02:00
Rico 8322500e47 Fix typo in issue template 2018-01-31 23:21:07 +01:00
Andrés Manelli ff9ca755f3 Fix details view in lists only mode 2018-01-31 15:46:59 -03:00
Andrés Manelli d3c110cd8f Workaround to avoid drag bug 2018-01-31 14:13:14 -03:00
Andrés Manelli f6fb05d3f4 Fix card details bug 2018-01-31 14:13:14 -03:00
Lauri Ojansivu 8102ee5b4f Add release date to changelog. 2018-01-30 15:18:27 +02:00
Lauri Ojansivu 8d816cdb0f Merge branch 'devel' 2018-01-30 15:05:18 +02:00
Lauri Ojansivu 3c60df4fcd Update translations. 2018-01-30 15:04:55 +02:00
Lauri Ojansivu 918bd0befd Merge branch 'devel' 2018-01-30 14:17:03 +02:00
Lauri Ojansivu 23cba8a43f v0.68 2018-01-29 12:10:31 +02:00
Lauri Ojansivu 65c081acc0 Fix: Trello board import fails because of missing "Swimlane id".
Thanks to xet7 ! Closes #1442
2018-01-29 12:07:42 +02:00
Lauri Ojansivu bf2a08555b Merge branch 'devel' 2018-01-28 21:22:43 +02:00
Lauri Ojansivu 735907977d v0.67 2018-01-28 21:21:07 +02:00
Lauri Ojansivu 9d7ff75d3f Fix Igbo language at menu. 2018-01-28 21:01:22 +02:00
Lauri Ojansivu 1ef5b8efe1 Remove extra file. 2018-01-28 19:19:49 +02:00
Lauri Ojansivu f3d6aa9e09 Update translations. 2018-01-28 19:15:51 +02:00
Lauri Ojansivu cf97123512 Merge branch 'devel' 2018-01-28 18:27:57 +02:00
Lauri Ojansivu fd430d3405 v0.66 2018-01-28 18:27:00 +02:00
Lauri Ojansivu 0ce4171d33 Merge branch 'soohwa-fix-dockerfile-rm' into devel
Fix Dockerfile for Debian. Thanks to soohwa !
2018-01-28 11:22:00 +02:00
Lauri Ojansivu 7df5679c0c Fix Dockerfile for Debian. Thanks to soohwa ! 2018-01-28 11:21:21 +02:00
soohwa 1616dd1b74 Fix Dockerfile 2018-01-28 10:04:10 +01:00
Lauri Ojansivu 6aca70f0d1 Merge branch 'devel' 2018-01-28 00:02:35 +02:00
Lauri Ojansivu 081c1fdf83 v0.65 2018-01-28 00:01:20 +02:00
Lauri Ojansivu 9444624f19 Rename Igbo langage code name to get it working. 2018-01-27 23:25:50 +02:00
Lauri Ojansivu abd1d322f2 Try to fix Dockerfile. 2018-01-27 21:35:40 +02:00
Lauri Ojansivu d19083bb89 Update translations. 2018-01-27 18:28:31 +02:00
Lauri Ojansivu 7ddaa12520 Update translations. 2018-01-25 09:07:43 +02:00
Lauri Ojansivu 3b8c76a32e Update versions of Node and NPM at Travis. 2018-01-25 09:00:57 +02:00
Lauri Ojansivu 7f4401f3a2 Fix lint errors. Update changelog. 2018-01-25 08:22:11 +02:00
Lauri Ojansivu 188341cf50 Merge remote-tracking branch 'upstream/devel' into devel 2018-01-25 07:31:42 +02:00
Andrés Manelli af119ff7c0 Add card on first swimlane found 2018-01-22 23:43:47 -03:00
Andrés Manelli 7b04f14e3c Allow toogle of lists and swimlanes views 2018-01-22 23:35:23 -03:00
Andrés Manelli a14f4ffee2 Add view boards field to change between views 2018-01-22 16:54:19 -03:00
Andrés Manelli 2d7d9b5d9f Fix lint errors 2018-01-22 15:31:33 -03:00
Andrés Manelli ecb8c88233 Add migration for swimlane addition 2018-01-22 15:10:26 -03:00
Lauri Ojansivu 91e738bd32 Go back using debian buster-slim Docker base image 2018-01-22 18:46:53 +02:00
Lauri Ojansivu ec0bbe9e14 Try Debian experimental with Docker, does it work or fix bugs 2018-01-22 17:54:19 +02:00
Lauri Ojansivu 6e25ef73b0 Use Debian package version of gosu 2018-01-22 17:22:16 +02:00
Lauri Ojansivu d2ce41694f Dockerfile apt => apt-get 2018-01-22 17:17:28 +02:00
Lauri Ojansivu b2c9d47b0f Removed dist-upgrade from Dockerfile, trying to fix docker build. 2018-01-22 16:59:36 +02:00
Lauri Ojansivu 52aa22f36a Try Debian 10 buster with Docker 2018-01-22 16:53:39 +02:00
Lauri Ojansivu bc6217854a Try to fix snap external symlink, that prevents uploading of snap 2018-01-22 16:41:01 +02:00
Lauri Ojansivu d79bb1a81c Try to fix Docker and Snap: add apt-utils, remove sed bson. 2018-01-22 14:37:34 +02:00
Lauri Ojansivu fb220fe918 v0.64 2018-01-22 00:43:41 +02:00
Lauri Ojansivu 89ccef84be Sandstorm fix for Meteor 1.6.0.1 2018-01-22 00:20:53 +02:00
Lauri Ojansivu 6622dbb56b Meteor 1.6.0.1, Node 8.9.3, NPM 5.5.1, fibers 2.0.0 2018-01-22 00:18:59 +02:00
Lauri Ojansivu 7963171058 Update translations. 2018-01-21 18:24:16 +02:00
Andrés Manelli ee2a43dd5b Add siwmlane button. Allow card drop between swimlanes 2018-01-19 16:00:02 -03:00
Andrés Manelli 690a5b9703 First swimlane draft, no functionality 2018-01-19 12:22:03 -03:00
Lauri Ojansivu f33be3e243 Add Mongolian and Portuguese. 2018-01-16 01:54:16 +02:00
Lauri Ojansivu 4eaf92d17e Update translations. Add Mongolian and Portuguese. 2018-01-16 01:53:11 +02:00
Lauri Ojansivu 1baa4b2fa4 spenttime => spent time 2018-01-16 00:27:14 +02:00
Lauri Ojansivu 6210c00f95 Fix double slash bug on snap. Thanks to xet7 ! 2018-01-15 23:01:00 +02:00
Lauri Ojansivu 8b6a2eade3 Update translations. 2018-01-15 19:49:30 +02:00
Lauri Ojansivu f7ef629dba Merge branch 'dpoznyak-bugfix/#476-scroll-drag-lists' into devel
Fix for dragging into scrolled-down list. Thanks to dpoznyak !
Partially addresses #476
2018-01-08 18:41:27 +02:00
Lauri Ojansivu 0f0a93cabf Fix for dragging into scrolled-down list. Thanks to dpoznyak !
Partially addresses #476
2018-01-08 18:40:03 +02:00
DPLV\dpoz e5193870fc working fix for wekan/wekan#476 in lists
working fix for wekan/wekan#476 in lists
2018-01-08 23:26:09 +08:00
Lauri Ojansivu 428465d361 Try to fix double slash on snap #962 2018-01-06 20:29:16 +02:00
Lauri Ojansivu 37b2771a9d Update translations. 2018-01-06 16:29:44 +02:00
Lauri Ojansivu ccb14beb83 Merge branch 'mmarschall-different-icons-for-start-and-due-date' into devel
Different icons for start and due date. Thanks to mmarschall !
Closes #1414
2018-01-06 15:34:31 +02:00
Lauri Ojansivu 17bb464107 Different icons for start and due date. Thanks to mmarschall !
Closes #1414
2018-01-06 15:32:18 +02:00
Matthias Marschall cd4062c9f1 different icons for start and due date 2018-01-04 18:34:39 +01:00
Lauri Ojansivu 22158b4941 Update translations. 2017-12-28 22:35:21 +02:00
Lauri Ojansivu 963e319345 Merge branch 'devel' 2017-12-20 15:20:31 +02:00
Lauri Ojansivu bdf252b6e2 v0.63 2017-12-20 15:18:45 +02:00
Lauri Ojansivu 2347fbae17 Update translations. 2017-12-20 14:45:31 +02:00
Lauri Ojansivu 9e3e63f494 Merge branch 'thuanpq-auto-setting-card-cover-with-drag-drop' into devel 2017-12-20 14:15:38 +02:00
Lauri Ojansivu ba2d9b89dc Auto update card cover with new image uploaded via drag&drop.
Thanks to thuanpq !
2017-12-20 14:14:46 +02:00
Lauri Ojansivu 62d000cd67 Merge branch 'auto-setting-card-cover-with-drag-drop' of https://github.com/thuanpq/wekan into thuanpq-auto-setting-card-cover-with-drag-drop 2017-12-20 14:12:52 +02:00
Lauri Ojansivu 0c15048bdd Use Node 4.6.7. Add paxctl fix to snap. 2017-12-20 14:11:41 +02:00
Lauri Ojansivu b21021501c Merge branch 'devel' 2017-12-19 21:38:34 +02:00
Lauri Ojansivu 74877fd10d Try to fix snap build. 2017-12-19 21:38:20 +02:00
Thuan Pham Quoc c3e67510c8 Update - auto update card cover with new image uploaded via drag&drop 2017-12-18 22:40:01 +07:00
Lauri Ojansivu 638e2d87eb Merge branch 'devel' 2017-12-13 14:28:54 +02:00
Lauri Ojansivu 4fad48e7ac Revert snap MongoDB from v3.2.18 back to v3.2.16 because of SSL cert error. Trying to fix snap build. 2017-12-13 14:28:32 +02:00
Lauri Ojansivu d94393c764 Merge branch 'devel' 2017-12-13 13:49:36 +02:00
Lauri Ojansivu 0f567a8e9c Trying to fix snap build. 2017-12-13 13:49:07 +02:00
Lauri Ojansivu faa95a0f8c Merge branch 'devel' 2017-12-12 15:37:16 +02:00
Lauri Ojansivu 0d976aaf0f v0.62 2017-12-12 15:36:02 +02:00
Lauri Ojansivu 047e22571e Merge branch 'devel' 2017-12-12 14:32:37 +02:00
Lauri Ojansivu f115e33f66 v0.61 2017-12-12 14:30:02 +02:00
Lauri Ojansivu 6e8a84eaa7 Restore Meteot 1.4 version of sandstorm.js 2017-12-12 14:18:34 +02:00
Lauri Ojansivu eb9d417a27 Add mixmax:smart-disconnect to lower CPU usage when
browser tab is not selected. Thanks mfshiu !
Related wekan/wekan-mongodb#2
2017-12-12 14:06:14 +02:00
Lauri Ojansivu 8dd6255ebf Revert back to Meteor v1.4, Node v4.8.6 and MongoDB v3.2.18 2017-12-12 13:58:46 +02:00
Lauri Ojansivu 7a943f99e3 Add mixmax:smart-disconnect to lower CPU usage when
browser tab is not selected. Thanks mfshiu !
Related wekan/wekan-mongodb#2
2017-12-12 13:51:45 +02:00
Lauri Ojansivu 415fafe7f6 Add mixmax:smart-disconnect to lower CPU usage when
browser tab is not selected. Thanks mfshiu !
Related wekan/wekan-mongodb#2
2017-12-12 13:50:19 +02:00
Lauri Ojansivu 462b8023eb Update translations. 2017-12-11 23:38:49 +02:00
Lauri Ojansivu 8f2bebeeef Merge branch 'thuanpq-make-small-add-card-at-list-top-easier-to-see' into devel 2017-12-11 22:54:58 +02:00
Lauri Ojansivu e08f9686d8 Make it easier to see the Add Card button at top of list.
Thanks to thuanpq !
2017-12-11 22:54:10 +02:00
Lauri Ojansivu bd127af916 Merge branch 'make-small-add-card-at-list-top-easier-to-see' of https://github.com/thuanpq/wekan into thuanpq-make-small-add-card-at-list-top-easier-to-see 2017-12-11 22:52:53 +02:00
Lauri Ojansivu d235a00b11 Merge branch 'thuanpq-keep-attachment-section-for-uploading-attachment-easier' into devel 2017-12-11 22:51:50 +02:00
Lauri Ojansivu 8dc9856ed8 Always display attachment section for uploading file quickly.
Thanks to thuanpq !
2017-12-11 22:51:16 +02:00
Lauri Ojansivu ca1da1adc2 Merge branch 'keep-attachment-section-for-uploading-attachment-easier' of https://github.com/thuanpq/wekan into thuanpq-keep-attachment-section-for-uploading-attachment-easier 2017-12-11 22:49:09 +02:00
Lauri Ojansivu 4c0b262c7b Merge branch 'thuanpq-fixed-bug-on-long-card-history-log' into devel 2017-12-11 22:47:45 +02:00
Lauri Ojansivu 4ac9048d80 Fixed bug on long url of attachment in card activity log.
Thanks to thuanpq !
2017-12-11 22:46:59 +02:00
Lauri Ojansivu fb83a5164d Merge branch 'fixed-bug-on-long-card-history-log' of https://github.com/thuanpq/wekan into thuanpq-fixed-bug-on-long-card-history-log 2017-12-11 22:45:56 +02:00
Lauri Ojansivu a05292bd91 Update Travis versions of Node and NPM. 2017-12-11 22:44:34 +02:00
Lauri Ojansivu f4e0d92296 Merge branch 'thuanpq-fix-bug-on-header-quick-access' into devel 2017-12-11 22:13:28 +02:00
Lauri Ojansivu 9e0142b885 Boards subscription should be placed at header for all other component
can be used. Thanks to thuanpq !
2017-12-11 22:12:49 +02:00
Lauri Ojansivu 5f30c6ecca Merge branch 'fix-bug-on-header-quick-access' of https://github.com/thuanpq/wekan into thuanpq-fix-bug-on-header-quick-access 2017-12-11 22:11:31 +02:00
Lauri Ojansivu 7214e4bb2f Merge branch 'thuanpq-auto-update-card-cover-with-latest-uploaded-image' into devel 2017-12-11 22:08:17 +02:00
Lauri Ojansivu fd7a140429 Auto update card cover with latest uploaded image attachment.
Thanks to thuanpq !
2017-12-11 22:07:47 +02:00
Lauri Ojansivu 07954c0f6d Merge branch 'auto-update-card-cover-with-latest-uploaded-image' of https://github.com/thuanpq/wekan into thuanpq-auto-update-card-cover-with-latest-uploaded-image 2017-12-11 22:06:14 +02:00
Lauri Ojansivu a282a38ecd Merge branch 'thuanpq-dont-open-swipebox-overlay-while-downloading-update-cover' into devel 2017-12-11 22:05:07 +02:00
Lauri Ojansivu 1f830cc5e3 Don't open swipebox on update card cover / download file / delete file.
Thanks to thuanpq !
2017-12-11 22:04:24 +02:00
Lauri Ojansivu 96b560eb00 Merge branch 'dont-open-swipebox-overlay-while-downloading-update-cover' of https://github.com/thuanpq/wekan into thuanpq-dont-open-swipebox-overlay-while-downloading-update-cover 2017-12-11 22:00:38 +02:00
Lauri Ojansivu 6ce5ea9ca5 Merge branch 'thuanpq-fix-bug-on-sidebar-member-avatar-not-shown' into devel 2017-12-11 21:51:39 +02:00
Lauri Ojansivu 9ed730284d Fixed bug on not able to see member avatar on sidebar activity.
Thanks to thuanpq !
2017-12-11 21:50:21 +02:00
Lauri Ojansivu 10427a9beb Merge branch 'fix-bug-on-sidebar-member-avatar-not-shown' of https://github.com/thuanpq/wekan into thuanpq-fix-bug-on-sidebar-member-avatar-not-shown 2017-12-11 21:47:15 +02:00
Lauri Ojansivu ddcdcb6e08 Use Node v6.12.2 and Meteor v1.6.0 2017-12-11 21:41:52 +02:00
Lauri Ojansivu 7afea1809f Revert Meteor 1.6.1 upgrade because it broke Wekan. So now using Meteor 1.6. 2017-12-11 21:13:30 +02:00
Lauri Ojansivu 1790b99fe0 Version updates. 2017-12-11 18:15:02 +02:00
Thuan Pham Quoc d5d661b131 Fixed - make it easier to see the Adding Card btn at top of list 2017-12-10 23:03:13 +07:00
Thuan Pham Quoc 8a28e988e9 Always display attachment section for uploading file quickly 2017-12-10 22:53:45 +07:00
Thuan Pham Quoc d1d8e0b935 Fixed - bug on long url of attachment in card activity log 2017-12-09 00:41:29 +07:00
Thuan Pham Quoc 84d60b5908 Added - auto update card cover with latest uploaded image attachment of card 2017-12-09 00:36:23 +07:00
Thuan Pham Quoc 245d262705 Fixed - don't open swipebox on update card cover - download file - delete file 2017-12-08 23:57:53 +07:00
Thuan Pham Quoc c686cadfef Fixed - boards subscription should be placed at header for all other component can be used 2017-12-06 15:39:54 +07:00
Thuan Pham Quoc 26405c011f Fixed - bug on not able to see member avatar on sidebar activity 2017-12-06 15:24:53 +07:00
Lauri Ojansivu ba9e163dd5 Remove not needed packages. Upgrade packages. Update Sandstorm capnp path.
Note: This version does not work on Sandstorm yet.
2017-12-03 18:50:22 +02:00
Lauri Ojansivu 7c403053e3 Fix lint errors. 2017-12-03 04:00:55 +02:00
Lauri Ojansivu c52233cacf Update Meteor 1.6, Node 6.12 and NPM versions to Dockerfile. 2017-12-03 02:56:56 +02:00
Lauri Ojansivu d6a5cb534d Try upgrading Wekan to Node v6.12 and Meteor 1.6, still using MongoDB 3.2.18.
Standalone Wekan seems to work, needs testing.
This does not fix crash bug of MongoDB 3.4.x.
This version does not yet work on Sandstorm.
2017-12-03 02:29:37 +02:00
Lauri Ojansivu e2f768c6a0 Update Node to 4.8.6 and MongoDB to 3.2.18 2017-12-02 23:10:59 +02:00
Lauri Ojansivu 4c5eda0ae5 Merge branch 'thuanpq-fix-bug-on-missing-admin-panel-menuoption' into devel
Fixed Bug on not being able to see Admin Panel if not having access to Board List.
Thanks to thuanpq !
2017-12-02 22:20:44 +02:00
Lauri Ojansivu 670cc99b8f Fixed Bug on not being able to see Admin Panel if not having access to Board List.
Thanks to thuanpq !
2017-12-02 22:19:19 +02:00
Lauri Ojansivu 847843e51d Merge branch 'fix-bug-on-missing-admin-panel-menuoption' of https://github.com/thuanpq/wekan into thuanpq-fix-bug-on-missing-admin-panel-menuoption 2017-12-02 22:07:56 +02:00
Lauri Ojansivu 9261371c51 Fix lint error. 2017-12-02 22:04:20 +02:00
Lauri Ojansivu 233554a3d6 Move global subscription to template subscription so that subscription
will stop when template is unused. It's very important for efficiency
espacially with large number of users. Thanks to mfshiu !
2017-12-02 22:00:42 +02:00
Lauri Ojansivu fa281e3f5f Update translations. Add Latvian language. 2017-12-02 21:41:09 +02:00
Lauri Ojansivu fcf7c02c69 Merge branch 'thuanpq-allow-changing-user-password-in-admin-panel' into devel
Change password of any user in Standalone Wekan Admin Panel. Thanks to thuanpq !
2017-12-02 21:02:21 +02:00
Lauri Ojansivu 3a391d5539 Change password of any user in Standalone Wekan Admin Panel. Thanks to thuanpq ! 2017-12-02 21:01:40 +02:00
Thuan Pham Quoc 22e369804b Allow admin to change user password in admin panel 2017-12-01 15:55:53 +07:00
Thuan Pham Quoc 3dc326db6a Move user-admin subsciption to header 2017-12-01 15:26:41 +07:00
Thuan Pham Quoc b3eab212ae Fixed - Missing trailing comma comma-dangle 2017-12-01 15:15:44 +07:00
Thuan Pham Quoc 6d9d183674 Fixed - bug on not able to see ADMIN PANEL if not access Board List 2017-12-01 15:04:35 +07:00
Lauri Ojansivu ed95542b67 Merge branch 'devel' 2017-11-29 14:19:49 +02:00
Lauri Ojansivu 54036fd7a3 v0.60 2017-11-29 14:18:51 +02:00
Lauri Ojansivu c72792e4ed Merge branch 'nztqa-conflict-resolution-458' into devel
Optimize for mobile web, show single list per page with navigate bar.
Thanks to floatinghotpot and nztqa ! Related #953
2017-11-29 12:11:02 +02:00
Lauri Ojansivu c3e2ee1db8 Optimize for mobile web, show single list per page with navigate bar.
Thanks to floatinghotpot and nztqa ! Related #953
2017-11-29 12:03:41 +02:00
Lauri Ojansivu 5d8462ca11 Merge branch 'conflict-resolution-458' of https://github.com/nztqa/wekan into nztqa-conflict-resolution-458 2017-11-29 11:29:43 +02:00
Lauri Ojansivu 7e4b42e9b3 Fix: Frequent Subscriptions problem that make Excessive CPU usage.
Thanks to mfshiu ! Closes #1096, Closes wekan/wekan-mongodb#2
2017-11-29 11:23:49 +02:00
Lauri Ojansivu c609096700 Add SMTP test email button to Admin Panel. Thanks to nztqa ! 2017-11-29 11:00:15 +02:00
Lauri Ojansivu 79fa5f89f3 Merge branch 'nztqa-improve-smtp-testing' into devel
Add SMTP test email button to Admin Panel. Thanks to nztqa !
2017-11-29 10:54:03 +02:00
Lauri Ojansivu f224934ae0 Update translations. 2017-11-29 10:53:08 +02:00
nztqa c31d7455f7 Optimize for mobile web, show single list per page with navigate bar 2017-11-29 17:06:33 +09:00
Lauri Ojansivu 596dd87862 Fix typo 2017-11-28 09:30:22 +02:00
Lauri Ojansivu c048ce89f1 Merge branch 'improve-smtp-testing' of https://github.com/nztqa/wekan into nztqa-improve-smtp-testing 2017-11-28 08:49:44 +02:00
nztqa 44559b52a6 Add smtp test email translations 2017-11-28 13:26:46 +09:00
Lauri Ojansivu 162b15c0cd Merge branch 'nztqa-issue-1349' into devel
Fix: User with comment only permissions can remove another user from a card.
Thanks to nztqa ! Closes #1349
2017-11-27 13:15:00 +02:00
Lauri Ojansivu 3756b7b0fc Fix: User with comment only permissions can remove another user from a card.
Thanks to nztqa ! Closes #1349
2017-11-27 13:12:59 +02:00
nztqa 332f12ce28 Add alert method 2017-11-27 19:24:06 +09:00
Lauri Ojansivu d31d5fd47a Merge branch 'issue-1349' of https://github.com/nztqa/wekan into nztqa-issue-1349 2017-11-27 11:37:18 +02:00
Lauri Ojansivu 83efd5b872 Merge branch 'martinlindhe-devel' into devel
Fix some typos in readne. Thanks to martinlindhe !
2017-11-27 11:32:34 +02:00
nztqa c2fd03e113 Fix permissions (isBoardMember to isNotCommentOnly) 2017-11-27 17:52:21 +09:00
nztqa dffe3d5ade Add test SMTP settings 2017-11-27 16:44:19 +09:00
Martin Lindhe d7cefc0042 fix some typos 2017-11-25 11:56:33 +01:00
Lauri Ojansivu 9c283112ed Merge branch 'devel' 2017-11-23 17:48:13 +02:00
Lauri Ojansivu 33b7622897 v0.59 2017-11-23 17:47:15 +02:00
Lauri Ojansivu eb8083097f Merge branch 'pierreozoux-fix-log' into devel 2017-11-23 17:45:03 +02:00
Lauri Ojansivu 80c0c80a6a Fix not working stdout logging by removing Winston logger. Thanks to pierreozoux ! 2017-11-23 17:44:22 +02:00
pierreozoux e28f3692ca Revert 00a357cd70 to fix logging 2017-11-23 16:31:18 +01:00
Lauri Ojansivu fbfe6590b7 Merge branch 'devel' 2017-11-23 12:12:31 +02:00
Lauri Ojansivu 6bcc1cfc62 v0.58 2017-11-23 12:11:35 +02:00
Lauri Ojansivu 990003ee0f Update translations. 2017-11-23 12:08:01 +02:00
Lauri Ojansivu 2824873511 Merge branch 'devel' 2017-11-23 11:46:47 +02:00
Lauri Ojansivu 60929fb200 v0.57 2017-11-23 11:45:44 +02:00
Lauri Ojansivu 45c78a05e2 Fix Winston logger. Thanks to pierreozoux ! 2017-11-23 11:40:03 +02:00
Lauri Ojansivu cf045e3c34 Merge branch 'pierreozoux-fix-logger' into devel
Fix logger. Thanks to pierreozoux !
2017-11-23 11:35:51 +02:00
Lauri Ojansivu 6575312e74 Merge branch 'fix-logger' of https://github.com/pierreozoux/wekan into pierreozoux-fix-logger
Conflicts:
	server/logger.js
2017-11-23 11:35:27 +02:00
pierreozoux ee22364354 Try to fix build 2017-11-23 10:30:56 +01:00
Lauri Ojansivu a64dbc4a9b Merge branch 'fix-logger' of https://github.com/pierreozoux/wekan into pierreozoux-fix-logger 2017-11-23 11:23:07 +02:00
pierreozoux ebff813f99 Try to fix build 2017-11-23 10:21:03 +01:00
Lauri Ojansivu 674d45a81c Add Gogs Integration as separate project. 2017-11-23 01:47:10 +02:00
pierreozoux b03c9b9879 Fix bug when LOGGER is enabled, but LOGGERS is empty. 2017-11-22 16:10:43 +01:00
pierreozoux 7f8f6bf3db Make logger enabled by default 2017-11-22 16:10:18 +01:00
pierreozoux 4ffe9438e0 Fix add logger bug
In case you want to have only the console, it will fail at the `Winston.add`
as it is already there.
2017-11-22 16:10:03 +01:00
Lauri Ojansivu fbf97d31a0 Maybe github does not like : at bullet point. 2017-11-21 13:28:22 +02:00
Lauri Ojansivu 0c5d6c2ade Try to fix markdown. Is there bug at GitHub? It did combine bullet points to same line. 2017-11-21 13:26:55 +02:00
Lauri Ojansivu 00737fa015 Try to fix markdown. 2017-11-21 13:24:42 +02:00
Lauri Ojansivu 0c9343ad88 Fix typo. 2017-11-21 13:22:49 +02:00
Lauri Ojansivu dc9ac5b58a Merge branch 'devel' 2017-11-21 12:42:08 +02:00
Lauri Ojansivu f31d007177 v0.56 2017-11-21 12:40:30 +02:00
Lauri Ojansivu 932a273ba0 Add bcrypt just to see if bson error goes away. 2017-11-21 12:39:26 +02:00
Lauri Ojansivu 9ea35b7188 Merge branch 'thuanpq-card-spent-time' into devel
Spent time/Overtime on card. Thanks to thuanpq ! Closes #1337
2017-11-21 11:31:04 +02:00
Lauri Ojansivu d76387aed2 Spent time/Overtime on card. Thanks to thuanpq ! Closes #1337 2017-11-21 11:30:18 +02:00
Lauri Ojansivu 77a4341621 Update translations. Added Greek language. 2017-11-21 11:25:59 +02:00
Lauri Ojansivu e162fe3c0f Merge branch 'card-spent-time' of https://github.com/thuanpq/wekan into thuanpq-card-spent-time 2017-11-21 10:03:02 +02:00
Lauri Ojansivu f3e7646cfa Merge branch 'couscous3-fix-title-editing-shift-key-firefox' into devel
Card details: fix title editing with shift key. Thanks to couscous3 !
2017-11-21 09:30:58 +02:00
Lauri Ojansivu 552fa32b87 Card details: fix title editing with shift key. Thanks to couscous3 ! 2017-11-21 09:30:31 +02:00
Lauri Ojansivu 8a4f5ed6e3 Merge branch 'fix-title-editing-shift-key-firefox' of https://github.com/couscous3/wekan into couscous3-fix-title-editing-shift-key-firefox 2017-11-21 09:28:37 +02:00
Lauri Ojansivu c8cef7551f Merge branch 'couscous3-remove-minicard-title-whitespace' into devel 2017-11-21 09:27:21 +02:00
Lauri Ojansivu 9c46c6c962 Remove erroneous minicard title whitespace. Thanks couscous3 ! 2017-11-21 09:26:50 +02:00
Lauri Ojansivu 01818a99b9 Merge branch 'remove-minicard-title-whitespace' of https://github.com/couscous3/wekan into couscous3-remove-minicard-title-whitespace 2017-11-21 09:24:44 +02:00
Lauri Ojansivu 70fb1c4650 Merge branch 'thuanpq-fix-board-list-long-desc' into devel
Fix: Board list with long-description boards not visible. Thanks thuanpq !
2017-11-21 09:22:41 +02:00
Lauri Ojansivu 5c743f12a1 Board list with long-description boards not visible. Thanks thuanpq ! 2017-11-21 09:22:23 +02:00
Lauri Ojansivu 5b9e8cce14 Merge branch 'fix-board-list-long-desc' of https://github.com/thuanpq/wekan into thuanpq-fix-board-list-long-desc 2017-11-21 09:19:06 +02:00
Lauri Ojansivu 06afa1ae35 Merge branch 'GhassenRjab-feature/copy-move-cards-x-boards' into devel
Copy/Move card to another board in Standalone Wekan.
Thanks to GhassenRjab and thuanpq ! Closes #797
2017-11-21 09:16:28 +02:00
Lauri Ojansivu a84db59898 Copy/Move card to another board in Standalone Wekan. Thanks to GhassenRjab and thuanpq ! Closes #797 2017-11-21 09:15:16 +02:00
Lauri Ojansivu 9441fb29c9 Fix Copy/Move cards. Thanks to thuanpq ! 2017-11-21 09:07:56 +02:00
couscous3 7dae37eeac card detail: fix title editing with shift key
in firefox there is no global `event` object, therefore we should use the `evt` argument from the event handler
2017-11-20 18:25:56 +01:00
couscous3 90fd3286a8 remove erroneous minicard title whitespace
introduced by the markdown viewer in commit #309c1d0 (the markdown viewer uses <p> tags which have a margin-bottom)
2017-11-20 18:07:37 +01:00
Thuan Pham Quoc 996fdc2bda Fixed issue on board list with long-desc boards 2017-11-20 23:28:46 +07:00
Thuan Pham Quoc 6dba4ccd4d Added red-green circle to board lists item for indicating board which has overtime logs or normal spent time log 2017-11-20 23:24:27 +07:00
Lauri Ojansivu b592e8ad14 Merge branch 'feature/copy-move-cards-x-boards' of https://github.com/GhassenRjab/wekan into GhassenRjab-feature/copy-move-cards-x-boards 2017-11-20 17:46:34 +02:00
Thuan Pham Quoc d38071457c Update spent time title to indicate Overtime or normal Spent time 2017-11-20 22:40:02 +07:00
Thuan Pham Quoc eec3c301bc Add card spent time to log time what can be overtime or not (will support filtering in future) 2017-11-20 22:26:31 +07:00
Lauri Ojansivu ee69eb03d4 Merge branch 'devel'
Conflicts:
	sandstorm-pkgdef.capnp
2017-11-19 19:03:36 +02:00
Lauri Ojansivu dfd0b21947 v0.55 2017-11-19 19:01:42 +02:00
Lauri Ojansivu 6d93e9ffb0 Add link to commit by xet7 to CHANGELOG invitation code fix. 2017-11-19 18:05:41 +02:00
Lauri Ojansivu 99be745f02 Fix: Invitation /sign-up page did not show input for invitation code. Thanks to xet7 ! 2017-11-19 18:04:02 +02:00
Lauri Ojansivu 62e43c0832 Fix: Error after sending invitation and joining board:
Exception while invoking method 'login' TypeError: Cannot read property 'loginDisabled' of undefined.
Thanks to nztqa ! Closes #1331
2017-11-19 17:51:26 +02:00
Lauri Ojansivu eceaac7998 Merge branch 'soohwa-add-rest-api-bettor-error-output' into devel
REST API better error output. Thanks to soohwa ! Related #1037
2017-11-19 10:45:04 +02:00
Lauri Ojansivu c01335ee29 REST API better error output. Thanks to soohwa ! Related #1037 2017-11-19 10:44:37 +02:00
Lauri Ojansivu 9353d785ea Fix: Helper to list boards for user. Thanks to milesibastos ! Closes #1326 2017-11-19 09:50:03 +02:00
Lauri Ojansivu 0ea96fca3f Merge branch 'thuanpq-devel' into devel
User Admin to Admin Panel: List users.
Change: is user admin, name, fullname, email address, is user active.
Not changing password yet. Thanks to thuanpq and xet7 ! Related #802
2017-11-19 01:45:58 +02:00
Lauri Ojansivu 75c5eeb046 Update translations. 2017-11-19 01:41:53 +02:00
Lauri Ojansivu 9f30eeae61 User Admin to Admin Panel: List users.
Change: is user admin, name, fullname, email address, is user active.
Not changing password yet. Thanks to thuanpq and xet7 ! Related #802
2017-11-19 01:25:28 +02:00
Lauri Ojansivu 6fc992e6d7 Change admin panel header order to info people version. 2017-11-19 01:05:43 +02:00
Lauri Ojansivu 622292e40e Make Admin Panel People page text translateable 2017-11-19 01:05:09 +02:00
Lauri Ojansivu 22e43e6591 Merge branch 'devel' of https://github.com/thuanpq/wekan into thuanpq-devel 2017-11-18 23:37:15 +02:00
Lauri Ojansivu 13d8e75c05 Merge branch 'brooksbecton-addMarkdownToTitle' into devel
Markdown in card/minicard/checlist titles
and checklist items. Next line: Shift+Enter. Submit: Enter. Closes #926.
Fix: Emoji detection breaks MAC addresses. Closes #1248.
Fix: Codeblocks should not be scanned for emoji. Closes #643.
Fix: Whitespace trimming breaks Markdown code block indentation. Closes #1288.
Thanks to brooksbecton !
2017-11-18 23:31:00 +02:00
Lauri Ojansivu 8ae9cb97f7 Markdown in card/minicard/checlist titles
and checklist items. Next line: Shift+Enter. Submit: Enter. Closes #926.
Fix: Emoji detection breaks MAC addresses. Closes #1248.
Fix: Codeblocks should not be scanned for emoji. Closes #643.
Fix: Whitespace trimming breaks Markdown code block indentation. Closes #1288.
Thanks to brooksbecton !
2017-11-18 23:30:20 +02:00
Thuan Pham Quoc b4c3e02b75 Fix Missing trailing comma in users.js 2017-11-16 14:14:03 +07:00
Brooks Becton ffb8b72b69 Updated comments about pressing enter on forms 2017-11-14 20:57:36 -06:00
Brooks Becton 309c1d08ff Added markdown support to card-titles, minicard-titles, checklist title, and checklist items 2017-11-14 20:41:05 -06:00
Ghassen Rjab ce4f158976 Hide list of boards in Copy|Move cards for Sandstorm users 2017-11-14 03:25:04 +01:00
Ghassen Rjab 5a37ba0d9f Move cards cross boards 2017-11-14 03:03:29 +01:00
Ghassen Rjab 59f4daf91e Copy cards cross boards 2017-11-14 03:03:08 +01:00
Thuan Pham Quoc fa1d8cd5ef Added update all user profile from admin panel 2017-11-08 11:34:37 +07:00
Thuan Pham Quoc e3b7f85cc3 Updated users methods to get user id from client on updating user data, is aimed to support admin update other user profile 2017-11-08 11:34:05 +07:00
Thuan Pham Quoc 3bead1bf78 Added pagination to people management in admin panel 2017-11-08 11:27:59 +07:00
Thuan Pham Quoc 1f6545e411 Added edit user from admin panel 2017-11-07 22:26:21 +07:00
Thuan Pham Quoc 29d54f46aa Added people list in admin panel , just raw data right now, will add more features soon 2017-11-07 14:01:27 +07:00
Thuan Pham Quoc 2d12a4f404 Add .idea to .gitignore 2017-11-06 17:34:32 +07:00
Lauri Ojansivu c040603786 Merge branch 'devel'
Conflicts:
	CHANGELOG.md
	package.json
	sandstorm-pkgdef.capnp
2017-11-02 02:17:16 +02:00
Lauri Ojansivu ba3c3f8289 v0.54 2017-11-02 02:11:27 +02:00
Lauri Ojansivu 275bb0b131 v0.53 2017-11-02 01:34:27 +02:00
Lauri Ojansivu 6eef4043ca Merge branch 'amadilsons-softwiplimit' into devel
Soft WIP Limit. Thanks to amadilsons and xet7 ! Closes #1311
2017-11-02 01:29:49 +02:00
Lauri Ojansivu 999cdb2bb9 Soft WIP Limit. Thanks to amadilsons and xet7 ! Closes #1311 2017-11-02 01:29:23 +02:00
Lauri Ojansivu cc5435c780 Update translations. 2017-11-02 01:25:09 +02:00
Lauri Ojansivu e015e4245e Make it possible to translate text Soft WIP Limit. 2017-11-02 01:03:51 +02:00
amadilsons c17f26f6ba fix: always restore archived cards if wip limit is soft 2017-10-31 21:20:53 +00:00
amadilsons fdd1aad80d added soft wip limit feature, fixed wipLimit=0 bug (??) 2017-10-31 21:10:36 +00:00
Lauri Ojansivu 8bf3f300ad v0.52 2017-10-31 07:26:32 +02:00
Lauri Ojansivu 99455b2728 Update translations. 2017-10-31 07:24:03 +02:00
Lauri Ojansivu 1a232c7bbb Add iPhone favicon for Wekan. Thanks to guillaumebriday ! Closes #1317 2017-10-31 06:54:47 +02:00
Lauri Ojansivu d3d73e9cdd Merge branch 'Tentoe-boardimportbug' into devel
Fixed Members do not get included on board import from Wekan.
Thanks to Tentoe ! Closes #1255
2017-10-31 06:48:40 +02:00
Lauri Ojansivu 0c34cb97a7 Fixed Members do not get included on board import from Wekan. Thanks to Tentoe ! Closes #1255 2017-10-31 06:48:15 +02:00
Lauri Ojansivu 0df3e7a3c0 Merge branch 'boardimportbug' of https://github.com/Tentoe/wekan into Tentoe-boardimportbug 2017-10-31 06:28:00 +02:00
Lauri Ojansivu 29a08e5568 Merge branch 'brooksbecton-attachments-improvements' into devel 2017-10-31 06:20:02 +02:00
Lauri Ojansivu 09808840cd Image attachment resize on smaller screens and swipebox. Thanks to brooksbecton ! Closes #201 2017-10-31 06:19:24 +02:00
Lauri Ojansivu c5e36d9160 Merge branch 'attachments-improvements' of https://github.com/brooksbecton/wekan into brooksbecton-attachments-improvements 2017-10-31 06:02:55 +02:00
Lauri Ojansivu aa1646ad45 Merge branch 'ocdtrekkie-patch-1' into devel
Permit editing WIP limit. Thanks to nztqa and ocdtrekkie ! Closes #1310
2017-10-31 05:59:04 +02:00
Lauri Ojansivu c2173e073e Permit editing WIP limit. Thanks to nztqa and ocdtrekkie ! Closes #1310 2017-10-31 05:58:33 +02:00
Keven Kurz PC 81d00a9471 Covered case of no admin and no self mapping.
Now importer is always admin of the imported board so that no
undeletable boards can be created.
2017-10-29 17:36:31 +01:00
Keven Kurz PC e8cfed1f7b fixed Members do not get included on board import from WeKan #1255
fixed multiple errors where constants were mistakenly overridden.(or
trying to get a property of an object after making sure it doesn't
exits)

renamed wekanBoard Parameter from createBoardAndLabels for clairity

reworked adding admin for imorter
2017-10-29 16:34:49 +01:00
Brooks Becton 28c78fdfef Merge branch 'attachments-improvements' of github.com:brooksbecton/wekan into attachments-improvements 2017-10-28 10:15:57 -05:00
Brooks Becton d48043c7ee Added swipebox package and added it to attachement images
Also removed '.js-open-viewer' and it's styling stub
2017-10-28 10:15:47 -05:00
Brooks Becton dd1a8ade5e Added media queries to resize attatchments
media queries match other break points and break from a 3 column to 2 to 1
2017-10-28 10:15:47 -05:00
Brooks Becton d9705a0ec4 Added swipebox package and added it to attachement images
Also removed '.js-open-viewer' and it's styling stub
2017-10-28 10:15:05 -05:00
Jacob Weisz 58fbe8e6f2 Permit editing the WIP limit
This is a fix for #1310 and required for Edge users to be able to edit the WIP limit. (The up/down buttons appear to be "optional" according to the HTML5 spec, and can't be assumed to be present.)

I also believe I fixed a spelling error in the same section.

This PR is **NOT TESTED**
2017-10-26 23:48:24 -05:00
Brooks Becton 5c1ace7293 Merge branch 'attachments-improvements' of github.com:brooksbecton/wekan into attachments-improvements 2017-10-25 18:34:48 -05:00
Brooks Becton 0321d9770c Added media queries to resize attatchments
media queries match other break points and break from a 3 column to 2 to 1
2017-10-25 18:34:40 -05:00
Brooks Becton 6a2b6ef3c0 Added media queries to resize attatchments
media queries match other break points and break from a 3 column to 2 to 1
2017-10-25 18:22:34 -05:00
Lauri Ojansivu 01507576b1 v0.51 2017-10-25 17:38:01 +03:00
Lauri Ojansivu 94a6d9ae2f Merge branch 'devel' of github.com:wekan/wekan into devel 2017-10-25 17:28:01 +03:00
Lauri Ojansivu 64fe808a4a Update translations. 2017-10-25 17:27:45 +03:00
Lauri Ojansivu a493c314db Add more languages to Roboto font. Thanks to chromas-cro ! Closes #1299 2017-10-23 16:53:58 +03:00
Lauri Ojansivu d1670ee4c1 Add more languages to Roboto font. Thanks to chromas-cro ! Closes #1299 2017-10-23 16:51:36 +03:00
Lauri Ojansivu 2edced5467 Fix: User with comment only permission can add cards. Thanks to xet7 ! Closes #1301 2017-10-20 17:08:54 +03:00
Lauri Ojansivu 509b640588 Fix: User with comment only permission can add cards. Thanks to xet7 ! Closes #1301 2017-10-20 17:08:21 +03:00
Lauri Ojansivu 624c5aa9b2 Update changelog. 2017-10-20 15:53:27 +03:00
Lauri Ojansivu c5540ddcbd Change invitation link from sign-in to sign-up. Thanks to xet7 ! Closes #1300 2017-10-20 15:52:19 +03:00
Lauri Ojansivu b105f0e2e7 Update translations. Add Spanish of Argentina. 2017-10-20 15:43:54 +03:00
Lauri Ojansivu 99703035d7 Use paxctl to fix segfaut on Alpine Linux. Closes #1303 2017-10-20 14:34:15 +03:00
Lauri Ojansivu b92cde23aa Merge branch 'soohwa-1285-feature-disable-user' into devel
REST API:
- Disable and enable user login.
- Take ownership boards of a user.
- List boards of user.

Thanks to soohwa ! Closes #1285, closes #1220, closes #1118
2017-10-20 14:29:32 +03:00
Lauri Ojansivu 21f76bcacc REST API: Disable and enable user login. Take ownership boards of a user.
List boards of user. Thanks to soohwa ! Closes #1285, closes #1220, closes #1118
2017-10-20 14:29:07 +03:00
Lauri Ojansivu 0d7c1501ce Merge branch '1285-feature-disable-user' of https://github.com/soohwa/wekan into soohwa-1285-feature-disable-user 2017-10-16 18:43:22 +03:00
soohwa 97a23011da Add REST API better error output 2017-10-15 07:39:48 +02:00
Lauri Ojansivu 93d8a3f88a Update translations: es 2017-10-14 23:18:33 +03:00
Pouyan Savoli 8b16955cc2 number + date fields 2017-10-14 01:38:25 +02:00
soohwa 624719974e fix lint error 2017-10-13 09:15:52 +02:00
soohwa c290d63048 fix lint error 2017-10-13 09:00:25 +02:00
soohwa b55756216e fix lint errors 2017-10-13 08:46:25 +02:00
soohwa 77d23df87f Add the ability for the admin :
- disabling a login for a user (not himself)
- enabling a login for a user
- transfering the ownership of all user's boards to himself
2017-10-13 08:15:19 +02:00
Lauri Ojansivu 3ab33ed826 v0.50 2017-10-10 18:08:21 +03:00
Lauri Ojansivu 8f1f7a1d56 Fix and update translations. Thanks to xet7 ! Closes #1286 2017-10-10 17:57:26 +03:00
Lauri Ojansivu 4eccfb6c25 v0.49 2017-10-09 20:00:47 +03:00
Lauri Ojansivu a5daf5dc29 Fix: When WIP limit in use, hide also add card + button at top of list. Thanks to xet7 ! 2017-10-09 19:46:11 +03:00
Lauri Ojansivu 6a89914873 v0.48 2017-10-09 18:30:36 +03:00
Lauri Ojansivu 5532a0071a Merge branch 'amadilsons-userSelfRemove' into devel
User can leave board on Standalone Wekan. Thanks to amadilsons !
2017-10-09 18:23:25 +03:00
Lauri Ojansivu 46d7a33575 User can leave board on Standalone Wekan. Thanks to amadilsons ! 2017-10-09 18:22:50 +03:00
Lauri Ojansivu 2f0609db64 Update translations. 2017-10-09 18:13:16 +03:00
Lauri Ojansivu f16687fa94 Merge branch 'userSelfRemove' of https://github.com/amadilsons/wekan into amadilsons-userSelfRemove 2017-10-09 16:38:43 +03:00
Lauri Ojansivu dc82582391 Merge branch 'soohwa-fix-admin-create-user' into devel
REST API: Create user despite disabling registration.
Thanks to soohwa ! Closes #1232
2017-10-09 16:36:31 +03:00
Lauri Ojansivu ff7b001b00 REST API: Create user despite disabling registration.
Thanks to soohwa ! Closes #1232
2017-10-09 16:35:56 +03:00
Lauri Ojansivu 33cea11393 Merge branch 'fix-admin-create-user' of https://github.com/soohwa/wekan into soohwa-fix-admin-create-user 2017-10-09 15:57:42 +03:00
Lauri Ojansivu 10cb2db94f Merge branch 'amadilsons-issue783' into devel
WIP Limits. Thanks to amadilsons ! Closes #783
2017-10-09 15:55:44 +03:00
Lauri Ojansivu c346743234 WIP Limits. Thanks to amadilsons ! Closes #783 2017-10-09 15:55:11 +03:00
amadilsons 6ba1fc5ba1 user can now leave the board 2017-10-09 14:49:03 +02:00
Lauri Ojansivu de2acaec68 Update translations. 2017-10-09 15:37:43 +03:00
Lauri Ojansivu fb060ed2c5 Merge branch 'issue783' of https://github.com/amadilsons/wekan into amadilsons-issue783 2017-10-09 14:49:38 +03:00
Lauri Ojansivu c84187bdad Fix: Admin announcement can be viewed without signing in.
Thanks to nztqa ! Closes #1281
2017-10-09 14:48:05 +03:00
soohwa ad607c1291 Remove trailing space 2017-10-08 18:15:11 +09:00
soohwa b9be17360f Add comment 2017-10-07 08:33:28 +09:00
Lauri Ojansivu 23ff08382a Dockerfile base image to debian:jessie-slim 2017-10-06 19:33:36 +03:00
Lauri Ojansivu b34c62bbc7 Dockerfile base image from debian:8.9 to bitnami/minideb:jessie 2017-10-06 19:15:14 +03:00
Lauri Ojansivu e85d6d6c5e MongoDB v3.2.17 2017-10-06 19:14:23 +03:00
soohwa 8daa5b4848 Change fromAdmin into createdThroughApi 2017-10-06 23:08:22 +09:00
soohwa 273784b9e4 Clear "fromAdmin". Thx to nztqa. 2017-10-06 01:21:45 +09:00
amadilsons f77da76c68 added i18n translation, minor fix 2017-10-05 17:22:03 +02:00
amadilsons 214fe6a61f feature implemented, known bugs fixed 2017-10-05 16:46:55 +02:00
Lauri Ojansivu 38d1a424d0 v0.47 2017-10-04 21:57:41 +03:00
Lauri Ojansivu e4c08f6933 Update translations. 2017-10-04 21:47:30 +03:00
Lauri Ojansivu 3bee5ad7fe Merge branch 'nztqa-improve-slider-color' into devel
Use theme color for Slider for Comments only. Thanks to nztqa! Closes #1274
2017-10-04 20:45:42 +03:00
Lauri Ojansivu 296520f9ac Use theme color for Slider for Comments only. Thanks to nztqa! Closes #1274 2017-10-04 20:45:14 +03:00
amadilsons c865bfe497 most work concluded, code needs clean up, further testing required 2017-10-04 17:48:37 +02:00
amadilsons 089dbf0cf6 on its way 2017-10-04 11:12:52 +02:00
nztqa 527c430307 Add toggle switch-style for board color change events 2017-10-04 17:18:12 +09:00
nztqa de4ae2dc74 Add check to see if permission is available (with isBoardMember) 2017-10-04 17:06:52 +09:00
Lauri Ojansivu bab02bf8fa v0.46 2017-10-03 15:24:16 +03:00
Lauri Ojansivu 23a9ba0ef6 SECURIY FIX: Meteor allow/deny. Thanks to nztqa ! Closes #1271 2017-10-03 15:20:46 +03:00
Lauri Ojansivu c3804dc0fa SECURITY FIX: Meteor allow/deny. 2017-10-03 15:17:40 +03:00
Lauri Ojansivu 08bab70dbe Merge branch 'andresmanelli-devel' into devel 2017-10-03 15:09:57 +03:00
Lauri Ojansivu ed4c749cea Webhook parameters and response order. Thanks to andresmanelli ! 2017-10-03 15:09:25 +03:00
Lauri Ojansivu d6ef4a8266 Merge branch 'devel' of https://github.com/andresmanelli/wekan into andresmanelli-devel 2017-10-03 14:03:15 +03:00
Lauri Ojansivu 1d3e2ffadd Merge branch 'nztqa-improve-comment-only' into devel
Fix: Slider for Comments only does not work correctly with over 21 activities.
Thanks to nztqa ! Closes #1269
2017-10-03 14:01:47 +03:00
Lauri Ojansivu 0074317bd3 Fix: Slider for Comments only does not work correctly with over 21 activities.
Thanks to nztqa ! Closes #1269
2017-10-03 14:01:05 +03:00
nztqa 26aa9a4ac4 Use Meteor.subscribe instead of DOM manipulation for Hide system messages 2017-10-03 10:56:28 +09:00
nztqa e587964e82 Remove console log 2017-10-03 09:59:25 +09:00
Lauri Ojansivu 61dce8e65d Fix typo. 2017-10-01 16:12:29 +03:00
Lauri Ojansivu c18ded23a3 v0.45 2017-10-01 12:06:22 +03:00
Lauri Ojansivu ff5e88fca3 Merge branch 'nztqa-improve-announcement' into devel
Site Wide Announcement. Thanks to nztqa !
2017-10-01 10:44:42 +03:00
Lauri Ojansivu 8df9e681ed Fix lint errors. 2017-10-01 10:44:06 +03:00
Lauri Ojansivu 443c3a7ac6 Update translations. 2017-10-01 10:41:57 +03:00
Lauri Ojansivu c8cbb7697d Site Wide Announcement. Thanks to nztqa ! 2017-10-01 10:18:16 +03:00
Lauri Ojansivu d213d37dab Merge branch 'improve-announcement' of https://github.com/nztqa/wekan into nztqa-improve-announcement 2017-10-01 09:59:57 +03:00
Lauri Ojansivu a003161fa7 Merge branch 'nztqa-fix-create_label' into devel
git commit CHANGELOG.md -m "Hide create label from normal users, because only board admin can create labels.
Thanks to nztqa ! Closes #1229"
2017-10-01 09:58:35 +03:00
Lauri Ojansivu 51fd053119 Hide create label from normal users, because only board admin can create labels.
Thanks to nztqa ! Related #1229
2017-10-01 09:55:33 +03:00
Lauri Ojansivu 740c705748 Merge branch 'fix-create_label' of https://github.com/nztqa/wekan into nztqa-fix-create_label 2017-10-01 09:50:49 +03:00
Lauri Ojansivu a1d0672739 Merge branch 'nztqa-improve-activities' into devel
Slider for Comments only in activity feed.
Thanks to nztqa ! Closes #1182
2017-10-01 09:48:52 +03:00
Lauri Ojansivu 7d3fed56ae Slider for Comments only in activity feed.
Thanks to nztqa ! Closes #1182
2017-10-01 09:47:53 +03:00
Lauri Ojansivu a0cccb736c Merge branch 'improve-activities' of https://github.com/nztqa/wekan into nztqa-improve-activities 2017-10-01 09:42:15 +03:00
Lauri Ojansivu 6ec14ee52b Merge branch 'nztqa-fix-copy-card' into devel
Fix Data inconsistency when copying card.
Thanks to nztqa ! Related #1218
2017-10-01 09:40:27 +03:00
Lauri Ojansivu 4b995e88ba Fix Data inconsistency when copying card.
Thanks to nztqa ! Related #1218
2017-10-01 09:39:35 +03:00
Lauri Ojansivu 2ae0dc315f Merge branch 'fix-copy-card' of https://github.com/nztqa/wekan into nztqa-fix-copy-card 2017-10-01 09:35:36 +03:00
nztqa a88ac6113e Rename notice -> announcement 2017-10-01 12:43:15 +09:00
soohwa 42ca385a36 Fix password not saved 2017-10-01 10:15:54 +09:00
Lauri Ojansivu e6a866cb9e v0.44 2017-09-30 20:29:41 +03:00
Lauri Ojansivu 8680d7727b Merge branch 'amadilsons-issue881' into devel
Confirm popup appears before Checklist Delete.
Thanks to amadilsons ! Closes #881
2017-09-30 16:55:10 +03:00
Lauri Ojansivu d8169138e5 Confirm popup appears before Checklist Delete.
Thanks to amadilsons ! Closes #881
2017-09-30 16:54:42 +03:00
Lauri Ojansivu 6bb2302f81 Update translations. 2017-09-30 16:50:38 +03:00
Lauri Ojansivu 90d904e10d Restore spacing. 2017-09-30 16:29:38 +03:00
Lauri Ojansivu 9e075fb2da Merge branch 'issue881' of https://github.com/amadilsons/wekan into amadilsons-issue881 2017-09-30 15:51:12 +03:00
Lauri Ojansivu 222c071925 Merge branch 'GhassenRjab-feature/fix-trello-import' into devel
Fix errors when importing from Trello.
Thanks to GhassenRjab ! Closes #1243, closes #1245
2017-09-30 13:18:08 +03:00
Lauri Ojansivu 0e3620c776 Fix errors when importing from Trello.
Thanks to GhassenRjab ! Closes #1243, closes #1245
2017-09-30 13:17:40 +03:00
Andrés Manelli de1ca1d12a Send result before webhook 2017-09-29 18:47:40 -03:00
Andrés Manelli 196f959f1d Add some parameters to webhook 2017-09-29 17:11:13 -03:00
amadilsons a918d36533 mostly frontend work, lists coll update with wipLimit field 2017-09-29 16:52:53 +02:00
amadilsons e03f2102de fixed linting error 2017-09-29 14:23:54 +02:00
amadilsons 4a20208d95 removed unnecessary deleteDialog helper, delete dialog now uses tap-i18n 2017-09-29 14:13:36 +02:00
nztqa 0e43a5561b Add check to see if permission 2017-09-29 15:02:35 +09:00
amadilsons c9c650664f basic frontend setup, List model updated with wipLimit field 2017-09-28 16:59:53 +02:00
nztqa aa1876f94c Add message from service administrator 2017-09-28 16:57:04 +09:00
Ghassen Rjab 109cd08151 Use a default color (black) for labels from Trello 2017-09-27 22:23:55 +01:00
amadilsons 9940d635b4 removed linting errors 2017-09-27 15:42:48 +02:00
amadilsons dcd4a2f1e3 code clean up 2017-09-27 14:50:00 +02:00
amadilsons 75f15f1be2 Merge branch 'master' of https://github.com/wekan/wekan into issue881 2017-09-27 14:42:18 +02:00
amadilsons bbe37cfad8 sugested fix for issue #881 2017-09-27 14:29:52 +02:00
Ghassen Rjab f883757552 Ignore checklists with missing cards 2017-09-26 06:58:39 +01:00
Lauri Ojansivu eb945f26a3 v0.43 2017-09-25 19:47:10 +03:00
Lauri Ojansivu a62c8eb5a0 Add emojis back, because removing them broke local dev Sandstorm.
Thanks to xet7 ! Opens #1248, opens #743, opens #643, opens #323
2017-09-25 19:40:41 +03:00
Lauri Ojansivu f0b7f34928 v0.42 2017-09-25 18:40:33 +03:00
Lauri Ojansivu c4fd729b34 Remove emoji support, because it breaks MAC addresses, urls, code etc.
Thanks to xet7 ! Closes #1248, closes #743, closes #643, closes #323
2017-09-25 18:30:26 +03:00
soohwa ee94735922 Lint error 2017-09-25 22:14:13 +09:00
soohwa deef0855d5 Fix https://github.com/wekan/wekan/issues/1249 2017-09-25 21:03:18 +09:00
nztqa 61ee107c27 Disable button when "Hide system messages" in user profile setting is valid 2017-09-25 20:27:54 +09:00
Lauri Ojansivu fb79c8786a v0.41 2017-09-25 13:16:07 +03:00
nztqa b503ba1144 Add comments only in activity feed 2017-09-25 14:52:55 +09:00
nztqa 860ae6f38d Remove cover id 2017-09-25 13:52:44 +09:00
Pouyan Savoli 3753337d60 dropdown items 2017-09-22 22:59:32 +02:00
Pouyan Savoli caad952bc1 text custom fields are now editable using inlinedForm 2017-09-22 22:59:32 +02:00
Pouyan Savoli 6ff89b43b6 show custom fields on cards but still with dummy value 2017-09-22 22:59:32 +02:00
Pouyan Savoli 733b14dcd8 card model and card ui preparation for custom fields #2 2017-09-22 22:59:32 +02:00
Pouyan Savoli d87191f17e card model and card ui preparation for custom fields 2017-09-22 22:59:32 +02:00
Pouyan Savoli afd87e3caa many custom fields model and UI enhancements 2017-09-22 22:59:32 +02:00
Pouyan Savoli ade3c02122 Create custom fields creation UI added to Board Menu, Model in progress 2017-09-22 22:59:32 +02:00
698 changed files with 87581 additions and 5837 deletions

No files matched your search

+12 -6
View File
@@ -6,7 +6,7 @@
"browser": true
},
"parserOptions": {
"ecmaVersion": 6,
"ecmaVersion": 2017,
"sourceType": "module",
"ecmaFeatures": {
"experimentalObjectRestSpread": true
@@ -14,7 +14,7 @@
},
"rules": {
"strict": 0,
"no-undef": 2,
"no-undef": 0,
"accessor-pairs": 2,
"comma-dangle": [2, "always-multiline"],
"consistent-return": 2,
@@ -52,7 +52,6 @@
"prefer-const": 2,
"prefer-spread": 2,
"prefer-template": 2,
"no-console": 0,
"no-unused-vars" : "warn"
},
"globals": {
@@ -101,7 +100,9 @@
"Attachments": true,
"Boards": true,
"CardComments": true,
"DatePicker" : true,
"Cards": true,
"CustomFields": true,
"Lists": true,
"UnsavedEditCollection": true,
"Users": true,
@@ -120,16 +121,21 @@
"allowIsBoardAdmin": true,
"allowIsBoardMember": true,
"allowIsBoardMemberByCard": true,
"allowIsBoardMemberNonComment": true,
"allowIsBoardMemberCommentOnly": true,
"allowIsBoardMemberNoComments": true,
"Emoji": true,
"Checklists": true,
"Settings": true,
"InvitationCodes": true,
"Winston":true,
"JsonRoutes": true,
"Authentication": true,
"Integrations": true,
"HTTP": true,
"AccountSettings": true
"AccountSettings": true,
"Announcements": true,
"Swimlanes": true,
"ChecklistItems": true,
"Subtasks": true,
"Npm": true
}
}
+18 -7
View File
@@ -1,16 +1,27 @@
## Issue
**Impacted version**: xxxx
Add these issues to elsewhere:
- Snap: https://github.com/wekan/wekan-snap/issues
Other Wekan issues can be added here.
**Server Setup Information**:
* Did you test in newest Wekan?:
* For new Wekan install, did you configure root-url correctly https://github.com/wekan/wekan/wiki/Settings ?
* Wekan version:
* If this is about old version of Wekan, what upgrade problem you have?:
* Operating System:
* Deployment Method(tar/sandstorm/snap/docker/etc /http frontend (nginx, httpd, ...)):
* Deployment Method(snap/docker/sandstorm/mongodb bundle/source):
* Http frontend if any (Caddy, Nginx, Apache, see config examples from Wekan GitHub wiki first):
* Node Version:
* MongoDB Version:
* ROOT_URL environment variable (Is there a subfolder?):
* ROOT_URL environment variable http(s)://(subdomain).example.com(/suburl):
**Problem description**:
- *be as explicit has you can*
- *describe the problem and its symptoms*
- *explain how to reproduce*
- *attach whatever information that can help understanding the context (screen capture, log files)*
- *REQUIRED: Add recorded animated gif about how it works currently, and screenshot mockups how it should work. Use peek to record animgif in Linux https://github.com/phw/peek*
- *Explain steps how to reproduce*
- *In webbrowser, what does show Right Click / Inspect / Console ? Chrome shows more detailed info than Firefox.*
- *If using Snap, what does show command `sudo snap logs wekan.wekan` ?*
- *If using Docker, what does show command `sudo docker logs wekan-app` ?*
- *If logs are very long, attach them in .zip file*
+18 -2
View File
@@ -4,12 +4,28 @@
*.sublime-workspace
tmp/
node_modules/
npm-debug.log
.vscode/
.idea/
.build/*
packages/kadira-flow-router/
packages/meteor-useraccounts-core/
package-lock.json
**/parts/
**/stage
**/prime
**/*.snap
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
+1
View File
@@ -15,3 +15,4 @@ notices-for-facebook-graph-api-2
1.4.0-remove-old-dev-bundle-link
1.4.1-add-shell-server-package
1.4.3-split-account-service-packages
1.5-add-dynamic-import-package
+31 -18
View File
@@ -3,13 +3,13 @@
# 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand.
meteor-base@1.0.4
meteor-base@1.2.0
# Build system
ecmascript@0.7.2
stylus@2.513.9
standard-minifier-css@1.3.4
standard-minifier-js@2.0.0
ecmascript
stylus@2.513.13
standard-minifier-css@1.3.5
standard-minifier-js@2.2.0
mquandalle:jade
# Polyfills
@@ -17,30 +17,31 @@ es5-shim@4.6.15
# Collections
aldeed:collection2
cfs:gridfs
cfs:standard-packages
cottz:publish-relations
dburles:collection-helpers
idmontie:migrations
matb33:collection-hooks
matteodem:easy-search
mongo@1.1.16
mongo@1.3.1
mquandalle:collection-mutations
# Account system
accounts-password@1.3.5
kenton:accounts-sandstorm
service-configuration@1.0.11
useraccounts:unstyled
useraccounts:flow-routing
wekan-ldap
wekan-accounts-cas
wekan-accounts-oidc
# Utilities
check@1.2.5
jquery@1.11.10
random@1.0.10
reactive-dict@1.1.8
reactive-dict@1.2.0
session@1.1.7
tracker@1.1.2
tracker@1.1.3
underscore@1.0.10
3stack:presence
alethes:pages
@@ -48,15 +49,13 @@ arillo:flow-router-helpers
audit-argument-checks@1.0.7
kadira:blaze-layout
kadira:dochead
meteorhacks:fast-render
meteorhacks:picker
meteorhacks:subs-manager
mquandalle:autofocus
mquandalle:moment
ongoworks:speakingurl
raix:handlebar-helpers
tap:i18n
http
http@1.3.0
# UI components
blaze
@@ -66,16 +65,30 @@ mousetrap:mousetrap
mquandalle:jquery-textcomplete
mquandalle:jquery-ui-drag-drop-sort
mquandalle:mousetrap-bindglobal
mquandalle:perfect-scrollbar
peerlibrary:blaze-components@=0.15.1
perak:markdown
seriousm:emoji-continued
templates:tabs
verron:autosize
simple:json-routes
rajit:bootstrap3-datepicker
kadira:flow-router
shell-server@0.2.3
shell-server@0.3.0
simple:rest-accounts-password
useraccounts:core
email@1.2.3
horka:swipebox
dynamic-import@0.2.0
staringatlights:fast-render
mixmax:smart-disconnect
accounts-password@1.5.0
cfs:gridfs
rzymek:fullcalendar
momentjs:moment@2.22.2
browser-policy-framing
mquandalle:moment
msavin:usercache
wekan-scrollbar
mquandalle:perfect-scrollbar
mdg:meteor-apm-agent
meteorhacks:unblock
lucasantoniassi:accounts-lockout
wekan-markdown
+1 -1
View File
@@ -1 +1 @@
METEOR@1.4.4.1
METEOR@1.6.0.1
+70 -47
View File
@@ -1,23 +1,26 @@
3stack:presence@1.0.5
accounts-base@1.2.16
accounts-password@1.3.5
3stack:presence@1.1.2
accounts-base@1.4.0
accounts-oauth@1.1.15
accounts-password@1.5.0
aldeed:collection2@2.10.0
aldeed:collection2-core@1.2.0
aldeed:schema-deny@1.1.0
aldeed:schema-index@1.1.1
aldeed:simple-schema@1.5.3
alethes:pages@1.8.6
allow-deny@1.0.5
allow-deny@1.1.0
arillo:flow-router-helpers@0.5.2
audit-argument-checks@1.0.7
autoupdate@1.3.12
babel-compiler@6.18.2
babel-runtime@1.0.1
babel-compiler@6.24.7
babel-runtime@1.1.1
base64@1.0.10
binary-heap@1.0.10
blaze@2.3.2
blaze-tools@1.0.10
boilerplate-generator@1.0.11
boilerplate-generator@1.3.1
browser-policy-common@1.0.11
browser-policy-framing@1.1.0
caching-compiler@1.1.9
caching-html-compiler@1.1.2
callback-hook@1.0.10
@@ -27,7 +30,7 @@ cfs:collection@0.5.5
cfs:collection-filters@0.2.4
cfs:data-man@0.0.6
cfs:file@0.1.17
cfs:gridfs@0.0.33
cfs:gridfs@0.0.34
cfs:http-methods@0.0.32
cfs:http-publish@0.0.13
cfs:power-queue@0.9.11
@@ -40,61 +43,70 @@ cfs:upload-http@0.0.20
cfs:worker@0.1.4
check@1.2.5
chuangbo:cookie@1.1.0
coffeescript@1.12.3_1
cottz:publish-relations@2.0.7
coffeescript@1.12.7_3
coffeescript-compiler@1.12.7_3
cottz:publish-relations@2.0.8
dburles:collection-helpers@1.1.0
ddp@1.2.5
ddp-client@1.3.4
ddp-common@1.2.8
ddp@1.4.0
ddp-client@2.2.0
ddp-common@1.3.0
ddp-rate-limiter@1.0.7
ddp-server@1.3.14
ddp-server@2.1.1
deps@1.0.12
diff-sequence@1.0.7
ecmascript@0.7.3
ecmascript-runtime@0.3.15
ejson@1.0.13
dynamic-import@0.2.1
ecmascript@0.9.0
ecmascript-runtime@0.5.0
ecmascript-runtime-client@0.5.0
ecmascript-runtime-server@0.5.0
ejson@1.1.0
email@1.2.3
es5-shim@4.6.15
fastclick@1.0.13
fortawesome:fontawesome@4.7.0
geojson-utils@1.0.10
horka:swipebox@1.0.2
hot-code-push@1.0.4
html-tools@1.0.11
htmljs@1.0.11
http@1.2.12
http@1.3.0
id-map@1.0.9
idmontie:migrations@1.0.3
jquery@1.11.10
kadira:blaze-layout@2.3.0
kadira:dochead@1.5.0
kadira:flow-router@2.12.1
kenton:accounts-sandstorm@0.6.0
kenton:accounts-sandstorm@0.7.0
launch-screen@1.1.1
livedata@1.0.18
localstorage@1.0.12
logging@1.1.17
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
mdg:validation-error@0.5.1
meteor@1.6.1
meteor-base@1.0.4
meteor@1.8.2
meteor-base@1.2.0
meteor-platform@1.2.6
meteorhacks:aggregate@1.3.0
meteorhacks:collection-utils@1.2.0
meteorhacks:fast-render@2.16.0
meteorhacks:inject-data@2.0.0
meteorhacks:meteorx@1.4.1
meteorhacks:picker@1.0.3
meteorhacks:subs-manager@1.6.4
meteorhacks:unblock@1.1.0
meteorspark:util@0.2.0
minifier-css@1.2.16
minifier-js@2.0.0
minifier-js@2.2.2
minifiers@1.1.8-faster-rebuild.0
minimongo@1.0.21
minimongo@1.4.3
mixmax:smart-disconnect@0.0.4
mobile-status-bar@1.0.14
modules@0.8.2
modules-runtime@0.7.10
mongo@1.1.16
modules@0.11.0
modules-runtime@0.9.1
momentjs:moment@2.22.2
mongo@1.3.1
mongo-dev-server@1.1.0
mongo-id@1.0.6
mongo-livedata@1.0.12
mousetrap:mousetrap@1.4.6_1
@@ -107,52 +119,56 @@ mquandalle:jquery-ui-drag-drop-sort@0.2.0
mquandalle:moment@1.0.1
mquandalle:mousetrap-bindglobal@0.0.1
mquandalle:perfect-scrollbar@0.6.5_2
npm-bcrypt@0.9.2
npm-mongo@2.2.24
msavin:usercache@1.0.0
npm-bcrypt@0.9.3
npm-mongo@2.2.33
oauth@1.2.1
oauth2@1.2.0
observe-sequence@1.0.16
ongoworks:speakingurl@1.1.0
ordered-dict@1.0.9
peerlibrary:assert@0.2.5
peerlibrary:base-component@0.16.0
peerlibrary:blaze-components@0.15.1
peerlibrary:computed-field@0.6.1
peerlibrary:computed-field@0.7.0
peerlibrary:reactive-field@0.3.0
perak:markdown@1.0.5
promise@0.8.8
promise@0.10.0
raix:eventemitter@0.1.3
raix:handlebar-helpers@0.2.5
rajit:bootstrap3-datepicker@1.6.4
rajit:bootstrap3-datepicker@1.7.1
random@1.0.10
rate-limit@1.0.8
reactive-dict@1.1.8
reactive-dict@1.2.0
reactive-var@1.0.11
reload@1.1.11
retry@1.0.9
routepolicy@1.0.12
seriousm:emoji-continued@1.4.0
rzymek:fullcalendar@3.8.0
service-configuration@1.0.11
session@1.1.7
sha@1.0.9
shell-server@0.2.3
shell-server@0.3.1
simple:authenticate-user-by-token@1.0.1
simple:json-routes@2.1.0
simple:rest-accounts-password@1.1.2
simple:rest-bearer-token-parser@1.0.1
simple:rest-json-error-handler@1.0.1
softwarerero:accounts-t9n@1.3.9
softwarerero:accounts-t9n@1.3.11
spacebars@1.0.15
spacebars-compiler@1.1.2
spacebars-compiler@1.1.3
srp@1.0.10
standard-minifier-css@1.3.4
standard-minifier-js@2.0.0
stylus@2.513.9
standard-minifier-css@1.3.5
standard-minifier-js@2.2.3
staringatlights:fast-render@2.16.5
staringatlights:inject-data@2.0.5
stylus@2.513.13
tap:i18n@1.8.2
templates:tabs@2.3.0
templating@1.3.2
templating-compiler@1.3.2
templating-compiler@1.3.3
templating-runtime@1.3.2
templating-tools@1.1.2
tracker@1.1.2
tracker@1.1.3
ui@1.0.13
underscore@1.0.10
url@1.1.0
@@ -160,6 +176,13 @@ useraccounts:core@1.14.2
useraccounts:flow-routing@1.14.2
useraccounts:unstyled@1.14.2
verron:autosize@3.0.8
webapp@1.3.15
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-ldap@0.0.2
yasaricli:slugify@0.0.7
zimme:active-route@2.3.2
+3 -3
View File
@@ -2,9 +2,9 @@ dist: trusty
sudo: required
env:
TRAVIS_DOCKER_COMPOSE_VERSION: 1.12.0
TRAVIS_NODE_VERSION: 4.8.4
TRAVIS_NPM_VERSION: 4.6.1
TRAVIS_DOCKER_COMPOSE_VERSION: 1.17.0
TRAVIS_NODE_VERSION: 8.9.3
TRAVIS_NPM_VERSION: 5.5.1
before_install:
- sudo apt-get update -y
+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 = en_GB:en-GB, fa_IR:fa, fi_FI:fi, hu_HU:hu, id_ID:id, no:nb, 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
+2918 -4
View File
File diff suppressed because it is too large. Load diff
+4
View File
@@ -0,0 +1,4 @@
To get started, [please sign the Contributor License Agreement](https://www.clahub.com/agreements/wekan/wekan).
[Then, please read documentation at wiki](https://github.com/wekan/wekan/wiki).
-5
View File
@@ -1,5 +0,0 @@
# Contributing
Please see wiki for all documentation:
<https://github.com/wekan/wekan/wiki>
+193 -63
View File
@@ -1,75 +1,167 @@
FROM debian:8.9
MAINTAINER wekan
# Declare Arguments
ARG NODE_VERSION
ARG METEOR_RELEASE
ARG METEOR_EDGE
ARG USE_EDGE
ARG NPM_VERSION
ARG FIBERS_VERSION
ARG ARCHITECTURE
ARG SRC_PATH
FROM ubuntu:disco
LABEL maintainer="wekan"
# Set the environment variables (defaults where required)
ENV BUILD_DEPS="wget curl bzip2 build-essential python git ca-certificates gcc-4.9"
ENV GOSU_VERSION=1.10
ENV NODE_VERSION ${NODE_VERSION:-v4.8.4}
ENV METEOR_RELEASE ${METEOR_RELEASE:-1.4.4.1}
ENV USE_EDGE ${USE_EDGE:-false}
ENV METEOR_EDGE ${METEOR_EDGE:-1.5-beta.17}
ENV NPM_VERSION ${NPM_VERSION:-4.6.1}
ENV FIBERS_VERSION ${FIBERS_VERSION:-1.0.15}
ENV ARCHITECTURE ${ARCHITECTURE:-linux-x64}
ENV SRC_PATH ${SRC_PATH:-./}
# 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 python3 python3-pip git ca-certificates gcc-8" \
DEBUG=false \
NODE_VERSION=v8.16.0 \
METEOR_RELEASE=1.6.0.1 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
NPM_VERSION=latest \
FIBERS_VERSION=2.0.0 \
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="" \
MATOMO_DO_NOT_TRACK=true \
MATOMO_WITH_USERNAME=false \
BROWSER_POLICY_ENABLED=true \
TRUSTED_URL="" \
WEBHOOKS_ATTRIBUTES="" \
OAUTH2_ENABLED=false \
OAUTH2_LOGIN_STYLE=redirect \
OAUTH2_CLIENT_ID="" \
OAUTH2_SECRET="" \
OAUTH2_SERVER_URL="" \
OAUTH2_AUTH_ENDPOINT="" \
OAUTH2_USERINFO_ENDPOINT="" \
OAUTH2_TOKEN_ENDPOINT="" \
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 \
LDAP_HOST="" \
LDAP_BASEDN="" \
LDAP_LOGIN_FALLBACK=false \
LDAP_RECONNECT=true \
LDAP_TIMEOUT=10000 \
LDAP_IDLE_TIMEOUT=10000 \
LDAP_CONNECT_TIMEOUT=10000 \
LDAP_AUTHENTIFICATION=false \
LDAP_AUTHENTIFICATION_USERDN="" \
LDAP_AUTHENTIFICATION_PASSWORD="" \
LDAP_LOG_ENABLED=false \
LDAP_BACKGROUND_SYNC=false \
LDAP_BACKGROUND_SYNC_INTERVAL=100 \
LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false \
LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=false \
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="" \
LDAP_SEARCH_PAGE_SIZE=0 \
LDAP_SEARCH_SIZE_LIMIT=0 \
LDAP_GROUP_FILTER_ENABLE=false \
LDAP_GROUP_FILTER_OBJECTCLASS="" \
LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE="" \
LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE="" \
LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT="" \
LDAP_GROUP_FILTER_GROUP_NAME="" \
LDAP_UNIQUE_IDENTIFIER_FIELD="" \
LDAP_UTF8_NAMES_SLUGIFY=true \
LDAP_USERNAME_FIELD="" \
LDAP_FULLNAME_FIELD="" \
LDAP_MERGE_EXISTING_USERS=false \
LDAP_EMAIL_FIELD="" \
LDAP_EMAIL_MATCH_ENABLE=false \
LDAP_EMAIL_MATCH_REQUIRE=false \
LDAP_EMAIL_MATCH_VERIFIED=false \
LDAP_SYNC_USER_DATA=false \
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
COPY ${SRC_PATH} /home/wekan/app
RUN \
set -o xtrace && \
# Add non-root user wekan
useradd --user-group --system --home-dir /home/wekan wekan && \
\
# OS dependencies
apt-get update -y && apt-get dist-upgrade -y && apt-get install -y --no-install-recommends ${BUILD_DEPS} && \
apt-get update -y && apt-get install -y --no-install-recommends ${BUILD_DEPS} && \
pip3 install -U pip setuptools wheel && \
\
# Gosu installation
GOSU_ARCHITECTURE="$(dpkg --print-architecture | awk -F- '{ print $NF }')" && \
wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${GOSU_ARCHITECTURE}" && \
wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${GOSU_ARCHITECTURE}.asc" && \
export GNUPGHOME="$(mktemp -d)" && \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && \
gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu && \
rm -R "$GNUPGHOME" /usr/local/bin/gosu.asc && \
chmod +x /usr/local/bin/gosu && \
# Meteor installer doesn't work with the default tar binary, so using bsdtar while installing.
# https://github.com/coreos/bugs/issues/1095#issuecomment-350574389
cp $(which tar) $(which tar)~ && \
ln -sf $(which bsdtar) $(which tar) && \
\
# Download nodejs
wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
#---------------------------------------------------------------------------------------------
# Node Fibers 100% CPU usage issue:
# https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-381453161
# https://github.com/meteor/meteor/issues/9796#issuecomment-381676326
# https://github.com/sandstorm-io/sandstorm/blob/0f1fec013fe7208ed0fd97eb88b31b77e3c61f42/shell/server/00-startup.js#L99-L129
# Also see beginning of wekan/server/authentication.js
# import Fiber from "fibers";
# Fiber.poolSize = 1e9;
# OLD: Download node version 8.12.0 prerelease that has fix included, => Official 8.12.0 has been released
# Description at https://releases.wekan.team/node.txt
#wget https://releases.wekan.team/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
#echo "1ed54adb8497ad8967075a0b5d03dd5d0a502be43d4a4d84e5af489c613d7795 node-v8.12.0-linux-x64.tar.gz" >> SHASUMS256.txt.asc && \
\
# Verify nodejs authenticity
grep ${NODE_VERSION}-${ARCHITECTURE}.tar.gz SHASUMS256.txt.asc | shasum -a 256 -c - && \
export GNUPGHOME="$(mktemp -d)" && \
#export GNUPGHOME="$(mktemp -d)" && \
#\
# Try other key servers if ha.pool.sks-keyservers.net is unreachable
# Code from https://github.com/chorrell/docker-node/commit/2b673e17547c34f17f24553db02beefbac98d23c
# gpg keys listed at https://github.com/nodejs/node#release-team
# and keys listed here from previous version of this Dockerfile
for key in \
9554F04D7259F04124DE6B476D5A82AC7E37093B \
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
FD3A5288F042B6850C66B31F09FE44734EB7990E \
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
; do \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" || \
gpg --keyserver pgp.mit.edu --recv-keys "$key" || \
gpg --keyserver keyserver.pgp.com --recv-keys "$key" ; \
done && \
gpg --verify SHASUMS256.txt.asc && \
rm -R "$GNUPGHOME" SHASUMS256.txt.asc && \
#for key in \
#9554F04D7259F04124DE6B476D5A82AC7E37093B \
#94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
#FD3A5288F042B6850C66B31F09FE44734EB7990E \
#71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
#DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
#C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
#B9AE9905FFD7803F25714661B63B535A4C206CA9 \
#; do \
#gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" || \
#gpg --keyserver pgp.mit.edu --recv-keys "$key" || \
#gpg --keyserver keyserver.pgp.com --recv-keys "$key" ; \
#done && \
#gpg --verify SHASUMS256.txt.asc && \
# Ignore socket files then delete files then delete directories
#find "$GNUPGHOME" -type f | xargs rm -f && \
#find "$GNUPGHOME" -type d | xargs rm -fR && \
rm -f SHASUMS256.txt.asc && \
\
# Install Node
tar xvzf node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
@@ -78,6 +170,9 @@ RUN \
ln -s /opt/nodejs/bin/node /usr/bin/node && \
ln -s /opt/nodejs/bin/npm /usr/bin/npm && \
\
#DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
#paxctl -mC `which node` && \
\
# Install Node dependencies
npm install -g npm@${NPM_VERSION} && \
npm install -g node-gyp && \
@@ -86,53 +181,88 @@ RUN \
# Change user to wekan and install meteor
cd /home/wekan/ && \
chown wekan:wekan --recursive /home/wekan && \
curl https://install.meteor.com -o ./install_meteor.sh && \
sed -i "s|RELEASE=.*|RELEASE=${METEOR_RELEASE}\"\"|g" ./install_meteor.sh && \
curl "https://install.meteor.com" -o /home/wekan/install_meteor.sh && \
#curl "https://install.meteor.com/?release=${METEOR_RELEASE}" -o /home/wekan/install_meteor.sh && \
# OLD: sed -i "s|RELEASE=.*|RELEASE=${METEOR_RELEASE}\"\"|g" ./install_meteor.sh && \
# Install Meteor forcing its progress
sed -i 's/VERBOSITY="--silent"/VERBOSITY="--progress-bar"/' ./install_meteor.sh && \
echo "Starting meteor ${METEOR_RELEASE} installation... \n" && \
chown wekan:wekan ./install_meteor.sh && \
chown wekan:wekan /home/wekan/install_meteor.sh && \
\
# Check if opting for a release candidate instead of major release
if [ "$USE_EDGE" = false ]; then \
gosu wekan:wekan sh ./install_meteor.sh; \
gosu wekan:wekan sh /home/wekan/install_meteor.sh; \
else \
gosu wekan:wekan git clone --recursive --depth 1 -b release/METEOR@${METEOR_EDGE} git://github.com/meteor/meteor.git /home/wekan/.meteor; \
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 && \
#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@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 https://github.com/Kronuz/esprima-python && \
cd /home/wekan/python/esprima-python && \
python3 setup.py install --record files.txt && \
cd /home/wekan/app &&\
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 && \
gosu wekan:wekan sed -i "s|build\/Release\/bson|browser_build\/bson|g" /home/wekan/app_build/bundle/programs/server/npm/node_modules/meteor/cfs_gridfs/node_modules/mongodb/node_modules/bson/ext/index.js && \
cd /home/wekan/app_build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt && \
gosu wekan:wekan rm -rf node_modules/bcrypt && \
gosu wekan:wekan npm install bcrypt && \
#Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
#https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
#https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c
#cd /home/wekan/app_build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt && \
#gosu wekan:wekan rm -rf node_modules/bcrypt && \
#gosu wekan:wekan npm install bcrypt && \
cd /home/wekan/app_build/bundle/programs/server/ && \
gosu wekan:wekan npm install && \
#gosu wekan:wekan npm install bcrypt && \
mv /home/wekan/app_build/bundle /build && \
\
# Put back the original tar
mv $(which tar)~ $(which tar) && \
\
# Cleanup
apt-get remove --purge -y ${BUILD_DEPS} && \
apt-get autoremove -y && \
npm uninstall -g api2html &&\
rm -R /var/lib/apt/lists/* && \
rm -R /home/wekan/.meteor && \
rm -R /home/wekan/app && \
rm -R /home/wekan/app_build && \
cat /home/wekan/python/esprima-python/files.txt | xargs rm -R && \
rm -R /home/wekan/python && \
rm /home/wekan/install_meteor.sh
ENV PORT=80
ENV PORT=8080
EXPOSE $PORT
USER wekan
CMD ["node", "/build/main.js"]
+1 -1
View File
@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2014-2017 The Wekan Team
Copyright (c) 2014-2019 The Wekan Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+84 -43
View File
@@ -1,62 +1,93 @@
# Wekan
# Wekan - Open Source kanban
[![Contributors](https://img.shields.io/github/contributors/wekan/wekan.svg "Contributors")](https://github.com/wekan/wekan/graphs/contributors)
[![Docker Repository on Quay](https://quay.io/repository/wekan/wekan/status "Docker Repository on Quay")](https://quay.io/repository/wekan/wekan)
[![Docker Hub container status](https://img.shields.io/docker/build/wekanteam/wekan.svg "Docker Hub container status")](https://hub.docker.com/r/wekanteam/wekan)
[![Docker Hub pulls](https://img.shields.io/docker/pulls/wekanteam/wekan.svg "Docker Hub Pulls")](https://hub.docker.com/r/wekanteam/wekan)
[![Wekan Build Status][travis_badge]][travis_status]
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/02137ecec4e34c5aa303f57637196a93 "Codacy Badge")](https://www.codacy.com/app/xet7/wekan?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=wekan/wekan&amp;utm_campaign=Badge_Grade)
[![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)
Freenode IRC #wekan
## [Translate Wekan at Transifex](https://transifex.com/wekan/wekan)
[![Wekan chat][vanila_badge]][vanila_chat]
Translations to non-English languages are accepted only at [Transifex](https://transifex.com/wekan/wekan) using webbrowser.
New English strings of new features can be added as PRs to edge branch file wekan/i18n/en.i18n.json .
[Translate Wekan at Transifex][translate_wekan]
## [Wekan feature requests and bugs](https://github.com/wekan/wekan/issues)
[Open Hub analysis of Wekan code](https://www.openhub.net/p/wekan)
Please add most of your questions as GitHub issue: [Wekan feature requests and bugs](https://github.com/wekan/wekan/issues).
It's better than at chat where details get lost when chat scrolls up.
Please read [FAQ](https://github.com/wekan/wekan/wiki/FAQ).
Please don't feed the trolls and spammers that are mentioned in the FAQ :)
## Chat
[![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)
## FAQ
**NOTE**:
- Please read the [FAQ](https://github.com/wekan/wekan/wiki/FAQ) first
- Please don't feed the trolls and spammers that are mentioned in the FAQ :)
## About Wekan
Wekan is an completely [Open Source][open_source] and [Free software][free_software]
collaborative kanban board application with MIT license.
Whether you’re maintaining a personal todo list, planning your holidays with
some friends, or working in a team on your next revolutionary idea, Kanban
boards are an unbeatable tool to keep your things organized. They give you a
visual overview of the current state of your project, and make you productive by
allowing you to focus on the few items that matter the most.
Whether you’re maintaining a personal todo list, planning your holidays with some friends,
or working in a team on your next revolutionary idea, Kanban boards are an unbeatable tool
to keep your things organized. They give you a visual overview of the current state of your project,
and make you productive by allowing you to focus on the few items that matter the most.
Wekan has real-time user interface. Not all features are implemented.
Since Wekan is a free software, you don’t have to trust us with your data and can
install Wekan on your own computer or server. In fact we encourage you to do
that by providing one-click installation on various platforms.
[Features][features]
- Wekan is used in [most countries of the world](https://snapcraft.io/wekan).
- Wekan largest user has 13k users using Wekan in their company.
- Wekan has been [translated](https://transifex.com/wekan/wekan) to about 50 languages.
- [Features][features]: Wekan has real-time user interface.
- [Platforms][platforms]: Wekan supports many platforms.
Wekan is critical part of new platforms Wekan is currently being integrated to.
- [Integrations][integrations]: Current possible integrations and future plans.
Wekan supports many [Platforms][platforms], and plan is to add more.
## Requirements
[Integrations][integrations]
[Team](https://github.com/wekan/wekan/wiki/Team)
You don’t have to trust us with your data and can install Wekan on your own
computer or server. In fact we encourage you to do 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 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.
- SECURITY: Updating to newest Wekan version very often. Please check you do not have automatic updates of Sandstorm or Snap turned off.
Old versions have security issues because of old versions Node.js etc. Only newest Wekan is supported.
Wekan on Sandstorm is not usually affected by any Standalone Wekan (Snap/Docker/Source) security issues.
- [Reporting all new bugs immediately](https://github.com/wekan/wekan/issues).
New features and fixes are added to Wekan [many times a day](https://github.com/wekan/wekan/blob/devel/CHANGELOG.md).
- [Backups](https://github.com/wekan/wekan/wiki/Backup) of Wekan database once a day miminum.
Bugs, updates, users deleting list or card, harddrive full, harddrive crash etc can eat your data. There is no undo yet.
Some bug can cause Wekan board to not load at all, requiring manual fixing of database content.
## Roadmap
[Roadmap](https://github.com/wekan/wekan/wiki/Roadmap)
[Roadmap Milestones](https://github.com/wekan/wekan/milestones)
Upcoming Wekan App Development Platform will make possible
many use cases. If you don't find your feature or integration in
GitHub issues and [Features][features] or [Integrations][integrations]
page at wiki, please add them.
[Developer Documentation][dev_docs]
We are very welcoming to new developers and teams to submit new pull
requests to devel branch to make this Wekan App Development Platform possible
faster. Please see [Developer Documentation][dev_docs] to get started.
We also welcome sponsors for features, although we don't have any yet.
By working directly with Wekan you get the benefit of active maintenance
and new features added by growing Wekan developer community.
- There is many companies and individuals contributing code to Wekan, to add features and bugfixes
[many times a day](https://github.com/wekan/wekan/blob/devel/CHANGELOG.md).
- [Please add Add new Feature Requests and Bug Reports immediately](https://github.com/wekan/wekan/issues).
- [Commercial Support](https://wekan.team).
- [Bounties](https://wekan.team/bounties/index.html).
Actual work happens at [Wekan GitHub issues][wekan_issues].
See [Development links on Wekan
wiki](https://github.com/wekan/wekan/wiki#Development)
bottom of the page for more info.
We also welcome sponsors for features and bugfixes.
By working directly with Wekan you get the benefit of active maintenance and new features added by growing Wekan developer community.
## Demo
@@ -68,9 +99,16 @@ bottom of the page for more info.
[![Screenshot of Wekan][screenshot_wefork]][roadmap_wefork]
Since Wekan is a free software, you don’t have to trust us with your data and can
install Wekan on your own computer or server. In fact we encourage you to do
that by providing one-click installation on various platforms.
## Stable
- master+devel branch. At release, devel is merged to master.
- Receives fixes and features that have been tested at edge that they work.
- If you want automatic updates, [use Snap](https://github.com/wekan/wekan-snap/wiki/Install).
- If you want to test before update, [use Docker quay.io release tags](https://github.com/wekan/wekan/wiki/Docker).
## Edge
- edge branch. All new fixes and features are added to here first. [Testing Edge](https://github.com/wekan/wekan-snap/wiki/Snap-Developer-Docs).
## License
@@ -80,7 +118,7 @@ with [Meteor](https://www.meteor.com).
[platforms]: https://github.com/wekan/wekan/wiki/Platforms
[dev_docs]: https://github.com/wekan/wekan/wiki/Developer-Documentation
[screenshot_wekan]: http://i.imgur.com/cI4jW2h.png
[screenshot_wefork]: https://wekan.github.io/screenshot.png
[screenshot_wefork]: https://wekan.github.io/wekan-markdown.png
[features]: https://github.com/wekan/wekan/wiki/Features
[integrations]: https://github.com/wekan/wekan/wiki/Integrations
[roadmap_wekan]: http://try.wekan.io/b/MeSsFJaSqeuo9M6bs/wekan-roadmap
@@ -95,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)
+129
View File
@@ -0,0 +1,129 @@
Security is very important to us. If you discover any issue regarding security, please disclose
the information responsibly by sending an email to security (at) wekan.team and not by
creating a GitHub issue. We will respond swiftly to fix verifiable security issues.
We thank you with a place at our hall of fame page, that is
at https://wekan.github.io/hall-of-fame . Others have just posted public GitHub issue,
so they are not at that hall-of-fame page.
## How should reports be formatted?
```
Name: %name
Twitter: %twitter
Bug type: %bugtype
Domain: %domain
Severity: %severity
URL: %url
PoC: %poc
CVSS (optional): %cvss
CWSS (optional): %cwss
```
## Who can participate in the program
Anyone who reports a unique security issue in scope and does not disclose it to
a third party before we have patched and updated may be upon their approval
added to the Wekan Hall of Fame.
## Which domains are in scope?
No public domains, because all those are donated to Wekan Open Source project,
and we don't have any permissions to do security scans on those donated servers
Please don't perform research that could impact other users. Secondly, please keep
the reports short and succinct. If we fail to understand the logics of your bug, we will tell you.
You can [Install Wekan](https://github.com/wekan/wekan/releases) to your own computer
and scan it's vulnerabilities there.
## About Wekan versions
There are only 2 versions of Wekan: Standalone Wekan, and Sandstorm Wekan.
### Standalone Wekan Security
Standalone Wekan includes all non-Sandstorm platforms. Some Standalone Wekan platforms
like Snap and Docker have their own specific sandboxing etc features.
Standalone Wekan by default does not load any files from Internet, like fonts, CSS, etc.
This also means all Standalone Wekan functionality works in offline local networks.
Wekan is used by companies that have [thousands of users](https://github.com/wekan/wekan/wiki/AWS) and at healthcare.
Wekan uses xss package for input fields like cards, as you can see from
[package.json](https://github.com/wekan/wekan/blob/devel/package.json). Other used versions can be seen from
[Meteor versions file](https://github.com/wekan/wekan/blob/devel/.meteor/versions).
Forms can include markdown links, html, image tags etc like you see at https://wekan.github.io .
It's possible to add attachments to cards, and markdown/html links to files.
Wekan attachments are not accessible without logging in. Import from Trello works by copying
Trello export JSON to Wekan Trello import page, and in Trello JSON file there is direct links to all publicly
accessible Trello attachment files, that Standalone Wekan downloads directly to Wekan MongoDB database in
[CollectionFS](https://github.com/wekan/wekan/pull/875) format. When Wekan board is exported in
Wekan JSON format, all board attachments are included in Wekan JSON file as base64 encoded text.
That Wekan JSON format file can be imported to Sandstorm Wekan with all the attachments, when we get
latest Wekan version working on Sandstorm, only couple of bugs are left before that. In Sandstorm it's not
possible yet to import from Trello with attachments, because Wekan does not implement Sandstorm-compatible
access to outside of Wekan grain.
Standalone Wekan only has password auth currently, there is work in progress to add
[oauth2](https://github.com/wekan/wekan/pull/1578), [Openid](https://github.com/wekan/wekan/issues/538),
[LDAP](https://github.com/wekan/wekan/issues/119) etc. If you need more login security for Standalone Wekan now,
it's possible add additional [Google Auth proxybouncer](https://github.com/wekan/wekan/wiki/Let's-Encrypt-and-Google-Auth) in front of password auth, and then use Google Authenticator for Google Auth. Standalone Wekan does have [brute force protection with eluck:accounts-lockout and browser-policy clickjacking protection](https://github.com/wekan/wekan/blob/devel/CHANGELOG.md#v080-2018-04-04-wekan-release). You can also optionally use some [WAF](https://en.wikipedia.org/wiki/Web_application_firewall)
like for example [AWS WAF](https://aws.amazon.com/waf/).
[All Wekan Platforms](https://github.com/wekan/wekan/wiki/Platforms)
### Sandstorm Wekan Security
On Sandstorm platform using environment variable Standalone Wekan features like Admin Panel etc are
turned off, because Sandstorm platform provides SSO for all apps running on Sandstorm.
[Sandstorm](https://sandstorm.io) is separate Open Source platform that has been
[security audited](https://sandstorm.io/news/2017-03-02-security-review) and found bugs fixed.
Sandstorm also has passwordless login, LDAP, SAML, Google etc auth options already.
At Sandstorm code is read-only and signed by app maintainers, only grain content can be modified.
Wekan at Sandstorm runs in sandboxed grain, it does not have access elsewhere without user-visible
PowerBox request or opening randomly-generated API key URL.
Also read [Sandstorm Security Practices](https://docs.sandstorm.io/en/latest/using/security-practices/) and
[Sandstorm Security non-events](https://docs.sandstorm.io/en/latest/using/security-non-events/).
For Sandstorm specific security issues you can contact [kentonv](https://github.com/kentonv) by email.
## What Wekan bugs are eligible?
Any typical web security bugs. If any of the previously mentioned is somehow problematic and
a security issue, we'd like to know about it, and also how to fix it:
- Cross-site Scripting
- Open redirect
- Cross-site request forgery
- File inclusion
- Authentication bypass
- Server-side code execution
## What Wekan bugs are NOT eligible?
Typical already known or "no impact" bugs such as:
- Brute force password guessign. Currently there is
[brute force protection with eluck:accounts-lockout](https://github.com/wekan/wekan/blob/devel/CHANGELOG.md#v080-2018-04-04-wekan-release).
- Security issues related to that Wekan uses Meteor 1.6.0.1 related packages, and upgrading to newer
Meteor 1.6.1 is complicated process that requires lots of changes to many dependency packages.
Upgrading [has been tried many times, spending a lot of time](https://github.com/meteor/meteor/issues/9609)
but there still is issues. Helping with package upgrades is very welcome.
- [Wekan API old tokens not replaced correctly](https://github.com/wekan/wekan/issues/1437)
- Missing Cookie flags on non-session cookies or 3rd party cookies
- Logout CSRF
- Social engineering
- Denial of service
- SSL BEAST/CRIME/etc. Wekan does not have SSL built-in, it uses Caddy/Nginx/Apache etc at front.
Integrated Caddy support is updated often.
- Email spoofing, SPF, DMARC & DKIM. Wekan does not include email server.
Wekan is Open Source with MIT license, and free to use also for commercial use.
We welcome all fixes to improve security by email to security (at) wekan.team .
## Bonus Points
If your Responsible Security Disclosure includes code for fixing security issue,
you get bonus points, as seen on [Hall of Fame](https://wekan.github.io/hall-of-fame).
+9
View File
@@ -0,0 +1,9 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v2.78.0"
files:
userUploads:
- README.md
userScripts:
build: stacksmith/user-scripts/build.sh
boot: stacksmith/user-scripts/boot.sh
run: stacksmith/user-scripts/run.sh
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "Wekan",
"description": "The open-source Trello-like kanban",
"description": "The open-source kanban",
"repository": "https://github.com/wekan/wekan",
"logo": "https://raw.githubusercontent.com/wekan/wekan/master/meta/icons/wekan-150.png",
"keywords": ["productivity", "tool", "team", "kanban"],
+75 -2
View File
@@ -14,6 +14,9 @@ template(name="boardActivities")
p.activity-desc
+memberName(user=user)
if($eq activityType 'deleteAttachment')
| {{{_ 'activity-delete-attach' cardLink}}}.
if($eq activityType 'addAttachment')
| {{{_ 'activity-attached' attachmentLink cardLink}}}.
@@ -31,12 +34,28 @@ template(name="boardActivities")
.activity-checklist(href="{{ card.absoluteUrl }}")
+viewer
= checklist.title
if($eq activityType 'removeChecklist')
| {{{_ 'activity-checklist-removed' cardLink}}}.
if($eq activityType 'checkedItem')
| {{{_ 'activity-checked-item' checkItem checklist.title cardLink}}}.
if($eq activityType 'uncheckedItem')
| {{{_ 'activity-unchecked-item' checkItem checklist.title cardLink}}}.
if($eq activityType 'checklistCompleted')
| {{{_ 'activity-checklist-completed' checklist.title cardLink}}}.
if($eq activityType 'checklistUncompleted')
| {{{_ 'activity-checklist-uncompleted' checklist.title cardLink}}}.
if($eq activityType 'addChecklistItem')
| {{{_ 'activity-checklist-item-added' checklist.title cardLink}}}.
.activity-checklist(href="{{ card.absoluteUrl }}")
+viewer
= checklistItem.title
if($eq activityType 'removedChecklistItem')
| {{{_ 'activity-checklist-item-removed' checklist.title cardLink}}}.
if($eq activityType 'archivedCard')
| {{{_ 'activity-archived' cardLink}}}.
@@ -44,15 +63,24 @@ template(name="boardActivities")
if($eq activityType 'archivedList')
| {{_ 'activity-archived' list.title}}.
if($eq activityType 'archivedSwimlane')
| {{_ 'activity-archived' swimlane.title}}.
if($eq activityType 'createBoard')
| {{_ 'activity-created' boardLabel}}.
if($eq activityType 'createCard')
| {{{_ 'activity-added' cardLink boardLabel}}}.
if($eq activityType 'createCustomField')
| {{_ 'activity-customfield-created' customField}}.
if($eq activityType 'createList')
| {{_ 'activity-added' list.title boardLabel}}.
if($eq activityType 'createSwimlane')
| {{_ 'activity-added' swimlane.title boardLabel}}.
if($eq activityType 'removeList')
| {{_ 'activity-removed' title boardLabel}}.
@@ -71,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}}}.
@@ -80,6 +111,18 @@ template(name="boardActivities")
if($eq activityType 'restoredCard')
| {{{_ 'activity-sent' cardLink boardLabel}}}.
if($eq activityType 'addedLabel')
| {{{_ 'activity-added-label' lastLabel cardLink}}}.
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}}}.
@@ -95,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')
@@ -110,14 +153,44 @@ template(name="cardActivities")
| {{{_ 'activity-removed' cardLabel memberLink}}}.
if($eq activityType 'archivedCard')
| {{_ 'activity-archived' cardLabel}}.
if($eq activityType 'addedLabel')
| {{{_ 'activity-added-label-card' lastLabel }}}.
if($eq activityType 'removedLabel')
| {{{_ 'activity-removed-label-card' lastLabel }}}.
if($eq activityType 'removeChecklist')
| {{{_ 'activity-checklist-removed' cardLabel}}}.
if($eq activityType 'checkedItem')
| {{{_ 'activity-checked-item-card' checkItem checklist.title }}}.
if($eq activityType 'uncheckedItem')
| {{{_ 'activity-unchecked-item-card' checkItem checklist.title }}}.
if($eq activityType 'checklistCompleted')
| {{{_ 'activity-checklist-completed-card' checklist.title }}}.
if($eq activityType 'checklistUncompleted')
| {{{_ 'activity-checklist-uncompleted-card' checklist.title }}}.
if($eq activityType 'restoredCard')
| {{_ '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
img.attachment-image-preview(src=attachment.url)
if($eq activityType 'deleteAttachment')
| {{{_ 'activity-delete-attach' cardLabel}}}.
if($eq activityType 'removedChecklist')
| {{{_ 'activity-checklist-removed' cardLabel}}}.
if($eq activityType 'addChecklist')
| {{{_ 'activity-checklist-added' cardLabel}}}.
.activity-checklist
+59 -4
View File
@@ -8,16 +8,24 @@ BlazeComponent.extendComponent({
const sidebar = this.parentComponent(); // XXX for some reason not working
sidebar.callFirstWith(null, 'resetNextPeak');
this.autorun(() => {
const mode = this.data().mode;
let mode = this.data().mode;
const capitalizedMode = Utils.capitalize(mode);
const id = Session.get(`current${capitalizedMode}`);
let thisId, searchId;
if (mode === 'linkedcard' || mode === 'linkedboard') {
thisId = Session.get('currentCard');
searchId = Cards.findOne({_id: thisId}).linkedId;
mode = mode.replace('linked', '');
} else {
thisId = Session.get(`current${capitalizedMode}`);
searchId = thisId;
}
const limit = this.page.get() * activitiesPerPage;
const user = Meteor.user();
const hideSystem = user ? user.hasHiddenSystemMessages() : false;
if (id === null)
if (searchId === null)
return;
this.subscribe('activities', mode, id, limit, hideSystem, () => {
this.subscribe('activities', mode, searchId, limit, hideSystem, () => {
this.loadNextPageLocked = false;
// If the sibear peak hasn't increased, that mean that there are no more
@@ -42,6 +50,12 @@ BlazeComponent.extendComponent({
}
},
checkItem(){
const checkItemId = this.currentData().checklistItemId;
const checkItem = ChecklistItems.findOne({_id:checkItemId});
return checkItem.title;
},
boardLabel() {
return TAPi18n.__('this-board');
},
@@ -58,6 +72,40 @@ BlazeComponent.extendComponent({
}, card.title));
},
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;
}else{
return lastLabel.name;
}
},
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;
},
@@ -91,6 +139,13 @@ BlazeComponent.extendComponent({
}, attachment.name()));
},
customField() {
const customField = this.currentData().customField();
if (!customField)
return null;
return customField.name;
},
events() {
return [{
// XXX We should use Popup.afterConfirmation here
@@ -1,5 +1,10 @@
@import 'nib'
.activity-title
margin: 0 0.5em 0.8em
display: flex
justify-content:space-between
.activities
clear: both
@@ -12,10 +17,14 @@
height: @width
.activity-desc
word-wrap: break-word
overflow: hidden
flex: 1
align-self: center
margin: 0
margin-left: 3px
overflow: hidden;
word-break: break-word;
.activity-comment
display: block
+9 -2
View File
@@ -21,11 +21,18 @@ BlazeComponent.extendComponent({
'submit .js-new-comment-form'(evt) {
const input = this.getInput();
const text = input.val().trim();
const card = this.currentData();
let boardId = card.boardId;
let cardId = card._id;
if (card.isLinkedCard()) {
boardId = Cards.findOne(card.linkedId).boardId;
cardId = card.linkedId;
}
if (text) {
CardComments.insert({
text,
boardId: this.currentData().boardId,
cardId: this.currentData()._id,
boardId,
cardId,
});
resetCommentInput(input);
Tracker.flush();
+13 -5
View File
@@ -6,9 +6,17 @@ template(name="archivedBoards")
ul.archived-lists
each archivedBoards
li.archived-lists-item
button.js-restore-board
i.fa.fa-undo
| {{_ 'restore-board'}}
= title
div.board-header-btns
button.board-header-btn.js-delete-board
i.fa.fa-trash-o
| {{_ 'delete-board'}}
button.board-header-btn.js-restore-board
i.fa.fa-undo
| {{_ 'restore-board'}}
= title
else
li.no-items-message {{_ 'no-archived-board'}}
li.no-items-message {{_ 'no-archived-boards'}}
template(name="boardDeletePopup")
p {{_ 'delete-board-confirm-popup'}}
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
+11 -6
View File
@@ -1,9 +1,3 @@
Template.boardListHeaderBar.events({
'click .js-open-archived-board'() {
Modal.open('archivedBoards');
},
});
BlazeComponent.extendComponent({
onCreated() {
this.subscribe('archivedBoards');
@@ -29,6 +23,17 @@ BlazeComponent.extendComponent({
board.restore();
Utils.goBoardId(board._id);
},
'click .js-delete-board': Popup.afterConfirm('boardDelete', function() {
Popup.close();
const isSandstorm = Meteor.settings && Meteor.settings.public &&
Meteor.settings.public.sandstorm;
if (isSandstorm && Session.get('currentBoard')) {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
Boards.remove(currentBoard._id);
}
Boards.remove(this._id);
FlowRouter.go('home');
}),
}];
},
}).register('archivedBoards');
+19 -21
View File
@@ -14,30 +14,28 @@ template(name="board")
template(name="boardBody")
.board-wrapper(class=currentBoard.colorClass)
+sidebar
.board-canvas(
.board-canvas.js-swimlanes.js-perfect-scrollbar(
class="{{#if Sidebar.isOpen}}is-sibling-sidebar-open{{/if}}"
class="{{#if MultiSelection.isActive}}is-multiselection-active{{/if}}"
class="{{#if draggingActive.get}}is-dragging-active{{/if}}")
if showOverlay.get
.board-overlay
.lists.js-lists
each currentBoard.lists
+list(this)
if currentCardIsInThisList
+cardDetails(currentCard)
if canSeeAddList
+addListForm
template(name="addListForm")
.list.js-list.list-composer.js-list-composer
.list-header
+inlinedForm(autoclose=false)
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
autocomplete="off" autofocus)
.edit-controls.clearfix
button.primary.confirm(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
if currentBoard.isTemplatesBoard
each currentBoard.swimlanes
+swimlane(this)
else if isViewSwimlanes
each currentBoard.swimlanes
+swimlane(this)
else if isViewLists
+listsGroup(currentBoard)
else if isViewCalendar
+calendarView
else
a.open-list-composer.js-open-inlined-form
i.fa.fa-plus
| {{_ 'add-list'}}
+listsGroup(currentBoard)
template(name="calendarView")
if isViewCalendar
.calendar-view.swimlane
if currentCard
+cardDetails(currentCard)
+fullcalendar(calendarOptions)
+288 -160
View File
@@ -1,9 +1,9 @@
const subManager = new SubsManager();
const { calculateIndex, enableClickOnTouch } = Utils;
const swimlaneWhileSortingHeight = 150;
BlazeComponent.extendComponent({
onCreated() {
this.draggingActive = new ReactiveVar(false);
this.showOverlay = new ReactiveVar(false);
this.isBoardReady = new ReactiveVar(false);
// The pattern we use to manually handle data loading is described here:
@@ -14,23 +14,222 @@ 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());
});
});
});
},
onlyShowCurrentCard() {
return Utils.isMiniScreen() && Session.get('currentCard');
},
}).register('board');
BlazeComponent.extendComponent({
onCreated() {
this.showOverlay = new ReactiveVar(false);
this.draggingActive = new ReactiveVar(false);
this._isDragging = false;
this._lastDragPositionX = 0;
// Used to set the overlay
this.mouseHasEnterCardDetails = false;
// fix swimlanes sort field if there are null values
const currentBoardData = Boards.findOne(Session.get('currentBoard'));
const nullSortSwimlanes = currentBoardData.nullSortSwimlanes();
if (nullSortSwimlanes.count() > 0) {
const swimlanes = currentBoardData.swimlanes();
let count = 0;
swimlanes.forEach((s) => {
Swimlanes.update(s._id, {
$set: {
sort: count,
},
});
count += 1;
});
}
// fix lists sort field if there are null values
const nullSortLists = currentBoardData.nullSortLists();
if (nullSortLists.count() > 0) {
const lists = currentBoardData.lists();
let count = 0;
lists.forEach((l) => {
Lists.update(l._id, {
$set: {
sort: count,
},
});
count += 1;
});
}
},
onRendered() {
const boardComponent = this;
const $swimlanesDom = boardComponent.$('.js-swimlanes');
$swimlanesDom.sortable({
tolerance: 'pointer',
appendTo: '.board-canvas',
helper(evt, item) {
const helper = $(`<div class="swimlane"
style="flex-direction: column;
height: ${swimlaneWhileSortingHeight}px;
width: $(boardComponent.width)px;
overflow: hidden;"/>`);
helper.append(item.clone());
// Also grab the list of lists of cards
const list = item.next();
helper.append(list.clone());
return helper;
},
handle: '.js-swimlane-header',
items: '.swimlane:not(.placeholder)',
placeholder: 'swimlane placeholder',
distance: 7,
start(evt, ui) {
const listDom = ui.placeholder.next('.js-swimlane');
const parentOffset = ui.item.parent().offset();
ui.placeholder.height(ui.helper.height());
EscapeActions.executeUpTo('popup-close');
listDom.addClass('moving-swimlane');
boardComponent.setIsDragging(true);
ui.placeholder.insertAfter(ui.placeholder.next());
boardComponent.origPlaceholderIndex = ui.placeholder.index();
// resize all swimlanes + headers to be a total of 150 px per row
// this could be achieved by setIsDragging(true) but we want immediate
// result
ui.item.siblings('.js-swimlane').css('height', `${swimlaneWhileSortingHeight - 26}px`);
// set the new scroll height after the resize and insertion of
// the placeholder. We want the element under the cursor to stay
// at the same place on the screen
ui.item.parent().get(0).scrollTop = ui.placeholder.get(0).offsetTop + parentOffset.top - evt.pageY;
},
beforeStop(evt, ui) {
const parentOffset = ui.item.parent().offset();
const siblings = ui.item.siblings('.js-swimlane');
siblings.css('height', '');
// compute the new scroll height after the resize and removal of
// the placeholder
const scrollTop = ui.placeholder.get(0).offsetTop + parentOffset.top - evt.pageY;
// then reset the original view of the swimlane
siblings.removeClass('moving-swimlane');
// and apply the computed scrollheight
ui.item.parent().get(0).scrollTop = scrollTop;
},
stop(evt, ui) {
// To attribute the new index number, we need to get the DOM element
// of the previous and the following card -- if any.
const prevSwimlaneDom = ui.item.prevAll('.js-swimlane').get(0);
const nextSwimlaneDom = ui.item.nextAll('.js-swimlane').get(0);
const sortIndex = calculateIndex(prevSwimlaneDom, nextSwimlaneDom, 1);
$swimlanesDom.sortable('cancel');
const swimlaneDomElement = ui.item.get(0);
const swimlane = Blaze.getData(swimlaneDomElement);
Swimlanes.update(swimlane._id, {
$set: {
sort: sortIndex.base,
},
});
boardComponent.setIsDragging(false);
},
sort(evt, ui) {
// get the mouse position in the sortable
const parentOffset = ui.item.parent().offset();
const cursorY = evt.pageY - parentOffset.top + ui.item.parent().scrollTop();
// compute the intended index of the placeholder (we need to skip the
// slots between the headers and the list of cards)
const newplaceholderIndex = Math.floor(cursorY / swimlaneWhileSortingHeight);
let destPlaceholderIndex = (newplaceholderIndex + 1) * 2;
// if we are scrolling far away from the bottom of the list
if (destPlaceholderIndex >= ui.item.parent().get(0).childElementCount) {
destPlaceholderIndex = ui.item.parent().get(0).childElementCount - 1;
}
// update the placeholder position in the DOM tree
if (destPlaceholderIndex !== ui.placeholder.index()) {
if (destPlaceholderIndex < boardComponent.origPlaceholderIndex) {
ui.placeholder.insertBefore(ui.placeholder.siblings().slice(destPlaceholderIndex - 2, destPlaceholderIndex - 1));
} else {
ui.placeholder.insertAfter(ui.placeholder.siblings().slice(destPlaceholderIndex - 1, destPlaceholderIndex));
}
}
},
});
// ugly touch event hotfix
enableClickOnTouch('.js-swimlane:not(.placeholder)');
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
}
// If there is no data in the board (ie, no lists) we autofocus the list
// creation form by clicking on the corresponding element.
const currentBoard = Boards.findOne(Session.get('currentBoard'));
if (userIsMember() && currentBoard.lists().count() === 0) {
boardComponent.openNewListForm();
}
},
isViewSwimlanes() {
const currentUser = Meteor.user();
if (!currentUser) return false;
return ((currentUser.profile || {}).boardView === 'board-view-swimlanes');
},
isViewLists() {
const currentUser = Meteor.user();
if (!currentUser) return true;
return ((currentUser.profile || {}).boardView === 'board-view-lists');
},
isViewCalendar() {
const currentUser = Meteor.user();
if (!currentUser) return false;
return ((currentUser.profile || {}).boardView === 'board-view-cal');
},
openNewListForm() {
this.childComponents('addListForm')[0].open();
if (this.isViewSwimlanes()) {
this.childComponents('swimlane')[0]
.childComponents('addListAndSwimlaneForm')[0].open();
} else if (this.isViewLists()) {
this.childComponents('listsGroup')[0]
.childComponents('addListForm')[0].open();
}
},
events() {
return [{
// XXX The board-overlay div should probably be moved to the parent
// component.
'mouseenter .board-overlay'() {
if (this.mouseHasEnterCardDetails) {
this.showOverlay.set(false);
}
},
'mouseup'() {
if (this._isDragging) {
this._isDragging = false;
}
},
}];
},
// XXX Flow components allow us to avoid creating these two setter methods by
@@ -41,172 +240,101 @@ BlazeComponent.extendComponent({
},
scrollLeft(position = 0) {
const lists = this.$('.js-lists');
lists && lists.animate({
const swimlanes = this.$('.js-swimlanes');
swimlanes && swimlanes.animate({
scrollLeft: position,
});
},
currentCardIsInThisList() {
const currentCard = Cards.findOne(Session.get('currentCard'));
const listId = this.currentData()._id;
return currentCard && currentCard.listId === listId;
scrollTop(position = 0) {
const swimlanes = this.$('.js-swimlanes');
swimlanes && swimlanes.animate({
scrollTop: position,
});
},
onlyShowCurrentCard() {
return Utils.isMiniScreen() && Session.get('currentCard');
},
events() {
return [{
// XXX The board-overlay div should probably be moved to the parent
// component.
'mouseenter .board-overlay'() {
if (this.mouseHasEnterCardDetails) {
this.showOverlay.set(false);
}
},
// Click-and-drag action
'mousedown .board-canvas'(evt) {
// Translating the board canvas using the click-and-drag action can
// conflict with the build-in browser mechanism to select text. We
// define a list of elements in which we disable the dragging because
// the user will legitimately expect to be able to select some text with
// his mouse.
const noDragInside = ['a', 'input', 'textarea', 'p', '.js-list-header'];
if ($(evt.target).closest(noDragInside.join(',')).length === 0 && $('.lists').prop('clientHeight') > evt.offsetY) {
this._isDragging = true;
this._lastDragPositionX = evt.clientX;
}
},
'mouseup'() {
if (this._isDragging) {
this._isDragging = false;
}
},
'mousemove'(evt) {
if (this._isDragging) {
// Update the canvas position
this.listsDom.scrollLeft -= evt.clientX - this._lastDragPositionX;
this._lastDragPositionX = evt.clientX;
// Disable browser text selection while dragging
evt.stopPropagation();
evt.preventDefault();
// Don't close opened card or inlined form at the end of the
// click-and-drag.
EscapeActions.executeUpTo('popup-close');
EscapeActions.preventNextClick();
}
},
}];
},
}).register('board');
Template.boardBody.onRendered(function() {
const self = BlazeComponent.getComponentForElement(this.firstNode);
self.listsDom = this.find('.js-lists');
if (!Session.get('currentCard')) {
self.scrollLeft();
}
// We want to animate the card details window closing. We rely on CSS
// transition for the actual animation.
self.listsDom._uihooks = {
removeElement(node) {
const removeNode = _.once(() => {
node.parentNode.removeChild(node);
});
if ($(node).hasClass('js-card-details')) {
$(node).css({
flexBasis: 0,
padding: 0,
});
$(self.listsDom).one(CSSEvents.transitionend, removeNode);
} else {
removeNode();
}
},
};
$(self.listsDom).sortable({
tolerance: 'pointer',
helper: 'clone',
handle: '.js-list-header',
items: '.js-list:not(.js-list-composer)',
placeholder: 'list placeholder',
distance: 7,
start(evt, ui) {
ui.placeholder.height(ui.helper.height());
Popup.close();
},
stop() {
$(self.listsDom).find('.js-list:not(.js-list-composer)').each(
(i, list) => {
const data = Blaze.getData(list);
Lists.update(data._id, {
$set: {
sort: i,
},
});
}
);
},
});
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember();
}
// Disable drag-dropping while in multi-selection mode, or if the current user
// is not a board member
self.autorun(() => {
const $listDom = $(self.listsDom);
if ($listDom.data('sortable')) {
$(self.listsDom).sortable('option', 'disabled',
MultiSelection.isActive() || !userIsMember());
}
});
// If there is no data in the board (ie, no lists) we autofocus the list
// creation form by clicking on the corresponding element.
const currentBoard = Boards.findOne(Session.get('currentBoard'));
if (userIsMember() && currentBoard.lists().count() === 0) {
self.openNewListForm();
}
});
}).register('boardBody');
BlazeComponent.extendComponent({
// Proxy
open() {
this.childComponents('inlinedForm')[0].open();
onRendered() {
this.autorun(function(){
$('#calendar-view').fullCalendar('refetchEvents');
});
},
events() {
return [{
submit(evt) {
evt.preventDefault();
const titleInput = this.find('.list-name-input');
const title = titleInput.value.trim();
if (title) {
Lists.insert({
title,
boardId: Session.get('currentBoard'),
sort: $('.list').length,
calendarOptions() {
return {
id: 'calendar-view',
defaultView: 'agendaDay',
editable: true,
timezone: 'local',
header: {
left: 'title today prev,next',
center: 'agendaDay,listDay,timelineDay agendaWeek,listWeek,timelineWeek month,timelineMonth timelineYear',
right: '',
},
// height: 'parent', nope, doesn't work as the parent might be small
height: 'auto',
/* TODO: lists as resources: https://fullcalendar.io/docs/vertical-resource-view */
navLinks: true,
nowIndicator: true,
businessHours: {
// days of week. an array of zero-based day of week integers (0=Sunday)
dow: [ 1, 2, 3, 4, 5 ], // Monday - Friday
start: '8:00',
end: '18:00',
},
locale: TAPi18n.getLanguage(),
events(start, end, timezone, callback) {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
const events = [];
currentBoard.cardsInInterval(start.toDate(), end.toDate()).forEach(function(card){
events.push({
id: card._id,
title: card.title,
start: card.startAt,
end: card.endAt,
allDay: Math.abs(card.endAt.getTime() - card.startAt.getTime()) / 1000 === 24*3600,
url: FlowRouter.url('card', {
boardId: currentBoard._id,
slug: currentBoard.slug,
cardId: card._id,
}),
});
});
callback(events);
},
eventResize(event, delta, revertFunc) {
let isOk = false;
const card = Cards.findOne(event.id);
titleInput.value = '';
titleInput.focus();
if (card) {
card.setEnd(event.end.toDate());
isOk = true;
}
if (!isOk) {
revertFunc();
}
},
}];
eventDrop(event, delta, revertFunc) {
let isOk = false;
const card = Cards.findOne(event.id);
if (card) {
// TODO: add a flag for allDay events
if (!event.allDay) {
card.setStart(event.start.toDate());
card.setEnd(event.end.toDate());
isOk = true;
}
}
if (!isOk) {
revertFunc();
}
},
};
},
}).register('addListForm');
Template.boardBody.helpers({
canSeeAddList() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
isViewCalendar() {
const currentUser = Meteor.user();
if (!currentUser) return false;
return ((currentUser.profile || {}).boardView === 'board-view-cal');
},
});
}).register('calendarView');
+23 -13
View File
@@ -1,8 +1,11 @@
@import 'nib'
position()
if arguments[0] == cover
position: absolute
if arguments[0] == cover || arguments[0] == fixed-cover
if arguments[0] == cover
position: absolute
else
position: fixed
left: 0
right: 0
top: 0
@@ -12,26 +15,19 @@ position()
.board-wrapper
position: cover
overflow-x: hidden
overflow-y: hidden
.board-canvas
position: cover
transition: margin .1s
overflow-y: auto
&.is-sibling-sidebar-open
margin-right: 248px
.lists
align-items: flex-start
display: flex
flex-direction: row
margin: 0 0 10px
padding: 0 40px 5px 0
overflow-x: auto
overflow-y: hidden
position: cover
.board-overlay
position: cover
position: fixed-cover
top: -100px
right: -400px
background: black
@@ -43,3 +39,17 @@ position()
.open-minicard-composer,
.minicard-wrapper.is-checked
display: none
@media screen and (max-width: 800px)
.board-wrapper
.board-canvas
.swimlane
border-bottom: 1px solid #CCC
display: flex
flex-direction: column
margin: 0
padding: 0 0px 0px 0
overflow-x: hidden
overflow-y: auto
+14
View File
@@ -51,11 +51,25 @@ setBoardColor(color)
&:not(.is-checked) + .minicard:hover:not(.minicard-composer)
background: lighten(color, 97%)
.toggle-label
&:after
background-color: darken(color, 20%)
.toggle-switch:checked ~ .toggle-label
background-color: lighten(color, 20%)
&:after
background-color: darken(color, 20%)
@media screen and (max-width: 800px)
&.pop-over .header
background: color
color: white
&#header ul li.current, &#header-quick-access ul li.current
border-bottom: 4px solid lighten(color, 20%)
.board-color-nephritis
setBoardColor(#27AE60)
+84 -122
View File
@@ -2,76 +2,75 @@ template(name="boardHeaderBar")
h1.header-board-menu
with currentBoard
a(class="{{#if currentUser.isBoardAdmin}}js-edit-board-title{{else}}is-disabled{{/if}}")
= title
+viewer
= title
.board-header-btns.left
unless isMiniScreen
unless isSandstorm
if currentBoard
if currentUser
a.board-header-btn.js-star-board(class="{{#if isStarred}}is-active{{/if}}"
title="{{#if isStarred}}{{_ 'click-to-unstar'}}{{else}}{{_ 'click-to-star'}}{{/if}} {{_ 'starred-boards-description'}}")
i.fa(class="fa-star{{#unless isStarred}}-o{{/unless}}")
if showStarCounter
span
= currentBoard.stars
if currentBoard
if currentUser
a.board-header-btn.js-star-board(class="{{#if isStarred}}is-active{{/if}}"
title="{{#if isStarred}}{{_ 'click-to-unstar'}}{{else}}{{_ 'click-to-star'}}{{/if}} {{_ 'starred-boards-description'}}")
i.fa(class="fa-star{{#unless isStarred}}-o{{/unless}}")
if showStarCounter
span
= currentBoard.stars
a.board-header-btn(
class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}"
title="{{_ currentBoard.permission}}")
i.fa(class="{{#if currentBoard.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
span {{_ currentBoard.permission}}
a.board-header-btn(
class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}"
title="{{_ currentBoard.permission}}")
i.fa(class="{{#if currentBoard.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
span {{_ currentBoard.permission}}
a.board-header-btn.js-watch-board(
title="{{_ watchLevel }}")
if $eq watchLevel "watching"
i.fa.fa-eye
if $eq watchLevel "tracking"
i.fa.fa-bell
if $eq watchLevel "muted"
i.fa.fa-bell-slash
span {{_ watchLevel}}
a.board-header-btn.js-watch-board(
title="{{_ watchLevel }}")
if $eq watchLevel "watching"
i.fa.fa-eye
if $eq watchLevel "tracking"
i.fa.fa-bell
if $eq watchLevel "muted"
i.fa.fa-bell-slash
span {{_ watchLevel}}
else
a.board-header-btn.js-log-in(
title="{{_ 'log-in'}}")
i.fa.fa-sign-in
span {{_ 'log-in'}}
else
a.board-header-btn.js-log-in(
title="{{_ 'log-in'}}")
i.fa.fa-sign-in
span {{_ 'log-in'}}
.board-header-btns.right
if currentBoard
if isMiniScreen
unless isSandstorm
if currentUser
a.board-header-btn.js-star-board(class="{{#if isStarred}}is-active{{/if}}"
title="{{#if isStarred}}{{_ 'click-to-unstar'}}{{else}}{{_ 'click-to-star'}}{{/if}} {{_ 'starred-boards-description'}}")
i.fa(class="fa-star{{#unless isStarred}}-o{{/unless}}")
if showStarCounter
span
= currentBoard.stars
if currentUser
a.board-header-btn.js-star-board(class="{{#if isStarred}}is-active{{/if}}"
title="{{#if isStarred}}{{_ 'click-to-unstar'}}{{else}}{{_ 'click-to-star'}}{{/if}} {{_ 'starred-boards-description'}}")
i.fa(class="fa-star{{#unless isStarred}}-o{{/unless}}")
if showStarCounter
span
= currentBoard.stars
a.board-header-btn(
class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}"
title="{{_ currentBoard.permission}}")
i.fa(class="{{#if currentBoard.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
span {{_ currentBoard.permission}}
a.board-header-btn(
class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}"
title="{{_ currentBoard.permission}}")
i.fa(class="{{#if currentBoard.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
span {{_ currentBoard.permission}}
a.board-header-btn.js-watch-board(
title="{{_ watchLevel }}")
if $eq watchLevel "watching"
i.fa.fa-eye
if $eq watchLevel "tracking"
i.fa.fa-bell
if $eq watchLevel "muted"
i.fa.fa-bell-slash
span {{_ watchLevel}}
a.board-header-btn.js-watch-board(
title="{{_ watchLevel }}")
if $eq watchLevel "watching"
i.fa.fa-eye
if $eq watchLevel "tracking"
i.fa.fa-bell
if $eq watchLevel "muted"
i.fa.fa-bell-slash
span {{_ watchLevel}}
else
a.board-header-btn.js-log-in(
title="{{_ 'log-in'}}")
i.fa.fa-sign-in
span {{_ 'log-in'}}
else
a.board-header-btn.js-log-in(
title="{{_ 'log-in'}}")
i.fa.fa-sign-in
span {{_ 'log-in'}}
if isSandstorm
if currentUser
a.board-header-btn.js-open-archived-board
@@ -86,6 +85,25 @@ 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
span {{_ 'search'}}
unless currentBoard.isTemplatesBoard
a.board-header-btn.js-toggle-board-view(
title="{{_ 'board-view'}}")
i.fa.fa-th-large
span {{#if currentUser.profile.boardView}}{{_ currentUser.profile.boardView}}{{else}}{{_ 'board-view-lists'}}{{/if}}
if canModifyBoard
a.board-header-btn.js-multiselection-activate(
@@ -98,32 +116,8 @@ template(name="boardHeaderBar")
i.fa.fa-times-thin
.separator
a.board-header-btn.js-open-board-menu(title="{{_ 'boardMenuPopup-title'}}")
i.board-header-btn-icon.fa.fa-navicon
template(name="boardMenuPopup")
ul.pop-over-list
li: a.js-open-archives {{_ 'archived-items'}}
if currentUser.isBoardAdmin
li: a.js-change-board-color {{_ 'board-change-color'}}
//-
XXX Language should be handled by sandstorm, but for now display a
language selection link in the board menu. This link is normally present
in the header bar that is not displayed on sandstorm.
if isSandstorm
li: a.js-change-language {{_ 'language'}}
unless isSandstorm
if currentUser.isBoardAdmin
hr
ul.pop-over-list
li: a(href="{{exportUrl}}", download="{{exportFilename}}") {{_ 'export-board'}}
li: a.js-archive-board {{_ 'archive-board'}}
li: a.js-outgoing-webhooks {{_ 'outgoing-webhooks'}}
if isSandstorm
hr
ul.pop-over-list
li: a(href="{{exportUrl}}", download="{{exportFilename}}") {{_ 'export-board'}}
li: a.js-import-board {{_ 'import-board-c'}}
a.board-header-btn.js-toggle-sidebar
i.fa.fa-navicon
template(name="boardVisibilityList")
ul.pop-over-list
@@ -174,14 +168,6 @@ template(name="boardChangeWatchPopup")
i.fa.fa-check
span.sub-name {{_ 'muted-info'}}
template(name="boardChangeColorPopup")
.board-backgrounds-list.clearfix
each backgroundColors
.board-background-select.js-select-background
span.background-box(class="board-color-{{this}}")
if isSelected
i.fa.fa-check
template(name="createBoard")
form
label
@@ -203,45 +189,21 @@ template(name="createBoard")
input.primary.wide(type="submit" value="{{_ 'create'}}")
span.quiet
| {{_ 'or'}}
a.js-import-board {{_ 'import-board'}}
template(name="chooseBoardSource")
ul.pop-over-list
li
a(href="{{pathFor '/import/trello'}}") {{_ 'from-trello'}}
li
a(href="{{pathFor '/import/wekan'}}") {{_ 'from-wekan'}}
a.js-import-board {{_ 'import'}}
span.quiet
| /
a.js-board-template {{_ 'template'}}
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="archiveBoardPopup")
template(name="boardCreateRulePopup")
p {{_ 'close-board-pop'}}
button.js-confirm.negate.full(type="submit") {{_ 'archive'}}
template(name="outgoingWebhooksPopup")
each integrations
form.integration-form
if title
h4 {{title}}
else
h4 {{_ 'no-name'}}
label
| URL
input.js-outgoing-webhooks-url(type="text" name="url" value=url)
input(type="hidden" value=_id name="id")
input.primary.wide(type="submit" value="{{_ 'save'}}")
form.integration-form
h4
| {{_ 'new-outgoing-webhook'}}
label
| URL
input.js-outgoing-webhooks-url(type="text" name="url" autofocus)
input.primary.wide(type="submit" value="{{_ 'save'}}")
+38 -79
View File
@@ -1,5 +1,9 @@
Template.boardMenuPopup.events({
'click .js-rename-board': Popup.open('boardChangeTitle'),
'click .js-custom-fields'() {
Sidebar.setView('customFields');
Popup.close();
},
'click .js-open-archives'() {
Sidebar.setView('archives');
Popup.close();
@@ -13,8 +17,15 @@ Template.boardMenuPopup.events({
// confirm that the board was successfully archived.
FlowRouter.go('home');
}),
'click .js-delete-board': Popup.afterConfirm('deleteBoard', function() {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
Popup.close();
Boards.remove(currentBoard._id);
FlowRouter.go('home');
}),
'click .js-outgoing-webhooks': Popup.open('outgoingWebhooks'),
'click .js-import-board': Popup.open('chooseBoardSource'),
'click .js-subtask-settings': Popup.open('boardSubtaskSettings'),
});
Template.boardMenuPopup.helpers({
@@ -58,10 +69,6 @@ BlazeComponent.extendComponent({
return user && user.hasStarred(boardId);
},
isMiniScreen() {
return Utils.isMiniScreen();
},
// Only show the star counter if the number of star is greater than 2
showStarCounter() {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
@@ -80,6 +87,21 @@ BlazeComponent.extendComponent({
'click .js-open-archived-board'() {
Modal.open('archivedBoards');
},
'click .js-toggle-board-view'() {
const currentUser = Meteor.user();
if ((currentUser.profile || {}).boardView === 'board-view-swimlanes') {
currentUser.setBoardView('board-view-cal');
} else if ((currentUser.profile || {}).boardView === 'board-view-lists') {
currentUser.setBoardView('board-view-swimlanes');
} else if ((currentUser.profile || {}).boardView === 'board-view-cal') {
currentUser.setBoardView('board-view-lists');
} else {
currentUser.setBoardView('board-view-swimlanes');
}
},
'click .js-toggle-sidebar'() {
Sidebar.toggle();
},
'click .js-open-filter-view'() {
Sidebar.setView('filter');
},
@@ -88,6 +110,12 @@ BlazeComponent.extendComponent({
Sidebar.setView();
Filter.reset();
},
'click .js-open-search-view'() {
Sidebar.setView('search');
},
'click .js-open-rules-view'() {
Modal.openWide('rulesMain');
},
'click .js-multiselection-activate'() {
const currentCard = Session.get('currentCard');
MultiSelection.activate();
@@ -112,28 +140,6 @@ Template.boardHeaderBar.helpers({
},
});
BlazeComponent.extendComponent({
backgroundColors() {
return Boards.simpleSchema()._schema.color.allowedValues;
},
isSelected() {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
return currentBoard.color === this.currentData().toString();
},
events() {
return [{
'click .js-select-background'(evt) {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
const newColor = this.currentData().toString();
currentBoard.setColor(newColor);
evt.preventDefault();
},
}];
},
}).register('boardChangeColorPopup');
const CreateBoard = BlazeComponent.extendComponent({
template() {
return 'createBoard';
@@ -168,6 +174,11 @@ const CreateBoard = BlazeComponent.extendComponent({
permission: visibility,
}));
Swimlanes.insert({
title: 'Default',
boardId: this.boardId.get(),
});
Utils.goBoardId(this.boardId.get());
},
@@ -180,16 +191,11 @@ const CreateBoard = BlazeComponent.extendComponent({
'click .js-import': Popup.open('boardImportBoard'),
submit: this.onSubmit,
'click .js-import-board': Popup.open('chooseBoardSource'),
'click .js-board-template': Popup.open('searchElement'),
}];
},
}).register('createBoardPopup');
BlazeComponent.extendComponent({
template() {
return 'chooseBoardSource';
},
}).register('chooseBoardSourcePopup');
(class HeaderBarCreateBoard extends CreateBoard {
onSubmit(evt) {
super.onSubmit(evt);
@@ -239,50 +245,3 @@ BlazeComponent.extendComponent({
}];
},
}).register('boardChangeWatchPopup');
BlazeComponent.extendComponent({
integrations() {
const boardId = Session.get('currentBoard');
return Integrations.find({ boardId: `${boardId}` }).fetch();
},
integration(id) {
const boardId = Session.get('currentBoard');
return Integrations.findOne({ _id: id, boardId: `${boardId}` });
},
events() {
return [{
'submit'(evt) {
evt.preventDefault();
const url = evt.target.url.value;
const boardId = Session.get('currentBoard');
let id = null;
let integration = null;
if (evt.target.id) {
id = evt.target.id.value;
integration = this.integration(id);
if (url) {
Integrations.update(integration._id, {
$set: {
url: `${url}`,
},
});
} else {
Integrations.remove(integration._id);
}
} else if (url) {
Integrations.insert({
userId: Meteor.userId(),
enabled: true,
type: 'outgoing-webhooks',
url: `${url}`,
boardId: `${boardId}`,
activities: ['all'],
});
}
Popup.close();
},
}];
},
}).register('outgoingWebhooksPopup');
+19
View File
@@ -1,3 +1,22 @@
.integration-form
padding: 5px
border-bottom: 1px solid #ccc
.flex
display: -webkit-box
display: -moz-box
display: -webkit-flex
display: -moz-flex
display: -ms-flexbox
display: flex
.option
@extends .flex
-webkit-border-radius: 3px;
border-radius: 3px;
background: #fff;
text-decoration: none;
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.2);
box-shadow: 0 1px 2px rgba(0,0,0,0.2);
margin-top: 5px;
padding: 5px;
+21 -5
View File
@@ -1,6 +1,8 @@
template(name="boardList")
.wrapper
ul.board-list.clearfix
li.js-add-board
a.board-list-item.label {{_ 'add-board'}}
each boards
li(class="{{#if isStarred}}starred{{/if}}" class=colorClass)
if isInvited
@@ -16,14 +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= description
li.js-add-board
a.board-list-item.label {{_ 'add-board'}}
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}}")
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'}}
@@ -31,3 +44,6 @@ template(name="boardListHeaderBar")
a.board-header-btn.js-open-archived-board
i.fa.fa-archive
span {{_ 'archives'}}
a.board-header-btn(href="{{pathFor 'board' id=templatesBoardId slug=templatesBoardSlug}}")
i.fa.fa-clone
span {{_ 'templates'}}
+53 -4
View File
@@ -1,18 +1,47 @@
const subManager = new SubsManager();
Template.boardListHeaderBar.events({
'click .js-open-archived-board'() {
Modal.open('archivedBoards');
},
});
Template.boardListHeaderBar.helpers({
templatesBoardId() {
return Meteor.user().getTemplatesBoardId();
},
templatesBoardSlug() {
return Meteor.user().getTemplatesBoardSlug();
},
});
BlazeComponent.extendComponent({
onCreated() {
Meteor.subscribe('setting');
},
boards() {
return Boards.find({
archived: false,
'members.userId': Meteor.userId(),
}, {
sort: ['title'],
});
type: 'board',
}, { sort: ['title'] });
},
isStarred() {
const user = Meteor.user();
return user && user.hasStarred(this.currentData()._id);
},
hasOvertimeCards() {
subManager.subscribe('board', this.currentData()._id, false);
return this.currentData().hasOvertimeCards();
},
hasSpentTimeCards() {
subManager.subscribe('board', this.currentData()._id, false);
return this.currentData().hasSpentTimeCards();
},
isInvited() {
const user = Meteor.user();
return user && user.isInvitedTo(this.currentData()._id);
@@ -26,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);
+48 -2
View File
@@ -17,6 +17,7 @@ $spaceBetweenTiles = 16px
opacity: 1
.board-list-item
overflow: hidden;
background-color: #999
color: #f6f6f6
height: 90px
@@ -43,9 +44,9 @@ $spaceBetweenTiles = 16px
line-height: 22px
.board-list-item-desc
color: rgba(255, 255, 255, .5)
color: #fff
display: block
font-size: 10px
font-size: 14px
font-weight: 400
line-height: 18px
@@ -73,16 +74,61 @@ $spaceBetweenTiles = 16px
transition-duration: .15s
transition-property: color, font-size, background
.fa-circle
bottom: 0;
font-size: 10px;
height: 10px;
line-height: 10px;
padding: 9px 9px;
position: absolute;
right: 0;
transition-duration: .15s
transition-property: color, font-size, background
.has-overtime-card-active
color: #eb4646 !important
.no-overtime-card-active
color: #3cb500 !important
.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
+8
View File
@@ -0,0 +1,8 @@
template(name="miniboard")
.minicard(
class="minicard-{{colorClass}}")
.minicard-title
.handle
.fa.fa-arrows
+viewer
= title
+3 -3
View File
@@ -21,11 +21,11 @@ template(name="attachmentDeletePopup")
template(name="attachmentsGalery")
.attachments-galery
each attachments
a.attachment-item.js-open-viewer(title="{{_ 'added'}} {{ moment uploadedAt }}")
.attachment-thumbnail
.attachment-item
a.attachment-thumbnail.swipebox(href="{{url}}" title="{{name}}")
if isUploaded
if isImage
img.attachment-thumbnail-img.js-preview-image(src="{{url}}")
img.attachment-thumbnail-img(src="{{url}}")
else
span.attachment-thumbnail-ext= extension
else
+20 -7
View File
@@ -11,9 +11,6 @@ Template.attachmentsGalery.events({
'click .js-download'(event) {
event.stopPropagation();
},
'click .js-open-viewer'() {
// XXX Not implemented!
},
'click .js-add-cover'() {
Cards.findOne(this.cardId).setCover(this._id);
},
@@ -60,10 +57,21 @@ Template.cardAttachmentsPopup.events({
const card = this;
FS.Utility.eachFile(evt, (f) => {
const file = new FS.File(f);
file.boardId = card.boardId;
file.cardId = card._id;
if (card.isLinkedCard()) {
file.boardId = Cards.findOne(card.linkedId).boardId;
file.cardId = card.linkedId;
} else {
file.boardId = card.boardId;
file.cardId = card._id;
}
file.userId = Meteor.userId();
Attachments.insert(file);
const attachment = Attachments.insert(file);
if (attachment && attachment._id && attachment.isImage()) {
card.setCover(attachment._id);
}
Popup.close();
});
},
@@ -110,7 +118,12 @@ Template.previewClipboardImagePopup.events({
file.boardId = card.boardId;
file.cardId = card._id;
file.userId = Meteor.userId();
Attachments.insert(file);
const attachment = Attachments.insert(file);
if (attachment && attachment._id && attachment.isImage()) {
card.setCover(attachment._id);
}
pastedResults = null;
$(document.body).pasteImageReader(() => {});
Popup.close();
+21
View File
@@ -58,7 +58,28 @@
.preview-clipboard-image
width: 280px
max-width: 100%;
height: 200px
display: block
border: 1px solid black
box-shadow: 0 1px 2px rgba(0,0,0,.2)
@media screen and (max-width: 800px)
.attachments-galery
flex-direction
row
.attachment-item
width: 50% - 2%
.attachment-thumbnail
height: 130px
.attachment-details
font-size: 1.1em
@media screen and (max-width: 360px)
.attachments-galery
.attachment-item
width: 100%
.attachment-thumbnail
height: 200px
@@ -0,0 +1,81 @@
template(name="cardCustomFieldsPopup")
ul.pop-over-list
each board.customFields
li.item(class="")
a.name.js-select-field(href="#")
span.full-name
+viewer
= name
if hasCustomField
i.fa.fa-check
hr
a.quiet-button.full.js-settings
i.fa.fa-cog
span {{_ 'settings'}}
template(name="cardCustomField")
+Template.dynamic(template=getTemplate)
template(name="cardCustomField-text")
if canModifyCard
+inlinedForm(classNames="js-card-customfield-text")
+editor(autofocus=true)
= value
.edit-controls.clearfix
button.primary(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
else
a.js-open-inlined-form
if value
+viewer
= value
else
| {{_ 'edit'}}
template(name="cardCustomField-number")
if canModifyCard
+inlinedForm(classNames="js-card-customfield-number")
input(type="number" value=data.value)
.edit-controls.clearfix
button.primary(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
else
a.js-open-inlined-form
if value
= value
else
| {{_ 'edit'}}
template(name="cardCustomField-date")
if canModifyCard
a.js-edit-date(title="{{showTitle}}" class="{{classes}}")
if value
div.card-date
time(datetime="{{showISODate}}")
| {{showDate}}
else
| {{_ 'edit'}}
template(name="cardCustomField-dropdown")
if canModifyCard
+inlinedForm(classNames="js-card-customfield-dropdown")
select.inline
each items
if($eq data.value this._id)
option(value=_id selected="selected")
+viewer
= name
else
option(value=_id)
+viewer
= name
.edit-controls.clearfix
button.primary(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
else
a.js-open-inlined-form
if value
+viewer
= selectedItem
else
| {{_ 'edit'}}
+179
View File
@@ -0,0 +1,179 @@
Template.cardCustomFieldsPopup.helpers({
hasCustomField() {
const card = Cards.findOne(Session.get('currentCard'));
const customFieldId = this._id;
return card.customFieldIndex(customFieldId) > -1;
},
});
Template.cardCustomFieldsPopup.events({
'click .js-select-field'(evt) {
const card = Cards.findOne(Session.get('currentCard'));
const customFieldId = this._id;
card.toggleCustomField(customFieldId);
evt.preventDefault();
},
'click .js-settings'(evt) {
EscapeActions.executeUpTo('detailsPane');
Sidebar.setView('customFields');
evt.preventDefault();
},
});
// cardCustomField
const CardCustomField = BlazeComponent.extendComponent({
getTemplate() {
return `cardCustomField-${this.data().definition.type}`;
},
onCreated() {
const self = this;
self.card = Cards.findOne(Session.get('currentCard'));
self.customFieldId = this.data()._id;
},
canModifyCard() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
},
});
CardCustomField.register('cardCustomField');
// cardCustomField-text
(class extends CardCustomField {
onCreated() {
super.onCreated();
}
events() {
return [{
'submit .js-card-customfield-text'(evt) {
evt.preventDefault();
const value = this.currentComponent().getValue();
this.card.setCustomField(this.customFieldId, value);
},
}];
}
}).register('cardCustomField-text');
// cardCustomField-number
(class extends CardCustomField {
onCreated() {
super.onCreated();
}
events() {
return [{
'submit .js-card-customfield-number'(evt) {
evt.preventDefault();
const value = parseInt(this.find('input').value, 10);
this.card.setCustomField(this.customFieldId, value);
},
}];
}
}).register('cardCustomField-number');
// cardCustomField-date
(class extends CardCustomField {
onCreated() {
super.onCreated();
const self = this;
self.date = ReactiveVar();
self.now = ReactiveVar(moment());
window.setInterval(() => {
self.now.set(moment());
}, 60000);
self.autorun(() => {
self.date.set(moment(self.data().value));
});
}
showDate() {
// this will start working once mquandalle:moment
// is updated to at least moment.js 2.10.5
// until then, the date is displayed in the "L" format
return this.date.get().calendar(null, {
sameElse: 'llll',
});
}
showISODate() {
return this.date.get().toISOString();
}
classes() {
if (this.date.get().isBefore(this.now.get(), 'minute') &&
this.now.get().isBefore(this.data().value)) {
return 'current';
}
return '';
}
showTitle() {
return `${TAPi18n.__('card-start-on')} ${this.date.get().format('LLLL')}`;
}
events() {
return [{
'click .js-edit-date': Popup.open('cardCustomField-date'),
}];
}
}).register('cardCustomField-date');
// cardCustomField-datePopup
(class extends DatePicker {
onCreated() {
super.onCreated();
const self = this;
self.card = Cards.findOne(Session.get('currentCard'));
self.customFieldId = this.data()._id;
this.data().value && this.date.set(moment(this.data().value));
}
_storeDate(date) {
this.card.setCustomField(this.customFieldId, date);
}
_deleteDate() {
this.card.setCustomField(this.customFieldId, '');
}
}).register('cardCustomField-datePopup');
// cardCustomField-dropdown
(class extends CardCustomField {
onCreated() {
super.onCreated();
this._items = this.data().definition.settings.dropdownItems;
this.items = this._items.slice(0);
this.items.unshift({
_id: '',
name: TAPi18n.__('custom-field-dropdown-none'),
});
}
selectedItem() {
const selected = this._items.find((item) => {
return item._id === this.data().value;
});
return (selected) ? selected.name : TAPi18n.__('custom-field-dropdown-unknown');
}
events() {
return [{
'submit .js-card-customfield-dropdown'(evt) {
evt.preventDefault();
const value = this.find('select').value;
this.card.setCustomField(this.customFieldId, value);
},
}];
}
}).register('cardCustomField-dropdown');
-16
View File
@@ -1,19 +1,3 @@
template(name="editCardDate")
.edit-card-date
form.edit-date
.fields
.left
label(for="date") {{_ 'date'}}
input.js-date-field#date(type="text" name="date" value=showDate placeholder=dateFormat autofocus)
.right
label(for="time") {{_ 'time'}}
input.js-time-field#time(type="text" name="time" value=showTime placeholder=timeFormat)
.js-datepicker
if error.get
.warning {{_ error.get}}
button.primary.wide.left.js-submit-date(type="submit") {{_ 'save'}}
button.js-delete-date.negate.wide.right.js-delete-date {{_ 'delete'}}
template(name="dateBadge")
if canModifyCard
a.js-edit-date.card-date(title="{{showTitle}}" class="{{classes}}")
+175 -26
View File
@@ -1,5 +1,5 @@
// Edit start & due dates
const EditCardDate = BlazeComponent.extendComponent({
// Edit received, start, due & end dates
BlazeComponent.extendComponent({
template() {
return 'editCardDate';
},
@@ -92,11 +92,35 @@ Template.dateBadge.helpers({
},
});
// editCardStartDatePopup
(class extends EditCardDate {
// editCardReceivedDatePopup
(class extends DatePicker {
onCreated() {
super.onCreated();
this.data().startAt && this.date.set(moment(this.data().startAt));
this.data().getReceived() && this.date.set(moment(this.data().getReceived()));
}
_storeDate(date) {
this.card.setReceived(date);
}
_deleteDate() {
this.card.setReceived(null);
}
}).register('editCardReceivedDatePopup');
// editCardStartDatePopup
(class extends DatePicker {
onCreated() {
super.onCreated();
this.data().getStart() && this.date.set(moment(this.data().getStart()));
}
onRendered() {
super.onRendered();
if (moment.isDate(this.card.getReceived())) {
this.$('.js-datepicker').datepicker('setStartDate', this.card.getReceived());
}
}
_storeDate(date) {
@@ -104,21 +128,21 @@ Template.dateBadge.helpers({
}
_deleteDate() {
this.card.unsetStart();
this.card.setStart(null);
}
}).register('editCardStartDatePopup');
// editCardDueDatePopup
(class extends EditCardDate {
(class extends DatePicker {
onCreated() {
super.onCreated();
this.data().dueAt && this.date.set(moment(this.data().dueAt));
this.data().getDue() && this.date.set(moment(this.data().getDue()));
}
onRendered() {
super.onRendered();
if (moment.isDate(this.card.startAt)) {
this.$('.js-datepicker').datepicker('setStartDate', this.card.startAt);
if (moment.isDate(this.card.getStart())) {
this.$('.js-datepicker').datepicker('setStartDate', this.card.getStart());
}
}
@@ -127,12 +151,35 @@ Template.dateBadge.helpers({
}
_deleteDate() {
this.card.unsetDue();
this.card.setDue(null);
}
}).register('editCardDueDatePopup');
// editCardEndDatePopup
(class extends DatePicker {
onCreated() {
super.onCreated();
this.data().getEnd() && this.date.set(moment(this.data().getEnd()));
}
// Display start & due dates
onRendered() {
super.onRendered();
if (moment.isDate(this.card.getStart())) {
this.$('.js-datepicker').datepicker('setStartDate', this.card.getStart());
}
}
_storeDate(date) {
this.card.setEnd(date);
}
_deleteDate() {
this.card.setEnd(null);
}
}).register('editCardEndDatePopup');
// Display received, start, due & end dates
const CardDate = BlazeComponent.extendComponent({
template() {
return 'dateBadge';
@@ -161,21 +208,67 @@ const CardDate = BlazeComponent.extendComponent({
},
});
class CardReceivedDate extends CardDate {
onCreated() {
super.onCreated();
const self = this;
self.autorun(() => {
self.date.set(moment(self.data().getReceived()));
});
}
classes() {
let classes = 'received-date ';
const dueAt = this.data().getDue();
const endAt = this.data().getEnd();
const startAt = this.data().getStart();
const theDate = this.date.get();
// if dueAt, endAt and startAt exist & are > receivedAt, receivedAt doesn't need to be flagged
if (((startAt) && (theDate.isAfter(dueAt))) ||
((endAt) && (theDate.isAfter(endAt))) ||
((dueAt) && (theDate.isAfter(dueAt))))
classes += 'long-overdue';
else
classes += 'current';
return classes;
}
showTitle() {
return `${TAPi18n.__('card-received-on')} ${this.date.get().format('LLLL')}`;
}
events() {
return super.events().concat({
'click .js-edit-date': Popup.open('editCardReceivedDate'),
});
}
}
CardReceivedDate.register('cardReceivedDate');
class CardStartDate extends CardDate {
onCreated() {
super.onCreated();
const self = this;
self.autorun(() => {
self.date.set(moment(self.data().startAt));
self.date.set(moment(self.data().getStart()));
});
}
classes() {
if (this.date.get().isBefore(this.now.get(), 'minute') &&
this.now.get().isBefore(this.data().dueAt)) {
return 'current';
}
return '';
let classes = 'start-date' + ' ';
const dueAt = this.data().getDue();
const endAt = this.data().getEnd();
const theDate = this.date.get();
const now = this.now.get();
// if dueAt or endAt exist & are > startAt, startAt doesn't need to be flagged
if (((endAt) && (theDate.isAfter(endAt))) ||
((dueAt) && (theDate.isAfter(dueAt))))
classes += 'long-overdue';
else if (theDate.isBefore(now, 'minute'))
classes += 'almost-due';
else
classes += 'current';
return classes;
}
showTitle() {
@@ -195,18 +288,28 @@ class CardDueDate extends CardDate {
super.onCreated();
const self = this;
self.autorun(() => {
self.date.set(moment(self.data().dueAt));
self.date.set(moment(self.data().getDue()));
});
}
classes() {
if (this.now.get().diff(this.date.get(), 'days') >= 2)
return 'long-overdue';
else if (this.now.get().diff(this.date.get(), 'minute') >= 0)
return 'due';
else if (this.now.get().diff(this.date.get(), 'days') >= -1)
return 'almost-due';
return '';
let classes = 'due-date' + ' ';
const endAt = this.data().getEnd();
const theDate = this.date.get();
const now = this.now.get();
// if the due date is after the end date, green - done early
if ((endAt) && (theDate.isAfter(endAt)))
classes += 'current';
// if there is an end date, don't need to flag the due date
else if (endAt)
classes += '';
else if (now.diff(theDate, 'days') >= 2)
classes += 'long-overdue';
else if (now.diff(theDate, 'minute') >= 0)
classes += 'due';
else if (now.diff(theDate, 'days') >= -1)
classes += 'almost-due';
return classes;
}
showTitle() {
@@ -221,6 +324,46 @@ class CardDueDate extends CardDate {
}
CardDueDate.register('cardDueDate');
class CardEndDate extends CardDate {
onCreated() {
super.onCreated();
const self = this;
self.autorun(() => {
self.date.set(moment(self.data().getEnd()));
});
}
classes() {
let classes = 'end-date' + ' ';
const dueAt = this.data().getDue();
const theDate = this.date.get();
if (theDate.diff(dueAt, 'days') >= 2)
classes += 'long-overdue';
else if (theDate.diff(dueAt, 'days') >= 0)
classes += 'due';
else if (theDate.diff(dueAt, 'days') >= -2)
classes += 'almost-due';
return classes;
}
showTitle() {
return `${TAPi18n.__('card-end-on')} ${this.date.get().format('LLLL')}`;
}
events() {
return super.events().concat({
'click .js-edit-date': Popup.open('editCardEndDate'),
});
}
}
CardEndDate.register('cardEndDate');
(class extends CardReceivedDate {
showDate() {
return this.date.get().format('l');
}
}).register('minicardReceivedDate');
(class extends CardStartDate {
showDate() {
return this.date.get().format('l');
@@ -232,3 +375,9 @@ CardDueDate.register('cardDueDate');
return this.date.get().format('l');
}
}).register('minicardDueDate');
(class extends CardEndDate {
showDate() {
return this.date.get().format('l');
}
}).register('minicardEndDate');
+22 -21
View File
@@ -1,22 +1,3 @@
.edit-card-date
.fields
.left
width: 56%
.right
width: 38%
.datepicker
width: 100%
table
width: 100%
border: none
border-spacing: 0
border-collapse: collapse
thead
background: none
td, th
box-sizing: border-box
.card-date
display: block
border-radius: 4px
@@ -49,10 +30,30 @@
&:hover, &.is-active
background-color: darken(#fd5d47, 7)
&.end-date
time
&::before
content: "\f253" // symbol: fa-hourglass-end
&.due-date
time
&::before
content: "\f090" // symbol: fa-sign-in
&.start-date
time
&::before
content: "\f251" // symbol: fa-hourglass-start
&.received-date
time
&::before
content: "\f08b" // symbol: fa-sign-out
time
&::before
font: normal normal normal 14px/1 FontAwesome
font-size: inherit
-webkit-font-smoothing: antialiased
content: "\f017" // clock symbol
margin-right: 0.3em
margin-right: 0.3em
+231 -43
View File
@@ -1,6 +1,6 @@
template(name="cardDetails")
section.card-details.js-card-details.js-perfect-scrollbar: .card-details-canvas
.card-details-header
.card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}')
+inlinedForm(classNames="js-card-details-title")
+editCardTitleForm
else
@@ -9,17 +9,64 @@ template(name="cardDetails")
a.fa.fa-navicon.card-details-menu.js-open-card-details-menu
h2.card-details-title.js-card-title(
class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}")
= title
if isWatching
i.fa.fa-eye.card-details-watch
+viewer
= getTitle
if isWatching
i.fa.fa-eye.card-details-watch
.card-details-path
each parentList
| &nbsp; &gt; &nbsp;
a.js-parent-card(href=linkForCard) {{title}}
// else
{{_ 'top-level-card'}}
if isLinkedCard
h3.linked-card-location
+viewer
| {{getBoardTitle}} > {{getTitle}}
if archived
p.warning {{_ 'card-archived'}}
if getArchived
if isLinkedBoard
p.warning {{_ 'board-archived'}}
else
p.warning {{_ 'card-archived'}}
.card-details-items
.card-details-item.card-details-item-received
h3.card-details-item-title {{_ 'card-received'}}
if getReceived
+cardReceivedDate
else
if canModifyCard
a.js-received-date {{_ 'add'}}
.card-details-item.card-details-item-start
h3.card-details-item-title {{_ 'card-start'}}
if getStart
+cardStartDate
else
if canModifyCard
a.js-start-date {{_ 'add'}}
.card-details-item.card-details-item-due
h3.card-details-item-title {{_ 'card-due'}}
if getDue
+cardDueDate
else
if canModifyCard
a.js-due-date {{_ 'add'}}
.card-details-item.card-details-item-end
h3.card-details-item-title {{_ 'card-end'}}
if getEnd
+cardEndDate
else
if canModifyCard
a.js-end-date {{_ 'add'}}
.card-details-items
.card-details-item.card-details-item-members
h3.card-details-item-title {{_ 'members'}}
each members
each getMembers
+userAvatar(userId=this cardId=../_id)
| {{! XXX Hack to hide syntaxic coloration /// }}
if canModifyCard
@@ -30,36 +77,44 @@ 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
if startAt
.card-details-item.card-details-item-start
h3.card-details-item-title {{_ 'card-start'}}
+cardStartDate
if dueAt
.card-details-item.card-details-item-due
h3.card-details-item-title {{_ 'card-due'}}
+cardDueDate
.card-details-items
each customFieldsWD
.card-details-item.card-details-item-customfield
h3.card-details-item-title
+viewer
= definition.name
+cardCustomField
.card-details-items
if getSpentTime
.card-details-item.card-details-item-spent
if getIsOvertime
h3.card-details-item-title {{_ 'overtime-hours'}}
else
h3.card-details-item-title {{_ 'spent-time-hours'}}
+cardSpentTime
//- XXX We should use "editable" to avoid repetiting ourselves
if canModifyCard
h3.card-details-item-title {{_ 'description'}}
+inlinedCardDescription(classNames="card-description js-card-description")
+editor(autofocus=true)
| {{getUnsavedValue 'cardDescription' _id description}}
| {{getUnsavedValue 'cardDescription' _id getDescription}}
.edit-controls.clearfix
button.primary(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
else
a.js-open-inlined-form
if description
if getDescription
+viewer
= description
= getDescription
else
| {{_ 'edit'}}
if (hasUnsavedValue 'cardDescription' _id)
@@ -68,47 +123,117 @@ template(name="cardDetails")
a.js-open-inlined-form {{_ 'view-it'}}
= ' - '
a.js-close-inlined-form {{_ 'discard'}}
else if description
else if getDescription
h3.card-details-item-title {{_ 'description'}}
+viewer
= description
= getDescription
.card-details-items
.card-details-item.card-details-item-name
h3.card-details-item-title {{_ 'requested-by'}}
if canModifyCard
+inlinedForm(classNames="js-card-details-requester")
+editCardRequesterForm
else
a.js-open-inlined-form
if getRequestedBy
+viewer
= getRequestedBy
else
| {{_ 'add'}}
else if getRequestedBy
+viewer
= getRequestedBy
.card-details-item.card-details-item-name
h3.card-details-item-title {{_ 'assigned-by'}}
if canModifyCard
+inlinedForm(classNames="js-card-details-assigner")
+editCardAssignerForm
else
a.js-open-inlined-form
if getAssignedBy
+viewer
= getAssignedBy
else
| {{_ 'add'}}
else if getRequestedBy
+viewer
= getAssignedBy
hr
+checklists(cardId = _id)
if attachments.count
if currentBoard.allowsSubtasks
hr
h2
i.fa.fa-paperclip
| {{_ 'attachments'}}
+attachmentsGalery
+subtasks(cardId = _id)
hr
h2 {{ _ 'activity'}}
h3
i.fa.fa-paperclip
| {{_ 'attachments'}}
+attachmentsGalery
hr
unless currentUser.isNoComments
.activity-title
h3 {{ _ 'activity'}}
if currentUser.isBoardMember
.material-toggle-switch
span.toggle-switch-title {{_ 'hide-system-messages'}}
if hiddenSystemMessages
input.toggle-switch(type="checkbox" id="toggleButton" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleButton")
label.toggle-label(for="toggleButton")
if currentUser.isBoardMember
+commentForm
if isLoaded.get
+activities(card=this mode="card")
unless currentUser.isNoComments
+commentForm
unless currentUser.isNoComments
if isLoaded.get
if isLinkedCard
+activities(card=this mode="linkedcard")
else if isLinkedBoard
+activities(card=this mode="linkedboard")
else
+activities(card=this mode="card")
template(name="editCardTitleForm")
textarea.js-edit-card-title(rows='1' autofocus)
= title
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 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 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
template(name="cardDetailsActionsPopup")
ul.pop-over-list
li: a.js-toggle-watch-card {{#if isWatching}}{{_ 'unwatch'}}{{else}}{{_ 'watch'}}{{/if}}
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-start-date {{_ 'editCardStartDatePopup-title'}}
li: a.js-due-date {{_ 'editCardDueDatePopup-title'}}
//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-spent-time {{_ 'editCardSpentTimePopup-title'}}
li: a.js-set-card-color {{_ 'setCardColorPopup-title'}}
hr
ul.pop-over-list
li: a.js-move-card-to-top {{_ 'moveCardToTop-title'}}
@@ -117,19 +242,47 @@ template(name="cardDetailsActionsPopup")
ul.pop-over-list
li: a.js-move-card {{_ 'moveCardPopup-title'}}
li: a.js-copy-card {{_ 'copyCardPopup-title'}}
li: a.js-copy-checklist-cards {{_ 'copyChecklistToManyCardsPopup-title'}}
unless archived
li: a.js-archive {{_ 'archive-card'}}
li: a.js-more {{_ 'cardMorePopup-title'}}
template(name="moveCardPopup")
+boardLists
+boardsAndLists
template(name="copyCardPopup")
label(for='copy-card-title') {{_ 'title'}}:
textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)
= title
= getTitle
+boardsAndLists
template(name="copyChecklistToManyCardsPopup")
label(for='copy-checklist-cards-title') {{_ 'copyChecklistToManyCardsPopup-instructions'}}:
textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)
| {{_ 'copyChecklistToManyCardsPopup-format'}}
+boardsAndLists
template(name="boardsAndLists")
label {{_ 'boards'}}:
select.js-select-boards(autofocus)
each boards
if $eq _id currentBoard._id
option(value="{{_id}}" selected) {{_ 'current'}}
else
option(value="{{_id}}") {{title}}
label {{_ 'swimlanes'}}:
select.js-select-swimlanes
each swimlanes
option(value="{{_id}}") {{title}}
label {{_ 'lists'}}:
+boardLists
select.js-select-lists
each aBoardLists
option(value="{{_id}}") {{title}}
.edit-controls.clearfix
button.primary.confirm.js-done {{_ 'done'}}
template(name="cardMembersPopup")
ul.pop-over-list.js-card-member-list
@@ -149,14 +302,49 @@ template(name="cardMorePopup")
span {{_ 'link-card'}}
= ' '
i.fa.colorful(class="{{#if board.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
input.inline-input(type="text" id="cardURL" readonly value="{{ absoluteUrl }}")
input.inline-input(type="text" id="cardURL" readonly value="{{ absoluteUrl }}" autofocus="autofocus")
button.js-copy-card-link-to-clipboard(class="btn") {{_ 'copy-card-link-to-clipboard'}}
span.clearfix
br
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}}
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}}
br
| {{_ 'added'}}
span.date(title=card.createdAt) {{ moment createdAt 'LLL' }}
a.js-delete(title="{{_ 'card-delete-notice'}}") {{_ 'delete'}}
template(name="setCardColorPopup")
form.edit-label
.palette-colors: each colors
unless $eq color 'white'
span.card-label.palette-color.js-palette-color(class="card-details-{{color}}")
if(isSelected color)
i.fa.fa-check
button.primary.confirm.js-submit {{_ 'save'}}
button.js-remove-color.negate.wide.right {{_ 'unset-color'}}
template(name="cardDeletePopup")
p {{_ "card-delete-pop"}}
unless archived
+485 -75
View File
@@ -1,3 +1,11 @@
const subManager = new SubsManager();
const { calculateIndexData, enableClickOnTouch } = Utils;
let cardColors;
Meteor.startup(() => {
cardColors = Cards.simpleSchema()._schema.color.allowedValues;
});
BlazeComponent.extendComponent({
mixins() {
return [Mixins.InfiniteScrolling, Mixins.PerfectScrollbar];
@@ -17,10 +25,17 @@ BlazeComponent.extendComponent({
},
onCreated() {
this.currentBoard = Boards.findOne(Session.get('currentBoard'));
this.isLoaded = new ReactiveVar(false);
this.parentComponent().showOverlay.set(true);
this.parentComponent().mouseHasEnterCardDetails = false;
const boardBody = this.parentComponent().parentComponent();
//in Miniview parent is Board, not BoardBody.
if (boardBody !== null) {
boardBody.showOverlay.set(true);
boardBody.mouseHasEnterCardDetails = false;
}
this.calculateNextPeak();
Meteor.subscribe('unsaved-edits');
},
isWatching() {
@@ -28,16 +43,21 @@ BlazeComponent.extendComponent({
return card.findWatcher(Meteor.userId());
},
hiddenSystemMessages() {
return Meteor.user().hasHiddenSystemMessages();
},
canModifyCard() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
},
scrollParentContainer() {
const cardPanelWidth = 510;
const bodyBoardComponent = this.parentComponent();
const $cardContainer = bodyBoardComponent.$('.js-lists');
const bodyBoardComponent = this.parentComponent().parentComponent();
//On Mobile View Parent is Board, Not Board Body. I cant see how this funciton should work then.
if (bodyBoardComponent === null) return;
const $cardView = this.$(this.firstNode());
const $cardContainer = bodyBoardComponent.$('.js-swimlanes');
const cardContainerScroll = $cardContainer.scrollLeft();
const cardContainerWidth = $cardContainer.width();
@@ -54,14 +74,148 @@ BlazeComponent.extendComponent({
if (offset) {
bodyBoardComponent.scrollLeft(cardContainerScroll + offset);
}
//Scroll top
const cardViewStartTop = $cardView.offset().top;
const cardContainerScrollTop = $cardContainer.scrollTop();
let topOffset = false;
if(cardViewStartTop !== 100){
topOffset = cardViewStartTop - 100;
}
if(topOffset !== false) {
bodyBoardComponent.scrollTop(cardContainerScrollTop + topOffset);
}
},
presentParentTask() {
let result = this.currentBoard.presentParentTask;
if ((result === null) || (result === undefined)) {
result = 'no-parent';
}
return result;
},
linkForCard() {
const card = this.currentData();
let result = '#';
if (card) {
const board = Boards.findOne(card.boardId);
if (board) {
result = FlowRouter.url('card', {
boardId: card.boardId,
slug: board.slug,
cardId: card._id,
});
}
}
return result;
},
onRendered() {
if (!Utils.isMiniScreen()) this.scrollParentContainer();
if (!Utils.isMiniScreen()) {
Meteor.setTimeout(() => {
$('.card-details').mCustomScrollbar({theme:'minimal-dark', setWidth: false, setLeft: 0, scrollbarPosition: 'outside', mouseWheel: true });
this.scrollParentContainer();
}, 500);
}
const $checklistsDom = this.$('.card-checklist-items');
$checklistsDom.sortable({
tolerance: 'pointer',
helper: 'clone',
handle: '.checklist-title',
items: '.js-checklist',
placeholder: 'checklist placeholder',
distance: 7,
start(evt, ui) {
ui.placeholder.height(ui.helper.height());
EscapeActions.executeUpTo('popup-close');
},
stop(evt, ui) {
let prevChecklist = ui.item.prev('.js-checklist').get(0);
if (prevChecklist) {
prevChecklist = Blaze.getData(prevChecklist).checklist;
}
let nextChecklist = ui.item.next('.js-checklist').get(0);
if (nextChecklist) {
nextChecklist = Blaze.getData(nextChecklist).checklist;
}
const sortIndex = calculateIndexData(prevChecklist, nextChecklist, 1);
$checklistsDom.sortable('cancel');
const checklist = Blaze.getData(ui.item.get(0)).checklist;
Checklists.update(checklist._id, {
$set: {
sort: sortIndex.base,
},
});
},
});
// ugly touch event hotfix
enableClickOnTouch('.card-checklist-items .js-checklist');
const $subtasksDom = this.$('.card-subtasks-items');
$subtasksDom.sortable({
tolerance: 'pointer',
helper: 'clone',
handle: '.subtask-title',
items: '.js-subtasks',
placeholder: 'subtasks placeholder',
distance: 7,
start(evt, ui) {
ui.placeholder.height(ui.helper.height());
EscapeActions.executeUpTo('popup-close');
},
stop(evt, ui) {
let prevChecklist = ui.item.prev('.js-subtasks').get(0);
if (prevChecklist) {
prevChecklist = Blaze.getData(prevChecklist).subtask;
}
let nextChecklist = ui.item.next('.js-subtasks').get(0);
if (nextChecklist) {
nextChecklist = Blaze.getData(nextChecklist).subtask;
}
const sortIndex = calculateIndexData(prevChecklist, nextChecklist, 1);
$subtasksDom.sortable('cancel');
const subtask = Blaze.getData(ui.item.get(0)).subtask;
Subtasks.update(subtask._id, {
$set: {
subtaskSort: sortIndex.base,
},
});
},
});
// ugly touch event hotfix
enableClickOnTouch('.card-subtasks-items .js-subtasks');
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember();
}
// Disable sorting if the current user is not a board member
this.autorun(() => {
if ($checklistsDom.data('sortable')) {
$checklistsDom.sortable('option', 'disabled', !userIsMember());
}
if ($subtasksDom.data('sortable')) {
$subtasksDom.sortable('option', 'disabled', !userIsMember());
}
});
},
onDestroyed() {
this.parentComponent().showOverlay.set(false);
const parentComponent = this.parentComponent().parentComponent();
//on mobile view parent is Board, not board body.
if (parentComponent === null) return;
parentComponent.showOverlay.set(false);
},
events() {
@@ -92,12 +246,36 @@ BlazeComponent.extendComponent({
this.data().setTitle(title);
}
},
'submit .js-card-details-assigner'(evt) {
evt.preventDefault();
const assigner = this.currentComponent().getValue().trim();
if (assigner) {
this.data().setAssignedBy(assigner);
}
},
'submit .js-card-details-requester'(evt) {
evt.preventDefault();
const requester = this.currentComponent().getValue().trim();
if (requester) {
this.data().setRequestedBy(requester);
}
},
'click .js-member': Popup.open('cardMember'),
'click .js-add-members': Popup.open('cardMembers'),
'click .js-add-labels': Popup.open('cardLabels'),
'click .js-received-date': Popup.open('editCardReceivedDate'),
'click .js-start-date': Popup.open('editCardStartDate'),
'click .js-due-date': Popup.open('editCardDueDate'),
'click .js-end-date': Popup.open('editCardEndDate'),
'mouseenter .js-card-details' () {
this.parentComponent().showOverlay.set(true);
this.parentComponent().mouseHasEnterCardDetails = true;
const parentComponent = this.parentComponent().parentComponent();
//on mobile view parent is Board, not BoardBody.
if (parentComponent === null) return;
parentComponent.showOverlay.set(true);
parentComponent.mouseHasEnterCardDetails = true;
},
'click #toggleButton'() {
Meteor.call('toggleSystemMessages');
},
}];
},
@@ -119,7 +297,7 @@ BlazeComponent.extendComponent({
close(isReset = false) {
if (this.isOpen.get() && !isReset) {
const draft = this.getValue().trim();
if (draft !== Cards.findOne(Session.get('currentCard')).description) {
if (draft !== Cards.findOne(Session.get('currentCard')).getDescription()) {
UnsavedEdits.set(this._getUnsavedEditKey(), this.getValue());
}
}
@@ -154,19 +332,25 @@ Template.cardDetailsActionsPopup.events({
'click .js-members': Popup.open('cardMembers'),
'click .js-labels': Popup.open('cardLabels'),
'click .js-attachments': Popup.open('cardAttachments'),
'click .js-custom-fields': Popup.open('cardCustomFields'),
'click .js-received-date': Popup.open('editCardReceivedDate'),
'click .js-start-date': Popup.open('editCardStartDate'),
'click .js-due-date': Popup.open('editCardDueDate'),
'click .js-end-date': Popup.open('editCardEndDate'),
'click .js-spent-time': Popup.open('editCardSpentTime'),
'click .js-move-card': Popup.open('moveCard'),
'click .js-copy-card': Popup.open('copyCard'),
'click .js-copy-checklist-cards': Popup.open('copyChecklistToManyCards'),
'click .js-set-card-color': Popup.open('setCardColor'),
'click .js-move-card-to-top' (evt) {
evt.preventDefault();
const minOrder = _.min(this.list().cards().map((c) => c.sort));
this.move(this.listId, minOrder - 1);
const minOrder = _.min(this.list().cards(this.swimlaneId).map((c) => c.sort));
this.move(this.swimlaneId, this.listId, minOrder - 1);
},
'click .js-move-card-to-bottom' (evt) {
evt.preventDefault();
const maxOrder = _.max(this.list().cards().map((c) => c.sort));
this.move(this.listId, maxOrder + 1);
const maxOrder = _.max(this.list().cards(this.swimlaneId).map((c) => c.sort));
this.move(this.swimlaneId, this.listId, maxOrder + 1);
},
'click .js-archive' (evt) {
evt.preventDefault();
@@ -190,97 +374,323 @@ Template.editCardTitleForm.onRendered(function () {
Template.editCardTitleForm.events({
'keydown .js-edit-card-title' (evt) {
// If enter key was pressed, submit the data
if (evt.keyCode === 13) {
// Unless the shift key is also being pressed
if (evt.keyCode === 13 && !evt.shiftKey) {
$('.js-submit-edit-card-title-form').click();
}
},
});
Template.moveCardPopup.events({
'click .js-select-list' () {
// 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 newListId = this._id;
card.move(newListId);
Popup.close();
Template.editCardRequesterForm.onRendered(function() {
autosize(this.$('.js-edit-card-requester'));
});
Template.editCardRequesterForm.events({
'keydown .js-edit-card-requester'(evt) {
// If enter key was pressed, submit the data
if (evt.keyCode === 13) {
$('.js-submit-edit-card-requester-form').click();
}
},
});
Template.copyCardPopup.events({
'click .js-select-list' (evt) {
Template.editCardAssignerForm.onRendered(function() {
autosize(this.$('.js-edit-card-assigner'));
});
Template.editCardAssignerForm.events({
'keydown .js-edit-card-assigner'(evt) {
// If enter key was pressed, submit the data
if (evt.keyCode === 13) {
$('.js-submit-edit-card-assigner-form').click();
}
},
});
Template.moveCardPopup.events({
'click .js-done' () {
// 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 oldId = card._id;
card._id = null;
card.listId = this._id;
const textarea = $(evt.currentTarget).parents('.content').find('textarea');
const bSelect = $('.js-select-boards')[0];
const boardId = bSelect.options[bSelect.selectedIndex].value;
const lSelect = $('.js-select-lists')[0];
const listId = lSelect.options[lSelect.selectedIndex].value;
const slSelect = $('.js-select-swimlanes')[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'), false);
this.selectedBoardId = new ReactiveVar(Session.get('currentBoard'));
},
boards() {
const boards = Boards.find({
archived: false,
'members.userId': Meteor.userId(),
_id: {$ne: Meteor.user().getTemplatesBoardId()},
}, {
sort: ['title'],
});
return boards;
},
swimlanes() {
const board = Boards.findOne(this.selectedBoardId.get());
return board.swimlanes();
},
aBoardLists() {
const board = Boards.findOne(this.selectedBoardId.get());
return board.lists();
},
events() {
return [{
'change .js-select-boards'(evt) {
this.selectedBoardId.set($(evt.currentTarget).val());
subManager.subscribe('board', this.selectedBoardId.get(), false);
},
}];
},
}).register('boardsAndLists');
Template.copyCardPopup.events({
'click .js-done'() {
const card = Cards.findOne(Session.get('currentCard'));
const lSelect = $('.js-select-lists')[0];
listId = lSelect.options[lSelect.selectedIndex].value;
const slSelect = $('.js-select-swimlanes')[0];
const swimlaneId = slSelect.options[slSelect.selectedIndex].value;
const bSelect = $('.js-select-boards')[0];
const boardId = bSelect.options[bSelect.selectedIndex].value;
const textarea = $('#copy-card-title');
const title = textarea.val().trim();
// insert new card to the bottom of new list
card.sort = Lists.findOne(this._id).cards().count();
card.sort = Lists.findOne(card.listId).cards().count();
if (title) {
card.title = title;
const _id = Cards.insert(card);
card.coverId = '';
const _id = card.copy(boardId, swimlaneId, listId);
// In case the filter is active we need to add the newly inserted card in
// the list of exceptions -- cards that are not filtered. Otherwise the
// card will disappear instantly.
// See https://github.com/wekan/wekan/issues/80
Filter.addException(_id);
// copy checklists
let cursor = Checklists.find({cardId: oldId});
cursor.forEach(function() {
'use strict';
const checklist = arguments[0];
checklist.cardId = _id;
checklist._id = null;
Checklists.insert(checklist);
});
// copy card comments
cursor = CardComments.find({cardId: oldId});
cursor.forEach(function () {
'use strict';
const comment = arguments[0];
comment.cardId = _id;
comment._id = null;
CardComments.insert(comment);
});
Popup.close();
}
},
});
Template.cardMorePopup.events({
'click .js-copy-card-link-to-clipboard' () {
// Clipboard code from:
// https://stackoverflow.com/questions/6300213/copy-selected-text-to-the-clipboard-without-using-flash-must-be-cross-browser
const StringToCopyElement = document.getElementById('cardURL');
StringToCopyElement.select();
if (document.execCommand('copy')) {
StringToCopyElement.blur();
} else {
document.getElementById('cardURL').selectionStart = 0;
document.getElementById('cardURL').selectionEnd = 999;
document.execCommand('copy');
if (window.getSelection) {
if (window.getSelection().empty) { // Chrome
window.getSelection().empty();
} else if (window.getSelection().removeAllRanges) { // Firefox
window.getSelection().removeAllRanges();
}
} else if (document.selection) { // IE?
document.selection.empty();
Template.copyChecklistToManyCardsPopup.events({
'click .js-done' () {
const card = Cards.findOne(Session.get('currentCard'));
const oldId = card._id;
card._id = null;
const lSelect = $('.js-select-lists')[0];
card.listId = lSelect.options[lSelect.selectedIndex].value;
const slSelect = $('.js-select-swimlanes')[0];
card.swimlaneId = slSelect.options[slSelect.selectedIndex].value;
const bSelect = $('.js-select-boards')[0];
card.boardId = bSelect.options[bSelect.selectedIndex].value;
const textarea = $('#copy-card-title');
const titleEntry = textarea.val().trim();
// insert new card to the bottom of new list
card.sort = Lists.findOne(card.listId).cards().count();
if (titleEntry) {
const titleList = JSON.parse(titleEntry);
for (let i = 0; i < titleList.length; i++){
const obj = titleList[i];
card.title = obj.title;
card.description = obj.description;
card.coverId = '';
const _id = Cards.insert(card);
// In case the filter is active we need to add the newly inserted card in
// the list of exceptions -- cards that are not filtered. Otherwise the
// card will disappear instantly.
// See https://github.com/wekan/wekan/issues/80
Filter.addException(_id);
// copy checklists
Checklists.find({cardId: oldId}).forEach((ch) => {
ch.copy(_id);
});
// copy subtasks
cursor = Cards.find({parentId: oldId});
cursor.forEach(function() {
'use strict';
const subtask = arguments[0];
subtask.parentId = _id;
subtask._id = null;
/* const newSubtaskId = */ Cards.insert(subtask);
});
// copy card comments
CardComments.find({cardId: oldId}).forEach((cmt) => {
cmt.copy(_id);
});
}
Popup.close();
}
},
'click .js-delete': Popup.afterConfirm('cardDelete', function () {
Popup.close();
Cards.remove(this._id);
Utils.goBoardId(this.boardId);
}),
});
BlazeComponent.extendComponent({
onCreated() {
this.currentCard = this.currentData();
this.currentColor = new ReactiveVar(this.currentCard.color);
},
colors() {
return cardColors.map((color) => ({ color, name: '' }));
},
isSelected(color) {
if (this.currentColor.get() === null) {
return color === 'white';
}
return this.currentColor.get() === color;
},
events() {
return [{
'click .js-palette-color'() {
this.currentColor.set(this.currentData().color);
},
'click .js-submit' () {
this.currentCard.setColor(this.currentColor.get());
Popup.close();
},
'click .js-remove-color'() {
this.currentCard.setColor(null);
Popup.close();
},
}];
},
}).register('setCardColorPopup');
BlazeComponent.extendComponent({
onCreated() {
this.currentCard = this.currentData();
this.parentBoard = new ReactiveVar(null);
this.parentCard = this.currentCard.parentCard();
if (this.parentCard) {
const list = $('.js-field-parent-card');
list.val(this.parentCard._id);
this.parentBoard.set(this.parentCard.board()._id);
} else {
this.parentBoard.set(null);
}
},
boards() {
const boards = Boards.find({
archived: false,
'members.userId': Meteor.userId(),
_id: {
$ne: Meteor.user().getTemplatesBoardId(),
},
}, {
sort: ['title'],
});
return boards;
},
cards() {
const currentId = Session.get('currentCard');
if (this.parentBoard.get()) {
return Cards.find({
boardId: this.parentBoard.get(),
_id: {$ne: currentId},
});
} else {
return [];
}
},
isParentBoard() {
const board = this.currentData();
if (this.parentBoard.get()) {
return board._id === this.parentBoard.get();
}
return false;
},
isParentCard() {
const card = this.currentData();
if (this.parentCard) {
return card._id === this.parentCard;
}
return false;
},
setParentCardId(cardId) {
if (cardId) {
this.parentCard = Cards.findOne(cardId);
} else {
this.parentCard = null;
}
this.currentCard.setParentId(cardId);
},
events() {
return [{
'click .js-copy-card-link-to-clipboard' () {
// Clipboard code from:
// https://stackoverflow.com/questions/6300213/copy-selected-text-to-the-clipboard-without-using-flash-must-be-cross-browser
const StringToCopyElement = document.getElementById('cardURL');
StringToCopyElement.select();
if (document.execCommand('copy')) {
StringToCopyElement.blur();
} else {
document.getElementById('cardURL').selectionStart = 0;
document.getElementById('cardURL').selectionEnd = 999;
document.execCommand('copy');
if (window.getSelection) {
if (window.getSelection().empty) { // Chrome
window.getSelection().empty();
} else if (window.getSelection().removeAllRanges) { // Firefox
window.getSelection().removeAllRanges();
}
} else if (document.selection) { // IE?
document.selection.empty();
}
}
},
'click .js-delete': Popup.afterConfirm('cardDelete', function () {
Popup.close();
Cards.remove(this._id);
Utils.goBoardId(this.boardId);
}),
'change .js-field-parent-board'(evt) {
const selection = $(evt.currentTarget).val();
const list = $('.js-field-parent-card');
if (selection === 'none') {
this.parentBoard.set(null);
} else {
subManager.subscribe('board', $(evt.currentTarget).val(), false);
this.parentBoard.set(selection);
list.prop('disabled', false);
}
this.setParentCardId(null);
},
'change .js-field-parent-card'(evt) {
const selection = $(evt.currentTarget).val();
this.setParentCardId(selection);
},
}];
},
}).register('cardMorePopup');
// Close the card details pane by pressing escape
EscapeActions.register('detailsPane',
() => {
+111 -10
View File
@@ -1,12 +1,12 @@
@import 'nib'
.card-details
padding: 0 20px
height: 100%
padding: 0
flex-shrink: 0
flex-basis: 470px
flex-basis: 510px
will-change: flex-basis
overflow: hidden
overflow-y: scroll
overflow-x: hidden
background: darken(white, 3%)
border-radius: bottom 3px
z-index: 20 !important
@@ -14,8 +14,16 @@
box-shadow: 0 0 7px 0 darken(white, 30%)
transition: flex-basis 0.1s
.mCustomScrollBox
padding-left: 0
.ps-scrollbar-y-rail
pointer-event: all
position: absolute;
.card-details-canvas
width: 470px
padding-left: 20px;
.card-details-header
margin: 0 -20px 5px
@@ -47,6 +55,12 @@
margin: 7px 0 0
padding: 0
.linked-card-location
font-style: italic
font-size: 1em
margin-bottom: 0
& p
margin-bottom: 0
form.inlined-form
margin-top: 5px
@@ -70,6 +84,7 @@
.card-details-items
display: flex
flex-wrap: wrap
margin: 15px 0
.card-details-item
@@ -78,14 +93,18 @@
margin-right: 0
&.card-details-item-labels,
&.card-details-item-members,
&.card-details-item-received,
&.card-details-item-start,
&.card-details-item-due
width: 50%
flex-shrink: 1
&.card-details-item-due,
&.card-details-item-end,
&.card-details-item-customfield,
&.card-details-item-name
max-width: 50%
flex-grow: 1
.card-details-item-title
font-size: 14px
color: darken(white, 45%)
font-size: 16px
color: #000
.card-label
padding-top: 5px
@@ -114,10 +133,92 @@ input[type="submit"].attachment-add-link-submit
.card-details-canvas
width: 100%
padding-left: 0px;
.card-details-header
.close-card-details
margin-right: 0px
.card-details-menu
margin-right: 10px
card-details-color(background, color...)
background: background !important
if color
color: color !important //overwrite text for better visibility
.card-details-white
card-details-color(unset, #000) //Black text for better visibility
border: 1px solid #eee
.card-details-green
card-details-color(#3cb500, #ffffff) //White text for better visibility
.card-details-yellow
card-details-color(#fad900, #000) //Black text for better visibility
.card-details-orange
card-details-color(#ff9f19, #000) //Black text for better visibility
.card-details-red
card-details-color(#eb4646, #ffffff) //White text for better visibility
.card-details-purple
card-details-color(#a632db, #ffffff) //White text for better visibility
.card-details-blue
card-details-color(#0079bf, #ffffff) //White text for better visibility
.card-details-pink
card-details-color(#ff78cb, #000) //Black text for better visibility
.card-details-sky
card-details-color(#00c2e0, #ffffff) //White text for better visibility
.card-details-black
card-details-color(#4d4d4d, #ffffff) //White text for better visibility
.card-details-lime
card-details-color(#51e898, #000) //Black text for better visibility
.card-details-silver
card-details-color(#c0c0c0, #000) //Black text for better visibility
.card-details-peachpuff
card-details-color(#ffdab9, #000) //Black text for better visibility
.card-details-crimson
card-details-color(#dc143c, #ffffff) //White text for better visibility
.card-details-plum
card-details-color(#dda0dd, #000) //Black text for better visibility
.card-details-darkgreen
card-details-color(#006400, #ffffff) //White text for better visibility
.card-details-slateblue
card-details-color(#6a5acd, #ffffff) //White text for better visibility
.card-details-magenta
card-details-color(#ff00ff, #ffffff) //White text for better visibility
.card-details-gold
card-details-color(#ffd700, #000) //Black text for better visibility
.card-details-navy
card-details-color(#000080, #ffffff) //White text for better visibility
.card-details-gray
card-details-color(#808080, #ffffff) //White text for better visibility
.card-details-saddlebrown
card-details-color(#8b4513, #ffffff) //White text for better visibility
.card-details-paleturquoise
card-details-color(#afeeee, #000) //Black text for better visibility
.card-details-mistyrose
card-details-color(#ffe4e1, #000) //Black text for better visibility
.card-details-indigo
card-details-color(#4b0082, #ffffff) //White text for better visibility
+22
View File
@@ -0,0 +1,22 @@
template(name="editCardSpentTime")
.edit-card-time
form.edit-time
.fields
label(for="time") {{_ 'time'}}
input.js-time-field#time(type="number" step="0.01" name="time" value="{{card.getSpentTime}}" placeholder=timeFormat autofocus)
label(for="overtime") {{_ 'overtime'}}
a.js-toggle-overtime
.materialCheckBox#overtime(class="{{#if getIsOvertime}}is-checked{{/if}}" name="overtime")
if error.get
.warning {{_ error.get}}
button.primary.wide.left.js-submit-time(type="submit") {{_ 'save'}}
button.js-delete-time.negate.wide.right {{_ 'delete'}}
template(name="timeBadge")
if canModifyCard
a.js-edit-time.card-time(title="{{showTitle}}" class="{{#if getIsOvertime}}card-label-red{{else}}card-label-green{{/if}}")
| {{showTime}}
else
a.card-time(title="{{showTitle}}" class="{{#if getIsOvertime}}card-label-red{{else}}card-label-green{{/if}}")
| {{showTime}}
+78
View File
@@ -0,0 +1,78 @@
BlazeComponent.extendComponent({
template() {
return 'editCardSpentTime';
},
onCreated() {
this.error = new ReactiveVar('');
this.card = this.data();
},
toggleOvertime() {
this.card.setIsOvertime(!this.card.getIsOvertime());
$('#overtime .materialCheckBox').toggleClass('is-checked');
$('#overtime').toggleClass('is-checked');
},
storeTime(spentTime, isOvertime) {
this.card.setSpentTime(spentTime);
this.card.setIsOvertime(isOvertime);
},
deleteTime() {
this.card.setSpentTime(null);
},
events() {
return [{
//TODO : need checking this portion
'submit .edit-time'(evt) {
evt.preventDefault();
const spentTime = parseFloat(evt.target.time.value);
const isOvertime = this.card.getIsOvertime();
if (spentTime >= 0) {
this.storeTime(spentTime, isOvertime);
Popup.close();
} else {
this.error.set('invalid-time');
evt.target.time.focus();
}
},
'click .js-delete-time'(evt) {
evt.preventDefault();
this.deleteTime();
Popup.close();
},
'click a.js-toggle-overtime': this.toggleOvertime,
}];
},
}).register('editCardSpentTimePopup');
BlazeComponent.extendComponent({
template() {
return 'timeBadge';
},
onCreated() {
const self = this;
self.time = ReactiveVar();
},
showTitle() {
if (this.data().getIsOvertime()) {
return `${TAPi18n.__('overtime')} ${this.data().getSpentTime()} ${TAPi18n.__('hours')}`;
} else {
return `${TAPi18n.__('card-spent')} ${this.data().getSpentTime()} ${TAPi18n.__('hours')}`;
}
},
showTime() {
return this.data().getSpentTime();
},
events() {
return [{
'click .js-edit-time': Popup.open('editCardSpentTime'),
}];
},
}).register('cardSpentTime');
Template.timeBadge.helpers({
canModifyCard() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
},
});
+17
View File
@@ -0,0 +1,17 @@
.card-time
display: block
border-radius: 4px
padding: 1px 3px
color: #fff
background-color: #dbdbdb
&:hover, &.is-active
background-color: #b3b3b3
time
&::before
font: normal normal normal 14px/1 FontAwesome
font-size: inherit
-webkit-font-smoothing: antialiased
content: "\f017" // clock symbol
margin-right: 0.3em
+48 -21
View File
@@ -1,8 +1,14 @@
template(name="checklists")
h2 {{_ 'checklists'}}
h3 {{_ 'checklists'}}
if toggleDeleteDialog.get
.board-overlay#card-details-overlay
+checklistDeleteDialog(checklist = checklistToDelete)
.card-checklist-items
each checklist in currentCard.checklists
+checklistDetail(checklist = checklist)
if canModifyCard
+inlinedForm(autoclose=false classNames="js-add-checklist" cardId = cardId)
+addChecklistItemForm
@@ -12,19 +18,36 @@ template(name="checklists")
| {{_ 'add-checklist'}}...
template(name="checklistDetail")
+inlinedForm(classNames="js-edit-checklist-title" checklist = checklist)
+editChecklistItemForm(checklist = checklist)
else
.checklist-title
.checkbox.fa.fa-check-square-o
if canModifyCard
a.js-delete-checklist {{_ "delete"}}...
span.checklist-stat(class="{{#if checklist.isFinished}}is-finished{{/if}}") {{checklist.finishedCount}}/{{checklist.itemCount}}
if canModifyCard
h2.title.js-open-inlined-form.is-editable {{checklist.title}}
else
h2.title {{checklist.title}}
+checklistItems(checklist = checklist)
.js-checklist.checklist
+inlinedForm(classNames="js-edit-checklist-title" checklist = checklist)
+editChecklistItemForm(checklist = checklist)
else
.checklist-title
span
if canModifyCard
a.js-delete-checklist.toggle-delete-checklist-dialog {{_ "delete"}}...
if canModifyCard
h2.title.js-open-inlined-form.is-editable
+viewer
= checklist.title
else
h2.title
+viewer
= checklist.title
+checklistItems(checklist = checklist)
template(name="checklistDeleteDialog")
.js-confirm-checklist-delete
p
i(class="fa fa-exclamation-triangle" aria-hidden="true")
p
| {{_ 'confirm-checklist-delete-dialog'}}
span {{checklist.title}}
| ?
.js-checklist-delete-buttons
button.confirm-checklist-delete(type="button") {{_ 'delete'}}
button.toggle-delete-checklist-dialog(type="button") {{_ 'cancel'}}
template(name="addChecklistItemForm")
textarea.js-add-checklist-item(rows='1' autofocus)
@@ -33,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
@@ -47,11 +70,11 @@ template(name="editChecklistItemForm")
template(name="checklistItems")
.checklist-items.js-checklist-items
each item in checklist.getItemsSorted
each item in checklist.items
+inlinedForm(classNames="js-edit-checklist-item" item = item checklist = checklist)
+editChecklistItemForm(type = 'item' item = item checklist = checklist)
else
+itemDetail(item = item checklist = checklist)
+checklistItemDetail(item = item checklist = checklist)
if canModifyCard
+inlinedForm(autoclose=false classNames="js-add-checklist-item" checklist = checklist)
+addChecklistItemForm
@@ -60,11 +83,15 @@ template(name="checklistItems")
i.fa.fa-plus
| {{_ 'add-checklist-item'}}...
template(name='itemDetail')
.item.js-checklist-item
template(name='checklistItemDetail')
.js-checklist-item.checklist-item
if canModifyCard
.check-box.materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}")
.item-title.js-open-inlined-form.is-editable(class="{{#if item.isFinished }}is-checked{{/if}}") {{item.title}}
.item-title.js-open-inlined-form.is-editable(class="{{#if item.isFinished }}is-checked{{/if}}")
+viewer
= item.title
else
.materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}")
.item-title(class="{{#if item.isFinished }}is-checked{{/if}}") {{item.title}}
.item-title(class="{{#if item.isFinished }}is-checked{{/if}}")
+viewer
= item.title
+123 -74
View File
@@ -1,11 +1,14 @@
const { calculateIndexData, enableClickOnTouch } = Utils;
function initSorting(items) {
items.sortable({
tolerance: 'pointer',
helper: 'clone',
items: '.js-checklist-item:not(.placeholder)',
axis: 'y',
connectWith: '.js-checklist-items',
appendTo: '.board-canvas',
distance: 7,
placeholder: 'placeholder',
placeholder: 'checklist-item placeholder',
scroll: false,
start(evt, ui) {
ui.placeholder.height(ui.helper.height());
@@ -13,65 +16,68 @@ function initSorting(items) {
},
stop(evt, ui) {
const parent = ui.item.parents('.js-checklist-items');
const orderedItems = [];
parent.find('.js-checklist-item').each(function(i, item) {
const checklistItem = Blaze.getData(item).item;
orderedItems.push(checklistItem._id);
});
items.sortable('cancel');
const formerParent = ui.item.parents('.js-checklist-items');
const checklist = Blaze.getData(parent.get(0)).checklist;
const oldChecklist = Blaze.getData(formerParent.get(0)).checklist;
if (oldChecklist._id !== checklist._id) {
const currentItem = Blaze.getData(ui.item.get(0)).item;
for (let i = 0; i < orderedItems.length; i++) {
const itemId = orderedItems[i];
if (itemId !== currentItem._id) continue;
const newItem = {
_id: checklist.getNewItemId(),
title: currentItem.title,
sort: i,
isFinished: currentItem.isFinished,
};
checklist.addFullItem(newItem);
orderedItems[i] = currentItem._id;
oldChecklist.removeItem(itemId);
}
} else {
checklist.sortItems(orderedItems);
const checklistId = Blaze.getData(parent.get(0)).checklist._id;
let prevItem = ui.item.prev('.js-checklist-item').get(0);
if (prevItem) {
prevItem = Blaze.getData(prevItem).item;
}
let nextItem = ui.item.next('.js-checklist-item').get(0);
if (nextItem) {
nextItem = Blaze.getData(nextItem).item;
}
const nItems = 1;
const sortIndex = calculateIndexData(prevItem, nextItem, nItems);
const checklistDomElement = ui.item.get(0);
const checklistData = Blaze.getData(checklistDomElement);
const checklistItem = checklistData.item;
items.sortable('cancel');
checklistItem.move(checklistId, sortIndex.base);
},
});
// ugly touch event hotfix
enableClickOnTouch('.js-checklist-item:not(.placeholder)');
}
Template.checklists.onRendered(function () {
const self = BlazeComponent.getComponentForElement(this.firstNode);
self.itemsDom = this.$('.card-checklist-items');
initSorting(self.itemsDom);
self.itemsDom.mousedown(function(evt) {
evt.stopPropagation();
});
BlazeComponent.extendComponent({
onRendered() {
const self = this;
self.itemsDom = this.$('.js-checklist-items');
initSorting(self.itemsDom);
self.itemsDom.mousedown(function(evt) {
evt.stopPropagation();
});
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember();
}
// Disable sorting if the current user is not a board member
self.autorun(() => {
const $itemsDom = $(self.itemsDom);
if ($itemsDom.data('sortable')) {
$(self.itemsDom).sortable('option', 'disabled', !userIsMember());
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember();
}
});
});
// Disable sorting if the current user is not a board member
self.autorun(() => {
const $itemsDom = $(self.itemsDom);
if ($itemsDom.data('sortable')) {
$(self.itemsDom).sortable('option', 'disabled', !userIsMember());
}
});
},
canModifyCard() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
},
}).register('checklistDetail');
BlazeComponent.extendComponent({
addChecklist(event) {
event.preventDefault();
const textarea = this.find('textarea.js-add-checklist-item');
const title = textarea.value.trim();
const cardId = this.currentData().cardId;
let cardId = this.currentData().cardId;
const card = Cards.findOne(cardId);
if (card.isLinked())
cardId = card.linkedId;
if (title) {
Checklists.insert({
@@ -94,13 +100,38 @@ BlazeComponent.extendComponent({
const checklist = this.currentData().checklist;
if (title) {
checklist.addItem(title);
ChecklistItems.insert({
title,
checklistId: checklist._id,
cardId: checklist.cardId,
sort: checklist.itemCount(),
});
}
// We keep the form opened, empty it.
textarea.value = '';
textarea.focus();
},
canModifyCard() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
},
deleteChecklist() {
const checklist = this.currentData().checklist;
if (checklist && checklist._id) {
Checklists.remove(checklist._id);
this.toggleDeleteDialog.set(false);
}
},
deleteItem() {
const checklist = this.currentData().checklist;
const item = this.currentData().item;
if (checklist && item && item._id) {
ChecklistItems.remove(item._id);
}
},
editChecklist(event) {
event.preventDefault();
const textarea = this.find('textarea.js-edit-checklist-item');
@@ -109,38 +140,24 @@ BlazeComponent.extendComponent({
checklist.setTitle(title);
},
canModifyCard() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
},
editChecklistItem(event) {
event.preventDefault();
const textarea = this.find('textarea.js-edit-checklist-item');
const title = textarea.value.trim();
const itemId = this.currentData().item._id;
const checklist = this.currentData().checklist;
checklist.editItem(itemId, title);
},
deleteItem() {
const checklist = this.currentData().checklist;
const item = this.currentData().item;
if (checklist && item && item._id) {
checklist.removeItem(item._id);
}
item.setTitle(title);
},
deleteChecklist() {
const checklist = this.currentData().checklist;
if (checklist && checklist._id) {
Checklists.remove(checklist._id);
}
onCreated() {
this.toggleDeleteDialog = new ReactiveVar(false);
this.checklistToDelete = null; //Store data context to pass to checklistDeleteDialog template
},
pressKey(event) {
//If user press enter key inside a form, submit it, so user doesn't have to leave keyboard to submit a form.
if (event.keyCode === 13) {
//If user press enter key inside a form, submit it
//Unless the user is also holding down the 'shift' key
if (event.keyCode === 13 && !event.shiftKey) {
event.preventDefault();
const $form = $(event.currentTarget).closest('form');
$form.find('button[type=submit]').click();
@@ -148,19 +165,51 @@ BlazeComponent.extendComponent({
},
events() {
const events = {
'click .toggle-delete-checklist-dialog'(event) {
if($(event.target).hasClass('js-delete-checklist')){
this.checklistToDelete = this.currentData().checklist; //Store data context
}
this.toggleDeleteDialog.set(!this.toggleDeleteDialog.get());
},
};
return [{
...events,
'submit .js-add-checklist': this.addChecklist,
'submit .js-edit-checklist-title': this.editChecklist,
'submit .js-add-checklist-item': this.addChecklistItem,
'submit .js-edit-checklist-item': this.editChecklistItem,
'click .js-delete-checklist-item': this.deleteItem,
'click .js-delete-checklist': this.deleteChecklist,
'click .confirm-checklist-delete': this.deleteChecklist,
keydown: this.pressKey,
}];
},
}).register('checklists');
Template.itemDetail.helpers({
Template.checklistDeleteDialog.onCreated(() => {
const $cardDetails = this.$('.card-details');
this.scrollState = { position: $cardDetails.scrollTop(), //save current scroll position
top: false, //required for smooth scroll animation
};
//Callback's purpose is to only prevent scrolling after animation is complete
$cardDetails.animate({ scrollTop: 0 }, 500, () => { this.scrollState.top = true; });
//Prevent scrolling while dialog is open
$cardDetails.on('scroll', () => {
if(this.scrollState.top) { //If it's already in position, keep it there. Otherwise let animation scroll
$cardDetails.scrollTop(0);
}
});
});
Template.checklistDeleteDialog.onDestroyed(() => {
const $cardDetails = this.$('.card-details');
$cardDetails.off('scroll'); //Reactivate scrolling
$cardDetails.animate( { scrollTop: this.scrollState.position });
});
Template.checklistItemDetail.helpers({
canModifyCard() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
},
@@ -171,12 +220,12 @@ BlazeComponent.extendComponent({
const checklist = this.currentData().checklist;
const item = this.currentData().item;
if (checklist && item && item._id) {
checklist.toggleItem(item._id);
item.toggleItem();
}
},
events() {
return [{
'click .item .check-box': this.toggleItem,
'click .js-checklist-item .check-box': this.toggleItem,
}];
},
}).register('itemDetail');
}).register('checklistItemDetail');
+98 -30
View File
@@ -26,7 +26,7 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item
.title
font-size: 18px
line-height: 30px
line-height: 25px
.checklist-stat
margin: 0 0.5em
@@ -38,34 +38,102 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item
.js-delete-checklist
@extends .delete-text
.checklist-items
.js-confirm-checklist-delete
background-color: darken(white, 3%)
position: absolute
float: left;
width: 60%
margin-top: 0
margin-left: 13%
padding-bottom: 2%
padding-left: 3%
padding-right: 3%
z-index: 17
border-radius: 3px
p
position: relative
margin-top: 3%
width: 100%
text-align: center
span
font-weight: bold
i
font-size: 2em
.js-checklist-delete-buttons
position: relative
padding: left 2% right 2%
.confirm-checklist-delete
margin-left: 12%
float: left
.toggle-delete-checklist-dialog
margin-right: 12%
float: right
#card-details-overlay
top: 0
bottom: -600px
right: 0
.checklist
background: darken(white, 3%)
&.placeholder
background: darken(white, 20%)
border-radius: 2px
&.ui-sortable-helper
box-shadow: -2px 2px 8px rgba(0, 0, 0, .3),
0 0 1px rgba(0, 0, 0, .5)
transform: rotate(4deg)
cursor: grabbing
.checklist-item
margin: 0 0 0 0.1em
line-height: 18px
font-size: 1.1em
margin-top: 3px
display: flex
background: darken(white, 3%)
&.placeholder
background: darken(white, 20%)
border-radius: 2px
&.ui-sortable-helper
box-shadow: -2px 2px 8px rgba(0, 0, 0, .3),
0 0 1px rgba(0, 0, 0, .5)
transform: rotate(4deg)
cursor: grabbing
&:hover
background-color: darken(white, 8%)
.check-box
margin: 0.1em 0 0 0;
&.is-checked
border-bottom: 2px solid #3cb500
border-right: 2px solid #3cb500
.item-title
flex: 1
padding-left: 10px;
&.is-checked
color: #8c8c8c
font-style: italic
& .viewer
p
margin-bottom: 2px
.js-delete-checklist-item
margin: 0 0 0.5em 1.33em
@extends .delete-text
padding: 12px 0 0 0
.item
line-height: 25px
font-size: 1.1em
margin-top: 3px
display: flex
&:hover
background-color: darken(white, 8%)
.check-box
margin-top: 5px
&.is-checked
border-bottom: 2px solid #3cb500
border-right: 2px solid #3cb500
.item-title
flex: 1
padding-left: 10px;
&.is-checked
color: #8c8c8c
font-style: italic
.js-delete-checklist-item
@extends .delete-text
padding: 12px 0 0 0
.add-checklist-item
padding-top: 0.5em
display: inline-block
.add-checklist-item
margin: 0.2em 0 0.5em 1.33em
display: inline-block
+4 -2
View File
@@ -31,7 +31,9 @@ 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
a.quiet-button.full.js-add-label {{_ 'label-create'}}
if currentUser.isBoardAdmin
a.quiet-button.full.js-add-label {{_ 'label-create'}}
+53 -1
View File
@@ -3,7 +3,7 @@
// XXX Use .board-widget-labels as a flexbox container
.card-label
border-radius: 4px
color: white
color: white //Default white text, in select cases, changed to black to improve contrast between label colour and text
display: inline-block
font-weight: 700
font-size: 13px
@@ -48,9 +48,11 @@
.card-label-yellow
background-color: #fad900
color: #000000 //Black text for better visibility
.card-label-orange
background-color: #ff9f19
color: #000000 //Black text for better visibility
.card-label-red
background-color: #eb4646
@@ -63,6 +65,7 @@
.card-label-pink
background-color: #ff78cb
color: #000000 //Black text for better visibility
.card-label-sky
background-color: #00c2e0
@@ -72,6 +75,55 @@
.card-label-lime
background-color: #51e898
color: #000000 //Black text for better visibility
.card-label-silver
background-color: #c0c0c0
color: #000000 //Black text for better visibility
.card-label-peachpuff
background-color: #ffdab9
color: #000000 //Black text for better visibility
.card-label-crimson
background-color: #dc143c
.card-label-plum
background-color: #dda0dd
color: #000000 //Black text for better visibility
.card-label-darkgreen
background-color: #006400
.card-label-slateblue
background-color: #6a5acd
.card-label-magenta
background-color: #ff00ff
.card-label-gold
background-color: #ffd700
color: #000000 //Black text for better visibility
.card-label-navy
background-color: #000080
.card-label-gray
background-color: #808080
.card-label-saddlebrown
background-color: #8b4513
.card-label-paleturquoise
background-color: #afeeee
color: #000000 //Black text for better visibility
.card-label-mistyrose
background-color: #ffe4e1
color: #000000 //Black text for better visibility
.card-label-indigo
background-color: #4b0082
.edit-label,
.create-label
+68 -16
View File
@@ -1,30 +1,82 @@
template(name="minicard")
.minicard
.minicard(
class="{{#if isLinkedCard}}linked-card{{/if}}"
class="{{#if isLinkedBoard}}linked-board{{/if}}"
class="minicard-{{colorClass}}")
if cover
.minicard-cover(style="background-image: url('{{cover.url}}');")
if labels
.minicard-labels
each labels
.minicard-label(class="card-label-{{color}}" title="{{name}}")
.minicard-title= title
.minicard-title
.handle
.fa.fa-arrows
if $eq 'prefix-with-full-path' currentBoard.presentParentTask
.parent-prefix
| {{ parentString ' > ' }}
if $eq 'prefix-with-parent' currentBoard.presentParentTask
.parent-prefix
| {{ parentCardName }}
if isLinkedBoard
a.js-linked-link
span.linked-icon.fa.fa-folder
else if isLinkedCard
a.js-linked-link
span.linked-icon.fa.fa-id-card
if getArchived
span.linked-icon.linked-archived.fa.fa-archive
+viewer
= getTitle
if $eq 'subtext-with-full-path' currentBoard.presentParentTask
.parent-subtext
| {{ parentString ' > ' }}
if $eq 'subtext-with-parent' currentBoard.presentParentTask
.parent-subtext
| {{ parentCardName }}
.dates
if startAt
.date
+minicardStartDate
if dueAt
.date
+minicardDueDate
if members
if getReceived
unless getStart
unless getDue
unless getEnd
.date
+minicardReceivedDate
if getStart
.date
+minicardStartDate
if getDue
.date
+minicardDueDate
if getSpentTime
.date
+cardSpentTime
.minicard-custom-fields
each customFieldsWD
if definition.showOnCard
.minicard-custom-field
if definition.showLabelOnMiniCard
.minicard-custom-field-item
+viewer
= definition.name
.minicard-custom-field-item
+viewer
= trueValue
if getMembers
.minicard-members.js-minicard-members
each members
each getMembers
+userAvatar(userId=this)
.badges
if comments.count
.badge(title="{{_ 'card-comments-title' comments.count }}")
span.badge-icon.fa.fa-comment-o.badge-comment
span.badge-text= comments.count
if description
.badge.badge-state-image-only(title=description)
unless currentUser.isNoComments
if comments.count
.badge(title="{{_ 'card-comments-title' comments.count }}")
span.badge-icon.fa.fa-comment-o.badge-comment
span.badge-text= comments.count
if getDescription
.badge.badge-state-image-only(title=getDescription)
span.badge-icon.fa.fa-align-left
if attachments.count
.badge
+11
View File
@@ -6,4 +6,15 @@ BlazeComponent.extendComponent({
template() {
return 'minicard';
},
events() {
return [{
'click .js-linked-link' () {
if (this.data().isLinkedCard())
Utils.goCardId(this.data().linkedId);
else if (this.data().isLinkedBoard())
Utils.goBoardId(this.data().linkedId);
},
}];
},
}).register('minicard');
+126 -1
View File
@@ -9,7 +9,7 @@
&.placeholder
background: darken(white, 20%)
border-radius: 2px
border-radius: 9px
&.ui-sortable-helper
cursor: grabbing
@@ -44,6 +44,16 @@
transition: transform 0.2s,
border-radius 0.2s
&.linked-board
&.linked-card
.linked-icon
display: inline-block
margin-right: 11px
vertical-align: baseline
font-size: 0.9em
.linked-archived
color: #937760
.is-selected &
transform: translateX(11px)
border-bottom-right-radius: 0
@@ -77,6 +87,31 @@
height: @width
border-radius: 2px
margin-left: 3px
.minicard-custom-fields
display:block;
.minicard-custom-field
display:flex;
.minicard-custom-field-item
max-width:50%;
flex-grow:1;
.handle
width: 20px;
height: 20px;
position: absolute;
right: 5px;
top: 5px;
display:none;
@media only screen and (max-width: 1199px) {
display:block;
}
.fa-arrows
font-size:20px;
color: #ccc;
.minicard-title
p:last-child
margin-bottom: 0
.viewer
display: inline-block
.dates
display: flex;
flex-direction: row;
@@ -152,6 +187,13 @@
margin-bottom: 20px
overflow-y: auto
.parent-prefix
color: darken(white, 30%)
font-size: 0.9em
.parent-subtext
color: darken(white, 30%)
font-size: 0.9em
@media screen and (max-width: 800px)
.minicard
.is-selected &
@@ -160,3 +202,86 @@
border-top-right-radius: 0
z-index: 15
box-shadow: 0 1px 2px rgba(0,0,0,.15)
minicard-color(background, color...)
background-color: background
if color
color: color //overwrite text for better visibility
&:hover:not(.minicard-composer),
.is-selected &,
.draggable-hover-card &
background: darken(background, 3%)
.draggable-hover-card &
background: darken(background, 7%)
.minicard-green
minicard-color(#3cb500, #ffffff) //White text for better visibility
.minicard-yellow
minicard-color(#fad900)
.minicard-orange
minicard-color(#ff9f19)
.minicard-red
minicard-color(#eb4646, #ffffff) //White text for better visibility
.minicard-purple
minicard-color(#a632db, #ffffff) //White text for better visibility
.minicard-blue
minicard-color(#0079bf, #ffffff) //White text for better visibility
.minicard-pink
minicard-color(#ff78cb)
.minicard-sky
minicard-color(#00c2e0, #ffffff) //White text for better visibility
.minicard-black
minicard-color(#4d4d4d, #ffffff) //White text for better visibility
.minicard-lime
minicard-color(#51e898)
.minicard-silver
minicard-color(#c0c0c0)
.minicard-peachpuff
minicard-color(#ffdab9)
.minicard-crimson
minicard-color(#dc143c, #ffffff) //White text for better visibility
.minicard-plum
minicard-color(#dda0dd)
.minicard-darkgreen
minicard-color(#006400, #ffffff) //White text for better visibility
.minicard-slateblue
minicard-color(#6a5acd, #ffffff) //White text for better visibility
.minicard-magenta
minicard-color(#ff00ff, #ffffff) //White text for better visibility
.minicard-gold
minicard-color(#ffd700)
.minicard-navy
minicard-color(#000080, #ffffff) //White text for better visibility
.minicard-gray
minicard-color(#808080, #ffffff) //White text for better visibility
.minicard-saddlebrown
minicard-color(#8b4513, #ffffff) //White text for better visibility
.minicard-paleturquoise
minicard-color(#afeeee)
.minicard-mistyrose
minicard-color(#ffe4e1)
.minicard-indigo
minicard-color(#4b0082, #ffffff) //White text for better visibility
+97
View File
@@ -0,0 +1,97 @@
template(name="subtasks")
h3 {{_ 'subtasks'}}
if toggleDeleteDialog.get
.board-overlay#card-details-overlay
+subtaskDeleteDialog(subtask = subtaskToDelete)
.card-subtasks-items
each subtask in currentCard.subtasks
+subtaskDetail(subtask = subtask)
if canModifyCard
+inlinedForm(autoclose=false classNames="js-add-subtask" cardId = cardId)
+addSubtaskItemForm
else
a.js-open-inlined-form
i.fa.fa-plus
| {{_ 'add-subtask'}}...
template(name="subtaskDetail")
.js-subtasks.subtask
+inlinedForm(classNames="js-edit-subtask-title" subtask = subtask)
+editSubtaskItemForm(subtask = subtask)
else
.subtask-title
span
a.js-view-subtask(title="{{ subtask.title }}") {{_ "view-it"}}
if canModifyCard
a.js-delete-subtask.toggle-delete-subtask-dialog {{_ "delete"}}...
if canModifyCard
h2.title.js-open-inlined-form.is-editable
+viewer
= subtask.title
else
h2.title
+viewer
= subtask.title
template(name="subtaskDeleteDialog")
.js-confirm-subtask-delete
p
i(class="fa fa-exclamation-triangle" aria-hidden="true")
p
| {{_ 'confirm-subtask-delete-dialog'}}
span {{subtask.title}}
| ?
.js-subtask-delete-buttons
button.confirm-subtask-delete(type="button") {{_ 'delete'}}
button.toggle-delete-subtask-dialog(type="button") {{_ 'cancel'}}
template(name="addSubtaskItemForm")
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 dir="auto")
if $eq type 'item'
= item.title
else
= subtask.title
.edit-controls.clearfix
button.primary.confirm.js-submit-edit-subtask-item-form(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
span(title=createdAt) {{ moment createdAt }}
if canModifyCard
a.js-delete-subtask-item {{_ "delete"}}...
template(name="subtasksItems")
.subtasks-items.js-subtasks-items
each item in subtasks.items
+inlinedForm(classNames="js-edit-subtask-item" item = item subtasks = subtasks)
+editSubtaskItemForm(type = 'item' item = item subtasks = subtasks)
else
+subtaskItemDetail(item = item subtasks = subtasks)
if canModifyCard
+inlinedForm(autoclose=false classNames="js-add-subtask-item" subtasks = subtasks dir="auto")
+addSubtaskItemForm
else
a.add-subtask-item.js-open-inlined-form
i.fa.fa-plus
| {{_ 'add-subtask-item'}}...
template(name='subtaskItemDetail')
.js-subtasks-item.subtasks-item
if canModifyCard
.check-box.materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}")
.item-title.js-open-inlined-form.is-editable(class="{{#if item.isFinished }}is-checked{{/if}}")
+viewer
= item.title
else
.materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}")
.item-title(class="{{#if item.isFinished }}is-checked{{/if}}")
+viewer
= item.title
+146
View File
@@ -0,0 +1,146 @@
BlazeComponent.extendComponent({
canModifyCard() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
},
}).register('subtaskDetail');
BlazeComponent.extendComponent({
addSubtask(event) {
event.preventDefault();
const textarea = this.find('textarea.js-add-subtask-item');
const title = textarea.value.trim();
const cardId = this.currentData().cardId;
const card = Cards.findOne(cardId);
const sortIndex = -1;
const crtBoard = Boards.findOne(card.boardId);
const targetBoard = crtBoard.getDefaultSubtasksBoard();
const listId = targetBoard.getDefaultSubtasksListId();
const swimlaneId = targetBoard.getDefaultSwimline()._id;
if (title) {
const _id = Cards.insert({
title,
parentId: cardId,
members: [],
labelIds: [],
customFields: [],
listId,
boardId: targetBoard._id,
sort: sortIndex,
swimlaneId,
type: 'cardType-card',
});
// In case the filter is active we need to add the newly inserted card in
// the list of exceptions -- cards that are not filtered. Otherwise the
// card will disappear instantly.
// See https://github.com/wekan/wekan/issues/80
Filter.addException(_id);
setTimeout(() => {
this.$('.add-subtask-item').last().click();
}, 100);
}
textarea.value = '';
textarea.focus();
},
canModifyCard() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
},
deleteSubtask() {
const subtask = this.currentData().subtask;
if (subtask && subtask._id) {
subtask.archive();
this.toggleDeleteDialog.set(false);
}
},
editSubtask(event) {
event.preventDefault();
const textarea = this.find('textarea.js-edit-subtask-item');
const title = textarea.value.trim();
const subtask = this.currentData().subtask;
subtask.setTitle(title);
},
onCreated() {
this.toggleDeleteDialog = new ReactiveVar(false);
this.subtaskToDelete = null; //Store data context to pass to subtaskDeleteDialog template
},
pressKey(event) {
//If user press enter key inside a form, submit it
//Unless the user is also holding down the 'shift' key
if (event.keyCode === 13 && !event.shiftKey) {
event.preventDefault();
const $form = $(event.currentTarget).closest('form');
$form.find('button[type=submit]').click();
}
},
events() {
const events = {
'click .toggle-delete-subtask-dialog'(event) {
if($(event.target).hasClass('js-delete-subtask')){
this.subtaskToDelete = this.currentData().subtask; //Store data context
}
this.toggleDeleteDialog.set(!this.toggleDeleteDialog.get());
},
'click .js-view-subtask'(event) {
if($(event.target).hasClass('js-view-subtask')){
const subtask = this.currentData().subtask;
const board = subtask.board();
FlowRouter.go('card', {
boardId: board._id,
slug: board.slug,
cardId: subtask._id,
});
}
},
};
return [{
...events,
'submit .js-add-subtask': this.addSubtask,
'submit .js-edit-subtask-title': this.editSubtask,
'click .confirm-subtask-delete': this.deleteSubtask,
keydown: this.pressKey,
}];
},
}).register('subtasks');
Template.subtaskDeleteDialog.onCreated(() => {
const $cardDetails = this.$('.card-details');
this.scrollState = { position: $cardDetails.scrollTop(), //save current scroll position
top: false, //required for smooth scroll animation
};
//Callback's purpose is to only prevent scrolling after animation is complete
$cardDetails.animate({ scrollTop: 0 }, 500, () => { this.scrollState.top = true; });
//Prevent scrolling while dialog is open
$cardDetails.on('scroll', () => {
if(this.scrollState.top) { //If it's already in position, keep it there. Otherwise let animation scroll
$cardDetails.scrollTop(0);
}
});
});
Template.subtaskDeleteDialog.onDestroyed(() => {
const $cardDetails = this.$('.card-details');
$cardDetails.off('scroll'); //Reactivate scrolling
$cardDetails.animate( { scrollTop: this.scrollState.position });
});
Template.subtaskItemDetail.helpers({
canModifyCard() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
},
});
BlazeComponent.extendComponent({
// ...
}).register('subtaskItemDetail');
+142
View File
@@ -0,0 +1,142 @@
.js-add-subtask
color: #8c8c8c
textarea.js-add-subtask-item, textarea.js-edit-subtask-item
overflow: hidden
word-wrap: break-word
resize: none
height: 34px
.delete-text
color: #8c8c8c
text-decoration: underline
word-wrap: break-word
float: right
padding-top: 6px
&:hover
color: inherit
.subtask-title
.checkbox
float: left
width: 30px
height 30px
font-size: 18px
line-height: 30px
.title
font-size: 18px
line-height: 25px
.subtasks-stat
margin: 0 0.5em
float: right
padding-top: 6px
&.is-finished
color: #3cb500
.js-delete-subtask
@extends .delete-text
margin: 0 0.5em
.js-view-subtask
@extends .delete-text
.js-confirm-subtask-delete
background-color: darken(white, 3%)
position: absolute
float: left;
width: 60%
margin-top: 0
margin-left: 13%
padding-bottom: 2%
padding-left: 3%
padding-right: 3%
z-index: 17
border-radius: 3px
p
position: relative
margin-top: 3%
width: 100%
text-align: center
span
font-weight: bold
i
font-size: 2em
.js-subtask-delete-buttons
position: relative
padding: left 2% right 2%
.confirm-subtask-delete
margin-left: 12%
float: left
.toggle-delete-subtask-dialog
margin-right: 12%
float: right
#card-details-overlay
top: 0
bottom: -600px
right: 0
.subtasks
background: darken(white, 3%)
&.placeholder
background: darken(white, 20%)
border-radius: 2px
&.ui-sortable-helper
box-shadow: -2px 2px 8px rgba(0, 0, 0, .3),
0 0 1px rgba(0, 0, 0, .5)
transform: rotate(4deg)
cursor: grabbing
.subtasks-item
margin: 0 0 0 0.1em
line-height: 18px
font-size: 1.1em
margin-top: 3px
display: flex
background: darken(white, 3%)
&.placeholder
background: darken(white, 20%)
border-radius: 2px
&.ui-sortable-helper
box-shadow: -2px 2px 8px rgba(0, 0, 0, .3),
0 0 1px rgba(0, 0, 0, .5)
transform: rotate(4deg)
cursor: grabbing
&:hover
background-color: darken(white, 8%)
.check-box
margin: 0.1em 0 0 0;
&.is-checked
border-bottom: 2px solid #3cb500
border-right: 2px solid #3cb500
.item-title
flex: 1
padding-left: 10px;
&.is-checked
color: #8c8c8c
font-style: italic
& .viewer
p
margin-bottom: 2px
.js-delete-subtask-item
margin: 0 0 0.5em 1.33em
@extends .delete-text
padding: 12px 0 0 0
.add-subtask-item
margin: 0.2em 0 0.5em 1.33em
display: inline-block
+15
View File
@@ -0,0 +1,15 @@
template(name="datepicker")
.datepicker-container
form.edit-date
.fields
.left
label(for="date") {{_ 'date'}}
input.js-date-field#date(type="text" name="date" value=showDate placeholder=dateFormat autofocus)
.right
label(for="time") {{_ 'time'}}
input.js-time-field#time(type="text" name="time" value=showTime placeholder=timeFormat)
.js-datepicker
if error.get
.warning {{_ error.get}}
button.primary.wide.left.js-submit-date(type="submit") {{_ 'save'}}
button.js-delete-date.negate.wide.right.js-delete-date {{_ 'delete'}}
+17
View File
@@ -0,0 +1,17 @@
.datepicker-container
.fields
.left
width: 56%
.right
width: 38%
.datepicker
width: 100%
table
width: 100%
border: none
border-spacing: 0
border-collapse: collapse
thead
background: none
td, th
box-sizing: border-box
+60 -1
View File
@@ -1,10 +1,10 @@
@import 'nib'
select,
textarea,
input:not([type=file]),
button
box-sizing: border-box
-webkit-appearance: none
background-color: #ebebeb
border: 1px solid #ccc
border-radius: 3px
@@ -85,6 +85,9 @@ select
width: 256px
margin-bottom: 8px
&.inline
width: 100%
option[disabled]
color: #8c8c8c
@@ -222,9 +225,12 @@ textarea
.edit-controls,
.add-controls
display: flex
align-items: baseline
margin-top: 0
button[type=submit]
input[type=button]
float: left
height: 32px
margin-top: -2px
@@ -630,6 +636,59 @@ button
a, .quiet
color: white
// Material Design Toggle Switch
.material-toggle-switch
display: flex
.toggle-label
position: relative
display: block
height: 20px
width: 44px
background-color: #a6a6a6
border-radius: 100px
cursor: pointer
transition: all 0.3s ease
&:after
position: absolute
left: -2px
top: -3px
display: block
width: 26px
height: 26px
border-radius: 100px
background-color: #fff
box-shadow: 0px 3px 3px rgba(0,0,0,0.05)
content: ''
transition: all 0.3s ease
&:active
&:after
transform: scale(1.15, 0.85)
.toggle-switch:checked ~ .toggle-label
background-color: #6fbeb5
&:after
left: 20px
background-color: #179588
.toggle-switch:checked:disabled ~ .toggle-label
background-color: #d5d5d5
pointer-events: none
&:after
background-color: #bcbdbc
.toggle-switch
display: none
.toggle-switch-title
margin: 0 0.5em
display: flex
@media screen and (max-width: 800px)
.edit-controls,
.add-controls
+2 -1
View File
@@ -12,10 +12,11 @@ template(name="import")
template(name="importTextarea")
form
p: label(for='import-textarea') {{_ instruction}}
p: label(for='import-textarea') {{_ instruction}} {{_ 'import-board-instruction-about-errors'}}
textarea.js-import-json(placeholder="{{_ 'import-json-placeholder'}}" autofocus)
| {{jsonText}}
if isSandstorm
h1.warning {{_ 'import-sandstorm-backup-warning'}}
p.warning {{_ 'import-sandstorm-warning'}}
input.primary.wide(type="submit" value="{{_ 'import'}}")
+4
View File
@@ -2,3 +2,7 @@ template(name='list')
.list.js-list(id="js-list-{{_id}}")
+listHeader
+listBody
template(name='miniList')
a.mini-list.js-select-list.js-list(id="js-list-{{_id}}")
+listHeader
+35 -10
View File
@@ -1,4 +1,4 @@
const { calculateIndex } = Utils;
const { calculateIndex, enableClickOnTouch } = Utils;
BlazeComponent.extendComponent({
// Proxy
@@ -18,13 +18,25 @@ BlazeComponent.extendComponent({
// callback, we basically solve all issues related to reactive updates. A
// comment below provides further details.
onRendered() {
const boardComponent = this.parentComponent();
const boardComponent = this.parentComponent().parentComponent();
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
}
const itemsSelector = '.js-minicard:not(.placeholder, .js-card-composer)';
const $cards = this.$('.js-minicards');
if(window.matchMedia('(max-width: 1199px)').matches) {
$( '.js-minicards' ).sortable({
handle: '.handle',
});
}
$cards.sortable({
connectWith: '.js-minicards',
connectWith: '.js-minicards:not(.js-list-full)',
tolerance: 'pointer',
appendTo: 'body',
appendTo: '.board-canvas',
helper(evt, item) {
const helper = item.clone();
if (MultiSelection.isActive()) {
@@ -40,9 +52,9 @@ BlazeComponent.extendComponent({
},
distance: 7,
items: itemsSelector,
scroll: false,
placeholder: 'minicard-wrapper placeholder',
start(evt, ui) {
ui.helper.css('z-index', 1000);
ui.placeholder.height(ui.helper.height());
EscapeActions.executeUpTo('popup-close');
boardComponent.setIsDragging(true);
@@ -55,6 +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 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
@@ -67,20 +86,19 @@ BlazeComponent.extendComponent({
if (MultiSelection.isActive()) {
Cards.find(MultiSelection.getMongoSelector()).forEach((card, i) => {
card.move(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(listId, sortIndex.base);
card.move(currentBoard._id, swimlaneId, listId, sortIndex.base);
}
boardComponent.setIsDragging(false);
},
});
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
}
// ugly touch event hotfix
enableClickOnTouch(itemsSelector);
// Disable drag-dropping if the current user is not a board member or is comment only
this.autorun(() => {
@@ -114,3 +132,10 @@ BlazeComponent.extendComponent({
});
},
}).register('list');
Template.miniList.events({
'click .js-select-list'() {
const listId = this._id;
Session.set('currentList', listId);
},
});
+210 -8
View File
@@ -9,7 +9,6 @@
// Even if this background color is the same as the body we can't leave it
// transparent, because that won't work during a list drag.
background: darken(white, 13%)
height: 100%
border-left: 1px solid darken(white, 20%)
padding: 0
float: left
@@ -44,15 +43,30 @@
background: white
margin: -3px 0 8px
.list-header
.list-header-card-count
height: 35px
.list-header-add
flex: 0 0 auto
margin: 20px 12px 4px
padding: 20px 12px 4px
position: relative
min-height: 20px
.list-header
flex: 0 0 auto
padding: 20px 12px 4px
position: relative
min-height: 20px
background-color: #e4e4e4;
border-bottom: 6px solid #e4e4e4;
&.ui-sortable-handle
cursor: grab
.list-header-left-icon
display: none
.list-header-name
display: inline
font-size: 16px
@@ -65,28 +79,40 @@
text-overflow: ellipsis
word-wrap: break-word
.list-header-watch-icon
padding-left: 10px
color: #a6a6a6
.list-header-menu
position: absolute
padding: 7px
padding: 27px 19px
margin-top: 1px
top: -@padding
right: -@padding
top: -7px
right: -7px
.list-header-plus-icon
color: #a6a6a6
margin-right: 10px
.highlight
color: #ce1414
.cardCount
color: #8c8c8c
font-size: 0.8em
.list-body
flex: 1
flex: 1 1 auto
flex-direction: column
display: flex
overflow-y: auto
padding: 5px 11px
.minicards
flex: 1
flex-grow: 1
flex-shrink: 0
form
margin-bottom: 9px
@@ -110,3 +136,179 @@
background: #fafafa
color: #222
box-shadow: 0 1px 2px rgba(0,0,0,.2)
#js-wip-limit-edit
padding-top: 2%
p
margin-bottom: 0
input
display: inline-block
.wip-limit-value
width: 20%
margin-right: 5%
.wip-limit-error
display: none
.soft-wip-limit
margin-right: 8px
div
float: left
@media screen and (max-width: 800px)
.list-header-menu
margin-right: 30px
.mini-list
flex: 0 0 60px
height: auto
width: 100%
border-left: 0px
border-bottom: 1px solid darken(white, 20%)
.list
display: block
width: 100%
border-left: 0px
&:first-child
margin-left: 0px
&.ui-sortable-helper
flex: 0 0 60px
height: 60px
width: 100%
border-left: 0px
border-bottom: 1px solid darken(white, 20%)
.list-header.ui-sortable-handle
cursor: grabbing
&.placeholder
flex: 0 0 60px
height: 60px
width: 100%
border-left: 0px
border-bottom: 1px solid darken(white, 20%)
.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
padding-right: 27px
margin-top: 1px
top: -@padding
left: -@padding
.list-header-menu-icon
position: absolute
padding: 7px
top: 50%
transform: translateY(-50%)
right: 17px
font-size: 20px
.link-board-wrapper
display: flex
align-items: baseline
.js-link-board
margin-left: 15px
.search-card-results
max-height: 250px
overflow: hidden
.sk-spinner-list
margin-top: unset !important
list-header-color(background, color...)
border-bottom: 6px solid background
.list-header-white
list-header-color(#ffffff, #4d4d4d) //Black text for better visibility
border: 1px solid #eee
.list-header-green
list-header-color(#3cb500, #ffffff) //White text for better visibility
.list-header-yellow
list-header-color(#fad900, #4d4d4d) //Black text for better visibility
.list-header-orange
list-header-color(#ff9f19, #4d4d4d) //Black text for better visibility
.list-header-red
list-header-color(#eb4646, #ffffff) //White text for better visibility
.list-header-purple
list-header-color(#a632db, #ffffff) //White text for better visibility
.list-header-blue
list-header-color(#0079bf, #ffffff) //White text for better visibility
.list-header-pink
list-header-color(#ff78cb, #4d4d4d) //Black text for better visibility
.list-header-sky
list-header-color(#00c2e0, #ffffff) //White text for better visibility
.list-header-black
list-header-color(#4d4d4d, #ffffff) //White text for better visibility
.list-header-lime
list-header-color(#51e898, #4d4d4d) //Black text for better visibility
.list-header-silver
list-header-color(unset, #4d4d4d) //Black text for better visibility
.list-header-peachpuff
list-header-color(#ffdab9, #4d4d4d) //Black text for better visibility
.list-header-crimson
list-header-color(#dc143c, #ffffff) //White text for better visibility
.list-header-plum
list-header-color(#dda0dd, #4d4d4d) //Black text for better visibility
.list-header-darkgreen
list-header-color(#006400, #ffffff) //White text for better visibility
.list-header-slateblue
list-header-color(#6a5acd, #ffffff) //White text for better visibility
.list-header-magenta
list-header-color(#ff00ff, #ffffff) //White text for better visibility
.list-header-gold
list-header-color(#ffd700, #4d4d4d) //Black text for better visibility
.list-header-navy
list-header-color(#000080, #ffffff) //White text for better visibility
.list-header-gray
list-header-color(#808080, #ffffff) //White text for better visibility
.list-header-saddlebrown
list-header-color(#8b4513, #ffffff) //White text for better visibility
.list-header-paleturquoise
list-header-color(#afeeee, #4d4d4d) //Black text for better visibility
.list-header-mistyrose
list-header-color(#ffe4e1, #4d4d4d) //Black text for better visibility
.list-header-indigo
list-header-color(#4b0082, #ffffff) //White text for better visibility
+93 -4
View File
@@ -1,10 +1,10 @@
template(name="listBody")
.list-body.js-perfect-scrollbar
.minicards.clearfix.js-minicards
.minicards.clearfix.js-minicards(class="{{#if reachedWipLimit}}js-list-full{{/if}}")
if cards.count
+inlinedForm(autoclose=false position="top")
+addCardForm(listId=_id position="top")
each cards
each (cardsWithLimit (idOrNull ../../_id))
a.minicard-wrapper.js-minicard(href=absoluteUrl
class="{{#if cardIsSelected}}is-selected{{/if}}"
class="{{#if MultiSelection.isSelected _id}}is-checked{{/if}}")
@@ -12,6 +12,9 @@ template(name="listBody")
.materialCheckBox.multi-selection-checkbox.js-toggle-multi-selection(
class="{{#if MultiSelection.isSelected _id}}is-checked{{/if}}")
+minicard(this)
if (showSpinner (idOrNull ../../_id))
+spinnerList
if canSeeAddCard
+inlinedForm(autoclose=false position="bottom")
+addCardForm(listId=_id position="bottom")
@@ -20,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
@@ -34,8 +47,84 @@ template(name="addCardForm")
.add-controls.clearfix
button.primary.confirm(type="submit") {{_ 'add'}}
a.fa.fa-times-thin.js-close-inlined-form
unless currentBoard.isTemplatesBoard
unless currentBoard.isTemplateBoard
span.quiet
| {{_ 'or'}}
a.js-link {{_ 'link'}}
span.quiet
| &nbsp;
| /
a.js-search {{_ 'search'}}
span.quiet
| &nbsp;
| /
a.js-card-template {{_ 'template'}}
template(name="autocompleteLabelLine")
.minicard-label(class="card-label-{{colorName}}" title=labelName)
span(class="{{#if hasNoName}}quiet{{/if}}")= labelName
template(name="linkCardPopup")
label {{_ 'boards'}}:
.link-board-wrapper
select.js-select-boards
option(value="")
each boards
option(value="{{_id}}") {{title}}
input.primary.confirm.js-link-board(type="button" value="{{_ 'link'}}")
label {{_ 'swimlanes'}}:
select.js-select-swimlanes
each swimlanes
option(value="{{_id}}") {{title}}
label {{_ 'lists'}}:
select.js-select-lists
each lists
option(value="{{_id}}") {{title}}
label {{_ 'cards'}}:
select.js-select-cards
each cards
option(value="{{getId}}") {{getTitle}}
.edit-controls.clearfix
input.primary.confirm.js-done(type="button" value="{{_ 'link'}}")
template(name="searchElementPopup")
form
label
| {{_ 'title'}}
input.js-element-title(type="text" placeholder="{{_ 'title'}}" autofocus required dir="auto")
unless isTemplateSearch
label {{_ 'boards'}}:
.link-board-wrapper
select.js-select-boards
option(value="")
each boards
option(value="{{_id}}") {{title}}
form.js-search-term-form
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
each results
a.minicard-wrapper.js-minicard
+miniboard(this)
if isListTemplateSearch
each results
a.minicard-wrapper.js-minicard
+minilist(this)
if isSwimlaneTemplateSearch
each results
a.minicard-wrapper.js-minicard
+miniswimlane(this)
if isCardTemplateSearch
each results
a.minicard-wrapper.js-minicard
+minicard(this)
unless isTemplateSearch
each results
a.minicard-wrapper.js-minicard
+minicard(this)
+428 -12
View File
@@ -1,4 +1,12 @@
const subManager = new SubsManager();
const InfiniteScrollIter = 10;
BlazeComponent.extendComponent({
onCreated() {
// for infinite scrolling
this.cardlimit = new ReactiveVar(InfiniteScrollIter);
},
mixins() {
return [Mixins.PerfectScrollbar];
},
@@ -35,16 +43,59 @@ BlazeComponent.extendComponent({
const members = formComponent.members.get();
const labelIds = formComponent.labels.get();
const customFields = formComponent.customFields.get();
const board = this.data().board();
let linkedId = '';
let swimlaneId = '';
const boardView = (Meteor.user().profile || {}).boardView;
let cardType = 'cardType-card';
if (title) {
if (board.isTemplatesBoard()) {
swimlaneId = this.parentComponent().parentComponent().data()._id; // Always swimlanes view
const swimlane = Swimlanes.findOne(swimlaneId);
// If this is the card templates swimlane, insert a card template
if (swimlane.isCardTemplatesSwimlane())
cardType = 'template-card';
// If this is the board templates swimlane, insert a board template and a linked card
else if (swimlane.isBoardTemplatesSwimlane()) {
linkedId = Boards.insert({
title,
permission: 'private',
type: 'template-board',
});
Swimlanes.insert({
title: TAPi18n.__('default'),
boardId: linkedId,
});
cardType = 'cardType-linkedBoard';
}
} else if (boardView === 'board-view-swimlanes')
swimlaneId = this.parentComponent().parentComponent().data()._id;
else if ((boardView === 'board-view-lists') || (boardView === 'board-view-cal') || !boardView)
swimlaneId = board.getDefaultSwimline()._id;
const _id = Cards.insert({
title,
members,
labelIds,
customFields,
listId: this.data()._id,
boardId: this.data().board()._id,
boardId: board._id,
sort: sortIndex,
swimlaneId,
type: cardType,
linkedId,
});
// if the displayed card count is less than the total cards in the list,
// we need to increment the displayed card count to prevent the spinner
// to appear
const cardCount = this.data().cards(this.idOrNull(swimlaneId)).count();
if (this.cardlimit.get() < cardCount) {
this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter);
}
// In case the filter is active we need to add the newly inserted card in
// the list of exceptions -- cards that are not filtered. Otherwise the
// card will disappear instantly.
@@ -76,9 +127,9 @@ BlazeComponent.extendComponent({
const methodName = evt.shiftKey ? 'toggleRange' : 'toggle';
MultiSelection[methodName](this.currentData()._id);
// If the card is already selected, we want to de-select it.
// XXX We should probably modify the minicard href attribute instead of
// overwriting the event in case the card is already selected.
// If the card is already selected, we want to de-select it.
// XXX We should probably modify the minicard href attribute instead of
// overwriting the event in case the card is already selected.
} else if (Session.equals('currentCard', this.currentData()._id)) {
evt.stopImmediatePropagation();
evt.preventDefault();
@@ -96,6 +147,42 @@ BlazeComponent.extendComponent({
MultiSelection.toggle(this.currentData()._id);
},
idOrNull(swimlaneId) {
const currentUser = Meteor.user();
if ((currentUser.profile || {}).boardView === 'board-view-swimlanes' ||
this.data().board().isTemplatesBoard())
return swimlaneId;
return undefined;
},
cardsWithLimit(swimlaneId) {
const limit = this.cardlimit.get();
const selector = {
listId: this.currentData()._id,
archived: false,
};
if (swimlaneId)
selector.swimlaneId = swimlaneId;
return Cards.find(Filter.mongoSelector(selector), {
sort: ['sort'],
limit,
});
},
showSpinner(swimlaneId) {
const list = Template.currentData();
return list.cards(swimlaneId).count() > this.cardlimit.get();
},
canSeeAddCard() {
return !this.reachedWipLimit() && Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
},
reachedWipLimit() {
const list = Template.currentData();
return !list.getWipLimit('soft') && list.getWipLimit('enabled') && list.getWipLimit('value') <= list.cards().count();
},
events() {
return [{
'click .js-minicard': this.clickOnMiniCard,
@@ -121,11 +208,21 @@ BlazeComponent.extendComponent({
onCreated() {
this.labels = new ReactiveVar([]);
this.members = new ReactiveVar([]);
this.customFields = new ReactiveVar([]);
const currentBoardId = Session.get('currentBoard');
arr = [];
_.forEach(Boards.findOne(currentBoardId).customFields().fetch(), function(field){
if(field.automaticallyOnCard)
arr.push({_id: field._id, value: null});
});
this.customFields.set(arr);
},
reset() {
this.labels.set([]);
this.members.set([]);
this.customFields.set([]);
},
getLabels() {
@@ -137,7 +234,7 @@ BlazeComponent.extendComponent({
pressKey(evt) {
// Pressing Enter should submit the card
if (evt.keyCode === 13) {
if (evt.keyCode === 13 && !evt.shiftKey) {
evt.preventDefault();
const $form = $(evt.currentTarget).closest('form');
// XXX For some reason $form.submit() does not work (it's probably a bug
@@ -146,8 +243,8 @@ BlazeComponent.extendComponent({
// work.
$form.find('button[type=submit]').click();
// Pressing Tab should open the form of the next column, and Maj+Tab go
// in the reverse order
// Pressing Tab should open the form of the next column, and Maj+Tab go
// in the reverse order
} else if (evt.keyCode === 9) {
evt.preventDefault();
const isReverse = evt.shiftKey;
@@ -168,6 +265,9 @@ BlazeComponent.extendComponent({
events() {
return [{
keydown: this.pressKey,
'click .js-link': Popup.open('linkCard'),
'click .js-search': Popup.open('searchElement'),
'click .js-card-template': Popup.open('searchElement'),
}];
},
@@ -205,7 +305,7 @@ BlazeComponent.extendComponent({
const currentBoard = Boards.findOne(Session.get('currentBoard'));
callback($.map(currentBoard.labels, (label) => {
if (label.name.indexOf(term) > -1 ||
label.color.indexOf(term) > -1) {
label.color.indexOf(term) > -1) {
return label;
}
return null;
@@ -240,9 +340,325 @@ BlazeComponent.extendComponent({
},
}).register('addCardForm');
BlazeComponent.extendComponent({
onCreated() {
this.selectedBoardId = new ReactiveVar('');
this.selectedSwimlaneId = new ReactiveVar('');
this.selectedListId = new ReactiveVar('');
Template.listBody.helpers({
canSeeAddCard() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
this.boardId = Session.get('currentBoard');
// In order to get current board info
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');
this.listId = Blaze.getData(list[0])._id;
// Swimlane where to insert card
const swimlane = $(Popup._getTopStack().openerElement).closest('.js-swimlane');
this.swimlaneId = '';
const boardView = (Meteor.user().profile || {}).boardView;
if (boardView === 'board-view-swimlanes')
this.swimlaneId = Blaze.getData(swimlane[0])._id;
else if (boardView === 'board-view-lists' || !boardView)
this.swimlaneId = Swimlanes.findOne({boardId: this.boardId})._id;
},
});
boards() {
const boards = Boards.find({
archived: false,
'members.userId': Meteor.userId(),
_id: {$ne: Session.get('currentBoard')},
type: 'board',
}, {
sort: ['title'],
});
return boards;
},
swimlanes() {
if (!this.selectedBoardId.get()) {
return [];
}
const swimlanes = Swimlanes.find({boardId: this.selectedBoardId.get()});
if (swimlanes.count())
this.selectedSwimlaneId.set(swimlanes.fetch()[0]._id);
return swimlanes;
},
lists() {
if (!this.selectedBoardId.get()) {
return [];
}
const lists = Lists.find({boardId: this.selectedBoardId.get()});
if (lists.count())
this.selectedListId.set(lists.fetch()[0]._id);
return lists;
},
cards() {
if (!this.board) {
return [];
}
const ownCardsIds = this.board.cards().map((card) => { return card.linkedId || card._id; });
return Cards.find({
boardId: this.selectedBoardId.get(),
swimlaneId: this.selectedSwimlaneId.get(),
listId: this.selectedListId.get(),
archived: false,
linkedId: {$nin: ownCardsIds},
_id: {$nin: ownCardsIds},
type: {$nin: ['template-card']},
});
},
events() {
return [{
'change .js-select-boards'(evt) {
subManager.subscribe('board', $(evt.currentTarget).val(), false);
this.selectedBoardId.set($(evt.currentTarget).val());
},
'change .js-select-swimlanes'(evt) {
this.selectedSwimlaneId.set($(evt.currentTarget).val());
},
'change .js-select-lists'(evt) {
this.selectedListId.set($(evt.currentTarget).val());
},
'click .js-done' (evt) {
// LINK CARD
evt.stopPropagation();
evt.preventDefault();
const linkedId = $('.js-select-cards option:selected').val();
if (!linkedId) {
Popup.close();
return;
}
const _id = Cards.insert({
title: $('.js-select-cards option:selected').text(), //dummy
listId: this.listId,
swimlaneId: this.swimlaneId,
boardId: this.boardId,
sort: Lists.findOne(this.listId).cards().count(),
type: 'cardType-linkedCard',
linkedId,
});
Filter.addException(_id);
Popup.close();
},
'click .js-link-board' (evt) {
//LINK BOARD
evt.stopPropagation();
evt.preventDefault();
const impBoardId = $('.js-select-boards option:selected').val();
if (!impBoardId || Cards.findOne({linkedId: impBoardId, archived: false})) {
Popup.close();
return;
}
const _id = Cards.insert({
title: $('.js-select-boards option:selected').text(), //dummy
listId: this.listId,
swimlaneId: this.swimlaneId,
boardId: this.boardId,
sort: Lists.findOne(this.listId).cards().count(),
type: 'cardType-linkedBoard',
linkedId: impBoardId,
});
Filter.addException(_id);
Popup.close();
},
}];
},
}).register('linkCardPopup');
BlazeComponent.extendComponent({
mixins() {
return [Mixins.PerfectScrollbar];
},
onCreated() {
this.isCardTemplateSearch = $(Popup._getTopStack().openerElement).hasClass('js-card-template');
this.isListTemplateSearch = $(Popup._getTopStack().openerElement).hasClass('js-list-template');
this.isSwimlaneTemplateSearch = $(Popup._getTopStack().openerElement).hasClass('js-open-add-swimlane-menu');
this.isBoardTemplateSearch = $(Popup._getTopStack().openerElement).hasClass('js-add-board');
this.isTemplateSearch = this.isCardTemplateSearch ||
this.isListTemplateSearch ||
this.isSwimlaneTemplateSearch ||
this.isBoardTemplateSearch;
let board = {};
if (this.isTemplateSearch) {
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]},
});
}
if (!board) {
Popup.close();
return;
}
const boardId = board._id;
// Subscribe to this board
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, false);
this.swimlaneId = '';
// Swimlane where to insert card
const swimlane = $(Popup._getTopStack().openerElement).parents('.js-swimlane');
if ((Meteor.user().profile || {}).boardView === 'board-view-swimlanes')
this.swimlaneId = Blaze.getData(swimlane[0])._id;
else
this.swimlaneId = Swimlanes.findOne({boardId: this.boardId})._id;
// List where to insert card
const list = $(Popup._getTopStack().openerElement).closest('.js-list');
this.listId = Blaze.getData(list[0])._id;
}
this.term = new ReactiveVar('');
},
boards() {
const boards = Boards.find({
archived: false,
'members.userId': Meteor.userId(),
_id: {$ne: Session.get('currentBoard')},
type: 'board',
}, {
sort: ['title'],
});
return boards;
},
results() {
if (!this.selectedBoardId) {
return [];
}
const board = Boards.findOne(this.selectedBoardId.get());
if (!this.isTemplateSearch || this.isCardTemplateSearch) {
return board.searchCards(this.term.get(), false);
} else if (this.isListTemplateSearch) {
return board.searchLists(this.term.get());
} else if (this.isSwimlaneTemplateSearch) {
return board.searchSwimlanes(this.term.get());
} else if (this.isBoardTemplateSearch) {
const boards = board.searchBoards(this.term.get());
boards.forEach((board) => {
subManager.subscribe('board', board.linkedId, false);
});
return boards;
} else {
return [];
}
},
events() {
return [{
'change .js-select-boards'(evt) {
subManager.subscribe('board', $(evt.currentTarget).val(), false);
this.selectedBoardId.set($(evt.currentTarget).val());
},
'submit .js-search-term-form'(evt) {
evt.preventDefault();
this.term.set(evt.target.searchTerm.value);
},
'click .js-minicard'(evt) {
// 0. Common
const title = $('.js-element-title').val().trim();
if (!title)
return;
const element = Blaze.getData(evt.currentTarget);
element.title = title;
let _id = '';
if (!this.isTemplateSearch || this.isCardTemplateSearch) {
// Card insertion
// 1. Common
element.sort = Lists.findOne(this.listId).cards().count();
// 1.A From template
if (this.isTemplateSearch) {
element.type = 'cardType-card';
element.linkedId = '';
_id = element.copy(this.boardId, this.swimlaneId, this.listId);
// 1.B Linked card
} else {
delete element._id;
element.type = 'cardType-linkedCard';
element.linkedId = element.linkedId || element._id;
_id = Cards.insert(element);
}
Filter.addException(_id);
// List insertion
} else if (this.isListTemplateSearch) {
element.sort = Swimlanes.findOne(this.swimlaneId).lists().count();
element.type = 'list';
_id = element.copy(this.boardId, this.swimlaneId);
} else if (this.isSwimlaneTemplateSearch) {
element.sort = Boards.findOne(this.boardId).swimlanes().count();
element.type = 'swimlalne';
_id = element.copy(this.boardId);
} else if (this.isBoardTemplateSearch) {
board = Boards.findOne(element.linkedId);
board.sort = Boards.find({archived: false}).count();
board.type = 'board';
board.title = element.title;
delete board.slug;
_id = board.copy();
}
Popup.close();
},
}];
},
}).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');
+71 -8
View File
@@ -1,21 +1,44 @@
template(name="listHeader")
.list-header.js-list-header
.list-header.js-list-header(
class="{{#if limitToShowCardsCount}}list-header-card-count{{/if}}"
class="{{#if colorClass}}list-header-{{colorClass}}{{/if}}")
+inlinedForm
+editListTitleForm
else
if isMiniScreen
if currentList
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}}
|/#{wipLimit.value})
if showCardsCountForList cards.count
= cards.count
span.lowercase
| {{_ 'cards'}}
if currentUser.isBoardMember
|&nbsp;
span(class="cardCount") {{cardsCount}} {{_ 'cards-count'}}
if isMiniScreen
if currentList
if isWatching
i.list-header-watch-icon.fa.fa-eye
div.list-header-menu
unless currentUser.isCommentOnly
if canSeeAddCard
a.js-add-card.fa.fa-plus.list-header-plus-icon
a.fa.fa-navicon.js-open-list-menu
else
a.list-header-menu-icon.fa.fa-angle-right.js-select-list
else if currentUser.isBoardMember
if isWatching
i.list-header-watch-icon.fa.fa-eye
div.list-header-menu
a.js-add-card.fa.fa-plus.list-header-plus-icon
a.fa.fa-navicon.js-open-list-menu
unless currentUser.isCommentOnly
if canSeeAddCard
a.js-add-card.fa.fa-plus.list-header-plus-icon
a.fa.fa-navicon.js-open-list-menu
template(name="editListTitleForm")
.list-composer
@@ -29,10 +52,17 @@ template(name="listActionPopup")
li: a.js-toggle-watch-list {{#if isWatching}}{{_ 'unwatch'}}{{else}}{{_ 'watch'}}{{/if}}
unless currentUser.isCommentOnly
hr
ul.pop-over-list
li: a.js-set-color-list {{_ 'set-color-list'}}
hr
ul.pop-over-list
if cards.count
li: a.js-select-cards {{_ 'list-select-cards'}}
hr
if currentUser.isBoardAdmin
ul.pop-over-list
li: a.js-set-wip-limit {{#if isWipLimitEnabled }}{{_ 'edit-wip-limit'}}{{else}}{{_ 'setWipLimitPopup-title'}}{{/if}}
hr
ul.pop-over-list
li: a.js-close-list {{_ 'archive-list'}}
hr
@@ -64,3 +94,36 @@ template(name="listDeletePopup")
unless archived
p {{_ "list-delete-suggest-archive"}}
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
template(name="setWipLimitPopup")
#js-wip-limit-edit
label {{_ 'set-wip-limit-value'}}
ul.pop-over-list
li: a.js-enable-wip-limit {{_ 'enable-wip-limit'}}
if isWipLimitEnabled
i.fa.fa-check
if isWipLimitEnabled
p
input.wip-limit-value(type="number" value="{{ wipLimitValue }}" min="1" max="99")
input.wip-limit-apply(type="submit" value="{{_ 'apply'}}")
input.wip-limit-error
p
.soft-wip-limit
.materialCheckBox(class="{{#if isWipLimitSoft}}is-checked{{/if}}")
label {{_ 'soft-wip-limit'}}
template(name="wipLimitErrorPopup")
.wip-limit-invalid
p {{_ 'wipLimitErrorPopup-dialog-pt1'}}
p {{_ 'wipLimitErrorPopup-dialog-pt2'}}
button.full.js-back-view(type="submit") {{_ 'cancel'}}
template(name="setListColorPopup")
form.edit-label
.palette-colors: each colors
// note: we use the swimlane palette to have more than just the border
span.card-label.palette-color.js-palette-color(class="swimlane-{{color}}")
if(isSelected color)
i.fa.fa-check
button.primary.confirm.js-submit {{_ 'save'}}
button.js-remove-color.negate.wide.right {{_ 'unset-color'}}
+122 -3
View File
@@ -1,4 +1,14 @@
let listsColors;
Meteor.startup(() => {
listsColors = Lists.simpleSchema()._schema.color.allowedValues;
});
BlazeComponent.extendComponent({
canSeeAddCard() {
const list = Template.currentData();
return !list.getWipLimit('enabled') || list.getWipLimit('soft') || !this.reachedWipLimit();
},
editTitle(evt) {
evt.preventDefault();
const newTitle = this.childComponents('inlinedForm')[0].getValue().trim();
@@ -17,26 +27,49 @@ BlazeComponent.extendComponent({
return Meteor.user().getLimitToShowCardsCount();
},
cardsCount() {
const list = Template.currentData();
let swimlaneId = '';
const boardView = (Meteor.user().profile || {}).boardView;
if (boardView === 'board-view-swimlanes')
swimlaneId = this.parentComponent().parentComponent().data()._id;
return list.cards(swimlaneId).count();
},
reachedWipLimit() {
const list = Template.currentData();
return list.getWipLimit('enabled') && list.getWipLimit('value') <= list.cards().count();
},
showCardsCountForList(count) {
return count > this.limitToShowCardsCount();
const limit = this.limitToShowCardsCount();
return limit > 0 && count > limit;
},
events() {
return [{
'click .js-open-list-menu': Popup.open('listAction'),
'click .js-add-card' () {
const listDom = document.getElementById(`js-list-${this.currentData()._id}`);
'click .js-add-card' (evt) {
const listDom = $(evt.target).parents(`#js-list-${this.currentData()._id}`)[0];
const listComponent = BlazeComponent.getComponentForElement(listDom);
listComponent.openForm({
position: 'top',
});
},
'click .js-unselect-list'() {
Session.set('currentList', null);
},
submit: this.editTitle,
}];
},
}).register('listHeader');
Template.listActionPopup.helpers({
isWipLimitEnabled() {
return Template.currentData().getWipLimit('enabled');
},
isWatching() {
return this.findWatcher(Meteor.userId());
},
@@ -44,6 +77,7 @@ Template.listActionPopup.helpers({
Template.listActionPopup.events({
'click .js-list-subscribe' () {},
'click .js-set-color-list': Popup.open('setListColor'),
'click .js-select-cards' () {
const cardIds = this.allCards().map((card) => card._id);
MultiSelection.add(cardIds);
@@ -61,9 +95,63 @@ Template.listActionPopup.events({
this.archive();
Popup.close();
},
'click .js-set-wip-limit': Popup.open('setWipLimit'),
'click .js-more': Popup.open('listMore'),
});
BlazeComponent.extendComponent({
applyWipLimit() {
const list = Template.currentData();
const limit = parseInt(Template.instance().$('.wip-limit-value').val(), 10);
if(limit < list.cards().count() && !list.getWipLimit('soft')){
Template.instance().$('.wip-limit-error').click();
} else {
Meteor.call('applyWipLimit', list._id, limit);
Popup.back();
}
},
enableSoftLimit() {
const list = Template.currentData();
if(list.getWipLimit('soft') && list.getWipLimit('value') < list.cards().count()){
list.setWipLimit(list.cards().count());
}
Meteor.call('enableSoftLimit', Template.currentData()._id);
},
enableWipLimit() {
const list = Template.currentData();
// Prevent user from using previously stored wipLimit.value if it is less than the current number of cards in the list
if(!list.getWipLimit('enabled') && list.getWipLimit('value') < list.cards().count()){
list.setWipLimit(list.cards().count());
}
Meteor.call('enableWipLimit', list._id);
},
isWipLimitSoft() {
return Template.currentData().getWipLimit('soft');
},
isWipLimitEnabled() {
return Template.currentData().getWipLimit('enabled');
},
wipLimitValue(){
return Template.currentData().getWipLimit('value');
},
events() {
return [{
'click .js-enable-wip-limit': this.enableWipLimit,
'click .wip-limit-apply': this.applyWipLimit,
'click .wip-limit-error': Popup.open('wipLimitError'),
'click .materialCheckBox': this.enableSoftLimit,
}];
},
}).register('setWipLimitPopup');
Template.listMorePopup.events({
'click .js-delete': Popup.afterConfirm('listDelete', function () {
Popup.close();
@@ -72,3 +160,34 @@ Template.listMorePopup.events({
Utils.goBoardId(this.boardId);
}),
});
BlazeComponent.extendComponent({
onCreated() {
this.currentList = this.currentData();
this.currentColor = new ReactiveVar(this.currentList.color);
},
colors() {
return listsColors.map((color) => ({ color, name: '' }));
},
isSelected(color) {
return this.currentColor.get() === color;
},
events() {
return [{
'click .js-palette-color'() {
this.currentColor.set(this.currentData().color);
},
'click .js-submit' () {
this.currentList.setColor(this.currentColor.get());
Popup.close();
},
'click .js-remove-color'() {
this.currentList.setColor(null);
Popup.close();
},
}];
},
}).register('setListColorPopup');
+8
View File
@@ -0,0 +1,8 @@
template(name="minilist")
.minicard(
class="minicard-{{colorClass}}")
.minicard-title
.handle
.fa.fa-arrows
+viewer
= title
+4 -4
View File
@@ -1,5 +1,6 @@
template(name="editor")
textarea.editor(
dir="auto"
class="{{class}}"
id=id
autofocus=autofocus
@@ -7,8 +8,7 @@ template(name="editor")
+Template.contentBlock
template(name="viewer")
.viewer
.viewer(dir="auto")
+mentions
+emoji
+markdown
{{> UI.contentBlock }}
+markdown
{{> UI.contentBlock }}
+8 -22
View File
@@ -4,25 +4,6 @@ Template.editor.onRendered(() => {
autosize($textarea);
$textarea.escapeableTextComplete([
// Emoji
{
match: /\B:([\-+\w]*)$/,
search(term, callback) {
callback(Emoji.values.map((emoji) => {
return emoji.includes(term) ? emoji : null;
}).filter(Boolean));
},
template(value) {
const imgSrc = Emoji.baseImagePath + value;
const image = `<img src="${imgSrc}.png" />`;
return image + value;
},
replace(value) {
return `:${value}:`;
},
index: 1,
},
// User mentions
{
match: /\B@([\w.]*)$/,
@@ -47,7 +28,7 @@ Template.editor.onRendered(() => {
import sanitizeXss from 'xss';
// XXX I believe we should compute a HTML rendered field on the server that
// would handle markdown, emoji and user mentions. We can simply have two
// would handle markdown and user mentions. We can simply have two
// fields, one source, and one compiled version (in HTML) and send only the
// compiled version to most users -- who don't need to edit.
// In the meantime, all the transformation are done on the client using the
@@ -55,13 +36,18 @@ import sanitizeXss from 'xss';
const at = HTML.CharRef({html: '&commat;', str: '@'});
Blaze.Template.registerHelper('mentions', new Template('mentions', function() {
const view = this;
let content = Blaze.toHTML(view.templateContentBlock);
const currentBoard = Boards.findOne(Session.get('currentBoard'));
if (!currentBoard)
return HTML.Raw(sanitizeXss(content));
const knowedUsers = currentBoard.members.map((member) => {
member.username = Users.findOne(member.userId).username;
const u = Users.findOne(member.userId);
if(u){
member.username = u.username;
}
return member;
});
const mentionRegex = /\B@([\w.]*)/gi;
let content = Blaze.toHTML(view.templateContentBlock);
let currentMention;
while ((currentMention = mentionRegex.exec(content)) !== null) {
+33 -14
View File
@@ -4,9 +4,21 @@ template(name="header")
list all starred boards with a link to go there. This is inspired by the
Reddit "subreddit" bar.
The first link goes to the boards page.
unless isSandstorm
if currentUser
#header-quick-access(class=currentBoard.colorClass)
if currentUser
#header-quick-access(class=currentBoard.colorClass)
if isMiniScreen
ul
li
a(href="{{pathFor 'home'}}")
span.fa.fa-home
if currentList
each currentBoard.lists
li(class="{{#if $.Session.equals 'currentList' _id}}current{{/if}}")
a.js-select-list
= title
#header-new-board-icon
else
ul
li
a(href="{{pathFor 'home'}}")
@@ -20,11 +32,10 @@ template(name="header")
else
li.current {{_ 'quick-access-description'}}
a#header-new-board-icon.js-create-board
i.fa.fa-plus(title="Create a new board")
a#header-new-board-icon.js-create-board
i.fa.fa-plus(title="Create a new board")
+headerUserBar
+headerUserBar
#header(class=currentBoard.colorClass)
//-
@@ -34,21 +45,29 @@ 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.
if isSandstorm
.wekan-logo
img(src="{{pathFor '/wekan-logo-header.png'}}" alt="Wekan")
else
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
if currentUser.isBoardMember
if hasAnnouncement
.announcement
p
i.fa.fa-bullhorn
+viewer
| #{announcement}
i.fa.fa-times-circle.js-close-announcement
template(name="offlineWarning")
.offline-warning
p
+26
View File
@@ -1,8 +1,16 @@
Meteor.subscribe('user-admin');
Meteor.subscribe('boards');
Meteor.subscribe('setting');
Template.header.helpers({
wrappedHeader() {
return !Session.get('currentBoard');
},
currentSetting() {
return Settings.findOne();
},
hideLogo() {
return Utils.isMiniScreen() && Session.get('currentBoard');
},
@@ -10,8 +18,26 @@ Template.header.helpers({
appIsOffline() {
return !Meteor.status().connected;
},
hasAnnouncement() {
const announcements = Announcements.findOne();
return announcements && announcements.enabled;
},
announcement() {
$('.announcement').show();
const announcements = Announcements.findOne();
return announcements && announcements.body;
},
});
Template.header.events({
'click .js-create-board': Popup.open('headerBarCreateBoard'),
'click .js-close-announcement'() {
$('.announcement').hide();
},
'click .js-select-list'() {
Session.set('currentList', this._id);
Session.set('currentCard', null);
},
});
+29 -7
View File
@@ -4,6 +4,7 @@
color: white
transition: background-color 0.4s
background: #2980B9
z-index: 17
#header-main-bar
height: 40px
@@ -28,13 +29,12 @@
font-size: 0.9em
margin-right: 10px
.wekan-logo
display: block
margin: 3px auto 0
margin: 3px auto auto
width: 97px
opacity: 0.6
transition: opacity 0.15s
float: right
&:hover
opacity: 0.9
@@ -99,6 +99,7 @@
height: 28px
font-size: 12px
display: flex
z-index: 17
#header-user-bar,
#header-new-board-icon,
@@ -187,16 +188,37 @@
width: 100%
padding: 10px 0px
z-index: 30
position: absolute
bottom: 0px
ul
width: calc(100% - 150px)
width: calc(100% - 60px)
overflow: ellipsis
padding: 10px
margin: -10px
li
height: 28px
height: 100%
padding: 12px 0px
margin: -10px 0px
a
height: 100%
padding: 12px 10px
margin: -10px 0px
.fa-home
font-size: 26px
margin-top: -2px
#header-new-board-icon
display: none
#header-user-bar
position: absolute
right: 0px
padding: 10px
margin: -10px 0 -10px -10px
.announcement,
.offline-warning
width: 100%
text-align: center
+42 -18
View File
@@ -1,41 +1,54 @@
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="/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
h1.at-form-landing-logo
img(src="{{pathFor '/wekan-logo.png'}}" alt="Wekan")
section.auth-dialog
+Template.dynamic(template=content)
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
#content
| {{{afterBodyStart}}}
+Template.dynamic(template=content)
| {{{beforeBodyEnd}}}
if (Modal.isOpen)
#modal
.overlay
.modal-content
a.modal-close-btn.js-close-modal
i.fa.fa-times-thin
+Template.dynamic(template=Modal.getHeaderName)
+Template.dynamic(template=Modal.getTemplateName)
if (Modal.isWide)
.modal-content-wide.modal-container
a.modal-close-btn.js-close-modal
i.fa.fa-times-thin
+Template.dynamic(template=Modal.getHeaderName)
+Template.dynamic(template=Modal.getTemplateName)
else
.modal-content.modal-container
a.modal-close-btn.js-close-modal
i.fa.fa-times-thin
+Template.dynamic(template=Modal.getHeaderName)
+Template.dynamic(template=Modal.getTemplateName)
template(name="notFound")
+message(label='page-not-found')
@@ -46,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
+125 -8
View File
@@ -1,7 +1,3 @@
Meteor.subscribe('boards');
Meteor.subscribe('setting');
Meteor.subscribe('user-admin');
BlazeLayout.setRoot('body');
const i18nTagToT9n = (i18nTag) => {
@@ -10,7 +6,36 @@ const i18nTagToT9n = (i18nTag) => {
return i18nTag;
};
const validator = {
set(obj, prop, value) {
if (prop === 'state' && value !== 'signIn') {
$('.at-form-authentication').hide();
} else if (prop === 'state' && value === 'signIn') {
$('.at-form-authentication').show();
}
// The default behavior to store the value
obj[prop] = value;
// Indicate success
return true;
},
};
Template.userFormsLayout.onCreated(function() {
const instance = this;
instance.currentSetting = new ReactiveVar();
instance.isLoading = new ReactiveVar(false);
Meteor.subscribe('setting', {
onReady() {
instance.currentSetting.set(Settings.findOne());
return this.stop();
},
});
});
Template.userFormsLayout.onRendered(() => {
AccountsTemplates.state.form.keys = new Proxy(AccountsTemplates.state.form.keys, validator);
const i18nTag = navigator.language;
if (i18nTag) {
T9n.setLanguage(i18nTagToT9n(i18nTag));
@@ -19,12 +44,34 @@ Template.userFormsLayout.onRendered(() => {
});
Template.userFormsLayout.helpers({
currentSetting() {
return Template.instance().currentSetting.get();
},
isLoading() {
return Template.instance().isLoading.get();
},
afterBodyStart() {
return currentSetting.customHTMLafterBodyStart;
},
beforeBodyEnd() {
return currentSetting.customHTMLbeforeBodyEnd;
},
languages() {
return _.map(TAPi18n.getLanguages(), (lang, code) => {
return {
tag: code,
name: lang.name === 'br' ? 'Brezhoneg' : lang.name,
};
const tag = code;
let name = lang.name;
if (lang.name === 'br') {
name = 'Brezhoneg';
} else if (lang.name === 'ig') {
name = 'Igbo';
} else if (lang.name === 'oc') {
name = 'Occitan';
}
return { tag, name };
}).sort(function(a, b) {
if (a.name === b.name) {
return 0;
@@ -47,6 +94,15 @@ Template.userFormsLayout.events({
T9n.setLanguage(i18nTagToT9n(i18nTag));
evt.preventDefault();
},
'click #at-btn'(event, instance) {
if (FlowRouter.getRouteName() === 'atSignIn') {
instance.isLoading.set(true);
authentication(event, instance)
.then(() => {
instance.isLoading.set(false);
});
}
},
});
Template.defaultLayout.events({
@@ -54,3 +110,64 @@ Template.defaultLayout.events({
Modal.close();
},
});
async function authentication(event, instance) {
const match = $('#at-field-username_and_email').val();
const password = $('#at-field-password').val();
if (!match || !password) return undefined;
const result = await getAuthenticationMethod(instance.currentSetting.get(), match);
if (result === 'password') return undefined;
// Stop submit #at-pwd-form
event.preventDefault();
event.stopImmediatePropagation();
switch (result) {
case 'ldap':
return new Promise((resolve) => {
Meteor.loginWithLDAP(match, password, function() {
resolve(FlowRouter.go('/'));
});
});
case 'cas':
return new Promise((resolve) => {
Meteor.loginWithCas(match, password, function() {
resolve(FlowRouter.go('/'));
});
});
default:
return undefined;
}
}
function getAuthenticationMethod({displayAuthenticationMethod, defaultAuthenticationMethod}, match) {
if (displayAuthenticationMethod) {
return $('.select-authentication').val();
}
return getUserAuthenticationMethod(defaultAuthenticationMethod, match);
}
function getUserAuthenticationMethod(defaultAuthenticationMethod, match) {
return new Promise((resolve) => {
try {
Meteor.subscribe('user-authenticationMethod', match, {
onReady() {
const user = Users.findOne();
const authenticationMethod = user
? user.authenticationMethod
: defaultAuthenticationMethod;
resolve(authenticationMethod);
},
});
} catch(error) {
resolve(defaultAuthenticationMethod);
}
});
}
+120 -8
View File
@@ -62,6 +62,23 @@ body
float: right
font-size: 24px
.modal-content-wide
width: 800px
min-height: 0px
margin: 42px auto
padding: 12px
border-radius: 4px
background: darken(white, 13%)
z-index: 110
h2
margin-bottom: 25px
.modal-close-btn
display: block
float: right
font-size: 24px
h1
font-size: 22px
line-height: 1.2em
@@ -270,15 +287,10 @@ kbd
.grabbing
cursor: grabbing
.emoji
height: 18px
width: 18px
vertical-align: text-bottom
// 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
@@ -373,8 +385,8 @@ a
@media screen and (max-width: 800px)
#content
margin: 1px 0px 49px 0px
height: calc(100% - 96px)
margin: 1px 0px 0px 0px
height: calc(100% - 0px)
> .wrapper
margin-top: 0px
@@ -387,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)
+3
View File
@@ -33,6 +33,9 @@ $popupWidth = 300px
textarea
height: 72px
form a span
padding: 0 0.5rem
.header
height: 36px
position: relative
+11 -7
View File
@@ -1,12 +1,16 @@
const { isTouchDevice } = Utils;
Mixins.PerfectScrollbar = BlazeComponent.extendComponent({
onRendered() {
const component = this.mixinParent();
const domElement = component.find('.js-perfect-scrollbar');
Ps.initialize(domElement);
if (!isTouchDevice()) {
const component = this.mixinParent();
const domElement = component.find('.js-perfect-scrollbar');
Ps.initialize(domElement);
// XXX We should create an event map to be consistent with other components
// but since BlazeComponent doesn't merge Mixins events transparently I
// prefered to use a jQuery event (which is what an event map ends up doing)
component.$(domElement).on('mouseenter', () => Ps.update(domElement));
// XXX We should create an event map to be consistent with other components
// but since BlazeComponent doesn't merge Mixins events transparently I
// prefered to use a jQuery event (which is what an event map ends up doing)
component.$(domElement).on('mouseenter', () => Ps.update(domElement));
}
},
});
Binary file not shown.
@@ -0,0 +1,72 @@
template(name="boardActions")
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-move-card-to'}}
div.trigger-dropdown
select(id="move-gen-action")
option(value="top") {{_'r-top-of'}}
option(value="bottom") {{_'r-bottom-of'}}
div.trigger-text
| {{_'r-its-list'}}
div.trigger-button.js-add-gen-move-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-move-card-to'}}
div.trigger-dropdown
select(id="move-spec-action")
option(value="top") {{_'r-top-of'}}
option(value="bottom") {{_'r-bottom-of'}}
div.trigger-text
| {{_'r-list'}}
div.trigger-dropdown
input(id="listName",type=text,placeholder="{{_'r-name'}}")
div.trigger-button.js-add-spec-move-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-dropdown
select(id="arch-action")
option(value="archive") {{_'r-archive'}}
option(value="unarchive") {{_'r-unarchive'}}
div.trigger-text
| {{_'r-card'}}
div.trigger-button.js-add-arch-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-add-swimlane'}}
div.trigger-dropdown
input(id="swimlane-name",type=text,placeholder="{{_'r-name'}}")
div.trigger-button.js-add-swimlane-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-create-card'}}
div.trigger-dropdown
input(id="card-name",type=text,placeholder="{{_'r-name'}}")
div.trigger-text
| {{_'r-in-list'}}
div.trigger-dropdown
input(id="list-name",type=text,placeholder="{{_'r-name'}}")
div.trigger-text
| {{_'r-in-swimlane'}}
div.trigger-dropdown
input(id="swimlane-name2",type=text,placeholder="{{_'r-name'}}")
div.trigger-button.js-create-card-action.js-goto-rules
i.fa.fa-plus
@@ -0,0 +1,168 @@
BlazeComponent.extendComponent({
onCreated() {
},
events() {
return [{
'click .js-create-card-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const cardName = this.find('#card-name').value;
const listName = this.find('#list-name').value;
const swimlaneName = this.find('#swimlane-name2').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'createCard',
swimlaneName,
cardName,
listName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
},
'click .js-add-swimlane-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const swimlaneName = this.find('#swimlane-name').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'addSwimlane',
swimlaneName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
},
'click .js-add-spec-move-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#move-spec-action').value;
const listTitle = this.find('#listName').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
if (actionSelected === 'top') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'moveCardToTop',
listTitle,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
if (actionSelected === 'bottom') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'moveCardToBottom',
listTitle,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
'click .js-add-gen-move-action' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const boardId = Session.get('currentBoard');
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#move-gen-action').value;
if (actionSelected === 'top') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'moveCardToTop',
'listTitle': '*',
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
if (actionSelected === 'bottom') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'moveCardToBottom',
'listTitle': '*',
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
'click .js-add-arch-action' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const boardId = Session.get('currentBoard');
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#arch-action').value;
if (actionSelected === 'archive') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'archive',
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
if (actionSelected === 'unarchive') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'unarchive',
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
}];
},
}).register('boardActions');
/* eslint-no-undef */
@@ -0,0 +1,55 @@
template(name="cardActions")
div.trigger-item
div.trigger-content
div.trigger-dropdown
select(id="label-action")
option(value="add") {{{_'r-add'}}}
option(value="remove") {{{_'r-remove'}}}
div.trigger-text
| {{{_'r-label'}}}
div.trigger-dropdown
select(id="label-id")
each labels
option(value="#{_id}")
= name
div.trigger-button.js-add-label-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-dropdown
select(id="member-action")
option(value="add") {{{_'r-add'}}}
option(value="remove") {{{_'r-remove'}}}
div.trigger-text
| {{{_'r-member'}}}
div.trigger-dropdown
input(id="member-name",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-button.js-add-member-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{{_'r-remove-all'}}}
div.trigger-button.js-add-removeall-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{{_'r-set-color'}}}
button.trigger-button.trigger-button-color.js-show-color-palette(
id="color-action"
class="card-details-{{cardColorButton}}")
| {{{_ cardColorButtonText }}}
div.trigger-button.js-set-color-action.js-goto-rules
i.fa.fa-plus
template(name="setCardActionsColorPopup")
form.edit-label
.palette-colors: each colors
span.card-label.palette-color.js-palette-color(class="card-details-{{color}}")
if(isSelected color)
i.fa.fa-check
button.primary.confirm.js-submit {{_ 'save'}}
@@ -0,0 +1,188 @@
let cardColors;
Meteor.startup(() => {
cardColors = Cards.simpleSchema()._schema.color.allowedValues;
});
BlazeComponent.extendComponent({
onCreated() {
this.subscribe('allRules');
this.cardColorButtonValue = new ReactiveVar('green');
},
cardColorButton() {
return this.cardColorButtonValue.get();
},
cardColorButtonText() {
return `color-${ this.cardColorButtonValue.get() }`;
},
labels() {
const labels = Boards.findOne(Session.get('currentBoard')).labels;
for (let i = 0; i < labels.length; i++) {
if (labels[i].name === '' || labels[i].name === undefined) {
labels[i].name = labels[i].color.toUpperCase();
}
}
return labels;
},
events() {
return [{
'click .js-add-label-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#label-action').value;
const labelId = this.find('#label-id').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
if (actionSelected === 'add') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'addLabel',
labelId,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
if (actionSelected === 'remove') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'removeLabel',
labelId,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
'click .js-add-member-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#member-action').value;
const username = this.find('#member-name').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
if (actionSelected === 'add') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'addMember',
username,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
desc,
});
}
if (actionSelected === 'remove') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'removeMember',
username,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
'click .js-add-removeall-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const triggerId = Triggers.insert(trigger);
const desc = Utils.getTriggerActionDesc(event, this);
const boardId = Session.get('currentBoard');
const actionId = Actions.insert({
actionType: 'removeMember',
'username': '*',
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
},
'click .js-show-color-palette'(event){
const funct = Popup.open('setCardActionsColor');
const colorButton = this.find('#color-action');
if (colorButton.value === '') {
colorButton.value = 'green';
}
funct.call(this, event);
},
'click .js-set-color-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const selectedColor = this.cardColorButtonValue.get();
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'setColor',
selectedColor,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
},
}];
},
}).register('cardActions');
BlazeComponent.extendComponent({
onCreated() {
this.currentAction = this.currentData();
this.colorButtonValue = Popup.getOpenerComponent().cardColorButtonValue;
this.currentColor = new ReactiveVar(this.colorButtonValue.get());
},
colors() {
return cardColors.map((color) => ({ color, name: '' }));
},
isSelected(color) {
return this.currentColor.get() === color;
},
events() {
return [{
'click .js-palette-color'() {
this.currentColor.set(this.currentData().color);
},
'click .js-submit' () {
this.colorButtonValue.set(this.currentColor.get());
Popup.close();
},
}];
},
}).register('setCardActionsColorPopup');
@@ -0,0 +1,70 @@
template(name="checklistActions")
div.trigger-item
div.trigger-content
div.trigger-dropdown
select(id="check-action")
option(value="add") {{{_'r-add'}}}
option(value="remove") {{{_'r-remove'}}}
div.trigger-text
| {{{_'r-checklist'}}}
div.trigger-dropdown
input(id="checklist-name",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-button.js-add-checklist-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-dropdown
select(id="checkall-action")
option(value="check") {{{_'r-check-all'}}}
option(value="uncheck") {{{_'r-uncheck-all'}}}
div.trigger-text
| {{{_'r-items-check'}}}
div.trigger-dropdown
input(id="checklist-name2",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-button.js-add-checkall-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-dropdown
select(id="check-item-action")
option(value="check") {{{_'r-check'}}}
option(value="uncheck") {{{_'r-uncheck'}}}
div.trigger-text
| {{{_'r-item'}}}
div.trigger-dropdown
input(id="checkitem-name",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-text
| {{{_'r-of-checklist'}}}
div.trigger-dropdown
input(id="checklist-name3",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-button.js-add-check-item-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{{_'r-add-checklist'}}}
div.trigger-dropdown
input(id="checklist-name-3",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-text
| {{{_'r-with-items'}}}
div.trigger-dropdown
input(id="checklist-items",type=text,placeholder="{{{_'r-items-list'}}}")
div.trigger-button.js-add-checklist-items-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{{_'r-checklist-note'}}}
@@ -0,0 +1,151 @@
BlazeComponent.extendComponent({
onCreated() {
this.subscribe('allRules');
},
events() {
return [{
'click .js-add-checklist-items-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const checklistName = this.find('#checklist-name-3').value;
const checklistItems = this.find('#checklist-items').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'addChecklistWithItems',
checklistName,
checklistItems,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
},
'click .js-add-checklist-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#check-action').value;
const checklistName = this.find('#checklist-name').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
if (actionSelected === 'add') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'addChecklist',
checklistName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
if (actionSelected === 'remove') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'removeChecklist',
checklistName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
'click .js-add-checkall-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#checkall-action').value;
const checklistName = this.find('#checklist-name2').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
if (actionSelected === 'check') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'checkAll',
checklistName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
if (actionSelected === 'uncheck') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'uncheckAll',
checklistName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
'click .js-add-check-item-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const checkItemName = this.find('#checkitem-name');
const checklistName = this.find('#checklist-name3');
const actionSelected = this.find('#check-item-action').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
if (actionSelected === 'check') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'checkItem',
checklistName,
checkItemName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
if (actionSelected === 'uncheck') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'uncheckItem',
checklistName,
checkItemName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
}];
},
}).register('checklistActions');
@@ -0,0 +1,11 @@
template(name="mailActions")
div.trigger-item.trigger-item-mail
div.trigger-content.trigger-content-mail
div.trigger-text.trigger-text-email
| {{_'r-send-email'}}
div.trigger-dropdown-mail
input(id="email-to",type=text,placeholder="{{_'r-to'}}")
input(id="email-subject",type=text,placeholder="{{_'r-subject'}}")
textarea(id="email-msg")
div.trigger-button.trigger-button-email.js-mail-action.js-goto-rules
i.fa.fa-plus
@@ -0,0 +1,35 @@
BlazeComponent.extendComponent({
onCreated() {
},
events() {
return [{
'click .js-mail-action' (event) {
const emailTo = this.find('#email-to').value;
const emailSubject = this.find('#email-subject').value;
const emailMsg = this.find('#email-msg').value;
const trigger = this.data().triggerVar.get();
const ruleName = this.data().ruleName.get();
const triggerId = Triggers.insert(trigger);
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
const actionId = Actions.insert({
actionType: 'sendEmail',
emailTo,
emailSubject,
emailMsg,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
},
}];
},
}).register('mailActions');
+20
View File
@@ -0,0 +1,20 @@
template(name="ruleDetails")
.rules
h2
i.fa.fa-magic
| {{{_ 'r-rule-details' }}}
.triggers-content
.triggers-body
.triggers-main-body
div.trigger-item
div.trigger-content
div.trigger-text
= trigger
div.trigger-item
div.trigger-content
div.trigger-text
= action
div.rules-back
button.js-goback
i.fa.fa-chevron-left
| {{{_ 'back'}}}
+38
View File
@@ -0,0 +1,38 @@
BlazeComponent.extendComponent({
onCreated() {
this.subscribe('allRules');
this.subscribe('allTriggers');
this.subscribe('allActions');
},
trigger() {
const ruleId = this.data().ruleId;
const rule = Rules.findOne({
_id: ruleId.get(),
});
const trigger = Triggers.findOne({
_id: rule.triggerId,
});
const desc = trigger.description();
const upperdesc = desc.charAt(0).toUpperCase() + desc.substr(1);
return upperdesc;
},
action() {
const ruleId = this.data().ruleId;
const rule = Rules.findOne({
_id: ruleId.get(),
});
const action = Actions.findOne({
_id: rule.actionId,
});
const desc = action.description();
const upperdesc = desc.charAt(0).toUpperCase() + desc.substr(1);
return upperdesc;
},
events() {
return [{}];
},
}).register('ruleDetails');
+190
View File
@@ -0,0 +1,190 @@
.rules-list
overflow:hidden
overflow-y:scroll
max-height: 400px
.rules-lists-item
display: block
position: relative
overflow: auto
p
display: inline-block
float: left
margin: revert
.hide-element
display:none !important
.user-details
display:inline-block
.rules-btns-group
position: absolute
right: 0
top: 50%
transform: translateY(-50%)
button
margin: auto
.rules-add
display: block
overflow: auto
margin-top: 15px
margin-bottom: 5px
input
display: inline-block
float: right
margin: auto
margin-right: 10px
button
display: inline-block
float: right
margin: auto
.rules-back
display: block
overflow: auto
margin-top: 15px
margin-bottom: 5px
button
display: inline-block
float: right
margin: auto
margin-right:14px
.flex
display: -webkit-box
display: -moz-box
display: -webkit-flex
display: -moz-flex
display: -ms-flexbox
display: flex
.triggers-content
color: #727479
background: #dedede
.triggers-body
display flex
padding-top 15px
height 100%
.triggers-side-menu
background-color: #f7f7f7
border: 1px solid #f0f0f0
border-radius: 4px
height: intrinsic
box-shadow: inset -1px -1px 3px rgba(0,0,0,.05)
ul
li
margin: 0.1rem 0.2rem;
width:50px
height:50px
text-align:center
font-size: 25px
position: relative
i
position: absolute;
top: 50%;
left: 50%;
box-shadow: none
transform: translate(-50%,-50%);
&.active
background #fff
box-shadow 0 1px 2px rgba(0,0,0,0.15);
&:hover
background #fff
box-shadow 0 1px 2px rgba(0,0,0,0.15);
a
@extends .flex
padding: 1rem 0 1rem 1rem
width: 100% - 5rem
span
font-size: 13px
.triggers-main-body
padding: 0.1em 1em
width:100%
.trigger-item
overflow:auto
padding:10px
height:40px
margin-bottom:5px
border-radius: 3px
position: relative
background-color: white
.trigger-content
position:absolute
top:50%
transform: translateY(-50%)
left:10px
.trigger-text
font-size: 16px
display:inline-block
.trigger-inline-button
font-size: 16px
display: inline;
padding: 6px;
border: 1px solid #eee
border-radius: 4px
box-shadow: inset -1px -1px 3px rgba(0,0,0,.05)
&:hover, &.is-active
box-shadow: 0 0 0 2px darken(white, 60%) inset
.trigger-text.trigger-text-email
margin-left: 5px;
margin-top: 10px;
margin-bottom: 10px;
.trigger-dropdown
display:inline-block
select
width:auto
height:30px
margin:0px
margin-left:5px
input
display: inline-block
width: 80px;
margin: 0;
.trigger-content-mail
left:20px
right:100px
.trigger-button
position:absolute
top:50%
transform: translateY(-50%)
width:30px
height:30px
border: 1px solid #eee
border-radius: 4px
box-shadow: inset -1px -1px 3px rgba(0,0,0,.05)
text-align:center
font-size: 20px
right:10px
i
position: absolute
top: 50%
left: 50%
box-shadow: none
transform: translate(-50%,-50%)
&:hover, &.is-active
box-shadow: 0 0 0 2px darken(white, 60%) inset
.trigger-button.trigger-button-email
top:30px
.trigger-button.trigger-button-person
right:-40px
.trigger-button.trigger-button-color
top: unset
position: unset
transform: unset
font-size: 16px
width:auto
padding-left: 10px
padding-right: 10px
height:40px
.trigger-item.trigger-item-mail
height:300px
+29
View File
@@ -0,0 +1,29 @@
template(name="rulesActions")
h2
i.fa.fa-magic
| {{{_ 'r-rule' }}} "#{data.ruleName.get}" - {{{_ 'r-add-action'}}}
.triggers-content
.triggers-body
.triggers-side-menu
ul
li.active.js-set-board-actions
i.fa.fa-columns
li.js-set-card-actions
i.fa.fa-sticky-note
li.js-set-checklist-actions
i.fa.fa-check
li.js-set-mail-actions
i.fa.fa-at
.triggers-main-body
if ($eq currentActions.get 'board')
+boardActions(ruleName=data.ruleName triggerVar=data.triggerVar)
else if ($eq currentActions.get 'card')
+cardActions(ruleName=data.ruleName triggerVar=data.triggerVar)
else if ($eq currentActions.get 'checklist')
+checklistActions(ruleName=data.ruleName triggerVar=data.triggerVar)
else if ($eq currentActions.get 'mail')
+mailActions(ruleName=data.ruleName triggerVar=data.triggerVar)
div.rules-back
button.js-goback
i.fa.fa-chevron-left
| {{{_ 'back'}}}
+58
View File
@@ -0,0 +1,58 @@
BlazeComponent.extendComponent({
onCreated() {
this.currentActions = new ReactiveVar('board');
},
setBoardActions() {
this.currentActions.set('board');
$('.js-set-card-actions').removeClass('active');
$('.js-set-board-actions').addClass('active');
$('.js-set-checklist-actions').removeClass('active');
$('.js-set-mail-actions').removeClass('active');
},
setCardActions() {
this.currentActions.set('card');
$('.js-set-card-actions').addClass('active');
$('.js-set-board-actions').removeClass('active');
$('.js-set-checklist-actions').removeClass('active');
$('.js-set-mail-actions').removeClass('active');
},
setChecklistActions() {
this.currentActions.set('checklist');
$('.js-set-card-actions').removeClass('active');
$('.js-set-board-actions').removeClass('active');
$('.js-set-checklist-actions').addClass('active');
$('.js-set-mail-actions').removeClass('active');
},
setMailActions() {
this.currentActions.set('mail');
$('.js-set-card-actions').removeClass('active');
$('.js-set-board-actions').removeClass('active');
$('.js-set-checklist-actions').removeClass('active');
$('.js-set-mail-actions').addClass('active');
},
rules() {
return Rules.find({});
},
name() {
// console.log(this.data());
},
events() {
return [{
'click .js-set-board-actions'(){
this.setBoardActions();
},
'click .js-set-card-actions'() {
this.setCardActions();
},
'click .js-set-mail-actions'() {
this.setMailActions();
},
'click .js-set-checklist-actions'() {
this.setChecklistActions();
},
}];
},
}).register('rulesActions');
+27
View File
@@ -0,0 +1,27 @@
template(name="rulesList")
.rules
h2
i.fa.fa-magic
| {{{_ 'r-board-rules' }}}
ul.rules-list
each rules
li.rules-lists-item
p
= title
div.rules-btns-group
button.js-goto-details
i.fa.fa-eye
| {{{_ 'r-view-rule'}}}
if currentUser.isAdmin
button.js-delete-rule
i.fa.fa-trash-o
| {{{_ 'r-delete-rule'}}}
else
li.no-items-message {{{_ 'r-no-rules' }}}
if currentUser.isAdmin
div.rules-add
button.js-goto-trigger
i.fa.fa-plus
| {{{_ 'r-add-rule'}}}
input(type=text,placeholder="{{{_ 'r-new-rule-name' }}}",id="ruleTitle")
+15
View File
@@ -0,0 +1,15 @@
BlazeComponent.extendComponent({
onCreated() {
this.subscribe('allRules');
},
rules() {
const boardId = Session.get('currentBoard');
return Rules.find({
boardId,
});
},
events() {
return [{}];
},
}).register('rulesList');
+9
View File
@@ -0,0 +1,9 @@
template(name="rulesMain")
if($eq rulesCurrentTab.get 'rulesList')
+rulesList
if($eq rulesCurrentTab.get 'trigger')
+rulesTriggers(ruleName=ruleName triggerVar=triggerVar)
if($eq rulesCurrentTab.get 'action')
+rulesActions(ruleName=ruleName triggerVar=triggerVar)
if($eq rulesCurrentTab.get 'ruleDetails')
+ruleDetails(ruleId=ruleId)
+97
View File
@@ -0,0 +1,97 @@
BlazeComponent.extendComponent({
onCreated() {
this.rulesCurrentTab = new ReactiveVar('rulesList');
this.ruleName = new ReactiveVar('');
this.triggerVar = new ReactiveVar();
this.ruleId = new ReactiveVar();
},
setTrigger() {
this.rulesCurrentTab.set('trigger');
},
sanitizeObject(obj){
Object.keys(obj).forEach((key) => {
if(obj[key] === '' || obj[key] === undefined){
obj[key] = '*';
}}
);
},
setRulesList() {
this.rulesCurrentTab.set('rulesList');
},
setAction() {
this.rulesCurrentTab.set('action');
},
setRuleDetails() {
this.rulesCurrentTab.set('ruleDetails');
},
events() {
return [{
'click .js-delete-rule' () {
const rule = this.currentData();
Rules.remove(rule._id);
Actions.remove(rule.actionId);
Triggers.remove(rule.triggerId);
},
'click .js-goto-trigger' (event) {
event.preventDefault();
const ruleTitle = this.find('#ruleTitle').value;
if(ruleTitle !== undefined && ruleTitle !== ''){
this.find('#ruleTitle').value = '';
this.ruleName.set(ruleTitle);
this.setTrigger();
}
},
'click .js-goto-action' (event) {
event.preventDefault();
// Add user to the trigger
const username = $(event.currentTarget.offsetParent).find('.user-name').val();
let trigger = this.triggerVar.get();
trigger.userId = '*';
if(username !== undefined ){
const userFound = Users.findOne({username});
if(userFound !== undefined){
trigger.userId = userFound._id;
this.triggerVar.set(trigger);
}
}
// Sanitize trigger
trigger = this.triggerVar.get();
this.sanitizeObject(trigger);
this.triggerVar.set(trigger);
this.setAction();
},
'click .js-show-user-field' (event) {
event.preventDefault();
$(event.currentTarget.offsetParent).find('.user-details').removeClass('hide-element');
},
'click .js-goto-rules' (event) {
event.preventDefault();
this.setRulesList();
},
'click .js-goback' (event) {
event.preventDefault();
if(this.rulesCurrentTab.get() === 'trigger' || this.rulesCurrentTab.get() === 'ruleDetails' ){
this.setRulesList();
}
if(this.rulesCurrentTab.get() === 'action'){
this.setTrigger();
}
},
'click .js-goto-details' (event) {
event.preventDefault();
const rule = this.currentData();
this.ruleId.set(rule._id);
this.setRuleDetails();
},
}];
},
}).register('rulesMain');
Loaded 100 of 698 files, more files were not shown because too many files have changed in this diff. Show more