Compare commits

...
171 Commits
Author SHA1 Message Date
Lauri Ojansivu 971de9ca34 v3.26 2019-08-28 18:38:41 +03:00
Lauri Ojansivu 3976e02012 Update translations. 2019-08-28 18:36:02 +03:00
Lauri Ojansivu d4f5717264 Update ChangeLog. 2019-08-28 18:31:50 +03:00
Lauri Ojansivu 362220299f Merge pull request #2660 from Scherdel/master
Fixed endless compilation devcontainer and added debugging launch.conf
2019-08-28 16:43:43 +03:00
Christoph Jahn dbdb26a044 Fixed endless compilation devcontainer, debugging 2019-08-28 15:26:17 +02:00
Lauri Ojansivu 60e8deb064 Merge pull request #2659 from Scherdel/master
Adds .devcontainer feature to debug and compile with vscode
2019-08-28 13:20:44 +03:00
Christoph Jahn 4b06e2188c Merge branch 'master' of https://github.com/scherdel/wekan 2019-08-28 10:13:31 +00:00
Christoph Jahn 3307629c8c Devcontainer node-gyp fix 2019-08-28 10:13:10 +00:00
Christoph Jahn 3978c08757 Add debugging in containers for vscode 2019-08-28 10:13:09 +00:00
Christoph Jahn e21b0674e3 Devcontainer node-gyp fix 2019-08-28 10:07:35 +00:00
Lauri Ojansivu a97360dcfb Try to fix lint, and make board loading fix Sandstorm-only where
user permissions work differently.

Thanks to xet7 !

Related https://github.com/wekan/wekan/pull/2654
2019-08-26 23:24:13 +03:00
Lauri Ojansivu 6705007595 Update ChangeLog. 2019-08-26 22:58:27 +03:00
Lauri Ojansivu 8c6164f590 Merge branch 'PDIS-master' 2019-08-26 22:34:35 +03:00
Lauri Ojansivu bbb9815c30 Update ChangeLog. 2019-08-26 22:31:45 +03:00
Lauri Ojansivu 0083215ea3 Default to BIGEVENTS_PATTERN=NONE so that Wekan sends less email
notifications.

Thanks to rinnaz and xet7 !

Closes #2646,
closes #2617
2019-08-26 22:27:45 +03:00
Lauri Ojansivu cdea7e8869 Update ChangeLog. 2019-08-26 22:25:37 +03:00
Lauri Ojansivu 828822daad Merge pull request #2657 from justinr1234/patch-6
Fix last label undefined
2019-08-26 22:13:28 +03:00
justinr1234 0cf9a7b552 Fix last label undefined 2019-08-26 12:16:21 -05:00
Lauri Ojansivu 7cffce972d Update translations. 2019-08-26 19:13:01 +03:00
Lauri Ojansivu ad01526124 Add package-lock.json. 2019-08-26 19:02:48 +03:00
Lauri Ojansivu fa34950ca9 Merge pull request #2653 from GhassenRjab/add-missing-modules
Add missing modules
2019-08-26 14:42:15 +03:00
Romulus Urakagi Tsai 9bbeb73db1 Fix app hang when Meteor.user() is null and list spinner is loaded bug 2019-08-26 10:10:57 +00:00
Lauri Ojansivu ff419f0b60 Update translations. 2019-08-25 13:41:22 +03:00
Lauri Ojansivu 537a9c0568 Update translations. 2019-08-24 22:19:23 +03:00
Ghassen Rjab 843783d6cb Add missing modules 2019-08-24 11:51:08 +01:00
Lauri Ojansivu 07abed0067 v3.25 2019-08-23 03:12:29 +03:00
Lauri Ojansivu fe885860e3 Update translations. 2019-08-23 03:09:43 +03:00
Lauri Ojansivu 0dd3ff29f2 Limit card width to fixed size.
Thanks to xet7 !
2019-08-23 02:59:29 +03:00
Lauri Ojansivu 576523021e Merge pull request #2645 from justinr1234/master
Fixes #2638 importing trello
2019-08-23 00:09:06 +03:00
Justin Reynolds 9d8a38f324 Fixes #2638 importing trello 2019-08-22 16:05:41 -05:00
Lauri Ojansivu 2c78aab3dc Ask for webbrowser version at GitHub issue template.
Thanks to xet7 !
2019-08-22 23:25:56 +03:00
Lauri Ojansivu 45c8b00339 v3.24 2019-08-22 19:35:36 +03:00
Lauri Ojansivu 9156e5a6b6 Update translations. 2019-08-22 19:31:25 +03:00
Lauri Ojansivu cc792ddd57 Snap: Delete old MongoDB log, and log to syslog instead, because
syslog usually already has log rotation.

Thanks to xet7 !

