Compare commits

...
605 Commits
Author SHA1 Message Date
Lauri Ojansivu 9e0e052bba Updated ChangeLog. 2024-03-07 20:18:51 +02:00
Lauri Ojansivu ffafb30b9b Fixed API get_all_cards doesn't return SwimlaneId. Please test.
Thanks to mohammadZahedian, xator91 and xet7.

Fixes #5319
2024-03-07 13:36:42 +02:00
Lauri Ojansivu 9c4e402e6c v7.37 2024-03-07 13:27:49 +02:00
Lauri Ojansivu f6f9dbb5e3 Updated ChangeLog. 2024-03-07 13:14:23 +02:00
Lauri Ojansivu 7beced1e68 Fixed API get swimlane cards wrong order. Please test.
Thanks to mohammadZahedian, xator91 and xet7.

Fixes #5319
2024-03-07 13:10:41 +02:00
Lauri Ojansivu c8921b77f0 v7.36 2024-03-06 12:14:54 +02:00
Lauri Ojansivu 482ce0a265 Updated ChangeLog. 2024-03-06 12:10:03 +02:00
Lauri Ojansivu c570405d02 Try to fix API get cards wrong order. Please test.
Thanks to mohammadZahedian, xator91 and xet7.

Fixes #5319
2024-03-06 12:07:18 +02:00
Lauri Ojansivu 35ed465e10 Updated ChangeLog. 2024-03-06 11:57:26 +02:00
Lauri Ojansivu 747bc4c088 Fixed Card image cover should be margin-top:6px since hamburger menu and due date at the top.
Thanks to e-gaulue and xet7 !

Fixes #5331
2024-03-06 11:54:10 +02:00
Lauri Ojansivu 7c156927e4 Updated ChangeLog. 2024-02-28 23:08:10 +02:00
Lauri Ojansivu 13f0c77fb6 Merge pull request #5326 from xator91/patch-11
Update api.py
2024-02-28 23:03:03 +02:00
Mirko Genovese 82d9f77eb3 Update api.py
Added new 4 command. 

checklistid, checklistinfo, get_list_cards_count and get_board_cards_count
2024-02-28 07:58:19 +01:00
Lauri Ojansivu 151699ceb9 v7.35 2024-02-27 14:56:48 +02:00
Lauri Ojansivu cc5d5bdd01 Updated ChangeLog. 2024-02-27 14:50:30 +02:00
Lauri Ojansivu f43dadc068 Added back Mathjax that has bug of showing math twice.
Thanks to macthecadillac, Dexus and xet7 !

Related https://github.com/wekan/wekan/commit/19703fed311c894b61e9269cc0b973d0b0275a6a#commitcomment-139091804,
opens #5117
2024-02-27 14:36:51 +02:00
Lauri Ojansivu b24694bea3 Updated translations. 2024-02-27 14:28:13 +02:00
Lauri Ojansivu f4b31aa771 v7.34 2024-02-23 22:18:24 +02:00
Lauri Ojansivu 3cd5d00b0b Updated translations. 2024-02-23 22:05:58 +02:00
Lauri Ojansivu 7112584139 v7.33 2024-02-23 08:52:59 +02:00
Lauri Ojansivu 639b9c8f56 Updated translations. 2024-02-23 08:46:56 +02:00
Lauri Ojansivu 791ebc6406 Updated translations. 2024-02-22 20:07:31 +02:00
Lauri Ojansivu 059134d3d0 Updated ChangeLog. 2024-02-22 19:44:23 +02:00
Lauri Ojansivu 3b0616c150 Updated docs for WeKan 7.32. 2024-02-22 19:39:15 +02:00
Lauri Ojansivu ad5c4fdca2 Updated ChangeLog. 2024-02-22 19:38:32 +02:00
Lauri Ojansivu b219b8fb65 Merge pull request #5321 from bentiss/fix-docs
openapi: fix breakage introduced with blank return
2024-02-22 19:35:27 +02:00
Benjamin Tissoires 73a170a388 openapi: fix breakage introduced with blank return
Introduced by commit f8ef2e33de ("cards.js Added a control to check
error if card is not updated"), a blank return was added at line 3914.

The generate_openapi script assumed a return statement always has an
argument, and this was crashing.

Fixes #5320
2024-02-22 16:31:11 +01:00
Lauri Ojansivu e55e9c73b9 v7.32 2024-02-22 16:10:40 +02:00
Lauri Ojansivu 71ed5d3427 Updated translations. 2024-02-22 16:10:17 +02:00
Lauri Ojansivu 8b7bdfe0c7 Updated translations. 2024-02-22 15:45:24 +02:00
Lauri Ojansivu ed6018fad1 Updated ChangeLog. 2024-02-22 15:34:26 +02:00
Lauri Ojansivu b5f4be36d4 Fixed Error 500 when adding user to a board and multiple same avatar icons by revert back from Meteor 2.15 to 2.14.
Thanks to xator91 and xet7 !

Fixes #5302,
fixes #5317
2024-02-22 15:19:51 +02:00
Lauri Ojansivu 5c0a46b006 Updated ChangeLog. 2024-02-22 15:07:15 +02:00
Lauri Ojansivu 54ed46447a Updated translations. 2024-02-22 14:59:48 +02:00
Lauri Ojansivu 84fe3c2f40 Merge pull request #5318 from DevOpsNB/main
Add shortcut to filter by assignees
2024-02-22 14:50:11 +02:00
nikolaj.bassauer e30329a18c Add text to new shortcut 2024-02-22 13:32:59 +01:00
nikolaj.bassauer 22b40aab5d Set Shortcut to filter assignees 2024-02-22 13:21:52 +01:00
Lauri Ojansivu c3c8b1eb70 Merge pull request #5313 from xator91/patch-10
Update api.py Deleteallcards
2024-02-22 11:37:51 +02:00
Lauri Ojansivu ce82ee8d0d Merge pull request #5312 from xator91/patch-9
cards.js Added a control to check error if card is not updated
2024-02-22 11:36:40 +02:00
Mirko Genovese 04f0967b18 Update api.py Deleteallcards
Will delete all cards from Swimlanes automatically, will retrieve automatically all list id and delete everything.
2024-02-22 07:55:09 +01:00
Mirko Genovese f8ef2e33de cards.js Added a control to check error if card is not updated 2024-02-22 07:50:21 +01:00
Lauri Ojansivu 20a8ac7c98 Updated ChangeLog. 2024-02-22 08:46:08 +02:00
Lauri Ojansivu 37e9236bde Merge pull request #5311 from xator91/patch-8
Update api.py Addchecklist with multiple items also or just title
2024-02-22 08:43:44 +02:00
Mirko Genovese fc11ff13c5 Update api.py Addchecklist command with multiple items also or just title 2024-02-22 07:22:24 +01:00
Lauri Ojansivu c92586ee64 Updated ChangeLog. 2024-02-21 17:29:50 +02:00
Lauri Ojansivu 38e2308d94 Merge pull request #5309 from xator91/patch-7
Update api.py EDITCARDCOLOR
2024-02-21 17:28:13 +02:00
Mirko Genovese 03044250a3 Update api.py EDITCARDCOLOR 2024-02-21 12:03:14 +01:00
Lauri Ojansivu ebe7ec40e4 Updated ChangeLog. 2024-02-21 11:59:20 +02:00
Lauri Ojansivu 412626052b Merge pull request #5308 from xator91/patch-6
Update api.py Add createlabel
2024-02-21 11:55:43 +02:00
Mirko Genovese 2a0af154c6 Update api.py Add createlabel 2024-02-21 08:17:38 +01:00
Lauri Ojansivu 87debbd26b Updated translations. 2024-02-19 18:20:33 +02:00
Lauri Ojansivu 10e88fccd6 v7.31 2024-02-17 18:03:09 +02:00
Lauri Ojansivu cc781c0082 Updated ChangeLog. 2024-02-16 17:16:08 +02:00
Lauri Ojansivu 5198ee997c Updated to Meteor 2.15.
Thanks to Meteor developers !
2024-02-16 17:14:34 +02:00
Lauri Ojansivu 4843d6cdc1 Updated ChangeLog. 2024-02-16 17:00:14 +02:00
Lauri Ojansivu 8ca0b2d9c3 Merge pull request #5301 from xator91/patch-4
Update api.py EDIT BOARD TITLE
2024-02-16 16:22:45 +02:00
Mirko Genovese cf589cb792 Update api.py EDIT BOARD TITLE 2024-02-16 11:29:20 +01:00
Lauri Ojansivu eda05e0157 Merge pull request #5300 from xator91/patch-3
Update boards.js - New update board title function
2024-02-16 12:01:33 +02:00
Mirko Genovese 4ae8a0308e Update boards.js - New update board title function 2024-02-16 10:50:52 +01:00
Lauri Ojansivu 88c6ce1c7e Updates. 2024-02-12 22:34:09 +02:00
Lauri Ojansivu b714e2fca0 Updated readme. 2024-02-12 22:29:53 +02:00
Lauri Ojansivu ce3a931c59 Updated ChangeLog. 2024-02-09 14:53:10 +02:00
Lauri Ojansivu 69f5d90e91 Merge pull request #5293 from xator91/patch-2
Update api.py
2024-02-09 14:45:20 +02:00
Mirko Genovese 1a6ab68752 Update api.py
Typo error on instructions
2024-02-09 08:17:59 +01:00
Lauri Ojansivu f13001e53a Updated ChangeLog. 2024-02-07 17:47:24 +02:00
Lauri Ojansivu 824b537db0 Merge pull request #5290 from xator91/patch-1
Update api.py
2024-02-07 17:44:50 +02:00
Mirko Genovese 42e4bc3105 Update api.py
Add card with label and add a label to a card
2024-02-07 16:03:03 +01:00
Lauri Ojansivu ebcedcffec Updated ChangeLog. 2024-02-07 15:56:25 +02:00
Lauri Ojansivu b8cc84261f Merge pull request #5287 from xator91/xator91-patch-2
Update api.py
2024-02-07 15:51:16 +02:00
xator91 4e2475502a Update api.py
Added getcard and cardsbyswimlane
2024-02-07 14:38:49 +01:00
Lauri Ojansivu 7dd9bcce2b Updated translations. 2024-02-07 12:15:55 +02:00
Lauri Ojansivu 620628dca3 Merge pull request #5284 from wekan/dependabot/github_actions/docker/metadata-action-5.5.1
Bump docker/metadata-action from 5.5.0 to 5.5.1
2024-02-05 22:31:17 +02:00
dependabot[bot] 5ee7d52e8c Bump docker/metadata-action from 5.5.0 to 5.5.1
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.5.0 to 5.5.1.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](https://github.com/docker/metadata-action/compare/dbef88086f6cef02e264edb7dbf63250c17cef6c...8e5442c4ef9f78752691e2d8f8d19755c6f78e81)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 20:28:06 +00:00
Lauri Ojansivu 26004b1f73 Updated ChangeLog. 2024-02-03 21:09:23 +02:00
Lauri Ojansivu 59c42bc1a3 Updated to Meteor 2.15-rc.1 and removed duplicate nodemailer package because of some errors.
Thanks to Meteor developers !
2024-02-03 21:03:34 +02:00
Lauri Ojansivu c8a7d539f3 Updated translations. 2024-02-01 13:17:45 +02:00
Lauri Ojansivu 98c86bcc0f Updated translations. 2024-01-29 21:56:38 +02:00
Lauri Ojansivu 1b138e14c3 Updated ChangeLog. 2024-01-28 14:16:20 +02:00
Lauri Ojansivu a54e52d34b Try to fix Snap.
Thanks to xet7 !
2024-01-28 14:11:38 +02:00
Lauri Ojansivu 67218fb61d Updated ChangeLog. 2024-01-28 13:39:41 +02:00
Lauri Ojansivu 4eb0085243 Release scripts: Commented out not currently in use builds of WeKan bundle.
Thanks to xet7 !
2024-01-28 13:36:50 +02:00
Lauri Ojansivu 38a8fcb69a v7.30 2024-01-28 13:33:17 +02:00
Lauri Ojansivu 64592d734c Back to MongoDB 6.
Thanks to xet7 1
2024-01-28 13:17:44 +02:00
Lauri Ojansivu abddc8a864 v7.29 2024-01-27 22:50:39 +02:00
Lauri Ojansivu 09b45aca4f Updated ChangeLog. 2024-01-27 20:44:06 +02:00
Lauri Ojansivu f624211620 Upgraded to MongoDB 7.0.5 at Snap Candidate and Docker.
Thanks to MongoDB developers !
2024-01-27 20:39:29 +02:00
Lauri Ojansivu c19cde53d6 Updated ChangeLog. 2024-01-27 20:39:07 +02:00
Lauri Ojansivu cf8694fcd1 Updated translations. 2024-01-27 20:28:44 +02:00
Lauri Ojansivu 28d640afb4 Updated to Meteor 2.14.1-beta.0 .
Thanks to Meteor developers !
2024-01-25 12:28:05 +02:00
Lauri Ojansivu 7b432078a0 Updated ChangeLog. 2024-01-23 23:36:19 +02:00
Lauri Ojansivu 19703fed31 Removed markdown-it-mathjax3.
Fixes #5117

Thanks to Dexus and xet7 !
2024-01-23 23:32:46 +02:00
Lauri Ojansivu b01e127cc3 v7.28 2024-01-23 00:51:09 +02:00
Lauri Ojansivu f0c2d81352 Updated ChangeLog. 2024-01-23 00:44:30 +02:00
Lauri Ojansivu 67896adefc Updated dependencies.
Thanks to developers of dependencies !
2024-01-23 00:42:54 +02:00
Lauri Ojansivu d1b29b6e61 Updated translations. 2024-01-23 00:36:55 +02:00
Lauri Ojansivu ef93aad659 Updated ChangeLog. 2024-01-23 00:35:31 +02:00
Lauri Ojansivu 616b433409 Updated ChangeLog. 2024-01-23 00:26:39 +02:00
Lauri Ojansivu 515d96eef0 Merge pull request #5271 from wekan/dependabot/github_actions/actions/cache-4
Bump actions/cache from 3 to 4
2024-01-23 05:46:23 +08:00
Lauri Ojansivu 85963cc58d Merge pull request #5270 from wekan/dependabot/github_actions/actions/dependency-review-action-4
Bump actions/dependency-review-action from 3 to 4
2024-01-23 05:45:56 +08:00
Lauri Ojansivu e15611a0ea Merge pull request #5265 from gustavengstrom/master
Added archive option to  of Wekan API
2024-01-23 05:45:30 +08:00
dependabot[bot] f89a2ab91d Bump actions/cache from 3 to 4
Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-22 21:00:40 +00:00
dependabot[bot] 18d3fb75ac Bump actions/dependency-review-action from 3 to 4
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 3 to 4.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/dependency-review-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-22 21:00:32 +00:00
Gustav Engström f5bc2b08f9 Added archive option to of Wekan API 2024-01-15 12:32:24 +01:00
Lauri Ojansivu 80e5916394 Merge pull request #5263 from wekan/dependabot/github_actions/docker/metadata-action-5.5.0
Bump docker/metadata-action from 5.4.0 to 5.5.0
2024-01-08 23:50:02 +02:00
dependabot[bot] 48c47f9911 Bump docker/metadata-action from 5.4.0 to 5.5.0
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.4.0 to 5.5.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](https://github.com/docker/metadata-action/compare/9dc751fe249ad99385a2583ee0d084c400eee04e...dbef88086f6cef02e264edb7dbf63250c17cef6c)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-08 20:41:32 +00:00
Lauri Ojansivu c3f5849f11 Updated translations. 2024-01-02 23:02:29 +02:00
Lauri Ojansivu c73346eda0 v7.27 2024-01-02 14:59:38 +02:00
Lauri Ojansivu d976455a12 Updated ChangeLog. 2024-01-02 14:54:39 +02:00
Lauri Ojansivu f10f80f655 Fix missing maximize card.
Thanks to xet7 !
2024-01-02 14:52:13 +02:00
Lauri Ojansivu b680d03da2 v7.26 2024-01-02 13:24:21 +02:00
Lauri Ojansivu 9590fec3fc Updated translations. 2024-01-02 13:18:28 +02:00
Lauri Ojansivu e9fc5537e4 Updated ChangeLog. 2024-01-02 13:16:58 +02:00
Lauri Ojansivu 8ae47cb2f8 Fix some public board buttons.
Thanks to xet7 !
2024-01-02 13:14:24 +02:00
Lauri Ojansivu 2fefaf1b5b Updated translations. 2024-01-02 12:30:58 +02:00
Lauri Ojansivu 5554cd7567 v7.25 2023-12-30 22:32:29 +02:00
Lauri Ojansivu 442ea7595a Updated ChangeLog. 2023-12-30 21:29:50 +02:00
Lauri Ojansivu 0e6d83c085 Updated dependencies.
Thanks to developers of dependencies !
2023-12-30 21:27:50 +02:00
Lauri Ojansivu 3199da4b3d Updated ChangeLog. 2023-12-30 20:22:11 +02:00
Lauri Ojansivu 23c2a2bc22 Translations: Added German (Germany) (de_DE) and Odia (India) (or_IN).
Thanks to translators !
2023-12-30 20:19:12 +02:00
Lauri Ojansivu 554bec4f1e Merge pull request #5252 from Lewiscowles1986/fix/export-html-popup
Fix: export html popup
2023-12-30 15:59:01 +02:00
Lewis Cowles 4d6e6a85e0 feat: download webfonts as well
Prior to this I was manually saving the fonts, and I don't remember documenting either.

Now there should be no documentation needed.
2023-12-30 06:41:10 +00:00
Lewis Cowles fe887b7b5e fix: export HTML currently exports JS popups 2023-12-30 06:26:53 +00:00
Lauri Ojansivu d954b97aac Updated ChangeLog. 2023-12-19 01:28:37 +02:00
Lauri Ojansivu 374e673107 Snap: Added MongoDB 3 binaries for migrating to MongoDB 6. Part 3.
Thanks to xet7 !
2023-12-19 01:27:05 +02:00
Lauri Ojansivu 68c0d3fbe5 Updated ChangeLog. 2023-12-19 01:22:30 +02:00
Lauri Ojansivu 335f0451e0 Snap: Added MongoDB 3 binaries for migrating to MongoDB 6. Part 2.
Thanks to xet7 !
2023-12-19 01:20:31 +02:00
Lauri Ojansivu b5a071f51e Updated ChangeLog. 2023-12-19 01:12:29 +02:00
Lauri Ojansivu 805458a763 Snap: Added MongoDB 3 binaries for migrating to MongoDB 6.
Thanks to xet7 !
2023-12-19 01:09:15 +02:00
Lauri Ojansivu 4f8e711a5f Updated ChangeLog. 2023-12-19 00:51:37 +02:00
Lauri Ojansivu 06397e9e11 Updated percolate:synced-cron.
Thanks to developers of percolate:synced-cron !
2023-12-19 00:44:57 +02:00
Lauri Ojansivu 94be762f68 Merge pull request #5245 from wekan/dependabot/github_actions/actions/download-artifact-4
Bump actions/download-artifact from 3 to 4
2023-12-19 00:42:32 +02:00
Lauri Ojansivu ccb48d0711 Merge pull request #5244 from wekan/dependabot/github_actions/docker/metadata-action-5.4.0
Bump docker/metadata-action from 5.3.0 to 5.4.0
2023-12-19 00:42:06 +02:00
Lauri Ojansivu b6014ca992 Merge pull request #5243 from wekan/dependabot/github_actions/actions/upload-artifact-4
Bump actions/upload-artifact from 3 to 4
2023-12-19 00:41:32 +02:00
Lauri Ojansivu 02c5f2e3cf Updated ChangeLog. 2023-12-19 00:33:38 +02:00
Lauri Ojansivu 84a228fc1a Snap: Organized file locations.
Thanks to xet7 !
2023-12-19 00:30:21 +02:00
dependabot[bot] 356fddc182 Bump actions/download-artifact from 3 to 4
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-18 20:11:05 +00:00
dependabot[bot] c4853b9aa7 Bump docker/metadata-action from 5.3.0 to 5.4.0
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.3.0 to 5.4.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](https://github.com/docker/metadata-action/compare/31cebacef4805868f9ce9a0cb03ee36c32df2ac4...9dc751fe249ad99385a2583ee0d084c400eee04e)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-18 20:11:02 +00:00
dependabot[bot] d6cb460186 Bump actions/upload-artifact from 3 to 4
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-18 20:10:57 +00:00
Lauri Ojansivu a0f9b81113 v7.24 2023-12-17 14:10:52 +02:00
Lauri Ojansivu 15b9497a72 Updated ChangeLog. 2023-12-17 14:02:45 +02:00
Lauri Ojansivu 93be112a94 Azure AD B2C login using OAuth2. https://github.com/wekan/wekan/wiki/B2C
Thanks to snowsky and xet7 !

Fixes #5242
2023-12-17 13:54:55 +02:00
Lauri Ojansivu 5a9a5df448 Updated ChangeLog. 2023-12-13 15:56:28 +02:00
Lauri Ojansivu 75383fe477 Upgrade to Meteor 2.14 .
Thanks to Meteor developers !
2023-12-13 15:54:01 +02:00
Lauri Ojansivu 3f0109e810 v7.23 2023-12-11 23:44:57 +02:00
Lauri Ojansivu c21db857fb Updated ChangeLog. 2023-12-11 23:40:45 +02:00
Lauri Ojansivu e3a0a480ed Updated dependencies.
Thanks to developers of dependencies !
2023-12-11 23:39:08 +02:00
Lauri Ojansivu 3917d8c4a3 Updated ChangeLog. 2023-12-11 23:37:32 +02:00
Lauri Ojansivu 6a3b8a668b Upgraded to Meteor 2.14-rc.3 .
Thanks to Meteor developers !
2023-12-11 23:35:08 +02:00
Lauri Ojansivu edfa9783c3 Updated ChangeLog. 2023-12-07 14:54:40 +02:00
Lauri Ojansivu b4c9c1df9a Updated security.md about mitm.
Thanks to xet7 !
2023-12-07 14:52:20 +02:00
Lauri Ojansivu 85353d9f90 Merge pull request #5234 from wekan/dependabot/github_actions/docker/metadata-action-5.3.0
Bump docker/metadata-action from 5.0.0 to 5.3.0
2023-12-04 23:01:42 +02:00
dependabot[bot] 905f0316b6 Bump docker/metadata-action from 5.0.0 to 5.3.0
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.0.0 to 5.3.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](https://github.com/docker/metadata-action/compare/96383f45573cb7f253c731d3b3ab81c87ef81934...31cebacef4805868f9ce9a0cb03ee36c32df2ac4)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-04 20:52:10 +00:00
Lauri Ojansivu b3961609e1 Updated translations. 2023-12-04 18:39:11 +02:00
Lauri Ojansivu 8ad4a1aa96 v7.22 2023-12-01 14:01:23 +02:00
Lauri Ojansivu 3fd1f4f5ec Updated ChangeLog. 2023-12-01 13:57:02 +02:00
Lauri Ojansivu 31ca78c17b Upgraded to MongoDB 6.0.12 at Snap Candidate.
Thanks to MongoDB developers !
2023-12-01 13:55:06 +02:00
Lauri Ojansivu a628c0fc03 Updated ChangeLog. 2023-12-01 13:52:50 +02:00
Lauri Ojansivu 3cc10c77f9 Fixed Markdown and copy buttons on top of text.
Thanks to mueller-ma and xet7 !

Fixes #5230
2023-12-01 13:49:59 +02:00
Lauri Ojansivu a727f8a62c Updated ChangeLog. 2023-12-01 13:35:02 +02:00
Lauri Ojansivu f324286911 New feature: Sidebar / Card Settings / Creator at minicard.
Thanks to Roemer and xet7 !

Related https://github.com/wekan/wekan/discussions/5217
2023-12-01 13:31:16 +02:00
Lauri Ojansivu 7f7d06be65 Updated translations. 2023-12-01 13:17:23 +02:00
Lauri Ojansivu c9f1278651 Updated translations 2023-12-01 13:13:54 +02:00
Lauri Ojansivu dd69966def Updated ChangeLog. 2023-12-01 13:03:23 +02:00
Lauri Ojansivu 2f2a039e3c At right sidebar, moved Minicard Settings to Card Settings popup.
Thanks to xet7 !
2023-12-01 12:59:29 +02:00
Lauri Ojansivu 80db4cd645 v7.21 2023-11-27 00:36:10 +02:00
Lauri Ojansivu ed9338608e Updated ChangeLog. 2023-11-27 00:32:37 +02:00
Lauri Ojansivu fef0c0e490 Updated dependencies.
Thanks to developers of dependencies !
2023-11-27 00:30:38 +02:00
Lauri Ojansivu e0e703dc72 Updated translations. 2023-11-27 00:23:43 +02:00
Lauri Ojansivu 8aca32179e Updated translations. 2023-11-26 23:37:10 +02:00
Lauri Ojansivu ab823795cf v7.20 2023-11-26 19:07:41 +02:00
Lauri Ojansivu d90ab03bbe Upgraded to Meteor 2.14-beta.4.
Thanks to Meteor developers !
2023-11-26 19:00:22 +02:00
Lauri Ojansivu bf053e0018 Updated ChangeLog. 2023-11-26 10:40:25 +02:00
Lauri Ojansivu 46c911bb2a Removed extra text. 2023-11-26 10:36:52 +02:00
Lauri Ojansivu 2bc8df9188 Updated translations. 2023-11-24 09:31:16 +02:00
Lauri Ojansivu 6367b18f4f Updated readme. 2023-11-24 09:29:58 +02:00
Lauri Ojansivu a307bfa1ec Added standard for public code. 2023-11-24 08:28:30 +02:00
Lauri Ojansivu cfb3caf504 Updated future.md 2023-11-22 23:57:33 +02:00
Lauri Ojansivu daf524238b Updated future.md 2023-11-22 22:50:13 +02:00
Lauri Ojansivu 5435604448 Updated future.md. 2023-11-22 22:48:45 +02:00
Lauri Ojansivu 64500f1f73 Updated future.md 2023-11-22 22:38:17 +02:00
Lauri Ojansivu d5ee0b567a Added future.md 2023-11-22 22:35:20 +02:00
Lauri Ojansivu 5ec4988efe Added FUTURE.md 2023-11-22 22:08:56 +02:00
Lauri Ojansivu e41072dcdf Updated ChangeLog. 2023-11-21 02:50:43 +02:00
Lauri Ojansivu 126ddda45d Upgraded to Meteor 2.14-beta.2.
Thanks to Meteor developers!
2023-11-21 02:48:19 +02:00
Lauri Ojansivu bec460f77e Merge pull request #5215 from wekan/dependabot/github_actions/docker/build-push-action-5.1.0
Bump docker/build-push-action from 5.0.0 to 5.1.0
2023-11-21 01:32:21 +02:00
Lauri Ojansivu fd56d4c63c Merge pull request #5214 from wekan/dependabot/github_actions/VeryGoodOpenSource/very_good_coverage-2.2.0
Bump VeryGoodOpenSource/very_good_coverage from 2.1.0 to 2.2.0
2023-11-21 01:31:53 +02:00
dependabot[bot] d9cefb84b8 Bump docker/build-push-action from 5.0.0 to 5.1.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/0565240e2d4ab88bba5387d719585280857ece09...4a13e500e55cf31b7a5d59a38ab2040ab0f42f56)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-20 20:49:16 +00:00
dependabot[bot] 3013114c1f Bump VeryGoodOpenSource/very_good_coverage from 2.1.0 to 2.2.0
Bumps [VeryGoodOpenSource/very_good_coverage](https://github.com/verygoodopensource/very_good_coverage) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/verygoodopensource/very_good_coverage/releases)
- [Changelog](https://github.com/VeryGoodOpenSource/very_good_coverage/blob/main/CHANGELOG.md)
- [Commits](https://github.com/verygoodopensource/very_good_coverage/compare/v2.1.0...v2.2.0)

---
updated-dependencies:
- dependency-name: VeryGoodOpenSource/very_good_coverage
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-20 20:49:11 +00:00
Lauri Ojansivu 095dfdb24f Updated ChangeLog. 2023-11-20 22:31:02 +02:00
Lauri Ojansivu a032586aaf v7.19 2023-11-20 21:57:18 +02:00
Lauri Ojansivu d16c141821 Updated translations. 2023-11-20 21:51:30 +02:00
Lauri Ojansivu dcf75f0bcd Updated ChangeLog. 2023-11-20 21:50:05 +02:00
Lauri Ojansivu 282a9e3097 Merge pull request #5213 from scout-ch/feature/default-board-for-users
Permissions for default board
2023-11-20 21:39:24 +02:00
Diego Steiner 0e4b121209 Merge branch 'main' into feature/default-board-for-users 2023-11-20 16:59:38 +01:00
Diego Steiner 3e469c5a44 feature: add permissions for default boards 2023-11-20 16:01:18 +01:00
Lauri Ojansivu e760a4140b Updated ChangeLog. 2023-11-20 14:22:18 +02:00
Lauri Ojansivu 2048975e92 Snap: Disable apparmor="DENIED" in syslog.
Thanks to diegargon, webenefits and xet7 !

Fixes #4855
2023-11-20 14:18:38 +02:00
Lauri Ojansivu cf5312ed2e Updated ChangeLog. 2023-11-20 02:37:27 +02:00
Lauri Ojansivu 8f33ab3487 Updated ChangeLog. 2023-11-20 01:31:04 +02:00
Lauri Ojansivu d4d6a5f96d Fix to not anymore require website for Organization and Team.
Thanks to xet7 !
2023-11-20 01:28:14 +02:00
Lauri Ojansivu a55992276d Updated ChangeLog. 2023-11-20 01:23:48 +02:00
Lauri Ojansivu 6405c35bc0 Fix to not anymore show confusing Organization Id and Team Id fields at Admin Panel / People / People / Edit user.
Thanks to xet7 !
2023-11-20 01:20:30 +02:00
Lauri Ojansivu bd3d7ec9c9 Updated ChangeLog. 2023-11-20 00:55:01 +02:00
Lauri Ojansivu cd51ad7508 Fix typos at oidc_server.js .
Thanks to xet7 !
2023-11-20 00:53:37 +02:00
Lauri Ojansivu bd5bb2a8a9 Updated ChangeLog. 2023-11-20 00:03:28 +02:00
Lauri Ojansivu 9bc6366993 When user logins, "Automatically add user with the domain name" (at Admin Panel / Organizations) to Organization. Part 2.
Thanks to xet7 !
2023-11-20 00:02:19 +02:00
Lauri Ojansivu b6c7737f73 Updated translations. 2023-11-19 23:55:58 +02:00
Lauri Ojansivu 6a9d738348 Updated ChangeLog. 2023-11-19 23:47:30 +02:00
Lauri Ojansivu 6e2f84673e When user logins, "Automatically add user with the domain name" (at Admin Panel / Organizations) to Organization. Part 1.
Thanks to xet7 !
2023-11-19 23:33:40 +02:00
Diego Steiner 63201e992c feature: add permissions for default boards 2023-11-19 14:08:16 +01:00
Lauri Ojansivu f512047ac6 Updates. 2023-11-16 15:59:01 +02:00
Lauri Ojansivu c4293ecd95 Updates. 2023-11-16 15:49:39 +02:00
Lauri Ojansivu f047c6da29 Updated security.md 2023-11-16 15:38:53 +02:00
Lauri Ojansivu 59874d16b9 Updated. 2023-11-16 15:37:40 +02:00
Lauri Ojansivu 026236edc9 Updated. 2023-11-16 15:36:40 +02:00
Lauri Ojansivu e91e68c48c Updated contributing. 2023-11-16 15:35:50 +02:00
Lauri Ojansivu d840cb3be7 Updated contributing. 2023-11-16 15:23:29 +02:00
Lauri Ojansivu 2b1d2222cc Added governance. 2023-11-16 15:09:29 +02:00
Lauri Ojansivu b6fdbbd2bb Updated ChangeLog. 2023-11-14 05:44:55 -05:00
Lauri Ojansivu 0c54c1540c Removed console.log.
Thanks to xet7 !
2023-11-14 05:42:03 -05:00
Lauri Ojansivu fae5f6d64a Merge pull request #5205 from gustavengstrom/master
Updated swimlane (restore and changed title) and board (changed title) webhooks
2023-11-14 12:41:26 +02:00
gustavengstrom 17c4c44426 Merge branch 'wekan:main' into master 2023-11-14 09:50:28 +01:00
Gustav Engström 67835e3421 Added change board title to available webhooks 2023-11-14 09:49:10 +01:00
Gustav Engström 832bd6187c Added restore swimlane and swimlane title to webhooks 2023-11-14 08:16:40 +01:00
Lauri Ojansivu 6507d2be71 v7.18 2023-11-14 02:26:23 +02:00
Lauri Ojansivu 21785a9322 Updated ChangeLog. 2023-11-13 19:17:39 -05:00
Lauri Ojansivu fc387d0ddf Merge pull request #5198 from gustavengstrom/master
Added restore list and changing list title to outgoing webhooks
2023-11-14 02:15:39 +02:00
Lauri Ojansivu 27e749abb8 Updated ChangeLog. 2023-11-13 19:15:10 -05:00
Lauri Ojansivu 83143ee570 Updated ChangeLog. 2023-11-13 19:12:46 -05:00
Lauri Ojansivu d4252f3056 Updated release scripts. 2023-11-13 19:10:54 -05:00
Gustav Engström 1dd97ebd49 Added restore list and change list title to webhooks 2023-11-12 20:42:25 +01:00
Gustav Engström bfa15d4719 Added missing activity Type: restoredList 2023-11-12 09:59:35 +01:00
Lauri Ojansivu 4b22f29826 Merge pull request #5196 from mueller-ma/add-source-label
Add label org.opencontainers.image.source
2023-11-10 14:40:55 +02:00
mueller-ma 0f14bd3358 Add label org.opencontainers.image.source
Closes #5191
2023-11-10 13:32:26 +01:00
Lauri Ojansivu f7d5d65c0c v7.17 2023-11-09 21:23:01 +02:00
Lauri Ojansivu 86fbfd3c50 Updated ChangeLog. 2023-11-09 21:09:54 +02:00
Lauri Ojansivu cfde9d5a61 Merge pull request #5194 from mfilser/reactiveMiniMonIndex_for_server_side
ReactiveMiniMongoIndex for Server-Side
2023-11-09 21:04:34 +02:00
Martin Filser a9932823c4 ReactiveMiniMongoIndex for Server-Side
- fixes: #5069 (move card rule on checklist complete doesn't work)
2023-11-09 19:45:22 +01:00
Lauri Ojansivu 67b99a88fc Updated translations. 2023-11-09 17:43:16 +02:00
Lauri Ojansivu 455ec8c3d8 v7.16 2023-11-09 17:20:46 +02:00
Lauri Ojansivu 42ece21fa1 Fix users.save is not a function.
Thanks to xet7 !
2023-11-09 17:16:02 +02:00
Lauri Ojansivu 663ecab51e v7.15 2023-11-09 13:09:53 +02:00
Lauri Ojansivu dbae718f4d Updated ChangeLog. 2023-11-09 12:59:46 +02:00
Lauri Ojansivu 52e76c5496 Add more Docker Labels to Dockerfile.
Thanks to mueller-ma and xet7 !

Fixes #5191
2023-11-09 12:57:41 +02:00
Lauri Ojansivu 71b6cd630a Updated ChangeLog. 2023-11-09 12:47:52 +02:00
Lauri Ojansivu 2c36fe3d45 Commented out links at My Cards Table, because they unexpectly caused to go elsewhere from current view.
Thanks to xet7 !
2023-11-09 12:45:21 +02:00
Lauri Ojansivu 28b14777c2 Updated ChangeLog. 2023-11-09 12:15:29 +02:00
Lauri Ojansivu 4e97a5351a Fix missing profile/avatar pictures.
Thanks to kovacs-andras and xet7 !

Fixes #5147
2023-11-09 12:11:36 +02:00
Lauri Ojansivu 2ab5009de7 v7.14 2023-11-09 07:17:55 +02:00
Lauri Ojansivu 65668e91fe Updated translations. 2023-11-09 07:13:38 +02:00
Lauri Ojansivu d6098dbedf Updated ChangeLog. 2023-11-09 07:06:27 +02:00
Lauri Ojansivu fe6b94e539 Merge pull request #5189 from mfilser/notifications_are_now_displayed_correctly_again
Notifications are now displayed correctly again
2023-11-09 07:03:32 +02:00
Martin Filser 00e60ff855 notifications are now always ordered from newest to oldest activity 2023-11-08 23:23:10 +01:00
Martin Filser c4882707e9 use ReactiveMiniMongoIndex for notifications 2023-11-08 23:23:10 +01:00
Martin Filser 402528d97e notifications are now displayed correctly again 2023-11-08 23:23:10 +01:00
Lauri Ojansivu 4e25e335a9 Updated ChangeLog. 2023-11-08 12:57:18 +02:00
Lauri Ojansivu 972981a579 Removed double edit text from card description.
Thanks to derbolle and xet7 !

Fixes #5187
2023-11-08 12:54:34 +02:00
Lauri Ojansivu ce5abf8299 Updated translations. 2023-11-08 12:38:57 +02:00
Lauri Ojansivu 8bb31861a7 Merge pull request #5184 from wekan/dependabot/github_actions/helm/chart-releaser-action-1.6.0
Bump helm/chart-releaser-action from 1.5.0 to 1.6.0
2023-11-06 23:04:26 +00:00
dependabot[bot] 7d2e40ee47 Bump helm/chart-releaser-action from 1.5.0 to 1.6.0
Bumps [helm/chart-releaser-action](https://github.com/helm/chart-releaser-action) from 1.5.0 to 1.6.0.
- [Release notes](https://github.com/helm/chart-releaser-action/releases)
- [Commits](https://github.com/helm/chart-releaser-action/compare/v1.5.0...v1.6.0)

---
updated-dependencies:
- dependency-name: helm/chart-releaser-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-06 20:54:17 +00:00
Lauri Ojansivu f0de48a3c4 Updated translations. 2023-11-05 21:47:33 +02:00
Lauri Ojansivu 799e66c078 Updated ChangeLog. 2023-11-05 21:46:08 +02:00
Lauri Ojansivu 55903472aa Upgraded to Meteor 2.14-beta.0.
Thanks to Meteor developers!
2023-11-05 21:40:19 +02:00
Lauri Ojansivu 22c7d3b07f v7.12 2023-11-03 01:20:40 +02:00
Lauri Ojansivu 485737f6b0 Updated ChangeLog. 2023-11-03 01:15:05 +02:00
Lauri Ojansivu b756150f76 Fix Add List button too wide at themes: Clearblue, Modern, Exodark.
Thanks to xet7 !

Fixes #5179
2023-11-03 01:12:18 +02:00
Lauri Ojansivu 40108d63bb Updated API docs for WeKan v7.11 2023-11-03 00:15:36 +02:00
Lauri Ojansivu 8f3103e329 Updated ChangeLog. 2023-11-02 19:58:50 +00:00
Lauri Ojansivu 9bf1478587 Updated ChangeLog. 2023-11-02 21:20:47 +02:00
Lauri Ojansivu 91cf377948 Merge branch 'main' of github.com:wekan/wekan 2023-11-02 21:18:41 +02:00
Lauri Ojansivu ff4c8a5d23 Updated Snap Candidate MongoDb to 6.0.11.
Thanks to MongoDB developers!
2023-11-02 21:17:34 +02:00
Lauri Ojansivu 439f76e48a Updated ChangeLog. 2023-11-02 19:12:35 +00:00
Lauri Ojansivu 720d4223e2 Fix Windows build bundle script.
Thanks to xet7 !
2023-11-02 19:10:54 +00:00
Lauri Ojansivu 4518e2d23c v7.11 2023-11-02 19:49:56 +02:00
Lauri Ojansivu c9a24c38d4 Updated ChangeLog. 2023-11-02 05:40:52 +02:00
Lauri Ojansivu b54d17467c Updated dependencies.
Thanks to exceljs developers!
2023-11-02 05:39:07 +02:00
Lauri Ojansivu 5c93de8911 Updated ChangeLog. 2023-11-01 21:39:16 +02:00
Lauri Ojansivu 8323649cf0 Updated dependencies.
Thanks to zodern.
2023-11-01 21:37:51 +02:00
Lauri Ojansivu 75fbf00eb7 Updated translations. 2023-11-01 21:17:37 +02:00
Lauri Ojansivu 820908ab05 Updated ChangeLog. 2023-10-31 16:07:04 +02:00
Lauri Ojansivu 4fe168b03b Fix Security issue: Hyperlink injection.
Thanks to mc-marcy and xet7 !

Fixes #5176
2023-10-31 16:04:25 +02:00
Lauri Ojansivu 4825bcec8d Updated ChangeLog. 2023-10-31 15:13:15 +02:00
Lauri Ojansivu 0f99f22fa5 Docker base image to Ubuntu 23.10.
Thanks to Ubuntu developers!
2023-10-31 15:11:47 +02:00
Lauri Ojansivu 051d1670b7 For reporting secrity issues, mention a way at top, trying to make it more clear.
Related #5176
2023-10-30 11:16:49 -04:00
Lauri Ojansivu ef0e1f9089 Updated ChangeLog. 2023-10-27 10:58:32 -04:00
Lauri Ojansivu 974c177237 Updated dependencies. 2023-10-27 10:53:47 -04:00
Lauri Ojansivu 75de7b119d Updated translations. 2023-10-27 10:53:19 -04:00
Lauri Ojansivu b088763272 Updated dependencies. 2023-10-25 16:17:42 -04:00
Lauri Ojansivu c45bf4e368 Updated dependencies.
Thanks to developers of dependencies !
2023-10-25 10:40:07 -04:00
Lauri Ojansivu af5054e7fb Updated translations. 2023-10-25 10:30:17 -04:00
Lauri Ojansivu 9529d71732 Updated translations. 2023-10-23 03:49:20 -04:00
Lauri Ojansivu 74ea237c2a Updated ChangeLog. 2023-10-20 08:39:31 +03:00
Lauri Ojansivu c8f1d99fe6 Merge pull request #5168 from mfilser/open_card_details_always_in_the_middle_of_the_screen
Open card details always in the middle of the screen
2023-10-20 01:38:37 +03:00
Martin Filser a22631915b remove old open card code to scroll the screen 2023-10-19 21:51:43 +02:00
Martin Filser 05df419a46 maximized card is now always visible 2023-10-19 21:51:43 +02:00
Martin Filser 0f1b57fee4 remove old open card code 2023-10-19 21:51:43 +02:00
Martin Filser e69a9f17b8 open card details always in the center of the screen 2023-10-19 21:51:43 +02:00
Lauri Ojansivu de3467a6d5 Updated translations. 2023-10-16 09:12:22 -04:00
Lauri Ojansivu 7214f6d49a Updated ChangeLog. 2023-10-16 08:50:38 -04:00
Lauri Ojansivu c1bc6d4733 Updated translations. 2023-10-11 10:59:44 -04:00
Lauri Ojansivu 3d4f97364c Updated ChangeLog. 2023-10-11 09:50:34 -04:00
Lauri Ojansivu 2c74240bcb Updated security.md 2023-10-11 09:46:24 -04:00
Lauri Ojansivu 90da40fde0 Updated security.md 2023-10-11 08:56:36 -04:00
Lauri Ojansivu fe985e219a Updated security.md. 2023-10-11 08:16:08 -04:00
Lauri Ojansivu f5355422ee Added dot. 2023-10-11 08:10:33 -04:00
Lauri Ojansivu aae7960f25 Updated security.md.
Thanks to xet7 !
2023-10-11 08:07:45 -04:00
Lauri Ojansivu b99f878c98 Merge pull request #5161 from faburem/main
Fixes issue #5131 (at least partly)
2023-10-11 11:39:44 +03:00
Fabian Kromer 4b61f38cba Fixes issue #5131 (at least partly)
You still have to click on "Template" twice to trigger the popup but IMHO it's better than the feature being completely broken.
2023-10-10 14:48:15 +02:00
Lauri Ojansivu 4085a98bcd Updated ChangeLog. 2023-10-09 09:20:19 -04:00
Lauri Ojansivu 524e3b098f Merge pull request #5159 from faburem/main
Fix LDAP login (#issue 5156)
2023-10-09 16:17:25 +03:00
Fabian Kromer dc8595ad68 Fully replace bunyan with meteor/logging for the LDAP logger (fixes issue #5156) 2023-10-09 11:45:44 +02:00
Lauri Ojansivu a76067abfa Updated translations. 2023-10-06 16:18:59 +03:00
Lauri Ojansivu 6ef10a54bd Updated ChangeLog. 2023-10-03 14:15:44 -04:00
Lauri Ojansivu c9e80eaa03 Added info to docker-compose.yml about newest docker image of newest git commit automatic build.
Thanks to xet7 !
2023-10-03 14:13:54 -04:00
Lauri Ojansivu e47dcf734a Updated ChangeLog. 2023-10-03 11:18:10 -04:00
Lauri Ojansivu 4dfcc31506 Updated translations. 2023-10-03 11:10:59 -04:00
Lauri Ojansivu 14e5c96f73 Updated ChangeLog. 2023-10-03 09:59:23 -04:00
Lauri Ojansivu 53e569d285 Fixed can not close sidebar at Modern theme.
Thanks to xet7 !
2023-10-03 09:56:37 -04:00
Lauri Ojansivu 71381dce95 Updated ChangeLog. 2023-10-03 09:37:50 -04:00
Lauri Ojansivu 0cc63b810c Feature: Copy Card Details code block to clipboard.
Thanks to C0rn3j and xet7 !

Fixes #5149
2023-10-03 09:35:18 -04:00
Lauri Ojansivu 7724b0d5bb Updated translations. 2023-10-03 07:09:12 -04:00
Lauri Ojansivu 6206eca725 Updated ChangeLog. 2023-10-03 06:46:16 -04:00
Lauri Ojansivu 069e2c69b2 Feature: Convert to Markdown button at editor of Card Description and Comment. Useful when there is no WYSIWYG editor.
Thanks to BabyFnord and xet7 !

Fixes #5012,
fixes #3003,
fixes #3399,
fixes #2968,
fixes #2933
2023-10-03 06:38:15 -04:00
Lauri Ojansivu 0e902d73a8 Updated year at license. 2023-10-01 18:37:38 -04:00
Lauri Ojansivu be72274ca5 Updated screenshot at readme. 2023-10-01 16:25:38 -04:00
Lauri Ojansivu ab0dacc65a Updated ChangeLog. 2023-09-29 13:24:02 +03:00
Lauri Ojansivu cfa0a063ce docker-compose.yml back to latest docker image tag.
Thanks to xet7 !
2023-09-29 13:21:28 +03:00
Lauri Ojansivu 26abb2d99d v7.10 2023-09-29 08:31:52 +03:00
Lauri Ojansivu 396ca6967e Updated ChangeLog. 2023-09-29 08:20:43 +03:00
Lauri Ojansivu 52ce6da32c Updated dependencies.
Thanks to developers of dependencies !
2023-09-29 08:18:40 +03:00
Lauri Ojansivu e64942a909 Updated translations. 2023-09-29 08:17:17 +03:00
Lauri Ojansivu b38e2fa35f Updated ChangeLog. 2023-09-29 07:38:43 +03:00
Lauri Ojansivu 16991498fb Merge pull request #5146 from cloudron-io/fix-password-change-regression
Fix password change regression
2023-09-29 07:35:27 +03:00
Johannes Zellner 7ebdd1b68b Do not close form for immediate visual feedback on password change 2023-09-28 13:00:17 +02:00
Johannes Zellner 79e61f6d64 Fix regression which hides the password change form
This came in via https://github.com/wekan/wekan/pull/5032/files as I
wasn't aware the class name was reused. Unfortunately I couldn't find
how to create an explicit new class name for only the password change
form, so we show the form in code now.

Fixes #5144
2023-09-28 13:00:04 +02:00
Lauri Ojansivu a130e9b52b Updated ChangeLog. 2023-09-26 00:10:59 +03:00
Lauri Ojansivu e103bf46dd Added docker-compose.yml for arm64.
Thanks to xet7 !
2023-09-26 00:08:47 +03:00
Lauri Ojansivu 92375c3c2b Updated ChangeLog. 2023-09-25 23:22:52 +03:00
Lauri Ojansivu eacb310e59 Added Dockerfile for s390x.
Thanks to xet7 !
2023-09-25 23:21:11 +03:00
Lauri Ojansivu 4dbbb29573 Updated ChangeLog. 2023-09-25 21:45:03 +03:00
Lauri Ojansivu 73e690a5fe Fixed arm64 Dockerfile.
Thanks to manfromdownunder and xet7 !

Related #4607,
related #4505
2023-09-25 21:41:26 +03:00
Lauri Ojansivu f2acf67cb6 Updated ChangeLog. 2023-09-25 21:08:18 +03:00
Lauri Ojansivu 637442563e Updated versions at Dockerfile. arm64 Dockerfile does not work yet.
Thanks to xet7.
2023-09-25 21:06:29 +03:00
Lauri Ojansivu 8ae70ed0c0 Updated ChangeLog. 2023-09-25 19:06:23 +03:00
Lauri Ojansivu 240e05ba16 Removed disabled codeql-analysis workflow.
Thanks to xet7 !
2023-09-25 19:04:21 +03:00
Lauri Ojansivu 028dd9f0be Updated ChangeLog. 2023-09-25 19:02:42 +03:00
Lauri Ojansivu 33c2b4b74a Updated ChangeLog. 2023-09-25 19:01:39 +03:00
Lauri Ojansivu 8cba42efbe Use newest Docker build from newest main branch commit at docker-compose.yml .
Thanks to xet7 !
2023-09-25 18:58:01 +03:00
Lauri Ojansivu be2e002720 Try to fix WeKan Docker build.
Thanks to xet7 !
2023-09-25 18:25:34 +03:00
Lauri Ojansivu 59c0b378a1 Updated ChangeLog. 2023-09-25 18:13:28 +03:00
Lauri Ojansivu b68493b009 Renamed WeKan repo branch master to main. Part 3.
Thanks to xet7.
2023-09-25 18:12:10 +03:00
Lauri Ojansivu c777bf39d1 Updated ChangeLog. 2023-09-25 18:08:40 +03:00
Lauri Ojansivu fa32010a65 Renamed WeKan repo branch master to main. Part 2.
Thanks to xet7 !
2023-09-25 18:06:55 +03:00
Lauri Ojansivu a29e40359a Updated ChangeLog. 2023-09-25 18:01:34 +03:00
Lauri Ojansivu 549982b5e1 Renamed WeKan repo branch master to main.
Thanks to xet7 !
2023-09-25 17:59:55 +03:00
Lauri Ojansivu 110030ac60 Updated translations. 2023-09-24 09:57:48 +03:00
Lauri Ojansivu 676591c317 Merge pull request #5139 from wekan/dependabot/github_actions/docker/build-push-action-5.0.0
Bump docker/build-push-action from 4.2.1 to 5.0.0
2023-09-20 21:25:08 +03:00
Lauri Ojansivu 22469ba18b Merge pull request #5138 from wekan/dependabot/github_actions/docker/login-action-3.0.0
Bump docker/login-action from 2.2.0 to 3.0.0
2023-09-20 21:24:40 +03:00
Lauri Ojansivu 6425e5bf04 Merge pull request #5137 from wekan/dependabot/github_actions/docker/metadata-action-5.0.0
Bump docker/metadata-action from 4.6.0 to 5.0.0
2023-09-20 21:24:06 +03:00
dependabot[bot] eb62c7a0e4 Bump docker/build-push-action from 4.2.1 to 5.0.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4.2.1 to 5.0.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/0a97817b6ade9f46837855d676c4cca3a2471fc9...0565240e2d4ab88bba5387d719585280857ece09)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-18 20:36:07 +00:00
dependabot[bot] 2c20f7c6db Bump docker/login-action from 2.2.0 to 3.0.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 2.2.0 to 3.0.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/465a07811f14bebb1938fbed4728c6a1ff8901fc...343f7c4344506bcbf9b4de18042ae17996df046d)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-18 20:36:02 +00:00
dependabot[bot] 44e0f897c9 Bump docker/metadata-action from 4.6.0 to 5.0.0
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 4.6.0 to 5.0.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Upgrade guide](https://github.com/docker/metadata-action/blob/master/UPGRADE.md)
- [Commits](https://github.com/docker/metadata-action/compare/818d4b7b91585d195f67373fd9cb0332e31a7175...96383f45573cb7f253c731d3b3ab81c87ef81934)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-18 20:35:58 +00:00
Lauri Ojansivu 3a6f99f47c Updated ChangeLog. 2023-09-18 19:10:13 +03:00
Lauri Ojansivu 31f8c54571 Merge pull request #5136 from Dexus/patch-1
Make sessinAffinity stickable to clientIP
2023-09-18 16:28:52 +03:00
Josef Fröhle f516f12b13 Make sessinAffinity stickable to clientIP
This would help, but not fix #5120. It's now supports the running of multiple pods for scaling, without the issue that the session will not known on the backend pod.
2023-09-18 12:12:35 +02:00
Lauri Ojansivu 8a37cabec4 Updated ChangeLog. 2023-09-16 15:54:57 +03:00
Lauri Ojansivu d0a04522d0 Merge pull request #5134 from mfilser/font_awesome_6.4.2-adding_missing_icons
Font awesome 6.4.2 adding missing icons
2023-09-16 15:52:25 +03:00
Martin Filser 7ada41e741 FontAwesome 6.4.2, fixing font-size at fa-comment-o icon on minicard 2023-09-16 13:12:47 +02:00
Martin Filser ea39cfbf5a FontAwesome 6.4.2, adding back the previous icons because now all icons are included into Wekan 2023-09-16 13:12:47 +02:00
Martin Filser 7eea0207e4 FontAwesome 6.4.2, adding all available css files
e.g. comment-o was missing
2023-09-16 13:12:47 +02:00
Lauri Ojansivu 68d2b470a7 Updated ChangeLog. 2023-09-16 02:53:26 +03:00
Lauri Ojansivu 47478ee2b4 Merge pull request #5133 from helioguardabaxo/fontawesome
Fix missing fontawesome icons
2023-09-16 02:51:22 +03:00
helioguardabaxo 3b49f10897 Fix missing fontawesome icons. 2023-09-15 20:48:21 -03:00
Lauri Ojansivu 1f778a5d89 Updated ChangeLog. 2023-09-16 02:39:44 +03:00
Lauri Ojansivu 522ab40f43 Upgrade Snap Candidate to MongoDB 6.0.10.
Thanks to MongoDB developers!
2023-09-16 02:36:59 +03:00
Lauri Ojansivu e431ce8405 Updated ChangeLog. 2023-09-15 21:37:36 +03:00
Lauri Ojansivu b40654cdfe Try to get some label outgoing webhooks working.
Thanks to xet7 !

Related #4898
2023-09-15 21:34:31 +03:00
Lauri Ojansivu b64715f70a Updated ChangeLog. 2023-09-15 16:53:37 +03:00
Lauri Ojansivu c27a00a4a8 Fixed typo at ldap.js.
Thanks to xet7 !
2023-09-15 16:51:45 +03:00
Lauri Ojansivu f5eccc1605 Updated ChangeLog. 2023-09-15 00:38:20 +03:00
Lauri Ojansivu 05c6e101ff Fix mini width of add list also to moderndark theme.
Thanks to xet7 !
2023-09-15 00:33:40 +03:00
Lauri Ojansivu 1ed057daf3 Updated ChangeLog. 2023-09-14 23:21:28 +03:00
Lauri Ojansivu ab944e51c7 Fix minicard description text color to black, so that it is visible at light grey background.
Thanks to xet7 !
2023-09-14 23:18:16 +03:00
Lauri Ojansivu d11082385f Updated ChangeLog. 2023-09-14 23:00:58 +03:00
Lauri Ojansivu 22d98fec38 Fix allow normal user to view subtasks.
Thanks to xet7 !
2023-09-14 22:58:44 +03:00
Lauri Ojansivu 870fd3d526 Updated ChangeLog. 2023-09-14 21:19:46 +03:00
Lauri Ojansivu 73a25775e1 Fix Swimlane Default title from "key default returned an object instead of string" to translated title of "Default".
Thanks to titho85, hpvb and xet7 !

Fixes #4763,
fixes #4742
2023-09-14 21:10:18 +03:00
Lauri Ojansivu 9a9dbd26f9 Updated translations. 2023-09-14 21:09:05 +03:00
Lauri Ojansivu 09bdc666c6 Updated ChangeLog. 2023-09-13 19:26:02 +03:00
Lauri Ojansivu cd8aa91aa8 Merge pull request #5129 from wekan/dependabot/github_actions/docker/build-push-action-4.2.1
Bump docker/build-push-action from 4.1.1 to 4.2.1
2023-09-12 03:53:50 +03:00
dependabot[bot] fcb9e99528 Bump docker/build-push-action from 4.1.1 to 4.2.1
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4.1.1 to 4.2.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/2eb1c1961a95fc15694676618e422e8ba1d63825...0a97817b6ade9f46837855d676c4cca3a2471fc9)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-11 20:50:29 +00:00
Lauri Ojansivu c6a8b4bcbc Updated ChangeLog. 2023-09-11 16:51:04 +03:00
Lauri Ojansivu 6b88ae2ba2 Upgraded to Meteor 2.13.3.
Thanks to Meteor developers!
2023-09-11 16:49:18 +03:00
Lauri Ojansivu e1478f2f45 Updated ChangeLog. 2023-09-11 12:09:29 +03:00
Lauri Ojansivu a45b101193 Merge pull request #5128 from helioguardabaxo/fontawesome
Add all characters
2023-09-10 14:31:50 +03:00
helioguardabaxo 8610f7356c Add all characters 2023-09-10 08:26:33 -03:00
Lauri Ojansivu 3aedc24c2b Updated ChangeLog. 2023-09-10 04:40:03 +03:00
Lauri Ojansivu 7d1ab0a388 Fix createCardWithDueDate Error: User id is required.
Thanks to xet7!

Fixes #5114,
fixes #5111
2023-09-10 04:37:53 +03:00
Lauri Ojansivu 56a1617c7e Updated ChangeLog. 2023-09-10 04:18:37 +03:00
Lauri Ojansivu 7baa95fcab Stop using /etc/timezone in Docker. Only use /etc/localtime.
Thanks to dabiao2008 and xet7 !

Fixes #5123
2023-09-10 04:16:07 +03:00
Lauri Ojansivu 8f70ae1cd0 Updated translations. 2023-09-10 04:07:35 +03:00
Lauri Ojansivu 32fb38e539 Updated ChangeLog. 2023-09-10 04:02:02 +03:00
Lauri Ojansivu dfe05cc924 Removed non-existing sw translation and not needed files from bootstrap-datepicker.
Thanks to xet7 !
2023-09-10 03:58:55 +03:00
Lauri Ojansivu 3e77e27d7b Merge branch 'bootstrap-datepicker' of https://github.com/helioguardabaxo/wekan 2023-09-10 03:31:53 +03:00
Lauri Ojansivu c138212592 Updated ChangeLog. 2023-09-10 03:17:58 +03:00
Lauri Ojansivu 473e2c28c6 Removed Font Awesome not in use directories svgs, scss and less.
Thanks to xet7 !
2023-09-10 03:14:17 +03:00
helioguardabaxo 8d9df72114 Update Bootstrap Datepicker version to 1.10.0 2023-09-09 10:49:06 -03:00
helioguardabaxo ffdeed099e Update Font Awesome version to 6.4.2 2023-09-08 20:23:58 -03:00
Lauri Ojansivu f56ac1d45e Updated ChangeLog. 2023-09-05 14:03:13 -04:00
Lauri Ojansivu c898a3f5ea Fixed Can't login via LDAP because of some Node.js issues.
Thanks to Danny-Graf and xet7 !

Fixes #5113
2023-09-05 14:01:13 -04:00
Lauri Ojansivu 941fccd10a Updated ChangeLog. 2023-09-05 13:53:59 -04:00
Lauri Ojansivu d971428f49 Merge pull request #5119 from wekan/dependabot/github_actions/actions/checkout-4
Bump actions/checkout from 3 to 4
2023-09-05 20:51:58 +03:00
dependabot[bot] 688de96615 Bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-04 20:07:06 +00:00
Lauri Ojansivu ecfce447be Updated ChangeLog. 2023-09-04 12:13:01 +03:00
Lauri Ojansivu 4933bf8203 Updated dependencies.
Thanks to developers of dependencies !
2023-09-04 12:11:40 +03:00
Lauri Ojansivu adaa3dcc58 Updated translations. 2023-09-04 10:00:38 +03:00
Lauri Ojansivu e3a85df053 Updated translations. 2023-09-02 00:55:31 +03:00
Lauri Ojansivu d72b436542 Updated ChangeLog. 2023-09-01 13:13:26 +03:00
Lauri Ojansivu 7f9aa75093 Removed limit when setting Swimlane max height.
Thanks to Meeques, mark-i-m and xet7 !

Fixes #4904
2023-09-01 13:07:25 +03:00
Lauri Ojansivu 451f860b5d Updated ChangeLog. 2023-08-31 22:13:55 +03:00
Lauri Ojansivu ee4a3b5b35 Update translations. Added Afrikaans (af), Afrikaans (South africa)(af_ZA), English (South Africa)(en_ZA).
Thanks to translators!
2023-08-31 22:11:19 +03:00
Lauri Ojansivu e1e2461e21 Updated ChangeLog. 2023-08-29 22:56:00 +03:00
Lauri Ojansivu 74b98a5ee4 Added assetlinks.json.
Thanks to xet7 !
2023-08-29 22:54:08 +03:00
Lauri Ojansivu e67f5b3967 Updated ChangeLog. 2023-08-28 04:44:46 +03:00
Lauri Ojansivu 6fdd3d6c53 Merge pull request #5107 from helioguardabaxo/active-members
Active members list now is ordered
2023-08-28 00:01:51 +03:00
helioguardabaxo 089913ff4c Active members list now is ordered. 2023-08-27 17:41:43 -03:00
Lauri Ojansivu 55f084dc7d Updated ChangeLog. 2023-08-25 22:31:22 +03:00
Lauri Ojansivu 36cf471e69 Updated ChangeLog. 2023-08-25 22:23:42 +03:00
Lauri Ojansivu ed03a9ccaf Merge pull request #5106 from ipyramiddev/master
Added a condition to filter unwanted webhooks
2023-08-25 20:10:52 +03:00
Yevhenii Pertiaka b9f74c5add added a condition to filter unwanted webhooks 2023-08-26 01:07:02 +09:00
Lauri Ojansivu 4a45d32d4f Updated ChangeLog. 2023-08-25 17:18:46 +03:00
Lauri Ojansivu b818f0e5cd Merge pull request #5105 from DimDz/master
Fix for CalendarView, Create Card without Refresh
2023-08-25 16:42:49 +03:00
DimDz 0be4eff3f4 Update boardBody.js
Fix for create card.
2023-08-25 12:42:28 +03:00
Lauri Ojansivu 18087f756e Updated ChangeLog. 2023-08-25 00:16:18 +03:00
Lauri Ojansivu 30f50fc705 Updated dependencies. 2023-08-25 00:13:36 +03:00
Lauri Ojansivu 47468a4750 Add back some parts of Show checklist at minicard feature.
Thanks to xet7 !
2023-08-25 00:12:08 +03:00
Lauri Ojansivu 968a32164b Updated ChangeLog. 2023-08-24 23:11:08 +03:00
Lauri Ojansivu 3b936ff6e7 Removed CollectionFS and and attachment migrations. 2023-08-24 23:01:18 +03:00
Lauri Ojansivu 75d524f615 Hide incomplete feature Show checklist at minicard. 2023-08-24 23:00:52 +03:00
Lauri Ojansivu fac3ff9c37 Updated ChangeLog. 2023-08-24 07:21:53 +03:00
Lauri Ojansivu f4e315cf52 Merge pull request #5103 from ipyramiddev/master
make available translation text to set empty string
2023-08-24 10:16:53 +03:00
Yevhenii Pertiaka 021db14a43 make available translation text to set empty string 2023-08-23 23:52:07 +09:00
Lauri Ojansivu 6215e3b584 Updated ChangeLog. 2023-08-23 06:28:56 +03:00
Lauri Ojansivu a781c0e7dc Added DEFAULT_BOARD_ID environment variable setting to all WeKan platforms.
Thanks to xet7 !
2023-08-23 06:27:06 +03:00
Lauri Ojansivu 922452fe41 Updated ChangeLog. 2023-08-23 05:57:06 +03:00
Lauri Ojansivu c22e71e3a2 Removed old demo API key to silence GitHub secret scanning warning.
Thanks to xet7 !
2023-08-23 05:54:33 +03:00
Lauri Ojansivu e01fd2b158 Updated ChangeLog. 2023-08-23 05:45:25 +03:00
Lauri Ojansivu 2d652df176 Renamed directory packages/meteor-fullcalendar to packages/wekan-fullcalendar.
Thanks to xet7 !
2023-08-23 05:40:48 +03:00
Lauri Ojansivu 777c8c1ae1 Merge branch 'fullcalendar' of https://github.com/helioguardabaxo/wekan 2023-08-23 05:22:35 +03:00
Lauri Ojansivu edcc937a6b Updated ChangeLog. 2023-08-23 04:13:14 +03:00
Lauri Ojansivu 873d8f16d8 Updated translations. 2023-08-23 02:29:48 +03:00
helioguardabaxo 9a505c7ccc Update FullCalendar version to 3.10.5 2023-08-22 18:51:03 -03:00
Lauri Ojansivu 65a231a040 Merge pull request #5098 from scout-ch/feature/default-board-for-users
Proposal: default board for users
2023-08-23 00:08:37 +03:00
Lauri Ojansivu daa57fd05e Updated translations. 2023-08-22 18:50:38 +03:00
Diego Steiner 72fa2972f0 fix: revert debugging output 2023-08-22 14:09:51 +02:00
Diego Steiner 00826660b4 feature: add user to default board after login 2023-08-22 14:06:49 +02:00
Lauri Ojansivu 8b12018e26 Updated ChangeLog. 2023-08-22 05:11:35 +03:00
Lauri Ojansivu 86814a0fd8 At opened card, toggle to show checklist at minicard. Part 4.
Thanks to xet7 !
2023-08-22 05:10:02 +03:00
Lauri Ojansivu 1a35db62b1 Updated translations. 2023-08-22 02:25:06 +03:00
Lauri Ojansivu 894ce65a79 Updated ChangeLog. 2023-08-22 02:19:38 +03:00
Lauri Ojansivu e60eddda04 Added show-subtasks-field to be translateable at Board Settings / Subtasks Settings.
Thanks to xet7 !
2023-08-22 02:18:08 +03:00
Lauri Ojansivu d9c26c7c49 Updated translations. 2023-08-22 01:34:41 +03:00
Lauri Ojansivu e5ddee13c1 Updated ChangeLog. 2023-08-22 01:33:18 +03:00
Lauri Ojansivu a415becbf7 Updated ChangeLog. 2023-08-22 01:31:52 +03:00
Lauri Ojansivu 80312d3052 At opened card, toggle to show checklist at minicard. Part 3.
Thanks to xet7 !
2023-08-22 01:30:58 +03:00
Lauri Ojansivu 1f216f5bff Updated ChangeLog. 2023-08-21 23:57:57 +03:00
Lauri Ojansivu 2c99d1cecb At opened card, toggle to show checklist at minicard. Part 2.
Thanks to xet7 !
2023-08-21 23:57:03 +03:00
Lauri Ojansivu 427eb8ebd1 Updated dependencies. 2023-08-21 23:28:34 +03:00
Lauri Ojansivu ac67a25891 Updated ChangeLog. 2023-08-21 22:42:31 +03:00
Lauri Ojansivu a5cb55935b Updated translations. 2023-08-21 22:40:15 +03:00
Lauri Ojansivu 2a190fdc19 At opened card, toggle to show checklist at minicard. Part 1.
Thanks to xet7 !
2023-08-21 22:34:59 +03:00
Lauri Ojansivu 66fa59d715 Updated ChangeLog. 2023-08-21 21:08:15 +03:00
Lauri Ojansivu 7f91055d8c Comment out warning about unset variable at ldap.js.
Thanks to xet7 !
2023-08-21 21:06:18 +03:00
Lauri Ojansivu 29f153d71d Updated ChangeLog. 2023-08-21 21:01:51 +03:00
Lauri Ojansivu 7c80a34cf2 In rebuild-wekan.sh, option 9 to Save Meteor dependency chain to ../meteor-deps.txt .
Thanks to xet7 !
2023-08-21 21:00:09 +03:00
Lauri Ojansivu 41cdfa4496 Updated ChangeLog. 2023-08-21 20:45:39 +03:00
Lauri Ojansivu e83945c1a6 Replaced ldap logger https://www.npmjs.com/package/bunyan with https://docs.meteor.com/packages/logging.html, because bunyan did show dtrace errors when building WeKan.
Thanks to xet7 !
2023-08-21 20:39:16 +03:00
Lauri Ojansivu a15c54833f Merge pull request #5097 from VidVidex/master
Correctly display preview for very tall images
2023-08-21 19:54:31 +03:00
Vid Smole cb2a683f0a Reformat file 2023-08-21 18:22:14 +02:00
Vid Smole db0c91fee5 Fix image sizing when image is very tall 2023-08-21 18:18:41 +02:00
Lauri Ojansivu 7d754a137c Updated release scripts.
Thanks to xet7 !
2023-08-21 01:15:06 +03:00
Lauri Ojansivu 8ea9780140 v7.09 2023-08-21 00:44:23 +03:00
Lauri Ojansivu 925099a1ee Merge pull request #5095 from mfilser/attachments-display_images_full_width
Attachments, big images are now fully displayed
2023-08-21 00:34:57 +03:00
Martin Filser 16a2cc6ba9 Attachments, big images are now fully displayed 2023-08-20 23:30:28 +02:00
Lauri Ojansivu 94bc6d8e45 Updated ChangeLog. 2023-08-20 23:58:47 +03:00
Lauri Ojansivu da28af516d Merge pull request #5094 from mfilser/reactiveCache-full_implementation_collection_translation
ReactiveCache, full implementation of the collection "Translation"
2023-08-20 23:01:09 +03:00
Martin Filser 73b5bbfc9e ReactiveCache, full implementation of the collection "Translation" 2023-08-20 21:37:25 +02:00
Lauri Ojansivu e2dde19db2 Merge pull request #5093 from mfilser/translation_client_side
Translations are working on the client side again
2023-08-20 22:20:48 +03:00
Martin Filser f421d135a6 Translations are working on the client side again 2023-08-20 19:31:48 +02:00
Lauri Ojansivu ae4232465b Updated ChangeLog. 2023-08-20 19:28:37 +03:00
Lauri Ojansivu 112b628a99 Merge pull request #5092 from mfilser/reactiveCache-use_ejson
ReactiveCache, serialize and parse json with EJSON
2023-08-20 19:24:39 +03:00
Martin Filser bf313ca842 ReactiveCache, serialize and parse json with EJSON
- date object wasn't serialized and parsed right
- fixes #5086
2023-08-20 18:21:18 +02:00
Lauri Ojansivu a0da05c660 Merge pull request #5091 from mfilser/reactiveCache-use_default_parameters
ReactiveCache, use default parameters
2023-08-20 18:48:46 +03:00
Martin Filser 394149b2e0 ReactiveCache, use default parameters
- it's not related to any known bug (as far as I know)
- it's only a good coding style to have default parameters
2023-08-20 16:21:04 +02:00
Lauri Ojansivu 9ce51d8db2 Updated translations. 2023-08-18 17:35:14 +03:00
Lauri Ojansivu 76591632c5 Updated ChangeLog. 2023-08-18 17:19:06 +03:00
Lauri Ojansivu b03ea37944 Merge pull request #5090 from DimDz/master
Move card to other boards API
2023-08-18 17:16:18 +03:00
Lauri Ojansivu 6e490b0f8d Updated translations. 2023-08-18 16:45:20 +03:00
DimDz 32e50b869d Added moveCard to editCard API 2023-08-18 15:48:49 +03:00
Lauri Ojansivu 6a38b9fb0f Updated translations. 2023-08-18 03:25:29 +03:00
Lauri Ojansivu 1f059898ca Updated translations. 2023-08-18 02:16:11 +03:00
Lauri Ojansivu cb4ce5cddf Updated ChangeLog. 2023-08-18 02:04:56 +03:00
Lauri Ojansivu 7dfb1eb6ce Fixed building s390x release. Part 2.
Thanks to xet7 !
2023-08-18 02:03:22 +03:00
Lauri Ojansivu 9857d4a5bf Updated ChangeLog. 2023-08-18 02:01:36 +03:00
Lauri Ojansivu 73f943f89a Fixed building s390x release.
Thanks to xet7 !
2023-08-18 02:00:12 +03:00
Lauri Ojansivu d5308d2d04 Updated translations. 2023-08-18 01:39:52 +03:00
Lauri Ojansivu b62221504d Updated ChangeLog. 2023-08-18 01:38:25 +03:00
Lauri Ojansivu 9d5af24e7b Upgraded Snap Candidate MongoDB to 6.0.9
Thanks to MongoDB developers !
2023-08-18 01:36:07 +03:00
Lauri Ojansivu fe20a5b54e Merge newest changes. 2023-08-18 01:08:36 +03:00
Lauri Ojansivu b068d07ce5 Updated release and startup scripts.
Thanks to xet7 !
2023-08-18 01:05:18 +03:00
Lauri Ojansivu a494c768f2 Merge newest changes. 2023-08-17 23:15:58 +03:00
Lauri Ojansivu 7b94188f64 Update release scripts. Part 5. 2023-08-17 23:14:23 +03:00
Lauri Ojansivu 249d3b0739 Merge branch 'master' of github.com:wekan/wekan 2023-08-17 23:09:27 +03:00
Lauri Ojansivu e181f3a385 v7.08 2023-08-17 23:08:48 +03:00
Lauri Ojansivu 90797066e7 Merge newest changes. 2023-08-17 23:07:33 +03:00
Lauri Ojansivu 13711f02b6 Updated translations. 2023-08-17 23:02:15 +03:00
Lauri Ojansivu f8adc3605a Updated ChangeLog. 2023-08-17 22:32:08 +03:00
Lauri Ojansivu f75fd82339 Merge pull request #5088 from VidVidex/master
Fix broken attachment preview in safari
2023-08-17 22:29:16 +03:00
Lauri Ojansivu 45edeccef9 Updated ChangeLog. 2023-08-17 22:24:19 +03:00
Vid Smole 6ffde36d84 Fix navigation between attachments 2023-08-17 21:21:56 +02:00
Vid Smole 17aa702860 Fix attachment viewer in safari 2023-08-17 21:21:31 +02:00
Lauri Ojansivu 4c7f1090fd v7.08 2023-08-17 21:48:00 +03:00
Lauri Ojansivu baf1ddc8e5 Merge pull request #5087 from ipyramiddev/master
Corrected source code so that it works correctly with reactiveCache
2023-08-17 21:24:32 +03:00
Yevhenii Pertiaka 38b1301258 Corrected source code so that it works correctly with reactiveCache #5000 2023-08-18 03:20:45 +09:00
Lauri Ojansivu f295f42363 Updated translations. 2023-08-17 21:02:50 +03:00
Lauri Ojansivu 0716eba84e Updated ChangeLog. 2023-08-17 20:25:12 +03:00
Lauri Ojansivu c47d5ca64e Update release scripts. Part 4. 2023-08-17 20:20:54 +03:00
Lauri Ojansivu 7d48fe4c23 Updated translations. 2023-08-17 20:15:59 +03:00
Lauri Ojansivu f4a6ce9f31 Updated ChangeLog. 2023-08-17 19:53:42 +03:00
Lauri Ojansivu c769bed7dd Added remaining translations to feature custom transaltion strings on Admin Panel.
Thanks to xet7 !
2023-08-17 19:49:29 +03:00
Yevhenii Pertiaka b1525d4221 Added new function to add cumstom translation strings on Admin panel 2023-08-17 21:54:14 +09:00
Lauri Ojansivu 4153fe7d0d Updated ChangeLog. 2023-08-17 00:23:16 +03:00
Lauri Ojansivu c570e426a1 Updated release scripts. Part 3. 2023-08-17 00:22:17 +03:00
Lauri Ojansivu 271877565b Updated ChangeLog. 2023-08-17 00:03:25 +03:00
Lauri Ojansivu d6b960f79a Updated release scripts. Part 2.
Thanks to xet7 !
2023-08-17 00:01:53 +03:00
Lauri Ojansivu be938ebd4b Updated ChangeLog. 2023-08-16 23:52:51 +03:00
Lauri Ojansivu 558d406148 Updated release scripts.
Thanks to xet7 !
2023-08-16 23:51:50 +03:00
Lauri Ojansivu f61b9239de v7.07 2023-08-16 22:51:44 +03:00
Lauri Ojansivu 409bd50d67 Updated ChangeLog. 2023-08-16 22:33:26 +03:00
Lauri Ojansivu 48dcd11af0 Add some filename, if there is no filename after sanitize.
Thanks to xet7 !

Related https://github.com/wekan/wekan/pull/5083
2023-08-16 22:32:40 +03:00
Lauri Ojansivu 08afc05c38 Updated ChangeLog. 2023-08-16 21:28:33 +03:00
Lauri Ojansivu 28e97808f5 Add warning to beginning of sanitized filename.
Thanks to xet7!

Related https://github.com/wekan/wekan/pull/5083
2023-08-16 21:28:03 +03:00
Lauri Ojansivu 8a1c2e8860 Merge pull request #5083 from VidVidex/master
Fix downloading attachments with unusual filenames [WIP]
2023-08-16 20:30:43 +03:00
Lauri Ojansivu 4b22174183 Updated ChangeLog. 2023-08-16 20:14:07 +03:00
Lauri Ojansivu 9bf3b960a1 s390x disabled, because there is problem adding fibers.
Thanks to xet7 !
2023-08-16 20:12:22 +03:00
Vid Smole fa58d0ec3b Rename files with possible XSS
Previously upload of such files would fail silently.
Now they are renamed to a sanitized version and a warning is printed in the console.
2023-08-16 18:51:40 +02:00
Lauri Ojansivu 03f7fd6340 Updated ChangeLog. 2023-08-16 19:44:06 +03:00
Lauri Ojansivu d48068f63c Update Windows bundle build script.
Thanks to xet7 !
2023-08-16 19:42:06 +03:00
Lauri Ojansivu 998f3fe8a7 v7.06 2023-08-15 14:46:59 +03:00
Lauri Ojansivu 81ece7cec2 Merge pull request #5080 from VidVidex/5074-swiping
Add attachment swiping
2023-08-14 16:46:42 +03:00
Vid Smole 30073ce1d6 Add attachment swiping 2023-08-14 15:38:13 +02:00
Lauri Ojansivu fc9fb9132c Updated translations. 2023-08-13 02:48:42 +03:00
Lauri Ojansivu 2f8c01eccf Updated ChangeLog. 2023-08-13 02:45:54 +03:00
Lauri Ojansivu 6d1705af34 Update building Windows bundle.
Thanks to xet7 !
2023-08-13 02:44:17 +03:00
Lauri Ojansivu fa6db6118d Updated translations. 2023-08-12 16:27:48 +03:00
Lauri Ojansivu f555acee6f Updated ChangeLog. 2023-08-09 22:24:08 +03:00
Lauri Ojansivu 4bc5799b4f Merge pull request #5075 from mfilser/label_drag_drop_and_reorder
label drag/drop (reorder labels) works now again
2023-08-09 21:26:49 +03:00
Martin Filser b2b8a99899 label drag/drop (reorder labels) works now again 2023-08-09 20:11:16 +02:00
Lauri Ojansivu 9641ac7ee8 Updated ChangeLog. 2023-08-09 16:56:35 +03:00
Lauri Ojansivu f9823f67bd Updated exceljs and jszip.
Thanks to developers of dependencies !
2023-08-09 16:54:27 +03:00
Lauri Ojansivu af14ff6e89 Updated translations. 2023-08-09 16:54:10 +03:00
Lauri Ojansivu 323f1b1d87 Updated ChangeLog. 2023-08-09 02:49:27 +03:00
Lauri Ojansivu 3e23a5ddce Merge pull request #5071 from chrisi51/alphabetic-order
Alphabetic ordered member lists on assigne and member lists
2023-08-09 02:40:45 +03:00
Christian 037bba83d6 Alphabetic ordered member lists on assigne and member lists 2023-08-08 23:24:35 +00:00
Lauri Ojansivu a60acac51a Updated ChangeLog. 2023-08-08 15:45:32 +03:00
Lauri Ojansivu eea0b1afc4 v7.05 2023-08-08 12:08:01 +03:00
Lauri Ojansivu 9a6d0c4aad Updated ChangeLog. 2023-08-08 11:58:39 +03:00
Lauri Ojansivu 1c530632ac Merge branch 'master' of https://github.com/chrisi51/wekan 2023-08-08 11:49:55 +03:00
Christian 18c49695b1 Optimize member list popups 2023-08-08 08:31:23 +00:00
Christian c8a743bb8e Fixing positioning of opened cards 2023-08-08 00:05:19 +00:00
Lauri Ojansivu 7e92068955 Updated dependencies. 2023-08-07 22:42:13 +03:00
Lauri Ojansivu 8c84254392 Updated ChangeLog. 2023-08-07 17:43:01 +03:00
Lauri Ojansivu 6b1403984f Fixed Normal (non-admin) board users cannot adjust swimlane height.
Thanks to mgdbbrt and xet7 !

Fixes #5063
2023-08-07 17:41:33 +03:00
Lauri Ojansivu c965cc9b76 Updated ChangeLog. 2023-08-07 17:15:28 +03:00
Lauri Ojansivu ab40737211 Show option b) -1 for disabling swimlane height at swimlane height popup.
Thanks to xet7 !
2023-08-07 17:12:49 +03:00
Lauri Ojansivu 950b477d9d Updated ChangeLog. 2023-08-07 17:02:13 +03:00
Lauri Ojansivu 529a43fa0e Updated dependencies. 2023-08-07 16:59:17 +03:00
Lauri Ojansivu eb16cd19bb Merge branch 'swimlane-default' of https://github.com/mark-i-m/wekan 2023-08-07 16:30:59 +03:00
Lauri Ojansivu fbd64a6a9e Updated translations. 2023-08-07 16:23:02 +03:00
mark 7536c7b532 allow -1 as 'auto' 2023-08-03 22:03:30 -05:00
mark 406766a82b make default swimlane auto-height 2023-08-03 22:03:30 -05:00
Lauri Ojansivu 5bb794e3bb v7.04 2023-08-03 22:21:18 +03:00
Lauri Ojansivu ee73e04004 Updated ChangeLog. 2023-08-03 22:18:37 +03:00
Lauri Ojansivu 672be413f7 Updated translations. 2023-08-03 22:17:03 +03:00
Lauri Ojansivu b0ba57a165 Updated ChangeLog. 2023-08-03 22:15:50 +03:00
Lauri Ojansivu 79c2301ad5 Updated dependencies. 2023-08-03 22:15:25 +03:00
Lauri Ojansivu b2c7be244e Updated translations. 2023-08-03 21:37:09 +03:00
Lauri Ojansivu 8f8c045930 Merge pull request #5058 from VidVidex/master
Do not open preview for attachments that cannot be previewed
2023-08-03 20:12:05 +03:00
Vid Smole 21ffff3977 Do not open preview for attachments that cannot be previewed 2023-08-03 18:57:12 +02:00
Lauri Ojansivu 7d1bca3702 Merge pull request #5056 from cloudron-io/login-layout-fixes-2
Login layout fixes 2
2023-08-03 18:38:29 +03:00
Johannes Zellner d93a58d892 Do not show OAuth2 in auth method dropdown as it has its own button 2023-08-03 17:17:08 +02:00
Johannes Zellner 99d9291a28 Never show the login form OR separator
So many states for with password enabled/disabled treated async
separately. Might be easier to bring back once password login is treated
like saml/ldap/... while still using the very same form elements
regardless
2023-08-03 17:00:34 +02:00
Johannes Zellner bda166ba50 Ensure we subscribe to currentSettings in login view 2023-08-03 16:53:23 +02:00
Johannes Zellner f190a102f9 formAuthenticationMethods is an array
part of #5051
2023-08-03 16:41:27 +02:00
Lauri Ojansivu d0ba89d913 Updated translations. 2023-08-03 12:53:38 +02:00
Lauri Ojansivu cb4f3c8895 Updated ChangeLog. 2023-08-03 12:50:44 +02:00
Lauri Ojansivu fd003f4402 Merge pull request #5055 from Pandetthe/master
Fix edit_swimlane
2023-08-03 13:46:27 +03:00
Jakub Jurczyk 3a22d4efdc Fix edit_swimlane 2023-08-03 12:44:22 +02:00
Lauri Ojansivu 48c763dbe3 v7.03 2023-08-02 20:27:39 +03:00
Lauri Ojansivu 10a9aef974 Updated translations. 2023-08-02 20:24:03 +03:00
Lauri Ojansivu eecb143977 Updated ChangeLog. 2023-08-02 20:22:33 +03:00
Lauri Ojansivu 767bbc5195 Merge pull request #5049 from cloudron-io/displayAuthenticationMethod-only-refers-to-select
Move authentication UI handling in correct place
2023-08-02 20:13:39 +03:00
Johannes Zellner b107fb0017 Move authentication UI handling in correct place
The connectionMethod component only deals with the authentication method
select input.

Fixes #5048
2023-08-02 18:36:15 +02:00
Lauri Ojansivu a94cc5351f Merge pull request #5047 from Pandetthe/master
Fix return value of edit_custom_field_dropdown_item
2023-08-02 15:26:45 +03:00
Jakub Jurczyk 7865368153 Fix return value of edit_custom_field_dropdown_item 2023-08-02 14:11:47 +02:00
522 changed files with 298328 additions and 4193 deletions

No files matched your search

+2
View File
@@ -20,6 +20,7 @@ ENV \
SRC_PATH=./ \
WITH_API=true \
RESULTS_PER_PAGE="" \
DEFAULT_BOARD_ID="" \
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3 \
ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60 \
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15 \
@@ -53,6 +54,7 @@ ENV \
OAUTH2_ENABLED=false \
OAUTH2_CA_CERT="" \
OAUTH2_ADFS_ENABLED=false \
OAUTH2_B2C_ENABLED=false \
OAUTH2_LOGIN_STYLE=redirect \
OAUTH2_CLIENT_ID="" \
OAUTH2_SECRET="" \
+4 -4
View File
@@ -1,14 +1,14 @@
## Issue
<!--
Please report these elsewhere:
- SECURITY ISSUES, PGP EMAIL: https://github.com/wekan/wekan/blob/main/SECURITY.md
- UCS: https://github.com/wekan/univention/issues
**[PLEASE UPGRADE](https://github.com/wekan/wekan/wiki/Backup)** to the newest WeKan ® before reporting an issue.
Please search existing Open and Closed issues, most questions have already been answered.
If you can not login for any reason: https://github.com/wekan/wekan/wiki/Forgot-Password
Email settings, only SMTP MAIL_URL and MAIL_FROM are in use: https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
The following types of issues should be reported separately:
- SECURITY ISSUES: https://github.com/wekan/wekan/blob/master/SECURITY.md
- UCS: https://github.com/wekan/univention/issues
-->
### Server Setup Information
-69
View File
@@ -1,69 +0,0 @@
name: "CodeQL"
on:
push:
branches: [master]
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
schedule:
- cron: '0 16 * * 3'
permissions:
contents: read
jobs:
analyze:
permissions:
actions: read # for github/codeql-action/init to get workflow details
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/autobuild to send a status report
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# Override automatic language detection by changing the below list
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
language: ['javascript', 'python']
# Learn more...
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
+2 -2
View File
@@ -9,6 +9,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: 'Dependency Review'
uses: actions/dependency-review-action@v3
uses: actions/dependency-review-action@v4
+6 -6
View File
@@ -9,11 +9,11 @@ on:
schedule:
- cron: '28 23 * * *'
push:
branches: [ master ]
branches: [ main ]
# Publish semver tags as releases.
tags: [ 'v*.*.*' ]
pull_request:
branches: [ master ]
branches: [ main ]
env:
# Use docker.io for Docker Hub if empty
@@ -32,13 +32,13 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
# Login against a Docker registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
@@ -48,14 +48,14 @@ jobs:
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@818d4b7b91585d195f67373fd9cb0332e31a7175
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- name: Build and push Docker image
uses: docker/build-push-action@2eb1c1961a95fc15694676618e422e8ba1d63825
uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
+2 -2
View File
@@ -3,7 +3,7 @@ name: Docker Image CI
on:
push:
branches:
- master
- main
permissions:
contents: read
@@ -15,6 +15,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Build the Docker image
run: docker build . --file Dockerfile --tag wekan:$(date +%s)
+3 -3
View File
@@ -3,7 +3,7 @@ name: Release Charts
on:
push:
branches:
- master
- main
permissions:
contents: read
@@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
@@ -25,6 +25,6 @@ jobs:
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.5.0
uses: helm/chart-releaser-action@v1.6.0
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+12 -12
View File
@@ -3,7 +3,7 @@ name: Test suite
on:
push:
branches:
- master
- main
pull_request:
permissions:
@@ -18,7 +18,7 @@ jobs:
# runs-on: ubuntu-latest
# steps:
# - name: checkout
# uses: actions/checkout@v3
# uses: actions/checkout@v4
#
# - name: setup node
# uses: actions/setup-node@v1
@@ -42,7 +42,7 @@ jobs:
# needs: [lintcode]
# steps:
# - name: checkout
# uses: actions/checkout@v3
# uses: actions/checkout@v4
#
# - name: setup node
# uses: actions/setup-node@v1
@@ -65,7 +65,7 @@ jobs:
# needs: [lintcode,lintstyle]
# steps:
# - name: checkout
# uses: actions/checkout@v3
# uses: actions/checkout@v4
#
# - name: setup node
# uses: actions/setup-node@v1
@@ -90,12 +90,12 @@ jobs:
# CHECKOUTS
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
# CACHING
- name: Install Meteor
id: cache-meteor-install
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/.meteor
key: v1-meteor-${{ hashFiles('.meteor/versions') }}
@@ -104,7 +104,7 @@ jobs:
- name: Cache NPM dependencies
id: cache-meteor-npm
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/.npm
key: v1-npm-${{ hashFiles('package-lock.json') }}
@@ -113,7 +113,7 @@ jobs:
- name: Cache Meteor build
id: cache-meteor-build
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: |
.meteor/local/resolver-result-cache.json
@@ -136,7 +136,7 @@ jobs:
run: sh ./test-wekan.sh -cv
- name: Upload coverage
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: coverage-folder
path: .coverage/
@@ -147,17 +147,17 @@ jobs:
needs: [tests]
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Download coverage
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: coverage-folder
path: .coverage/
- name: Coverage Report
uses: VeryGoodOpenSource/very_good_coverage@v2.1.0
uses: VeryGoodOpenSource/very_good_coverage@v2.2.0
with:
path: ".coverage/lcov.info"
min_coverage: 1 # TODO add tests and increase to 95!
+11 -90
View File
@@ -6,7 +6,7 @@
meteor-base@1.5.1
# Build system
ecmascript@0.16.7
ecmascript@0.16.8
standard-minifier-js@2.8.1
mquandalle:jade
coffeescript@2.4.1!
@@ -16,16 +16,15 @@ es5-shim@4.8.0
# Collections
aldeed:collection2
cfs:standard-packages
cottz:publish-relations
dburles:collection-helpers
idmontie:migrations
easy:search
mongo@1.16.7
mongo@1.16.8
mquandalle:collection-mutations
# Account system
accounts-password@2.3.4
accounts-password@2.4.0
useraccounts:core
useraccounts:flow-routing
useraccounts:unstyled
@@ -43,7 +42,7 @@ jquery@3.0.0!
random@1.2.1
reactive-dict@1.3.1
session@1.2.1
tracker@1.3.2
tracker@1.3.3
underscore@1.0.13
arillo:flow-router-helpers
audit-argument-checks@1.0.7
@@ -54,91 +53,11 @@ raix:handlebar-helpers
http@2.0.0! # force new http package
# Datepicker
rajit:bootstrap3-datepicker
rajit:bootstrap3-datepicker-de
rajit:bootstrap3-datepicker-tr
rajit:bootstrap3-datepicker-ja
rajit:bootstrap3-datepicker-fr
rajit:bootstrap3-datepicker-it
rajit:bootstrap3-datepicker-th
rajit:bootstrap3-datepicker-nl
rajit:bootstrap3-datepicker-es
rajit:bootstrap3-datepicker-lv
rajit:bootstrap3-datepicker-sv
rajit:bootstrap3-datepicker-gl
rajit:bootstrap3-datepicker-eu
rajit:bootstrap3-datepicker-vi
rajit:bootstrap3-datepicker-no
rajit:bootstrap3-datepicker-en-gb
rajit:bootstrap3-datepicker-ro
rajit:bootstrap3-datepicker-rs
rajit:bootstrap3-datepicker-ru
rajit:bootstrap3-datepicker-bs
rajit:bootstrap3-datepicker-mn
rajit:bootstrap3-datepicker-id
rajit:bootstrap3-datepicker-fa
rajit:bootstrap3-datepicker-ko
rajit:bootstrap3-datepicker-pt
rajit:bootstrap3-datepicker-sl
rajit:bootstrap3-datepicker-sq
rajit:bootstrap3-datepicker-cy
rajit:bootstrap3-datepicker-ka
rajit:bootstrap3-datepicker-sr
rajit:bootstrap3-datepicker-az
rajit:bootstrap3-datepicker-cs
rajit:bootstrap3-datepicker-me
rajit:bootstrap3-datepicker-ta
rajit:bootstrap3-datepicker-eo
rajit:bootstrap3-datepicker-oc
rajit:bootstrap3-datepicker-he
rajit:bootstrap3-datepicker-sw
rajit:bootstrap3-datepicker-rs-latin
rajit:bootstrap3-datepicker-da
rajit:bootstrap3-datepicker-pt-br
rajit:bootstrap3-datepicker-br
rajit:bootstrap3-datepicker-it-ch
rajit:bootstrap3-datepicker-en-za
rajit:bootstrap3-datepicker-en-ie
rajit:bootstrap3-datepicker-en-ca
rajit:bootstrap3-datepicker-uz-latn
rajit:bootstrap3-datepicker-ms
rajit:bootstrap3-datepicker-uk
rajit:bootstrap3-datepicker-hu
rajit:bootstrap3-datepicker-fo
rajit:bootstrap3-datepicker-kr
rajit:bootstrap3-datepicker-hi
rajit:bootstrap3-datepicker-km
rajit:bootstrap3-datepicker-fi
rajit:bootstrap3-datepicker-is
rajit:bootstrap3-datepicker-kh
rajit:bootstrap3-datepicker-bg
rajit:bootstrap3-datepicker-bn
rajit:bootstrap3-datepicker-pl
rajit:bootstrap3-datepicker-et
rajit:bootstrap3-datepicker-ar
rajit:bootstrap3-datepicker-ca
rajit:bootstrap3-datepicker-kk
rajit:bootstrap3-datepicker-sk
rajit:bootstrap3-datepicker-el
rajit:bootstrap3-datepicker-hy
rajit:bootstrap3-datepicker-hr
rajit:bootstrap3-datepicker-tg
rajit:bootstrap3-datepicker-nb
rajit:bootstrap3-datepicker-mk
rajit:bootstrap3-datepicker-nl-be
rajit:bootstrap3-datepicker-zh-cn
rajit:bootstrap3-datepicker-ar-tn
rajit:bootstrap3-datepicker-en-au
rajit:bootstrap3-datepicker-fr-ch
rajit:bootstrap3-datepicker-zh-tw
rajit:bootstrap3-datepicker-uz-cyrl
rajit:bootstrap3-datepicker-sr-latin
rajit:bootstrap3-datepicker-en-nz
wekan-bootstrap-datepicker
# UI components
ostrio:i18n
reactive-var@1.0.12
fortawesome:fontawesome
mousetrap:mousetrap
mquandalle:jquery-textcomplete
mquandalle:mousetrap-bindglobal
@@ -147,8 +66,6 @@ meteor-autosize
shell-server@0.5.0
email@2.2.5
dynamic-import@0.7.3
cfs:gridfs
rzymek:fullcalendar
msavin:usercache
# Keep stylus in 1.1.0, because building v2 takes extra 52 minutes.
meteorhacks:subs-manager
@@ -156,7 +73,6 @@ meteorhacks:aggregate@1.3.0
wekan-markdown
konecty:mongo-counter
percolate:synced-cron
cfs:filesystem
ostrio:cookies
ostrio:files@2.3.0
pascoual:pdfkit
@@ -167,9 +83,14 @@ matb33:collection-hooks
simple:json-routes
kadira:flow-router
spacebars
service-configuration@1.3.1
service-configuration@1.3.2
communitypackages:picker
minifier-css@1.6.4
blaze
kadira:blaze-layout
peerlibrary:blaze-components
ejson@1.1.3
logging@1.3.3
wekan-fullcalendar
momentjs:moment@2.29.3
wekan-fontawesome
+1 -1
View File
@@ -1 +1 @@
METEOR@2.13
METEOR@2.14
+28 -125
View File
@@ -1,6 +1,6 @@
accounts-base@2.2.8
accounts-oauth@1.4.2
accounts-password@2.3.4
accounts-base@2.2.10
accounts-oauth@1.4.3
accounts-password@2.4.0
aldeed:collection2@2.10.0
aldeed:collection2-core@1.2.0
aldeed:schema-deny@1.1.0
@@ -10,34 +10,16 @@ allow-deny@1.1.1
arillo:flow-router-helpers@0.5.2
audit-argument-checks@1.0.7
autoupdate@1.8.0
babel-compiler@7.10.4
babel-compiler@7.10.5
babel-runtime@1.5.1
base64@1.0.12
binary-heap@1.0.11
blaze@2.7.1
blaze-tools@1.1.3
boilerplate-generator@1.7.1
boilerplate-generator@1.7.2
caching-compiler@1.2.2
caching-html-compiler@1.2.1
callback-hook@1.5.1
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:filesystem@0.1.2
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.10
cfs:storage-adapter@0.2.4
cfs:tempstore@0.1.6
cfs:upload-http@0.0.20
cfs:worker@0.1.5
check@1.3.2
coffeescript@2.7.0
coffeescript-compiler@2.4.1
@@ -47,23 +29,22 @@ dburles:collection-helpers@1.1.0
ddp@1.4.1
ddp-client@2.6.1
ddp-common@1.4.0
ddp-rate-limiter@1.2.0
ddp-server@2.6.2
ddp-rate-limiter@1.2.1
ddp-server@2.7.0
deps@1.0.12
diff-sequence@1.1.2
dynamic-import@0.7.3
easy:search@2.2.1
easysearch:components@2.2.2
easysearch:core@2.2.2
ecmascript@0.16.7
ecmascript@0.16.8
ecmascript-runtime@0.8.1
ecmascript-runtime-client@0.12.1
ecmascript-runtime-server@0.11.0
ejson@1.1.3
email@2.2.5
es5-shim@4.8.0
fetch@0.1.3
fortawesome:fontawesome@4.7.0
fetch@0.1.4
geojson-utils@1.0.11
hot-code-push@1.0.4
html-tools@1.1.3
@@ -77,13 +58,12 @@ kadira:blaze-layout@2.3.0
kadira:dochead@1.5.0
kadira:flow-router@2.12.1
konecty:mongo-counter@0.0.5_3
livedata@1.0.18
lmieulet:meteor-coverage@1.1.4
localstorage@1.2.0
logging@1.3.2
matb33:collection-hooks@1.2.2
logging@1.3.3
matb33:collection-hooks@1.3.0
mdg:validation-error@0.5.1
meteor@1.11.3
meteor@1.11.5
meteor-autosize@5.0.1
meteor-base@1.5.1
meteorhacks:aggregate@1.3.0
@@ -97,11 +77,11 @@ minifier-css@1.6.4
minifier-js@2.7.5
minifiers@1.1.8-faster-rebuild.0
minimongo@1.9.3
modern-browsers@0.1.9
modules@0.19.0
modern-browsers@0.1.10
modules@0.20.0
modules-runtime@0.13.1
momentjs:moment@2.29.3
mongo@1.16.7
mongo@1.16.8
mongo-decimal@0.1.3
mongo-dev-server@1.1.0
mongo-id@1.0.8
@@ -114,8 +94,8 @@ mquandalle:jade-compiler@0.4.5
mquandalle:jquery-textcomplete@0.8.0_1
mquandalle:mousetrap-bindglobal@0.0.1
msavin:usercache@1.8.0
npm-mongo@4.16.0
oauth@2.2.0
npm-mongo@4.17.2
oauth@2.2.1
oauth2@1.3.2
observe-sequence@1.0.21
ongoworks:speakingurl@1.1.0
@@ -131,100 +111,19 @@ peerlibrary:blaze-components@0.23.0
peerlibrary:computed-field@0.10.0
peerlibrary:data-lookup@0.3.0
peerlibrary:reactive-field@0.6.0
percolate:synced-cron@1.3.2
percolate:synced-cron@1.5.2
promise@0.12.2
raix:eventemitter@0.1.3
raix:handlebar-helpers@0.2.5
rajit:bootstrap3-datepicker@1.7.1_1
rajit:bootstrap3-datepicker-ar@1.7.1
rajit:bootstrap3-datepicker-ar-tn@1.7.1
rajit:bootstrap3-datepicker-az@1.7.1
rajit:bootstrap3-datepicker-bg@1.7.1
rajit:bootstrap3-datepicker-bn@1.7.1
rajit:bootstrap3-datepicker-br@1.7.1
rajit:bootstrap3-datepicker-bs@1.7.1
rajit:bootstrap3-datepicker-ca@1.7.1
rajit:bootstrap3-datepicker-cs@1.7.1
rajit:bootstrap3-datepicker-cy@1.7.1
rajit:bootstrap3-datepicker-da@1.7.1
rajit:bootstrap3-datepicker-de@1.7.1
rajit:bootstrap3-datepicker-el@1.7.1
rajit:bootstrap3-datepicker-en-au@1.7.1
rajit:bootstrap3-datepicker-en-ca@1.7.1
rajit:bootstrap3-datepicker-en-gb@1.7.1
rajit:bootstrap3-datepicker-en-ie@1.7.1
rajit:bootstrap3-datepicker-en-nz@1.7.1
rajit:bootstrap3-datepicker-en-za@1.7.1
rajit:bootstrap3-datepicker-eo@1.7.1
rajit:bootstrap3-datepicker-es@1.7.1
rajit:bootstrap3-datepicker-et@1.7.1
rajit:bootstrap3-datepicker-eu@1.7.1
rajit:bootstrap3-datepicker-fa@1.7.1
rajit:bootstrap3-datepicker-fi@1.7.1
rajit:bootstrap3-datepicker-fo@1.7.1
rajit:bootstrap3-datepicker-fr@1.7.1
rajit:bootstrap3-datepicker-fr-ch@1.7.1
rajit:bootstrap3-datepicker-gl@1.7.1
rajit:bootstrap3-datepicker-he@1.7.1
rajit:bootstrap3-datepicker-hi@1.7.1
rajit:bootstrap3-datepicker-hr@1.7.1
rajit:bootstrap3-datepicker-hu@1.7.1
rajit:bootstrap3-datepicker-hy@1.7.1
rajit:bootstrap3-datepicker-id@1.7.1
rajit:bootstrap3-datepicker-is@1.7.1
rajit:bootstrap3-datepicker-it@1.7.1
rajit:bootstrap3-datepicker-it-ch@1.7.1
rajit:bootstrap3-datepicker-ja@1.7.1
rajit:bootstrap3-datepicker-ka@1.7.1
rajit:bootstrap3-datepicker-kh@1.7.1
rajit:bootstrap3-datepicker-kk@1.7.1
rajit:bootstrap3-datepicker-km@1.7.1
rajit:bootstrap3-datepicker-ko@1.7.1
rajit:bootstrap3-datepicker-kr@1.7.1
rajit:bootstrap3-datepicker-lv@1.7.1
rajit:bootstrap3-datepicker-me@1.7.1
rajit:bootstrap3-datepicker-mk@1.7.1
rajit:bootstrap3-datepicker-mn@1.7.1
rajit:bootstrap3-datepicker-ms@1.7.1
rajit:bootstrap3-datepicker-nb@1.7.1
rajit:bootstrap3-datepicker-nl@1.7.1
rajit:bootstrap3-datepicker-nl-be@1.7.1
rajit:bootstrap3-datepicker-no@1.7.1
rajit:bootstrap3-datepicker-oc@1.7.1
rajit:bootstrap3-datepicker-pl@1.7.1
rajit:bootstrap3-datepicker-pt@1.7.1
rajit:bootstrap3-datepicker-pt-br@1.7.1
rajit:bootstrap3-datepicker-ro@1.7.1
rajit:bootstrap3-datepicker-rs@1.7.1
rajit:bootstrap3-datepicker-rs-latin@1.7.1
rajit:bootstrap3-datepicker-ru@1.7.1
rajit:bootstrap3-datepicker-sk@1.7.1
rajit:bootstrap3-datepicker-sl@1.7.1
rajit:bootstrap3-datepicker-sq@1.7.1
rajit:bootstrap3-datepicker-sr@1.7.1
rajit:bootstrap3-datepicker-sr-latin@1.7.1
rajit:bootstrap3-datepicker-sv@1.7.1
rajit:bootstrap3-datepicker-sw@1.7.1
rajit:bootstrap3-datepicker-ta@1.7.1
rajit:bootstrap3-datepicker-tg@1.7.1
rajit:bootstrap3-datepicker-th@1.7.1
rajit:bootstrap3-datepicker-tr@1.7.1
rajit:bootstrap3-datepicker-uk@1.7.1
rajit:bootstrap3-datepicker-uz-cyrl@1.7.1
rajit:bootstrap3-datepicker-uz-latn@1.7.1
rajit:bootstrap3-datepicker-vi@1.7.1
rajit:bootstrap3-datepicker-zh-cn@1.7.1
rajit:bootstrap3-datepicker-zh-tw@1.7.1
random@1.2.1
rate-limit@1.1.1
react-fast-refresh@0.2.7
react-fast-refresh@0.2.8
reactive-dict@1.3.1
reactive-var@1.0.12
reload@1.3.1
retry@1.1.0
routepolicy@1.1.1
rzymek:fullcalendar@3.8.0
service-configuration@1.3.1
service-configuration@1.3.3
session@1.2.1
sha@1.0.9
shell-server@0.5.0
@@ -233,7 +132,7 @@ simple:json-routes@2.3.1
simple:rest-accounts-password@1.2.2
simple:rest-bearer-token-parser@1.1.1
simple:rest-json-error-handler@1.1.1
socket-stream-client@0.5.1
socket-stream-client@0.5.2
spacebars@1.4.1
spacebars-compiler@1.3.1
standard-minifier-js@2.8.1
@@ -242,22 +141,26 @@ templating@1.4.1
templating-compiler@1.4.1
templating-runtime@1.5.0
templating-tools@1.2.2
tracker@1.3.2
tracker@1.3.3
typescript@4.9.5
ui@1.0.13
underscore@1.0.13
url@1.3.2
useraccounts:core@1.16.2
useraccounts:flow-routing@1.15.0
useraccounts:unstyled@1.14.2
webapp@1.13.5
webapp@1.13.6
webapp-hashing@1.1.1
wekan-accounts-cas@0.1.0
wekan-accounts-lockout@1.0.0
wekan-accounts-oidc@1.0.10
wekan-accounts-sandstorm@0.8.0
wekan-bootstrap-datepicker@1.10.0
wekan-fontawesome@6.4.2
wekan-fullcalendar@3.10.5
wekan-ldap@0.0.2
wekan-markdown@1.0.9
wekan-oidc@1.0.12
yasaricli:slugify@0.0.7
zimme:active-route@2.3.2
zodern:types@1.0.9
zodern:types@1.0.10
+737 -19
View File
@@ -1,25 +1,743 @@
[Mac ChangeLog](https://github.com/wekan/wekan/wiki/Mac)
Newest Node.js is at https://github.com/wekan/node-v14-esm/releases/tag/v14.21.4
Newest WeKan at these amd64 platforms:
Required versions of Node.js, MongoDB etc are listed at https://wekan.github.io
Download section.
- Linux bundle
- Snap Candidate
- Docker
- Kubernetes
Newest WeKan is on platforms: Snap Candidate, Docker, Kubernetes, Source/Bundle. Download section at https://wekan.github.io
Fixing other platforms In Progress.
In Progress is:
- Getting newest WeKan to all platforms, fixing any migration and upgrade issues
- Adding more platforms
- Developing all paid features and fixes https://wekan.team/commercial-support/
- More info and news at https://github.com/wekan/wekan/issues/4578#issuecomment-1505909376
Note:
- Snap Candidate has newest WeKan with MongoDB 6 https://github.com/wekan/wekan/issues/4824#issuecomment-1425753485
- Snap Beta has old WeKan with MongoDB 5 https://github.com/wekan/wekan/issues/4780#issuecomment-1427625571
- Snap Stable has old WeKan 6.09 with MongoDB 3.2.2
- Install info at Server part of webpage https://wekan.github.io
- Newest Node.js is at https://github.com/wekan/node-v14-esm/releases/tag/v14.21.4
- MongoDB 6.x
[How to upgrade WeKan](https://github.com/wekan/wekan/issues/4585)
# v7.37 2024-03-07 WeKan ® release
This release fixes the following bugs:
- [Fixed API get swimlane cards wrong order. Please test](https://github.com/wekan/wekan/commit/7beced1e683c2eb2960b0ee40d5ec927d235fa6a).
Thanks to mohammadZahedian, xator91 and xet7.
- [Fixed API get_all_cards doesn't return SwimlaneId. Please test](https://github.com/wekan/wekan/commit/ffafb30b9b394188e1b60ec836ad83f1738c266d).
Thanks to mohammadZahedian, xator91 and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.36 2024-03-06 WeKan ® release
This release adds the following features:
- [api.py: checklistid, checklistinfo, get_list_cards_count and get_board_cards_count](https://github.com/wekan/wekan/pull/5326).
Thanks to xator91.
and fixes the following bugs:
- [Fixed Card image cover should be margin-top:6px since hamburger menu and due date at the top](https://github.com/wekan/wekan/commit/747bc4c08837ad9781d63b9f16b97a64b0bfe7b8).
Thanks to e-gaulue and xet7.
- [Try to fix API get cards wrong order. Please test](https://github.com/wekan/wekan/commit/c570405d0267e28f2b2644005d48fb097eac385b).
Thanks to mohammadZahedian, xator91 and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.35 2024-02-27 WeKan ® release
This release adds the following features and bugs:
- [Added back Mathjax that has bug of showing math twice](https://github.com/wekan/wekan/commit/f43dadc06894d874281ec0e449dcc4c81b3c59ad).
Thanks to macthecadillac, Dexus and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.34 2024-02-23 WeKan ® release
This release adds the following updates:
- [Updated translations](https://github.com/wekan/wekan/commit/3cd5d00b0b8d74acb2cd2afbc12f5b9d7aafcbd8).
Thanks to translators.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.33 2024-02-23 WeKan ® release
This release adds the following updates:
- [Updated docs for previous version of WeKan](https://github.com/wekan/wekan/commit/3b0616c1500b5070e660d2ba00968d59600958eb).
Thanks to xet7.
and fixes the following bugs:
- [OpenAPI: Fix breakage introduced with blank return](https://github.com/wekan/wekan/pull/5321).
Thanks to bentiss.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.32 2024-02-22 WeKan ® release
This release adds the following new features:
- [api.py: Added create label](https://github.com/wekan/wekan/pull/5308).
Thanks to xator91.
- [api.py: Edit card color](https://github.com/wekan/wekan/pull/5309).
Thanks to xator91.
- [api.py: Add checklist with multiple items also or just title](https://github.com/wekan/wekan/pull/5311).
Thanks to xator91.
- [api.py: Delete all cards. Will delete all cards from Swimlanes automatically, will retrieve automatically all list id and delete everything](https://github.com/wekan/wekan/pull/5313).
Thanks to xator91.
- [cards.js: Added a control to check error if card is not updated](https://github.com/wekan/wekan/pull/5312).
Thanks to xator91.
- [Shortcut a to filter by assignees](https://github.com/wekan/wekan/pull/5318).
Thanks to DevOpsNB.
and fixes the following bugs:
- [Fixed Error 500 when adding user to a board and multiple same avatar icons by reverting back from Meteor 2.15 to 2.14](https://github.com/wekan/wekan/commit/b5f4be36d4577c391ad19c5e5dd9de3036b8998f).
Thanks to xator91, mariogalan, bbyszio, zeo101, laurentm255, johnnytolengo and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.31 2024-02-17 WeKan ® release
This release adds the following new features:
- [api.py: Added getcard and cardsbyswimlane](https://github.com/wekan/wekan/pull/5287).
Thanks to xator91.
- [api.py: Add card with label and add a label to a card](https://github.com/wekan/wekan/pull/5290).
Thanks to xator91.
- [api.py: Fix BoardID to SwimlaneID in cardsbyswimlane](https://github.com/wekan/wekan/pull/5290).
Thanks to xator91.
- [boards.js: New update board title function for API](https://github.com/wekan/wekan/pull/5300).
Thanks to xator91.
- [api.py: EDIT BOARD TITLE](https://github.com/wekan/wekan/pull/5301).
Thanks to xator91.
and adds the following updates:
- [Release scripts: Commented out not currently in use builds of WeKan bundle](https://github.com/wekan/wekan/commit/4eb0085243672071a392dc32f77dba3103c592ab).
Thanks to xet7.
- [Try to fix Snap](https://github.com/wekan/wekan/commit/a54e52d34bdab02befda7eefad46d16814d2c46e).
Thanks to xet7.
- [Updated to Meteor 2.15-rc.1 and removed duplicate nodemailer package because of some errors](https://github.com/wekan/wekan/commit/59c42bc1a3a1792a50379be2f9251fce9b45c1a3).
Thanks to Meteor developers.
- [Updated to Meteor 2.15](https://github.com/wekan/wekan/commit/5198ee997cb43b503fcb2edaf781b0521d8096cd).
Thanks to Meteor developers.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.30 2024-01-28 WeKan ® release
This release adds the following updates:
- [Back to MongoDB 6.0.13](https://github.com/wekan/wekan/commit/64592d734cfdbe10b48c3aa3ea74e0ba35903976).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.29 2024-01-27 WeKan ® release
This release removes the following features:
- [Removed markdown-it-mathjax3](https://github.com/wekan/wekan/commit/19703fed311c894b61e9269cc0b973d0b0275a6a).
Thanks to Dexus and xet7.
and adds the following updates:
- [Updated to Meteor 2.14.1-beta.0](https://github.com/wekan/wekan/commit/28d640afb40f4d7c9070fa514c910fbf7065a724).
Thanks to Meteor developers.
- [Updated to MongoDB 7.0.5 at Snap Candidate and Docker](https://github.com/wekan/wekan/commit/f624211620c5e42ccdd6f931ba473be62437a62c).
Thanks to MongoDB developers.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.28 2024-01-23 WeKan ® release
This release adds the following new features:
- [Added archive option to of Wekan API](https://github.com/wekan/wekan/pull/5265).
Thanks to gustavengstrom.
and adds the following updates:
- Updated dependencies.
[Part 1](https://github.com/wekan/wekan/pull/5270),
[Part 2](https://github.com/wekan/wekan/pull/5271),
[Part 3](https://github.com/wekan/wekan/commit/67896adefc4a12a93fed7575f621f8aa924a2ab8).
Thanks to developers of dependencies.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.27 2024-01-02 WeKan ® release
This release fixes the following bugs:
- [Fix missing maximize card](https://github.com/wekan/wekan/commit/f10f80f6559a6cdee020d5ca34fd5991e07617cf).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.26 2024-01-02 WeKan ® release
This release fixes the following bugs:
-[Fix some public board buttons](https://github.com/wekan/wekan/commit/8ae47cb2f82bcc2078cc9c9987f7d7b7f6394493).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.25 2023-12-30 WeKan ® release
This release adds the following updates:
- [Snap: Organized file locations](https://github.com/wekan/wekan/commit/84a228fc1a7ced2b8b146795acc13eb5abb13d24).
Thanks to xet7.
- Updated GitHub Actions.
[Part 1](https://github.com/wekan/wekan/pulls/5243),
[Part 2](https://github.com/wekan/wekan/pulls/5244),
[Part 3](https://github.com/wekan/wekan/pulls/5245).
- [Updated percolate:synced-cron](https://github.com/wekan/wekan/commit/06397e9e11a689a0a2e6a95ae785749d5a6a695b).
Thanks to developers of percolate:synced-cron.
- Snap: Added MongoDB 3 binaries for migrating to MongoDB 6.
[Part 1](https://github.com/wekan/wekan/commit/805458a7638ff6213929bfa70a46b5afeacaedf1),
[Part 2](https://github.com/wekan/wekan/commit/335f0451e07d6ff924c0af3e5a934676c8e69f4c),
[Part 3](https://github.com/wekan/wekan/commit/374e67310723f3c0d3ab20f6b2e4bd0b273bce2b).
Thanks to xet7.
- [Updated dependencies](https://github.com/wekan/wekan/commit/0e6d83c0852b2da4430f9c902b84c16f5c2ee8bc).
Thanks to developers of dependencies.
and adds the following translations:
- [Translations: Added German (Germany) (de_DE) and Odia (India) (or_IN)](https://github.com/wekan/wekan/commit/23c2a2bc224e2def4722a35c20f32a21062b4154).
Thanks to translators.
and fixes the following bugs:
- [Fix: Export HTML popup](https://github.com/wekan/wekan/pull/5252).
Thanks to Lewiscowles1986.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.24 2023-12-17 WeKan ® release
This release adds the following new features:
- [Azure AD B2C login using OAuth2](https://github.com/wekan/wekan/commit/93be112a9454c894c1ce3146ed377e6a6aeca64a).
https://github.com/wekan/wekan/wiki/B2C .
Thanks to snowsky and xet7.
and adds the following updates:
- [Upgrade to Meteor 2.14](https://github.com/wekan/wekan/commit/75383fe477874a7aaf5caa3b913e2173694efe13).
Thanks to Meteor developers.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.23 2023-12-11 WeKan ® release
This release adds the following updates:
- [Updated security.md about mitm](https://github.com/wekan/wekan/commit/b4c9c1df9a7e89d263b1864407a7007338ce770d).
Thanks to xet7.
- [Upgraded to Meteor 2.14-rc.3](https://github.com/wekan/wekan/commit/6a3b8a668bc84c89714e44c3865168be81c8e2ed).
Thanks to Meteor developers.
- [Updated dependencies](https://github.com/wekan/wekan/commit/e3a0a480ed960d30fc80f7c7c1a6c7471368d0e8).
Thanks to developers of dependencies.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.22 2023-12-01 WeKan ® release
This release adds the following new features:
- [At right sidebar, moved Minicard Settings to Card Settings popup](https://github.com/wekan/wekan/commit/2f2a039e3c1957b8921f3800315508d4f51c21b7).
Thanks to Roemer and xet7.
- [New feature: Sidebar / Card Settings / Creator at minicard](https://github.com/wekan/wekan/commit/f3242869110738210b712761dda67fec34932307).
Thanks to Roemer and xet7.
and adds the following updates:
- [Upgraded to MongoDB 6.0.12 at Snap Candidate](https://github.com/wekan/wekan/commit/31ca78c17b0c734087cef99d481b939ac9533612).
Thanks to MongoDB developers.
and fixes the following bugs:
- [Fixed Markdown and copy buttons on top of text](https://github.com/wekan/wekan/commit/3cc10c77f99db344d0af3d6d862eb05c909fbf2c).
Thanks to mueller-ma and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.21 2023-11-27 WeKan ® release
This release adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/commit/fef0c0e490ef0d90b6504074312bf827ff5f2d61).
Thanks to developers of dependencies.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.20 2023-11-26 WeKan ® release
This release adds the following updates:
- [Added standard for public code assessment](https://github.com/wekan/wekan/commit/a307bfa1ec82b66d97714bff32d4201aa8e6e6f7).
Thanks to those that participated to making of assessment.
- [Upgraded to Meteor 2.14-beta.2](https://github.com/wekan/wekan/commit/126ddda45d07769f9fef67aa74241c9afa04b6a8).
Thanks to Meteor developers.
- [Upgraded to Meteor 2.14-beta.4](https://github.com/wekan/wekan/commit/d90ab03bbe9f13d211aaca2e72542386fdf2a6ba).
Thanks to Meteor developers.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.19 2023-11-20 WeKan ® release
This release adds the following new features:
- [Updated swimlane (restore and changed title) and board (changed title) webhooks](https://github.com/wekan/wekan/pull/5205).
Thanks to gustavengstrom.
- When user logins, "Automatically add user with the domain name" (at Admin Panel / Organizations) to Organization. In Progress.
[Part 1](https://github.com/wekan/wekan/commit/6e2f84673e98abec07a10c843ab83bed50774b35),
[Part 2](https://github.com/wekan/wekan/commit/9bc63669933bd763930add22ad7d05d89566d3ee).
Thanks to xet7.
- [Permissions for default board after OIDC/OAuth2 login](https://github.com/wekan/wekan/pull/5213).
Thanks to diegosteiner.
and adds the following updates:
- [Added governance.md](https://github.com/wekan/wekan/commit/2b1d2222cc900e8c815c30a4d07c897e30ba3636).
Thanks to xet7.
- Updated contributing.md.
[Part 1](https://github.com/wekan/wekan/commit/d840cb3be7b1788a4dbdd09ef45690afcf6b3dd4),
[Part 2](https://github.com/wekan/wekan/commit/e91e68c48c6392814fbc1362b7ae15ead34e7e47),
[Part 3](https://github.com/wekan/wekan/commit/026236edc962a8fc3863b9a4f7dc1d1f5dec3b5c),
[Part 4](https://github.com/wekan/wekan/commit/59874d16b9cf95ff05d92dd4d3bbdcb42fd37a94).
- [Updated security.md](https://github.com/wekan/wekan/commit/f047c6da295c4ab5ddc6d4d0a8137f419d8704d5).
- Updated code of conduct.md.
[Part 1](https://github.com/wekan/wekan/commit/c4293ecd95b9faec846060bcbcb8362cb58a54e6),
[Part 2](https://github.com/wekan/wekan/commit/f512047ac6439e53f92359f45ab907c629d225a9).
and fixes the following bugs:
- [Removed console.log](https://github.com/wekan/wekan/commit/0c54c1540c494bb7ffeb61a89cbc9a79c8f05d19).
Thanks to xet7.
- [Fix typos at oidc_server.js](https://github.com/wekan/wekan/commit/cd51ad75086950f29adf245b6d6c0b43e69da171).
Thanks to xet7.
- [Fix to not anymore show confusing Organization Id and Team Id fields at Admin Panel / People / People / Edit user](https://github.com/wekan/wekan/commit/6405c35bc08fc73657a4111c6fd72a8bd72ded70).
Thanks to xet7.
- [Fix to not anymore require website for Organization and Team](https://github.com/wekan/wekan/commit/d4d6a5f96d88a89eb47ee56ba9857e859203a53c).
Thanks to xet7.
- [Snap: Disable apparmor="DENIED" in syslog](https://github.com/wekan/wekan/commit/2048975e92152bb1c397b61fc2fd0a8124fade58).
Thanks to diegargon, webenefits and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.18 2023-11-14 WeKan ® release
This release adds the following new features:
- [Added restore list and changing list title to outgoing webhooks](https://github.com/wekan/wekan/pull/5198).
Thanks to gustavengstrom.
and adds the following updates:
- [Updated release scripts](https://github.com/wekan/wekan/commit/d4252f30567665897c6314b578dff1fe294265de).
Thanks to xet7.
and fixes the following bugs:
- [Add Docker label org.opencontainers.image.source](https://github.com/wekan/wekan/pull/5196).
Thanks to mueller-ma.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.17 2023-11-09 WeKan ® release
This release fixes the following bugs:
- [Fix move card rule on checklist complete doesn't work, with ReactiveMiniMongoIndex for Server-Side](https://github.com/wekan/wekan/pull/5194).
Thanks to mfilser.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.16 2023-11-09 WeKan ® release
This release fixes the following bugs:
- [Fix users.save is not a function](https://github.com/wekan/wekan/commit/42ece21fa14113a28792bf97dfd899a064f0ea56).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.15 2023-11-09 WeKan ® release
This release fixes the following bugs:
- [Fix missing profile/avatar pictures](https://github.com/wekan/wekan/commit/4e97a5351a4ac715d21503a129f12fe5bf3f4016).
Thanks to kovacs-andras and xet7.
- [Commented out links at My Cards Table, because they unexpectly caused to go elsewhere from current view](https://github.com/wekan/wekan/commit/2c36fe3d45a0f95f8ba18526ffd1dc230f6f46a8).
Thanks to xet7.
- [Add more Docker Labels to Dockerfile](https://github.com/wekan/wekan/commit/52e76c5496b6621916b61f35d5b68687685e0809).
Thanks to mueller-ma and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.14 2023-11-09 WeKan ® release
This release adds the following updates:
- [Upgraded to Meteor 2.14-beta.0](https://github.com/wekan/wekan/commit/55903472aae0032a49f03529cc9013007a20475e).
Thanks to Meteor developers.
and fixes the following bugs:
- [Removed double edit text from card description](https://github.com/wekan/wekan/commit/972981a57997fdaeb5202a3c588cd9eb83516360).
Thanks to derbolle and xet7.
- [Fix Notifications are identical until one is marked read](https://github.com/wekan/wekan/pull/5189).
Thanks to mfilser.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.12 2023-11-02 WeKan ® release
This release adds the following updates:
- [Updated Snap Candidate MongoDB to 6.0.11](https://github.com/wekan/wekan/commit/ff4c8a5d23d9315ad12970c35cf2928b204b073b).
Thanks to MongoDB developers.
and fixes the following bugs:
- [Fix Add List button too wide at themes: Clearblue, Modern, Exodark](https://github.com/wekan/wekan/commit/b756150f76c711cf93aa486a55d0e3340f558c01).
Thanks to xet7.
- [Fix Windows build bundle script](https://github.com/wekan/wekan/commit/720d4223e21da7fa6651dcb51def81a8e081750d).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.11 2023-11-02 WeKan ® release
Known issues: At some non-amd64 platforms, Node.js 14.x may show segmentation fault.
This will be fixed when upgrading to Node.js 18.x or newer works.
This release fixes the following CRITICAL SECURITY ISSUES:
- [Fix Security issue: Hyperlink injection](https://github.com/wekan/wekan/commit/4fe168b03b1f4303c2b117d24ad63ca9f40a02d2).
Thanks to mc-marcy and xet7.
and adds the following new features:
- [Feature: Convert to Markdown button at editor of Card Description and Comment. Useful when there is no WYSIWYG editor](https://github.com/wekan/wekan/commit/069e2c69b2e00e402628a3123164af257533ddc6).
Thanks to BabyFnord and xet7.
- [Feature: Copy Card Details code block to clipboard](https://github.com/wekan/wekan/commit/0cc63b810c5a9e23a8a3939a11176f25c1fa8dc7).
Thanks to C0rn3j and xet7.
and adds the following updates:
- [docker-compose.yml back to latest docker image tag](https://github.com/wekan/wekan/commit/cfa0a063ce4ac5b2dcfa9952764cb15ce21bc263).
Thanks to xet7.
- [Updated year at license](https://github.com/wekan/wekan/commit/0e902d73a881e4f1a17ee7f2028e1b041872ab61).
Thanks to xet7.
- [Updated screenshot at readme](https://github.com/wekan/wekan/commit/be72274ca515dc7b652cb1b93361e97089186166).
Thanks to xet7.
- [Added info to docker-compose.yml about newest docker image of newest git commit automatic build](https://github.com/wekan/wekan/commit/c9e80eaa03e42d1976576ad6553c056840f3060c).
Thanks to xet7.
- Updated SECURITY.md.
[Part 1](https://github.com/wekan/wekan/commit/aae7960f251fe626d8bb319643e4cd939a8fbfa9),
[Part 2](https://github.com/wekan/wekan/commit/f5355422ee21d54e26785f483a7eaecade3d1b64),
[Part 3](https://github.com/wekan/wekan/commit/fe985e219a9e467973e9449762fc17c6a94e9031),
[Part 4](https://github.com/wekan/wekan/commit/90da40fde0b2c68d3f751fe8ff2a06f3180cf6d9),
[Part 5](https://github.com/wekan/wekan/commit/2c74240bcb9d24e206ffe4e59bc8242a6abd07d9).
- Updated dependencies.
[Part 1](https://github.com/wekan/wekan/commit/c45bf4e36882c898055db248bf54a8e7e0add3c4),
[Part 1](https://github.com/wekan/wekan/commit/b08876327237c549783a2ee7d07db7f2dd0904a7),
[Part 1](https://github.com/wekan/wekan/commit/75de7b119d868e0e1ef650d7d795b7349b1c9281),
[Part 1](https://github.com/wekan/wekan/commit/974c17723705d58b660154bb2fd8997c018ddddc).
Thanks to developers of dependencies.
- [Docker base image to Ubuntu 23.10](https://github.com/wekan/wekan/commit/0f99f22fa5bfc7d3764de2a7f34165f699571449).
Thanks to Ubuntu developers.
- [Updated dependencies](https://github.com/wekan/wekan/commit/8323649cf098388684ea5e690dcb233171440345).
Thanks to zodern.
- [Updated dependencies](https://github.com/wekan/wekan/commit/b54d17467cd2868091c52240594630923875946c).
Thanks to exceljs developers.
and fixed the following bugs:
- [Fixed can not close sidebar at Modern theme](https://github.com/wekan/wekan/commit/53e569d28582a04d7bac49c23cd04ed8f546ed71).
Thanks to xet7.
- [Fix LDAP login](https://github.com/wekan/wekan/pull/5159).
Thanks to faburem.
- [Fix can't use card template](https://github.com/wekan/wekan/pull/5161).
Thanks to faburem.
- [Open card details always in the middle of the screen](https://github.com/wekan/wekan/pull/5168).
Thanks to mfilser.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.10 2023-09-29 WeKan ® release
This release adds the following new features:
- At opened card, toggle to show checklist at minicard.
[Part 1](https://github.com/wekan/wekan/commit/2a190fdc194ac2fc2d8086521c5a3eaa2aff0641),
[Part 2](https://github.com/wekan/wekan/commit/2c99d1cecbaab8556b65bce857b8d93c2cc62c37),
[Part 3](https://github.com/wekan/wekan/commit/80312d30520840145ee24042aca3ebeda3260d99),
[Part 4](https://github.com/wekan/wekan/commit/86814a0fd8615fde1867dcf2841b6a24fcfb105b),
[Part 5](https://github.com/wekan/wekan/commit/75d524f61558b2b6003220c43aa23adb142da91d),
[Part 6](https://github.com/wekan/wekan/commit/47468a475003c433db0fcc7735741e4548d6c19c).
Thanks to xet7.
- [Added show-subtasks-field to be translateable at Board Settings / Subtasks Settings](https://github.com/wekan/wekan/commit/e60eddda0440f49d769d73db212322d5ba994662).
Thanks to xet7.
- [After OIDC login, add users to board DEFAULT_BOARD_ID](https://github.com/wekan/wekan/pull/5098).
Thanks to diegosteiner.
- [Added DEFAULT_BOARD_ID environment variable setting to all WeKan platforms](https://github.com/wekan/wekan/commit/a781c0e7dcfdbe34c1483ee83cec12455b7026f7).
Thanks to xet7.
- [Make available translation text to set empty string](https://github.com/wekan/wekan/pull/5103).
Thanks to ipyramiddev.
- [Added a condition to filter unwanted webhooks](https://github.com/wekan/wekan/pull/5106).
Thanks to ipyramiddev.
- [Added docker-compose.yml-arm64](https://github.com/wekan/wekan/commit/e103bf46dd796b5c589b315ca68c7a60b5e388db).
Thanks to xet7.
and adds the following updates:
- [In rebuild-wekan.sh, option 9 to Save Meteor dependency chain to ../meteor-deps.txt](https://github.com/wekan/wekan/commit/7c80a34cf238cbccfe4fed0fb92cf73ddff6beed).
Thanks to xet7.
- [Update FullCalendar version to 3.10.5](https://github.com/wekan/wekan/pull/5100).
Thanks to helioguardabaxo.
- [Renamed directory packages/meteor-fullcalendar to packages/wekan-fullcalendar](https://github.com/wekan/wekan/commit/2d652df176b63f7cc27e9de51fbf2f2cbd52ef34).
Thanks to xet7.
- [Removed old demo API key to silence GitHub secret scanning warning](https://github.com/wekan/wekan/commit/c22e71e3a2175260e483a08026e1ea3446dc77fa).
Thanks to xet7.
- [Added assetlinks.json](https://github.com/wekan/wekan/commit/74b98a5ee40564448906f41cf66f93ee73faaea1).
Thanks to xet7.
- [Update translations. Added Afrikaans (af), Afrikaans (South africa)(af_ZA), English (South Africa)(en_ZA)](https://github.com/wekan/wekan/commit/ee4a3b5b35ade479b8ddf7cdedf56aa1ef676b3f).
Thanks to translators.
- Updated dependencies.
[Part 1](https://github.com/wekan/wekan/commit/4933bf8203dd615ca02963bd502a1cca2584bbac),
[Part 2](https://github.com/wekan/wekan/pull/5119).
[Part 3](https://github.com/wekan/wekan/pull/5129).
Thanks to developers of dependencies.
- [Update Font Awesome version to 6.4.2](https://github.com/wekan/wekan/pull/5125).
Thanks to helioguardabaxo.
- [Removed Font Awesome not in use directories svgs, scss and less](https://github.com/wekan/wekan/commit/473e2c28c6093403881515067e1b0560eddc85b2).
Thanks to xet7.
- [Add all Font Awesome characters](https://github.com/wekan/wekan/pull/5128).
Thanks to helioguardabaxo.
- [Update Bootstrap Datepicker version to 1.10.0](https://github.com/wekan/wekan/pull/5126).
Thanks to helioguardabaxo.
- [Removed non-existing sw translation and not needed files from bootstrap-datepicker](https://github.com/wekan/wekan/commit/dfe05cc924767e69f40a7332f0e0196ddf2bc8d5).
Thanks to xet7.
- [Upgraded to Meteor 2.13.3](https://github.com/wekan/wekan/commit/6b88ae2ba26427ab58597b580440e601fd77b320).
Thanks to Meteor developers.
- [Upgrade Snap Candidate to MongoDB 6.0.10](https://github.com/wekan/wekan/commit/522ab40f436be5656fd6fbd8057c6715afa2fa36).
Thanks to MongoDB developers.
- Renamed WeKan repo branch master to main.
[Part 1](https://github.com/wekan/wekan/commit/549982b5e10c240fb2358c21b0781fef2e63a2ba),
[Part 2](https://github.com/wekan/wekan/commit/fa32010a656a47a6fba9a625d6ab216c9b2034df),
[Part 3](https://github.com/wekan/wekan/commit/b68493b009bbbb63cf26c9020299762c2a2717aa).
Thanks to xet7.
- [Use newest Docker build from newest main branch commit at docker-compose.yml](https://github.com/wekan/wekan/commit/8cba42efbefeac159c0c653b53f6464a2fc5ed09).
Thanks to xet7.
- [Removed disabled codeql-analysis workflow](https://github.com/wekan/wekan/commit/240e05ba1640e92de639ddded5c4a20b32a74d2a).
Thanks to xet7.
- [Updated versions at Dockerfile](https://github.com/wekan/wekan/commit/637442563ea843a89396d557db3327c1775e6a12).
Thanks to xet7.
- [Fixed arm64 Dockerfile](https://github.com/wekan/wekan/commit/73e690a5fee24707377d3fe7985c52947cbc8929).
Thanks to manfromdownunder and xet7.
- [Added Dockerfile for s390x](https://github.com/wekan/wekan/commit/eacb310e59e03b44b0249206b28e4cb3adf163d0).
Thanks to xet7.
- [Updated dependencies](https://github.com/wekan/wekan/commit/52ce6da32c54d8c65ed679072c64fda66e1606a0).
Thanks to developers of dependencies.
and fixes the following bugs:
- [Correctly display preview for very tall images](https://github.com/wekan/wekan/pull/5097).
Thanks to VidVidex.
- Replaced ldap logger https://www.npmjs.com/package/bunyan with https://docs.meteor.com/packages/logging.html, because bunyan did show dtrace errors when building WeKan.
[Part 1](https://github.com/wekan/wekan/commit/e83945c1a6c08fe58f660bcd7b7f8494f629e913),
[Part 2](https://github.com/wekan/wekan/commit/427eb8ebd16b847eb278cd319adb75adc5206e99).
Thanks to xet7.
- [Comment out warning about unset variable at ldap.js](https://github.com/wekan/wekan/commit/7f91055d8c7ed508b2f6fca111f17ec1353c445a).
Thanks to xet7.
- [Removed CollectionFS and and attachment migrations, because they prevented using MONGO_URL username/passwrod with MongoDB 6.x, CollectionFS forced old MongoDB driver](https://github.com/wekan/wekan/commit/3b936ff6e7ed733a65488f1384f868e17b8ab751).
Thanks to xet7.
- [Hide incomplete feature Show checklist at minicard](https://github.com/wekan/wekan/commit/75d524f61558b2b6003220c43aa23adb142da91d).
Thanks to xet7.
- [Fix for CalendarView, Create Card without Refresh](https://github.com/wekan/wekan/pull/5105).
Thanks to DimDz.
- [Active members list now is ordered](https://github.com/wekan/wekan/pull/5107).
Thanks to helioguardabaxo.
- [Removed limit when setting Swimlane max height](https://github.com/wekan/wekan/commit/7f9aa7509314a85a550dd16615429c5e030b5f2b).
Thanks to Meeques, mark-i-m and xet7.
- [Fixed Can't login via LDAP because of some Node.js issues](https://github.com/wekan/wekan/commit/c898a3f5ea689469f4e1003b90162bd4233b6aeb).
Thanks to Danny-Graf and xet7.
- [Stop using /etc/timezone in Docker. Only use /etc/localtime](https://github.com/wekan/wekan/commit/7baa95fcab5447a359c84a2139b1968f0332f683).
Thanks to dabiao2008 and xet7.
- [Fix createCardWithDueDate Error: User id is required](https://github.com/wekan/wekan/commit/7d1ab0a38875909de02230e70181a7ddb5187870).
Thanks to xet7.
- [Fix Swimlane Default title from "key default returned an object instead of string" to translated title of "Default"](https://github.com/wekan/wekan/commit/73a25775e1cb7b1f1b355707e21e3704b98ca9c5).
Thanks to titho85, hpvb and xet7.
- [Fix allow normal user to view subtasks at subtasks board](https://github.com/wekan/wekan/commit/22d98fec38dd16b4cc8ad0fdca8c2973e9779e08).
Thanks to xet7.
- [Fix minicard description text color to black, so that it is visible at light grey background](https://github.com/wekan/wekan/commit/ab944e51c728412d455d88b5714e84393eccb210).
Thanks to xet7.
- [Fix mini width of add list also to moderndark theme](https://github.com/wekan/wekan/commit/05c6e101ff32efb42365ac2ffbd802497d5199ac).
Thanks to xet7.
- [Fixed typo at ldap.js](https://github.com/wekan/wekan/commit/c27a00a4a872cca280ee07079f93941bbee9844f).
Thanks to xet7.
- [Try to get some label outgoing webhooks working](https://github.com/wekan/wekan/commit/b40654cdfea61cd7a0a6c7f5efca86b62b3a2cbd).
Thanks to xet7.
- [Fix missing Font Awesome icons](https://github.com/wekan/wekan/pull/5133).
Thanks to helioguardabaxo.
- [Font Awesome 6.4.2 adding missing icons](https://github.com/wekan/wekan/pull/5134).
Thanks to mfilser.
- [Make sessinAffinity stickable to clientIP](https://github.com/wekan/wekan/pull/5136).
Thanks to Dexus.
- [Users can't change their password since V7.02](https://github.com/wekan/wekan/pull/5146).
Thanks to nebulade.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.09 2023-08-21 WeKan ® release
This release adds the following new features:
- [Move card to other boards API](https://github.com/wekan/wekan/pull/5090).
Thanks to DimDz.
and adds the following updates:
- [Upgraded Snap Candidate MongoDB to 6.0.9](https://github.com/wekan/wekan/commit/9d5af24e7b656c2bf6ad32bc8360bb80374408d6).
Thanks to MongoDB developers.
- Fixed building s390x release.
[Part 1](https://github.com/wekan/wekan/commit/73f943f89a89374a83cdfb31f0bfbfdfe4d6f52e),
[Part 2](https://github.com/wekan/wekan/commit/7dfb1eb6ce00166a6263f98b9bf975b8a84d1143).
Thanks to xet7.
- [ReactiveCache, use default parameters](https://github.com/wekan/wekan/pull/5091).
Thanks to mfilser.
- [ReactiveCache, serialize and parse json with EJSON](https://github.com/wekan/wekan/pull/5092).
Thanks to mfilser.
- [Translations are working on the client side again](https://github.com/wekan/wekan/pull/5093).
Thanks to mfilser.
- [ReactiveCache, full implementation of the collection "Translation"](https://github.com/wekan/wekan/pull/5094).
Thanks to mfilser.
- [Attachments, big images are now fully displayed](https://github.com/wekan/wekan/pull/5095).
Thanks to mfilser.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.08 2023-08-17 WeKan ® release
This release adds the following new features:
- [Custom translation strings at Admin Panel](https://github.com/wekan/wekan/pull/5085).
Thanks to ipyramiddev.
- [Added remaining translations to feature custom translation strings at Admin Panel](https://github.com/wekan/wekan/commit/c769bed7dd6d61b5f56e0ec5d43c9f2662a156d2).
Thanks to xet7.
- [Corrected source code so that it works correctly with reactiveCache](https://github.com/wekan/wekan/pull/5087).
Thanks to ipyramiddev.
and adds the following updates:
- Updated release scripts.
[Part 1](https://github.com/wekan/wekan/commit/558d406148eb47c27de9828b541f6081ceac224a),
[Part 2](https://github.com/wekan/wekan/commit/d6b960f79a5cb9db83587fae7d9c83d2ee63d90c),
[Part 3](https://github.com/wekan/wekan/commit/c570e426a1e6c4055a72a8ae6febce016c3eef5a),
[Part 4](https://github.com/wekan/wekan/commit/c47d5ca64e8c9c8a977d7dca5aeb92afb2e62fe5),
[Part 5](https://github.com/wekan/wekan/commit/7b94188f64e554be11bee244892a0cd9fefd0a9a),
[Part 6](https://github.com/wekan/wekan/commit/b068d07ce56add0fbd02a4a23fcb14d77bd9fcfd).
Thanks to xet7.
and fixes the following bugs:
- [Fix broken attachment preview in Safari](https://github.com/wekan/wekan/pull/5088).
Thanks to VidVidex.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.07 2023-08-16 WeKan ® release
This release adds the following updates:
- [Update Windows bundle build script](https://github.com/wekan/wekan/commit/d48068f63c93fc5a9f8041acb220d6491b5e22ae).
Thanks to xet7.
and fixes the following bugs:
- [Fix downloading attachments with unusual filenames](https://github.com/wekan/wekan/pull/5083).
Thanks to VidVidex.
- [Add some filename, if there is no filename after sanitize](https://github.com/wekan/wekan/commit/3d1a161c59a0cb4eafb50ab2fdb04443d54b2086).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.06 2023-08-15 WeKan ® release
This release adds the following updates:
- [Updated exceljs and jszip](https://github.com/wekan/wekan/commit/f9823f67bd7ded44982298b15487f945e8216b60).
Thanks to developers of dependencies.
- [Update building Windows bundle](https://github.com/wekan/wekan/commit/6d1705af344a36e1cd7846c3d41e486ae0200e2e).
Thanks to xet7.
- [s390x disabled, because there is problem adding fibers](https://github.com/wekan/wekan/commit/9bf3b960a199ec8d65faab3061947d809144ebdc).
Thanks to xet7.
and fixes the following bugs:
- [Alphabetic ordered member lists on assigne and member lists](https://github.com/wekan/wekan/pull/5071).
Thanks to chrisi51.
- [Label drag/drop (reorder labels) works now again](https://github.com/wekan/wekan/pull/5075).
Thanks to mfilser.
- [Add attachment swiping](https://github.com/wekan/wekan/pull/5080).
Thanks to VidVidex.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.05 2023-08-08 WeKan ® release
This release adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/commit/529a43fa0e47ff478dd6b2e6f1c7b4513fe0bbbb).
Thanks to developers of dependencies.
and fixes the following bugs:
- [Make default swimlane auto-height](https://github.com/wekan/wekan/pull/5059).
Thanks to mark-i-m.
- [Show option b) -1 for disabling swimlane height at swimlane height popup](https://github.com/wekan/wekan/commit/ab4073721151e1308b2e9ffd32a1ee765c7b7668).
Thanks to xet7.
- [Fixed Normal (non-admin) board users cannot adjust swimlane height](https://github.com/wekan/wekan/commit/6b1403984f3b11700f6b06b4eff64a062916381a).
Thanks to mgdbbrt and xet7.
- [Fixing positioning of opened cards](https://github.com/wekan/wekan/pull/5066).
Thanks to chrisi51.
- [Cleaner memberlist popups](https://github.com/wekan/wekan/issues/5068).
Thanks to chrisi51.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.04 2023-08-03 WeKan ® release
This release fixes the following bugs:
- [Fix edit_swimlane](https://github.com/wekan/wekan/pull/5055).
Thanks to Pandetthe.
. [Login layout fixes 2](https://github.com/wekan/wekan/pull/5056).
Thanks to nebulade.
- [Do not open preview for attachments that cannot be previewed](https://github.com/wekan/wekan/pull/5058).
Thanks to VidVidex.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.03 2023-08-02 WeKan ® release
This release fixes the following bugs:
- [Fix return value of edit_custom_field_dropdown_item](https://github.com/wekan/wekan/pull/5047).
Thanks to Pandetthe.
- [Move authentication UI handling in correct place](https://github.com/wekan/wekan/pull/5049).
Thanks to nebulade.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.02 2023-08-02 WeKan ® release
This release adds the following new features:
@@ -2446,7 +3164,7 @@ and adds the following accessibility improvements:
- Made WeKan zoomable by recommendation of Axe browser extension
https://github.com/wekan/wekan/issues/459#issuecomment-999098233 by changing meta viewport settings at
https://github.com/wekan/wekan/blob/master/client/components/main/layouts.jade#L3 ,
https://github.com/wekan/wekan/blob/main/client/components/main/layouts.jade#L3 ,
in some commit of this WeKan v5.88.
Thanks to xet7.
@@ -6300,7 +7018,7 @@ This release fixes the following CRITICAL SECURITY VULNERABILITIES:
- [Fix XSS bug reported today 4 hours ago by Cyb3rjunky](https://github.com/wekan/wekan/commit/482682e50079d70c5113169020d6834013b57c11).
Logged in users could run javascript in input fields.
This affects Wekan versions v3.12-v3.84.
In [Wekan v3.12](https://github.com/wekan/wekan/blob/master/CHANGELOG.md#v312-2019-08-09-wekan-release)
In [Wekan v3.12](https://github.com/wekan/wekan/blob/main/CHANGELOG.md#v312-2019-08-09-wekan-release)
there was [changes for XSS filter to allow inserting images, videos etc
on comment WYSIWYG editor](https://github.com/wekan/wekan/pull/2593)
so features related to that are now removed.
@@ -8766,7 +9484,7 @@ This release adds the following new features:
and fixes the following bugs:
- Revert [Sandstorm API changes](https://github.com/wekan/wekan/commit/be03a191c4321c2f80116c0ee1ae6c826d882535)
that were done at [Wekan v2.05](https://github.com/wekan/wekan/blob/master/CHANGELOG.md#v205-2019-01-27-wekan-release)
that were done at [Wekan v2.05](https://github.com/wekan/wekan/blob/main/CHANGELOG.md#v205-2019-01-27-wekan-release)
to fix #2143. Thanks to pantraining and xet7.
Thanks to above GitHub users and translators for contributions.
@@ -8913,7 +9631,7 @@ Update translations. Thanks to translators.
This release adds the following new features:
- [IFTTT Rules improvements](https://github.com/wekan/wekan/pull/2088). Thanks to Angtrim.
- Add [find.sh](https://github.com/wekan/wekan/blob/master/find.sh) bash script that ignores
- Add [find.sh](https://github.com/wekan/wekan/blob/main/find.sh) bash script that ignores
extra directories when searching. xet7 uses this a lot when developing. Thanks to xet7.
Thanks to above GitHub users for their contributions.
@@ -10424,7 +11142,7 @@ This release adds the following new features:
- [Checklist templates](https://github.com/wekan/wekan/pull/1470);
- Added [Finnish language changelog](https://github.com/wekan/wekan/tree/devel/meta/t9n-changelog)
and [more Finnish traslations](https://github.com/wekan/wekan/blob/master/sandstorm-pkgdef.capnp)
and [more Finnish traslations](https://github.com/wekan/wekan/blob/main/sandstorm-pkgdef.capnp)
to Sandstorm.
Thanks to GitHub users erikturk and xet7 for their contributions.
+22
View File
@@ -0,0 +1,22 @@
# Code of Conduct
For all code at WeKan GitHub Organization https://github.com/wekan
- All code in pull requests need to have permission already to add it to WeKan with MIT license, and will become MIT license.
- All code xet7 add is MIT license.
- For any dependencies, permissive licenses like https://copyfree.org are preferred
- For anything currently that is non-permissive (like GPL, AGPL, SSPL), those will be replaced with permissive-licensed alternatives
# Reporting about violations or something else
## Private reports
- Email support (at) wekan.team using [this PGP public key](support-at-wekan.team_pgp-publickey.asc) if possible
- Security issues: [SECURITY.md](SECURITY.md)
- License violations
- Anything private, sensitive or negative
## Public
- Feature Requests and Bug Reports https://github.com/wekan/wekan/issues
- Anything happy, positive, encouraging, helping, at friendly WeKan Global FOSS Community
+28 -10
View File
@@ -1,7 +1,27 @@
## About money
Not paid:
- Money is not paid for these, everyone uses their own time at their own cost:
- Security reports, see [SECURITY.md](SECURITY.md)
- Pull requests
- xet7 checking pull requests
- Public Community Support
- https://github.com/wekan/wekan/issues
Paid by customers of WeKan Team:
- Commercial Support at https://wekan.team/commercial-support/
- Support
- Private Chat
- Features
- Fixes
- Hosting
## Contributing Security related
For responsible security disclosure, please follow this process:
https://github.com/wekan/wekan/blob/master/SECURITY.md
https://github.com/wekan/wekan/blob/main/SECURITY.md
CVE Hall of Fame is at https://wekan.github.io/hall-of-fame/
@@ -22,7 +42,7 @@ https://github.com/wekan/wekan/issues
WeKan code contributors Hall of Fame is at ChangeLog, where
GitHub usernames are mentioned with changes added:
https://github.com/wekan/wekan/blob/master/CHANGELOG.md
https://github.com/wekan/wekan/blob/main/CHANGELOG.md
Changes can be like typo fixes, bugfixes, features, or anything else
like for example at open GitHub issues https://github.com/wekan/wekan/issues .
@@ -42,7 +62,7 @@ About 300 persons have contributed to WeKan, stats at:
https://www.openhub.net/p/wekan
WeKan maintainer xet7 checks PR for typos etc before accepting to WeKan,
WeKan maintainer xet7 reviews PR for typos etc before accepting to WeKan,
so that WeKan code will still work OK.
## Contributing translations
@@ -53,7 +73,7 @@ https://transifex.com/wekan/wekan
When adding new features, in your PR to
https://github.com/wekan/wekan/pulls
only add new English source language strings
to https://github.com/wekan/wekan/blob/master/imports/i18n/data/en.i18n.json
to https://github.com/wekan/wekan/blob/main/imports/i18n/data/en.i18n.json
Maintainer of WeKan xet7 downloads all newest
translations from Transifex and adds
@@ -62,12 +82,10 @@ new release.
## About WeKan Organization https://github.com/wekan
xet7 rarely adds any new members to GitHub Organization,
because xet7 prefers to check PRs.
Only xet7 has write access to WeKan Organization.
For some repos (other than https://github.com/wekan/wekan ),
some contributors have direct commit access.
xet7 reviews all PRs before merging.
Some contributors are mentioned at this outdated page:
There has been over 300 contributors to WeKan, newest stats at:
https://github.com/wekan/wekan/wiki/Team
https://www.openhub.net/p/wekan
+12 -7
View File
@@ -1,5 +1,8 @@
FROM --platform=linux/amd64 ubuntu:23.04 as wekan
LABEL maintainer="wekan"
FROM --platform=linux/amd64 ubuntu:23.10 as wekan
LABEL maintainer="wekan" \
org.opencontainers.image.ref.name="ubuntu" \
org.opencontainers.image.version="23.10" \
org.opencontainers.image.source="https://github.com/wekan/wekan"
# 2022-09-04:
# - above "--platform=linux/amd64 ubuntu:22.04 as wekan" is needed to build Dockerfile
@@ -22,15 +25,16 @@ ARG DEBIAN_FRONTEND=noninteractive
ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-essential git ca-certificates python3" \
DEBUG=false \
NODE_VERSION=v14.21.4 \
METEOR_RELEASE=METEOR@2.13 \
METEOR_RELEASE=METEOR@2.13.3 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
NPM_VERSION=latest \
NPM_VERSION=9.8.1 \
FIBERS_VERSION=4.0.1 \
ARCHITECTURE=linux-x64 \
SRC_PATH=./ \
WITH_API=true \
RESULTS_PER_PAGE="" \
DEFAULT_BOARD_ID="" \
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3 \
ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60 \
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15 \
@@ -65,6 +69,7 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
OIDC_REDIRECTION_ENABLED=false \
OAUTH2_CA_CERT="" \
OAUTH2_ADFS_ENABLED=false \
OAUTH2_B2C_ENABLED=false \
OAUTH2_LOGIN_STYLE=redirect \
OAUTH2_CLIENT_ID="" \
OAUTH2_SECRET="" \
@@ -210,7 +215,7 @@ RUN \
#paxctl -mC `which node` && \
\
# Install Node dependencies. Python path for node-gyp.
npm install -g npm@${NPM_VERSION} && \
#npm install -g npm@${NPM_VERSION} && \
\
# Change user to wekan and install meteor
cd /home/wekan/ && \
@@ -229,11 +234,11 @@ RUN \
mkdir -p /home/wekan/.npm && \
chown wekan --recursive /home/wekan/.npm /home/wekan/.config /home/wekan/.meteor && \
chmod u+w *.json && \
gosu wekan:wekan npm install && \
gosu wekan:wekan meteor npm install && \
gosu wekan:wekan /home/wekan/.meteor/meteor build --directory /home/wekan/app_build && \
cd /home/wekan/app_build/bundle/programs/server/ && \
chmod u+w *.json && \
gosu wekan:wekan npm install && \
gosu wekan:wekan meteor npm install && \
cd node_modules/fibers && \
node build.js && \
cd ../.. && \
+22 -36
View File
@@ -1,24 +1,18 @@
FROM amd64/alpine:3.7 AS builder
FROM arm64v8/ubuntu:23.04 AS builder
#FROM amd64/alpine:latest AS builder
# Set the environment variables for builder
ENV QEMU_VERSION=v4.2.0-6 \
ENV QEMU_VERSION=v7.2.0-1 \
QEMU_ARCHITECTURE=aarch64 \
NODE_ARCHITECTURE=linux-arm64 \
NODE_VERSION=v14.21.4 \
WEKAN_VERSION=latest \
WEKAN_ARCHITECTURE=arm64 \
NODE_OPTIONS="--max_old_space_size=4096"
#---------------------------------------------------------------------
# https://github.com/wekan/wekan/issues/3585#issuecomment-1021522132
# Add more Node heap:
# NODE_OPTIONS="--max_old_space_size=4096"
# Add more stack:
# bash -c "ulimit -s 65500; exec node --stack-size=65500 main.js"
#---------------------------------------------------------------------
WEKAN_ARCHITECTURE=arm64
# Install dependencies
RUN apk update && apk add ca-certificates outils-sha1 && \
#RUN apk update && apk add ca-certificates outils-sha1 && \
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
RUN apt update && apt install ca-certificates wget unzip -y && \
\
# Download qemu static for our architecture
wget https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-${QEMU_ARCHITECTURE}-static.tar.gz -O - | tar -xz && \
@@ -33,25 +27,27 @@ RUN apk update && apk add ca-certificates outils-sha1 && \
unzip wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip && \
\
# Download node and shasums
wget https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz && \
wget https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/SHASUMS256.txt && \
#wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz && \
#wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
#wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz && \
#wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
\
# Verify nodejs authenticity
grep node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz SHASUMS256.txt.asc | sha256sum -c - && \
grep node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz SHASUMS256.txt | sha256sum -c - && \
\
# Extract node and remove tar.gz
tar xvzf node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz
# Build wekan dockerfile
FROM arm64v8/ubuntu:19.10
FROM --platform=linux/arm64 arm64v8/ubuntu:23.04
LABEL maintainer="wekan"
# Set the environment variables (defaults where required)
ENV QEMU_ARCHITECTURE=aarch64 \
NODE_ARCHITECTURE=linux-arm64 \
NODE_VERSION=v14.21.3 \
NODE_VERSION=v14.21.4 \
NODE_ENV=production \
NPM_VERSION=latest \
WITH_API=true \
@@ -77,30 +73,20 @@ RUN \
ln -s /opt/nodejs/bin/node /usr/bin/node && \
ln -s /opt/nodejs/bin/npm /usr/bin/npm && \
mkdir -p /opt/nodejs/lib/node_modules/fibers/.node-gyp /root/.node-gyp/8.16.1 /home/wekan/.config && \
chown wekan --recursive /home/wekan/.config && \
\
# Install Node dependencies
npm install -g npm@${NPM_VERSION} && \
\
# Install Health Check dependencies
apk add curl
chown wekan --recursive /home/wekan/.config
HEALTHCHECK --start-period=30s --interval=30s --timeout=10s --retries=3 \
CMD curl --fail "http://localhost:$PORT" || exit 1
# \
# # Install Node dependencies
# #npm install -g npm@${NPM_VERSION} && \
# \
# # Install Health Check dependencies
# #apk add curl
#
#HEALTHCHECK --start-period=30s --interval=30s --timeout=10s --retries=3 \
# CMD curl --fail "http://localhost:$PORT" || exit 1
EXPOSE $PORT
USER wekan
#---------------------------------------------------------------------
# https://github.com/wekan/wekan/issues/3585#issuecomment-1021522132
# Add more Node heap:
# NODE_OPTIONS="--max_old_space_size=4096"
# Add more stack:
# bash -c "ulimit -s 65500; exec node --stack-size=65500 main.js"
#---------------------------------------------------------------------
#
#CMD ["node", "/home/wekan/bundle/main.js"]
#CMD ["bash", "-c", "ulimit -s 65500; exec node --stack-size=65500 /home/wekan/bundle/main.js"]
CMD ["bash", "-c", "ulimit -s 65500; exec node /home/wekan/bundle/main.js"]
+94
View File
@@ -0,0 +1,94 @@
FROM arm64v8/ubuntu:23.04 AS builder
#FROM --platform=linux/amd64 amd64/ubuntu:23.04 AS builder
#FROM --platform=linux/amd64 ghcr.io/wekan/wekan:main AS builder
#FROM arm64v8/ubuntu:23.04 AS builder
#FROM amd64/alpine:latest AS builder
# Set the environment variables for builder
ENV QEMU_VERSION=v7.2.0-1 \
QEMU_ARCHITECTURE=s390x \
NODE_ARCHITECTURE=linux-s390x \
NODE_VERSION=v14.21.4 \
WEKAN_VERSION=latest \
WEKAN_ARCHITECTURE=s390x
# Install dependencies
#RUN apk update && apk add ca-certificates outils-sha1 && \
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
RUN apt update && apt install ca-certificates wget unzip -y && \
\
# Download qemu static for our architecture
wget https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-${QEMU_ARCHITECTURE}-static.tar.gz -O - | tar -xz && \
\
# Download wekan and shasum
wget https://releases.wekan.team/${WEKAN_ARCHITECTURE}/wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip && \
wget https://releases.wekan.team/${WEKAN_ARCHITECTURE}/SHA256SUMS.txt && \
# Verify wekan
grep wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip SHA256SUMS.txt | sha256sum -c - && \
\
# Unzip wekan
unzip wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip && \
\
# Download node and shasums
wget https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz && \
wget https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/SHASUMS256.txt && \
#wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz && \
#wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
#wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz && \
#wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
\
# Verify nodejs authenticity
grep node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz SHASUMS256.txt | sha256sum -c - && \
\
# Extract node and remove tar.gz
tar xvzf node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz
# Build wekan dockerfile
FROM --platform=linux/s390x s390x/ubuntu:23.04
LABEL maintainer="wekan"
# Set the environment variables (defaults where required)
ENV QEMU_ARCHITECTURE=s390x \
NODE_ARCHITECTURE=linux-s390x \
NODE_VERSION=v14.21.4 \
NODE_ENV=production \
NPM_VERSION=latest \
WITH_API=true \
PORT=8080 \
ROOT_URL=http://localhost \
MONGO_URL=mongodb://127.0.0.1:27017/wekan
# Copy qemu-static to image
COPY --from=builder qemu-${QEMU_ARCHITECTURE}-static /usr/bin
# Copy the app to the image
COPY --from=builder bundle /home/wekan/bundle
# Copy
COPY --from=builder node-${NODE_VERSION}-${NODE_ARCHITECTURE} /opt/nodejs
RUN \
set -o xtrace && \
# Add non-root user wekan
useradd --user-group --system --home-dir /home/wekan wekan && \
\
# Install Node
ln -s /opt/nodejs/bin/node /usr/bin/node && \
ln -s /opt/nodejs/bin/npm /usr/bin/npm && \
mkdir -p /opt/nodejs/lib/node_modules/fibers/.node-gyp /root/.node-gyp/8.16.1 /home/wekan/.config && \
chown wekan --recursive /home/wekan/.config
# \
# # Install Node dependencies
# #npm install -g npm@${NPM_VERSION} && \
# \
# # Install Health Check dependencies
# #apk add curl
#
#HEALTHCHECK --start-period=30s --interval=30s --timeout=10s --retries=3 \
# CMD curl --fail "http://localhost:$PORT" || exit 1
EXPOSE $PORT
USER wekan
CMD ["bash", "-c", "ulimit -s 65500; exec node /home/wekan/bundle/main.js"]
+40
View File
@@ -0,0 +1,40 @@
# Future
## Moved Import/Export/Sync issues to Big Picture Roadmap wiki page
This change is limited to only Import/Export/Sync issues, while those are In Progress of being fixed.
2023-11-21 xet7 closed 261 issues that are linked at https://github.com/wekan/wekan/wiki/Sync ,
that is Roadmap of Import/Export/Sync in WeKan. It means, that those issues progress will be
updated at that wiki page, when xet7 and other WeKan contributors fix those.
Many of those issues are In Progress of being fixed and added.
## Platform Updates
Issues related to platforms are being closed, because only list of working platforms is mentioned now
at WeKan website https://wekan.github.io Install section and at [ChangeLog](https://github.com/wekan/wekan/blob/main/CHANGELOG.md)
where is this new text:
> Newest WeKan at amd64 platforms: Linux bundle, Snap Candidate, Docker, Kubernetes. Fixing other platforms In Progress.
Platform support changes often, because:
- There are many dependencies, that update or break or change often
- Node.js segfaults at some CPU/OS
- Some platforms have build errors
Roadmap is to update all existing platforms, and add more platforms.
Upcoming platform upgrades:
- Fix migrations, so that newest WeKan can be released to Snap Stable. (Currently newest is at Snap Candidate).
## WeKan features
Most Meteor WeKan features are listed here:
https://github.com/wekan/wekan/wiki/Deep-Dive-Into-WeKan
Remaining features and all changes are listed here:
https://github.com/wekan/wekan/blob/main/CHANGELOG.md
+10
View File
@@ -0,0 +1,10 @@
# Governance
Anyone can send pull request to https://github.com/wekan/wekan/wiki/pulls ,
if there is permission to add code to WeKan with MIT license.
As maintainer, xet7 checks all pull requests and merges them.
Only xet7 has write access to repo https://github.com/wekan/wekan
+1 -1
View File
@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2014-2019 The Wekan Team
Copyright (c) 2014-2023 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
+17 -6
View File
@@ -2,19 +2,30 @@
# WeKan ® - Open Source kanban
## Downloads
https://wekan.github.io / Install WeKan ® Server
## Docker Containers
- [GitHub](https://github.com/wekan/wekan/pkgs/container/wekan)
- [Quay](https://quay.io/repository/wekan/wekan)
- [Docker Hub](https://hub.docker.com/r/wekanteam/wekan)
Other platforms and compatible software versions at https://wekan.github.io Download section.
docker-compose.yml at https://github.com/wekan/wekan
## Standards
- [WeKan and Standard for Public Code](https://wekan.github.io/standard-for-public-code/) assessment was made at 2023-11.
Currently Wekan meets 8 out of 16 criteria out of the box.
Some others could be met with small changes.
## Code stats
- [CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4619)
- [Code Climate](https://codeclimate.com/github/wekan/wekan)
- [Open Hub](https://www.openhub.net/p/wekan)
- [OSS Insight](https://ossinsight.io/analyze/wekan/wekan)
- [CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4619)
## [Translate WeKan ® at Transifex](https://app.transifex.com/wekan/)
@@ -70,14 +81,14 @@ that by providing one-click installation on various platforms.
[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), bundle for RasPi3 ARM and other CPUs where Node.js and MongoDB exists.
- 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/master/docker-compose.yml): 3 frontend servers,
For thousands of users, for example with [Docker](https://github.com/wekan/wekan/blob/main/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/master/CHANGELOG.md).
New features and fixes are added to WeKan ® [many times a day](https://github.com/wekan/wekan/blob/main/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.
@@ -89,7 +100,7 @@ that by providing one-click installation on various platforms.
[Developer Documentation][dev_docs]
- 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/master/CHANGELOG.md).
[many times a day](https://github.com/wekan/wekan/blob/main/CHANGELOG.md).
- [Please add Add new Feature Requests and Bug Reports immediately](https://github.com/wekan/wekan/issues).
- [Commercial Support](https://wekan.team/commercial-support/).
@@ -109,7 +120,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]: https://wekan.github.io/wekan-markdown.png
[screenshot_wekan]: https://wekan.github.io/wekan-dark-mode.png
[features]: https://github.com/wekan/wekan/wiki/Features
[roadmap_wekan]: https://boards.wekan.team/b/D2SzJKZDS4Z48yeQH/wekan-open-source-kanban-board-with-mit-license
[wekan_issues]: https://github.com/wekan/wekan/issues
+125 -28
View File
@@ -1,3 +1,5 @@
About money, see [CONTRIBUTING.md](CONTRIBUTING.md)
Security is very important to us. If you discover any issue regarding security, please disclose
the information responsibly by sending an email to support (at) wekan.team using
[this PGP public key](support-at-wekan.team_pgp-publickey.asc) and not by
@@ -29,7 +31,7 @@ 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
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.
@@ -48,31 +50,132 @@ 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 is used at most countries of the world https://snapcraft.io/wekan
and by by companies that have 30k users.
Wekan uses xss package for input fields like cards, as you can see from
[package.json](https://github.com/wekan/wekan/blob/master/package.json). Other used versions can be seen from
[Meteor versions file](https://github.com/wekan/wekan/blob/master/.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 private board attachments are not accessible without logging in.
- There is feature to set board public, so that board is visible without logging in in readonly mode, with realtime updates.
- Admin Panel has feature to disable all public boards, so all boards are private.
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.
## SSL/TLS
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/master/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/).
- SSL/TLS encrypts traffic between webbrowser and webserver.
- If you are thinking about TLS MITM, look at https://github.com/caddyserver/caddy/issues/2530
- Let's Encrypt TLS requires publicly accessible webserver, that Let's Encrypt TLS validation servers check.
- If firewall limits to only allowed IP addresses, you may need non-Let's Encrypt TLS cert.
- For On Premise:
- https://caddyserver.com/docs/automatic-https#local-https
- https://github.com/wekan/wekan/wiki/Caddy-Webserver-Config
- https://github.com/wekan/wekan/wiki/Azure
- https://github.com/wekan/wekan/wiki/Traefik-and-self-signed-SSL-certs
[All Wekan Platforms](https://github.com/wekan/wekan/wiki/Platforms)
## XSS
- Dompurify https://www.npmjs.com/package/dompurify
- WeKan uses dompurify npm package to filter for XSS at fields like cards, as you can see from
[package.json](https://github.com/wekan/wekan/blob/main/package.json). Other used versions can be seen from
[Meteor versions file](https://github.com/wekan/wekan/blob/main/.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.
- Dompurify cleans up viewed code, so Javascript in input fields does not execute
- https://wekan.github.io/hall-of-fame/fieldbleed/
- Reaction in comment is now checked, that it does not have extra added code
- https://wekan.github.io/hall-of-fame/reactionbleed/
- https://github.com/wekan/wekan/blob/main/packages/markdown/src/template-integration.js#L76
## QA about PubSub
Q:
Hello,
I have just seen the Meteor DevTools Evolved extension and was wondering if anyone had asked themselves the question of security.
Insofar as all data is shown in the minimongo tab in plain text.
How can data be hidden from this extension?
A:
## PubSub
- It is not security issue to show some text or image, that user has permission to see. It is a security issue, if browserside is some text or image that user should not see.
- Meteor has browserside minimongo database, made with Javascript, updated with Publish/Subscribe, PubSub.
- Publish/Subscribe means, that realtime web framework reads database changes stream, and then immediately updates webpage,
like like dashboards, chat, kanban. That is the point in any realtime web framework in any programming language.
- Yes, you should check with Meteor DevTools Evolved Chromium/Firefox extension that at minimongo is only text that user has permission to see.
- Do checking as logged in user, and logged out user.
- Check permissions and sanitize before allowing some change, because someone could modify content of input field,
PubSub/websocket data (for example with Burp Suite Community Edition), etc.
- If you have REST API, also check that only those that have login token, and have permission, can view or edit text
- You should not include any data user is not allowed to see. Not to webpage text, not to websockets/PubSub, etc.
- Minimongo should not have password hashes PubSub https://wekan.github.io/hall-of-fame/userbleed/
- PubSub uses Websockets, so you need those to be enabled at webserver like Caddy/Nginx/Apache etc, examples of settings
at right menu of https://github.com/wekan/wekan/wiki
- Clientside https://github.com/wekan/wekan/tree/main/client/components subscribes to
PubSub https://github.com/wekan/wekan/tree/main/server/publications or calls meteor methods at https://github.com/wekan/wekan/tree/main/models
- For Admin:
- You can have input field for password https://github.com/wekan/wekan/blob/main/client/components/cards/attachments.js#L303-L312
- You can save password to database https://github.com/wekan/wekan/blob/main/client/components/cards/attachments.js#L303-L312
- Check that only current user or Admin can change password https://github.com/wekan/wekan/blob/main/client/components/cards/attachments.js#L303-L312
- Note that currentUser uses code like Meteor.user() in .js file
- Do not have password hashes in PubSub https://github.com/wekan/wekan/blob/main/server/publications/users.js
- Only show Admin Panel to Admin https://github.com/wekan/wekan/blob/main/client/components/settings/settingBody.jade#L3
- If there is a lot of data, use pagination https://github.com/wekan/wekan/blob/main/client/components/settings/peopleBody.js
- Only have limited amount of data published in PubSub. Limit in MongoDB query in publications how much is published. Too much could make browser too slow.
- Use Environment variables for any email etc passwords.
- But what if you would like to remove minimongo? And only use Meteor methods for saving? In that case, you don't have realtime updates,
and you need to write much more code to load and save data yourself, handle any multi user data saving conflicts yourself,
and many Meteor Atmospherejs.com PubSub using packages would not work anymore https://github.com/wekan/we
## PubSub: Fix that user can not change to Admin
- With PubSub, there is checking, that someone modifying Websockets content, like permission isAdmin, can not change to Admin.
- https://github.com/wekan/wekan/commit/cbad4cf5943d47b916f64b4582f8ca76a9dfd743
- https://wekan.github.io/hall-of-fame/adminbleed/
## Permissions and Roles
- For any user permissions, it's best to use Meteor package package https://github.com/Meteor-Community-Packages/meteor-roles .
- Currently WeKan has custom hardcoded permissions, WeKan does not yet use that meteor-roles package.
- Using permissions at WeKan sidebar https://github.com/wekan/wekan/blob/main/client/components/sidebar/sidebar.js#L1854-L1875
- List of roles https://github.com/wekan/wekan/wiki/REST-API-Role . Change at board or Admin Panel. Also Organizations/Teams.
- Worker role: https://github.com/wekan/wekan/issues/2788
- Not implemented yet: Granular Roles https://github.com/wekan/wekan/issues/3022
- Check is user logged in, with `if (Meteor.user()) {`
- Check is code running at server `if (Meteor.isServer()) {` or client `if Meteor.isClient()) {` .
- Here is some authentication code https://github.com/wekan/wekan/blob/main/server/authentication.js
## Environment variables
- For any passwords, use environment variables, those are serverside
- Do not copy environment variable to public variable that is visible browserside https://github.com/wekan/wekan/blob/main/server/max-size.js
```
Meteor.startup(() => {
if (process.env.HEADER_LOGIN_ID) {
Meteor.settings.public.attachmentsUploadMaxSize = process.env.ATTACHMENTS_UPLOAD_MAX_SIZE;
Meteor.settings.public.attachmentsUploadMimeTypes = process.env.ATTACHMENTS_UPLOAD_MIME_TYPES;
Meteor.settings.public.avatarsUploadMaxSize = process.env.AVATARS_UPLOAD_MAX_SIZE;
```
- For serverside, you can set Meteor.settings.variablename, without text public
- For WeKan kanban, there is feature for setting board public, it can be viewed by anyone, there is realtime updates. But
- Some of those permissions are checked at users.js models at https://github.com/wekan/wekan/tree/main/models
- Environment variables are used for email server passwords, etc, at all platforms https://github.com/wekan/wekan/commit/a781c0e7dcfdbe34c1483ee83cec12455b7026f7
## Escape HTML comment tags so that HTML comments are visible
- Someone reported, that it is problem that content of HTML comments in edit mode, are not visible at at view mode, so this makes HTML comments visible.
- https://github.com/wekan/wekan/commit/167863d95711249e69bb3511175d73b34acbbdb3
- https://wekan.github.io/hall-of-fame/invisiblebleed/
## Attachments: XSS in filename is sanitized
- https://github.com/wekan/wekan/blob/main/client/components/cards/attachments.js#L303-L312
- https://wekan.github.io/hall-of-fame/filebleed/
## Brute force login protection
- https://github.com/wekan/wekan/commit/23e5e1e3bd081699ce39ce5887db7e612616014d
- https://github.com/wekan/wekan/tree/main/packages/wekan-accounts-lockout
### Sandstorm Wekan Security
@@ -105,12 +208,6 @@ a security issue, we'd like to know about it, and also how to fix it:
Typical already known or "no impact" bugs such as:
- Brute force password guessing. Currently there is
[brute force protection with eluck:accounts-lockout](https://github.com/wekan/wekan/blob/master/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
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v7.02.0"
appVersion: "v7.37.0"
files:
userUploads:
- README.md
+327 -2
View File
@@ -37,9 +37,23 @@ If *nix: chmod +x api.py => ./api.py users
python3 api.py customfields BOARDID # Custom Fields of BOARDID
python3 api.py customfield BOARDID CUSTOMFIELDID # Info of CUSTOMFIELDID
python3 api.py addcustomfieldtoboard AUTHORID BOARDID NAME TYPE SETTINGS SHOWONCARD AUTOMATICALLYONCARD SHOWLABELONMINICARD SHOWSUMATTOPOFLIST # Add Custom Field to Board
python3 api.py editcustomfield BOARDID LISTID CARDID CUSTOMFIELDID NEWCUSTOMFIELDVALUE
python3 api.py editcustomfield BOARDID LISTID CARDID CUSTOMFIELDID NEWCUSTOMFIELDVALUE # Edit Custom Field
python3 api.py listattachments BOARDID # List attachments
python3 api.py cardsbyswimlane SWIMLANEID LISTID # Retrieve cards list on a swimlane
python3 api.py getcard BOARDID LISTID CARDID # Get card info
python3 api.py addlabel BOARDID LISTID CARDID LABELID # Add label to a card
python3 api.py addcardwithlabel AUTHORID BOARDID SWIMLANEID LISTID CARDTITLE CARDDESCRIPTION LABELIDS # Add a card and a label
python3 api.py editboardtitle BOARDID NEWBOARDTITLE # Edit board title
python3 api.py createlabel BOARDID LABELCOLOR LABELNAME (Color available: `white`, `green`, `yellow`, `orange`, `red`, `purple`, `blue`, `sky`, `lime`, `pink`, `black`, `silver`, `peachpuff`, `crimson`, `plum`, `darkgreen`, `slateblue`, `magenta`, `gold`, `navy`, `gray`, `saddlebrown`, `paleturquoise`, `mistyrose`, `indigo`) # Create a new label
python3 api.py editcardcolor BOARDID LISTID CARDID COLOR (Color available: `white`, `green`, `yellow`, `orange`, `red`, `purple`, `blue`, `sky`, `lime`, `pink`, `black`, `silver`, `peachpuff`, `crimson`, `plum`, `darkgreen`, `slateblue`, `magenta`, `gold`, `navy`, `gray`, `saddlebrown`, `paleturquoise`, `mistyrose`, `indigo`) # Edit card color
python3 api.py addchecklist BOARDID CARDID TITLE ITEM1 ITEM2 ITEM3 ITEM4 (You can add multiple items or just one, or also without any item, just TITLE works as well. * If items or Title contains spaces, you should add ' between them.) # Add checklist + item on a card
python3 api.py deleteallcards BOARDID SWIMLANEID ( * Be careful will delete ALL CARDS INSIDE the swimlanes automatically in every list * ) # Delete all cards on a swimlane
python3 api.py checklistid BOARDID CARDID # Retrieve Checklist ID attached to a card
python3 api.py checklistinfo BOARDID CARDID CHECKLISTID # Get checklist info
python3 api.py get_list_cards_count BOARDID LISTID # Retrieve how many cards in a list
python3 api.py get_board_cards_count BOARDID # Retrieve how many cards in a board
Admin API:
python3 api.py users # All users
python3 api.py boards # All Public Boards
@@ -179,6 +193,52 @@ if arguments == 10:
print(body.text)
# ------- ADD CUSTOM FIELD TO BOARD END -----------
if arguments == 8:
if sys.argv[1] == 'addcardwithlabel':
# ------- ADD CARD WITH LABEL START -----------
authorid = sys.argv[2]
boardid = sys.argv[3]
swimlaneid = sys.argv[4]
listid = sys.argv[5]
cardtitle = sys.argv[6]
carddescription = sys.argv[7]
labelIds = sys.argv[8] # Aggiunto labelIds
cardtolist = wekanurl + apiboards + boardid + s + l + s + listid + s + cs
# Add card
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
post_data = {
'authorId': '{}'.format(authorid),
'title': '{}'.format(cardtitle),
'description': '{}'.format(carddescription),
'swimlaneId': '{}'.format(swimlaneid),
'labelIds': labelIds
}
body = requests.post(cardtolist, data=post_data, headers=headers)
print(body.text)
# If ok id card
if body.status_code == 200:
card_data = body.json()
new_card_id = card_data.get('_id')
# Updating card
if new_card_id:
edcard = wekanurl + apiboards + boardid + s + l + s + listid + s + cs + s + new_card_id
put_data = {'labelIds': labelIds}
body = requests.put(edcard, data=put_data, headers=headers)
print("=== EDIT CARD ===\n")
body = requests.get(edcard, headers=headers)
data2 = body.text.replace('}', "}\n")
print(data2)
else:
print("Error obraining ID.")
else:
print("Error adding card.")
# ------- ADD CARD WITH LABEL END -----------
if arguments == 7:
if sys.argv[1] == 'addcard':
@@ -237,7 +297,53 @@ if arguments == 6:
print(data2)
# ------- EDIT CUSTOMFIELD END -----------
if arguments == 4:
if arguments == 5:
if sys.argv[1] == 'addlabel':
# ------- EDIT CARD ADD LABEL START -----------
boardid = sys.argv[2]
listid = sys.argv[3]
cardid = sys.argv[4]
labelIds = sys.argv[5]
edcard = wekanurl + apiboards + boardid + s + l + s + listid + s + cs + s + cardid
print(edcard)
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
put_data = {'labelIds': labelIds}
body = requests.put(edcard, data=put_data, headers=headers)
print("=== ADD LABEL ===\n")
body = requests.get(edcard, headers=headers)
data2 = body.text.replace('}',"}\n")
print(data2)
# ------- EDIT CARD ADD LABEL END -----------
if sys.argv[1] == 'editcardcolor':
# ------- EDIT CARD COLOR START -----------
boardid = sys.argv[2]
listid = sys.argv[3]
cardid = sys.argv[4]
newcolor = sys.argv[5]
valid_colors = ['white', 'green', 'yellow', 'orange', 'red', 'purple', 'blue', 'sky', 'lime', 'pink', 'black',
'silver', 'peachpuff', 'crimson', 'plum', 'darkgreen', 'slateblue', 'magenta', 'gold', 'navy',
'gray', 'saddlebrown', 'paleturquoise', 'mistyrose', 'indigo']
if newcolor not in valid_colors:
print("Invalid color. Choose a color from the list.")
sys.exit(1)
edcard = wekanurl + apiboards + boardid + s + l + s + listid + s + cs + s + cardid
print(edcard)
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
put_data = {'color': '{}'.format(newcolor)}
body = requests.put(edcard, data=put_data, headers=headers)
print("=== EDIT CARD COLOR ===\n")
body = requests.get(edcard, headers=headers)
data2 = body.text.replace('}', "}\n")
print(data2)
# ------- EDIT CARD COLOR END -----------
if arguments >= 4:
if sys.argv[1] == 'newuser':
@@ -251,9 +357,131 @@ if arguments == 4:
print("=== CREATE NEW USER ===\n")
print(body.text)
# ------- CREATE NEW USER END -----------
if sys.argv[1] == 'getcard':
# ------- LIST OF CARD START -----------
boardid = sys.argv[2]
listid = sys.argv[3]
cardid = sys.argv[4]
listone = wekanurl + apiboards + boardid + s + l + s + listid + s + cs + s + cardid
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
print("=== INFO OF ONE LIST ===\n")
print("URL:", listone) # Stampa l'URL per debug
try:
response = requests.get(listone, headers=headers)
print("=== RESPONSE ===\n")
print("Status Code:", response.status_code) # Stampa il codice di stato per debug
if response.status_code == 200:
data2 = response.text.replace('}', "}\n")
print(data2)
else:
print(f"Error: {response.status_code}")
print(f"Response: {response.text}")
except Exception as e:
print(f"Error in the GET request: {e}")
# ------- LISTS OF CARD END -----------
if sys.argv[1] == 'createlabel':
# ------- CREATE LABEL START -----------
boardid = sys.argv[2]
labelcolor = sys.argv[3]
labelname = sys.argv[4]
label_url = wekanurl + apiboards + boardid + s + 'labels'
print(label_url)
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
# Object to send
put_data = {'label': {'color': labelcolor, 'name': labelname}}
print("URL:", label_url)
print("Headers:", headers)
print("Data:", put_data)
try:
response = requests.put(label_url, json=put_data, headers=headers)
print("=== CREATE LABELS ===\n")
print("Response Status Code:", response.status_code)
print("Response Text:", response.text)
except Exception as e:
print("Error:", e)
# ------- CREATE LABEL END -----------
if sys.argv[1] == 'addchecklist':
# ------- ADD CHECKLIST START -----------
board_id = sys.argv[2]
card_id = sys.argv[3]
checklist_title = sys.argv[4]
# Aggiungi la checklist
checklist_url = wekanurl + apiboards + board_id + s + cs + s + card_id + '/checklists'
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
data = {'title': checklist_title}
response = requests.post(checklist_url, data=data, headers=headers)
response.raise_for_status()
result = json.loads(response.text)
checklist_id = result.get('_id')
print(f"Checklist '{checklist_title}' created. ID: {checklist_id}")
# Aggiungi gli items alla checklist
items_to_add = sys.argv[5:]
for item_title in items_to_add:
checklist_item_url = wekanurl + apiboards + board_id + s + cs + s + card_id + s + 'checklists' + s + checklist_id + '/items'
item_data = {'title': item_title}
item_response = requests.post(checklist_item_url, data=item_data, headers=headers)
item_response.raise_for_status()
item_result = json.loads(item_response.text)
checklist_item_id = item_result.get('_id')
print(f"Item '{item_title}' added. ID: {checklist_item_id}")
if sys.argv[1] == 'checklistinfo':
# ------- ADD CHECKLIST START -----------
board_id = sys.argv[2]
card_id = sys.argv[3]
checklist_id = sys.argv[4]
checklist_url = wekanurl + apiboards + board_id + s + cs + s + card_id + '/checklists' + s + checklist_id
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
response = requests.get(checklist_url, headers=headers)
response.raise_for_status()
checklist_info = response.json()
print("Checklist Info:")
print(checklist_info)
if arguments == 3:
if sys.argv[1] == 'editboardtitle':
# ------- EDIT BOARD TITLE START -----------
boardid = sys.argv[2]
boardtitle = sys.argv[3]
edboardtitle = wekanurl + apiboards + boardid + s + 'title'
print(edboardtitle)
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
post_data = {'title': boardtitle}
body = requests.put(edboardtitle, json=post_data, headers=headers)
print("=== EDIT BOARD TITLE ===\n")
#body = requests.get(edboardtitle, headers=headers)
data2 = body.text.replace('}',"}\n")
print(data2)
if body.status_code == 200:
print("Succesfull!")
else:
print(f"Error: {body.status_code}")
print(body.text)
# ------- EDIT BOARD TITLE END -----------
if sys.argv[1] == 'createlist':
# ------- CREATE LIST START -----------
@@ -293,6 +521,87 @@ if arguments == 3:
print(data2)
# ------- INFO OF CUSTOM FIELD END -----------
if sys.argv[1] == 'cardsbyswimlane':
# ------- RETRIEVE CARDS BY SWIMLANE ID START -----------
boardid = sys.argv[2]
swimlaneid = sys.argv[3]
cardsbyswimlane = wekanurl + apiboards + boardid + s + sws + s + swimlaneid + s + cs
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
print("=== CARDS BY SWIMLANE ID ===\n")
print("URL:", cardsbyswimlane) # Debug
try:
body = requests.get(cardsbyswimlane, headers=headers)
print("Status Code:", body.status_code) # Debug
data = body.text.replace('}', "}\n")
print("Data:", data)
except Exception as e:
print("Error GET:", e)
# ------- RETRIEVE CARDS BY SWIMLANE ID END -----------
if sys.argv[1] == 'deleteallcards':
boardid = sys.argv[2]
swimlaneid = sys.argv[3]
# ------- GET SWIMLANE CARDS START -----------
get_swimlane_cards_url = wekanurl + apiboards + boardid + s + "swimlanes" + s + swimlaneid + s + "cards"
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
try:
response = requests.get(get_swimlane_cards_url, headers=headers)
response.raise_for_status()
cards_data = response.json()
# Print the details of each card
for card in cards_data:
# ------- DELETE CARD START -----------
delete_card_url = wekanurl + apiboards + boardid + s + "lists" + s + card['listId'] + s + "cards" + s + card['_id']
try:
response = requests.delete(delete_card_url, headers=headers)
response.raise_for_status()
deleted_card_data = response.json()
print(f"Card Deleted Successfully. Card ID: {deleted_card_data['_id']}")
except requests.exceptions.RequestException as e:
print(f"Error deleting card: {e}")
# ------- DELETE CARD END -----------
except requests.exceptions.RequestException as e:
print(f"Error getting swimlane cards: {e}")
sys.exit(1)
# ------- GET SWIMLANE CARDS END -----------
if sys.argv[1] == 'get_list_cards_count':
# ------- GET LIST CARDS COUNT START -----------
boardid = sys.argv[2]
listid = sys.argv[3]
get_list_cards_count_url = wekanurl + apiboards + boardid + s + l + s + listid + s + "cards_count"
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
try:
response = requests.get(get_list_cards_count_url, headers=headers)
response.raise_for_status()
data = response.json()
print(f"List Cards Count: {data['list_cards_count']}")
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
# ------- GET LIST CARDS COUNT END -----------
if sys.argv[1] == 'checklistid':
# ------- ADD CHECKLIST START -----------
board_id = sys.argv[2]
card_id = sys.argv[3]
checklist_url = wekanurl + apiboards + board_id + s + cs + s + card_id + '/checklists'
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
response = requests.get(checklist_url, headers=headers)
response.raise_for_status()
checklists = response.json()
print("Checklists:")
for checklist in checklists:
print(checklist)
if arguments == 2:
# ------- BOARDS LIST START -----------
@@ -364,6 +673,22 @@ if arguments == 2:
print(data2)
# ------- LISTS OF ATTACHMENTS END -----------
if sys.argv[1] == 'get_board_cards_count':
# ------- GET BOARD CARDS COUNT START -----------
boardid = sys.argv[2]
get_board_cards_count_url = wekanurl + apiboards + boardid + s + "cards_count"
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
try:
response = requests.get(get_board_cards_count_url, headers=headers)
response.raise_for_status()
data = response.json()
print(f"Board Cards Count: {data['board_cards_count']}")
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
# ------- GET BOARD CARDS COUNT END -----------
if arguments == 1:
if sys.argv[1] == 'users':
+1 -1
View File
@@ -320,7 +320,7 @@ BlazeComponent.extendComponent({
calendarOptions() {
return {
id: 'calendar-view',
defaultView: 'agendaDay',
defaultView: 'month',
editable: true,
selectable: true,
timezone: 'local',
+43 -11
View File
@@ -1060,8 +1060,13 @@
.board-color-clearblue .swimlane {
background: none;
}
.board-color-clearblue .list:first-child {
margin-left: 15px;
.board-color-clearblue .swimlane .list:first-child {
min-width: 20px;
margin-left: 0px;
border-left: none;
}
.board-color-clearblue .swimlane .list:nth-child {
flex: 0 0 265px;
}
.board-color-clearblue .list {
background: rgba(255,255,255,0.35);
@@ -1073,8 +1078,10 @@
background: rgba(255,255,255,0.1);
height: min-content;
flex: unset;
width: 270px;
padding-bottom: 16px;
min-width: 20px;
margin-left: 0px;
border-left: none;
}
.board-color-clearblue .list.list-composer .open-list-composer {
border-radius: 7px;
@@ -1082,6 +1089,7 @@
padding: 7px 10px;
display: block;
}
.board-color-clearblue .list.list-composer .open-list-composer:hover i,
.board-color-clearblue .list.list-composer .open-list-composer:hover {
box-shadow: 0 1px 2px rgba(0,0,0,0.2);
background: rgba(255,255,255,0.7);
@@ -1452,12 +1460,17 @@
background: none;
box-shadow: none;
}
.board-color-modern .list:first-child {
margin-left: 5px;
.board-color-modern .swimlane .list:first-child {
min-width: 20px;
margin-left: 0px;
border-left: none;
}
.board-color-modern .swimlane .list:nth-child {
flex: 0 0 265px;
}
.board-color-modern .list.list-composer.js-list-composer {
transition: all 0.3s ease;
min-width: 80px;
min-width: 20px;
}
.board-color-modern .open-list-composer.js-open-inlined-form:hover {
color: #222;
@@ -1536,9 +1549,6 @@
.board-color-modern .sidebar .sidebar-shadow {
box-shadow: 0 0 60px rgba(0,0,0,0.2);
}
.board-color-modern .sidebar .sidebar-content {
padding: 30px;
}
.board-color-modern .board-color-modern section#notifications-drawer {
border-radius: 5px;
}
@@ -1740,10 +1750,19 @@
background: #666;
border-radius: 0;
border: 0px solid #666;
flex: 0 0 265px;
}
.board-color-moderndark .swimlane .list:first-child {
margin-left: 0;
color: #eee;
min-width: 20px;
margin-left: 0px;
border-left: none;
}
.board-color-moderndark .swimlane .list-composer .list-header-add .inlined-form .edit-controls .quiet,
.board-color-moderndark .swimlane .list-composer .list-header-add .inlined-form .edit-controls .quiet a.js-list-template {
color: #eee;
}
.board-color-moderndark .swimlane .list:nth-child {
flex: 0 0 265px;
}
.board-color-moderndark .swimlane .list:nth-child(even) .list-header,
.board-color-moderndark .swimlane .list:nth-child(even) .list-body {
@@ -1811,6 +1830,7 @@
.board-color-moderndark .list .list-composer .open-list-composer i {
color: #bbb;
}
.board-color-moderndark .swimlane .list:first-child .open-list-composer:hover i,
.board-color-moderndark .list-body a.open-minicard-composer:hover,
.board-color-moderndark .list-body a.open-minicard-composer:hover i,
.board-color-moderndark .list .list-composer .open-list-composer:hover i {
@@ -2094,6 +2114,18 @@
box-shadow: inset 15px 15px 37px #1c1c1c, inset -15px -15px 37px #282828;
border: none;
}
.board-color-exodark .swimlane .list:first-child {
min-width: 20px;
margin-left: 0px;
border-left: none;
}
.board-color-exodark .swimlane .list:nth-child {
flex: 0 0 265px;
}
.board-color-exodark .list.list-composer.js-list-composer {
transition: all 0.3s ease;
min-width: 0;
}
.board-color-exodark .list-header {
border-top-right-radius: 15px;
border-top-left-radius: 15px;
+29 -17
View File
@@ -24,7 +24,6 @@
min-width: 150px;
max-height: 150px;
padding-right: 16px;
}
.attachment-thumbnail {
max-width: 150px;
@@ -78,10 +77,10 @@
width: 100%;
height: 100vh;
position: fixed;
top: 48px; /* height of the navbar */
top: 0;
left: 0;
z-index: 9999 !important;
background: rgba(13,13,13,0.95);
background: rgba(13, 13, 13, 0.95);
}
#viewer-container {
display: flex;
@@ -99,10 +98,12 @@
#attachment-name {
color: white;
font-size: 1.5em;
max-width: calc(100% - 50px); /* Make sure the name does not overlap the close button */
max-width: calc(
100% - 50px
); /* Make sure the name does not overlap the close button */
}
#viewer-close {
color:white;
color: white;
cursor: pointer;
font-size: 4em;
top: 0;
@@ -111,25 +112,32 @@
}
.attachment-arrow {
font-size: 4em;
color:white;
color: white;
cursor: pointer;
align-self: center;
margin: 0 20px;
}
#viewer-content {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: calc(100% - 50px);
}
#image-viewer {
background:
repeating-conic-gradient(#808080 0% 25%, transparent 0% 50%)
50% / 20px 20px; /* Checkerboard background for transparent images */
background: repeating-conic-gradient(#808080 0% 25%, transparent 0% 50%) 50% /
20px 20px; /* Checkerboard background for transparent images */
max-width: 100%;
max-height: 100%;
}
#pdf-viewer {
width: 40vw;
height: 100vh;
height: 100%;
}
#txt-viewer{
#txt-viewer {
background-color: white;
width: 40vw;
height: 100vh;
height: 100%;
}
.pdf-preview-error {
margin-top: 20vh;
@@ -148,25 +156,29 @@
#viewer-container {
display: block;
}
.attachment-arrow{
.attachment-arrow {
position: absolute;
bottom: 2.2em;
font-size: 1.6em;
padding: 16px;
}
#prev-attachment{
#prev-attachment {
left: 0;
}
#next-attachment{
#next-attachment {
right: 0;
}
#pdf-viewer {
width: 100%;
height: calc(100vh - 155px); /* Full height - height of top and bottom bars */
height: calc(
100vh - 155px
); /* Full height - height of top and bottom bars */
}
#txt-viewer {
width: 100%;
height: calc(100vh - 155px); /* Full height - height of top and bottom bars */
height: calc(
100vh - 155px
); /* Full height - height of top and bottom bars */
}
#audio-viewer {
margin-top: 20%;
+3 -2
View File
@@ -51,8 +51,9 @@ template(name="attachmentGallery")
.attachment-gallery
a.attachment-item.add-attachment.js-add-attachment
i.fa.fa-plus.icon
if canModifyCard
a.attachment-item.add-attachment.js-add-attachment
i.fa.fa-plus.icon
each attachments
+168 -64
View File
@@ -11,6 +11,9 @@ const prettyMilliseconds = require('pretty-ms');
let cardId = null;
let openAttachmentId = null;
// Used to store the start and end coordinates of a touch event for attachment swiping
let touchStartCoords = null;
let touchEndCoords = null;
// Stores link to the attachment for which attachment actions popup was opened
attachmentActionsLink = null;
@@ -35,24 +38,24 @@ Template.attachmentGallery.events({
},
'click .js-rename': Popup.open('attachmentRename'),
'click .js-confirm-delete': Popup.afterConfirm('attachmentDelete', function() {
Attachments.remove(this._id);
Popup.back(2);
Attachments.remove(this._id);
Popup.back(2);
}),
});
function getNextAttachmentId(currentAttachmentId) {
function getNextAttachmentId(currentAttachmentId, offset = 0) {
const attachments = ReactiveCache.getAttachments({'meta.cardId': cardId});
let i = 0;
for (; i < attachments.length; i++) {
if (attachments[i]._id === currentAttachmentId) {
break;
}
let i = 0;
for (; i < attachments.length; i++) {
if (attachments[i]._id === currentAttachmentId) {
break;
}
return attachments[(i + 1 + attachments.length) % attachments.length]._id;
}
return attachments[(i + offset + 1 + attachments.length) % attachments.length]._id;
}
function getPrevAttachmentId(currentAttachmentId) {
function getPrevAttachmentId(currentAttachmentId, offset = 0) {
const attachments = ReactiveCache.getAttachments({'meta.cardId': cardId});
let i = 0;
@@ -61,52 +64,70 @@ function getPrevAttachmentId(currentAttachmentId) {
break;
}
}
return attachments[(i - 1 + attachments.length) % attachments.length]._id;
return attachments[(i + offset - 1 + attachments.length) % attachments.length]._id;
}
function openAttachmentViewer(attachmentId){
function attachmentCanBeOpened(attachment) {
return (
attachment.isImage ||
attachment.isPDF ||
attachment.isText ||
attachment.isJSON ||
attachment.isVideo ||
attachment.isAudio
);
}
const attachment = ReactiveCache.getAttachment(attachmentId);
function openAttachmentViewer(attachmentId) {
const attachment = ReactiveCache.getAttachment(attachmentId);
$("#attachment-name").text(attachment.name);
// Check if we can open the attachment (if we have a viewer for it) and exit if not
if (!attachmentCanBeOpened(attachment)) {
return;
}
// IMPORTANT: if you ever add a new viewer, make sure you also implement
// cleanup in the closeAttachmentViewer() function
switch(true){
case (attachment.isImage):
$("#image-viewer").attr("src", attachment.link());
$("#image-viewer").removeClass("hidden");
break;
case (attachment.isPDF):
$("#pdf-viewer").attr("data", attachment.link());
$("#pdf-viewer").removeClass("hidden");
break;
case (attachment.isVideo):
// We have to create a new <source> DOM element and append it to the video
// element, otherwise the video won't load
let videoSource = document.createElement('source');
videoSource.setAttribute('src', attachment.link());
$("#video-viewer").append(videoSource);
/*
Instructions for adding a new viewer:
- add a new case to the switch statement below
- implement cleanup in the closeAttachmentViewer() function, if necessary
- mark attachment type as openable by adding a new condition to the attachmentCanBeOpened function
*/
switch(true){
case (attachment.isImage):
$("#image-viewer").attr("src", attachment.link());
$("#image-viewer").removeClass("hidden");
break;
case (attachment.isPDF):
$("#pdf-viewer").attr("data", attachment.link());
$("#pdf-viewer").removeClass("hidden");
break;
case (attachment.isVideo):
// We have to create a new <source> DOM element and append it to the video
// element, otherwise the video won't load
let videoSource = document.createElement('source');
videoSource.setAttribute('src', attachment.link());
$("#video-viewer").append(videoSource);
$("#video-viewer").removeClass("hidden");
break;
case (attachment.isAudio):
// We have to create a new <source> DOM element and append it to the audio
// element, otherwise the audio won't load
let audioSource = document.createElement('source');
audioSource.setAttribute('src', attachment.link());
$("#audio-viewer").append(audioSource);
$("#video-viewer").removeClass("hidden");
break;
case (attachment.isAudio):
// We have to create a new <source> DOM element and append it to the audio
// element, otherwise the audio won't load
let audioSource = document.createElement('source');
audioSource.setAttribute('src', attachment.link());
$("#audio-viewer").append(audioSource);
$("#audio-viewer").removeClass("hidden");
break;
case (attachment.isText):
case (attachment.isJSON):
$("#txt-viewer").attr("data", attachment.link());
$("#txt-viewer").removeClass("hidden");
break;
}
$("#audio-viewer").removeClass("hidden");
break;
case (attachment.isText):
case (attachment.isJSON):
$("#txt-viewer").attr("data", attachment.link());
$("#txt-viewer").removeClass("hidden");
break;
}
$("#viewer-overlay").removeClass("hidden");
$('#attachment-name').text(attachment.name);
$('#viewer-overlay').removeClass('hidden');
}
function closeAttachmentViewer() {
@@ -133,36 +154,109 @@ function closeAttachmentViewer() {
$("#audio-viewer").addClass("hidden");
}
function openNextAttachment() {
closeAttachmentViewer();
let i = 0;
// Find an attachment that can be opened
while (true) {
const id = getNextAttachmentId(openAttachmentId, i);
const attachment = ReactiveCache.getAttachment(id);
if (attachmentCanBeOpened(attachment)) {
openAttachmentId = id;
openAttachmentViewer(id);
break;
}
i++;
}
}
function openPrevAttachment() {
closeAttachmentViewer();
let i = 0;
// Find an attachment that can be opened
while (true) {
const id = getPrevAttachmentId(openAttachmentId, i);
const attachment = ReactiveCache.getAttachment(id);
if (attachmentCanBeOpened(attachment)) {
openAttachmentId = id;
openAttachmentViewer(id);
break;
}
i--;
}
}
function processTouch(){
xDist = touchEndCoords.x - touchStartCoords.x;
yDist = touchEndCoords.y - touchStartCoords.y;
console.log("xDist: " + xDist);
// Left swipe
if (Math.abs(xDist) > Math.abs(yDist) && xDist < 0) {
openNextAttachment();
}
// Right swipe
if (Math.abs(xDist) > Math.abs(yDist) && xDist > 0) {
openPrevAttachment();
}
// Up swipe
if (Math.abs(yDist) > Math.abs(xDist) && yDist < 0) {
closeAttachmentViewer();
}
}
Template.attachmentViewer.events({
'touchstart #viewer-container'(event) {
console.log("touchstart")
touchStartCoords = {
x: event.changedTouches[0].screenX,
y: event.changedTouches[0].screenY
}
},
'touchend #viewer-container'(event) {
console.log("touchend")
touchEndCoords = {
x: event.changedTouches[0].screenX,
y: event.changedTouches[0].screenY
}
processTouch();
},
'click #viewer-container'(event) {
// Make sure the click was on #viewer-container and not on any of its children
if(event.target !== event.currentTarget) return;
if(event.target !== event.currentTarget) {
event.stopPropagation();
return;
}
closeAttachmentViewer();
},
'click #viewer-content'(event) {
// Make sure the click was on #viewer-content and not on any of its children
if(event.target !== event.currentTarget) return;
if(event.target !== event.currentTarget) {
event.stopPropagation();
return;
}
closeAttachmentViewer();
},
'click #viewer-close'() {
closeAttachmentViewer();
},
'click #next-attachment'(event) {
closeAttachmentViewer()
const id = getNextAttachmentId(openAttachmentId);
openAttachmentId = id;
openAttachmentViewer(id);
'click #next-attachment'() {
openNextAttachment();
},
'click #prev-attachment'() {
openPrevAttachment();
},
'click #prev-attachment'(event) {
closeAttachmentViewer()
const id = getPrevAttachmentId(openAttachmentId);
openAttachmentId = id;
openAttachmentViewer(id);
}
});
Template.attachmentGallery.helpers({
@@ -204,13 +298,23 @@ Template.cardAttachmentsPopup.events({
let uploads = [];
for (const file of files) {
const fileId = new ObjectID().toString();
// If filename is not same as sanitized filename, has XSS, then cancel upload
if (file.name !== DOMPurify.sanitize(file.name)) {
return false;
let fileName = DOMPurify.sanitize(file.name);
// If sanitized filename is not same as original filename,
// it could be XSS that is already fixed with sanitize,
// or just normal mistake, so it is not a problem.
// That is why here is no warning.
if (fileName !== file.name) {
// If filename is empty, only in that case add some filename
if (fileName.length === 0) {
fileName = 'Empty-filename-after-sanitize.txt';
}
}
const config = {
file: file,
fileId: fileId,
fileName: fileName,
meta: Utils.getCommonAttachmentMetaFrom(card),
chunkSize: 'dynamic',
};
+6 -4
View File
@@ -196,6 +196,9 @@
margin-right: 10px;
padding: 10px;
}
.card-details .card-description i.fa.fa-pencil-square-o {
float: right;
}
.card-details .card-description textarea {
min-height: 100px;
}
@@ -247,7 +250,7 @@
@media screen and (min-width: 801px) {
.card-details {
top: 97px;
left: 0;
left: calc(50% - (600px / 2));
width: 600px;
bottom: 0;
position: fixed;
@@ -267,9 +270,8 @@
box-shadow: 0 0 7px 0 #b3b3b3;
transition: flex-basis 0.1s;
box-sizing: border-box;
position: absolute;
top: 0;
left: 0;
top: 97px;
left: 0px;
height: calc(100% - 20px);
width: calc(100% - 20px);
float: left;
+15 -13
View File
@@ -2,6 +2,9 @@ template(name="cardDetailsPopup")
+cardDetails(popupCard)
template(name="cardDetails")
+attachmentViewer
section.card-details.js-card-details(class='{{#if cardMaximized}}card-details-maximized{{/if}}' class='{{#if isPopup}}card-details-popup{{/if}}'): .card-details-canvas
.card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}')
+inlinedForm(classNames="js-card-details-title")
@@ -10,11 +13,12 @@ template(name="cardDetails")
unless isMiniScreen
unless isPopup
a.fa.fa-times-thin.close-card-details.js-close-card-details(title="{{_ 'close-card'}}")
if cardMaximized
a.fa.fa-window-minimize.minimize-card-details.js-minimize-card-details(title="{{_ 'minimize-card'}}")
else
a.fa.fa-window-maximize.maximize-card-details.js-maximize-card-details(title="{{_ 'maximize-card'}}")
if currentUser.isBoardMember
if canModifyCard
if cardMaximized
a.fa.fa-window-minimize.minimize-card-details.js-minimize-card-details(title="{{_ 'minimize-card'}}")
else
a.fa.fa-window-maximize.maximize-card-details.js-maximize-card-details(title="{{_ 'maximize-card'}}")
if canModifyCard
a.fa.fa-navicon.card-details-menu.js-open-card-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
a.fa.fa-link.card-copy-button.js-copy-link(
id="cardURL_copy"
@@ -26,7 +30,7 @@ template(name="cardDetails")
else
unless isPopup
a.fa.fa-times-thin.close-card-details.js-close-card-details(title="{{_ 'close-card'}}")
if currentUser.isBoardMember
if canModifyCard
a.fa.fa-navicon.card-details-menu-mobile-web.js-open-card-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
a.fa.fa-link.card-copy-mobile-button.js-copy-link(
id="cardURL_copy"
@@ -521,12 +525,11 @@ template(name="cardDetails")
a.fa.fa-times-thin.js-close-inlined-form
else
if currentBoard.allowsDescriptionText
a.js-open-inlined-form
if getDescription
+viewer
= getDescription
else
| {{_ 'edit'}}
a.js-open-inlined-form.right(title="{{_ 'edit'}}" value=title)
i.fa.fa-pencil-square-o
if getDescription
+viewer
= getDescription
if (hasUnsavedValue 'cardDescription' _id)
p.quiet
| {{_ 'unsaved-description'}}
@@ -562,7 +565,6 @@ template(name="cardDetails")
br
| {{_ 'invalid-file'}}
.card-checklist-attachmentGallery.card-attachmentGallery
+attachmentViewer
+attachmentGallery
hr
+2 -68
View File
@@ -76,62 +76,6 @@ BlazeComponent.extendComponent({
return !Utils.getPopupCardId() && ReactiveCache.getCurrentUser().hasCardMaximized();
},
scrollParentContainer() {
const cardPanelWidth = 600;
const parentComponent = this.parentComponent();
/*
// Incomplete fix about bug where opening card scrolls to wrong place
// https://github.com/wekan/wekan/issues/4572#issuecomment-1184149395
// TODO sometimes parentComponent is not available, maybe because it's not
// yet created?!
if (!parentComponent) return;
const bodyBoardComponent = 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');
/*
// Incomplete fix about bug where opening card scrolls to wrong place
// https://github.com/wekan/wekan/issues/4572#issuecomment-1184149395
// TODO sometimes cardContainer is not available, maybe because it's not yet
// created?!
if (!$cardContainer) return;
*/
const cardContainerScroll = $cardContainer.scrollLeft();
const cardContainerWidth = $cardContainer.width();
const cardViewStart = $cardView.offset().left;
const cardViewEnd = cardViewStart + cardPanelWidth;
let offset = false;
if (cardViewStart < 0) {
offset = cardViewStart;
} else if (cardViewEnd > cardContainerWidth) {
offset = cardViewEnd - cardContainerWidth;
}
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) {
@@ -442,20 +386,10 @@ BlazeComponent.extendComponent({
'click .js-maximize-card-details'() {
Meteor.call('toggleCardMaximized');
autosize($('.card-details'));
if (!Utils.isMiniScreen()) {
Meteor.setTimeout(() => {
this.scrollParentContainer();
}, 500);
}
},
'click .js-minimize-card-details'() {
Meteor.call('toggleCardMaximized');
autosize($('.card-details'));
if (!Utils.isMiniScreen()) {
Meteor.setTimeout(() => {
this.scrollParentContainer();
}, 500);
}
},
'click .js-vote'(e) {
const forIt = $(e.target).hasClass('js-vote-positive');
@@ -742,7 +676,7 @@ Template.cardMembersPopup.events({
Template.cardMembersPopup.helpers({
members() {
return Template.instance().members.get();
return _.sortBy(Template.instance().members.get(),'fullname');
},
});
@@ -1604,7 +1538,7 @@ Template.cardAssigneesPopup.helpers({
},
members() {
return Template.instance().members.get();
return _.sortBy(Template.instance().members.get(),'fullname');
},
user() {
+16
View File
@@ -8,6 +8,20 @@ textarea.js-edit-checklist-item {
resize: none;
height: 34px;
}
.card-details .text-show-at-minicard {
width: 350px;
text-align: left;
}
.minicard .text-show-at-minicard {
display: none;
}
.text-some-space {
width: 20px;
}
.text-hide-checked-items {
width: 400px;
text-align: left;
}
.delete-text,
.js-delete-checklist-item,
.js-convert-checklist-item-to-card {
@@ -26,6 +40,8 @@ textarea.js-edit-checklist-item {
display: flex;
justify-content: space-between;
}
.checklist-progress-bar-container {
display: flex;
flex-direction: row;
+22 -9
View File
@@ -9,18 +9,10 @@ template(name="checklists")
else
a.add-checklist-top.js-open-inlined-form(title="{{_ 'add-checklist'}}")
i.fa.fa-plus
if currentUser.isBoardMember
.material-toggle-switch(title="{{_ 'hide-checked-items'}}")
//span.toggle-switch-title
if hideCheckedItems
input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton")
label.toggle-label(for="toggleHideCheckedItemsButton")
.card-checklist-items
each checklist in checklists
+checklistDetail(checklist = checklist)
+checklistDetail(checklist=checklist)
if canModifyCard
+inlinedForm(autoclose=false classNames="js-add-checklist" cardId = cardId)
@@ -130,6 +122,27 @@ template(name='checklistItemDetail')
= item.title
template(name="checklistActionsPopup")
if currentUser.isBoardMember
span.text-show-at-minicard
| {{_ 'show-at-minicard'}}
.material-toggle-switch(title="{{_ 'show-checklist-at-minicard'}}")
if showAtMinicard
input.toggle-switch(type="checkbox" id="toggleShowChecklistAtMinicardButton" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleShowChecklistAtMinicardButton")
label.toggle-label(for="toggleShowChecklistAtMinicardButton")
hr
span.text-hide-checked-items
| {{_ 'hide-checked-items'}}
.material-toggle-switch(title="{{_ 'hide-checked-items'}}")
//span.toggle-switch-title
//.check-square-icon.i.fa.fa-check-square-o
if hideCheckedItems
input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton")
label.toggle-label(for="toggleHideCheckedItemsButton")
hr
ul.pop-over-list
li
a.js-delete-checklist.delete-checklist
+22 -3
View File
@@ -202,9 +202,6 @@ BlazeComponent.extendComponent({
events() {
const events = {
'click #toggleHideCheckedItemsButton'() {
Meteor.call('toggleHideCheckedItems');
},
};
return [
@@ -274,6 +271,11 @@ Template.checklists.helpers({
const ret = card.checklists();
return ret;
},
showAtMinicard() {
const card = ReactiveCache.getCard(this.cardId);
const ret = card.checklists({'showAtMinicard':1});
return ret;
},
hideCheckedItems() {
const currentUser = ReactiveCache.getCurrentUser();
if (currentUser) return currentUser.hasHideCheckedItems();
@@ -301,9 +303,26 @@ BlazeComponent.extendComponent({
}).register('addChecklistItemForm');
BlazeComponent.extendComponent({
toggleItem() {
const checklist = this.currentData().checklist;
const item = this.currentData().item;
if (checklist && item && item._id) {
item.toggleItem();
}
},
events() {
return [
{
'click .js-checklist-item .check-box-container': this.toggleItem,
'click #toggleShowChecklistAtMinicardButton'() {
const checklist = this.checklist;
if (checklist && checklist._id) {
Meteor.call('toggleShowChecklistAtMinicard', checklist._id);
}
},
'click #toggleHideCheckedItemsButton'() {
Meteor.call('toggleHideCheckedItems');
},
'click .js-delete-checklist': Popup.afterConfirm('checklistDelete', function () {
Popup.back(2);
const checklist = this.checklist;
+2 -1
View File
@@ -52,7 +52,8 @@ BlazeComponent.extendComponent({
appendTo: '.edit-labels-pop-over',
helper(element, currentItem) {
let ret = currentItem.clone();
if (currentItem.closest('.popup-container-depth-0').size() == 0) { // only set css transform at every sub-popup, not at the main popup
if (currentItem.closest('.popup-container-depth-0').length == 0)
{ // only set css transform at every sub-popup, not at the main popup
const content = currentItem.closest('.content')[0]
const offsetLeft = content.offsetLeft;
const offsetTop = $('.pop-over > .header').height() * -1;
+19 -1
View File
@@ -1,3 +1,12 @@
.minicard .checklists-title,
.minicard .add-checklist,
.minicard .add-checklist-item,
.minicard .checklist-details-menu {
display: none;
}
.minicard .checklist-progress-bar-container {
width: 190px; /* TODO: Add adjustable width https://github.com/wekan/wekan/pull/4964 */
}
.minicard-wrapper {
cursor: pointer;
position: relative;
@@ -90,7 +99,7 @@
background-size: contain;
height: 145px;
user-select: none;
margin: -6px -8px 6px -8px;
margin: 6px -8px 6px -8px;
border-radius: top 2px;
}
.minicard .minicard-labels {
@@ -127,6 +136,14 @@
max-width: 100%;
margin-right: 4px;
}
/*
.minicard .checklists-title,
.minicard .add-checklist,
.minicard .add-checklist-item,
.minicard .checklist-details-menu {
display: none;
}
*/
.minicard .handle {
width: 20px;
height: 20px;
@@ -248,6 +265,7 @@
}
.minicard .minicard-description {
padding: 6px 0 0 8px;
color: #000;
background-color: #eee;
width: 100%;
margin-bottom: 2px;
+17 -11
View File
@@ -3,12 +3,13 @@ template(name="minicard")
class="{{#if isLinkedCard}}linked-card{{/if}}"
class="{{#if isLinkedBoard}}linked-board{{/if}}"
class="{{#if colorClass}}minicard-{{colorClass}}{{/if}}")
if isTouchScreenOrShowDesktopDragHandles
a.fa.fa-navicon.minicard-details-menu-with-handle.js-open-minicard-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
.handle
.fa.fa-arrows
else
a.fa.fa-navicon.minicard-details-menu.js-open-minicard-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
if canModifyCard
if isTouchScreenOrShowDesktopDragHandles
a.fa.fa-navicon.minicard-details-menu-with-handle.js-open-minicard-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
.handle
.fa.fa-arrows
else
a.fa.fa-navicon.minicard-details-menu.js-open-minicard-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
.dates
if getReceived
unless getStart
@@ -111,6 +112,12 @@ template(name="minicard")
+viewer
= trueValue
.card-checklist-attachmentGalleries
.card-checklist-attachmentGallery.card-checklists
if currentBoard.allowsChecklists
//hr
//+checklists(cardId=_id showAtMinicard=true)
if showAssignee
if getAssignees
.minicard-assignees.js-minicard-assignees
@@ -123,15 +130,15 @@ template(name="minicard")
each getMembers
+userAvatar(userId=this)
if showCreator
if showCreatorOnMinicard
.minicard-creator
+userAvatar(userId=this.userId noRemove=true)
.badges
unless currentUser.isNoComments
if canModifyCard
if comments.length
.badge(title="{{_ 'card-comments-title' comments.length }}")
span.badge-icon.fa.fa-comment-o.badge-comment
span.badge-icon.fa.fa-comment-o.badge-comment.badge-text
= ' '
= comments.length
//span.badge-comment.badge-text
@@ -183,12 +190,11 @@ template(name="editCardSortOrderPopup")
template(name="minicardDetailsActionsPopup")
ul.pop-over-list
if currentUser.isBoardAdmin
if canModifyCard
li
a.js-move-card
i.fa.fa-arrow-right
| {{_ 'moveCardPopup-title'}}
unless currentUser.isWorker
li
a.js-copy-card
i.fa.fa-copy
+9 -4
View File
@@ -37,15 +37,15 @@ BlazeComponent.extendComponent({
return ret;
},
showCreator() {
showCreatorOnMinicard() {
// cache "board" to reduce the mini-mongodb access
const board = this.data().board();
let ret = false;
if (board) {
ret =
board.allowsCreator === null ||
board.allowsCreator === undefined ||
board.allowsCreator
board.allowsCreatorOnMinicard === null ||
board.allowsCreatorOnMinicard === undefined ||
board.allowsCreatorOnMinicard
;
}
return ret;
@@ -92,6 +92,11 @@ BlazeComponent.extendComponent({
events() {
return [
{
'click .minicard-checklists'() {
// Prevents clicking checklist at minicard from opening card details,
// while still allowing checking checlist items.
event.preventDefault();
},
'click .js-linked-link'() {
if (this.data().isLinkedCard()) Utils.goCardId(this.data().linkedId);
else if (this.data().isLinkedBoard())
+5 -5
View File
@@ -26,8 +26,7 @@ template(name="subtaskDetail")
.subtask-title
span
if canModifyCard
if currentUser.isBoardAdmin
a.fa.fa-navicon.subtask-details-menu.js-open-subtask-details-menu(title="{{_ 'subtaskActionsPopup-title'}}")
a.fa.fa-navicon.subtask-details-menu.js-open-subtask-details-menu(title="{{_ 'subtaskActionsPopup-title'}}")
if canModifyCard
h2.title.js-open-inlined-form.is-editable
+viewer
@@ -95,7 +94,8 @@ template(name="subtaskActionsPopup")
a.js-view-subtask(title="{{ subtask.title }}")
i.fa.fa-eye
| {{_ "view-it"}}
a.js-delete-subtask.delete-subtask
i.fa.fa-trash
| {{_ "delete"}} ...
if currentUser.isBoardAdmin
a.js-delete-subtask.delete-subtask
i.fa.fa-trash
| {{_ "delete"}} ...
+18
View File
@@ -68,6 +68,10 @@ BlazeComponent.extendComponent({
}
},
isBoardAdmin() {
return ReactiveCache.getCurrentUser().isBoardAdmin();
},
editSubtask(event) {
event.preventDefault();
const textarea = this.find('textarea.js-edit-subtask-item');
@@ -104,6 +108,9 @@ BlazeComponent.extendComponent({
}).register('subtaskItemDetail');
BlazeComponent.extendComponent({
isBoardAdmin() {
return ReactiveCache.getCurrentUser().isBoardAdmin();
},
events() {
return [
{
@@ -129,3 +136,14 @@ BlazeComponent.extendComponent({
]
}
}).register('subtaskActionsPopup');
Template.editSubtaskItemForm.helpers({
user() {
return ReactiveCache.getUser(this.userId);
},
isBoardAdmin() {
return ReactiveCache.getCurrentUser().isBoardAdmin();
},
});
+3 -3
View File
@@ -79,18 +79,18 @@ template(name="linkCardPopup")
select.js-select-boards
option(value="")
each boards
option(value="{{_id}}") {{title}}
option(value="{{_id}}") {{isTitleDefault title}}
input.primary.confirm.js-link-board(type="button" value="{{_ 'link'}}")
label {{_ 'swimlanes'}}:
select.js-select-swimlanes
each swimlanes
option(value="{{_id}}") {{title}}
option(value="{{_id}}") {{isTitleDefault title}}
label {{_ 'lists'}}:
select.js-select-lists
each lists
option(value="{{_id}}") {{title}}
option(value="{{_id}}") {{isTitleDefault title}}
label {{_ 'cards'}}:
select.js-select-cards
+26
View File
@@ -593,6 +593,31 @@ BlazeComponent.extendComponent({
},
}).register('linkCardPopup');
Template.linkCardPopup.helpers({
isTitleDefault(title) {
// https://github.com/wekan/wekan/issues/4763
// https://github.com/wekan/wekan/issues/4742
// Translation text for "default" does not work, it returns an object.
// When that happens, try use translation "defaultdefault" that has same content of default, or return text "Default".
// This can happen, if swimlane does not have name.
// Yes, this is fixing the symptom (Swimlane title does not have title)
// instead of fixing the problem (Add Swimlane title when creating swimlane)
// because there could be thousands of swimlanes, adding name Default to all of them
// would be very slow.
if (title.startsWith("key 'default") && title.endsWith('returned an object instead of string.')) {
if (`${TAPi18n.__('defaultdefault')}`.startsWith("key 'default") && `${TAPi18n.__('defaultdefault')}`.endsWith('returned an object instead of string.')) {
return 'Default';
} else {
return `${TAPi18n.__('defaultdefault')}`;
}
} else if (title === 'Default') {
return `${TAPi18n.__('defaultdefault')}`;
} else {
return title;
}
},
});
BlazeComponent.extendComponent({
mixins() {
return [];
@@ -621,6 +646,7 @@ BlazeComponent.extendComponent({
if (this.isTemplateSearch) {
const boardId = (ReactiveCache.getCurrentUser().profile || {}).templatesBoardId;
if (boardId) {
subManager.subscribe('board', boardId, false);
this.board = ReactiveCache.getBoard(boardId);
}
} else {
+13 -1
View File
@@ -1,7 +1,19 @@
.new-comment a.fa.fa-brands.fa-markdown,
.inlined-form a.fa.fa-brands.fa-markdown {
float: right;
position: absolute;
top: -20px;
right: 60px;
}
.new-comment a.fa.fa-copy,
.inlined-form a.fa.fa-copy {
float: right;
position: relative;
position: absolute;
top: -20px;
right: 6px;
}
.js-inlined-form.viewer.btn-sm {
position: absolute;
top: 20px;
right: 6px;
}
+1
View File
@@ -1,4 +1,5 @@
template(name="editor")
a.fa.fa-brands.fa-markdown(title="{{_ 'convert-to-markdown'}}")
a.fa.fa-copy(title="{{_ 'copy-text-to-clipboard'}}")
span.copied-tooltip {{_ 'copied'}}
textarea.editor(
+42 -1
View File
@@ -1,4 +1,6 @@
import { ReactiveCache } from '/imports/reactiveCache';
import { TAPi18n } from '/imports/i18n';
var converter = require('@wekanteam/html-to-markdown');
const specialHandles = [
{userId: 'board_members', username: 'board_members'},
@@ -9,6 +11,33 @@ const specialHandleNames = specialHandles.map(m => m.username);
BlazeComponent.extendComponent({
onRendered() {
// Start: Copy <pre> code https://github.com/wekan/wekan/issues/5149
// TODO: Try to make copyPre visible at Card Details after editing or closing editor or Card Details.
// - Also this same TODO below at event, if someone gets it working.
var copy = function(target) {
var textArea = document.createElement('textarea');
textArea.setAttribute('style','width:1px;border:0;opacity:0;');
document.body.appendChild(textArea);
textArea.value = target.innerHTML;
textArea.select();
document.execCommand('copy');
document.body.removeChild(textArea);
}
var pres = document.querySelectorAll(".viewer > pre");
pres.forEach(function(pre){
var button = document.createElement("a");
button.className = "fa fa-copy btn btn-sm right";
// TODO: Translate text 'Copy text to clipboard'
button.setAttribute('title','Copy text to clipboard');
button.innerHTML = '';
pre.parentNode.insertBefore(button, pre);
button.addEventListener('click', function(e){
e.preventDefault();
copy(pre.childNodes[0]);
})
})
// End: Copy <pre> code
const textareaSelector = 'textarea';
const mentions = [
// User mentions
@@ -44,12 +73,14 @@ BlazeComponent.extendComponent({
index: 1,
},
];
const enableTextarea = function() {
const $textarea = this.$(textareaSelector);
autosize($textarea);
$textarea.escapeableTextComplete(mentions);
};
if (Meteor.settings.public.RICHER_CARD_COMMENT_EDITOR !== false) {
/*
if (Meteor.settings.public.RICHER_CARD_COMMENT_EDITOR === true || Meteor.settings.public.RICHER_CARD_COMMENT_EDITOR === 'true') {
const isSmall = Utils.isMiniScreen();
const toolbar = isSmall
? [
@@ -269,6 +300,8 @@ BlazeComponent.extendComponent({
} else {
enableTextarea();
}
*/
enableTextarea();
},
events() {
return [
@@ -280,6 +313,14 @@ BlazeComponent.extendComponent({
const $tooltip = this.$('.copied-tooltip');
Utils.showCopied(promise, $tooltip);
},
'click a.fa.fa-brands.fa-markdown'(event) {
const $editor = this.$('textarea.editor');
$editor[0].value = converter.convert($editor[0].value);
},
// TODO: Try to make copyPre visible at Card Details after editing or closing editor or Card Details.
//'click .js-close-inlined-form'(event) {
// Utils.copyPre();
//},
}
]
}
+57 -26
View File
@@ -26,36 +26,67 @@ Template.userFormsLayout.onCreated(function () {
templateInstance.isLoading = new ReactiveVar(false);
if (!ReactiveCache.getCurrentUser()?.profile) {
Meteor.call('isOidcRedirectionEnabled', (_, result) => {
if (result) {
AccountsTemplates.options.socialLoginStyle = 'redirect';
options = {
loginStyle: AccountsTemplates.options.socialLoginStyle,
};
Meteor.loginWithOidc(options);
}
});
Meteor.call('isOidcRedirectionEnabled', (_, result) => {
if (result) {
AccountsTemplates.options.socialLoginStyle = 'redirect';
options = {
loginStyle: AccountsTemplates.options.socialLoginStyle,
};
Meteor.loginWithOidc(options);
}
});
Meteor.subscribe('setting', {
onReady() {
templateInstance.currentSetting.set(ReactiveCache.getCurrentSetting());
return this.stop();
},
});
}
Meteor.call('isDisableRegistration', (_, result) => {
if (result) {
$('.at-signup-link').hide();
}
});
Meteor.call('isDisableForgotPassword', (_, result) => {
if (result) {
$('.at-pwd-link').hide();
}
});
});
Template.userFormsLayout.onRendered(() => {
AccountsTemplates.state.form.keys = new Proxy(
AccountsTemplates.state.form.keys,
validator,
);
EscapeActions.executeAll();
Meteor.call('getAuthenticationsEnabled', (_, result) => {
let enabledAuthenticationMethods = [ 'password' ]; // we show/hide this based on isPasswordLoginEnabled
if (result) {
Object.keys(result).forEach((m) => {
if (result[m]) enabledAuthenticationMethods.push(m);
});
}
Meteor.call('isPasswordLoginEnabled', (_, result) => {
if (result) {
$('.at-pwd-form').show();
}
});
Meteor.call('isDisableRegistration', (_, result) => {
if (result) {
$('.at-signup-link').hide();
}
});
Meteor.call('isDisableForgotPassword', (_, result) => {
if (result) {
$('.at-pwd-link').hide();
}
});
if (enabledAuthenticationMethods.indexOf('oauth2') !== -1) {
// TODO find better way to run this code once the oauth2 UI is injected in the DOM
(function waitForElementAndShow() {
if (!$('.at-oauth')[0]) return setTimeout(waitForElementAndShow, 100);
$('.at-oauth').show();
})();
}
AccountsTemplates.state.form.keys = new Proxy(
AccountsTemplates.state.form.keys,
validator,
);
EscapeActions.executeAll();
});
});
Template.userFormsLayout.helpers({
+4 -3
View File
@@ -70,13 +70,14 @@ template(name="myCards")
unless isMiniScreen
.my-cards-board-badge(class=board.colorClass, id="header")
.my-cards-card-title-table
a.minicard-wrapper(href=card.originRelativeUrl)
| {{card.title}}
| {{card.title}}
//a.minicard-wrapper(href=card.originRelativeUrl)
// | {{card.title}}
td
| {{list.title}}
td
a(href=board.originRelativeUrl)
| {{board.title}}
//a(href=board.originRelativeUrl)
td
| {{swimlane.title}}
+9 -1
View File
@@ -88,7 +88,7 @@
height: 20px;
}
.pop-over .quiet {
padding: 6px 6px 4px;
/* padding: 6px 6px 4px;*/
}
.pop-over.search-over {
background: #f0f0f0;
@@ -152,6 +152,14 @@
text-decoration: none;
overflow: hidden;
line-height: 33px;
display:flex;
/* flex-wrap:wrap;*/
gap:5px;
align-items: center;
}
.pop-over-list li > a > .member{
align-self: flex-start;
flex:0 0 auto;
}
.pop-over-list li > a .item-name {
display: block;
@@ -11,7 +11,7 @@ template(name='notificationsDrawer')
a.fa.fa-times-thin.close
ul.notifications
each transformedProfile.notifications
+notification(activityData=activity index=dbIndex read=read)
+notification(activityData=activityObj index=dbIndex read=read)
if($gt unreadNotifications 0)
a.all-read {{_ 'mark-all-as-read'}}
if ($and ($.Session.get 'showReadNotifications') ($gt readNotifications 0))
+6 -24
View File
@@ -3,40 +3,22 @@ Template.connectionMethod.onCreated(function() {
Meteor.call('getAuthenticationsEnabled', (_, result) => {
if (result) {
// Only enabled auth methods without OAuth2/OpenID which is a separate button
const tmp = Object.keys(result).filter((k) => result[k]).filter((k) => k !== 'oauth2');
// TODO : add a management of different languages
// (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')})
this.authenticationMethods.set([
{ value: 'password' },
// Gets only the authentication methods availables
...Object.entries(result)
.filter(e => e[1])
.map(e => ({ value: e[0] })),
]);
this.authenticationMethods.set([{ value: 'password' }].concat(tmp.map((k) => { return { value: k }; })));
}
// If only the default authentication available, hides the select boxe
const content = $('.at-form-authentication');
// OAuth method is a separate button, so ignore it in the count
const formAuthenticationMethods = this.authenticationMethods.get().filter((method) => method.value !== 'oauth2');
if (formAuthenticationMethods > 1) {
if (this.authenticationMethods.get().length > 1) {
content.show();
} else {
content.hide();
}
if (this.authenticationMethods.get().some((method) => method.value === 'oauth2')) {
$('.at-oauth').show();
}
Meteor.call('isPasswordLoginEnabled', (_, result) => {
if (result) {
$('.at-pwd-form').show();
}
if (result && this.authenticationMethods.get().length > 1) {
$('.at-sep').show();
}
});
});
});
+16 -5
View File
@@ -78,6 +78,7 @@ template(name="orgGeneral")
th {{_ 'displayName'}}
th {{_ 'description'}}
th {{_ 'shortName'}}
th {{_ 'autoAddUsersWithDomainName'}}
th {{_ 'website'}}
th {{_ 'createdAt'}}
th {{_ 'active'}}
@@ -159,6 +160,10 @@ template(name="orgRow")
td {{ orgData.orgShortName }}
else
td <s>{{ orgData.orgShortName }}</s>
if orgData.orgIsActive
td {{ orgData.orgAutoAddUsersWithDomainName }}
else
td <s>{{ orgData.orgAutoAddUsersWithDomainName }}</s>
if orgData.orgIsActive
td {{ orgData.orgWebsite }}
else
@@ -307,9 +312,12 @@ template(name="editOrgPopup")
label
| {{_ 'shortName'}}
input.js-orgShortName(type="text" value=org.orgShortName required)
label
| {{_ 'autoAddUsersWithDomainName'}}
input.js-orgAutoAddUsersWithDomainName(type="text" value=org.orgAutoAddUsersWithDomainName)
label
| {{_ 'website'}}
input.js-orgWebsite(type="text" value=org.orgWebsite required)
input.js-orgWebsite(type="text" value=org.orgWebsite)
label
| {{_ 'active'}}
select.select-active.js-org-isactive
@@ -335,7 +343,7 @@ template(name="editTeamPopup")
input.js-teamShortName(type="text" value=team.teamShortName required)
label
| {{_ 'website'}}
input.js-teamWebsite(type="text" value=team.teamWebsite required)
input.js-teamWebsite(type="text" value=team.teamWebsite)
label
| {{_ 'active'}}
select.select-active.js-team-isactive
@@ -405,7 +413,7 @@ template(name="editUserPopup")
each value in orgsDatas
option(value="{{value._id}}") {{value.orgDisplayName}}
input#jsUserOrgsInPut.js-userOrgs(type="text" value=user.orgsUserBelongs, disabled)
input#jsUserOrgIdsInPut.js-userOrgIds.hide(type="text" value=user.orgIdsUserBelongs)
input#jsUserOrgIdsInPut.js-userOrgIds.hide(type="hidden" value=user.orgIdsUserBelongs)
label
| {{_ 'teams'}}
i.fa.fa-plus-square#addUserTeam
@@ -415,7 +423,7 @@ template(name="editUserPopup")
each value in teamsDatas
option(value="{{value._id}}") {{_ value.teamDisplayName}}
input#jsUserTeamsInPut.js-userteams(type="text" value=user.teamsUserBelongs, disabled)
input#jsUserTeamIdsInPut.js-userteamIds.hide(type="text" value=user.teamIdsUserBelongs)
input#jsUserTeamIdsInPut.js-userteamIds.hide(type="hidden" value=user.teamIdsUserBelongs)
hr
label
@@ -436,6 +444,9 @@ template(name="newOrgPopup")
label
| {{_ 'shortName'}}
input.js-orgShortName(type="text" value="" required)
label
| {{_ 'autoAddUsersWithDomainName'}}
input.js-orgAutoAddUsersWithDomainName(type="text" value="")
label
| {{_ 'website'}}
input.js-orgWebsite(type="text" value="" required)
@@ -462,7 +473,7 @@ template(name="newTeamPopup")
input.js-teamShortName(type="text" value="" required)
label
| {{_ 'website'}}
input.js-teamWebsite(type="text" value="" required)
input.js-teamWebsite(type="text" value="")
label
| {{_ 'active'}}
select.select-active.js-team-isactive
+6
View File
@@ -576,12 +576,14 @@ Template.editOrgPopup.events({
.value.trim();
const orgDesc = templateInstance.find('.js-orgDesc').value.trim();
const orgShortName = templateInstance.find('.js-orgShortName').value.trim();
const orgAutoAddUsersWithDomainName = templateInstance.find('.js-orgAutoAddUsersWithDomainName').value.trim();
const orgWebsite = templateInstance.find('.js-orgWebsite').value.trim();
const orgIsActive = templateInstance.find('.js-org-isactive').value.trim() == 'true';
const isChangeOrgDisplayName = orgDisplayName !== org.orgDisplayName;
const isChangeOrgDesc = orgDesc !== org.orgDesc;
const isChangeOrgShortName = orgShortName !== org.orgShortName;
const isChangeOrgAutoAddUsersWithDomainName = orgAutoAddUsersWithDomainName !== org.orgAutoAddUsersWithDomainName;
const isChangeOrgWebsite = orgWebsite !== org.orgWebsite;
const isChangeOrgIsActive = orgIsActive !== org.orgIsActive;
@@ -589,6 +591,7 @@ Template.editOrgPopup.events({
isChangeOrgDisplayName ||
isChangeOrgDesc ||
isChangeOrgShortName ||
isChangeOrgAutoAddUsersWithDomainName ||
isChangeOrgWebsite ||
isChangeOrgIsActive
) {
@@ -598,6 +601,7 @@ Template.editOrgPopup.events({
orgDisplayName,
orgDesc,
orgShortName,
orgAutoAddUsersWithDomainName,
orgWebsite,
orgIsActive,
);
@@ -920,6 +924,7 @@ Template.newOrgPopup.events({
.value.trim();
const orgDesc = templateInstance.find('.js-orgDesc').value.trim();
const orgShortName = templateInstance.find('.js-orgShortName').value.trim();
const orgAutoAddUsersWithDomainName = templateInstance.find('.js-orgAutoAddUsersWithDomainName').value.trim();
const orgWebsite = templateInstance.find('.js-orgWebsite').value.trim();
const orgIsActive =
templateInstance.find('.js-org-isactive').value.trim() == 'true';
@@ -929,6 +934,7 @@ Template.newOrgPopup.events({
orgDisplayName,
orgDesc,
orgShortName,
orgAutoAddUsersWithDomainName,
orgWebsite,
orgIsActive,
);
@@ -20,6 +20,10 @@ template(name="settingHeaderBar")
i.fa(class="fa-paperclip")
span {{_ 'attachments'}}
a.setting-header-btn.informations(href="{{pathFor 'translation'}}")
i.fa(class="fa-font")
span {{_ 'translation'}}
a.setting-header-btn.informations(href="{{pathFor 'information'}}")
i.fa(class="fa-info-circle")
span {{_ 'info'}}
@@ -0,0 +1,67 @@
.main-body {
overflow: scroll;
}
table {
color: #000;
}
table td,
table th {
border: 1px solid #d2d0d0;
text-align: left;
padding: 8px;
}
table tr:nth-child(even) {
background-color: #ddd;
}
.ext-box {
display: flex;
flex-direction: row;
height: 34px;
}
.ext-box .ext-box-left {
display: flex;
width: 100%;
gap: 10px;
}
.ext-box span {
vertical-align: center;
line-height: 34px;
}
.ext-box input,
.ext-box button {
padding: 0;
}
.ext-box button {
min-width: 90px;
}
.content-wrapper {
margin-top: 10px;
}
.buttonsContainer {
display: flex;
}
.buttonsContainer input {
margin: 0;
}
.buttonsContainer div {
margin: auto;
}
.more-settings-translation {
margin-left: 10px;
}
#cancelBtn {
margin-left: 5% !important;
background: #ffa500;
color: #fff;
}
#deleteAction {
margin-left: 5% !important;
}
p.js-translation-language {
font-weight: bold;
color: #000;
}
p.js-translation-text {
font-weight: bold;
color: #000;
}
@@ -0,0 +1,105 @@
template(name="translation")
.setting-content
unless currentUser.isAdmin
| {{_ 'error-notAuthorized'}}
else
.content-title.ext-box
.ext-box-left
if loading.get
+spinner
else if translationSetting.get
span
i.fa.fa-font
unless isMiniScreen
| {{_ 'translation'}}
input#searchTranslationInput(placeholder="{{_ 'search'}}")
button#searchTranslationButton
i.fa.fa-search
| {{_ 'search'}}
.ext-box-right
span {{#unless isMiniScreen}}{{_ 'translation-number'}}{{/unless}} #{translationNumber}
.content-body
.side-menu
ul
li.active
a.js-translation-menu(data-id="translation-setting")
i.fa.fa-font
| {{_ 'translation'}}
.main-body
if loading.get
+spinner
else if translationSetting.get
+translationGeneral
template(name="translationGeneral")
table
tbody
tr
th {{_ 'language'}}
th {{_ 'text'}}
th {{_ 'translation-text'}}
th
+newTranslationRow
each translation in translationList
+translationRow(translationId=translation._id)
template(name="newTranslationRow")
a.new-translation
i.fa.fa-plus-square
| {{_ 'new'}}
template(name="translationRow")
tr
td {{translationData.language}}
td {{translationData.text}}
td {{translationData.translationText}}
td
a.edit-translation
i.fa.fa-edit
| {{_ 'edit'}}
a.more-settings-translation
i.fa.fa-ellipsis-h
template(name="editTranslationPopup")
form
label
| {{_ 'language'}}
input.js-translation-language(type="text" value=translation.language required readonly)
label
| {{_ 'text'}}
input.js-translation-text(type="text" value=translation.text required readonly)
label
| {{_ 'translation-text'}}
input.js-translation-translation-text(type="text" value=translation.translationText)
hr
div.buttonsContainer
input.primary.wide(type="submit" value="{{_ 'save'}}")
template(name="newTranslationPopup")
form
label
| {{_ 'language'}}
input.js-translation-language(type="text" value="en" required)
label
| {{_ 'text'}}
span.error.hide.text-taken
| {{_ 'error-text-taken'}}
input.js-translation-text(type="text" value="" required)
label
| {{_ 'translation-text'}}
input.js-translation-translation-text(type="text" value="")
hr
div.buttonsContainer
input.primary.wide(type="submit" value="{{_ 'save'}}")
template(name="settingsTranslationPopup")
ul.pop-over-list
li
form
label
| {{_ 'delete-translation-confirm-popup'}}
br
label.hide.orgId(type="text" value=org._id)
div.buttonsContainer
input#deleteButton.card-details-red.right.wide(type="button" value="{{_ 'delete'}}")
@@ -0,0 +1,214 @@
import { ReactiveCache } from '/imports/reactiveCache';
const translationsPerPage = 25;
BlazeComponent.extendComponent({
mixins() {
return [Mixins.InfiniteScrolling];
},
onCreated() {
this.error = new ReactiveVar('');
this.loading = new ReactiveVar(false);
this.translationSetting = new ReactiveVar(true);
this.findTranslationsOptions = new ReactiveVar({});
this.numberTranslations = new ReactiveVar(0);
this.page = new ReactiveVar(1);
this.loadNextPageLocked = false;
this.callFirstWith(null, 'resetNextPeak');
this.autorun(() => {
const limitTranslations = this.page.get() * translationsPerPage;
this.subscribe('translation', this.findTranslationsOptions.get(), 0, () => {
this.loadNextPageLocked = false;
const nextPeakBefore = this.callFirstWith(null, 'getNextPeak');
this.calculateNextPeak();
const nextPeakAfter = this.callFirstWith(null, 'getNextPeak');
if (nextPeakBefore === nextPeakAfter) {
this.callFirstWith(null, 'resetNextPeak');
}
});
});
},
events() {
return [
{
'click #searchTranslationButton'() {
this.filterTranslation();
},
'keydown #searchTranslationInput'(event) {
if (event.keyCode === 13 && !event.shiftKey) {
this.filterTranslation();
}
},
'click #newTranslationButton'() {
Popup.open('newTranslation');
},
'click a.js-translation-menu': this.switchMenu,
},
];
},
filterTranslation() {
const value = $('#searchTranslationInput').first().val();
if (value === '') {
this.findTranslationsOptions.set({});
} else {
const regex = new RegExp(value, 'i');
this.findTranslationsOptions.set({
$or: [
{ language: regex },
{ text: regex },
{ translationText: regex },
],
});
}
},
loadNextPage() {
if (this.loadNextPageLocked === false) {
this.page.set(this.page.get() + 1);
this.loadNextPageLocked = true;
}
},
calculateNextPeak() {
const element = this.find('.main-body');
if (element) {
const altitude = element.scrollHeight;
this.callFirstWith(this, 'setNextPeak', altitude);
}
},
reachNextPeak() {
this.loadNextPage();
},
setError(error) {
this.error.set(error);
},
setLoading(w) {
this.loading.set(w);
},
translationList() {
const translations = ReactiveCache.getTranslations(this.findTranslationsOptions.get(), {
sort: { modifiedAt: 1 },
fields: { _id: true },
});
this.numberTranslations.set(translations.length);
return translations;
},
translationNumber() {
return this.numberTranslations.get();
},
switchMenu(event) {
const target = $(event.target);
if (!target.hasClass('active')) {
$('.side-menu li.active').removeClass('active');
target.parent().addClass('active');
const targetID = target.data('id');
this.translationSetting.set('translation-setting' === targetID);
}
},
}).register('translation');
Template.translationRow.helpers({
translationData() {
return ReactiveCache.getTranslation(this.translationId);
},
});
Template.editTranslationPopup.helpers({
translation() {
return ReactiveCache.getTranslation(this.translationId);
},
errorMessage() {
return Template.instance().errorMessage.get();
},
});
Template.newTranslationPopup.onCreated(function () {
this.errorMessage = new ReactiveVar('');
});
Template.newTranslationPopup.helpers({
translation() {
return ReactiveCache.getTranslation(this.translationId);
},
errorMessage() {
return Template.instance().errorMessage.get();
},
});
BlazeComponent.extendComponent({
onCreated() {},
translation() {
return ReactiveCache.getTranslation(this.translationId);
},
events() {
return [
{
'click a.edit-translation': Popup.open('editTranslation'),
'click a.more-settings-translation': Popup.open('settingsTranslation'),
},
];
},
}).register('translationRow');
BlazeComponent.extendComponent({
events() {
return [
{
'click a.new-translation': Popup.open('newTranslation'),
},
];
},
}).register('newTranslationRow');
Template.editTranslationPopup.events({
submit(event, templateInstance) {
event.preventDefault();
const translation = ReactiveCache.getTranslation(this.translationId);
const translationText = templateInstance.find('.js-translation-translation-text').value.trim();
Meteor.call(
'setTranslationText',
translation,
translationText
);
Popup.back();
},
});
Template.newTranslationPopup.events({
submit(event, templateInstance) {
event.preventDefault();
const language = templateInstance.find('.js-translation-language').value.trim();
const text = templateInstance.find('.js-translation-text').value.trim();
const translationText = templateInstance.find('.js-translation-translation-text').value.trim();
Meteor.call(
'setCreateTranslation',
language,
text,
translationText,
function(error) {
const textMessageElement = templateInstance.$('.text-taken');
if (error) {
const errorElement = error.error;
if (errorElement === 'text-already-taken') {
textMessageElement.show();
}
} else {
textMessageElement.hide();
Popup.back();
}
},
);
Popup.back();
},
});
Template.settingsTranslationPopup.events({
'click #deleteButton'(event) {
event.preventDefault();
Translation.remove(this.translationId);
Popup.back();
}
});
+32 -36
View File
@@ -175,7 +175,7 @@ template(name="boardInfoOnMyBoardsPopup")
template(name="boardCardSettingsPopup")
form.board-card-settings
h3 {{_ 'show-on-card'}}
h3 {{_ 'show-on-card'}}, {{_ 'show-on-minicard'}}
div.check-div
a.flex.js-field-has-receiveddate(class="{{#if allowsReceivedDate}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsReceivedDate}}is-checked{{/if}}")
@@ -206,14 +206,18 @@ template(name="boardCardSettingsPopup")
span
i.fa.fa-users
| {{_ 'members'}}
div.check-div
a.flex.js-field-has-creator(class="{{#if allowsCreator}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsCreator}}is-checked{{/if}}")
span
i.fa.fa-user
| {{_ 'creator'}}
div.check-div
a.flex.js-field-has-creator-on-minicard(class="{{#if allowsCreatorOnMinicard}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsCreatorOnMinicard}}is-checked{{/if}}")
span
i.fa.fa-user
| {{_ 'creator-on-minicard'}}
div.check-div
a.flex.js-field-has-assignee(class="{{#if allowsAssignee}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsAssignee}}is-checked{{/if}}")
@@ -238,6 +242,12 @@ template(name="boardCardSettingsPopup")
span
i.fa.fa-sort
| {{_ 'card-sorting-by-number'}}
div.check-div
a.flex.js-field-has-card-sorting-by-number-on-minicard(class="{{#if allowsCardSortingByNumberOnMinicard}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsCardSortingByNumberOnMinicard}}is-checked{{/if}}")
span
i.fa.fa-sort
| {{_ 'card-sorting-by-number-on-minicard'}}
div.check-div
a.flex.js-field-has-card-show-lists(class="{{#if allowsShowLists}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsShowLists}}is-checked{{/if}}")
@@ -271,6 +281,12 @@ template(name="boardCardSettingsPopup")
i.fa.fa-align-left
| {{_ 'description'}}
| {{_ 'custom-field-text'}}
div.check-div
a.flex.js-field-has-description-text-on-minicard(class="{{#if allowsDescriptionTextOnMinicard}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsDescriptionTextOnMinicard}}is-checked{{/if}}")
span
i.fa.fa-align-left
| {{_ 'description-on-minicard'}}
div.check-div
a.flex.js-field-has-checklists(class="{{#if allowsChecklists}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsChecklists}}is-checked{{/if}}")
@@ -289,6 +305,19 @@ template(name="boardCardSettingsPopup")
span
i.fa.fa-paperclip
| {{_ 'attachments'}}
div.check-div
a.flex.js-field-has-badge-attachment-on-minicard(class="{{#if allowsBadgeAttachmentOnMinicard}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsBadgeAttachmentOnMinicard}}is-checked{{/if}}")
span
i.fa.fa-paperclip
| {{_ 'badge-attachment-on-minicard'}}
div.check-div
a.flex.js-field-has-cover-attachment-on-minicard(class="{{#if allowsCoverAttachmentOnMinicard}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsCoverAttachmentOnMinicard}}is-checked{{/if}}")
span
i.fa.fa-book
i.fa.fa-picture-o
| {{_ 'cover-attachment-on-minicard'}}
//div.check-div
// a.flex.js-field-has-comments(class="{{#if allowsComments}}is-checked{{/if}}")
// .materialCheckBox(class="{{#if allowsComments}}is-checked{{/if}}")
@@ -302,35 +331,6 @@ template(name="boardCardSettingsPopup")
// i.fa.fa-history
// | {{_ 'activities'}}
template(name="boardMinicardSettingsPopup")
form.board-minicard-settings
h3 {{_ 'show-on-minicard'}}
div.check-div
a.flex.js-field-has-description-text-on-minicard(class="{{#if allowsDescriptionTextOnMinicard}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsDescriptionTextOnMinicard}}is-checked{{/if}}")
span
i.fa.fa-align-left
| {{_ 'description-on-minicard'}}
div.check-div
a.flex.js-field-has-cover-attachment-on-minicard(class="{{#if allowsCoverAttachmentOnMinicard}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsCoverAttachmentOnMinicard}}is-checked{{/if}}")
span
i.fa.fa-book
i.fa.fa-picture-o
| {{_ 'cover-attachment-on-minicard'}}
div.check-div
a.flex.js-field-has-badge-attachment-on-minicard(class="{{#if allowsBadgeAttachmentOnMinicard}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsBadgeAttachmentOnMinicard}}is-checked{{/if}}")
span
i.fa.fa-paperclip
| {{_ 'badge-attachment-on-minicard'}}
div.check-div
a.flex.js-field-has-card-sorting-by-number-on-minicard(class="{{#if allowsCardSortingByNumberOnMinicard}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsCardSortingByNumberOnMinicard}}is-checked{{/if}}")
span
i.fa.fa-sort
| {{_ 'card-sorting-by-number-on-minicard'}}
template(name="boardSubtaskSettingsPopup")
form.board-subtask-settings
h3 {{_ 'show-parent-in-minicard'}}
@@ -473,10 +473,6 @@ template(name="boardMenuPopup")
a.js-card-settings
i.fa.fa-id-card-o
| {{_ 'card-settings'}}
li
a.js-minicard-settings
i.fa.fa-id-card-o
| {{_ 'minicard-settings'}}
li
a.js-subtask-settings
i.fa.fa-sitemap
+54 -70
View File
@@ -236,7 +236,6 @@ Template.boardMenuPopup.events({
'click .js-import-board': Popup.open('chooseBoardSource'),
'click .js-subtask-settings': Popup.open('boardSubtaskSettings'),
'click .js-card-settings': Popup.open('boardCardSettings'),
'click .js-minicard-settings': Popup.open('boardMinicardSettings'),
'click .js-export-board': Popup.open('exportBoard'),
});
@@ -921,6 +920,14 @@ BlazeComponent.extendComponent({
);
},
allowsCreatorOnMinicard() {
return (
this.currentBoard.allowsCreatorOnMinicard === null ||
this.currentBoard.allowsCreatorOnMinicard === undefined ||
this.currentBoard.allowsCreatorOnMinicard
);
},
allowsMembers() {
return this.currentBoard.allowsMembers;
},
@@ -984,6 +991,22 @@ BlazeComponent.extendComponent({
);
},
allowsDescriptionTextOnMinicard() {
return this.currentBoard.allowsDescriptionTextOnMinicard;
},
allowsCoverAttachmentOnMinicard() {
return this.currentBoard.allowsCoverAttachmentOnMinicard;
},
allowsBadgeAttachmentOnMinicard() {
return this.currentBoard.allowsBadgeAttachmentOnMinicard;
},
allowsCardSortingByNumberOnMinicard() {
return this.currentBoard.allowsCardSortingByNumberOnMinicard;
},
boards() {
const ret = ReactiveCache.getBoards(
{
@@ -1106,6 +1129,19 @@ BlazeComponent.extendComponent({
this.currentBoard.allowsCreator,
);
},
'click .js-field-has-creator-on-minicard'(evt) {
evt.preventDefault();
this.currentBoard.allowsCreatorOnMinicard = !this.currentBoard.allowsCreatorOnMinicard;
this.currentBoard.setAllowsCreatorOnMinicard(this.currentBoard.allowsCreatorOnMinicard);
$(`.js-field-has-creator-on-minicard ${MCB}`).toggleClass(
CKCLS,
this.currentBoard.allowsCreatorOnMinicard,
);
$('.js-field-has-creator-on-minicard').toggleClass(
CKCLS,
this.currentBoard.allowsCreatorOnMinicard,
);
},
'click .js-field-has-members'(evt) {
evt.preventDefault();
this.currentBoard.allowsMembers = !this.currentBoard.allowsMembers;
@@ -1241,6 +1277,22 @@ BlazeComponent.extendComponent({
this.currentBoard.allowsCardNumber,
);
},
'click .js-field-has-description-text-on-minicard'(evt) {
evt.preventDefault();
this.currentBoard.allowsDescriptionTextOnMinicard = !this.currentBoard
.allowsDescriptionTextOnMinicard;
this.currentBoard.setallowsDescriptionTextOnMinicard(
this.currentBoard.allowsDescriptionTextOnMinicard,
);
$(`.js-field-has-description-text-on-minicard ${MCB}`).toggleClass(
CKCLS,
this.currentBoard.allowsDescriptionTextOnMinicard,
);
$('.js-field-has-description-text-on-minicard').toggleClass(
CKCLS,
this.currentBoard.allowsDescriptionTextOnMinicard,
);
},
'click .js-field-has-description-text'(evt) {
evt.preventDefault();
this.currentBoard.allowsDescriptionText = !this.currentBoard
@@ -1318,74 +1370,6 @@ BlazeComponent.extendComponent({
this.currentBoard.allowsActivities,
);
},
},
];
},
}).register('boardCardSettingsPopup');
BlazeComponent.extendComponent({
onCreated() {
this.currentBoard = Utils.getCurrentBoard();
},
allowsDescriptionTextOnMinicard() {
return this.currentBoard.allowsDescriptionTextOnMinicard;
},
allowsCoverAttachmentOnMinicard() {
return this.currentBoard.allowsCoverAttachmentOnMinicard;
},
allowsBadgeAttachmentOnMinicard() {
return this.currentBoard.allowsBadgeAttachmentOnMinicard;
},
allowsCardSortingByNumberOnMinicard() {
return this.currentBoard.allowsCardSortingByNumberOnMinicard;
},
lists() {
return ReactiveCache.getLists(
{
boardId: this.currentBoard._id,
archived: false,
},
{
sort: ['title'],
},
);
},
hasLists() {
return this.lists().length > 0;
},
isListSelected() {
return (
this.currentBoard.dateSettingsDefaultBoardId === this.currentData()._id
);
},
events() {
return [
{
'click .js-field-has-description-text-on-minicard'(evt) {
evt.preventDefault();
this.currentBoard.allowsDescriptionTextOnMinicard = !this.currentBoard
.allowsDescriptionTextOnMinicard;
this.currentBoard.setallowsDescriptionTextOnMinicard(
this.currentBoard.allowsDescriptionTextOnMinicard,
);
$(`.js-field-has-description-text-on-minicard ${MCB}`).toggleClass(
CKCLS,
this.currentBoard.allowsDescriptionTextOnMinicard,
);
$('.js-field-has-description-text-on-minicard').toggleClass(
CKCLS,
this.currentBoard.allowsDescriptionTextOnMinicard,
);
},
'click .js-field-has-cover-attachment-on-minicard'(evt) {
evt.preventDefault();
this.currentBoard.allowsCoverAttachmentOnMinicard = !this.currentBoard
@@ -1437,7 +1421,7 @@ BlazeComponent.extendComponent({
},
];
},
}).register('boardMinicardSettingsPopup');
}).register('boardCardSettingsPopup');
BlazeComponent.extendComponent({
onCreated() {
+27 -22
View File
@@ -17,14 +17,16 @@ template(name="swimlaneFixedHeader")
| {{_ 'list-templates-swimlane'}}
else if $eq title 'Board Templates'
| {{_ 'board-templates-swimlane'}}
else if $eq title 'Default'
| {{_ 'defaultdefault'}}
else
+viewer
= title
| {{isTitleDefault title}}
.swimlane-header-menu
unless currentUser.isCommentOnly
if currentUser.isBoardAdmin
a.fa.fa-plus.js-open-add-swimlane-menu.swimlane-header-plus-icon(title="{{_ 'add-swimlane'}}")
a.fa.fa-navicon.js-open-swimlane-menu(title="{{_ 'swimlaneActionPopup-title'}}")
a.fa.fa-navicon.js-open-swimlane-menu(title="{{_ 'swimlaneActionPopup-title'}}")
unless isTouchScreen
if isShowDesktopDragHandles
a.swimlane-header-handle.handle.fa.fa-arrows.js-swimlane-header-handle
@@ -33,7 +35,7 @@ template(name="swimlaneFixedHeader")
template(name="editSwimlaneTitleForm")
.list-composer
input.list-name-input.full-line(type="text" value=title autofocus)
input.list-name-input.full-line(type="text" value="{{isTitleDefault title}}" autofocus)
.edit-controls.clearfix
button.primary.confirm(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
@@ -41,27 +43,29 @@ template(name="editSwimlaneTitleForm")
template(name="swimlaneActionPopup")
unless currentUser.isCommentOnly
ul.pop-over-list
li: a.js-set-swimlane-color
i.fa.fa-paint-brush
| {{_ 'select-color'}}
if currentUser.isBoardAdmin
li: a.js-set-swimlane-color
i.fa.fa-paint-brush
| {{_ 'select-color'}}
li: a.js-set-swimlane-height
i.fa.fa-arrows-v
| {{_ 'set-swimlane-height'}}
unless this.isTemplateContainer
hr
ul.pop-over-list
li: a.js-close-swimlane
i.fa.fa-arrow-right
i.fa.fa-archive
| {{_ 'archive-swimlane'}}
ul.pop-over-list
li: a.js-copy-swimlane
i.fa.fa-copy
| {{_ 'copy-swimlane'}}
ul.pop-over-list
li: a.js-move-swimlane
i.fa.fa-arrow-up
| {{_ 'move-swimlane'}}
if currentUser.isBoardAdmin
unless this.isTemplateContainer
hr
ul.pop-over-list
li: a.js-close-swimlane
i.fa.fa-arrow-right
i.fa.fa-archive
| {{_ 'archive-swimlane'}}
ul.pop-over-list
li: a.js-copy-swimlane
i.fa.fa-copy
| {{_ 'copy-swimlane'}}
ul.pop-over-list
li: a.js-move-swimlane
i.fa.fa-arrow-up
| {{_ 'move-swimlane'}}
template(name="swimlaneAddPopup")
unless currentUser.isCommentOnly
@@ -87,7 +91,8 @@ template(name="setSwimlaneColorPopup")
template(name="setSwimlaneHeightPopup")
#js-swimlane-height-edit
label {{_ 'set-swimlane-height-value'}}
label a) {{_ 'set-swimlane-height-value'}}
label b) -1
p
input.swimlane-height-value(type="number" value="{{ swimlaneHeightValue }}" min="100")
input.swimlane-height-apply(type="submit" value="{{_ 'apply'}}")
+50 -1
View File
@@ -1,3 +1,4 @@
import { TAPi18n } from '/imports/i18n';
import { ReactiveCache } from '/imports/reactiveCache';
const { calculateIndexData } = Utils;
@@ -33,6 +34,53 @@ Template.swimlaneFixedHeader.helpers({
isBoardAdmin() {
return ReactiveCache.getCurrentUser().isBoardAdmin();
},
isTitleDefault(title) {
// https://github.com/wekan/wekan/issues/4763
// https://github.com/wekan/wekan/issues/4742
// Translation text for "default" does not work, it returns an object.
// When that happens, try use translation "defaultdefault" that has same content of default, or return text "Default".
// This can happen, if swimlane does not have name.
// Yes, this is fixing the symptom (Swimlane title does not have title)
// instead of fixing the problem (Add Swimlane title when creating swimlane)
// because there could be thousands of swimlanes, adding name Default to all of them
// would be very slow.
if (title.startsWith("key 'default") && title.endsWith('returned an object instead of string.')) {
if (`${TAPi18n.__('defaultdefault')}`.startsWith("key 'default") && `${TAPi18n.__('defaultdefault')}`.endsWith('returned an object instead of string.')) {
return 'Default';
} else {
return `${TAPi18n.__('defaultdefault')}`;
}
} else if (title === 'Default') {
return `${TAPi18n.__('defaultdefault')}`;
} else {
return title;
}
},
});
Template.editSwimlaneTitleForm.helpers({
isTitleDefault(title) {
// https://github.com/wekan/wekan/issues/4763
// https://github.com/wekan/wekan/issues/4742
// Translation text for "default" does not work, it returns an object.
// When that happens, try use translation "defaultdefault" that has same content of default, or return text "Default".
// This can happen, if swimlane does not have name.
// Yes, this is fixing the symptom (Swimlane title does not have title)
// instead of fixing the problem (Add Swimlane title when creating swimlane)
// because there could be thousands of swimlanes, adding name Default to all of them
// would be very slow.
if (title.startsWith("key 'default") && title.endsWith('returned an object instead of string.')) {
if (`${TAPi18n.__('defaultdefault')}`.startsWith("key 'default") && `${TAPi18n.__('defaultdefault')}`.endsWith('returned an object instead of string.')) {
return 'Default';
} else {
return `${TAPi18n.__('defaultdefault')}`;
}
} else if (title === 'Default') {
return `${TAPi18n.__('defaultdefault')}`;
} else {
return title;
}
},
});
Template.swimlaneActionPopup.events({
@@ -147,7 +195,8 @@ BlazeComponent.extendComponent({
);
// FIXME(mark-i-m): where do we put constants?
if (height < 100 || !height) {
// also in imports/i18n/data/en.i18n.json
if (height != -1 && (height < 100 || !height)) {
Template.instance()
.$('.swimlane-height-error')
.click();
@@ -47,7 +47,6 @@
display: flex;
flex-direction: row;
overflow: 0;
max-height: calc(100% - 26px);
}
.swimlane.placeholder {
background-color: rgba(0,0,0,0.2);
+1 -1
View File
@@ -3,7 +3,7 @@ template(name="swimlane")
+swimlaneHeader
unless collapseSwimlane
.swimlane.js-lists.js-swimlane(id="swimlane-{{_id}}"
style="height:{{swimlaneHeight}}px;")
style="height:{{swimlaneHeight}};")
if isMiniScreen
if currentListIsInThisSwimlane _id
+list(currentList)
+2 -1
View File
@@ -227,7 +227,8 @@ BlazeComponent.extendComponent({
swimlaneHeight() {
const user = Meteor.user();
const swimlane = Template.currentData();
return user.getSwimlaneHeight(swimlane.boardId, swimlane._id);
const height = user.getSwimlaneHeight(swimlane.boardId, swimlane._id);
return height == -1 ? "auto" : (height + "px");
},
}).register('swimlane');
+1
View File
@@ -248,6 +248,7 @@ Template.editProfilePopup.events({
// XXX For some reason the useraccounts autofocus isnt working in this case.
// See https://github.com/meteor-useraccounts/core/issues/384
Template.changePasswordPopup.onRendered(function() {
$('.at-pwd-form').show();
this.find('#at-field-current_password').focus();
});
+48
View File
@@ -57,6 +57,9 @@ window.ExportHtml = Popup => {
Array.from(
document.querySelectorAll('#header-main-bar .board-header-btns'),
).forEach(elem => elem.remove());
Array.from(
document.querySelectorAll('.js-pop-over, .pop-over'),
).forEach(elem => elem.remove());
Array.from(document.querySelectorAll('.list-composer')).forEach(elem =>
elem.remove(),
);
@@ -152,6 +155,50 @@ window.ExportHtml = Popup => {
);
};
const getWebFonts = () => {
fontUrls = [];
for (let sheet of document.styleSheets) {
// Get the base URL of the stylesheet
let baseUrl = sheet.href ? new URL(sheet.href).origin : window.location.origin;
try {
for (let rule of sheet.cssRules) {
if (rule.type === CSSRule.FONT_FACE_RULE) {
let src = rule.style.getPropertyValue('src');
let urlMatch = src.match(/url\(["']?(.+?)["']?\)/);
if (urlMatch) {
let fontUrl = urlMatch[1];
// Resolve the URL relative to the stylesheet's base URL
let resolvedUrl = new URL(fontUrl, baseUrl);
fontUrls.push(resolvedUrl.href); // Using .href to get the absolute URL
}
}
}
} catch (e) {
console.log('Access to stylesheet blocked:', e);
}
}
return fontUrls;
};
const downloadFonts = async(elements, zip) => {
await asyncForEach(elements, async elem => {
const response = await fetch(elem);
const responseBody = await response.blob();
const filename = elem.split('/')
.pop()
.split('?')
.shift()
.split('#')
.shift();
const fileFullPath = `webfonts/${filename}`;
zip.file(fileFullPath, responseBody);
});
}
const downloadCardCovers = async (elements, zip, boardSlug) => {
await asyncForEach(elements, async elem => {
const response = await fetch(
@@ -194,6 +241,7 @@ window.ExportHtml = Popup => {
await downloadStylesheets(getStylesheetList(), zip);
await downloadSrcAttached(getSrcAttached(), zip, boardSlug);
await downloadCardCovers(getCardCovers(), zip, boardSlug);
await downloadFonts(getWebFonts(), zip);
addBoardHTMLToZip(boardSlug, zip);
+12
View File
@@ -33,6 +33,14 @@ Mousetrap.bind('q', () => {
}
});
Mousetrap.bind('a', () => {
const currentBoardId = Session.get('currentBoard');
const currentUserId = Meteor.userId();
if (currentBoardId && currentUserId) {
Filter.assignees.toggle(currentUserId);
}
});
Mousetrap.bind('x', () => {
if (Filter.isActive()) {
Filter.reset();
@@ -181,6 +189,10 @@ Template.keyboardShortcuts.helpers({
keys: ['q'],
action: 'shortcut-filter-my-cards',
},
{
keys: ['a'],
action: 'shortcut-filter-my-assigned-cards',
},
{
keys: ['f'],
action: 'shortcut-toggle-filterbar',
+3 -4
View File
@@ -126,10 +126,9 @@ AccountsTemplates.configure({
AccountsTemplates.configureRoute('changePwd', {
redirect() {
// XXX We should emit a notification once we have a notification system.
// Currently the user has no indication that his modification has been
// applied.
Popup.back();
// We should go back with the popup but we don't since user feedback about the change is within the popup only.
// Once we have a global feedback popup mechanism we can use that here and close with the following:
// Popup.back();
},
});
+24
View File
@@ -381,6 +381,30 @@ FlowRouter.route('/attachments', {
},
});
FlowRouter.route('/translation', {
name: 'translation',
triggersEnter: [
AccountsTemplates.ensureSignedIn,
() => {
Session.set('currentBoard', null);
Session.set('currentList', null);
Session.set('currentCard', null);
Session.set('popupCardId', null);
Session.set('popupCardBoardId', null);
Filter.reset();
Session.set('sortBy', '');
EscapeActions.executeAll();
},
],
action() {
BlazeLayout.render('defaultLayout', {
headerBar: 'settingHeaderBar',
content: 'translation',
});
},
});
FlowRouter.notFound = {
action() {
BlazeLayout.render('defaultLayout', { content: 'notFound' });
+11 -2
View File
@@ -105,9 +105,9 @@ services:
- 27017
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- wekan-db:/data/db
- wekan-db-dump:/dump
#- /etc/timezone:/etc/timezone:ro # Do not use https://github.com/wekan/wekan/issues/5123
wekan:
#-------------------------------------------------------------------------------------
@@ -120,7 +120,10 @@ services:
# image: quay.io/wekan/wekan:v6.89
# image: wekanteam/wekan:v6.89
# b) GitHub Container registry.
# b1) Latest release tag:
image: ghcr.io/wekan/wekan:latest
# b2) Newest git commit automatic build:
#image: ghcr.io/wekan/wekan:main
# c) Quay:
#image: quay.io/wekan/wekan:latest
# d) Docker Hub:
@@ -245,6 +248,10 @@ services:
# ==== NUMBER OF SEARCH RESULTS PER PAGE BY DEFAULT ====
#- RESULTS_PER_PAGE=20
#---------------------------------------------------------------
# ==== AFTER OIDC LOGIN, ADD USERS AUTOMATICALLY TO THIS BOARD ID ====
# https://github.com/wekan/wekan/pull/5098
#- DEFAULT_BOARD_ID=abcd1234
#---------------------------------------------------------------
# ==== WEKAN API AND EXPORT BOARD ====
# Wekan Export Board works when WITH_API=true.
# https://github.com/wekan/wekan/wiki/REST-API
@@ -361,7 +368,7 @@ services:
#-----------------------------------------------------------------
# ==== OUTGOING WEBHOOKS ====
# What to send to Outgoing Webhook, or leave out. If commented out the default values will be: cardId,listId,oldListId,boardId,comment,user,card,commentId,swimlaneId,customerField,customFieldValue
#- WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,commentId
#- WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,board,list,swimlane,commentId
#-----------------------------------------------------------------
# ==== Debug OIDC OAuth2 etc ====
#- DEBUG=true
@@ -384,6 +391,8 @@ services:
#- OAUTH2_CA_CERT=ABCD1234
# Use OAuth2 ADFS additional changes. Also needs OAUTH2_ENABLED=true setting.
#- OAUTH2_ADFS_ENABLED=false
# Azure AD B2C. https://github.com/wekan/wekan/issues/5242
#- OAUTH2_B2C_ENABLED=false
# OAuth2 login style: popup or redirect.
#- OAUTH2_LOGIN_STYLE=redirect
# Application GUID captured during app registration:
+782
View File
@@ -0,0 +1,782 @@
version: '2'
#---------------------------------------------------------------------------------------------------------
# ==== START ====
# docker-compose up -d -f docker-compose.yml-arm64
#---------------------------------------------------------------------------------------------------------
# Note: Do not add single quotes '' to variables. Having spaces still works without quotes where required.
#---------------------------------------------------------------------------------------------------------
# ==== CREATING USERS AND LOGGING IN TO WEKAN ====
# https://github.com/wekan/wekan/wiki/Adding-users
#---------------------------------------------------------------------------------------------------------
# ==== FORGOT PASSWORD ====
# https://github.com/wekan/wekan/wiki/Forgot-Password
#---------------------------------------------------------------------------------------------------------
# ==== Upgrading Wekan to new version =====
# NOTE: MongoDB has changed from 3.x to 4.x, in that case you need backup/restore with --noIndexRestore
# see https://github.com/wekan/wekan/wiki/Backup
# 1) Stop Wekan:
# docker-compose stop
# 2) Remove old Wekan app (wekan-app only, not that wekan-db container that has all your data)
# docker rm wekan-app
# 3) Get newest docker-compose.yml from https://github.com/wekan/wekan to have correct image,
# for example: "image: quay.io/wekan/wekan" or version tag "image: quay.io/wekan/wekan:v4.52"
# 4) Start Wekan:
# docker-compose up -d
#----------------------------------------------------------------------------------
# ==== OPTIONAL: DEDICATED DOCKER USER ====
# 1) Optionally create a dedicated user for Wekan, for example:
# sudo useradd -d /home/wekan -m -s /bin/bash wekan
# 2) Add this user to the docker group, then logout+login or reboot:
# sudo usermod -aG docker wekan
# 3) Then login as user wekan.
# 4) Create this file /home/wekan/docker-compose.yml with your modifications.
#----------------------------------------------------------------------------------
# ==== RUN DOCKER AS SERVICE ====
# 1a) Running Docker as service, on Systemd like Debian 9, Ubuntu 16.04, CentOS 7:
# sudo systemctl enable docker
# sudo systemctl start docker
# 1b) Running Docker as service, on init.d like Debian 8, Ubuntu 14.04, CentOS 6:
# sudo update-rc.d docker defaults
# sudo service docker start
# ----------------------------------------------------------------------------------
# ==== USAGE OF THIS docker-compose.yml ====
# 1) For seeing does Wekan work, try this and check with your web browser:
# docker-compose up
# 2) Stop Wekan and start Wekan in background:
# docker-compose stop
# docker-compose up -d
# 3) See running Docker containers:
# docker ps
# 4) Stop Docker containers:
# docker-compose stop
# ----------------------------------------------------------------------------------
# ===== INSIDE DOCKER CONTAINERS, AND BACKUP/RESTORE ====
# https://github.com/wekan/wekan/wiki/Backup
# If really necessary, repair MongoDB: https://github.com/wekan/wekan-mongodb/issues/6#issuecomment-424004116
# 1) Going inside containers:
# a) Wekan app, does not contain data
# docker exec -it wekan-app bash
# b) MongoDB, contains all data
# docker exec -it wekan-db bash
# 2) Copying database to outside of container:
# docker exec -it wekan-db bash
# cd /data
# mongodump
# exit
# docker cp wekan-db:/data/dump .
# 3) Restoring database
# # 1) Stop wekan
# docker stop wekan-app
# # 2) Go inside database container
# docker exec -it wekan-db bash
# # 3) and data directory
# cd /data
# # 4) Remove previous dump
# rm -rf dump
# # 5) Exit db container
# exit
# # 6) Copy dump to inside docker container
# docker cp dump wekan-db:/data/
# # 7) Go inside database container
# docker exec -it wekan-db bash
# # 8) and data directory
# cd /data
# # 9) Restore
# mongorestore --drop
# # 10) Exit db container
# exit
# # 11) Start wekan
# docker start wekan-app
#-------------------------------------------------------------------------
services:
wekandb:
#-------------------------------------------------------------------------------------
# ==== MONGODB FROM DOCKER HUB ====
image: mongo:6
#-------------------------------------------------------------------------------------
container_name: wekan-db
restart: always
# command: mongod --oplogSize 128
# Syslog: mongod --syslog --oplogSize 128 --quiet
# Disable MongoDB logs:
command: mongod --logpath /dev/null --oplogSize 128 --quiet
networks:
- wekan-tier
expose:
- 27017
volumes:
- /etc/localtime:/etc/localtime:ro
- wekan-db:/data/db
- wekan-db-dump:/dump
#- /etc/timezone:/etc/timezone:ro # Do not use https://github.com/wekan/wekan/issues/5123
wekan:
#-------------------------------------------------------------------------------------
# ==== WEKAN FROM GITHUB/QUAY/DOCKER HUB ====
# All of GitHub, Quay and Docker Hub have latest, but because
# latest tag changes when is newest release,
# when upgrading would be better to use version tag.
# a) Using specific version tag is better:
# image: ghcr.io/wekan/wekan:v6.89
# image: quay.io/wekan/wekan:v6.89
# image: wekanteam/wekan:v6.89
# b) GitHub Container registry.
#image: ghcr.io/wekan/wekan:main
image: ghcr.io/wekan/wekan:v7.09-arm64
# c) Quay:
#image: quay.io/wekan/wekan:latest
# d) Docker Hub:
#image: wekanteam/wekan:latest
#-------------------------------------------------------------------------------------
container_name: wekan-app
# On CentOS 7 there is seccomp issue with glibc 6,
# so CentOS 7 users shoud use these security_opt seccomp:unconfined
# settings to get WeKan working. See:
# - https://github.com/wekan/wekan/issues/4585
# - https://github.com/wekan/wekan/issues/4587
#security_opt:
# - seccomp:unconfined
restart: always
networks:
- wekan-tier
#-------------------------------------------------------------------------------------
# ==== BUILD wekan-app DOCKER CONTAINER FROM SOURCE, if you uncomment these ====
# ==== and use commands: docker-compose up -d --build
#build:
# context: .
# dockerfile: Dockerfile
#-------------------------------------------------------------------------------------
ports:
# Docker outsideport:insideport. Do not add anything extra here.
# For example, if you want to have wekan on port 3001,
# use 3001:8080 . Do not add any extra address etc here, that way it does not work.
# remove port mapping if you use nginx reverse proxy, port 8080 is already exposed to wekan-tier network
- 80:8080
environment:
#-----------------------------------------------------------------
# ==== WRITEABLE PATH FOR FILE UPLOADS ====
- WRITABLE_PATH=/data
#-----------------------------------------------------------------
# ==== AWS S3 FOR FILES ====
# Any region. For example:
# us-standard,us-west-1,us-west-2,
# eu-west-1,eu-central-1,
# ap-southeast-1,ap-northeast-1,sa-east-1
#
#- S3='{"s3":{"key": "xxx", "secret": "xxx", "bucket": "xxx", "region": "xxx"}}'
#-----------------------------------------------------------------
# ==== MONGO_URL ====
- MONGO_URL=mongodb://wekandb:27017/wekan
#---------------------------------------------------------------
# ==== ROOT_URL SETTING ====
# Change ROOT_URL to your real Wekan URL, for example:
# If you have Caddy/Nginx/Apache providing SSL
# - https://example.com
# - https://boards.example.com
# This can be problematic with avatars https://github.com/wekan/wekan/issues/1776
# - https://example.com/wekan
# If without https, can be only wekan node, no need for Caddy/Nginx/Apache if you don't need them
# - http://example.com
# - http://boards.example.com
# - http://192.168.1.100 <=== using at local LAN
- ROOT_URL=http://localhost # <=== using only at same laptop/desktop where Wekan is installed
#---------------------------------------------------------------
# ==== EMAIL SETTINGS ====
# Email settings are only at MAIL_URL and MAIL_FROM.
# Admin Panel has test button, but it's not used for settings.
# see https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
# For SSL in email, change smtp:// to smtps://
# NOTE: Special characters need to be url-encoded in MAIL_URL.
# You can encode those characters for example at: https://www.urlencoder.org
#- MAIL_URL=smtp://user:pass@mailserver.example.com:25/
- MAIL_URL=smtp://<mail_url>:25/?ignoreTLS=true&tls={rejectUnauthorized:false}
- MAIL_FROM=Wekan Notifications <noreply.wekan@mydomain.com>
# Currently MAIL_SERVICE is not in use.
#- MAIL_SERVICE=Outlook365
#- MAIL_SERVICE_USER=firstname.lastname@hotmail.com
#- MAIL_SERVICE_PASSWORD=SecretPassword
#---------------------------------------------------------------
# https://github.com/wekan/wekan/issues/3585#issuecomment-1021522132
# Add more Node heap, this is done by default at Dockerfile:
# - NODE_OPTIONS="--max_old_space_size=4096"
# Add more stack, this is done at Dockerfile:
# bash -c "ulimit -s 65500; exec node --stack-size=65500 main.js"
#---------------------------------------------------------------
# ==== OPTIONAL: MONGO OPLOG SETTINGS =====
# https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-378343587
# We've fixed our CPU usage problem today with an environment
# change around Wekan. I wasn't aware during implementation
# that if you're using more than 1 instance of Wekan
# (or any MeteorJS based tool) you're supposed to set
# MONGO_OPLOG_URL as an environment variable.
# Without setting it, Meteor will perform a poll-and-diff
# update of it's dataset. With it, Meteor will update from
# the OPLOG. See here
# https://blog.meteor.com/tuning-meteor-mongo-livedata-for-scalability-13fe9deb8908
# After setting
# MONGO_OPLOG_URL=mongodb://<username>:<password>@<mongoDbURL>/local?authSource=admin&replicaSet=rsWekan
# the CPU usage for all Wekan instances dropped to an average
# of less than 10% with only occasional spikes to high usage
# (I guess when someone is doing a lot of work)
# - MONGO_OPLOG_URL=mongodb://<username>:<password>@<mongoDbURL>/local?authSource=admin&replicaSet=rsWekan
#---------------------------------------------------------------
# ==== OPTIONAL: KADIRA PERFORMANCE MONITORING FOR METEOR ====
# https://github.com/edemaine/kadira-compose
# https://github.com/meteor/meteor-apm-agent
# https://blog.meteor.com/kadira-apm-is-now-open-source-490469ffc85f
#- APM_OPTIONS_ENDPOINT=http://<kadira-ip>:11011
#- APM_APP_ID=
#- APM_APP_SECRET=
#---------------------------------------------------------------
# ==== OPTIONAL: LOGS AND STATS ====
# https://github.com/wekan/wekan/wiki/Logs
#
# Daily export of Wekan changes as JSON to Logstash and ElasticSearch / Kibana (ELK)
# https://github.com/wekan/wekan-logstash
#
# Statistics Python script for Wekan Dashboard
# https://github.com/wekan/wekan-stats
#
# Console, file, and zulip logger on database changes https://github.com/wekan/wekan/pull/1010
# with fix to replace console.log by winston logger https://github.com/wekan/wekan/pull/1033
# but there could be bug https://github.com/wekan/wekan/issues/1094
#
# There is Feature Request: Logging date and time of all activity with summary reports,
# and requesting reason for changing card to other column https://github.com/wekan/wekan/issues/1598
#---------------------------------------------------------------
# ==== NUMBER OF SEARCH RESULTS PER PAGE BY DEFAULT ====
#- RESULTS_PER_PAGE=20
#---------------------------------------------------------------
# ==== AFTER OIDC LOGIN, ADD USERS AUTOMATICALLY TO THIS BOARD ID ====
# https://github.com/wekan/wekan/pull/5098
#- DEFAULT_BOARD_ID=abcd1234
#---------------------------------------------------------------
# ==== WEKAN API AND EXPORT BOARD ====
# Wekan Export Board works when WITH_API=true.
# https://github.com/wekan/wekan/wiki/REST-API
# https://github.com/wekan/wekan-gogs
# If you disable Wekan API with false, Export Board does not work.
- WITH_API=true
#---------------------------------------------------------------
# ==== PASSWORD BRUTE FORCE PROTECTION ====
#https://atmospherejs.com/lucasantoniassi/accounts-lockout
#Defaults below. Uncomment to change. wekan/server/accounts-lockout.js
#- ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3
#- ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60
#- ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15
#---------------------------------------------------------------
# ==== ACCOUNT OPTIONS ====
# https://docs.meteor.com/api/accounts-multi.html#AccountsCommon-config
# Defaults below. Uncomment to change. wekan/server/accounts-common.js
# - ACCOUNTS_COMMON_LOGIN_EXPIRATION_IN_DAYS=90
#---------------------------------------------------------------
# ==== RICH TEXT EDITOR IN CARD COMMENTS ====
# https://github.com/wekan/wekan/pull/2560
- RICHER_CARD_COMMENT_EDITOR=false
#---------------------------------------------------------------
# ==== CARD OPENED, SEND WEBHOOK MESSAGE ====
# https://github.com/wekan/wekan/issues/2518
- CARD_OPENED_WEBHOOK_ENABLED=false
#---------------------------------------------------------------
# ==== Allow configuration to validate uploaded attachments ====
#-ATTACHMENTS_UPLOAD_EXTERNAL_PROGRAM=/usr/local/bin/avscan {file}
#-ATTACHMENTS_UPLOAD_MIME_TYPES=image/*,text/*
#-ATTACHMENTS_UPLOAD_MAX_SIZE=5000000
#---------------------------------------------------------------
# ==== Allow configuration to validate uploaded avatars ====
#-AVATARS_UPLOAD_EXTERNAL_PROGRAM=/usr/local/bin/avscan {file}
#-AVATARS_UPLOAD_MIME_TYPES=image/*
#-AVATARS_UPLOAD_MAX_SIZE=500000
#---------------------------------------------------------------
# ==== Allow to shrink attached/pasted image ====
# https://github.com/wekan/wekan/pull/2544
#- MAX_IMAGE_PIXEL=1024
#- IMAGE_COMPRESS_RATIO=80
#---------------------------------------------------------------
# ==== NOTIFICATION TRAY AFTER READ DAYS BEFORE REMOVE =====
# Number of days after a notification is read before we remove it.
# Default: 2
#- NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE=2
#---------------------------------------------------------------
# ==== BIGEVENTS DUE ETC NOTIFICATIONS =====
# https://github.com/wekan/wekan/pull/2541
# 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) Example
#- BIGEVENTS_PATTERN=due
# b) All
#- BIGEVENTS_PATTERN=received|start|due|end
# c) Disabled
- BIGEVENTS_PATTERN=NONE
#---------------------------------------------------------------
# ==== EMAIL DUE DATE NOTIFICATION =====
# https://github.com/wekan/wekan/pull/2536
# System timelines will be showing any user modification for
# dueat startat endat receivedat, also notification to
# the watchers and if any card is due, about due or past due.
#
# Notify due days, default is None, 2 days before and on the event day
#- NOTIFY_DUE_DAYS_BEFORE_AND_AFTER=2,0
#
# Notify due at hour of day. Default every morning at 8am. Can be 0-23.
# If env variable has parsing error, use default. Notification sent to watchers.
#- NOTIFY_DUE_AT_HOUR_OF_DAY=8
#-----------------------------------------------------------------
# ==== EMAIL NOTIFICATION TIMEOUT, ms =====
# Default: 30000 ms = 30s
#- EMAIL_NOTIFICATION_TIMEOUT=30000
#-----------------------------------------------------------------
# ==== CORS =====
# CORS: Set Access-Control-Allow-Origin header.
#- CORS=*
# CORS_ALLOW_HEADERS: Set Access-Control-Allow-Headers header. "Authorization,Content-Type" is required for cross-origin use of the API.
#- CORS_ALLOW_HEADERS=Authorization,Content-Type
# CORS_EXPOSE_HEADERS: Set Access-Control-Expose-Headers header. This is not needed for typical CORS situations
#- CORS_EXPOSE_HEADERS=*
#-----------------------------------------------------------------
# ==== MATOMO INTEGRATION ====
# Optional: Integration with Matomo https://matomo.org that is installed to your server
# The address of the server where Matomo is hosted.
#- MATOMO_ADDRESS=https://example.com/matomo
# The value of the site ID given in Matomo server for Wekan
#- MATOMO_SITE_ID=1
# The option do not track which enables users to not be tracked by matomo
#- MATOMO_DO_NOT_TRACK=true
# The option that allows matomo to retrieve the username:
#- MATOMO_WITH_USERNAME=true
#-----------------------------------------------------------------
# ==== BROWSER POLICY AND TRUSTED IFRAME URL ====
# Enable browser policy and allow one trusted URL that can have iframe that has Wekan embedded inside.
# Setting this to false is not recommended, it also disables all other browser policy protections
# and allows all iframing etc. See wekan/server/policy.js
- BROWSER_POLICY_ENABLED=true
# When browser policy is enabled, HTML code at this Trusted URL can have iframe that embeds Wekan inside.
#- TRUSTED_URL=https://intra.example.com
#-----------------------------------------------------------------
# ==== METRICS ALLOWED IP ADDRESSES ====
# https://github.com/wekan/wekan/wiki/Metrics
#- METRICS_ALLOWED_IP_ADDRESSES=192.168.0.100,192.168.0.200
#-----------------------------------------------------------------
# ==== OUTGOING WEBHOOKS ====
# What to send to Outgoing Webhook, or leave out. If commented out the default values will be: cardId,listId,oldListId,boardId,comment,user,card,commentId,swimlaneId,customerField,customFieldValue
#- WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,commentId
#-----------------------------------------------------------------
# ==== Debug OIDC OAuth2 etc ====
#- DEBUG=true
#---------------------------------------------
# ==== AUTOLOGIN WITH OIDC/OAUTH2 ====
# https://github.com/wekan/wekan/wiki/autologin
#- OIDC_REDIRECTION_ENABLED=true
#-----------------------------------------------------------------
# ==== OAUTH2 ORACLE on premise identity manager OIM ====
#- ORACLE_OIM_ENABLED=true
#-----------------------------------------------------------------
# ==== OAUTH2 AZURE ====
# https://github.com/wekan/wekan/wiki/Azure
# 1) Register the application with Azure. Make sure you capture
# the application ID as well as generate a secret key.
# 2) Configure the environment variables. This differs slightly
# by installation type, but make sure you have the following:
#- OAUTH2_ENABLED=true
# Optional OAuth2 CA Cert, see https://github.com/wekan/wekan/issues/3299
#- OAUTH2_CA_CERT=ABCD1234
# Use OAuth2 ADFS additional changes. Also needs OAUTH2_ENABLED=true setting.
#- OAUTH2_ADFS_ENABLED=false
# OAuth2 login style: popup or redirect.
#- OAUTH2_LOGIN_STYLE=redirect
# Application GUID captured during app registration:
#- OAUTH2_CLIENT_ID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
# Secret key generated during app registration:
#- OAUTH2_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#- OAUTH2_SERVER_URL=https://login.microsoftonline.com/
#- OAUTH2_AUTH_ENDPOINT=/oauth2/v2.0/authorize
#- OAUTH2_USERINFO_ENDPOINT=https://graph.microsoft.com/oidc/userinfo
#- OAUTH2_TOKEN_ENDPOINT=/oauth2/v2.0/token
# The claim name you want to map to the unique ID field:
#- OAUTH2_ID_MAP=email
# The claim name you want to map to the username field:
#- OAUTH2_USERNAME_MAP=email
# The claim name you want to map to the full name field:
#- OAUTH2_FULLNAME_MAP=name
# The claim name you want to map to the email field:
#- OAUTH2_EMAIL_MAP=email
#-----------------------------------------------------------------
# ==== OAUTH2 Nextcloud ====
# 1) Register the application with Nextcloud: https://your.nextcloud/index.php/settings/admin/security
# Make sure you capture the application ID as well as generate a secret key.
# Use https://your.wekan/_oauth/oidc for the redirect URI.
# 2) Configure the environment variables. This differs slightly
# by installation type, but make sure you have the following:
#- OAUTH2_ENABLED=true
# OAuth2 login style: popup or redirect.
#- OAUTH2_LOGIN_STYLE=redirect
# Application GUID captured during app registration:
#- OAUTH2_CLIENT_ID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
# Secret key generated during app registration:
#- OAUTH2_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#- OAUTH2_SERVER_URL=https://your-nextcloud.tld
#- OAUTH2_AUTH_ENDPOINT=/index.php/apps/oauth2/authorize
#- OAUTH2_USERINFO_ENDPOINT=/ocs/v2.php/cloud/user?format=json
#- OAUTH2_TOKEN_ENDPOINT=/index.php/apps/oauth2/api/v1/token
# The claim name you want to map to the unique ID field:
#- OAUTH2_ID_MAP=id
# The claim name you want to map to the username field:
#- OAUTH2_USERNAME_MAP=id
# The claim name you want to map to the full name field:
#- OAUTH2_FULLNAME_MAP=display-name
# The claim name you want to map to the email field:
#- OAUTH2_EMAIL_MAP=email
#-----------------------------------------------------------------
# ==== OAUTH2 KEYCLOAK ====
# https://github.com/wekan/wekan/wiki/Keycloak <== MAPPING INFO, REQUIRED
#- OAUTH2_ENABLED=true
# OAuth2 login style: popup or redirect.
#- OAUTH2_LOGIN_STYLE=redirect
#- OAUTH2_CLIENT_ID=<Keycloak create Client ID>
#- OAUTH2_SERVER_URL=<Keycloak server name>/auth
#- OAUTH2_AUTH_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/auth
#- OAUTH2_USERINFO_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/userinfo
#- OAUTH2_TOKEN_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/token
#- OAUTH2_SECRET=<keycloak client secret>
#-----------------------------------------------------------------
# ==== OAUTH2 DOORKEEPER ====
# https://github.com/wekan/wekan/issues/1874
# https://github.com/wekan/wekan/wiki/OAuth2
# Enable the OAuth2 connection
#- OAUTH2_ENABLED=true
# OAuth2 docs: https://github.com/wekan/wekan/wiki/OAuth2
# OAuth2 login style: popup or redirect.
#- OAUTH2_LOGIN_STYLE=redirect
# OAuth2 Client ID.
#- OAUTH2_CLIENT_ID=abcde12345
# OAuth2 Secret.
#- OAUTH2_SECRET=54321abcde
# OAuth2 Server URL.
#- OAUTH2_SERVER_URL=https://chat.example.com
# OAuth2 Authorization Endpoint.
#- OAUTH2_AUTH_ENDPOINT=/oauth/authorize
# OAuth2 Userinfo Endpoint.
#- OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
# OAuth2 Token Endpoint.
#- OAUTH2_TOKEN_ENDPOINT=/oauth/token
# OAUTH2 ID Token Whitelist Fields.
#- OAUTH2_ID_TOKEN_WHITELIST_FIELDS=""
# OAUTH2 Request Permissions.
#- OAUTH2_REQUEST_PERMISSIONS=openid profile email
# OAuth2 ID Mapping
#- OAUTH2_ID_MAP=
# OAuth2 Username Mapping
#- OAUTH2_USERNAME_MAP=
# OAuth2 Fullname Mapping
#- OAUTH2_FULLNAME_MAP=
# OAuth2 Email Mapping
#- OAUTH2_EMAIL_MAP=
#-----------------------------------------------------------------
# ==== LDAP: UNCOMMENT ALL TO ENABLE LDAP ====
# https://github.com/wekan/wekan/wiki/LDAP
# For Snap settings see https://github.com/wekan/wekan-snap/wiki/Supported-settings-keys
# Most settings work both on Snap and Docker below.
# Note: Do not add single quotes '' to variables. Having spaces still works without quotes where required.
#
# The default authentication method used if a user does not exist to create and authenticate. Can be set as ldap.
# (this is set properly in the Admin Panel, changing this item does not remove Password login option)
#- DEFAULT_AUTHENTICATION_METHOD=ldap
#
# Enable or not the connection by the LDAP
#- LDAP_ENABLE=true
#
# The port of the LDAP server
#- LDAP_PORT=389
#
# The host server for the LDAP server
#- LDAP_HOST=localhost
#
#-----------------------------------------------------------------
# ==== LDAP AD Simple Auth ====
#
# Set to true, if you want to connect with Active Directory by Simple Authentication.
# When using AD Simple Auth, LDAP_BASEDN is not needed.
#
# Example:
#- LDAP_AD_SIMPLE_AUTH=true
#
# === LDAP User Authentication ===
#
# a) 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).
#
# b) When using AD Simple Auth, set to true, when login user is used for binding,
# and LDAP_BASEDN is not needed.
#
# Example:
#- LDAP_USER_AUTHENTICATION=true
#
# Which field is used to find the user for the user authentication. Default: uid.
#- LDAP_USER_AUTHENTICATION_FIELD=uid
#
# === LDAP Default Domain ===
#
# a) In case AD SimpleAuth is configured, the default domain is appended to the given
# loginname for creating the correct username for the bind request to AD.
#
# b) The default domain of the ldap it is used to create email if the field is not map
# correctly with the LDAP_SYNC_USER_DATA_FIELDMAP
#
# Example :
#- LDAP_DEFAULT_DOMAIN=mydomain.com
#
#-----------------------------------------------------------------
# ==== LDAP BASEDN Auth ====
#
# The base DN for the LDAP Tree
#- LDAP_BASEDN=ou=user,dc=example,dc=org
#
#-----------------------------------------------------------------
# Fallback on the default authentication method
#- LDAP_LOGIN_FALLBACK=false
#
# Reconnect to the server if the connection is lost
#- LDAP_RECONNECT=true
#
# Overall timeout, in milliseconds
#- LDAP_TIMEOUT=10000
#
# Specifies the timeout for idle LDAP connections in milliseconds
#- LDAP_IDLE_TIMEOUT=10000
#
# Connection timeout, in milliseconds
#- LDAP_CONNECT_TIMEOUT=10000
#
# If the LDAP needs a user account to search
#- LDAP_AUTHENTIFICATION=true
#
# The search user DN - You need quotes when you have spaces in parameters
# 2 examples:
#- LDAP_AUTHENTIFICATION_USERDN=CN=ldap admin,CN=users,DC=domainmatter,DC=lan
#- LDAP_AUTHENTIFICATION_USERDN=CN=wekan_adm,OU=serviceaccounts,OU=admin,OU=prod,DC=mydomain,DC=com
#
# The password for the search user
#- LDAP_AUTHENTIFICATION_PASSWORD=pwd
#
# Enable logs for the module
#- LDAP_LOG_ENABLED=true
#
# If the sync of the users should be done in the background
#- LDAP_BACKGROUND_SYNC=false
#
# At which interval does the background task sync.
# The format must be as specified in:
# https://bunkat.github.io/later/parsers.html#text
#- LDAP_BACKGROUND_SYNC_INTERVAL=every 1 hour
#
#- LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false
#
#- LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=false
#
# If using LDAPS: LDAP_ENCRYPTION=ssl
#- LDAP_ENCRYPTION=false
#
# The certification for the LDAPS server. Certificate needs to be included in this docker-compose.yml file.
#- LDAP_CA_CERT=-----BEGIN CERTIFICATE-----MIIE+G2FIdAgIC...-----END CERTIFICATE-----
#
# Reject Unauthorized Certificate
#- LDAP_REJECT_UNAUTHORIZED=false
#
# Optional extra LDAP filters. Don't forget the outmost enclosing parentheses if needed
#- LDAP_USER_SEARCH_FILTER=
#
# base (search only in the provided DN), one (search only in the provided DN and one level deep), or sub (search the whole subtree)
#- LDAP_USER_SEARCH_SCOPE=one
#
# Which field is used to find the user, like uid / sAMAccountName
#- LDAP_USER_SEARCH_FIELD=sAMAccountName
#
# Used for pagination (0=unlimited)
#- LDAP_SEARCH_PAGE_SIZE=0
#
# The limit number of entries (0=unlimited)
#- LDAP_SEARCH_SIZE_LIMIT=0
#
# Enable group filtering. Note the authenticated ldap user must be able to query all relevant group data with own login data from ldap.
#- LDAP_GROUP_FILTER_ENABLE=false
#
# The object class for filtering. Example: group
#- LDAP_GROUP_FILTER_OBJECTCLASS=
#
# The attribute of a group identifying it. Example: cn
#- LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE=
#
# The attribute inside a group object listing its members. Example: member
#- LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE=
#
# The format of the value of LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE. Example: 'dn' if the users dn is saved as value into the attribute.
#- LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT=
#
# The group name (id) that matches all users.
#- LDAP_GROUP_FILTER_GROUP_NAME=
#
# LDAP_UNIQUE_IDENTIFIER_FIELD : This field is sometimes class GUID (Globally Unique Identifier). Example: guid
#- LDAP_UNIQUE_IDENTIFIER_FIELD=
#
# LDAP_UTF8_NAMES_SLUGIFY : Convert the username to utf8
#- LDAP_UTF8_NAMES_SLUGIFY=true
#
# LDAP_USERNAME_FIELD : Which field contains the ldap username. username / sAMAccountName
#- LDAP_USERNAME_FIELD=sAMAccountName
#
# LDAP_FULLNAME_FIELD : Which field contains the ldap fullname. fullname / sAMAccountName
#- LDAP_FULLNAME_FIELD=fullname
#
#- LDAP_MERGE_EXISTING_USERS=false
#
# Allow existing account matching by e-mail address when username does not match
#- LDAP_EMAIL_MATCH_ENABLE=true
#
# LDAP_EMAIL_MATCH_REQUIRE : require existing account matching by e-mail address when username does match
#- LDAP_EMAIL_MATCH_REQUIRE=true
#
# LDAP_EMAIL_MATCH_VERIFIED : require existing account email address to be verified for matching
#- LDAP_EMAIL_MATCH_VERIFIED=true
#
# LDAP_EMAIL_FIELD : which field contains the LDAP e-mail address
#- LDAP_EMAIL_FIELD=mail
#-----------------------------------------------------------------
#- LDAP_SYNC_USER_DATA=false
#
#- LDAP_SYNC_USER_DATA_FIELDMAP={"cn":"name", "mail":"email"}
#
#- LDAP_SYNC_GROUP_ROLES=
#
# The default domain of the ldap it is used to create email if the field is not map correctly
# with the LDAP_SYNC_USER_DATA_FIELDMAP is defined in setting LDAP_DEFAULT_DOMAIN above.
#
# Enable/Disable syncing of admin status based on ldap groups:
#- LDAP_SYNC_ADMIN_STATUS=true
#
# Comma separated list of admin group names to sync.
#- LDAP_SYNC_ADMIN_GROUPS=group1,group2
#---------------------------------------------------------------------
# Login to LDAP automatically with HTTP header.
# In below example for siteminder, at right side of = is header name.
#- HEADER_LOGIN_ID=HEADERUID
#- HEADER_LOGIN_FIRSTNAME=HEADERFIRSTNAME
#- HEADER_LOGIN_LASTNAME=HEADERLASTNAME
#- HEADER_LOGIN_EMAIL=HEADEREMAILADDRESS
#---------------------------------------------------------------------
# ==== LOGOUT TIMER, probably does not work yet ====
# LOGOUT_WITH_TIMER : Enables or not the option logout with timer
# example : LOGOUT_WITH_TIMER=true
#- LOGOUT_WITH_TIMER=
#
# LOGOUT_IN : The number of days
# example : LOGOUT_IN=1
#- LOGOUT_IN=
#
# LOGOUT_ON_HOURS : The number of hours
# example : LOGOUT_ON_HOURS=9
#- LOGOUT_ON_HOURS=
#
# LOGOUT_ON_MINUTES : The number of minutes
# example : LOGOUT_ON_MINUTES=55
#- LOGOUT_ON_MINUTES=
#-------------------------------------------------------------------
# Hide password login form
# - PASSWORD_LOGIN_ENABLED=true
#-------------------------------------------------------------------
#- CAS_ENABLED=true
#- CAS_BASE_URL=https://cas.example.com/cas
#- CAS_LOGIN_URL=https://cas.example.com/login
#- CAS_VALIDATE_URL=https://cas.example.com/cas/p3/serviceValidate
#---------------------------------------------------------------------
#- SAML_ENABLED=true
#- SAML_PROVIDER=
#- SAML_ENTRYPOINT=
#- SAML_ISSUER=
#- SAML_CERT=
#- SAML_IDPSLO_REDIRECTURL=
#- SAML_PRIVATE_KEYFILE=
#- SAML_PUBLIC_CERTFILE=
#- SAML_IDENTIFIER_FORMAT=
#- SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE=
#- SAML_ATTRIBUTES=
#---------------------------------------------------------------------
# Wait spinner to use
# - WAIT_SPINNER=Bounce
#---------------------------------------------------------------------
depends_on:
- wekandb
volumes:
- /etc/localtime:/etc/localtime:ro
- wekan-files:/data:rw
#---------------------------------------------------------------------------------
# ==== OPTIONAL: SHARE DATABASE TO OFFICE LAN AND REMOTE VPN ====
# When using Wekan both at office LAN and remote VPN:
# 1) Have above Wekan docker container config with LAN IP address
# 2) Copy all of above wekan container config below, look above of this part above and all config below it,
# before above depends_on: part:
#
# wekan:
# #-------------------------------------------------------------------------------------
# # ==== MONGODB AND METEOR VERSION ====
# # a) For Wekan Meteor 1.8.x version at meteor-1.8 branch, .....
#
#
# and change name to different name like wekan2 or wekanvpn, and change ROOT_URL to server VPN IP
# address.
# 3) This way both Wekan containers can use same MongoDB database
# and see the same Wekan boards.
# 4) You could also add 3rd Wekan container for 3rd network etc.
# EXAMPLE:
# wekan2:
# ....COPY CONFIG FROM ABOVE TO HERE...
# environment:
# - ROOT_URL='http://10.10.10.10'
# ...COPY CONFIG FROM ABOVE TO HERE...
#---------------------------------------------------------------------------------
# OPTIONAL NGINX CONFIG FOR REVERSE PROXY
# nginx:
# image: nginx
# container_name: nginx
# restart: always
# networks:
# - wekan-tier
# depends_on:
# - wekan
# ports:
# - 80:80
# - 443:443
# volumes:
# - ./nginx/ssl:/etc/nginx/ssl/:ro
# - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
## Alternative volume config:
## volumes:
## - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
## - ./nginx/ssl/ssl.conf:/etc/nginx/conf.d/ssl/ssl.conf:ro
## - ./nginx/ssl/testvm-ehu.crt:/etc/nginx/conf.d/ssl/certs/mycert.crt:ro
## - ./nginx/ssl/testvm-ehu.key:/etc/nginx/conf.d/ssl/certs/mykey.key:ro
## - ./nginx/ssl/pphrase:/etc/nginx/conf.d/ssl/pphrase:ro
volumes:
wekan-files:
driver: local
wekan-db:
driver: local
wekan-db-dump:
driver: local
networks:
wekan-tier:
driver: bridge
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+18 -2
View File
@@ -113,7 +113,7 @@
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+18 -2
View File
@@ -113,7 +113,7 @@
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+17 -1
View File
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "مسح التصفيات",
"shortcut-close-dialog": "غلق النافذة",
"shortcut-filter-my-cards": "تصفية بطاقاتي",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "عرض قائمة الإختصارات ،تلك",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "موقع الكتروني",
"person": "شخص",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "المنشئ",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "تقارير الملفات",
"reports": "تقارير",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "نص",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+18 -2
View File
@@ -113,7 +113,7 @@
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+18 -2
View File
@@ -113,7 +113,7 @@
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+18 -2
View File
@@ -113,7 +113,7 @@
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+18 -2
View File
@@ -113,7 +113,7 @@
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+18 -2
View File
@@ -113,7 +113,7 @@
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+17 -1
View File
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Изчистване на всички филтри",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Филтрирай моите карти",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Отвори/затвори сайдбара с филтри",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Изтрий таблото",
"default-subtasks-board": "Подзадачи за табло __board__",
"default": "по подразбиране",
"defaultdefault": "по подразбиране",
"queue": "Опашка",
"subtask-settings": "Настройки на Подзадачите",
"card-settings": "Настройки на Карта",
@@ -961,6 +963,7 @@
"teams": "Екипи",
"displayName": "Име",
"shortName": "Кратко име",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Уебсайт",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Текст",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+18 -2
View File
@@ -113,7 +113,7 @@
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+17 -1
View File
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Elimina tots els filtres",
"shortcut-close-dialog": "Tanca el diàleg",
"shortcut-filter-my-cards": "Filtra les meves fitxes",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Mostra aquesta llista d'accessoris directes",
"shortcut-toggle-filterbar": "Canvia la barra lateral del tauler",
"shortcut-toggle-searchbar": "Commuta la barra lateral de cerca",
@@ -727,6 +728,7 @@
"delete-board": "Suprimeix el tauler",
"default-subtasks-board": "Subtasques per al tauler __board__",
"default": "Per defecte",
"defaultdefault": "Per defecte",
"queue": "Cua",
"subtask-settings": "Configuració de subtasques",
"card-settings": "Configuració de fitxa",
@@ -961,6 +963,7 @@
"teams": "Equips",
"displayName": "Nom de visualització",
"shortName": "Nom curt",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Lloc web",
"person": "Persona",
"my-cards": "Les meves fitxes",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separador (utilitza &#32; or &nbsp; per a un espai)",
"custom-field-stringtemplate-item-placeholder": "Premeu Intro per afegir més elements",
"creator": "Creador",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Informe d'arxius",
"reports": "Informes",
"rulesReportTitle": "Informe de normes",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Tipus de fitxer permesos per a l'avatar:",
"invalid-file": "Si el nom de fitxer és invàlid, actualitzar o renombrar es cancel·la.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+18 -2
View File
@@ -113,7 +113,7 @@
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+18 -2
View File
@@ -113,7 +113,7 @@
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+17 -1
View File
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Vyčistit všechny filtry",
"shortcut-close-dialog": "Zavřít dialog",
"shortcut-filter-my-cards": "Filtrovat mé karty",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Otevřít tento seznam odkazů",
"shortcut-toggle-filterbar": "Přepnout lištu filtrování",
"shortcut-toggle-searchbar": "Přepnout lištu vyhledávání",
@@ -727,6 +728,7 @@
"delete-board": "Smazat tablo",
"default-subtasks-board": "Podúkoly pro tablo __board__",
"default": "Výchozí",
"defaultdefault": "Výchozí",
"queue": "Fronta",
"subtask-settings": "Nastavení podúkolů",
"card-settings": "Nastavení karet",
@@ -961,6 +963,7 @@
"teams": "Týmy",
"displayName": "Zobrazovaný název",
"shortName": "Krátký název",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Webová stránka",
"person": "Osoba",
"my-cards": "Moje karty",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Oddělovač (pro mezeru použijte &#32; nebo &nbsp;)",
"custom-field-stringtemplate-item-placeholder": "Stiskněte enter pro přidání více položek",
"creator": "Tvůrce",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Report souborů",
"reports": "Reporty",
"rulesReportTitle": "Report pravidel",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+17 -1
View File
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Vyčistit všechny filtry",
"shortcut-close-dialog": "Zavřít dialog",
"shortcut-filter-my-cards": "Filtrovat mé karty",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Otevřít tento seznam odkazů",
"shortcut-toggle-filterbar": "Přepnout lištu filtrování",
"shortcut-toggle-searchbar": "Přepnout lištu vyhledávání",
@@ -727,6 +728,7 @@
"delete-board": "Smazat tablo",
"default-subtasks-board": "Podúkoly pro tablo __board__",
"default": "Výchozí",
"defaultdefault": "Výchozí",
"queue": "Fronta",
"subtask-settings": "Nastavení podúkolů",
"card-settings": "Nastavení karet",
@@ -961,6 +963,7 @@
"teams": "Týmy",
"displayName": "Zobrazovaný název",
"shortName": "Krátký název",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Webová stránka",
"person": "Osoba",
"my-cards": "Moje karty",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Oddělovač (pro mezeru použijte &#32; nebo &nbsp;)",
"custom-field-stringtemplate-item-placeholder": "Stiskněte enter pro přidání více položek",
"creator": "Tvůrce",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Report souborů",
"reports": "Reporty",
"rulesReportTitle": "Report pravidel",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+18 -2
View File
@@ -113,7 +113,7 @@
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+18 -2
View File
@@ -113,7 +113,7 @@
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+35 -19
View File
@@ -85,14 +85,14 @@
"add-card": "Tilføj kort",
"add-card-to-top-of-list": "Add Card to Top of List",
"add-card-to-bottom-of-list": "Add Card to Bottom of List",
"setListWidthPopup-title": "Set List Width",
"set-list-width": "Set List Width",
"set-list-width-value": "List Width (pixels)",
"list-width-error-message": "List width must be a positive integer",
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
"set-swimlane-height": "Set Swimlane Height",
"set-swimlane-height-value": "Swimlane Height (pixels)",
"swimlane-height-error-message": "Swimlane height must be a positive integer",
"setListWidthPopup-title": "Angiv bredde på lister",
"set-list-width": "Angiv bredde på lister",
"set-list-width-value": "Bredde på lister (pixels)",
"list-width-error-message": "Listens bredde skal være et positivt heltal",
"setSwimlaneHeightPopup-title": "Angiv højde på svømmebane",
"set-swimlane-height": "Angiv højde på svømmebane",
"set-swimlane-height-value": "Svømmebanes bredde (pixels)",
"swimlane-height-error-message": "Svømmebreddes højde skal være et positivt heltal",
"add-swimlane": "Tilføj svømmebane",
"add-subtask": "Tilføj delopgave",
"add-checklist": "Tilføj tjekliste",
@@ -100,10 +100,10 @@
"close-add-checklist-item": "Close add an item to checklist form",
"close-edit-checklist-item": "Close edit an item to checklist form",
"convertChecklistItemToCardPopup-title": "Convert to Card",
"add-cover": "Add cover image to minicard",
"add-cover": "Tilføj coverbillede til minikort",
"add-label": "Tilføj etikette",
"add-list": "Tilføj liste",
"add-after-list": "Add After List",
"add-after-list": "Tilføj efter liste",
"add-members": "Tilføj medlemmer",
"added": "Tilføjet",
"addMemberPopup-title": "Medlemmer",
@@ -143,10 +143,10 @@
"attachmentDeletePopup-title": "Slet vedhæftning?",
"attachments": "Vedhæftninger",
"auto-watch": "Følg automatisk tavler når de oprettes",
"avatar-too-big": "The avatar is too large (__size__ max)",
"avatar-too-big": "Avataren er for stor (__size__ max)",
"back": "Tilbage",
"board-change-color": "Skift farve",
"board-change-background-image": "Change Background Image",
"board-change-background-image": "Skift baggrundsbillede",
"board-background-image-url": "Background Image URL",
"add-background-image": "Add Background Image",
"remove-background-image": "Remove Background Image",
@@ -162,9 +162,9 @@
"board-public-info": "Denne tavle vil være <strong>offentlig</strong>.",
"board-drag-drop-reorder-or-click-open": "Drag and drop to reorder board icons. Click board icon to open board.",
"boardChangeColorPopup-title": "Skift tavlens baggrund",
"boardChangeBackgroundImagePopup-title": "Change Background Image",
"boardChangeBackgroundImagePopup-title": "Skift baggrundsbillede",
"allBoardsChangeColorPopup-title": "Skift farve",
"allBoardsChangeBackgroundImagePopup-title": "Change Background Image",
"allBoardsChangeBackgroundImagePopup-title": "Skift baggrundsbillede",
"boardChangeTitlePopup-title": "Omdøb tavle",
"boardChangeVisibilityPopup-title": "Tilpas synlighed",
"boardChangeWatchPopup-title": "Tilpas følgefunktion",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Ryd alle filtre",
"shortcut-close-dialog": "Luk dialogboks",
"shortcut-filter-my-cards": "Filtrer mine kort",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Fremvis denne liste med genveje",
"shortcut-toggle-filterbar": "Slå filter-sidebjælke til/fra",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Slet tavle",
"default-subtasks-board": "Delopgaver for tavlen __board__",
"default": "Standard",
"defaultdefault": "Standard",
"queue": "Kø",
"subtask-settings": "Indstillinger for delopgaver",
"card-settings": "Indstillinger for kort",
@@ -818,7 +820,7 @@
"r-item": "element",
"r-of-checklist": "fra tjekliste",
"r-send-email": "Send en e-mail",
"r-to": "to",
"r-to": "til",
"r-of": "af",
"r-subject": "emne",
"r-rule-details": "Detaljer for regel",
@@ -827,7 +829,7 @@
"r-d-move-to-bottom-gen": "Flyt kortet til bunden af dens liste",
"r-d-move-to-bottom-spec": "Flyt kortet til bunden af listen",
"r-d-send-email": "Send e-mail",
"r-d-send-email-to": "to",
"r-d-send-email-to": "til",
"r-d-send-email-subject": "emne",
"r-d-send-email-message": "besked",
"r-d-archive": "Flyt kortet til arkiv",
@@ -853,7 +855,7 @@
"r-items-list": "element1,element2,element3",
"r-add-swimlane": "Tilføj svømmebane",
"r-swimlane-name": "navn på svømmebane",
"r-board-note": "Note: leave a field empty to match every possible value. ",
"r-board-note": "Bemærk: lad et felt stå tomt for at matche alle værdier.",
"r-checklist-note": "Bemærk: tjeklistens elementer skal skrives som en kommaadskilte værdier.",
"r-when-a-card-is-moved": "Når et kort flyttes til en anden liste.",
"r-set": "Angiv",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1097,7 +1100,7 @@
"label-names": "Label Names",
"archived-at": "archived at",
"sort-cards": "Sort Cards",
"sort-is-on": "Sort is on",
"sort-is-on": "Sortering er slået til",
"cardsSortPopup-title": "Sort Cards",
"due-date": "Due Date",
"server-error": "Server Error",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Oversæt",
"text": "Tekst",
"translation-text": "Oversættelsestekst",
"show-at-minicard": "Vis et minikort",
"show-checklist-at-minicard": "Vis tjekliste på minikort",
"show-subtasks-field": "Vis felt med underopgaver",
"convert-to-markdown": "Konvertér til markdown"
}
+17 -1
View File
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Alle Filter entfernen",
"shortcut-close-dialog": "Dialog schließen",
"shortcut-filter-my-cards": "Meine Karten filtern",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Liste der Tastaturkürzel anzeigen",
"shortcut-toggle-filterbar": "Filter-Seitenleiste ein-/ausblenden",
"shortcut-toggle-searchbar": "Such-Seitenleiste ein-/ausblenden",
@@ -727,6 +728,7 @@
"delete-board": "Board löschen",
"default-subtasks-board": "Teilaufgabe für __board__ Board",
"default": "Standard",
"defaultdefault": "Standard",
"queue": "Warteschlange",
"subtask-settings": "Einstellungen für Teilaufgaben",
"card-settings": "Karten-Einstellungen",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Anzeigename",
"shortName": "Kurzname",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Webseite",
"person": "Person",
"my-cards": "Meine Karten",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Trenner (verwende &#32; oder &nbsp; für einen Leerschritt)",
"custom-field-stringtemplate-item-placeholder": "Drücke die Eingabetaste, um weitere Einträge hinzuzufügen",
"creator": "Ersteller",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Dateien-Bericht",
"reports": "Berichte",
"rulesReportTitle": "Regeln-Bericht",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+17 -1
View File
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Alle Filter entfernen",
"shortcut-close-dialog": "Dialog schliessen",
"shortcut-filter-my-cards": "Meine Karten filtern",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Liste der Tastaturkürzel anzeigen",
"shortcut-toggle-filterbar": "Filter-Seitenleiste ein-/ausblenden",
"shortcut-toggle-searchbar": "Such-Seitenleiste ein-/ausblenden",
@@ -727,6 +728,7 @@
"delete-board": "Board löschen",
"default-subtasks-board": "Teilaufgabe für __board__ Board",
"default": "Standard",
"defaultdefault": "Standard",
"queue": "Warteschlange",
"subtask-settings": "Einstellungen für Teilaufgaben",
"card-settings": "Karten-Einstellungen",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Anzeigename",
"shortName": "Kurzname",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Webseite",
"person": "Person",
"my-cards": "Meine Karten",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Trenner (verwende &#32; oder &nbsp; für einen Leerschritt)",
"custom-field-stringtemplate-item-placeholder": "Drücke die Eingabetaste, um weitere Einträge hinzuzufügen",
"creator": "Ersteller",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Dateien-Bericht",
"reports": "Berichte",
"rulesReportTitle": "Regeln-Bericht",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+35 -19
View File
@@ -143,14 +143,14 @@
"attachmentDeletePopup-title": "Anhang löschen?",
"attachments": "Anhänge",
"auto-watch": "Neue Boards nach Erstellung automatisch beobachten",
"avatar-too-big": "Das Profilbild ist zu groß (__Größe__ max)",
"avatar-too-big": "Das Profilbild ist zu groß (__size__ max)",
"back": "Zurück",
"board-change-color": "Farbe ändern",
"board-change-background-image": "Hintergrundbild ändern",
"board-background-image-url": "Hintergrundbild URL",
"add-background-image": "Hintergrundbild hinzufügen",
"remove-background-image": "Hintergrundbild entfernen",
"show-at-all-boards-page" : "Zeige auf \"Alle Boards\" Seite",
"show-at-all-boards-page" : "Auf der \"Alle Boards\" Seite anzeigen",
"board-info-on-my-boards" : "Einstellungen für Alle Boards",
"boardInfoOnMyBoardsPopup-title" : "Einstellungen für Alle Boards",
"boardInfoOnMyBoards-title": "Einstellungen für Alle Boards",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Alle Filter entfernen",
"shortcut-close-dialog": "Dialog schließen",
"shortcut-filter-my-cards": "Meine Karten filtern",
"shortcut-filter-my-assigned-cards": "Meine zugewiesenen Karten filtern",
"shortcut-show-shortcuts": "Liste der Tastaturkürzel anzeigen",
"shortcut-toggle-filterbar": "Filter-Seitenleiste ein-/ausblenden",
"shortcut-toggle-searchbar": "Such-Seitenleiste ein-/ausblenden",
@@ -695,7 +696,7 @@
"show-field-on-card": "Zeige dieses Feld auf der Karte",
"automatically-field-on-card": "Füge Feld neuen Karten hinzu",
"always-field-on-card": "Füge Feld allen Karten hinzu",
"showLabel-field-on-card": "Feld für Label auf Minikarte anzeigen",
"showLabel-field-on-card": " Label Feld auf Minikarte anzeigen",
"showSum-field-on-list": "Zeige Summe der Felder oben in der Liste",
"yes": "Ja",
"no": "Nein",
@@ -727,6 +728,7 @@
"delete-board": "Board löschen",
"default-subtasks-board": "Teilaufgabe für __board__ Board",
"default": "Standard",
"defaultdefault": "Standard",
"queue": "Warteschlange",
"subtask-settings": "Einstellungen für Teilaufgaben",
"card-settings": "Karten-Einstellungen",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Anzeigename",
"shortName": "Kurzname",
"autoAddUsersWithDomainName": "Automatisch Benutzer über den Domainnamen hinzufügen",
"website": "Webseite",
"person": "Person",
"my-cards": "Meine Karten",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Trenner (verwende &#32; oder &nbsp; für einen Leerschritt)",
"custom-field-stringtemplate-item-placeholder": "Drücke die Eingabetaste, um weitere Einträge hinzuzufügen",
"creator": "Ersteller",
"creator-on-minicard": "Ersteller auf Minikarte",
"filesReportTitle": "Dateien-Bericht",
"reports": "Berichte",
"rulesReportTitle": "Regeln-Bericht",
@@ -1163,21 +1167,21 @@
"invite-people-error": "Fehler beim Versand der Registrierungseinladung",
"can-invite-if-same-mailDomainName": "Name der Email-Domain",
"to-create-teams-contact-admin": "Bitte kontaktieren Sie den Administrator um Teams anlegen zu lassen.",
"Node_heap_total_heap_size": "Knoten-Heap: totale Heap-Größe",
"Node_heap_total_heap_size_executable": "Knoten-Heap: totale Heap-Größe (Executable)",
"Node_heap_total_physical_size": "Knoten-Heap: totale physische Größe",
"Node_heap_total_available_size": "Knoten-Heap: totale verfügbare Größe",
"Node_heap_used_heap_size": "Knoten-Heap: benutzte Heap-Größe",
"Node_heap_heap_size_limit": "Knoten-Heap: Heap-Größen-Limit",
"Node_heap_malloced_memory": "Knoten-Heap: malloc-belegter Speicher",
"Node_heap_peak_malloced_memory": "Knoten-Heap: Maximum des malloc-belegten Speichers",
"Node_heap_does_zap_garbage": "Knoten-Heap: macht „Zap-Garbage“",
"Node_heap_number_of_native_contexts": "Knoten-Heap: Anzahl nativer Kontexte",
"Node_heap_number_of_detached_contexts": "Knoten-Heap: Anzahl losgelöster Kontexte",
"Node_memory_usage_rss": "Knoten-Speicherverbrauch: Resident Set-Größe",
"Node_memory_usage_heap_total": "Knoten-Speicherverbrauch: totale Größe des belegten Heaps",
"Node_memory_usage_heap_used": "Knoten-Speicherverbrauch: tatsächlicher Speicherverbrauch",
"Node_memory_usage_external": "Knoten-Speicherverbrauch: extern",
"Node_heap_total_heap_size": "Node-Heap: gesamte Heap-Größe",
"Node_heap_total_heap_size_executable": "Node-Heap: gesamte Heap-Größe (Executable)",
"Node_heap_total_physical_size": "Node-Heap: gesamte physische Größe",
"Node_heap_total_available_size": "Node-Heap: gesamte verfügbare Größe",
"Node_heap_used_heap_size": "Node-Heap: benutzte Heap-Größe",
"Node_heap_heap_size_limit": "Node-Heap: Heap-Größen-Limit",
"Node_heap_malloced_memory": "Node-Heap: malloc-belegter Speicher",
"Node_heap_peak_malloced_memory": "Node-Heap: Maximum des malloc-belegten Speichers",
"Node_heap_does_zap_garbage": "Node-Heap: verwendet „Zap-Garbage“",
"Node_heap_number_of_native_contexts": "Node-Heap: Anzahl nativer Kontexte",
"Node_heap_number_of_detached_contexts": "Node-Heap: Anzahl losgelöster Kontexte",
"Node_memory_usage_rss": "Node-Speicherverbrauch: Resident Set-Größe",
"Node_memory_usage_heap_total": "Node-Speicherverbrauch: gesamte Größe des belegten Heaps",
"Node_memory_usage_heap_used": "Node-Speicherverbrauch: tatsächlicher Speicherverbrauch",
"Node_memory_usage_external": "Node-Speicherverbrauch: extern",
"add-organizations": "Organisation hinzufügen",
"add-organizations-label": "Hinzugefügte Organisationen werden nachfolgend angezeigt:",
"remove-organization-from-board": "Sicher, dass du die Organisation von diesem Board entfernen willst?",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Erlaubte Profilbild Dateitypen:",
"invalid-file": "Wenn der Dateiname ungültig ist, wird das Hochladen oder Umbenennen abgebrochen.",
"preview-pdf-not-supported": "Dein Gerät unterstützt keine PDF Vorschau. Versuche sie stattdessen herunterzuladen.",
"drag-board": "Das Board ziehen nach"
"drag-board": "Das Board ziehen nach",
"translation-number": "Die Anzahl benutzerdefinierter String-Übersetzungen ist:",
"delete-translation-confirm-popup": "Möchten Sie diese benutzerdefinierte String-Übersetzung wirklich löschen? Die Aktion kann nicht rückgängig gemacht werden.",
"newTranslationPopup-title": "Neue benutzerdefinierte String-Übersetzung",
"editTranslationPopup-title": "Bearbeite die benutzerdefinierte String-Übersetzung",
"settingsTranslationPopup-title": "Soll die benutzerdefinierte String-Übersetzung gelöscht werden?",
"translation": "Übersetzung",
"text": "Text",
"translation-text": "Übersetzungstext",
"show-at-minicard": "Zeige auf Minikarte",
"show-checklist-at-minicard": "Checkliste auf Minikarte anzeigen",
"show-subtasks-field": "Teilaufgaben Feld anzeigen",
"convert-to-markdown": "Als Markdown konvertieren"
}
File diff suppressed because it is too large. Load diff
+17 -1
View File
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Καθαρισμός φίλτρων",
"shortcut-close-dialog": "Κλείσιμο Διαλόγου",
"shortcut-filter-my-cards": "Φιλτράρισμα των καρτών μου",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Διαγραφή Πίνακα",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Προεπιλογή",
"defaultdefault": "Προεπιλογή",
"queue": "Ουρά αναμονής",
"subtask-settings": "Ρυθμίσεις υποεργασιών (subtasks)",
"card-settings": "Ρυθμίσεις Κάρτας",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Κείμενο",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+17 -1
View File
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Καθαρισμός φίλτρων",
"shortcut-close-dialog": "Κλείσιμο Διαλόγου",
"shortcut-filter-my-cards": "Φιλτράρισμα των καρτών μου",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Διαγραφή Πίνακα",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Προεπιλογή",
"defaultdefault": "Προεπιλογή",
"queue": "Ουρά αναμονής",
"subtask-settings": "Ρυθμίσεις υποεργασιών (subtasks)",
"card-settings": "Ρυθμίσεις Κάρτας",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Κείμενο",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+18 -2
View File
@@ -113,7 +113,7 @@
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+18 -2
View File
@@ -113,7 +113,7 @@
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
+18 -2
View File
@@ -113,7 +113,7 @@
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "All Boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
@@ -578,6 +578,7 @@
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-assigned-cards": "Filter my assigned cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
@@ -727,6 +728,7 @@
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"defaultdefault": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
@@ -961,6 +963,7 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
@@ -1115,6 +1118,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"creator-on-minicard": "Creator on minicard",
"filesReportTitle": "Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report",
@@ -1229,5 +1233,17 @@
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board"
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
}
Loaded 100 of 522 files, more files were not shown because too many files have changed in this diff. Show more