Closes wekan/wekan-snap#92,
closes #1911
2019-08-22 19:22:27 +03:00
Lauri Ojansivu b8d60f0069 v3.23 2019-08-20 21:17:36 +03:00
Lauri Ojansivu b2deab544b Fix login did not work.
Thanks to xet7 !
2019-08-20 21:14:16 +03:00
Lauri Ojansivu f96c1eda70 v3.22 2019-08-20 19:25:37 +03:00
Lauri Ojansivu e9bbbb6a04 Update translations. 2019-08-20 19:21:39 +03:00
Lauri Ojansivu efcdbf2e3d Update ChangeLog. 2019-08-20 19:20:06 +03:00
Lauri Ojansivu 6e12e2fa59 [Fix: Some users cannot switch views or languages](https://github.com/wekan/wekan/issues/2630).
Thanks to xet7 and justinr1234.
2019-08-20 19:16:44 +03:00
Lauri Ojansivu a31ece0974 Update translations. 2019-08-19 12:59:27 +03:00
Lauri Ojansivu 06d85b66f1 Update ChangeLog. 2019-08-19 12:52:20 +03:00
Lauri Ojansivu af830812db Wrap minicard text labels to multiple rows.
Thanks to xet7 !
2019-08-19 12:47:02 +03:00
Lauri Ojansivu 4e21e04a48 v3.21 2019-08-16 23:26:10 +03:00
Lauri Ojansivu 9779f2a7e6 Update ChangeLog. 2019-08-16 23:21:31 +03:00
Lauri Ojansivu a98f6d8e8a Update ChangeLog. 2019-08-16 23:15:17 +03:00
Lauri Ojansivu d93f33d919 Update translations. 2019-08-16 23:03:58 +03:00
Lauri Ojansivu 564ab219c6 Merge branch 'PDIS-master' 2019-08-16 22:36:19 +03:00
Lauri Ojansivu 026d8f4941 Merge branch 'master' of https://github.com/PDIS/wekan into PDIS-master 2019-08-16 22:27:44 +03:00
Lauri Ojansivu 4b2193436e Merge branch 'master' of github.com:wekan/wekan 2019-08-16 22:21:38 +03:00
Lauri Ojansivu dfb558ae99 Update translations. 2019-08-16 22:21:02 +03:00
Romulus Urakagi Tsai 76731e852d Undo translation change 2019-08-16 07:52:51 +00:00
Romulus Urakagi Tsai b794c22ac0 Merge branch 'master' of https://github.com/wekan/wekan 2019-08-16 07:43:55 +00:00
Romulus Urakagi Tsai b778cea34f Fix cannot show archived list bug 2019-08-16 07:42:18 +00:00
Lauri Ojansivu a1582c3e65 Merge pull request #2628 from justinr1234/fix-mismatched-queries
Fix mismatched queries
2019-08-16 00:39:16 +03:00
Justin Reynolds 977503fa79 Fix mismatched queries 2019-08-15 15:47:32 -05:00
Lauri Ojansivu a809284a14 Update translations. 2019-08-15 22:22:48 +03:00
Lauri Ojansivu 8e3cbd2d82 Merge pull request #2626 from whowillcare/master
bugfix 2616
2019-08-15 21:31:25 +03:00
Sam X. Chen f3147af2f7 Merge remote-tracking branch 'upstream/master' 2019-08-15 14:29:02 -04:00
Sam X. Chen 86d686fe1d Bugfix: 2621 2019-08-15 14:28:18 -04:00
Sam X. Chen 7d52ae16d5 Bugfix: 2621 Summmernote is too wide on mobile screen 2019-08-15 14:23:14 -04:00
Lauri Ojansivu c882ebe030 Update translations. 2019-08-15 16:32:55 +03:00
Lauri Ojansivu d80a258c8b v3.20 2019-08-15 13:39:24 +03:00
Lauri Ojansivu 96d0447df0 v3.19 2019-08-15 13:33:01 +03:00
Lauri Ojansivu 65769f3726 Update ChangeLog. 2019-08-15 13:29:57 +03:00
Lauri Ojansivu 315b5bad46 Fix formatting. 2019-08-15 13:29:37 +03:00
Lauri Ojansivu 692138c40b Update translations. 2019-08-15 13:28:30 +03:00
Lauri Ojansivu 5c696e5a3c On board, BoardAdmin and normal user can now invite new user directly
with email address, without using Admin Panel or registering at /sign-up.
Closes #2060

Revert permission change.
Related https://github.com/wekan/wekan/commit/9f6d615ee5bbdb7552e6bdcae75a76a7f74fef7a#commitcomment-34636513
Opens #2590

Thanks to xet7 !
2019-08-15 13:16:34 +03:00
Lauri Ojansivu ebf3e2e65b Update ChangeLog. 2019-08-15 13:11:46 +03:00
Lauri Ojansivu d302d6f857 Fix bug: When on board, clicking Admin Panel redirects to All Boards page,
so it did require to click Admin Panel again.

Thanks to xet7 !
2019-08-15 13:08:03 +03:00
Lauri Ojansivu a282384ab0 v3.18 2019-08-15 00:52:40 +03:00
Lauri Ojansivu c87001fa9f Update base64 dependency. 2019-08-15 00:45:35 +03:00
Lauri Ojansivu 8fdb126a99 Update translations. 2019-08-15 00:41:26 +03:00
Lauri Ojansivu e2e35655c3 Update ChangeLog. 2019-08-15 00:39:02 +03:00
Lauri Ojansivu b8c527d52b Add setting CARD_OPENED_WEBHOOK_ENABLED=false as default.
Thanks to xet7 !

Related https://github.com/wekan/wekan/commit/843478ac40b7718f1096a75295522487f0ca6dbe ,
related #2518
2019-08-15 00:29:00 +03:00
Lauri Ojansivu a8ab7b15d8 Update translations. 2019-08-14 20:38:18 +03:00
Lauri Ojansivu c9118c21d1 Update ChangeLog. 2019-08-14 20:26:47 +03:00
Lauri Ojansivu 16adcb7e5a In Sandstorm release script, after release, delete temp files. 2019-08-14 20:13:35 +03:00
Lauri Ojansivu d295cb8385 Merge pull request #2615 from whowillcare/master
Time line is missing delete/edit comments
2019-08-14 19:36:39 +03:00
Lauri Ojansivu ece011f6ae Merge pull request #2620 from jymcheong/master
Webhook cardDetails onRendered
2019-08-14 19:26:38 +03:00
Romulus Urakagi Tsai 3084f24278 Merge branch 'master' of https://github.com/wekan/wekan 2019-08-14 08:42:25 +00:00
jymcheong 843478ac40 Webhook cardDetails onRendered
Send webhook when cardDetails is rendered.
2019-08-14 15:44:47 +08:00
Lauri Ojansivu 43d14f8b2b Update translations. 2019-08-13 16:32:52 +03:00
Sam X. Chen 7198e6b66e Merge remote-tracking branch 'upstream/master' 2019-08-13 09:31:14 -04:00
Sam X. Chen a666883986 Addfeature: showing action in system message when user deleted/edited comments, plus changing email content \n to <br/> 2019-08-13 09:28:42 -04:00
Lauri Ojansivu 76dbadf1ba v3.17 2019-08-13 12:04:58 +03:00
Lauri Ojansivu a7b7fd874d Update translations. 2019-08-13 12:01:04 +03:00
Lauri Ojansivu ee0fb094e6 Revert In-Progress Assignee field, moving it to feature branch.
Thanks to xet7 !

Fixes #2612
2019-08-13 11:45:30 +03:00
Lauri Ojansivu 306301e881 Assignee field. In Progress.
Thanks to xet7 !

Related #2452
2019-08-13 02:33:41 +03:00
Lauri Ojansivu 411ded513d Fix typos. 2019-08-13 01:34:10 +03:00
Lauri Ojansivu c12496e91d v3.16 2019-08-13 01:23:30 +03:00
Lauri Ojansivu 0cf8996df9 Update translations. 2019-08-13 01:18:37 +03:00
Lauri Ojansivu 46176f5cec Update ChangeLog. 2019-08-13 01:13:57 +03:00
Lauri Ojansivu b9a7bd3503 Merge pull request #2611 from whowillcare/master
Addfeature: Enable HTML email content for richer comment
2019-08-13 01:08:22 +03:00
Lauri Ojansivu 861868fa29 Update ChangeLog. 2019-08-13 00:43:09 +03:00
Sam X. Chen 8d76db91b8 Addfeature: Enable HTML email content for richer comment 2019-08-12 17:41:49 -04:00
Lauri Ojansivu 39ffe1d80d Use Meteor 1.8.1 and MongoDB 3.2.22 in Snap.
Thanks to xet7 !
2019-08-13 00:40:33 +03:00
Lauri Ojansivu 3513198416 Update ChangeLog. 2019-08-13 00:37:35 +03:00
Lauri Ojansivu 20294d833a Add to Admin Panel / Version: Meteor version, MongoDB version, MongoDB storage engine,
MongoDB Oplog enabled.

Thanks to RocketChat developers for MongoDB detection code and xet7 for other code.
2019-08-13 00:32:46 +03:00
Lauri Ojansivu ad09cdb1d1 Update ChangeLog. 2019-08-13 00:02:46 +03:00
Lauri Ojansivu 5aa090e911 Make Admin Panel text like version etc selectable.
Thanks to xet7 !

Closes #2180
2019-08-12 23:59:05 +03:00
Lauri Ojansivu 7ea0912159 - [Fix scrollHeight error when the sidebar is not visible](https://github.com/wekan/wekan/pull/2609).
Thanks to Trekky12.
- [Fix insert action for CustomFields API](https://github.com/wekan/wekan/pull/2610).
  Thanks to JimCircadian. Closes #2586
2019-08-12 21:39:29 +03:00
Lauri Ojansivu 6d47c2e568 Merge pull request #2610 from JimCircadian/custom-field-api-insert
Updated insert action for CustomFields API
2019-08-12 20:04:49 +03:00
Lauri Ojansivu b5f74162af Merge pull request #2609 from Trekky12/master
fix error when the sidebar is not visible
2019-08-12 20:04:28 +03:00
James Byrne 851246a59b Updated insert action for CustomFields API 2019-08-12 17:47:04 +01:00
Tobias 446e29e422 fix error when the sidebar is not visible 2019-08-12 17:24:53 +02:00
Romulus Urakagi Tsai efdab37f3f Merge branch 'master' of https://github.com/wekan/wekan 2019-08-12 01:43:21 +00:00
Lauri Ojansivu db1cf5bb64 Update release build scripts. 2019-08-11 23:05:41 +03:00
Lauri Ojansivu 9b7b0cf557 Try to fix Snap. 2019-08-11 23:04:57 +03:00
Lauri Ojansivu 32563e053d Test snap with Meteor 1.8.1.
Thanks to xet7 !
2019-08-11 21:17:55 +03:00
Lauri Ojansivu b5b81af103 v3.15 2019-08-11 20:31:37 +03:00
Lauri Ojansivu a1d883b22f Try to fix Snap. 2019-08-11 20:27:40 +03:00
Lauri Ojansivu 1a7ee618be v3.14 2019-08-11 19:45:04 +03:00
Lauri Ojansivu 405e0b9bb2 Update translations. 2019-08-11 19:31:46 +03:00
Lauri Ojansivu d3e37d2912 Update ChangeLog. 2019-08-11 19:29:02 +03:00
Lauri Ojansivu 2859457600 Merge pull request #2608 from whowillcare/master
Make image upload in summernote as attachment to wekan board instead of base64 string and more
2019-08-11 19:26:05 +03:00
Sam X. Chen 4857bce5d9 fixing snap build errors due to some rm statements and allowing mixed attachment mode to work in snap 2019-08-10 23:39:12 -04:00
Sam X. Chen 16dbbfa98c Merge remote-tracking branch 'upstream/master' 2019-08-10 21:22:48 -04:00
Sam X. Chen 67d23ff8ae Add Feature: Richer Editor insert picture as attachment instead of b64 string 2019-08-10 21:21:42 -04:00
Lauri Ojansivu 30680f13d6 Add ATTACHMENTS_STORE_PATH to Dockerfile. 2019-08-11 04:16:17 +03:00
Lauri Ojansivu 3b526cad40 Update attachments help. 2019-08-11 04:12:01 +03:00
Lauri Ojansivu 55f0ac959a Remove meteor public variable.
https://github.com/wekan/wekan/pull/2607/files#r312719580

Thanks to xet7 !
2019-08-11 04:05:44 +03:00
Lauri Ojansivu 6dc515210a Update translations. 2019-08-11 03:43:30 +03:00
Lauri Ojansivu 7777dd3b45 Update changelog. 2019-08-11 03:39:23 +03:00
Lauri Ojansivu e9a874144d Merge pull request #2607 from whowillcare/master
Bugfix: 2560, 2604 - enable mixed mode mongodb attachment and filesys
2019-08-11 03:34:08 +03:00
Sam X. Chen 77b5244723 Bugfix: 2560, 2604 - enable mixed mode mongodb attachment and filesystem attachment while reading 2019-08-10 00:50:55 -04:00
Sam X. Chen af560bc9b4 Merge remote-tracking branch 'upstream/master' 2019-08-10 00:49:07 -04:00
Sam X. Chen c569565ec0 Bugfix: 2560, 2604 - enable mixed mode mongodb attachment and filesystem attachment while reading 2019-08-10 00:48:05 -04:00
Lauri Ojansivu 80f1222af4 v3.13 2019-08-09 02:55:15 +03:00
Lauri Ojansivu 76ff965619 Add to ChangeLog those that I forgot to add previously from Wekan v3.12. 2019-08-09 02:49:24 +03:00
Lauri Ojansivu 2ca01b589f Update translations. 2019-08-09 02:37:18 +03:00
Lauri Ojansivu 46cd1aced9 v3.12 2019-08-09 02:34:50 +03:00
Lauri Ojansivu d5d5e4448c Add dependencies for pull request #2603 to meteor-1.6 snap.
Thanks to xet7 !
2019-08-09 02:25:54 +03:00
Lauri Ojansivu faa1e73027 Update ChangeLog. 2019-08-09 01:50:41 +03:00
Lauri Ojansivu 9f6d615ee5 Fix bug on editing users informations, switching to other view, staring a board.
Thanks to road42 !

Closes #2590
2019-08-09 01:42:23 +03:00
Lauri Ojansivu 520ae551c6 Merge pull request #2603 from whowillcare/master
Add Features: allowing wekan master to set where the attachments stor…
2019-08-08 23:43:39 +03:00
Lauri Ojansivu d5d75ae7b8 Merge pull request #2602 from justinr1234/fix-null-access-boardbody
Fix null access with board body
2019-08-08 23:43:22 +03:00
Sam X. Chen 13a13e8eca Add Features: allowing wekan master to set where the attachments stored on server instead of mongodb 2019-08-08 16:24:58 -04:00
Justin Reynolds cf65f1b7a1 Fix null access with board body 2019-08-08 14:54:22 -05:00
Lauri Ojansivu aa6a588376 Update ChangeLog. 2019-08-08 20:24:25 +03:00
Lauri Ojansivu 4c92cd6ae1 Show All Boards Archive and Clone Boards buttons only on
desktop webbrowser mode for BoardAdmin/Admin/Sandstorm users.

Thanks to derbolle and xet7 !

Closes #2599
2019-08-08 20:11:53 +03:00
Lauri Ojansivu f766c1a61c Merge pull request #2600 from whowillcare/master
Bugfix: style kbd font color became white after introduced summernote
2019-08-08 19:39:45 +03:00
Sam X. Chen 264526e85f Bugfix: style kbd font color became white after introduced summernote 2019-08-08 09:54:30 -04:00
Lauri Ojansivu ecc74583ed Update translations. 2019-08-08 15:47:26 +03:00
Lauri Ojansivu 7dad66fbe6 Merge branch 'whowillcare-master' 2019-08-08 15:23:22 +03:00
Christoph Jahn 47f6fee279 Merge branch 'master' of https://github.com/scherdel/wekan 2019-08-08 13:27:04 +02:00
Christoph Jahn 460caa7823 Add debugging in containers for vscode 2019-08-08 12:42:16 +02:00
Sam X. Chen 71d1d9ad98 Bug fix: bug#2589 #2575, Add Features: allowing user to insert/paste link, image, video 2019-08-07 23:44:45 -04:00
Lauri Ojansivu 9ed0c3029f Remove removing phantomjs from release-bundle.sh 2019-08-07 20:02:00 +03:00
Lauri Ojansivu b7628050be v3.11 2019-08-07 20:00:34 +03:00
Lauri Ojansivu 2a53a6cb36 Update translations. 2019-08-07 19:57:50 +03:00
Lauri Ojansivu ad82a900e8 Remove non-existing file from snapcraft.yaml to get Snap to build.
Thanks to xet7 !
2019-08-07 19:54:09 +03:00
Lauri Ojansivu 4708764bd9 v3.10 2019-08-07 19:22:07 +03:00
Lauri Ojansivu e519f989ee Update translations. 2019-08-07 19:17:56 +03:00
Lauri Ojansivu 32e9aa0dda Add missing dependencies back.
Thanks to whowillcare and xet7 !

Related #2589
2019-08-07 19:13:52 +03:00
Lauri Ojansivu c1905f1db1 v3.09 2019-08-07 18:22:28 +03:00
Lauri Ojansivu f7e0b837d3 Hide minicard label text: per user checkbox setting at sidebar.
Thanks to xet7 !

Closes #1466,
closes #2561
2019-08-07 18:11:34 +03:00
Lauri Ojansivu 9e60b41438 Update ChangeLog. 2019-08-07 14:08:48 +03:00
Lauri Ojansivu 778759b8ca Merge pull request #2588 from justinr1234/fix-api-parser
Fix checking if API is enabled
2019-08-07 14:06:46 +03:00
Lauri Ojansivu b58ddcabaf Update ChangeLog. 2019-08-07 13:36:23 +03:00
Lauri Ojansivu 716fc32968 Make Save button visible again at Admin Panel People Edit.
Thanks to sclerc-chss and xet7 !

Related #2590
2019-08-07 13:31:56 +03:00
Christoph Jahn 5d55b21fb6 Add debugging in containers for vscode 2019-08-07 12:18:51 +02:00
Romulus Urakagi Tsai 4f4e0a21f8 Add 'show archive' and 'hide empty lists' in filter feature. 2019-08-07 07:58:05 +00:00
Justin Reynolds 7a60eef375 Fix checking if API is enabled 2019-08-06 21:14:33 -05:00
Lauri Ojansivu cf9ad221f8 Update docker-compose.yml, quay works now again. 2019-08-07 04:13:36 +03:00
Lauri Ojansivu f7ab08aeeb v3.08 2019-08-07 04:10:22 +03:00
Lauri Ojansivu 7d8f1dee62 Removed removing phantomjs from snap, because snap build did stop
to error no phantomjs could be removed.

Thanks to xet7 !
2019-08-07 04:02:14 +03:00
Lauri Ojansivu 2eebc5c884 Fix file permission. 2019-08-07 03:20:49 +03:00
Lauri Ojansivu 93c5f08a25 Fix used script file name. 2019-08-07 03:19:51 +03:00
Lauri Ojansivu 3973c45a1f v3.07 2019-08-07 03:12:29 +03:00
Lauri Ojansivu 1fc3a1db2e Try to make release sizes smaller by deleting phantomjs.
Thanks to xet7 !
2019-08-07 03:05:28 +03:00
136 changed files with 38614 additions and 41732 deletions

No files matched your search

+160
View File
@@ -0,0 +1,160 @@
FROM ubuntu:disco
LABEL maintainer="sgr"
ENV BUILD_DEPS="gnupg gosu bsdtar wget curl bzip2 g++ build-essential python git ca-certificates iproute2"
ENV DEBIAN_FRONTEND=noninteractive
ENV \
DEBUG=false \
NODE_VERSION=8.16.0 \
METEOR_RELEASE=1.8.1 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
NPM_VERSION=latest \
FIBERS_VERSION=4.0.1 \
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 \
RICHER_CARD_COMMENT_EDITOR=true \
MAX_IMAGE_PIXEL="" \
IMAGE_COMPRESS_RATIO="" \
BIGEVENTS_PATTERN="" \
NOTIFY_DUE_DAYS_BEFORE_AND_AFTER="" \
NOTIFY_DUE_AT_HOUR_OF_DAY="" \
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 profile 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="" \
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_AUTHENTICATION_FIELD=uid \
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=""
# Install OS
RUN set -o xtrace \
&& useradd --user-group -m --system --home-dir /home/wekan wekan \
&& apt-get update \
&& apt-get install --assume-yes --no-install-recommends apt-utils apt-transport-https ca-certificates 2>&1 \
&& apt-get install --assume-yes --no-install-recommends ${BUILD_DEPS}
# Install NodeJS
RUN set -o xtrace \
&& cd /tmp \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-$ARCHITECTURE.tar.xz" \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& grep " node-v$NODE_VERSION-$ARCHITECTURE.tar.xz\$" SHASUMS256.txt.asc | sha256sum -c - \
&& tar -xJf "node-v$NODE_VERSION-$ARCHITECTURE.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
&& rm "node-v$NODE_VERSION-$ARCHITECTURE.tar.xz" SHASUMS256.txt.asc \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs \
&& mkdir -p /usr/local/lib/node_modules/fibers/.node-gyp /root/.node-gyp/${NODE_VERSION} /home/wekan/.config \
&& npm install -g npm@${NPM_VERSION} \
&& chown wekan:wekan --recursive /home/wekan/.config
ENV DEBIAN_FRONTEND=dialog
USER wekan
# Install Meteor
RUN set -o xtrace \
&& cd /home/wekan \
&& curl https://install.meteor.com/?release=$METEOR_VERSION --output /home/wekan/install-meteor.sh \
# Replace tar with bsdtar in the install script; https://github.com/jshimko/meteor-launchpad/issues/39
&& sed --in-place "s/tar -xzf.*/bsdtar -xf \"\$TARBALL_FILE\" -C \"\$INSTALL_TMPDIR\"/g" /home/wekan/install-meteor.sh \
&& sed --in-place 's/VERBOSITY="--silent"/VERBOSITY="--progress-bar"/' /home/wekan/install-meteor.sh \
&& printf "\n[-] Installing Meteor $METEOR_VERSION...\n\n" \
&& sh /home/wekan/install-meteor.sh
ENV PATH=$PATH:$HOME/.meteor/
# Copy source dir
USER root
RUN set -o xtrace \
&& mkdir /home/wekan/app
COPY ${SRC_PATH} /home/wekan/app/
RUN set -o xtrace \
&& chown -R wekan:wekan /home/wekan/app /home/wekan/.meteor
USER wekan
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
cd /home/wekan/app
rm -rf node_modules
/home/wekan/.meteor/meteor npm install
rm -rf .build
/home/wekan/.meteor/meteor build .build --directory
cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
cd .build/bundle/programs/server
rm -rf node_modules
/home/wekan/.meteor/meteor npm install
cd /home/wekan/app
+17
View File
@@ -0,0 +1,17 @@
// See https://aka.ms/vscode-remote/devcontainer.json for format details.
{
"dockerComposeFile": "docker-compose.yml",
"service": "wekan-dev",
"workspaceFolder": "/home/wekan/app",
"extensions": [
"mutantdino.resourcemonitor",
"editorconfig.editorconfig",
"dbaeumer.vscode-eslint",
"codezombiech.gitignore",
"eamodio.gitlens",
"gruntfuggly.todo-tree",
"dotjoshjohnson.xml",
"redhat.vscode-yaml",
"vuhrmeister.vscode-meteor"
]
}
+53
View File
@@ -0,0 +1,53 @@
version: '3.7'
services:
wekandb-dev:
image: mongo:4.0.11
container_name: wekan-dev-db
restart: unless-stopped
command: mongod --smallfiles --oplogSize 128
networks:
- wekan-dev-tier
expose:
- 27017
volumes:
- wekan-dev-db:/data/db
- wekan-dev-db-dump:/dump
wekan-dev:
container_name: wekan-dev-app
restart: always
networks:
- wekan-dev-tier
build:
context: ..
dockerfile: .devcontainer/Dockerfile
ports:
- 3000:3000
- 9229:9229
environment:
- MONGO_URL=mongodb://wekandb-dev:27017/wekan
- ROOT_URL=http://localhost:3000
#- MAIL_URL=smtp://user:pass@mailserver.example.com:25/
- MAIL_URL=smtp://<mail_url>:25/?ignoreTLS=true&tls={rejectUnauthorized:false}
- MAIL_FROM=Wekan Notifications <noreply.wekan@mydomain.com>
- WITH_API=true
- RICHER_CARD_COMMENT_EDITOR=true
- BROWSER_POLICY_ENABLED=true
depends_on:
- wekandb-dev
volumes:
- ..:/app:delegated
command:
sleep infinity
volumes:
wekan-dev-db:
driver: local
wekan-dev-db-dump:
driver: local
networks:
wekan-dev-tier:
driver: bridge
+3
View File
@@ -0,0 +1,3 @@
* text=auto eol=lf
*.{cmd,[cC][mM][dD]} text eol=crlf
*.{bat,[bB][aA][tT]} text eol=crlf
+1
View File
@@ -17,6 +17,7 @@ Other Wekan issues can be added here.
* Node Version:
* MongoDB Version:
* ROOT_URL environment variable http(s)://(subdomain).example.com(/suburl):
* Wekan only works on newest desktop Firefox/Chromium/Chrome/Edge/Chromium Edge and mobile Chrome. What webbrowser version are you using?
**Problem description**:
- *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*
+2
View File
@@ -29,3 +29,5 @@ versions.json
Thumbs.db
ehthumbs.db
.eslintcache
.meteor/local
.meteor-1.6-snap/.meteor/local
@@ -1,18 +0,0 @@
# This file contains information which helps Meteor properly upgrade your
# app when you run 'meteor update'. You should check it into version control
# with your project.
notices-for-0.9.0
notices-for-0.9.1
0.9.4-platform-file
notices-for-facebook-graph-api-2
1.2.0-standard-minifiers-package
1.2.0-meteor-platform-split
1.2.0-cordova-changes
1.2.0-breaking-changes
1.3.0-split-minifiers-package
1.3.5-remove-old-dev-bundle-link
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
-2
View File
@@ -1,2 +0,0 @@
dev_bundle
local
-7
View File
@@ -1,7 +0,0 @@
# This file contains a token that is unique to your project.
# Check it into your repository along with the rest of this directory.
# It can be used for purposes such as:
# - ensuring you don't accidentally deploy one app on top of another
# - providing package authors with aggregated statistics
dvyihgykyzec6y1dpg
Whitespace-only changes.
-93
View File
@@ -1,93 +0,0 @@
# Meteor packages used by this project, one per line.
#
# 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand.
meteor-base@1.2.0
# Build system
ecmascript
stylus@2.513.13
standard-minifier-css@1.3.5
standard-minifier-js@2.2.0
mquandalle:jade
# Polyfills
es5-shim@4.6.15
# Collections
aldeed:collection2
cfs:standard-packages
cottz:publish-relations
dburles:collection-helpers
idmontie:migrations
matb33:collection-hooks
matteodem:easy-search
mongo@1.3.1
mquandalle:collection-mutations
# Account system
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.2.0
session@1.1.7
tracker@1.1.3
underscore@1.0.10
3stack:presence
alethes:pages
arillo:flow-router-helpers
audit-argument-checks@1.0.7
kadira:blaze-layout
kadira:dochead
meteorhacks:picker
meteorhacks:subs-manager
mquandalle:autofocus
ongoworks:speakingurl
raix:handlebar-helpers
tap:i18n
http@1.3.0
# UI components
blaze
reactive-var@1.0.11
fortawesome:fontawesome
mousetrap:mousetrap
mquandalle:jquery-textcomplete
mquandalle:jquery-ui-drag-drop-sort
mquandalle:mousetrap-bindglobal
peerlibrary:blaze-components@=0.15.1
templates:tabs
verron:autosize
simple:json-routes
rajit:bootstrap3-datepicker
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
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
-2
View File
@@ -1,2 +0,0 @@
server
browser
-1
View File
@@ -1 +0,0 @@
METEOR@1.6.0.1
-189
View File
@@ -1,189 +0,0 @@
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.1.0
arillo:flow-router-helpers@0.5.2
audit-argument-checks@1.0.7
autoupdate@1.3.12
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.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
cfs:access-point@0.1.49
cfs:base-package@0.0.30
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.34
cfs:http-methods@0.0.32
cfs:http-publish@0.0.13
cfs:power-queue@0.9.11
cfs:reactive-list@0.0.9
cfs:reactive-property@0.0.4
cfs:standard-packages@0.5.9
cfs:storage-adapter@0.2.3
cfs:tempstore@0.1.5
cfs:upload-http@0.0.20
cfs:worker@0.1.4
check@1.2.5
chuangbo:cookie@1.1.0
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.4.0
ddp-client@2.2.0
ddp-common@1.3.0
ddp-rate-limiter@1.0.7
ddp-server@2.1.1
deps@1.0.12
diff-sequence@1.0.7
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.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.7.0
lamhieu:meteorx@2.0.1
launch-screen@1.1.1
livedata@1.0.18
localstorage@1.2.0
logging@1.1.19
lucasantoniassi:accounts-lockout@1.0.0
matb33:collection-hooks@0.8.4
matteodem:easy-search@1.6.4
mdg:meteor-apm-agent@3.1.2
mdg:validation-error@0.5.1
meteor@1.8.0
meteor-base@1.2.0
meteor-platform@1.2.6
meteorhacks:aggregate@1.3.0
meteorhacks:collection-utils@1.2.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.2.2
minifiers@1.1.8-faster-rebuild.0
minimongo@1.4.3
mobile-status-bar@1.0.14
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
mquandalle:autofocus@1.0.0
mquandalle:collection-mutations@0.1.0
mquandalle:jade@0.4.9
mquandalle:jade-compiler@0.4.5
mquandalle:jquery-textcomplete@0.8.0_1
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
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.7.0
peerlibrary:reactive-field@0.3.0
percolate:synced-cron@1.1.1
promise@0.10.0
raix:eventemitter@0.1.3
raix:handlebar-helpers@0.2.5
rajit:bootstrap3-datepicker@1.7.1
random@1.0.10
rate-limit@1.0.8
reactive-dict@1.2.0
reactive-var@1.0.11
reload@1.1.11
retry@1.0.9
routepolicy@1.0.12
rzymek:fullcalendar@3.8.0
service-configuration@1.0.11
session@1.1.7
sha@1.0.9
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.11
spacebars@1.0.15
spacebars-compiler@1.1.3
srp@1.0.10
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.3
templating-runtime@1.3.2
templating-tools@1.1.2
tracker@1.1.3
ui@1.0.13
underscore@1.0.10
url@1.1.0
useraccounts:core@1.14.2
useraccounts:flow-routing@1.14.2
useraccounts:unstyled@1.14.2
verron:autosize@3.0.8
webapp@1.4.0
webapp-hashing@1.0.9
wekan-accounts-cas@0.1.0
wekan-accounts-oidc@1.0.10
wekan-ldap@0.0.2
wekan-markdown@1.0.7
wekan-oidc@1.0.12
wekan-scrollbar@3.1.3
yasaricli:slugify@0.0.7
zimme:active-route@2.3.2
-4572
View File
File diff suppressed because it is too large. Load diff
-68
View File
@@ -1,68 +0,0 @@
{
"name": "wekan",
"version": "v3.06.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
"lint": "eslint --cache --ext .js --ignore-path .eslintignore .",
"lint:eslint:fix": "eslint --ext .js --ignore-path .eslintignore --fix .",
"lint:staged": "lint-staged",
"prettify": "prettier --write '**/*.js' '**/*.jsx'",
"test": "npm run lint"
},
"lint-staged": {
"*.js": [
"meteor npm run prettify",
"meteor npm run lint:eslint:fix",
"git add --force"
],
"*.jsx": [
"meteor npm run prettify",
"meteor npm run lint:eslint:fix",
"git add --force"
],
"*.json": [
"prettier --write",
"git add --force"
]
},
"pre-commit": "lint:staged",
"eslintConfig": {
"extends": "@meteorjs/eslint-config-meteor"
},
"repository": {
"type": "git",
"url": "git+https://github.com/wekan/wekan.git"
},
"license": "MIT",
"bugs": {
"url": "https://github.com/wekan/wekan/issues"
},
"homepage": "https://wekan.github.io",
"devDependencies": {
"eslint": "^5.16.0",
"eslint-config-meteor": "0.0.9",
"eslint-config-prettier": "^3.6.0",
"eslint-import-resolver-meteor": "^0.4.0",
"eslint-plugin-import": "^2.18.0",
"eslint-plugin-meteor": "^5.1.0",
"eslint-plugin-prettier": "^3.1.0",
"lint-staged": "^7.3.0",
"pre-commit": "^1.2.2",
"prettier": "^1.18.2",
"prettier-eslint": "^8.8.2"
},
"dependencies": {
"@babel/runtime": "^7.1.2",
"babel-runtime": "^6.26.0",
"bson-ext": "^2.0.0",
"es6-promise": "^4.2.4",
"hoek": "^5.0.4",
"meteor-node-stubs": "^0.4.1",
"os": "^0.1.1",
"page": "^1.8.6",
"qs": "^6.5.2",
"source-map-support": "^0.5.9",
"xss": "^1.0.6"
}
}
-161
View File
@@ -1,161 +0,0 @@
#!/bin/bash
echo "Note: If you use other locale than en_US.UTF-8 , you need to additionally install en_US.UTF-8"
echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correctly."
echo " You can still use any other locale as your main locale."
#Below script installs newest node 8.x for Debian/Ubuntu/Mint.
#NODE_VERSION=8.16.0
#X64NODE="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz"
function pause(){
read -p "$*"
}
function cprec(){
if [[ -d "$1" ]]; then
if [[ ! -d "$2" ]]; then
sudo mkdir -p "$2"
fi
for i in $(ls -A "$1"); do
cprec "$1/$i" "$2/$i"
done
else
sudo cp "$1" "$2"
fi
}
# sudo npm doesn't work right, so this is a workaround
function npm_call(){
TMPDIR="/tmp/tmp_npm_prefix"
if [[ -d "$TMPDIR" ]]; then
rm -rf $TMPDIR
fi
mkdir $TMPDIR
NPM_PREFIX="$(npm config get prefix)"
npm config set prefix $TMPDIR
npm "$@"
npm config set prefix "$NPM_PREFIX"
echo "Moving files to $NPM_PREFIX"
for i in $(ls -A $TMPDIR); do
cprec "$TMPDIR/$i" "$NPM_PREFIX/$i"
done
rm -rf $TMPDIR
}
#function wekan_repo_check(){
## UNCOMMENTING, IT'S NOT REQUIRED THAT /HOME/USERNAME IS /HOME/WEKAN
# git_remotes="$(git remote show 2>/dev/null)"
# res=""
# for i in $git_remotes; do
# res="$(git remote get-url $i | sed 's/.*wekan\/wekan.*/wekan\/wekan/')"
# if [[ "$res" == "wekan/wekan" ]]; then
# break
# fi
# done
#
# if [[ "$res" != "wekan/wekan" ]]; then
# echo "$PWD is not a wekan repository"
# exit;
# fi
#}
echo
PS3='Please enter your choice: '
options=("Install Wekan dependencies" "Build Wekan" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Install Wekan dependencies")
if [[ "$OSTYPE" == "linux-gnu" ]]; then
echo "Linux";
# Debian, Ubuntu, Mint
sudo apt-get install -y build-essential gcc g++ make git curl wget
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
elif [[ "$OSTYPE" == "darwin"* ]]; then
echo "macOS";
pause '1) Install XCode 2) Install Node 8.x from https://nodejs.org/en/ 3) Press [Enter] key to continue.'
elif [[ "$OSTYPE" == "cygwin" ]]; then
# POSIX compatibility layer and Linux environment emulation for Windows
echo "TODO: Add Cygwin";
exit;
elif [[ "$OSTYPE" == "msys" ]]; then
# Lightweight shell and GNU utilities compiled for Windows (part of MinGW)
echo "TODO: Add msys on Windows";
exit;
elif [[ "$OSTYPE" == "win32" ]]; then
# I'm not sure this can happen.
echo "TODO: Add Windows";
exit;
elif [[ "$OSTYPE" == "freebsd"* ]]; then
echo "TODO: Add FreeBSD";
exit;
else
echo "Unknown"
echo ${OSTYPE}
exit;
fi
## Latest npm with Meteor 1.6
npm_call -g install npm
npm_call -g install node-gyp
# Latest fibers for Meteor 1.6
npm_call -g install fibers@2.0.0
# Install Meteor, if it's not yet installed
curl https://install.meteor.com | bash
break
;;
"Build Wekan")
echo "Building Wekan."
#wekan_repo_check
# REPOS BELOW ARE INCLUDED TO WEKAN REPO
#rm -rf packages/kadira-flow-router packages/meteor-useraccounts-core packages/meteor-accounts-cas packages/wekan-ldap packages/wekan-ldap packages/wekan-scrfollbar packages/meteor-accounts-oidc packages/markdown
#mkdir packages
#cd packages
#git clone --depth 1 -b master https://github.com/wekan/flow-router.git kadira-flow-router
#git clone --depth 1 -b master https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core
#git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-cas.git
#git clone --depth 1 -b master https://github.com/wekan/wekan-ldap.git
#git clone --depth 1 -b master https://github.com/wekan/wekan-scrollbar.git
#git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-oidc.git
#git clone --depth 1 -b master --recurse-submodules https://github.com/wekan/markdown.git
#mv meteor-accounts-oidc/packages/switch_accounts-oidc wekan_accounts-oidc
#mv meteor-accounts-oidc/packages/switch_oidc wekan_oidc
#rm -rf meteor-accounts-oidc
#if [[ "$OSTYPE" == "darwin"* ]]; then
# echo "sed at macOS";
# sed -i '' 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js
#else
# echo "sed at ${OSTYPE}"
# sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js
#fi
#cd ..
rm -rf node_modules
meteor npm install
rm -rf .build
meteor build .build --directory
cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
#Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
#https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
#https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c
#cd ~/repos/wekan/.build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
#rm -rf node_modules/bcrypt
#meteor npm install bcrypt
cd .build/bundle/programs/server
rm -rf node_modules
meteor npm install
#meteor npm install bcrypt
cd ../../../..
echo Done.
break
;;
"Quit")
break
;;
*) echo invalid option;;
esac
done
+1
View File
@@ -95,3 +95,4 @@ wekan-markdown
konecty:mongo-counter
percolate:synced-cron
easylogic:summernote
cfs:filesystem
+2 -1
View File
@@ -14,7 +14,7 @@ audit-argument-checks@1.0.7
autoupdate@1.6.0
babel-compiler@7.3.4
babel-runtime@1.3.0
base64@1.0.11
base64@1.0.12
binary-heap@1.0.11
blaze@2.3.3
blaze-tools@1.0.10
@@ -30,6 +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:filesystem@0.1.2
cfs:gridfs@0.0.34
cfs:http-methods@0.0.32
cfs:http-publish@0.0.13
+28
View File
@@ -0,0 +1,28 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Meteor: Chrome",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}"
},
{
"type": "node",
"request": "launch",
"name": "Meteor: Node",
"runtimeExecutable": "/home/wekan/.meteor/meteor",
"runtimeArgs": ["run", "--inspect-brk=9229"],
"outputCapture": "std",
"port": 9229,
"timeout": 60000
}
],
"compounds": [
{
"name": "Meteor: All",
"configurations": ["Meteor: Node", "Meteor: Chrome"]
}
]
}
+296
View File
@@ -1,3 +1,299 @@
# v3.26 2019-08-28 Wekan release
This release adds the following new features:
- [Add devcontainer](https://github.com/wekan/wekan/pull/2659) and some [related fixes](https://github.com/wekan/wekan/pull/2660).
Thanks to road42.
and fixes the following bugs:
- [Add missing modules](https://github.com/wekan/wekan/pull/2653).
Thanks to GhassenRjab.
- [Add package-lock.json](https://github.com/wekan/wekan/commit/ad01526124216abcc8b3c8230599c4eda331a86d).
Thanks to GhassenRjab and xet7.
- [Fix last label undefined](https://github.com/wekan/wekan/pull/2657).
Thanks to justinr1234.
- [Default to BIGEVENTS_PATTERN=NONE so that Wekan sends less email notifications](https://github.com/wekan/wekan/commit/0083215ea3955a950d345d44a8663e5b05e8f00f).
Thanks to rinnaz and xet7.
- [Fix app hang when Meteor.user() is null and list spinner is loaded bug](https://github.com/wekan/wekan/pull/2654).
Thanks to urakagi.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.25 2019-08-23 Wekan release
This release adds the following new features:
- [Limit card width to fixed size](https://github.com/wekan/wekan/commit/0dd3ff29f2b558bc912b330f178347035dcc46c7).
Thanks to xet7.
and fixes the following bugs:
- [Fix](https://github.com/wekan/wekan/pull/2645) [selecting user accounts when importing from Trello](https://github.com/wekan/wekan/issues/2638).
Thanks to justrinr1234.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.24 2019-08-22 Wekan release
This release fixes the following bugs:
- [Snap: Delete old MongoDB log, and log to syslog instead, because syslog usually already has
log rotation](https://github.com/wekan/wekan/commit/cc792ddd57691bb54972c73b9c861c768fce8c34).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.23 2019-08-20 Wekan release
This release fixes the following bugs:
- [Fix login did not work](https://github.com/wekan/wekan/commit/b2deab544bfeea49017bec27f92f1269b0b7ec43).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.22 2019-08-20 Wekan release
This release adds the following new features:
- [Wrap minicard text labels to multiple rows](https://github.com/wekan/wekan/commit/af830812dbbf7d766a754d937308b11373c66e5a).
Thanks to xet7.
and fixes the following bugs:
- [Fix: Some users cannot switch views or languages](https://github.com/wekan/wekan/issues/2630).
Thanks to xet7 and justinr1234.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.21 2019-08-16 Wekan release
This release adds the following new features:
- [In the filter menu, 1) Turning on "show archive" will request archived lists and show them on the ListView.
2) Turning on "hide empty lists" will hide empty lists on the ListView](https://github.com/wekan/wekan/pull/2632).
Thanks to urakagi.
and fixes the following bugs:
- [Fix mismatched queries](https://github.com/wekan/wekan/pull/2628).
Thanks to justinr1234.
- [Fix Summernote too wide when in mobile screen](https://github.com/wekan/wekan/issues/2621).
Thanks to whowillcare.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.20 2019-08-15 Wekan release
This release fixes the following security issues:
- [Revert permission change](https://github.com/wekan/wekan/commit/d302d6f857657ada229f78d9fcd32f63753d9779),
related [#2590](https://github.com/wekan/wekan/issues/2590) and
[these comments](https://github.com/wekan/wekan/commit/9f6d615ee5bbdb7552e6bdcae75a76a7f74fef7a#commitcomment-34636513).
Thanks to road42, justinr1234 and xet7.
and adds the following new features:
- On board, BoardAdmin and normal user can now [invite new user directly
with email address](https://github.com/wekan/wekan/issues/2060),
[without using Admin Panel or registering
at /sign-up](https://github.com/wekan/wekan/commit/5c696e5a3c70d31a7af6e47cbcf691f6c18eb384).
Thanks to xet7.
and fixes the following bugs:
- [Fix bug: When on board, clicking Admin Panel redirects to All Boards page, so it did require
to click Admin Panel again](https://github.com/wekan/wekan/commit/d302d6f857657ada229f78d9fcd32f63753d9779).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.18 2019-08-15 Wekan release
This release adds the following new features:
- [Send webhook message](https://github.com/wekan/wekan/issues/2518) when
[cardDetails is rendered](https://github.com/wekan/wekan/pull/2620).
Thanks to jymcheong.
- Related to [above new feature](https://github.com/wekan/wekan/issues/2518),
Add [setting CARD_OPENED_WEBHOOK_ENABLED=false as
default](https://github.com/wekan/wekan/commit/b8c527d52bec7272c890385f11e26acec65822ae).
Thanks to xet7.
and adds the following updates:
- [Update base64 dependency](https://github.com/wekan/wekan/commit/c87001fa9f8d1fa13640ae604b1ba46556c7813c).
Thanks to xet7.
and fixes the following bugs:
- [Time line is missing delete/edit comments, add English i18n for these two activities,
For html email msg needs](https://github.com/wekan/wekan/pull/2615).
Thanks to whowillcare.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.17 2019-08-13 Wekan release
This release fixes the following bugs:
- [Fix ReferenceError: cardAssignees is not defined](https://github.com/wekan/wekan/issues/2612).
Reverted In-Progress Assignee field, moving it to feature branch.
Thanks to saschafoerster and to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.16 2019-08-13 Wekan release
This release adds the following new features:
- [Make Admin Panel text like version etc selectable](https://github.com/wekan/wekan/commit/5aa090e91184764afeac8b7c7bf4b4cb947c8f17).
Thanks to xet7.
- [Add to Admin Panel / Version: Meteor version, MongoDB version, MongoDB storage engine, MongoDB Oplog
enabled](https://github.com/wekan/wekan/commit/20294d833a2bf0bd1720444f4ffe018b025dacca).
Thanks to RocketChat developers for MongoDB detection code and xet7 for other code.
- [Use Meteor 1.8.1 and MongoDB 3.2.22 in Snap](https://github.com/wekan/wekan/commit/39ffe1d80dad5759b338d4ed2d6c576717af2a07).
Removed Meteor 1.6.x files.
Thanks to xet7.
- [Enable HTML email content for richer comment](https://github.com/wekan/wekan/pull/2611).
Thanks to whowillcare.
and fixes the following bugs:
- [Fix scrollHeight error when the sidebar is not visible](https://github.com/wekan/wekan/pull/2609).
Thanks to Trekky12.
- [Fix insert action for CustomFields API](https://github.com/wekan/wekan/pull/2610).
Thanks to JimCircadian.
- [Fixed a few issues related summernote enabled: 1) @ user couldn't send out email sometime, due to html format.
2) @ user link wasn't able to show user info by clicking](https://github.com/wekan/wekan/pull/2611).
Thanks to whowillcare.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.15 2019-08-11 Wekan release
This release fixes the following bugs:
- [Try to fix Snap](https://github.com/wekan/wekan/commit/a1d883b22f73f4bef6d547f94dcb900f475fcb41).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.14 2019-08-11 Wekan release
This release adds the following new features:
- [On wekan master specifying ATTACHMENTS_STORE_PATH, it will try its best keeping original attachments, only newer
attachments will be stored into specified path](https://github.com/wekan/wekan/pull/2607).
Thanks to whowillcare.
- [Made image upload in summernote as attachment to wekan board instead of base64 string,
which would make the comments use less bytes and be able to take advantage of using local file system feature
as attachment](https://github.com/wekan/wekan/pull/2608).
Thanks to whowillcare.
and fixes the following bugs:
- [Fix bug: Unable to disable richer comment editor](https://github.com/wekan/wekan/pull/2607).
Thanks to whowillcare.
- [Changed rm to rm -f in wekan snap build, and add packages that somehow didn't get install during snapcraft
build](https://github.com/wekan/wekan/pull/2608).
Thanks to whowillcare.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.13 2019-08-09 Wekan release
Update translations. Thanks to translators.
# v3.12 2019-08-09 Wekan release
This release adds the following new features:
- [Allowing wekan server admin to specify the attachments to be uploaded to server
file system instead of mongodb by specifying a system
env var: ATTACHMENTS_STORE_PATH](https://github.com/wekan/wekan/pull/2603).
The only caveat for this is if it's not a brand new wekan, if the wekan
server admin switchs to this setting, their old attachments won't be available
anymore, unless someone make a script to export them out to the filesystem.
Thanks to whowillcare.
- [Allowing user to insert video, link and image, or paste in html with sanitization.
In user comments display area, images can be clicked and shown as
swipebox](https://github.com/wekan/wekan/pull/2593).
Thanks to whowillcare.
and fixes the following bugs:
- [Fix comment-editor marking issue](https://github.com/wekan/wekan/issues/2575).
Thanks to whowillcare.
- [Bugfix: style kbd font color became white after introduced summernote editor
to card comments](https://github.com/wekan/wekan/pull/2600).
Thanks to whowillcare.
- [Show All Boards / Clone Board and Archive Board only to BoardAdmin/Admin/Sandstorm users
on desktop webbrowser view, so that it's not possible for normal users to make accidental
clicks to those](https://github.com/wekan/wekan/issues/2599).
Thanks to derbolle and xet7.
- [Fix bug on editing users informations, switching to other view, staring
a board](https://github.com/wekan/wekan/issues/2590).
Thanks to road42.
- [Fix null access with board body](https://github.com/wekan/wekan/pull/2602).
Thanks to justinr1234.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.11 2019-08-07 Wekan release
This release fixes the following bugs:
- [Remove non-existing file from snapcraft.yaml to get Snap to build](https://github.com/wekan/wekan/commit/ad82a900e8ec636a72c6e74bb8489559ce2a8bf0).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.10 2019-08-07 Wekan release
This release fixes the following bugs:
- [Add missing dependencies back and revert deleting phantomjs](https://github.com/wekan/wekan/commit/32e9aa0ddaf1b015825b8c62ad17ed74b449e4b1).
Thanks to whowillcare and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.09 2019-08-07 Wekan release
This release adds the following features:
- [Hide minicard label text: per user checkbox setting at sidebar](https://github.com/wekan/wekan/commit/f7e0b837d394d55d66d451c34f43fa8afd357e5b).
Thanks to xet7.
and fixes the following bugs:
- [Make Save button visible again at Admin Panel People Edit](https://github.com/wekan/wekan/commit/716fc32968e7dd51b64a11c6c33e59aee849c982).
Thanks to sclerc-chss and xet7.
- [Fix checking if API is enabled](https://github.com/wekan/wekan/pull/2588).
Thanks to justinr1234.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.08 2019-08-07 Wekan release
This release fixes the following bugs:
- [Removed removing phantomjs from snap, because snap build did stop to error
no phantomjs could be removed](https://github.com/wekan/wekan/commit/7d8f1dee62f285a4587fb40e7331d0f500b2e5fb).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.07 2019-08-07 Wekan release
This release fixes the following bugs:
- [Try to make release sizes smaller by deleting phantomjs](https://github.com/wekan/wekan/commit/1fc3a1db2e663f149287b6e14053d536fb1a8a81).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.06 2019-08-07 Wekan release
This release fixes the following bugs:
+8 -1
View File
@@ -22,9 +22,11 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 g++ build-essential
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60 \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 \
RICHER_CARD_COMMENT_EDITOR=true \
CARD_OPENED_WEBHOOK_ENABLED=false \
ATTACHMENTS_STORE_PATH="" \
MAX_IMAGE_PIXEL="" \
IMAGE_COMPRESS_RATIO="" \
BIGEVENTS_PATTERN="" \
BIGEVENTS_PATTERN=NONE \
NOTIFY_DUE_DAYS_BEFORE_AND_AFTER="" \
NOTIFY_DUE_AT_HOUR_OF_DAY="" \
EMAIL_NOTIFICATION_TIMEOUT=30000 \
@@ -257,6 +259,11 @@ RUN \
#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 && \
#
# Delete phantomjs
#cd /home/wekan/app_build/bundle && \
#find . -name "*phantomjs*" | xargs rm -rf && \
#
cd /home/wekan/app_build/bundle/programs/server/ && \
gosu wekan:wekan npm install && \
#gosu wekan:wekan npm install bcrypt && \
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v3.06.0"
appVersion: "v3.26.0"
files:
userUploads:
- README.md
@@ -201,6 +201,7 @@ template(name="cardActivities")
.activity-checklist(href="{{ card.absoluteUrl }}")
+viewer
= checklistItem.title
if(currentData.timeKey)
| {{{_ activityType }}}
= ' '
@@ -215,6 +216,10 @@ template(name="cardActivities")
| {{{_ activityType currentData.timeValue}}}
if($eq activityType 'deleteComment')
| {{{_ 'activity-deleteComment' currentData.commentId}}}.
if($eq activityType 'editComment')
| {{{_ 'activity-editComment' currentData.commentId}}}.
if($eq activityType 'addComment')
+inlinedForm(classNames='js-edit-comment')
+editor(autofocus=true)
+1 -1
View File
@@ -85,7 +85,7 @@ BlazeComponent.extendComponent({
const lastLabel = Boards.findOne(Session.get('currentBoard')).getLabelById(
lastLabelId,
);
if (lastLabel.name === undefined || lastLabel.name === '') {
if (lastLabel && (lastLabel.name === undefined || lastLabel.name === '')) {
return lastLabel.color;
} else {
return lastLabel.name;
+2 -1
View File
@@ -38,6 +38,7 @@ BlazeComponent.extendComponent({
resetCommentInput(input);
Tracker.flush();
autosize.update(input);
input.trigger('submitted');
}
evt.preventDefault();
},
@@ -54,7 +55,7 @@ BlazeComponent.extendComponent({
// XXX This should be a static method of the `commentForm` component
function resetCommentInput(input) {
input.val('').trigger('input'); // without manually trigger, input event won't be fired
input.val(''); // without manually trigger, input event won't be fired
input.blur();
commentFormIsOpen.set(false);
}
+2 -2
View File
@@ -7,8 +7,8 @@ template(name="board")
+boardBody
else
//-- XXX We need a better error message in case the board has been archived
//-- +message(label="board-not-found")
| {{goHome}}
+message(label="board-not-found")
//-- | {{goHome}}
else
+spinner
@@ -241,6 +241,7 @@ setBoardColor(color)
background-color #ffffff !important
padding 15px !important
border 1px solid #000000 !important
word-wrap: break-word
// When card has comment, emphasis on minicard:
// bigger red comment icon and number of comments,
+22 -6
View File
@@ -31,12 +31,28 @@ template(name="boardList")
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'}}")
unless isMiniScreen
if isSandstorm
i.fa.js-clone-board(
class="fa-clone"
title="{{_ 'duplicate-board'}}")
i.fa.js-archive-board(
class="fa-archive"
title="{{_ 'archive-board'}}")
else if currentUser.isBoardAdmin
i.fa.js-clone-board(
class="fa-clone"
title="{{_ 'duplicate-board'}}")
i.fa.js-archive-board(
class="fa-archive"
title="{{_ 'archive-board'}}")
else if currentUser.isAdmin
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'}}
+2 -2
View File
@@ -8,10 +8,10 @@ Template.boardListHeaderBar.events({
Template.boardListHeaderBar.helpers({
templatesBoardId() {
return Meteor.user().getTemplatesBoardId();
return Meteor.user() && Meteor.user().getTemplatesBoardId();
},
templatesBoardSlug() {
return Meteor.user().getTemplatesBoardSlug();
return Meteor.user() && Meteor.user().getTemplatesBoardSlug();
},
});
+10 -72
View File
@@ -55,24 +55,12 @@ Template.cardAttachmentsPopup.events({
'change .js-attach-file'(event) {
const card = this;
const processFile = f => {
const file = new FS.File(f);
if (card.isLinkedCard()) {
file.boardId = Cards.findOne(card.linkedId).boardId;
file.cardId = card.linkedId;
} else {
file.boardId = card.boardId;
file.swimlaneId = card.swimlaneId;
file.listId = card.listId;
file.cardId = card._id;
}
file.userId = Meteor.userId();
const attachment = Attachments.insert(file);
if (attachment && attachment._id && attachment.isImage()) {
card.setCover(attachment._id);
}
Popup.close();
Utils.processUploadedAttachment(card, f, attachment => {
if (attachment && attachment._id && attachment.isImage()) {
card.setCover(attachment._id);
}
Popup.close();
});
};
FS.Utility.eachFile(event, f => {
@@ -86,7 +74,7 @@ Template.cardAttachmentsPopup.events({
reader.onload = function(e) {
const dataurl = e && e.target && e.target.result;
if (dataurl !== undefined) {
shrinkImage({
Utils.shrinkImage({
dataurl,
maxSize: MAX_IMAGE_PIXEL,
ratio: COMPRESS_RATIO,
@@ -118,59 +106,9 @@ Template.cardAttachmentsPopup.events({
'click .js-upload-clipboard-image': Popup.open('previewClipboardImage'),
});
const MAX_IMAGE_PIXEL = Meteor.settings.public.MAX_IMAGE_PIXEL;
const COMPRESS_RATIO = Meteor.settings.public.IMAGE_COMPRESS_RATIO;
const MAX_IMAGE_PIXEL = Utils.MAX_IMAGE_PIXEL;
const COMPRESS_RATIO = Utils.IMAGE_COMPRESS_RATIO;
let pastedResults = null;
const shrinkImage = function(options) {
// shrink image to certain size
const dataurl = options.dataurl,
callback = options.callback,
toBlob = options.toBlob;
let canvas = document.createElement('canvas'),
image = document.createElement('img');
const maxSize = options.maxSize || 1024;
const ratio = options.ratio || 1.0;
const next = function(result) {
image = null;
canvas = null;
if (typeof callback === 'function') {
callback(result);
}
};
image.onload = function() {
let width = this.width,
height = this.height;
let changed = false;
if (width > height) {
if (width > maxSize) {
height *= maxSize / width;
width = maxSize;
changed = true;
}
} else if (height > maxSize) {
width *= maxSize / height;
height = maxSize;
changed = true;
}
canvas.width = width;
canvas.height = height;
canvas.getContext('2d').drawImage(this, 0, 0, width, height);
if (changed === true) {
const type = 'image/jpeg';
if (toBlob) {
canvas.toBlob(next, type, ratio);
} else {
next(canvas.toDataURL(type, ratio));
}
} else {
next(changed);
}
};
image.onerror = function() {
next(false);
};
image.src = dataurl;
};
Template.previewClipboardImagePopup.onRendered(() => {
// we can paste image from clipboard
@@ -182,7 +120,7 @@ Template.previewClipboardImagePopup.onRendered(() => {
};
if (MAX_IMAGE_PIXEL) {
// if has size limitation on image we shrink it before uploading
shrinkImage({
Utils.shrinkImage({
dataurl: results.dataURL,
maxSize: MAX_IMAGE_PIXEL,
ratio: COMPRESS_RATIO,
+31
View File
@@ -117,6 +117,37 @@ BlazeComponent.extendComponent({
},
onRendered() {
if (Meteor.settings.public.CARD_OPENED_WEBHOOK_ENABLED) {
// Send Webhook but not create Activities records ---
const card = this.currentData();
const userId = Meteor.userId();
//console.log(`userId: ${userId}`);
//console.log(`cardId: ${card._id}`);
//console.log(`boardId: ${card.boardId}`);
//console.log(`listId: ${card.listId}`);
//console.log(`swimlaneId: ${card.swimlaneId}`);
const params = {
userId,
cardId: card._id,
boardId: card.boardId,
listId: card.listId,
user: Meteor.user().username,
url: '',
};
//console.log('looking for integrations...');
const integrations = Integrations.find({
boardId: card.boardId,
type: 'outgoing-webhooks',
enabled: true,
activities: { $in: ['CardDetailsRendered', 'all'] },
}).fetch();
//console.log(`Investigation length: ${integrations.length}`);
if (integrations.length > 0) {
Meteor.call('outgoingWebhooks', integrations, 'CardSelected', params);
}
//-------------
}
if (!Utils.isMiniScreen()) {
Meteor.setTimeout(() => {
$('.card-details').mCustomScrollbar({
+3 -1
View File
@@ -99,7 +99,9 @@
&.card-details-item-end,
&.card-details-item-customfield,
&.card-details-item-name
max-width: 50%
display: block
word-wrap: break-word
max-width: 48%
flex-grow: 1
.card-details-item-title
+3
View File
@@ -128,6 +128,9 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item
& .viewer
p
margin-bottom: 2px
display: block
word-wrap: break-word
max-width: 420px
.js-delete-checklist-item
margin: 0 0 0.5em 1.33em
+2 -1
View File
@@ -10,9 +10,10 @@
margin-right: 4px
margin-bottom: 5px
padding: 3px 8px
max-width: 100%
max-width: 210px
min-width: 8px
overflow: ellipsis
word-wrap: break-word
height: 18px
vertical-align: bottom
+6 -3
View File
@@ -8,9 +8,12 @@ template(name="minicard")
if labels
.minicard-labels
each labels
span.card-label(class="card-label-{{color}}" title=name)
+viewer
= name
unless hiddenMinicardLabelText
span.card-label(class="card-label-{{color}}" title=name)
+viewer
= name
if hiddenMinicardLabelText
.minicard-label(class="card-label-{{color}}" title="{{name}}")
.minicard-title
.handle
.fa.fa-arrows
+11
View File
@@ -16,6 +16,17 @@ BlazeComponent.extendComponent({
Utils.goBoardId(this.data().linkedId);
},
},
{
'click .js-toggle-minicard-label-text'() {
Meteor.call('toggleMinicardLabelText');
},
},
];
},
}).register('minicard');
Template.minicard.helpers({
hiddenMinicardLabelText() {
return Meteor.user().hasHiddenMinicardLabelText();
},
});
+9 -3
View File
@@ -81,6 +81,7 @@
.minicard-labels
float: right
display: flex
flex-wrap: wrap
.minicard-label
width: 11px
@@ -92,8 +93,11 @@
.minicard-custom-field
display:flex;
.minicard-custom-field-item
max-width:50%;
flex-grow:1;
flex-grow: 1
display: block
word-wrap: break-word
max-width: 100px
margin-right: 4px
.handle
width: 20px;
height: 20px;
@@ -111,7 +115,9 @@
p:last-child
margin-bottom: 0
.viewer
display: inline-block
display: block
word-wrap: break-word
max-width: 230px
.dates
display: flex;
flex-direction: row;
+10 -12
View File
@@ -211,22 +211,20 @@ BlazeComponent.extendComponent({
this.parentComponent().nextStep();
},
onMapMember(evt) {
const memberToMap = this.currentData();
if (memberToMap.wekan) {
// todo xxx ask for confirmation?
this.unmapMember(memberToMap.id);
} else {
this.setSelectedMember(memberToMap.id);
Popup.open('importMapMembersAdd')(evt);
}
},
events() {
return [
{
submit: this.onSubmit,
'click .js-select-member': this.onMapMember,
'click .js-select-member'(evt) {
const memberToMap = this.currentData();
if (memberToMap.wekan) {
// todo xxx ask for confirmation?
this.unmapMember(memberToMap.id);
} else {
this.setSelectedMember(memberToMap.id);
Popup.open('importMapMembersAdd')(evt);
}
},
},
];
},
+25 -6
View File
@@ -701,12 +701,31 @@ BlazeComponent.extendComponent({
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;
const isSandstorm =
Meteor.settings &&
Meteor.settings.public &&
Meteor.settings.public.sandstorm;
if (isSandstorm) {
const user = Meteor.user();
if (user) {
const boardView = (Meteor.user().profile || {}).boardView;
if (boardView === 'board-view-swimlanes') {
this.swimlaneId = this.parentComponent()
.parentComponent()
.parentComponent()
.data()._id;
}
}
} else {
const boardView = (Meteor.user().profile || {}).boardView;
if (boardView === 'board-view-swimlanes') {
this.swimlaneId = this.parentComponent()
.parentComponent()
.parentComponent()
.data()._id;
}
}
},
onRendered() {
+178 -57
View File
@@ -1,7 +1,89 @@
import _sanitizeXss from 'xss';
const ASIS = 'asis';
const sanitizeXss = (input, options) => {
const defaultAllowedIframeSrc = /^(https:){0,1}\/\/.*?(youtube|vimeo|dailymotion|youku)/i;
const allowedIframeSrcRegex = (function() {
let reg = defaultAllowedIframeSrc;
const SAFE_IFRAME_SRC_PATTERN =
Meteor.settings.public.SAFE_IFRAME_SRC_PATTERN;
try {
if (SAFE_IFRAME_SRC_PATTERN !== undefined) {
reg = new RegExp(SAFE_IFRAME_SRC_PATTERN, 'i');
}
} catch (e) {
/*eslint no-console: ["error", { allow: ["warn", "error"] }] */
console.error('Wrong pattern specified', SAFE_IFRAM_SRC_PATTERN, e);
}
return reg;
})();
const targetWindow = '_blank';
const getHtmlDOM = html => {
const i = document.createElement('i');
i.innerHTML = html;
return i.firstChild;
};
options = {
onTag(tag, html, options) {
const htmlDOM = getHtmlDOM(html);
const getAttr = attr => {
return htmlDOM && attr && htmlDOM.getAttribute(attr);
};
if (tag === 'iframe') {
const clipCls = 'note-vide-clip';
if (!options.isClosing) {
const iframeCls = getAttr('class');
let safe = iframeCls.indexOf(clipCls) > -1;
const src = getAttr('src');
if (allowedIframeSrcRegex.exec(src)) {
safe = true;
}
if (safe)
return `<iframe src='${src}' class="${clipCls}" width=100% height=auto allowfullscreen></iframe>`;
} else {
// remove </iframe> tag
return '';
}
} else if (tag === 'a') {
if (!options.isClosing) {
if (getAttr(ASIS) === 'true') {
// if has a ASIS attribute, don't do anything, it's a member id
return html;
} else {
const href = getAttr('href');
if (href.match(/^((http(s){0,1}:){0,1}\/\/|\/)/)) {
// a valid url
return `<a href=${href} target=${targetWindow}>`;
}
}
}
} else if (tag === 'img') {
if (!options.isClosing) {
const src = getAttr('src');
if (src) {
return `<a href='${src}' class='swipebox'><img src='${src}' class="attachment-image-preview mCS_img_loaded"></a>`;
}
}
}
return undefined;
},
onTagAttr(tag, name, value) {
if (tag === 'img' && name === 'src') {
if (value && value.substr(0, 5) === 'data:') {
// allow image with dataURI src
return `${name}='${value}'`;
}
} else if (tag === 'a' && name === 'target') {
return `${name}='${targetWindow}'`; // always change a href target to a new window
}
return undefined;
},
...options,
};
return _sanitizeXss(input, options);
};
Template.editor.onRendered(() => {
const textareaSelector = 'textarea';
const enableRicherEditor =
Meteor.settings.public.RICHER_CARD_COMMENT_EDITOR || true;
const mentions = [
// User mentions
{
@@ -32,7 +114,7 @@ Template.editor.onRendered(() => {
autosize($textarea);
$textarea.escapeableTextComplete(mentions);
};
if (enableRicherEditor) {
if (Meteor.settings.public.RICHER_CARD_COMMENT_EDITOR !== false) {
const isSmall = Utils.isMiniScreen();
const toolbar = isSmall
? [
@@ -50,47 +132,11 @@ Template.editor.onRendered(() => {
['color', ['color']],
['para', ['ul', 'ol', 'paragraph']],
['table', ['table']],
//['insert', ['link', 'picture', 'video']], // iframe tag will be sanitized TODO if iframe[class=note-video-clip] can be added into safe list, insert video can be enabled
['insert', ['link', 'picture', 'video']], // iframe tag will be sanitized TODO if iframe[class=note-video-clip] can be added into safe list, insert video can be enabled
//['insert', ['link', 'picture']], // modal popup has issue somehow :(
['view', ['fullscreen', 'help']],
];
const cleanPastedHTML = function(input) {
const badTags = [
'style',
'script',
'applet',
'embed',
'noframes',
'noscript',
'meta',
'link',
'button',
'form',
].join('|');
const badPatterns = new RegExp(
`(?:${[
`<(${badTags})s*[^>][\\s\\S]*?<\\/\\1>`,
`<(${badTags})[^>]*?\\/>`,
].join('|')})`,
'gi',
);
let output = input;
// remove bad Tags
output = output.replace(badPatterns, '');
// remove attributes ' style="..."'
const badAttributes = new RegExp(
`(?:${[
'on\\S+=([\'"]?).*?\\1',
'href=([\'"]?)javascript:.*?\\2',
'style=([\'"]?).*?\\3',
'target=\\S+',
].join('|')})`,
'gi',
);
output = output.replace(badAttributes, '');
output = output.replace(/(<a )/gi, '$1target=_ '); // always to new target
return output;
};
const cleanPastedHTML = sanitizeXss;
const editor = '.editor';
const selectors = [
`.js-new-comment-form ${editor}`,
@@ -116,8 +162,8 @@ Template.editor.onRendered(() => {
callbacks: {
onInit(object) {
const originalInput = this;
$(originalInput).on('input', function() {
// when comment is submitted, the original textarea will be set to '', so shall we
$(originalInput).on('submitted', function() {
// resetCommentInput has been called
if (!this.value) {
const sn = getSummernote(this);
sn && sn.summernote('reset');
@@ -134,10 +180,83 @@ Template.editor.onRendered(() => {
fBtn.on('click', function() {
const $this = $(this),
isActive = $this.hasClass('active');
$('.minicards').toggle(!isActive); // mini card is still showing when editor is in fullscreen mode, we hide here manually
$('.minicards,#header-quick-access').toggle(!isActive); // mini card is still showing when editor is in fullscreen mode, we hide here manually
});
}
},
onImageUpload(files) {
const $summernote = getSummernote(this);
if (files && files.length > 0) {
const image = files[0];
const currentCard = Cards.findOne(Session.get('currentCard'));
const MAX_IMAGE_PIXEL = Utils.MAX_IMAGE_PIXEL;
const COMPRESS_RATIO = Utils.IMAGE_COMPRESS_RATIO;
const insertImage = src => {
const img = document.createElement('img');
img.src = src;
img.setAttribute('width', '100%');
$summernote.summernote('insertNode', img);
};
const processData = function(fileObj) {
Utils.processUploadedAttachment(
currentCard,
fileObj,
attachment => {
if (
attachment &&
attachment._id &&
attachment.isImage()
) {
attachment.one('uploaded', function() {
const maxTry = 3;
const checkItvl = 500;
let retry = 0;
const checkUrl = function() {
// even though uploaded event fired, attachment.url() is still null somehow //TODO
const url = attachment.url();
if (url) {
insertImage(
`${location.protocol}//${location.host}${url}`,
);
} else {
retry++;
if (retry < maxTry) {
setTimeout(checkUrl, checkItvl);
}
}
};
checkUrl();
});
}
},
);
};
if (MAX_IMAGE_PIXEL) {
const reader = new FileReader();
reader.onload = function(e) {
const dataurl = e && e.target && e.target.result;
if (dataurl !== undefined) {
// need to shrink image
Utils.shrinkImage({
dataurl,
maxSize: MAX_IMAGE_PIXEL,
ratio: COMPRESS_RATIO,
toBlob: true,
callback(blob) {
if (blob !== false) {
blob.name = image.name;
processData(blob);
}
},
});
}
};
reader.readAsDataURL(image);
} else {
processData(image);
}
}
},
onPaste() {
// clear up unwanted tag info when user pasted in text
const thisNote = this;
@@ -185,8 +304,6 @@ Template.editor.onRendered(() => {
}
});
import sanitizeXss from 'xss';
// XXX I believe we should compute a HTML rendered field on the server that
// would handle markdown and user mentions. We can simply have two
// fields, one source, and one compiled version (in HTML) and send only the
@@ -231,38 +348,42 @@ Blaze.Template.registerHelper(
// `userId` to the popup as usual, and we need to store it in the DOM
// using a data attribute.
'data-userId': knowedUser.userId,
[ASIS]: 'true',
},
linkValue,
);
content = content.replace(fullMention, Blaze.toHTML(link));
}
return HTML.Raw(sanitizeXss(content));
}),
);
Template.viewer.events({
// Viewer sometimes have click-able wrapper around them (for instance to edit
// the corresponding text). Clicking a link shouldn't fire these actions, stop
// we stop these event at the viewer component level.
'click a'(event, templateInstance) {
event.stopPropagation();
// XXX We hijack the build-in browser action because we currently don't have
// `_blank` attributes in viewer links, and the transformer function is
// handled by a third party package that we can't configure easily. Fix that
// by using directly `_blank` attribute in the rendered HTML.
event.preventDefault();
let prevent = true;
const userId = event.currentTarget.dataset.userid;
if (userId) {
Popup.open('member').call({ userId }, event, templateInstance);
} else {
const href = event.currentTarget.href;
if (href) {
const child = event.currentTarget.firstElementChild;
if (child && child.tagName === 'IMG') {
prevent = false;
} else if (href) {
window.open(href, '_blank');
}
}
if (prevent) {
event.stopPropagation();
// XXX We hijack the build-in browser action because we currently don't have
// `_blank` attributes in viewer links, and the transformer function is
// handled by a third party package that we can't configure easily. Fix that
// by using directly `_blank` attribute in the rendered HTML.
event.preventDefault();
}
},
});
+6
View File
@@ -232,6 +232,7 @@ kbd
background: darken(white, 2%)
border-radius: 3px
border: 1px solid darken(white, 10%)
color: unset
box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.15)
.clear
@@ -377,6 +378,8 @@ a
.viewer
min-height: 18px
display: block
word-wrap: break-word
ol
list-style-type: decimal
@@ -424,6 +427,9 @@ a
height: 100%
margin: 0px
.panel-default
width: 83vw
.inline-input
height: 37px
margin: 8px 10px 0 0
@@ -19,9 +19,21 @@ template(name='statistics')
tr
th Wekan {{_ 'info'}}
td {{statistics.version}}
tr
th {{_ 'Meteor_version'}}
td {{statistics.meteor.meteorVersion}}
tr
th {{_ 'Node_version'}}
td {{statistics.process.nodeVersion}}
tr
th {{_ 'MongoDB_version'}}
td {{statistics.mongo.mongoVersion}}
tr
th {{_ 'MongoDB_storage_engine'}}
td {{statistics.mongo.mongoStorageEngine}}
tr
th {{_ 'MongoDB_Oplog_enabled'}}
td {{statistics.mongo.mongoOplogEnabled}}
tr
th {{_ 'OS_Type'}}
td {{statistics.os.type}}
+2 -2
View File
@@ -107,8 +107,8 @@ template(name="editUserPopup")
label
| {{_ 'password'}}
input.js-profile-password(type="password")
//div.buttonsContainer
// input.primary.wide(type="submit" value="{{_ 'save'}}")
div.buttonsContainer
input.primary.wide(type="submit" value="{{_ 'save'}}")
// div
// input#deleteButton.primary.wide(type="button" value="{{_ 'delete'}}")
+4 -4
View File
@@ -52,10 +52,10 @@
.main-body
padding: 0.1em 1em
-webkit-user-select: auto // Safari 3.1+
-moz-user-select: auto // Firefox 2+
-ms-user-select: auto // IE 10+
user-select: auto // Standard syntax
-webkit-user-select: text // Safari 3.1+
-moz-user-select: text // Firefox 2+
-ms-user-select: text // IE 10+
user-select: text // Standard syntax
ul
li
+5
View File
@@ -22,6 +22,11 @@ template(name='homeSidebar')
+membersWidget
hr
+labelsWidget
ul#cards.label-text-hidden
a.flex.js-toggle-minicard-label-text
span {{_ 'hide-minicard-label-text'}}
b &nbsp;
.materialCheckBox(class="{{#if hiddenMinicardLabelText}}is-checked{{/if}}")
hr
unless currentUser.isNoComments
h3
+14 -2
View File
@@ -47,8 +47,11 @@ BlazeComponent.extendComponent({
},
calculateNextPeak() {
const altitude = this.find('.js-board-sidebar-content').scrollHeight;
this.callFirstWith(this, 'setNextPeak', altitude);
const sidebarElement = this.find('.js-board-sidebar-content');
if (sidebarElement) {
const altitude = sidebarElement.scrollHeight;
this.callFirstWith(this, 'setNextPeak', altitude);
}
},
reachNextPeak() {
@@ -101,6 +104,9 @@ BlazeComponent.extendComponent({
'click .js-hide-sidebar': this.hide,
'click .js-toggle-sidebar': this.toggle,
'click .js-back-home': this.setView,
'click .js-toggle-minicard-label-text'() {
Meteor.call('toggleMinicardLabelText');
},
'click .js-shortcuts'() {
FlowRouter.go('shortcuts');
},
@@ -111,6 +117,12 @@ BlazeComponent.extendComponent({
Blaze.registerHelper('Sidebar', () => Sidebar);
Template.homeSidebar.helpers({
hiddenMinicardLabelText() {
return Meteor.user().hasHiddenMinicardLabelText();
},
});
EscapeActions.register(
'sidebarView',
() => {
@@ -1,3 +1,4 @@
archivedRequested = false;
const subManager = new SubsManager();
BlazeComponent.extendComponent({
@@ -12,6 +13,7 @@ BlazeComponent.extendComponent({
const currentBoardId = Session.get('currentBoard');
if (!currentBoardId) return;
const handle = subManager.subscribe('board', currentBoardId, true);
archivedRequested = true;
Tracker.nonreactive(() => {
Tracker.autorun(() => {
this.isArchiveReady.set(handle.ready());
@@ -56,6 +56,22 @@ template(name="filterSidebar")
if Filter.customFields.isSelected _id
i.fa.fa-check
hr
ul.sidebar-list
li(class="{{#if Filter.archive.isSelected _id}}active{{/if}}")
a.name.js-toggle-archive-filter
span.sidebar-list-item-description
| {{_ 'filter-show-archive'}}
if Filter.archive.isSelected _id
i.fa.fa-check
hr
ul.sidebar-list
li(class="{{#if Filter.hideEmpty.isSelected _id}}active{{/if}}")
a.name.js-toggle-hideEmpty-filter
span.sidebar-list-item-description
| {{_ 'filter-hide-empty'}}
if Filter.hideEmpty.isSelected _id
i.fa.fa-check
hr
span {{_ 'advanced-filter-label'}}
input.js-field-advanced-filter(type="text")
span {{_ 'advanced-filter-description'}}
@@ -1,3 +1,5 @@
const subManager = new SubsManager();
BlazeComponent.extendComponent({
events() {
return [
@@ -12,6 +14,23 @@ BlazeComponent.extendComponent({
Filter.members.toggle(this.currentData()._id);
Filter.resetExceptions();
},
'click .js-toggle-archive-filter'(evt) {
evt.preventDefault();
Filter.archive.toggle(this.currentData()._id);
Filter.resetExceptions();
const currentBoardId = Session.get('currentBoard');
if (!currentBoardId) return;
subManager.subscribe(
'board',
currentBoardId,
Filter.archive.isSelected(),
);
},
'click .js-toggle-hideEmpty-filter'(evt) {
evt.preventDefault();
Filter.hideEmpty.toggle(this.currentData()._id);
Filter.resetExceptions();
},
'click .js-toggle-custom-fields-filter'(evt) {
evt.preventDefault();
Filter.customFields.toggle(this.currentData()._id);
+2 -1
View File
@@ -33,7 +33,8 @@ template(name="listsGroup")
+addListForm
else
each lists
+list(this)
if visible this
+list(this)
if currentCardIsInThisList _id null
+cardDetails(currentCard)
if currentUser.isBoardMember
+18
View File
@@ -246,6 +246,24 @@ BlazeComponent.extendComponent({
currentCardIsInThisList(listId, swimlaneId) {
return currentCardIsInThisList(listId, swimlaneId);
},
visible(list) {
if (list.archived) {
// Show archived list only when filter archive is on or archive is selected
if (!(Filter.archive.isSelected() || archivedRequested)) {
return false;
}
}
if (Filter.hideEmpty.isSelected()) {
const swimlaneId = this.parentComponent()
.parentComponent()
.data()._id;
const cards = list.cards(swimlaneId);
if (cards.count() === 0) {
return false;
}
}
return true;
},
onRendered() {
const boardComponent = this.parentComponent();
const $listsDom = this.$('.js-lists');
+3 -1
View File
@@ -451,10 +451,12 @@ Filter = {
// before changing the schema.
labelIds: new SetFilter(),
members: new SetFilter(),
archive: new SetFilter(),
hideEmpty: new SetFilter(),
customFields: new SetFilter('_id'),
advanced: new AdvancedFilter(),
_fields: ['labelIds', 'members', 'customFields'],
_fields: ['labelIds', 'members', 'archive', 'hideEmpty', 'customFields'],
// We don't filter cards that have been added after the last filter change. To
// implement this we keep the id of these cards in this `_exceptions` fields
+1 -1
View File
@@ -67,7 +67,7 @@ window.Popup = new (class {
title: self._getTitle(popupName),
depth: self._stack.length,
offset: self._getOffset(openerElement),
dataContext: (this.currentData && this.currentData()) || this,
dataContext: (this && this.currentData && this.currentData()) || this,
});
// If there are no popup currently opened we use the Blaze API to render
+77
View File
@@ -24,6 +24,83 @@ Utils = {
);
},
MAX_IMAGE_PIXEL: Meteor.settings.public.MAX_IMAGE_PIXEL,
COMPRESS_RATIO: Meteor.settings.public.IMAGE_COMPRESS_RATIO,
processUploadedAttachment(card, fileObj, callback) {
const next = attachment => {
if (typeof callback === 'function') {
callback(attachment);
}
};
if (!card) {
return next();
}
const file = new FS.File(fileObj);
if (card.isLinkedCard()) {
file.boardId = Cards.findOne(card.linkedId).boardId;
file.cardId = card.linkedId;
} else {
file.boardId = card.boardId;
file.swimlaneId = card.swimlaneId;
file.listId = card.listId;
file.cardId = card._id;
}
file.userId = Meteor.userId();
if (file.original) {
file.original.name = fileObj.name;
}
return next(Attachments.insert(file));
},
shrinkImage(options) {
// shrink image to certain size
const dataurl = options.dataurl,
callback = options.callback,
toBlob = options.toBlob;
let canvas = document.createElement('canvas'),
image = document.createElement('img');
const maxSize = options.maxSize || 1024;
const ratio = options.ratio || 1.0;
const next = function(result) {
image = null;
canvas = null;
if (typeof callback === 'function') {
callback(result);
}
};
image.onload = function() {
let width = this.width,
height = this.height;
let changed = false;
if (width > height) {
if (width > maxSize) {
height *= maxSize / width;
width = maxSize;
changed = true;
}
} else if (height > maxSize) {
width *= maxSize / height;
height = maxSize;
changed = true;
}
canvas.width = width;
canvas.height = height;
canvas.getContext('2d').drawImage(this, 0, 0, width, height);
if (changed === true) {
const type = 'image/jpeg';
if (toBlob) {
canvas.toBlob(next, type, ratio);
} else {
next(canvas.toDataURL(type, ratio));
}
} else {
next(changed);
}
};
image.onerror = function() {
next(false);
};
image.src = dataurl;
},
capitalize(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
},
+14 -9
View File
@@ -115,14 +115,11 @@ services:
# NOTE: Quay is currently not updated, use Docker Hub image below c)
# a) For Wekan Meteor 1.8.x version at master branch,
# using https://quay.io/wekan/wekan automatic builds
#image: quay.io/wekan/wekan:master
# b) For Wekan Meteor 1.6.x version at master/devel/edge branches.
# Only for Snap and Sandstorm while they are not upgraded yet to Meteor 1.8.x
#image: quay.io/wekan/wekan:master
# c) Using specific Meteor 1.6.x version tag:
image: quay.io/wekan/wekan
# b) Using specific Meteor 1.6.x version tag:
# image: quay.io/wekan/wekan:v1.95
# c) Using Docker Hub automatic builds https://hub.docker.com/r/wekanteam/wekan
image: wekanteam/wekan
#image: wekanteam/wekan
# image: wekanteam/wekan:v2.99
#-------------------------------------------------------------------------------------
container_name: wekan-app
@@ -235,10 +232,18 @@ services:
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15
#---------------------------------------------------------------
# ==== STORE ATTACHMENT ON SERVER FILESYSTEM INSTEAD OF MONGODB ====
# https://github.com/wekan/wekan/pull/2603
#- ATTACHMENTS_STORE_PATH = <pathname> # pathname can be relative or fullpath
#---------------------------------------------------------------
# ==== RICH TEXT EDITOR IN CARD COMMENTS ====
# https://github.com/wekan/wekan/pull/2560
- RICHER_CARD_COMMENT_EDITOR=true
#---------------------------------------------------------------
# ==== CARD OPENED, SEND WEBHOOK MESSAGE ====
# https://github.com/wekan/wekan/issues/2518
- CARD_OPENED_WEBHOOK_ENABLED=false
#---------------------------------------------------------------
# ==== Allow to shrink attached/pasted image ====
# https://github.com/wekan/wekan/pull/2544
#-MAX_IMAGE_PIXEL=1024
@@ -246,19 +251,19 @@ services:
#---------------------------------------------------------------
# ==== BIGEVENTS DUE ETC NOTIFICATIONS =====
# https://github.com/wekan/wekan/pull/2541
# Introduced a system env var BIGEVENTS_PATTERN default as "due",
# Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
# so any activityType matches the pattern, system will send out
# notifications to all board members no matter they are watching
# or tracking the board or not. Owner of the wekan server can
# disable the feature by setting this variable to "NONE" or
# change the pattern to any valid regex. i.e. '|' delimited
# activityType names.
# a) Default
# a) Example
#- BIGEVENTS_PATTERN=due
# b) All
#- BIGEVENTS_PATTERN=received|start|due|end
# c) Disabled
#- BIGEVENTS_PATTERN=NONE
- BIGEVENTS_PATTERN=NONE
#---------------------------------------------------------------
# ==== EMAIL DUE DATE NOTIFICATION =====
# https://github.com/wekan/wekan/pull/2536
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+10 -1
View File
@@ -73,6 +73,8 @@
"activity-unchecked-item-card": "unchecked %s in checklist %s",
"activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"activity-editComment": "edited comment %s",
"activity-deleteComment": "deleted comment %s",
"add-attachment": "Add Attachment",
"add-board": "Add Board",
"add-card": "Add Card",
@@ -304,6 +306,8 @@
"filter-no-label": "No label",
"filter-no-member": "No member",
"filter-no-custom-fields": "No Custom Fields",
"filter-show-archive": "Show archived lists",
"filter-hide-empty": "Hide empty lists",
"filter-on": "Filter is on",
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
"filter-to-selection": "Filter to selection",
@@ -512,6 +516,10 @@
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(Unknown)",
"Node_version": "Node version",
"Meteor_version": "Meteor version",
"MongoDB_version": "MongoDB version",
"MongoDB_storage_engine": "MongoDB storage engine",
"MongoDB_Oplog_enabled": "MongoDB Oplog enabled",
"OS_Arch": "OS Arch",
"OS_Cpus": "OS CPU Count",
"OS_Freemem": "OS Free Memory",
@@ -724,5 +732,6 @@
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now",
"act-atUserComment": "You were mentioned in [__board__] __card__",
"delete-user-confirm-popup": "Are you sure you want to delete this account? There is no undo.",
"accounts-allowUserDelete": "Allow users to self delete their account"
"accounts-allowUserDelete": "Allow users to self delete their account",
"hide-minicard-label-text": "Hide minicard label text"
}
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
+733 -724
View File
File diff suppressed because it is too large. Load diff
Loaded 100 of 136 files, more files were not shown because too many files have changed in this diff. Show more