Compare commits

..

1089 commits
v7.16 ... main

Author SHA1 Message Date
Lauri Ojansivu
8af719d39e v7.85 2025-04-21 16:30:58 +03:00
Lauri Ojansivu
c1a4250bd2 Updated to MongoDB 6.0.22.
Thanks to MongoDB developers !
2025-04-21 16:28:41 +03:00
Lauri Ojansivu
b4b442f8a8 Updated translations. 2025-04-21 16:13:56 +03:00
Lauri Ojansivu
b7e76fcfa1 Updated ChangeLog. 2025-04-21 16:10:24 +03:00
Lauri Ojansivu
01950cc796 Fix board sidebar menu doesn't open in mobile.
Thanks to mimZD and xet7 !

Fixes #5736
2025-04-21 16:07:43 +03:00
Lauri Ojansivu
23bac73559 Updated translations. 2025-04-05 17:39:29 +03:00
Lauri Ojansivu
2de9b94b01 Updated ChangeLog. 2025-03-31 21:50:47 +03:00
Lauri Ojansivu
05d1736f5f
Update Browser-compatibility-matrix.md 2025-03-31 21:45:22 +03:00
Lauri Ojansivu
db5346fc5c
Update Browser-compatibility-matrix.md 2025-03-31 21:38:06 +03:00
Lauri Ojansivu
f09f5bd737 Updated translations. 2025-03-29 21:35:45 +02:00
Lauri Ojansivu
d96a1a5c9e v7.84 2025-03-23 17:33:57 +02:00
Lauri Ojansivu
ad3cc9c087 Updated translations. 2025-03-22 21:39:15 +02:00
Lauri Ojansivu
d0c7bf65a4 Updated ChangeLog. 2025-03-22 21:30:53 +02:00
Lauri Ojansivu
bb6ac70f63 Updated dependencies.
Thanks to developers of dependencies !
2025-03-22 21:26:41 +02:00
Lauri Ojansivu
c38b9da7d6
Merge pull request #5718 from wekan/dependabot/github_actions/docker/login-action-3.4.0
Bump docker/login-action from 3.3.0 to 3.4.0
2025-03-18 01:37:59 +02:00
dependabot[bot]
19153ca489
Bump docker/login-action from 3.3.0 to 3.4.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](9780b0c442...74a5d14239)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 21:00:44 +00:00
Lauri Ojansivu
8e7a5e8cb5 Updated translations. 2025-03-15 22:31:43 +02:00
Lauri Ojansivu
1407059937 Updated ChangeLog. 2025-03-15 19:33:49 +02:00
Lauri Ojansivu
a2911bc9c3 Fixed building OpenAPI docs.
Thanks to xet7 !

Fixes #5512
2025-03-15 19:32:16 +02:00
Lauri Ojansivu
f99b735746 Updated ChangeLog. 2025-03-11 04:23:55 +02:00
Lauri Ojansivu
4510ddda15 Fix typo at Shortcuts.
Thanks to xet7 !
2025-03-11 04:19:45 +02:00
Lauri Ojansivu
028ec46f46 Updated ChangeLog. 2025-03-09 20:05:08 +02:00
Lauri Ojansivu
c0e4e01deb Added developer docs about Login code.
Thanks to xet7 !

Fixes #5714
2025-03-09 20:03:42 +02:00
Lauri Ojansivu
cfcf682134 Updated ChangeLog. 2025-03-09 19:08:20 +02:00
Lauri Ojansivu
27bd9817d7
Merge pull request #5712 from Rayene123/Time-on-Minicard-for-Start/End/Due-Date
Time on minicard for start/end/due date
2025-03-09 19:03:54 +02:00
Rayene123
6d982cdfd9 formatted the date when storing it 2025-03-09 14:15:17 +00:00
Rayene123
827ee615c1 added the start , due , end hour 2025-03-09 14:12:20 +00:00
Lauri Ojansivu
f5f0ba721e v7.83 2025-03-08 21:32:37 +02:00
Lauri Ojansivu
1344f85986 Updated ChangeLog. 2025-03-08 21:14:12 +02:00
Lauri Ojansivu
e7462ada12 Reverted Docker changes of WeKan v7.68 to get WeKan Docker version working.
Thanks to xet7 !

Fixes #5697
2025-03-08 21:09:09 +02:00
Lauri Ojansivu
11199b6225 Updated ChangeLog. 2025-03-08 19:58:05 +02:00
Lauri Ojansivu
345aece0f2 Updated ChangeLog. 2025-03-08 19:55:49 +02:00
Lauri Ojansivu
912c84422b Merge branch 'Firas-Git-CopyCard_FixError' 2025-03-08 19:52:42 +02:00
Lauri Ojansivu
b402676079 Removed siteurl from manifest to fix browser console error about not matching URL.
Thanks to xet7 !
2025-03-08 19:51:23 +02:00
Lauri Ojansivu
908a5fc60d Comment out error message of non-existing Custom Field.
Thanks to xet7 !

Related #5684
2025-03-08 19:50:00 +02:00
Lauri Ojansivu
38e57d3635 Merge branch 'CopyCard_FixError' of github.com:Firas-Git/wekan into Firas-Git-CopyCard_FixError 2025-03-08 19:46:19 +02:00
Firas Saidi
14167b19b9 cards file 2025-03-08 18:02:03 +01:00
Lauri Ojansivu
fc548b426d Updated translations. 2025-03-08 17:45:02 +02:00
Lauri Ojansivu
71acd9603e Updated ChangeLog. 2025-03-06 01:52:46 +02:00
Lauri Ojansivu
341f655ab7
Merge pull request #5704 from wekan/dependabot/github_actions/docker/build-push-action-6.15.0
Bump docker/build-push-action from 6.14.0 to 6.15.0
2025-03-05 19:33:04 +02:00
Lauri Ojansivu
0c5323c106
Merge pull request #5703 from wekan/dependabot/github_actions/docker/metadata-action-5.7.0
Bump docker/metadata-action from 5.6.1 to 5.7.0
2025-03-05 19:30:27 +02:00
dependabot[bot]
7f871fdf30
Bump docker/build-push-action from 6.14.0 to 6.15.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.14.0 to 6.15.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](0adf995921...471d1dc4e0)

---
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>
2025-03-03 20:41:23 +00:00
dependabot[bot]
6347b40a02
Bump docker/metadata-action from 5.6.1 to 5.7.0
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.6.1 to 5.7.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](369eb591f4...902fa8ec7d)

---
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>
2025-03-03 20:41:20 +00:00
Lauri Ojansivu
bce84a432a Updated ChangeLog. 2025-03-02 12:03:22 +02:00
Lauri Ojansivu
b6fc4deb63
Merge pull request #5702 from adam-fu/main
Adding Development information to readme
2025-03-02 12:00:54 +02:00
adam-fu
6b48f9e259 Adding Development information to readme 2025-03-02 06:43:29 +01:00
Lauri Ojansivu
44b7666426 Merge branch 'main' of github.com:wekan/wekan 2025-02-25 14:33:34 +02:00
Lauri Ojansivu
ef70ed76a2 Updated changelog 2025-02-25 14:33:06 +02:00
Lauri Ojansivu
a1a1b3d1ee
Merge pull request #5696 from wekan/dependabot/github_actions/docker/build-push-action-6.14.0
Bump docker/build-push-action from 6.13.0 to 6.14.0
2025-02-24 23:21:55 +02:00
dependabot[bot]
0326757399
Bump docker/build-push-action from 6.13.0 to 6.14.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.13.0 to 6.14.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](ca877d9245...0adf995921)

---
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>
2025-02-24 21:18:37 +00:00
Lauri Ojansivu
edbc8ed92b v7.82 2025-02-24 20:21:33 +02:00
Lauri Ojansivu
07e9ec0617 Updated ChangeLog. 2025-02-24 15:12:07 +02:00
Lauri Ojansivu
18d0fa4327 Fixed building WeKan. Updated dompurify. Forked Meteor 2.14 version of meteor-node-stubs to update elliptic.
Thanks to delopers of depedencies and xet7 !

Fixes #5694
2025-02-24 14:56:54 +02:00
Lauri Ojansivu
666ee84033 Updated dependencies.
Thanks to developes of dependencies "
2025-02-23 15:55:20 +02:00
Lauri Ojansivu
120642f47d Updated ChangeLog. 2025-02-21 21:22:14 +02:00
Lauri Ojansivu
148b81262d Updated requirements at docs.
Thanks to mueller-ma !

Fixes #5692
2025-02-21 21:12:28 +02:00
Lauri Ojansivu
c41467f76e
Merge pull request #5691 from wekan/dependabot/npm_and_yarn/dompurify-3.2.4
Bump dompurify from 2.5.6 to 3.2.4
2025-02-15 15:47:49 +02:00
dependabot[bot]
c83e83b8b1
Bump dompurify from 2.5.6 to 3.2.4
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.5.6 to 3.2.4.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.5.6...3.2.4)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-15 08:58:49 +00:00
Lauri Ojansivu
563a508e26 Added missing ) character.
Thanks to xet7 !
2025-02-11 22:12:57 +02:00
Lauri Ojansivu
1d8347cc23
Merge pull request #5682 from salleman33/devel
Update metrics.js
2025-02-11 17:28:33 +02:00
salleman
874abf2c41
Update metrics.js
Add possibility to use a token in place of ipaddress to access metrics route
2025-02-11 12:06:23 +01:00
Lauri Ojansivu
3e18f820ea v7.81 2025-02-07 16:13:52 +02:00
Lauri Ojansivu
b571f1c953 Upgraded to MongoDB 6.0.20 at Snap Candidate.
Thanks to MongoDB developers!
2025-02-07 16:11:48 +02:00
Lauri Ojansivu
fd69c7ceb8 Updated ChangeLog. 2025-02-05 04:41:42 +02:00
Lauri Ojansivu
d15faa1890 Updated ChangeLog. 2025-01-29 14:15:31 +02:00
Lauri Ojansivu
0c7e12c5e7 Added Meteor 3.1 learning course to docs.
Thanks to producer of learning course !
2025-01-29 14:13:21 +02:00
Lauri Ojansivu
36a3077853 Fix misspelling of hours at env variable setting LDAP_BACKGROUND_SYNC_INTERVAL.
Thanks to hubermam !

Fixes #5665
2025-01-29 14:09:31 +02:00
Lauri Ojansivu
51bc23dbd9 Updated ChangeLog. 2025-01-29 13:40:34 +02:00
Lauri Ojansivu
0b1e0bd395 Fixed env variable METRICS_ACCEPTED_IP_ADDRESS to be same as at docs.
Thanks to salleman33 !

Fixes #5671
2025-01-29 13:38:40 +02:00
Lauri Ojansivu
151aafd114 Updated ChangeLog. 2025-01-29 10:23:12 +02:00
Lauri Ojansivu
16c8a65a1c Updated ChangeLog. 2025-01-29 10:22:08 +02:00
Lauri Ojansivu
f3133e9cd8
Merge pull request #5670 from wekan/dependabot/github_actions/docker/build-push-action-6.13.0
Bump docker/build-push-action from 6.12.0 to 6.13.0
2025-01-29 10:14:55 +02:00
dependabot[bot]
de84aa7674
Bump docker/build-push-action from 6.12.0 to 6.13.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.12.0 to 6.13.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](67a2d409c0...ca877d9245)

---
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>
2025-01-27 20:17:17 +00:00
Lauri Ojansivu
1bdbfe86bb
Merge pull request #5663 from wekan/dependabot/github_actions/helm/chart-releaser-action-1.7.0
Bump helm/chart-releaser-action from 1.6.0 to 1.7.0
2025-01-21 22:44:23 +02:00
Lauri Ojansivu
397b9f439e
Merge pull request #5662 from wekan/dependabot/github_actions/docker/build-push-action-6.12.0
Bump docker/build-push-action from 6.11.0 to 6.12.0
2025-01-21 22:44:12 +02:00
dependabot[bot]
261e0aee0f
Bump helm/chart-releaser-action from 1.6.0 to 1.7.0
Bumps [helm/chart-releaser-action](https://github.com/helm/chart-releaser-action) from 1.6.0 to 1.7.0.
- [Release notes](https://github.com/helm/chart-releaser-action/releases)
- [Commits](https://github.com/helm/chart-releaser-action/compare/v1.6.0...v1.7.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>
2025-01-20 20:02:15 +00:00
dependabot[bot]
a6d9bde658
Bump docker/build-push-action from 6.11.0 to 6.12.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.11.0 to 6.12.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](b32b51a8ed...67a2d409c0)

---
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>
2025-01-20 20:02:13 +00:00
Lauri Ojansivu
8d0a07e1a8 Updated translations. 2025-01-19 23:06:23 +02:00
Lauri Ojansivu
659615e6f2
Merge pull request #5658 from wekan/dependabot/github_actions/docker/build-push-action-6.11.0
Bump docker/build-push-action from 6.10.0 to 6.11.0
2025-01-15 12:18:49 +02:00
dependabot[bot]
9f0b82c0d5
Bump docker/build-push-action from 6.10.0 to 6.11.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.10.0 to 6.11.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](48aba3b46d...b32b51a8ed)

---
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>
2025-01-13 20:55:32 +00:00
Lauri Ojansivu
9a23dcc991 v7.80 2025-01-12 23:48:05 +02:00
Lauri Ojansivu
980d345305 Updated ChangeLog. 2025-01-12 23:19:51 +02:00
Lauri Ojansivu
41f76ee974 Updated translations. 2025-01-11 20:53:31 +02:00
Lauri Ojansivu
83a60e6303
Merge pull request #5655 from NadavTasher/bugfix/fix-assignment-of-removed-members
Fix assignee toggling keyboard shortcut to only toggle current board members
2025-01-03 17:32:58 +02:00
Nadav Tasher
7b23c85117 Fix assignee toggling keyboard shortcut to only toggle current board members 2025-01-03 17:15:40 +02:00
Lauri Ojansivu
ff3900d100
Merge pull request #5654 from NadavTasher/bugfix/mouse-over-card-reactive-cache 2025-01-03 16:12:17 +02:00
Nadav Tasher
e5e4b8ebfb Fix card issues with ReactiveCache when using keyboard shortcuts
When using ReactiveCache.getCard, a buggy instance of Card is returned.
The bug experienced is that .assignees and .members are not always up-to-date.

This can be reproduced by trying to hover over cards and triggering a keyboard
shortcut that interacts with a card.
2025-01-03 12:08:08 +02:00
Lauri Ojansivu
9516b75d65 Updated translations. 2025-01-02 19:39:08 +02:00
Lauri Ojansivu
6b1a92001a v7.79 2025-01-02 13:08:53 +02:00
Lauri Ojansivu
e4e1fdb187 Updated ChangeLog. 2025-01-02 12:59:37 +02:00
Lauri Ojansivu
58ad80218a Updated translations. 2025-01-02 12:40:14 +02:00
Lauri Ojansivu
3322d3b33d
Merge pull request #5652 from NadavTasher/feature/toggle-week-of-year-display
Feature - Add toggle for week-of-year in date displays (ISO 8601)
2025-01-02 12:07:23 +02:00
Lauri Ojansivu
bd9d0c2d1b Updated translations. 2025-01-02 06:11:10 +02:00
Lauri Ojansivu
02b99e0555
Merge pull request #5653 from NadavTasher/feature/assign-members-by-numbers
Feature - Assign members using keyboard shortcut `Ctrl+Alt+[1-9]`
2025-01-02 06:01:32 +02:00
Nadav Tasher
f803190dd2 Change shortcut help message 2025-01-01 22:54:51 +02:00
Nadav Tasher
deb3a8389a Fix member index bug in keyboard shortcut 2025-01-01 22:26:59 +02:00
Nadav Tasher
e7d02c12eb Added translation for new assigning keyboard shortcut 2025-01-01 22:23:21 +02:00
Nadav Tasher
169eaa180b Added support for assigning members to cards using Ctrl+Alt+Num 2025-01-01 22:22:57 +02:00
Nadav Tasher
08cde06ce5 Support show week of year toggle in cardCustomFields 2025-01-01 21:13:55 +02:00
Nadav Tasher
4607bfe454 Support week of year toggle in cardDate 2025-01-01 21:13:30 +02:00
Nadav Tasher
de0eece27c Add show week of year translation 2025-01-01 21:13:03 +02:00
Nadav Tasher
25ad901fb3 Add show week of year toggle to sidebar 2025-01-01 21:12:38 +02:00
Nadav Tasher
99e579f47d Add week of year toggle state in user model 2025-01-01 21:12:04 +02:00
Lauri Ojansivu
7df278e805 v7.78 2024-12-31 23:13:54 +02:00
Lauri Ojansivu
34325dde8c Updated translations. 2024-12-31 23:09:25 +02:00
Lauri Ojansivu
c7e3cc7e0a Updated ChangeLog. 2024-12-31 22:57:49 +02:00
Lauri Ojansivu
826876ff11
Merge pull request #5649 from NadavTasher/bugfix/fix-list-header-width-in-cleandark-theme
Fix list header too wide in cleanlight and cleandark themes
2024-12-31 22:56:34 +02:00
Lauri Ojansivu
b031da6c6d Updated ChangeLog. 2024-12-31 22:55:53 +02:00
Lauri Ojansivu
43e15a1ef4
Merge pull request #5648 from NadavTasher/bugfix/keyboard-shortcuts-behaving-differently-with-caps
Fix upper-case keyboard shortcuts & different language shortcuts getting triggered when shortcuts are disabled
2024-12-31 22:54:35 +02:00
Lauri Ojansivu
7c32188968 Updated ChangeLog. 2024-12-31 22:53:58 +02:00
Lauri Ojansivu
78d38bc4e2
Merge pull request #5647 from NadavTasher/bugfix/change-assign-self-shortcut
Fix assign-self shortcut in shortcut help popup (different from actual shortcut)
2024-12-31 22:52:42 +02:00
Lauri Ojansivu
f942631fd4 Updated ChangeLog. 2024-12-31 22:52:01 +02:00
Lauri Ojansivu
5d64c28e89
Merge pull request #5646 from NadavTasher/feature/additional-card-archive-shortcut
Add additional archiving keyboard shortcut (added `-`)
2024-12-31 22:51:06 +02:00
Lauri Ojansivu
485c2f0a7d Updated ChangeLog. 2024-12-31 22:50:31 +02:00
Lauri Ojansivu
3d894d0e56
Merge pull request #5645 from NadavTasher/bugfix/vertical-scrollbar-toggle-style
Fix styling for vertical scrollbars toggle
2024-12-31 22:48:32 +02:00
Lauri Ojansivu
b265701844 Updated ChangeLog. 2024-12-31 22:47:56 +02:00
Lauri Ojansivu
468760bd31
Merge pull request #5644 from NadavTasher/bugfix/hide-scrollbars-on-old-browser-versions
Disable scrollbars on older versions of Chrome and Safari in "no vertical scrollbars" mode
2024-12-31 22:46:01 +02:00
Nadav Tasher
f03744d99b Fix list header too wide in cleanlight and cleandark themes 2024-12-31 21:42:42 +02:00
Nadav Tasher
26e78a1381 Fix upper-case keyboard shortcuts & different language shortcuts getting triggered when shortcuts are disabled 2024-12-31 21:18:17 +02:00
Nadav Tasher
44aeb323d9 Change assign-self shortcut in shortcut help popup 2024-12-31 19:47:21 +02:00
Nadav Tasher
503298a33f Add additional archiving keyboard shortcut 2024-12-31 19:38:46 +02:00
Nadav Tasher
58b456d5d5 Fix styling for vertical scrollbars toggle 2024-12-31 19:30:22 +02:00
Nadav Tasher
d370cac14c Disable scrollbars on older versions of Chrome and Safari 2024-12-31 19:17:06 +02:00
Lauri Ojansivu
b29c19f5e0 Merge newest changes. 2024-12-31 01:26:43 +02:00
Lauri Ojansivu
a3ba0cf6d5 Updated translations. 2024-12-31 01:26:01 +02:00
Lauri Ojansivu
8bb089fe07 Updated translations. 2024-12-31 00:37:44 +02:00
Lauri Ojansivu
7ba66f6386 Updated translations. 2024-12-31 00:22:15 +02:00
Lauri Ojansivu
b537f9b20a
Merge pull request #5643 from NadavTasher/feature/optional-vertical-scrollbars
Allow vertical scrollbars to be disabled (new preference)
2024-12-30 23:44:33 +02:00
Lauri Ojansivu
7abe8d71a8 v7.77 2024-12-30 23:32:34 +02:00
Nadav Tasher
3e01231874 Allow vertical scrollbars to be disabled (user preferences, visible by default) 2024-12-30 23:22:54 +02:00
Lauri Ojansivu
fb8e23dc4b Updated translations. 2024-12-30 23:20:32 +02:00
Lauri Ojansivu
bf0d6cad2c Updated ChangeLog. 2024-12-30 23:18:04 +02:00
Lauri Ojansivu
5a9d36341c
Merge pull request #5642 from NadavTasher/bugfix/generic-fix-for-keyboard-shortcuts-stop-callback
Fix "SPACE" shortcut not working after recent fixes
2024-12-30 23:17:14 +02:00
Lauri Ojansivu
c7bf0b24a7 Updated ChangeLog. 2024-12-30 23:16:35 +02:00
Lauri Ojansivu
d69a505928
Merge pull request #5641 from NadavTasher/bugfix/fix-weird-add-checklist-buttons-in-card-details
Fix weird add checklist buttons in card details
2024-12-30 23:15:24 +02:00
Lauri Ojansivu
7980899f37 Updated ChangeLog. 2024-12-30 23:14:39 +02:00
Lauri Ojansivu
91d245a414
Merge pull request #5640 from NadavTasher/bugfix/fix-bad-comments-background-in-dark-theme
Fix comment backgrounds in cleandark theme
2024-12-30 23:13:53 +02:00
Lauri Ojansivu
5db8d45f4d Updated ChangeLog. 2024-12-30 23:13:07 +02:00
Lauri Ojansivu
ee4f09845c
Merge pull request #5639 from NadavTasher/feature/enable-keyboard-shortcuts-by-default
Enable keyboard shortcuts by default
2024-12-30 23:11:26 +02:00
Nadav Tasher
01a717f143 Generic fix for keyboard shortcuts which fixes "SPACE" shortcut and more bugs 2024-12-30 21:03:18 +02:00
Nadav Tasher
efd22df657 Add some padding to checklist title to make it seperate from card details body 2024-12-30 20:31:28 +02:00
Nadav Tasher
2948e0aa4f Fix confusing and broken "Add checklist" and "Add subtask" buttons in card details view 2024-12-30 20:31:00 +02:00
Nadav Tasher
b253683b3c Fix comment backgrounds in cleandark theme 2024-12-30 20:23:54 +02:00
Nadav Tasher
189ebd4201 Enable keyboard shortcuts by default 2024-12-30 20:15:52 +02:00
Lauri Ojansivu
f1810e47e0 v7.76 2024-12-30 01:57:04 +02:00
Lauri Ojansivu
37f7924524 Updated ChangeLog. 2024-12-30 01:37:27 +02:00
Lauri Ojansivu
6427a5e5f1
Merge pull request #5635 from NadavTasher/bugfix/move-swimlane-creation-button-to-board-header
Move swimlane creation button to board header when using swimlane view mode
2024-12-30 01:33:48 +02:00
Nadav Tasher
96e11cb727 Display new swimlane creation button when no swimlanes exist 2024-12-30 01:25:25 +02:00
Lauri Ojansivu
a5f9157217 Updated ChangeLog. 2024-12-30 00:42:33 +02:00
Lauri Ojansivu
133066c900
Merge pull request #5636 from NadavTasher/bugfix/esc-keyboard-shortcut-not-working
Always handle the escape key when shortcuts are enabled
2024-12-30 00:39:53 +02:00
Nadav Tasher
cf75623184 Always handle the escape key when shortcuts are enabled 2024-12-30 00:34:40 +02:00
Nadav Tasher
fecae8d0a3 Revert "Move swimlane creation button to board header when using swimlane view mode"
This reverts commit d51e8d1d1d.
2024-12-30 00:17:56 +02:00
Lauri Ojansivu
f1d8220ab7 v7.75 2024-12-29 23:50:26 +02:00
Nadav Tasher
d51e8d1d1d Move swimlane creation button to board header when using swimlane view mode 2024-12-29 22:54:32 +02:00
Lauri Ojansivu
9a761d2a77 Updated ChangeLog. 2024-12-29 22:40:22 +02:00
Lauri Ojansivu
407d018067 Fix Cannot save Layout settings.
Thanks to tensor5g and xet7 !

Fixes #5630
2024-12-29 22:38:19 +02:00
Lauri Ojansivu
028b8b606a Updated ChangeLog. 2024-12-29 22:19:47 +02:00
Nadav Tasher
ad0e86d725 Remove keyboard shortcut toggle from board header 2024-12-29 22:14:55 +02:00
Nadav Tasher
8aeed8b033 Impove margins around shortcuts toggle 2024-12-29 22:12:45 +02:00
Lauri Ojansivu
989c73f1f1 Updated translations. 2024-12-29 16:56:17 +02:00
Lauri Ojansivu
f6a3a04dba Updated translations. 2024-12-25 20:40:37 +02:00
Lauri Ojansivu
8ff11ccc88 v7.74 2024-12-25 07:25:21 +02:00
Lauri Ojansivu
5d145d0dd1 Updated ChangeLog. 2024-12-25 07:17:29 +02:00
Lauri Ojansivu
275ac445d0 Keyboard Shortcuts Enable/Disable is now at Right Sidebar, where already was list of Keyboard Shortcuts.
Thanks to xet7 !

Fixes https://github.com/wekan/wekan/pull/5628
2024-12-25 07:14:22 +02:00
Lauri Ojansivu
7fc364cb63 Updated translations. 2024-12-25 06:51:18 +02:00
Lauri Ojansivu
93868fd905 Updated ChangeLog. 2024-12-25 06:47:51 +02:00
Lauri Ojansivu
a862486ec3 "Auto List Width" is now at "List ☰ Set Width" popup.
Thanks to xet7 !

Fixes https://github.com/wekan/wekan/pull/5628
2024-12-25 06:43:02 +02:00
Lauri Ojansivu
14c9b70149 Updated translations. 2024-12-25 05:42:21 +02:00
Lauri Ojansivu
b60c655b98 Updated ChangeLog. 2024-12-25 05:20:10 +02:00
Lauri Ojansivu
fe5475d5ec Updated ChangeLog. 2024-12-25 05:01:55 +02:00
Lauri Ojansivu
955a46ca60 Fixes keyboard shortcuts defaults, icons and texts to be more understandable.
Thanks to xet7 !

Fixes https://github.com/wekan/wekan/pull/5628
2024-12-25 04:59:15 +02:00
Nadav Tasher
0d0c88ceaa Add translations for keyboard shortcut actions 2024-12-25 00:32:46 +02:00
Nadav Tasher
fb008569ab Make sure keyboard shortcuts are enabled and no text is selected on shortcut triggers 2024-12-25 00:24:41 +02:00
Nadav Tasher
295c9c8617 Allow toggling profile.keyboardShortcuts from boardHeader 2024-12-25 00:23:18 +02:00
Nadav Tasher
658e43ab54 Add profile.keyboardShortcuts to User model 2024-12-25 00:22:37 +02:00
Nadav Tasher
41b1227b17 Add keyboard shortcut toggle 2024-12-25 00:22:04 +02:00
Nadav Tasher
68c7a41906 Revert "Hide and disable Keyboard Shortcuts, because they make using Ctrl-C to copy etc impossible."
This reverts commit 5606414f89.
2024-12-24 21:41:25 +02:00
Nadav Tasher
18f6d4cb16 Revert "Part 2. Hide and disable Keyboard Shortcuts, because they make using Ctrl-C to copy etc impossible."
This reverts commit 94391d4cde.
2024-12-24 21:41:13 +02:00
Nadav Tasher
7c60d7932a Revert "Part 3. Hide and disable Keyboard Shortcuts, because they make using Ctrl-C to copy etc impossible."
This reverts commit 8b73c702c3.
2024-12-24 21:41:03 +02:00
Lauri Ojansivu
b9182a1fc7 v7.73 2024-12-24 20:16:31 +02:00
Lauri Ojansivu
e45d35ba60 Updated ChangeLog. 2024-12-24 20:05:38 +02:00
Lauri Ojansivu
8b73c702c3 Part 3. Hide and disable Keyboard Shortcuts, because they make using Ctrl-C to copy etc impossible.
Thanks to xet7 !

Fixes #5603,
fixes #2423,
fixes #1878,
fixes #931
2024-12-24 20:04:35 +02:00
Lauri Ojansivu
8e744e860d Updated ChangeLog. 2024-12-24 19:55:25 +02:00
Lauri Ojansivu
94391d4cde Part 2. Hide and disable Keyboard Shortcuts, because they make using Ctrl-C to copy etc impossible.
Thanks to xet7 !

Fixes #5603,
fixes #2423,
fixes #1878,
fixes #931
2024-12-24 19:54:17 +02:00
Lauri Ojansivu
4e73c56afe Updated ChangeLog. 2024-12-24 19:48:38 +02:00
Lauri Ojansivu
5606414f89 Hide and disable Keyboard Shortcuts, because they make using Ctrl-C to copy etc impossible.
Thanks to xet7 !

Fixes #5603,
fixes #2423,
fixes #1878,
fixes #931
2024-12-24 19:41:56 +02:00
Lauri Ojansivu
8ebb1a7d7f Updated translations. 2024-12-24 19:34:00 +02:00
Lauri Ojansivu
586043e00b Updated ChangeLog. 2024-12-24 19:32:49 +02:00
Lauri Ojansivu
e70c51a1f0 Hide Accessibility Settings at Admin Panel. It will be continued and added back later.
Thanks to xet7 !
2024-12-24 19:31:15 +02:00
Lauri Ojansivu
ea8f8de391 Updated ChangeLog. 2024-12-24 19:29:49 +02:00
Lauri Ojansivu
0332ef3298 Hide support popup. It will be made editable later.
Thanks to xet7 !
2024-12-24 19:28:20 +02:00
Lauri Ojansivu
751b0aa073 Merge branch 'main' of github.com:wekan/wekan 2024-12-21 12:49:02 +02:00
Lauri Ojansivu
965db42170 Updated translations. 2024-12-21 12:48:47 +02:00
Lauri Ojansivu
73f16692da Updated 2024-12-21 12:48:36 +02:00
Lauri Ojansivu
aab80e67bd Updated ChangeLog. 2024-12-17 19:59:29 +02:00
Lauri Ojansivu
3e3b629aa2 Updated Developer Docs about docker compose.
Thanks to sridharin2020 and xet7 !

Related https://github.com/wekan/wekan/discussions/5622
2024-12-17 19:57:29 +02:00
Lauri Ojansivu
adeec24252 Updated ChangeLog. 2024-12-15 18:01:32 +02:00
Lauri Ojansivu
ba0fdaef72 Revert back to have shortcut "c to archive" back for non-Persian keyboards.
Thanks to hatl and xet7 !

Related #1878
2024-12-15 17:58:48 +02:00
Lauri Ojansivu
c357c77e7e Updated translations. 2024-12-13 02:12:40 +02:00
Lauri Ojansivu
702375856d Updated ChangeLog. 2024-12-13 02:08:35 +02:00
Lauri Ojansivu
c936d83b38 Reverted all previous Oauth2 filepath code, thinking is there some better way.
Thanks to xet7 !

Related https://github.com/wekan/wekan/pull/5619,
related https://github.com/wekan/wekan/pull/5616
2024-12-13 01:51:42 +02:00
Lauri Ojansivu
83d22c9ebf Updated translations. 2024-12-12 04:47:22 +02:00
Lauri Ojansivu
02f45f4e65
Merge pull request #5614 from NadavTasher/feature/change-default-maximum-width-for-lists
Changed the default maximum list width
2024-12-12 03:13:05 +02:00
Lauri Ojansivu
da2ba45456
Merge pull request #5618 from NadavTasher/bugfix/weird-dragscroll-behaviour-in-lists-view
Fix buggy behaviours in board dragscrolling
2024-12-12 03:12:49 +02:00
Lauri Ojansivu
0566f7c89b
Merge pull request #5616 from walster001/main
Add functionality to cross-check emails against a known local server-side file on OIDC login.
2024-12-12 03:11:24 +02:00
Nadav Tasher
30a2e8b990 Fix dragscroll getting stuck on view changes 2024-12-11 23:04:10 +02:00
Nadav Tasher
81b2bce385 Allow dragscrolling the board in Lists view mode 2024-12-11 22:19:52 +02:00
walster001
a5347cfcac
Update wekan-help with local file email changes. 2024-12-12 00:52:28 +10:30
walster001
3422db31ee
Local email checking modifications 2024-12-12 00:47:14 +10:30
walster001
755880ec90
Add OAUTH2 Email check keys 2024-12-12 00:41:19 +10:30
walster001
30273709ae Add support for external email verification
Add support for external email verification against OIDC login script. This will check local file for presence of email and log the user in if it is or deny them if it isn't.
2024-12-12 00:34:22 +10:30
Nadav Tasher
17f4bbde20 Changed the default maximum list width 2024-12-10 21:23:12 +02:00
Lauri Ojansivu
575e3750f1 Updated translations. 2024-12-09 23:05:57 +02:00
Lauri Ojansivu
d7c8eced81 Revert changing URLs and email addresses. 2024-12-09 18:00:14 +02:00
Lauri Ojansivu
86fda62a48 Merge branch 'main' of github.com:wekan/wekan 2024-12-08 17:07:46 +02:00
Lauri Ojansivu
a4ec20a7c8 Merge remote-tracking branch 'origin/feature-accessibility' 2024-12-08 17:07:39 +02:00
Lauri Ojansivu
90653c1472 Updated translations. 2024-12-08 17:06:29 +02:00
Lauri Ojansivu
30ec59140c Updated ChangeLog. 2024-12-08 15:04:17 +02:00
Lauri Ojansivu
f689d1688a Updated URLs and email addresses.
Thanks to xet7 !
2024-12-08 15:02:43 +02:00
Lauri Ojansivu
57e545e7c4 Updated translations. 2024-12-08 15:01:48 +02:00
Lauri Ojansivu
d0ea8e3a81 v7.72 2024-12-08 03:08:28 +02:00
Lauri Ojansivu
c188d2bf65 Updated translations. 2024-12-08 03:01:51 +02:00
Lauri Ojansivu
75b3421222 Updated ChangeLog. 2024-12-08 02:59:15 +02:00
Lauri Ojansivu
c062bd63bb Fix in API user role is not considered.
Thanks to mohammadZahedian and xet7 !

Fixes #5422
2024-12-08 02:56:37 +02:00
Lauri Ojansivu
0c753e85a8 Updated ChangeLog. 2024-12-08 02:02:26 +02:00
Lauri Ojansivu
32770c02ad Updated translations. 2024-12-08 01:02:19 +02:00
Lauri Ojansivu
133dd55f4c Merge branch 'feature/optional-auto-width' of https://github.com/NadavTasher/wekan 2024-12-08 00:33:58 +02:00
Nadav Tasher
d1e2db9cb8 Replace Session.get with utility call 2024-12-07 21:26:25 +02:00
Nadav Tasher
52a02409f0 Use utility function instead of Session.get 2024-12-07 20:37:11 +02:00
Nadav Tasher
eb3377deb8 Revert "Use utility function is autoWidth function"
This reverts commit c06bcac9f3.
2024-12-07 20:35:15 +02:00
Nadav Tasher
c06bcac9f3 Use utility function is autoWidth function 2024-12-07 19:47:19 +02:00
Nadav Tasher
f9f0523112 Updated translations with new texts for auto-width support 2024-12-07 19:00:51 +02:00
Nadav Tasher
f7aa5d0871 Add auto-width and constraint support in list 2024-12-07 19:00:08 +02:00
Nadav Tasher
9576f6807b Add missing functions to users model for auto-width 2024-12-07 18:59:30 +02:00
Nadav Tasher
efe50a65ee Add list constraint support in set-width popup 2024-12-07 18:59:01 +02:00
Nadav Tasher
fb34dd6114 Add auto-width board-header toggle 2024-12-07 18:57:34 +02:00
Nadav Tasher
2ebff3a864 Revert adding migration 2024-12-07 18:56:40 +02:00
Lauri Ojansivu
a3f70735ac Fix WeKan Snap Candidate v7.71 build. There was old version number.
Thanks to xet7 !
2024-12-06 11:22:07 +02:00
Lauri Ojansivu
e1fd915ecd Updated ChangeLog. 2024-12-06 08:31:39 +02:00
Nadav Tasher
0097674fc0 Added initial support for auto-width lists option 2024-12-05 21:46:35 +02:00
Lauri Ojansivu
f6341de610 Updated ChangeLog. 2024-12-05 15:55:49 +02:00
Lauri Ojansivu
17d5fae7bb Updated release scripts: Disabled Docker registry sync. Only pushing WeKan to GitHub, Quay and Docker Hub.
Thanks to xet7 !
2024-12-05 15:52:14 +02:00
Lauri Ojansivu
05eca83b15 v7.71 2024-12-05 13:35:32 +02:00
Lauri Ojansivu
6d004b2095 Updated ChangeLog. 2024-12-05 10:33:31 +02:00
Lauri Ojansivu
46327f19a1 To menu right top username, added Support, to have info about from where to get support.
Thanks to xet7 !
2024-12-05 10:29:15 +02:00
Lauri Ojansivu
d4c8ea9361 v7.70 2024-12-04 18:41:05 +02:00
Lauri Ojansivu
7af0ddc226 Updated ChangeLog. 2024-12-04 14:18:43 +02:00
Lauri Ojansivu
80ea1782f9 Move card to archive, add shortcut key ÷ for Persian keyboard.
Thanks to mohammadZahedian and xet7 !

Fixes https://github.com/wekan/wekan/pull/5589,
fixes https://github.com/wekan/wekan/pull/5576.
2024-12-04 14:11:10 +02:00
Lauri Ojansivu
aa46b42356 Updated ChangeLog. 2024-12-04 13:08:25 +02:00
Lauri Ojansivu
3cd069ffb9
Merge pull request #5598 from wekan/dependabot/github_actions/docker/build-push-action-6.10.0
Bump docker/build-push-action from 6.9.0 to 6.10.0
2024-12-03 13:39:14 +02:00
dependabot[bot]
e621ad6d7c
Bump docker/build-push-action from 6.9.0 to 6.10.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.9.0 to 6.10.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](4f58ea7922...48aba3b46d)

---
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>
2024-12-02 20:59:24 +00:00
Lauri Ojansivu
729d8fb435 Accessibility statement. Part 1. In Progress.
Thanks to xet7 !
2024-12-02 14:17:58 +02:00
Lauri Ojansivu
de2ddbe8b5 Fix typo. 2024-12-02 10:51:48 +02:00
Lauri Ojansivu
57ddd82ef1 v7.69 2024-12-02 08:22:51 +02:00
Lauri Ojansivu
79f7ec2715 Updated release scripts.
Thanks to xet7 !
2024-12-02 08:14:54 +02:00
Lauri Ojansivu
ab4c3bd2fc Updated Keycloak etc login settings at start-wekan.bat and start-wekan.sh.
Thanks to xet7 !
2024-12-02 08:10:32 +02:00
Lauri Ojansivu
bd3a7e1068 Updated ChangeLog. 2024-12-02 06:19:38 +02:00
Lauri Ojansivu
aa33ead7b2 Updated Windows docs. 2024-12-02 06:17:40 +02:00
Lauri Ojansivu
94cf2a80a5 Updated ChangeLog. 2024-11-28 16:37:52 +02:00
Lauri Ojansivu
2ee959a08e
Merge pull request #5597 from malteprang/main
Update docker-compose.yml keycloak part
2024-11-28 16:36:33 +02:00
malteprang
54b7591ca0
Update docker-compose.yml keycloak part 2024-11-28 15:00:00 +01:00
Lauri Ojansivu
b3f0392e7d Updated translations. 2024-11-27 16:28:48 +02:00
Lauri Ojansivu
77e7350e96 Updated ChangeLog. 2024-11-27 16:25:51 +02:00
Lauri Ojansivu
9c87572f90 Updated dependencies.
Thanks to developers of dependencies !
2024-11-27 16:24:11 +02:00
Lauri Ojansivu
65765f6c2f Updated ChangeLog. 2024-11-27 16:16:31 +02:00
Lauri Ojansivu
785b312009
Merge pull request #5595 from walster001/main
Fix issue with comments not showing
2024-11-27 14:48:55 +02:00
walster001
1d9a710e3b
Fix issue with comments not showing 2024-11-27 22:05:43 +10:30
Lauri Ojansivu
909bf811d1
Merge pull request #5590 from wekan/dependabot/github_actions/docker/metadata-action-5.6.1
Bump docker/metadata-action from 5.5.1 to 5.6.1
2024-11-25 23:19:01 +02:00
dependabot[bot]
90abe01286
Bump docker/metadata-action from 5.5.1 to 5.6.1
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.5.1 to 5.6.1.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](8e5442c4ef...369eb591f4)

---
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-11-25 21:17:31 +00:00
Lauri Ojansivu
2c13d74c5f
Merge pull request #5589 from NadavTasher/feature/change-card-archive-shortcut
Opinion - Change archive-card shortcut to backtick for better ergonomics
2024-11-24 22:13:21 +02:00
Lauri Ojansivu
5d975c5da4 Updated ChangeLog. 2024-11-24 21:17:10 +02:00
Nadav Tasher
35c1057527 Change archive-card shortcut to backtick for better ergonomics 2024-11-24 20:55:36 +02:00
Lauri Ojansivu
3912181857 v7.68 2024-11-24 20:44:30 +02:00
Lauri Ojansivu
b9a01eb5d6 Updated ChangeLog. 2024-11-24 20:35:28 +02:00
Lauri Ojansivu
3027f0acb0 Updated translations. 2024-11-24 20:34:34 +02:00
Lauri Ojansivu
609c2a5ddb Updated ChangeLog. 2024-11-24 20:33:32 +02:00
Lauri Ojansivu
f76d648012 Merge branch 'feature/new-dockerfile' of https://github.com/NadavTasher/wekan 2024-11-24 20:13:14 +02:00
Nadav Tasher
203bf92a0a Fix data directory regression 2024-11-24 19:49:32 +02:00
Lauri Ojansivu
3e8cc9e905 Merge branch 'feature/new-dockerfile' of https://github.com/NadavTasher/wekan 2024-11-24 04:22:27 +02:00
Nadav Tasher
b9f32c1739 Remove ulimit from Dockerfile 2024-11-24 02:01:10 +02:00
Nadav Tasher
7e1c65f616 Removed stack-size changing, replaced with FD limit 2024-11-24 01:29:56 +02:00
Nadav Tasher
447ae93476 Updated NodeJS version to v14.21.4 (Meteor ESM) 2024-11-24 00:46:29 +02:00
Nadav Tasher
6df40f41ac Change source of GitHub wekan packages to HTTPs (eliminates git ls-remote) 2024-11-23 23:21:12 +02:00
Nadav Tasher
3e0ef3d070 Created efficient multi-stage Dockerfile 2024-11-23 23:20:57 +02:00
Lauri Ojansivu
33a17a9a1b v7.67 2024-11-21 01:42:38 +02:00
Lauri Ojansivu
aed4bfb7f4 Updated translations. 2024-11-21 01:33:11 +02:00
Nadav Tasher
78f7c3e5bd Updated theming documentation on sidebar coloring 2024-11-21 00:43:20 +02:00
Nadav Tasher
d764047c1f Remove non-effective height property (does nothing here) 2024-11-21 00:42:23 +02:00
Nadav Tasher
65015ea7c7 Remove non-required sidebar-shadow div in favor of direct sidebar background 2024-11-21 00:41:57 +02:00
Nadav Tasher
6ef2d9cb9d Remove bottom margin from sidebar (causes an out-of-theme white gap) 2024-11-21 00:24:40 +02:00
Nadav Tasher
c39fdab11d Disable scrollbar hiding in swimlanes 2024-11-21 00:14:04 +02:00
Nadav Tasher
547261abb6 Disable scrollbar hiding in sidebar 2024-11-21 00:13:50 +02:00
Nadav Tasher
7696b7b769 Disable scrollbar hiding in list 2024-11-21 00:13:34 +02:00
Nadav Tasher
585635494a Disable scrollbar hiding in cardDetails 2024-11-21 00:13:22 +02:00
Nadav Tasher
a36e80099a Revert "Revert some scrollbar, sidebar and list width changes."
This reverts commit 096fe130f6.
2024-11-21 00:10:49 +02:00
Nadav Tasher
f5f8a4f6fb Revert "Updated translations."
This reverts commit 83a12a9a26.
2024-11-21 00:10:30 +02:00
Lauri Ojansivu
e207bff91f v7.65 2024-11-20 21:22:23 +02:00
Lauri Ojansivu
a2c7c230ef Updated ChangeLog. 2024-11-20 21:16:21 +02:00
Lauri Ojansivu
83a12a9a26 Updated translations. 2024-11-20 21:14:01 +02:00
Lauri Ojansivu
096fe130f6 Revert some scrollbar, sidebar and list width changes.
Thanks to xet7 !

Fixes #5585,
fixes https://github.com/wekan/wekan/pull/5583
2024-11-20 21:08:06 +02:00
Lauri Ojansivu
12d22f92b2 v7.64 2024-11-20 09:08:49 +02:00
Lauri Ojansivu
017628e2a6 Updated ChangeLog. 2024-11-20 08:57:40 +02:00
Lauri Ojansivu
332b9f5816 Updated translations. 2024-11-20 08:49:46 +02:00
Lauri Ojansivu
09a96c1118 Updated translations. 2024-11-20 08:15:19 +02:00
Lauri Ojansivu
82750ee8a2 Updated translations. 2024-11-20 03:04:51 +02:00
Lauri Ojansivu
4e89f27768 Updated translations. 2024-11-20 02:53:30 +02:00
Lauri Ojansivu
6f60235a3f
Merge pull request #5584 from NadavTasher/feature/fix-minimum-width-on-list-auto-width
Improve list auto-width, fix regressions
2024-11-20 02:47:45 +02:00
Lauri Ojansivu
42be851d64
Merge pull request #5583 from NadavTasher/feature/better-scrollbar-disabling
Change way of disabling scrollbars, disable swimlane scrollbars
2024-11-20 02:44:45 +02:00
Nadav Tasher
6c32c210f8 Disable scrollbars in swimlanes 2024-11-20 01:20:40 +02:00
Nadav Tasher
aca665ae4e Changed method of scrollbar hiding 2024-11-20 01:20:10 +02:00
Nadav Tasher
09bee30610 Change list width translation 2024-11-20 00:49:24 +02:00
Nadav Tasher
87d53f6f93 Fix dragscroll inside swimlanes 2024-11-20 00:48:13 +02:00
Nadav Tasher
98cf7ec715 Change max-width to min-width so that lists will only shrink when there is no space left 2024-11-20 00:47:45 +02:00
Lauri Ojansivu
12e50d93df
Merge pull request #5581 from NadavTasher/feature/default-lists-to-space-evenly
Make lists fill up space evenly, change listWidth to max-width
2024-11-18 03:24:56 +02:00
Lauri Ojansivu
dfcdb1994b
Merge pull request #5580 from NadavTasher/bugfix/add-missing-semicolon
Add missing semicolon in keyboard.js
2024-11-18 03:24:28 +02:00
Nadav Tasher
30a5b87370 Change list width to max width, default to even spacing 2024-11-17 23:05:21 +02:00
Nadav Tasher
465e2b1b6a Remove swimlane size limit 2024-11-17 23:03:56 +02:00
Lauri Ojansivu
1ae52bbdb1 Updated translations. 2024-11-17 12:41:56 +02:00
Nadav Tasher
d0024d397a Add missing semicolon 2024-11-16 23:35:39 +02:00
Lauri Ojansivu
0b2cdc4d56 v7.63 2024-11-16 21:37:58 +02:00
Lauri Ojansivu
92af6f71d9 Updated scaling docs.
Thanks to xet7 !
2024-11-16 21:36:35 +02:00
Lauri Ojansivu
8879b8498f Updated translations. 2024-11-16 21:19:04 +02:00
Lauri Ojansivu
ad7e0e0bf9 Updated ChangeLog. 2024-11-16 21:17:37 +02:00
Lauri Ojansivu
edb7398295 Revert adding more stack size.
Thanks to xet7 !
2024-11-16 21:16:30 +02:00
Lauri Ojansivu
cfca28e25a Updated translations. 2024-11-16 21:00:46 +02:00
Lauri Ojansivu
a811e22f95 Updated ChangeLog. 2024-11-16 20:53:41 +02:00
Lauri Ojansivu
fbb2e6e261
Merge pull request #5578 from NadavTasher/feature/various-style-improvements
Sidebar style overhaul - absolute positioning, weird style fixes, disable sidebar scrollbar
2024-11-16 20:19:18 +02:00
Lauri Ojansivu
c44b99d515
Merge pull request #5577 from NadavTasher/feature/new-keyboard-shortcut-for-assigning-user
Potential bug(fix?) - Add assign-self keyboard shortcut (old shortcut actually adds)
2024-11-16 20:18:42 +02:00
Lauri Ojansivu
0f283e6cdf
Merge pull request #5576 from NadavTasher/bugfix/change-archive-shortcut-to-minus
Change move-to-archive keyboard shortcut to '-', because of Ctrl + C shortcut
2024-11-16 20:17:30 +02:00
Nadav Tasher
b7e8f796a3 Sidebar overhaul - change position to absolute, fix weird style bugs, disable scrollbar 2024-11-16 18:56:38 +02:00
Nadav Tasher
d63507dd97 Add margin to member and assignee avatars 2024-11-16 17:53:36 +02:00
Nadav Tasher
e1168b5107 Added keyboard shortcut to "assign self" and rename old shortcut to "add self" 2024-11-16 17:40:35 +02:00
Nadav Tasher
cecb4b8336 Change move-to-archive keyboard shortcut to '-' 2024-11-16 17:34:16 +02:00
Lauri Ojansivu
5bbbf9d0e6
Merge pull request #5575 from NadavTasher/feature/disable-filter-menu-popup-when-using-keyboard-filters
Disable sidebar showing when filtering using keyboard shortcut
2024-11-16 17:33:15 +02:00
Lauri Ojansivu
29775eef9a Updated ChangeLog. 2024-11-16 17:32:45 +02:00
Lauri Ojansivu
3f3e645c96
Merge pull request #5574 from NadavTasher/feature/support-shortcuts-when-not-using-english-keyboard-layout
Patch to allow shortcuts to work when another keyboard layout is used
2024-11-16 17:27:59 +02:00
Nadav Tasher
ebece3f961 Disable sidebar showing when filtering using keyboard shortcut 2024-11-16 17:25:42 +02:00
Lauri Ojansivu
4951d409db Updated translations. 2024-11-16 17:22:37 +02:00
Nadav Tasher
cf90511f3c Added multi-language support for keyboard shortcuts 2024-11-16 17:21:47 +02:00
Lauri Ojansivu
4ec0e63d99
Merge pull request #5573 from NadavTasher/feature/hide-scrollbars-in-card-details-and-lists
Hide scrollbars where they interrupt
2024-11-16 17:21:29 +02:00
Nadav Tasher
08843a9dd6 Hide scrollbars from lists (middle of the screen) 2024-11-16 17:18:46 +02:00
Nadav Tasher
b3f229dc86 Hide scrollbars from card details popup 2024-11-16 17:17:05 +02:00
Lauri Ojansivu
18b74e7a61
Merge pull request #5572 from NadavTasher/feature/right-to-left
Fix some text alignment issues when using RTL languages
2024-11-16 17:16:20 +02:00
Lauri Ojansivu
c60961cbb1
Merge pull request #5571 from NadavTasher/feature/always-close-sidebar-on-escape
Always close sidebar when user clicks ESC
2024-11-16 17:15:48 +02:00
Lauri Ojansivu
3338fc366d
Merge pull request #5570 from NadavTasher/feature/new-card-keyboard-shortcut
Added 'n' shortcut for adding new minicards to current list
2024-11-16 17:15:22 +02:00
Nadav Tasher
79cbf25b73 Fix some text alignment issues when using RTL languages 2024-11-16 17:14:03 +02:00
Nadav Tasher
7963118032 Always close sidebar on escape button 2024-11-16 17:07:25 +02:00
Nadav Tasher
35e6c938dc Added 'n' shortcut for adding new minicards 2024-11-16 17:03:59 +02:00
Lauri Ojansivu
c632bc4555 Merge newest changes. 2024-11-15 23:35:13 +02:00
Lauri Ojansivu
7a34bc3eb0 Updated Docker base image to Ubuntu 24.10.
Thanks to Ubuntu developers !
2024-11-15 23:33:18 +02:00
Lauri Ojansivu
6e0d41834c v7.62 2024-11-15 23:30:15 +02:00
Lauri Ojansivu
4bcbaf9113 Updated ChangeLog. 2024-11-15 23:24:19 +02:00
Lauri Ojansivu
5448a15691 Updated docs sidebar.
Thanks to xet7 !
2024-11-15 23:22:46 +02:00
Lauri Ojansivu
c63feb3ff3 Updated ChangeLog. 2024-11-15 23:21:32 +02:00
Lauri Ojansivu
fb4d95672e Update Snap Candidate to MongoDB 6.0.19. Updated WeKan Windows version numbers. Added Cron docs.
Thanks to xet7 !
2024-11-15 23:19:36 +02:00
Lauri Ojansivu
bfb1658abe Updated translations. 2024-11-15 23:04:29 +02:00
Lauri Ojansivu
79e2c9175f Updated ChangeLog. 2024-11-15 22:56:59 +02:00
Lauri Ojansivu
b9c2d49a1c Updated translations. 2024-11-15 22:44:46 +02:00
Lauri Ojansivu
a25eb4ded6 Updated translations. 2024-11-15 22:39:14 +02:00
Lauri Ojansivu
3851de2774
Merge pull request #5569 from mfilser/checklist_items_hide_per_checklist
each checklist can now be configured to hide checked checklist items
2024-11-15 22:04:03 +02:00
Martin Filser
0783b733b0 Checklist, hide all checklist items possible, regardless if the checklist item is finished or not 2024-11-15 21:00:06 +01:00
Martin Filser
bb17feaa17 Checklist, hide checked checklist items (configureable at each checklist) 2024-11-15 21:00:06 +01:00
Lauri Ojansivu
7623c8dcb7
Merge pull request #5568 from mfilser/checklist_multiline_insert
Checklist multiline insert (many checklist items at once)
2024-11-15 21:59:36 +02:00
Martin Filser
1d7eb8a03b Checklist, adding many items set's now the sorting correctly 2024-11-15 20:56:36 +01:00
Martin Filser
c5712f5ae0 Checklist multiline option, adding description to both checkbox options 2024-11-15 20:54:30 +01:00
Martin Filser
00e5808a4c Checklist multiline option, adding option to keep the origin order if many items are added at the checklist top 2024-11-15 20:54:29 +01:00
Lauri Ojansivu
0a591564fd
Merge pull request #5567 from mfilser/checklist_items_hide_per_card
Checklist items hide per card
2024-11-15 21:52:25 +02:00
Martin Filser
8448068d22 hide empty checklist if checklist items are hidden
conditions are:
- the checklist must have at least 1 checklist item
- all checklist items have to be finished
- the option "hide checked checklist items" is set at card details
2024-11-15 20:35:18 +01:00
Martin Filser
9fa36c3991 hide checklist-items per card now
- performance relevant
- more granular setting
2024-11-15 20:35:18 +01:00
Martin Filser
d949753d54 preparation hide checklist-items per card 2024-11-15 20:35:17 +01:00
Lauri Ojansivu
f6d2b08025
Merge pull request #5566 from mfilser/card_comment_section
added comment section on card details to avoid loading the card comment activities from the server
2024-11-15 21:21:12 +02:00
Martin Filser
8a446de3e9 added comment section on card details to avoid loading the card comment activities from the server
- and added to show only the activities a card

- to display the card comments a connection to the server was needed to get the activities of the card comments, now, it's not necessary
- also performance relevant. until now there were a lot of activities loaded, now only of the current card
2024-11-15 19:55:07 +01:00
Lauri Ojansivu
0196f46094 Merge branch 'main' of github.com:wekan/wekan 2024-11-11 17:46:43 +02:00
Lauri Ojansivu
bd83b3bc8e Add info about if Snap slow 2024-11-11 17:46:09 +02:00
Lauri Ojansivu
89347abf53 Updated ChangeLog. 2024-11-02 18:56:52 +02:00
Lauri Ojansivu
a27f8ecfa9 Fix Warning: missing space before text for line 210 of jade file client/components/activities/activities.jade
Thanks to xet7 !
2024-11-02 18:55:33 +02:00
Lauri Ojansivu
75ca4920c5 Updated ChangeLog. 2024-11-02 18:36:10 +02:00
Lauri Ojansivu
324be07b85 Add more stack size.
Thanks to xet7 !
2024-11-02 18:34:51 +02:00
Lauri Ojansivu
282a5b30f9 Updated ChangeLog. 2024-11-02 18:19:50 +02:00
Lauri Ojansivu
b24acefa6f Updated dependencies.
Thanks to developers of dependencies!
2024-11-02 18:18:14 +02:00
Lauri Ojansivu
751b519167 Updated ChangeLog. 2024-11-02 18:17:34 +02:00
Lauri Ojansivu
330aec2bdd
Merge pull request #5555 from emmanuel-ferdman/main
Update `ldap-sync.py` reference
2024-11-02 16:42:08 +02:00
Emmanuel Ferdman
d5635c3a89
Update ldap-sync.py reference
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2024-11-01 23:09:16 -07:00
Lauri Ojansivu
1e86d67bfe Updated ChangeLog. 2024-10-31 00:25:30 +02:00
Lauri Ojansivu
8ac9353c53 Copied from Sandstorm developer discussions to docs fix for running Sandstorm at Ubuntu 24.04.
Thanks to xet7 !
2024-10-31 00:23:45 +02:00
Lauri Ojansivu
1557970170 Updated ChangeLog. 2024-10-31 00:13:33 +02:00
Lauri Ojansivu
508bbb37ce Add docs about how at LXC/LXD Fix: System does not fully support snapd.
Thanks to xet7 !
2024-10-31 00:11:15 +02:00
Lauri Ojansivu
a90fc396a9 Updated ChangeLog. 2024-10-30 22:36:26 +02:00
Lauri Ojansivu
96627540da Updated docs about Linked Cards.
Thanks to xet7 !
2024-10-30 22:34:53 +02:00
Lauri Ojansivu
db6ebe0470 Updated ChangeLog. 2024-10-23 02:06:35 +03:00
Lauri Ojansivu
559251eb0d Copied updated Docs from wiki to WeKan repo.
Thanks to xet7 !
2024-10-23 02:04:30 +03:00
Lauri Ojansivu
23396d1bd6 v7.61 2024-10-23 01:05:15 +03:00
Lauri Ojansivu
9d92a79a28 Updated to MongoDB 6.0.18 at Snap Candidate.
Thanks to MongoDB developers !
2024-10-23 01:02:48 +03:00
Lauri Ojansivu
90a64a7403 Updated ChangeLog. 2024-10-23 00:51:43 +03:00
Lauri Ojansivu
f709cc332c
Merge pull request #5552 from mfilser/master
Fixing opening cards and slow performance of closing cards
2024-10-23 00:35:49 +03:00
Martin Filser
c925a27870 Fixing opening cards and slow performance of closing cards
Fixes: #5533
Fixes: #5548

Revert "Switch from kadira:flow-router to ostrio:flow-router-extra"

This reverts commit 718c1a393d.
2024-10-22 21:45:36 +02:00
Lauri Ojansivu
d31403a918 Updated ChangeLog. 2024-10-20 00:08:24 +03:00
Lauri Ojansivu
f9051d768c Updated translations. 2024-10-20 00:06:08 +03:00
Lauri Ojansivu
06eb2adeaa
Merge pull request #5549 from AdenKoziol/main
renaming list shows in activities
2024-10-20 00:00:01 +03:00
Aden Koziol
12af3a5d10 renaming list shows in activities 2024-10-16 16:40:20 -05:00
Lauri Ojansivu
8bf94d6ac6
Merge pull request #5538 from namar0x0309/patch-1
Update Candidate-WeKan-Snap-Manual-Upgrade.md in order to create a proper sh file snap-settings.sh
2024-10-03 05:44:19 +03:00
Nas A.
15af5d2c2e
Update Candidate-WeKan-Snap-Manual-Upgrade.md
"sudo snap get wekan" outputs key value pairs but not sh code to set those values in snap wekan environment. 

Fixing this here
2024-10-02 16:40:16 -07:00
Lauri Ojansivu
60c5c5c723
Merge pull request #5535 from wekan/dependabot/github_actions/docker/build-push-action-6.9.0
Bump docker/build-push-action from 6.7.0 to 6.9.0
2024-10-01 15:00:48 +03:00
Lauri Ojansivu
f972da7442
Merge pull request #5534 from majus/master
Update VSCode debugging configuration
2024-10-01 15:00:33 +03:00
dependabot[bot]
948537cb75
Bump docker/build-push-action from 6.7.0 to 6.9.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.7.0 to 6.9.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](5cd11c3a4c...4f58ea7922)

---
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>
2024-09-30 20:09:47 +00:00
Denis Perov
ec5d0d00f5 Update VSCode debugging configuration 2024-09-30 16:23:27 +03:00
Lauri Ojansivu
0e7c454013 Updated ChangeLog. 2024-09-24 07:33:25 +03:00
Lauri Ojansivu
6e8e581ceb Testing packages without versions from 2024-09-24 07:22:22 +03:00
Lauri Ojansivu
2ec435af41 Updated ChangeLog. 2024-09-24 00:54:11 +03:00
Lauri Ojansivu
5aa38c2e40 Try 6 to fix apparmor denied in syslog at Snap Candidate.
Thanks to webenefits and xet7 !

Fixes #4855
2024-09-24 00:52:42 +03:00
Lauri Ojansivu
0ff3952a8b Updated ChangeLog. 2024-09-24 00:27:50 +03:00
Lauri Ojansivu
e32d2daa45 Try 5 to fix apparmor denied in syslog at Snap Candidate.
Thanks to webenefits and xet7 !

Fixes #4855
2024-09-24 00:26:15 +03:00
Lauri Ojansivu
57780801aa Updated ChangeLog. 2024-09-24 00:03:42 +03:00
Lauri Ojansivu
ecdfc68170 Try 4 to fix apparmor denied in syslog at Snap Candidate.
Thanks to webenefits and xet7 !

Fixes #4855
2024-09-24 00:02:00 +03:00
Lauri Ojansivu
3b29678ef1 Updated ChangeLog. 2024-09-23 23:11:53 +03:00
Lauri Ojansivu
6c54b38cdf Try 3 to fix apparmor denied in syslog at Snap Candidate. Changed MongoDB --host back to --bind_ip.
Thanks to webenefits and xet7 !

Fixes #4855
2024-09-23 23:08:47 +03:00
Lauri Ojansivu
dfcabc5a36 v7.60 2024-09-23 22:00:47 +03:00
Lauri Ojansivu
5c8cf2ebbd Updated ChangeLog. 2024-09-23 21:18:54 +03:00
Lauri Ojansivu
a9d41217bd Removed outdated dependency page. To be seen, does anything break.
Thanks to xet7 !
2024-09-23 21:15:19 +03:00
Lauri Ojansivu
75f44a821c Merge branch 'feature/ostrio-flow-router-extra' of https://github.com/majus/wekan 2024-09-23 20:52:11 +03:00
Lauri Ojansivu
0ab16764d1 Updated ChangeLog. 2024-09-23 20:28:13 +03:00
Lauri Ojansivu
b6e7e03c95 Added to Docs CNAME DNS info about CloudFlare and Sandstorm.
Thanks to xet7 !
2024-09-23 20:26:20 +03:00
Denis Perov
718c1a393d Switch from kadira:flow-router to ostrio:flow-router-extra 2024-09-23 19:25:55 +03:00
Lauri Ojansivu
50f3316088 Removed old models files that caused problems with login.
Thanks to xet7 !
2024-09-15 19:40:49 +03:00
Lauri Ojansivu
2727651897 Comment out not in use old attachments models code. 2024-09-08 17:42:04 +03:00
Lauri Ojansivu
e72646a4d4 Add back old attachments models for attachment migrations.
Thanks to xet7 !
2024-09-08 16:46:17 +03:00
Lauri Ojansivu
8ef8d546c5 v7.59 2024-09-04 21:06:53 +03:00
Lauri Ojansivu
a8b2d7a6bd Updated ChangeLog. 2024-09-04 21:00:19 +03:00
Lauri Ojansivu
0a1074ca6e Try 2 to fix apparmor denied in syslog at Snap Candidate. Newest MongoDB uses --host, not anymore --bind_ip.
Thanks to webenefits and xet7 !

Fixes #4855
2024-09-04 20:56:32 +03:00
Lauri Ojansivu
019d7c92c3 v7.58 2024-09-04 19:08:01 +03:00
Lauri Ojansivu
cb653e03f2 Updated ChangeLog. 2024-09-04 19:04:18 +03:00
Lauri Ojansivu
a6c8833f65 Try to fix apparrmor denied in syslog at Snap Candidate.
Thanks to webenefits and xet7 !

Fixes #4855
2024-09-04 19:01:41 +03:00
Lauri Ojansivu
f00b39d154 v7.57 2024-09-04 11:57:53 +03:00
Lauri Ojansivu
39597e04ac Updated ChangeLog. 2024-09-04 10:57:49 +03:00
Lauri Ojansivu
1610eff0e9 Updated dependencies.
Thanks to developers of dependencies.
2024-09-04 10:55:48 +03:00
Lauri Ojansivu
c944f9fdff Updated ChangeLog. 2024-09-04 10:37:38 +03:00
Lauri Ojansivu
9b4d4c5953
Merge pull request #5523 from walster001/main
Large updates to UI
2024-09-04 10:32:13 +03:00
walster001
a8f09011e9
Exodark Margin Fix
Added 10px margin to ExoDark lists also (following on from Clearblue fix) as with those rounded backgrounded lists I feel it looks nicer to give it some padding. 

Open to other contributors perspective however.
2024-09-04 14:17:11 +09:30
walster001
2e1675969a
Clearblue Margin - comment
Add comment to explain changes to margin in case someone wants to revert in future
2024-09-04 14:10:31 +09:30
walster001
a71973cc80
Clearblue Margin Fix
Fix ClearBlue lists being butted up against the left hand side of the screen when viewed from a non-editor account (IE comment only).
2024-09-04 14:09:28 +09:30
walster001
608ec63899 Large updates to UI
- Added a wide range of updates/tweaks to various board themes
- Better defined theme start/endpoints in code
- Added modern scrollbars matching each theme
- Added styling to scrollbars in pop-over and horizontally across screen
- Tweaks to opacity/themes to work better with board backgrounds.
2024-09-04 13:56:06 +09:30
Lauri Ojansivu
52bdba8e85 Updated ChangeLog. 2024-09-01 19:15:00 +03:00
Lauri Ojansivu
f5b11b15ce
Merge pull request #5519 from LanetNetwork/templ_upd
Update templates
2024-08-28 14:45:24 +03:00
Dmytro Novash
3359559ad2
Merge branch 'wekan:main' into templ_upd 2024-08-28 14:24:28 +03:00
Dmytro Novash
b4aa464473 use label instead of span 2024-08-28 14:23:35 +03:00
Lauri Ojansivu
dbe31a86b7
Update LICENSE 2024-08-28 05:27:49 +03:00
Lauri Ojansivu
bd283ff4e2
Merge pull request #5517 from walster001/main
Rework fix for mobile devices to incorporate all themes/list headers
2024-08-27 20:58:27 +03:00
walster001
c020ce8895
Remove vertical-align - doesn't fix for all board themes 2024-08-27 19:53:19 +09:30
walster001
f3562525db Create boardColors.css 2024-08-27 19:50:01 +09:30
walster001
cc89c35c8d Merge branch 'main' of https://github.com/walster001/wekan-atlanz 2024-08-27 19:38:38 +09:30
walster001
2457084db2
Update padding values/display for Mobile Devices
Have modified this in my test dev server, it appears this is the property that defines the spacing/containment of text for lists. When tested on iOS device this appears to work correctly. 

Last commit removing vertical align, and iinitial commit unsetting line height for ModernDark fixes an issue where text was super spaced out on ModernDark theme only.
2024-08-27 19:31:13 +09:30
walster001
508a2d7103
Revert vertical-align. Left line-height unset.
Didn't fix issue as its more than just modern-dark theme. Have played around on dev server and found its in the list css itself.
2024-08-27 19:28:06 +09:30
Lauri Ojansivu
3d7fef67d8 v7.56 2024-08-26 17:39:24 +03:00
Lauri Ojansivu
d63d445b7d Upgraded Snap Candidate MongoDB to 6.0.17.
Thanks to MongoDB developers !
2024-08-26 17:30:05 +03:00
Lauri Ojansivu
8d3fe29c68
Update Browser-compatibility-matrix.md 2024-08-23 15:29:46 +03:00
Lauri Ojansivu
ad3ecbfd96
Update Browser-compatibility-matrix.md 2024-08-23 15:28:21 +03:00
Lauri Ojansivu
51ec43e7bc
Update Browser-compatibility-matrix.md 2024-08-23 15:27:24 +03:00
Lauri Ojansivu
88dfc57e7e
Update Browser-compatibility-matrix.md 2024-08-23 15:25:13 +03:00
Lauri Ojansivu
7409c366f6
Update Browser-compatibility-matrix.md 2024-08-23 15:24:01 +03:00
Lauri Ojansivu
b99b2a6d66
Update Browser-compatibility-matrix.md 2024-08-23 15:21:21 +03:00
walster001
fa21b00bb6
Merge branch 'wekan:main' into main 2024-08-23 00:27:31 +09:30
walster001
f061b5e12a Clean up theme descriptions, add scrollbars
- Cleaned up theme descriptions as many themes weren't labelled/or had mismatched descriptions.
- Began adding scrollbars to default themes/board canvases.
- Test removal of lines/editing margins on nephritis theme
2024-08-23 00:25:29 +09:30
Lauri Ojansivu
8ca642edc8 Updated ChangeLog. 2024-08-21 00:55:31 +03:00
Lauri Ojansivu
c3909edc5e Fix apparmor denied in syslog at Snap Candidate.
Thanks to webenefits and xet7 !

Fixes #4855
2024-08-21 00:52:15 +03:00
Lauri Ojansivu
f4cf09d394
Merge pull request #5511 from wekan/dependabot/github_actions/docker/build-push-action-6.7.0
Bump docker/build-push-action from 6.6.1 to 6.7.0
2024-08-19 23:37:54 +03:00
dependabot[bot]
6aa4f9fb86
Bump docker/build-push-action from 6.6.1 to 6.7.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.6.1 to 6.7.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](16ebe778df...5cd11c3a4c)

---
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>
2024-08-19 20:10:48 +00:00
Lauri Ojansivu
a31545824e Updated ChangeLog. 2024-08-19 22:23:18 +03:00
Lauri Ojansivu
a94cfd5b91
Update Docker.md for docker compose commands and building custom docker image
Update Docker.md for docker compose commands and building custom docker image
2024-08-19 11:03:58 +03:00
Lauri Ojansivu
6d6d51310e
Update docker-compose.yml docker compose command
Update docker-compose.yml docker compose command
2024-08-19 11:00:47 +03:00
Lauri Ojansivu
c9cf2971de
Merge pull request #5505 from wekan/dependabot/github_actions/docker/build-push-action-6.6.1
Bump docker/build-push-action from 6.5.0 to 6.6.1
2024-08-12 23:47:53 +03:00
dependabot[bot]
54c481e3d8
Bump docker/build-push-action from 6.5.0 to 6.6.1
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.5.0 to 6.6.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](5176d81f87...16ebe778df)

---
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>
2024-08-12 20:46:26 +00:00
Lauri Ojansivu
8b4fbd266d
Merge pull request #5503 from walster001/main
Fix ModernDark Mobile View List Titles
2024-08-12 22:56:01 +03:00
Lauri Ojansivu
3c5241b007 Updated ChangeLog. 2024-08-12 22:09:48 +03:00
Lauri Ojansivu
42a1f94931 Updated ChangeLog. 2024-08-12 22:04:43 +03:00
Lauri Ojansivu
cae6f38b80 Updated code of conduct. 2024-08-12 21:59:01 +03:00
walster001
25722e5e9d
Tweaks to exodark for board backgrounds
Removed drop shadow on exodark cards, as when background applied to board it looks a bit rough design wise. 

Added background-color that will disappear when background is applied, and when background is not applied gives exodark a bit of a smoother cleaner look IMO
2024-08-12 23:49:12 +09:30
walster001
1d339ec17e
Update boardColors.css 2024-08-12 21:28:14 +09:30
Lauri Ojansivu
ec534c8cca
Update Browser-compatibility-matrix.md 2024-08-11 19:15:15 +03:00
Lauri Ojansivu
cab285c34d
Update Browser-compatibility-matrix.md 2024-08-11 19:12:36 +03:00
Lauri Ojansivu
975993dd6d v7.55 2024-08-08 17:32:35 +03:00
Lauri Ojansivu
43084eb664 Updated ChangeLog. 2024-08-08 17:25:16 +03:00
Lauri Ojansivu
0e770ac3b3
Merge pull request #5501 from walster001/main
Fix board backgrounds not showing correctly after V7.54
2024-08-08 17:20:08 +03:00
walster001
206abc8c68 Fix board backgrounds not showing correctly.
Fixed board backgrounds not showing correctly on the following themes. Various code modified as different themes have used different code to implement the background.

Have tried to stick with board-wrapper as a standard to apply the background colour to.
Board background image will override board-wrapper colour every time.

Dark
Relax
Natural
Modern
ModernDark
Exodark
CleanDark
CleanLight

- Updated pull due to original file I had stored on my pc 139 commits behind! So synced that and then redid code changes to bring it all up to date.
2024-08-08 23:34:09 +09:30
walster001
62b13cc343 Merge branch 'main' of https://github.com/walster001/wekan-atlanz 2024-08-08 23:23:00 +09:30
walster001
7822dd3b75 Fix board backgrounds not showing correctly
Fixed board backgrounds not showing correctly on the following themes.
Various code modified as different themes have used different code to implement the background.

Have tried to stick with board-wrapper as a standard to apply the background colour to.

Board background image will override this every time.

- Dark
- Relax
- Natural
- Modern
- ModernDark
- Exodark
- CleanDark
- CleanLight
2024-08-08 22:51:07 +09:30
Lauri Ojansivu
a214cd64b6 v7.54 2024-08-07 17:51:01 +03:00
Lauri Ojansivu
8839a8ea39 Updated ChangeLog. 2024-08-07 17:26:47 +03:00
Lauri Ojansivu
a4169f3da7 Fix LDAP login fails after upgrade.
Thanks to juppees !

Fixes #5499
2024-08-07 17:24:14 +03:00
Lauri Ojansivu
19d59b3ab4 Updated ChangeLog. 2024-08-07 00:25:57 +03:00
Lauri Ojansivu
27b2e2384c
Merge pull request #5498 from mfilser/master
Bugfix, edit description didn't work if it was clicked
2024-08-07 00:24:58 +03:00
Lauri Ojansivu
49d2cbc2c1 Updated ChangeLog. 2024-08-07 00:23:49 +03:00
Martin Filser
bf2b3b40cd Bugfix, edit description didn't work if it was clicked
- introduced by commit: 0cc63b810c
2024-08-06 23:22:58 +02:00
Lauri Ojansivu
1541c6ca23
Merge pull request #5497 from mfilser/master
listHeader, simpler code logic at collapsed if conditions
2024-08-07 00:22:23 +03:00
Lauri Ojansivu
42c1ff94e2 Updated ChangeLog. 2024-08-07 00:13:13 +03:00
Martin Filser
53aa5ebc17 listHeader, simpler code logic at collapsed if conditions 2024-08-06 23:12:31 +02:00
Lauri Ojansivu
0f43818757
Merge pull request #5496 from mfilser/master
Bugfix, Cards Count on mobile view was missing
2024-08-07 00:12:11 +03:00
Lauri Ojansivu
f3c5b1eb07 Updated ChangeLog. 2024-08-07 00:11:36 +03:00
Martin Filser
517d1bb7fa Bugfix, Cards Count on mobile view was missing
introduced by:
a601ba542a
2024-08-06 23:10:30 +02:00
Lauri Ojansivu
6ee0919ead
Merge pull request #5495 from mfilser/master
Editor, Bugfix, copy text is now at each editor (textarea) again
2024-08-07 00:10:03 +03:00
Martin Filser
13eb1a58e0 Editor, migrate to markdown at same line than copy text icon 2024-08-06 23:06:51 +02:00
Martin Filser
08f9c09484 Editor, Bugfix, copy text is now at each editor (textarea) again 2024-08-06 23:05:54 +02:00
Lauri Ojansivu
3f3abe26ee Updated ChangeLog. 2024-08-07 00:05:09 +03:00
Lauri Ojansivu
e31c5b6d42
Merge pull request #5494 from mfilser/master
Minicard, show creator, defaultValue of schema and other code is now the same
2024-08-07 00:03:47 +03:00
Martin Filser
7bf77fa7cb Minicard, show creator, defaultValue of schema and other code is now the same 2024-08-06 23:00:42 +02:00
Lauri Ojansivu
a2662f1366 Updated ChangeLog. 2024-08-06 23:57:40 +03:00
Lauri Ojansivu
116cf6aa21
Merge pull request #5493 from mfilser/master
board view, first column a bit smaller to save screen space
2024-08-06 23:56:20 +03:00
Lauri Ojansivu
79bb6d0c55 Updated ChangeLog. 2024-08-06 23:55:12 +03:00
Martin Filser
c157ecec38 board view, first column to add a new list was too large 2024-08-06 22:53:53 +02:00
Martin Filser
28893cf637 Bugfix, in View "Lists" the first column only showed the first 10 minicards, now all minicards again 2024-08-06 22:53:53 +02:00
Lauri Ojansivu
73ffc99f37
Merge pull request #5492 from mfilser/master
sidebar xmark icon, add padding and background color
2024-08-06 23:53:24 +03:00
Martin Filser
35802c7c62 sidebar xmark-icon, background color on hover the icon 2024-08-06 22:45:51 +02:00
Martin Filser
bc44fdf89c sidebar xmark icon, add padding to easier click 2024-08-06 22:45:51 +02:00
Lauri Ojansivu
030c3dd587 Updated ChangeLog. 2024-08-06 23:38:33 +03:00
Lauri Ojansivu
498be2759e
Merge pull request #5491 from mfilser/master
fix empty parentId in cards
2024-08-06 23:37:38 +03:00
Lauri Ojansivu
649d00733a Updated ChangeLog. 2024-08-06 23:36:07 +03:00
Martin Filser
8a7a4f3033 fix empty parentId in cards
- if the parentId is undefined or empty, the code run in a infinite loop and
  the browser "hangs"
2024-08-06 22:35:16 +02:00
Lauri Ojansivu
b6ce81dc79
Merge pull request #5490 from mfilser/master
change Meteor.user() to ReactiveCache.getCurrentUser()
2024-08-06 23:35:07 +03:00
Lauri Ojansivu
490c417cee Updated ChangeLog. 2024-08-06 23:33:59 +03:00
Martin Filser
2dfeb3924b reactiveCache, removing commented out code 2024-08-06 22:33:03 +02:00
Martin Filser
bff96f6ae2 change Meteor.user() to ReactiveCache.getCurrentUser()
- see also: https://github.com/wekan/wekan/issues/5000
2024-08-06 22:33:03 +02:00
Lauri Ojansivu
4801e26b2f
Merge pull request #5489 from mfilser/master
attachment popup back was broken since new attachment viewer, now fixed
2024-08-06 23:32:53 +03:00
Lauri Ojansivu
027997f7b3 Updated ChangeLog. 2024-08-06 23:32:29 +03:00
Martin Filser
76aaefbde1 attachment popup back was broken since new attachment viewer, now fixed 2024-08-06 22:30:51 +02:00
Lauri Ojansivu
a01bc0f325
Merge pull request #5488 from mfilser/master
remove attachment storage name from attachment list
2024-08-06 23:30:23 +03:00
Martin Filser
f6f4f5660e remove attachment storage name from attachment list
- this was for debugging, now not necessary anymore
2024-08-06 22:26:00 +02:00
Lauri Ojansivu
956925889a Updated ChangeLog. 2024-08-06 23:23:42 +03:00
Lauri Ojansivu
0bd49326d8
Merge pull request #5487 from mfilser/master
little opacity to minicards to see the background image a little bit
2024-08-06 23:22:32 +03:00
Lauri Ojansivu
64c4e8eca8 Updated ChangeLog. 2024-08-06 23:22:04 +03:00
Lauri Ojansivu
55fc342f6d Added info how with Caddy webserver config, PWA and Android app override icons, showing toolbars, etc.
Thanks to xet7 !
2024-08-06 23:19:43 +03:00
Martin Filser
3ae0d96760 little opacity to minicards to see the background image a little bit 2024-08-06 22:03:16 +02:00
Lauri Ojansivu
fc1e55cc19 Updated ChangeLog. 2024-08-06 22:58:13 +03:00
Lauri Ojansivu
58fc810a43
Merge pull request #5486 from mfilser/master
Bugfix, variable "color" didn't exist
2024-08-06 22:55:58 +03:00
Martin Filser
3c477e9783 Bugfix, variable "color" didn't exist
- background-color is maybe wrong too, but better than throwing an exception
2024-08-06 21:50:57 +02:00
Lauri Ojansivu
f2247ed86d Updated ChangeLog. 2024-08-06 22:48:32 +03:00
Lauri Ojansivu
0d9a9d1ed8 Merge branch 'main' of github.com:wekan/wekan 2024-08-06 22:46:00 +03:00
Lauri Ojansivu
ca5a579e22 PWA, move to standalone (standard) to display the status bar.
Thanks to mfilser !

Related https://github.com/wekan/wekan/pull/5484
2024-08-06 22:44:51 +03:00
Lauri Ojansivu
53d97a593f
Merge pull request #5485 from mfilser/master
don't set background image in .board-canvas too
2024-08-06 22:38:27 +03:00
Martin Filser
3641a8f389 don't set background image in .board-canvas too 2024-08-06 21:30:27 +02:00
Lauri Ojansivu
1dea1bd09d
Merge pull request #5483 from mfilser/master
fix error on console when user logout
2024-08-06 19:09:22 +03:00
Martin Filser
3db265d57f fix error on console when user logout (Part 2) 2024-08-06 17:24:43 +02:00
Martin Filser
38a32824ea fix error on console when user logout (Part 1) 2024-08-06 17:24:43 +02:00
Lauri Ojansivu
b0c94f7ff2 Updated ChangeLog. 2024-08-05 13:06:51 +03:00
Lauri Ojansivu
2415aa3d2b v7.53 2024-08-03 22:16:18 +03:00
Lauri Ojansivu
1af1844f37 Updated Snap Candidate to MongoDB 6.0.16.
Thanks to MongoDB developers !
2024-08-03 22:13:08 +03:00
Lauri Ojansivu
75bb247c2b Updated ChangeLog. 2024-08-03 21:52:34 +03:00
Lauri Ojansivu
5a1b517733
Merge pull request #5481 from mfilser/master
reducing card size in database if no planning poker was started
2024-08-03 21:50:27 +03:00
Lauri Ojansivu
0fbc8754f7 Updated ChangeLog. 2024-08-03 21:49:12 +03:00
Lauri Ojansivu
aaca60b676 Copied changes from wiki to docs.
Thanks to xet7 !
2024-08-03 21:47:10 +03:00
Martin Filser
a929d1e3a4 reducing card size in database if no planning poker was started
reducing:
- cards collection size
- database size
- size to transfer from server to client (publish / subscribe)
2024-08-03 20:40:29 +02:00
Lauri Ojansivu
4a7fa7c396 Updated ChangeLog. 2024-08-03 21:36:22 +03:00
Lauri Ojansivu
45674806d7 Fix dragscroll package name.
Thanks to xet7 !
2024-08-03 21:35:04 +03:00
Lauri Ojansivu
8905bc7dfe Updated ChangeLog. 2024-08-03 21:21:19 +03:00
Lauri Ojansivu
dd6aec1ba9
Merge pull request #5480 from mfilser/master
changing card color now closes the popup and doesn't refresh the whole boards page
2024-08-03 21:12:05 +03:00
Lauri Ojansivu
aca5fa4d0a Merge branch 'main' of github.com:wekan/wekan 2024-08-03 21:11:23 +03:00
Lauri Ojansivu
0d1f45b8a2 Updated ChangeLog. 2024-08-03 21:11:01 +03:00
Lauri Ojansivu
3f9ae57144 Updated dependencies.
Thanks to developers of dependencies.
2024-08-03 21:09:30 +03:00
Martin Filser
45c2f1007b changing card color now closes the popup and doesn't refresh the whole boards page 2024-08-03 20:06:51 +02:00
Lauri Ojansivu
83adaa3074
Merge pull request #5479 from mfilser/master
fixing of "mode is undefined" on first activity component creation
2024-08-03 21:06:33 +03:00
Martin Filser
1951b279c0 fixing of "mode is undefined" on first activity component creation 2024-08-03 20:03:46 +02:00
Lauri Ojansivu
50406ad683
Merge pull request #5478 from mfilser/master
Board Menu Popup's were opened twice because of 2 same event creation
2024-08-03 21:03:15 +03:00
Martin Filser
95740eaa01 Board Menu Popup's were opened twice because of 2 same event creation 2024-08-03 19:58:25 +02:00
Lauri Ojansivu
08f2c1c735
Merge pull request #5477 from mfilser/dragscroll
adding Dragscroll to scroll the board
2024-08-03 20:54:03 +03:00
Martin Filser
32459ec405 No dragscroll on card details 2024-08-03 19:45:55 +02:00
Martin Filser
c7ac0cbce1 No dragscroll while sorting swimlanes 2024-08-03 19:45:55 +02:00
Martin Filser
711fb5754e No dragscroll while sorting checklists 2024-08-03 19:45:55 +02:00
Martin Filser
24fffd8bfa Dragscroll, change cursor while scrolling + support summernote compatibily 2024-08-03 19:45:55 +02:00
Martin Filser
52556aff68 Dragscroll, disable scroll on input, textarea and select 2024-08-03 19:45:55 +02:00
Martin Filser
c76959ff25 Dragscroll possible, scroll the screen with the mouse at desktop view
- click on a empty list area and drag the view left/right to scroll
2024-08-03 19:45:45 +02:00
Lauri Ojansivu
a141871e60 Updated ChangeLog. 2024-08-03 20:42:30 +03:00
Lauri Ojansivu
5e639a7c2d Updated release script: New install webpage location.
Thanks to xet7 !
2024-08-03 20:39:49 +03:00
Lauri Ojansivu
f9654d17d5 Updated ChangeLog. 2024-08-03 20:21:42 +03:00
Lauri Ojansivu
c89f3ba3da Revert forking ldapjs.
Thanks to xet7 !
2024-08-03 20:18:53 +03:00
Lauri Ojansivu
1dc5ae444e Merge branch 'update' 2024-08-03 19:55:22 +03:00
Lauri Ojansivu
5db67e47a8 v7.52 2024-08-03 19:43:07 +03:00
Lauri Ojansivu
3877e5feb9 Updated ChangeLog. 2024-08-03 16:56:08 +03:00
Lauri Ojansivu
7456186265 Updated WeKan app webmanifest.
Thanks to xet7 !
2024-08-03 16:53:46 +03:00
Lauri Ojansivu
952f7feb49 Updates 2024-08-03 02:24:49 +03:00
Lauri Ojansivu
3983d750f3 Updated ChangeLog. 2024-08-03 01:38:17 +03:00
Lauri Ojansivu
b4f2a8ab5b Updated ChangeLog. 2024-08-03 01:20:47 +03:00
Lauri Ojansivu
e8a4554789 Updated ChangeLog. 2024-08-03 01:04:49 +03:00
Lauri Ojansivu
de3bc9cb4d Fix typos at attachments code. 2024-08-03 00:52:51 +03:00
Lauri Ojansivu
e09f028cd1
Merge pull request #5473 from wekan/dependabot/npm_and_yarn/fast-xml-parser-4.4.1
Bump fast-xml-parser from 4.3.2 to 4.4.1
2024-08-03 00:46:38 +03:00
Lauri Ojansivu
ea9f597685
Merge pull request #5476 from mfilser/activities_add_back_created_at_field
Activities, adding back "created at" field
2024-08-03 00:46:01 +03:00
Martin Filser
e538fb9514 Activities, adding back "created at" field
Fixes #5459
2024-08-02 23:27:03 +02:00
dependabot[bot]
32fed3d048
Bump fast-xml-parser from 4.3.2 to 4.4.1
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 4.3.2 to 4.4.1.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v4.3.2...v4.4.1)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-29 21:43:29 +00:00
Lauri Ojansivu
c6b6d1aa40 Updated translations. 2024-07-28 22:26:54 +03:00
Lauri Ojansivu
b9615ccbad
Merge pull request #5471 from wekan/dependabot/github_actions/docker/build-push-action-6.5.0
Bump docker/build-push-action from 6.4.0 to 6.5.0
2024-07-23 12:11:31 +03:00
Lauri Ojansivu
0032a91f66
Merge pull request #5470 from wekan/dependabot/github_actions/docker/login-action-3.3.0
Bump docker/login-action from 3.2.0 to 3.3.0
2024-07-23 12:11:20 +03:00
dependabot[bot]
88f6076422
Bump docker/build-push-action from 6.4.0 to 6.5.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.4.0 to 6.5.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](a254f8ca60...5176d81f87)

---
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>
2024-07-22 20:53:03 +00:00
dependabot[bot]
8e11ecf799
Bump docker/login-action from 3.2.0 to 3.3.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](0d4c9c5ea7...9780b0c442)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 20:52:59 +00:00
Lauri Ojansivu
d04c5c9846
Merge pull request #5469 from wekan/dependabot/github_actions/docker/build-push-action-6.4.0
Bump docker/build-push-action from 6.3.0 to 6.4.0
2024-07-16 21:31:52 +03:00
Lauri Ojansivu
e46a66904f Removed old PGP key.
Thanks to xet7 !
2024-07-16 13:56:57 +03:00
dependabot[bot]
d038cb4a2d
Bump docker/build-push-action from 6.3.0 to 6.4.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.3.0 to 6.4.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](1a162644f9...a254f8ca60)

---
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>
2024-07-15 20:34:56 +00:00
Lauri Ojansivu
78e68c7fea
Merge pull request #5464 from wekan/dependabot/github_actions/docker/build-push-action-6.3.0
Bump docker/build-push-action from 6.2.0 to 6.3.0
2024-07-11 16:04:28 +03:00
dependabot[bot]
700f345576
Bump docker/build-push-action from 6.2.0 to 6.3.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](15560696de...1a162644f9)

---
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>
2024-07-08 20:16:21 +00:00
Lauri Ojansivu
22067198ab Updated ChangeLog. 2024-07-05 11:59:56 +03:00
Lauri Ojansivu
21d6dfd790 Added RepoCloud.svg .
Related https://github.com/wekan/wekan/pull/5463
2024-07-05 10:43:07 +03:00
Lauri Ojansivu
e663ce038a Added RepoCloud.
Related https://github.com/wekan/wekan/pull/5463
2024-07-05 10:38:58 +03:00
Lauri Ojansivu
367b7778fd
Merge pull request #5460 from wekan/dependabot/github_actions/docker/build-push-action-6.2.0
Bump docker/build-push-action from 6.1.0 to 6.2.0
2024-07-02 22:55:51 +03:00
dependabot[bot]
989e0a5326
Bump docker/build-push-action from 6.1.0 to 6.2.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](31159d49c0...15560696de)

---
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>
2024-07-01 20:21:29 +00:00
Lauri Ojansivu
13940f0663
Merge pull request #5458 from abramchikd/clean-theme
Clean theme fixes
2024-06-29 16:05:54 +03:00
Dmitrij Abramov
09e87f207c Some tweaks to clean light and clean dark themes 2024-06-28 00:38:45 +03:00
Lauri Ojansivu
f9884b7782 v7.51 2024-06-27 15:16:25 +03:00
Lauri Ojansivu
cca5f81c65 Updated ChangeLog. 2024-06-27 14:12:59 +03:00
Lauri Ojansivu
c863428aa2 Reorganized docs. 2024-06-27 14:12:06 +03:00
Lauri Ojansivu
2104b853ef Updated ChangeLog. 2024-06-27 14:09:04 +03:00
Lauri Ojansivu
00a56f6aaa Reorganize files. 2024-06-27 14:08:24 +03:00
Lauri Ojansivu
67e7a75b9c Updated ChangeLog. 2024-06-27 14:06:57 +03:00
Lauri Ojansivu
52375df783 Reorganized docs. 2024-06-27 14:06:29 +03:00
Lauri Ojansivu
77fad0e7c6 Reorganized docs. 2024-06-27 14:04:44 +03:00
Lauri Ojansivu
802341384e Updated changelog. 2024-06-27 14:02:44 +03:00
Lauri Ojansivu
057ac4031e Reorganize docs. 2024-06-27 14:01:26 +03:00
Lauri Ojansivu
ea5d0999c4 Copy Emoji page to Build from source. 2024-06-27 13:51:14 +03:00
Lauri Ojansivu
7b21650003 Updated ChangeLog. 2024-06-27 13:31:27 +03:00
Lauri Ojansivu
1cfaddff9c Reorganized docs. 2024-06-27 13:30:40 +03:00
Lauri Ojansivu
7690d91771 Updated ChangeLog. 2024-06-27 13:25:52 +03:00
Lauri Ojansivu
6b7b66801b Reorganized docs. 2024-06-27 13:25:06 +03:00
Lauri Ojansivu
d671071758 Updated ChangeLog. 2024-06-27 13:21:45 +03:00
Lauri Ojansivu
e9c1c620eb Reorganize docs. 2024-06-27 13:20:36 +03:00
Lauri Ojansivu
b17a8757fb Updated ChangeLog. 2024-06-27 13:12:44 +03:00
Lauri Ojansivu
2b04cef50b
Merge pull request #5455 from walster001/main
Fix ModernDark Cards not showing correctly.
2024-06-27 13:10:33 +03:00
Lauri Ojansivu
16060108b4 Updated ChangeLog. 2024-06-27 13:09:28 +03:00
Lauri Ojansivu
0fb2f7fdd6 Reorganize docs. 2024-06-27 13:07:52 +03:00
walster001
c002cf759e
Fix ModernDark Card Alignment
Fix position from absolute to fixed, so it moves with the viewport when horizonally scrolling. 

Fix card top border due to changing position, adjust top border px to 82px
2024-06-27 18:49:01 +09:30
walster001
5fee0b05e0
Fix ModernDark Card Alignment 2024-06-27 18:39:48 +09:30
walster001
48bc176bdf
Merge branch 'wekan:main' into main 2024-06-27 18:10:43 +09:30
walster001
ec56dc73c4 Merge branch 'main' of https://github.com/walster001/wekan-atlanz 2024-06-27 18:09:59 +09:30
walster001
83e9d681d7 Fix ModernDark Card Alignment
Fix cards not showing up properly in ModernDark theme, when more lists are created than will fit on a single screen, inciting a horizontal scrollbar, and then scrolling across trying to open cards.

Due to position being absolute, this then opened the card off-screen
2024-06-27 18:09:51 +09:30
Lauri Ojansivu
e0b9e80698 Updated ChangeLog. 2024-06-27 11:16:53 +03:00
Lauri Ojansivu
449c02c42a Updated Snap docs from wiki. 2024-06-27 11:12:49 +03:00
Lauri Ojansivu
ce89ff4833 Reorganized Docs. In Progress. 2024-06-27 11:08:43 +03:00
Lauri Ojansivu
1961e22cbd Added changes from wiki to wekan repo. 2024-06-27 10:31:35 +03:00
Lauri Ojansivu
b95ee7cf4d Updated ChangeLog. 2024-06-26 18:57:10 +03:00
Lauri Ojansivu
14b2291590
Merge pull request #5452 from wekan/dependabot/github_actions/docker/build-push-action-6.1.0
Bump docker/build-push-action from 6.0.0 to 6.1.0
2024-06-25 09:13:44 +03:00
Dmitrij Abramov
954ec05d41 Clean themes tweaks 2024-06-25 01:57:31 +03:00
dependabot[bot]
4c25b40b2d
Bump docker/build-push-action from 6.0.0 to 6.1.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](c382f710d3...31159d49c0)

---
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>
2024-06-24 20:30:46 +00:00
Lauri Ojansivu
1792e3d884 v7.50 2024-06-22 09:12:23 +03:00
Lauri Ojansivu
3c35a6400b Updated docs for WeKan version for Windows. Part 2. 2024-06-22 08:58:18 +03:00
Lauri Ojansivu
2a4ba31a9e Updated ChangeLog. 2024-06-21 03:51:26 +03:00
Lauri Ojansivu
99a8afd6c3 Updated dependencies. 2024-06-21 03:48:52 +03:00
Lauri Ojansivu
cc9ff4c8db Updated ChangeLog. 2024-06-21 03:31:52 +03:00
Lauri Ojansivu
ed4189cc5e
Merge pull request #5449 from abramchikd/theme-clean
Added "Clean dark" and "Clean light" themes
2024-06-21 03:08:30 +03:00
Dmitrij Abramov
6d66e60830 Fixes for clean light theme 2024-06-19 02:33:02 +03:00
Dmitrij Abramov
930f0a7f82 Added clean dark and clean light themes 2024-06-19 01:37:55 +03:00
Lauri Ojansivu
89347e2a56
Merge pull request #5446 from wekan/dependabot/github_actions/docker/build-push-action-6.0.0
Bump docker/build-push-action from 5.4.0 to 6.0.0
2024-06-18 19:55:37 +03:00
dependabot[bot]
09a08cd074
Bump docker/build-push-action from 5.4.0 to 6.0.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.4.0 to 6.0.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](ca052bb54a...c382f710d3)

---
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>
2024-06-17 20:59:11 +00:00
Lauri Ojansivu
c344474d9e
Merge pull request #5443 from Hekatomb/bugfix/CardOverflow
Update cardDetails.css
2024-06-13 16:52:22 +03:00
Hekatomb
d13d169768
Update cardDetails.css
Bugfix, task card may overflow below the screen when maximized, making the bottom part not viewable.

Reason: Top position is set to 97px, Height of the element is set to calc(100% - 20px).

Fix: Set the height to be lower than 100% - Top position
2024-06-13 09:45:31 +02:00
Lauri Ojansivu
e3929973d1 Updated ChangeLog. 2024-06-11 02:05:57 +03:00
Lauri Ojansivu
9b428150a4 Updated docs for WeKan version for Windows.
Thanks to xet7.
2024-06-11 02:04:12 +03:00
Lauri Ojansivu
8ba565042f v7.49 2024-06-11 01:40:43 +03:00
Lauri Ojansivu
6df03294bd Updated ChangeLog. 2024-06-11 01:34:19 +03:00
Lauri Ojansivu
4a40ac3ced
Merge pull request #5441 from wekan/dependabot/github_actions/docker/build-push-action-5.4.0
Bump docker/build-push-action from 5.3.0 to 5.4.0
2024-06-11 01:31:44 +03:00
dependabot[bot]
2f34d65164
Bump docker/build-push-action from 5.3.0 to 5.4.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.3.0 to 5.4.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](2cdde995de...ca052bb54a)

---
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>
2024-06-10 20:33:21 +00:00
Lauri Ojansivu
7c68d6a710 Updated ChangeLog. 2024-06-10 16:27:51 +03:00
Lauri Ojansivu
55fb7a8f27
Merge pull request #5440 from Hekatomb/bugfix/TeamsOrgAdminCard
Fill out Org and Team in adminReports
2024-06-10 16:19:48 +03:00
Lauri Ojansivu
bb9fb1187e Updated ChangeLog. 2024-06-10 14:54:13 +03:00
Lauri Ojansivu
f0170c576c Updated ChangeLog. 2024-06-10 14:52:35 +03:00
Lauri Ojansivu
02caaafc52 Merge branch 'main' of github.com:wekan/wekan 2024-06-10 14:49:51 +03:00
Lauri Ojansivu
168b17ac4e Updated ChangeLog. 2024-06-10 14:47:13 +03:00
Lauri Ojansivu
e3214c874e Changed back to original icon of Edit Description.
Thanks to saschafoerster, C0rn3j and xet7 !

Fixes #5413,
related 1f2fb2ccce
2024-06-10 14:40:49 +03:00
hekatomb
91444cce9b Fill out Org and Team in adminReports 2024-06-07 19:58:12 +02:00
Lauri Ojansivu
c952aaadec
Merge pull request #5435 from Hekatomb/bugfix/TeamsOrgStrikethrough 2024-06-07 01:11:37 +03:00
hekatomb
77ab5c1690 Bugfix: Strikethrough inactive Teams and orginizations rather than strikethrough active teams and orgs 2024-06-06 23:25:16 +02:00
Lauri Ojansivu
37857935f3 Updated ChangeLog. 2024-06-06 04:58:47 +03:00
Lauri Ojansivu
e5c7650fc8 WeKan new release version number from wiki to WeKan repo docs.
Thanks to xet7 !
2024-06-06 04:55:45 +03:00
Lauri Ojansivu
f42e0fe507 v7.48 2024-06-06 02:12:09 +03:00
Lauri Ojansivu
58dbd78997 Updated ChangeLog. 2024-06-06 02:07:32 +03:00
Lauri Ojansivu
04b995e77f Allow Normal user to add new swimlane, list and label.
Thanks to RyanHecht, norrig and xet7 !

Fixes #4276,
fixes #4785
2024-06-06 02:03:29 +03:00
Lauri Ojansivu
82aa3fb7ee Updated ChangeLog. 2024-06-06 01:44:56 +03:00
Lauri Ojansivu
ec0e88ad2e Try to show more of title of collapsed list.
Thanks to C0rn3j and xet7 !

Related #5428
2024-06-06 01:39:57 +03:00
Lauri Ojansivu
cac28fde4d Updated ChangeLog. 2024-06-04 23:45:46 +03:00
Lauri Ojansivu
e65a8c9017 Add changes from wiki to docs. Part 2.
Thanks to xet7 !
2024-06-04 23:44:35 +03:00
Lauri Ojansivu
4a26f80fb1 Updated ChangeLog. 2024-06-04 23:30:57 +03:00
Lauri Ojansivu
bca8a72a0f Merge branch 'main' of github.com:wekan/wekan 2024-06-04 23:28:59 +03:00
Lauri Ojansivu
13be8160d5 Add changes from wiki to docs.
Thanks to xet7 !
2024-06-04 23:27:55 +03:00
Lauri Ojansivu
8efea6c4e2 Updated ChangeLog. 2024-06-04 16:05:52 +03:00
Lauri Ojansivu
36bb5e099e Fix Admin Panel pages Organizations and Teams, where HTML Tables were broken.
Thanks to Hekatomb and xet7 !

Fixes #5429
2024-06-04 16:02:03 +03:00
Lauri Ojansivu
b86a24d97a
Merge pull request #5430 from wekan/dependabot/github_actions/docker/login-action-3.2.0
Bump docker/login-action from 3.1.0 to 3.2.0
2024-06-04 15:17:18 +03:00
dependabot[bot]
3febe80329
Bump docker/login-action from 3.1.0 to 3.2.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](e92390c5fb...0d4c9c5ea7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-03 20:32:31 +00:00
Lauri Ojansivu
b11a2103a4 Updated ChangeLog. 2024-06-03 05:16:50 +03:00
Lauri Ojansivu
4a9d881e47 Updated release scripts.
Thanks to xet7 !
2024-06-03 05:14:58 +03:00
Lauri Ojansivu
8e5c6af612 v7.47 2024-06-03 05:07:30 +03:00
Lauri Ojansivu
ca588a4b54 Updated translations. 2024-06-03 05:00:33 +03:00
Lauri Ojansivu
258032acb0 Updated ChangeLog. 2024-06-03 04:39:55 +03:00
Lauri Ojansivu
2c9c9c4356 Updated release scripts.
Thanks to xet7 !
2024-06-03 04:38:55 +03:00
Lauri Ojansivu
88d4e8a4d9 Updated ChangeLog. 2024-06-03 04:35:16 +03:00
Lauri Ojansivu
4e2a8735bc Updated to MongoDB 6.0.15 at Snap Candidate.
Thanks to MongoDB developers !
2024-06-03 04:33:40 +03:00
Lauri Ojansivu
b72d24f6d0 Updated ChangeLog. 2024-06-03 04:30:24 +03:00
Lauri Ojansivu
1f2fb2ccce Fix Edit Description button is wildly out of place.
Thanks to C0rn3j and xet7 !

Fixes #5413
2024-06-03 04:23:09 +03:00
Lauri Ojansivu
5e2b423ef8 Only show Board name edit button to BoardAdmin.
Thanks to xet7 !
2024-06-03 04:03:31 +03:00
Lauri Ojansivu
79e2001708 Update Docker base images to Ubuntu 24.04.
Thanks to xet7 !
2024-06-03 03:06:58 +03:00
Lauri Ojansivu
2ea96518ad v7.46 2024-06-03 01:16:20 +03:00
Lauri Ojansivu
2666001226 Updated ChangeLog. 2024-05-30 23:22:48 +03:00
Lauri Ojansivu
1bd30bc121 For development, only recommend Debian 12 amd64, because Sandstorm works at Debian 12.
Sandstorm does not work at Ubuntu 24.04.

Thanks to xet7 !

Related https://github.com/sandstorm-io/sandstorm/issues/3712
2024-05-30 23:19:55 +03:00
Lauri Ojansivu
d6d8144476 Updated dependencies. 2024-05-29 01:03:18 +03:00
Lauri Ojansivu
68e7818c1d Updated ChangeLog. 2024-05-29 00:58:05 +03:00
Lauri Ojansivu
e0e5f4514b
Merge pull request #5424 from Dexus/patch-1
Update exporter.js with fix for #5416
2024-05-28 18:04:57 +03:00
Josef Fröhle
c2942fa269
Update exporter.js with fix for #5416
This should fix #5416
2024-05-28 16:42:44 +02:00
Lauri Ojansivu
6f31240c74 Updated ChangeLog. 2024-05-27 23:47:50 +03:00
Lauri Ojansivu
5124265142 Updated GitHub issue template for issue instructions to be more visible.
Related #5422
2024-05-27 14:00:49 +03:00
Lauri Ojansivu
f0bd5eaca9 Updated ChangeLog. 2024-05-27 00:15:42 +03:00
Lauri Ojansivu
8589f85907
Merge pull request #5420 from mfilser/remove_second_created_at_on_activities
Remove second created at on activities
2024-05-26 23:17:34 +03:00
Martin Filser
66d739b3b1 Removed second "created at" text at activites / card comment
- the same text is already at line start, it makes no sense to print it
  again at line end
2024-05-26 22:05:51 +02:00
Lauri Ojansivu
2206e34ab6
Merge pull request #5419 from mfilser/dockerfile_production_and_dev_same_build
Dockerfile production and dev same build
2024-05-26 22:06:09 +03:00
Martin Filser
cc1ca4a1bb Dockerfile for production and development same build (part 2) 2024-05-26 19:55:19 +02:00
Martin Filser
c8b1ef8ea6 Dockerfile for production and development same build (part 1) 2024-05-26 19:49:31 +02:00
Lauri Ojansivu
f836faad48
Merge pull request #5418 from mfilser/devcontainer_reduce_image_size_and_other_dev_updates
Devcontainer, reduce image size and other necessary changes for development
2024-05-26 00:26:45 +03:00
Lauri Ojansivu
7e27b916aa Updated ChangeLog. 2024-05-25 23:59:41 +03:00
Lauri Ojansivu
ae9963c1f7
Merge pull request #5412 from e-gaulue/e-gaulue-patch-1
Remove notification while copying board
2024-05-25 22:40:58 +03:00
Martin Filser
2b4f4c8d4d .devcontainer/Dockerfile, updated RUN statements to heredoc style 2024-05-25 19:53:33 +02:00
Martin Filser
68104fe578 .devcontainer/Dockerfile, use Debian 11 because Ubuntu 21.10 can not build 2024-05-25 19:53:33 +02:00
Martin Filser
6f2c46a747 .devcontainer/Dockerfile, make is needed by "meteor npm update" 2024-05-25 19:53:30 +02:00
Martin Filser
e7e1f1b667 .devcontainer/Dockerfile, don't remove ca-certificates because it's needed for "meteor npm install" 2024-05-25 19:53:25 +02:00
Martin Filser
7dc20616a7 .devcontainer/Dockerfile, don't remove curl/python3 because it's needed for "meteor npm" 2024-05-25 19:53:20 +02:00
Martin Filser
b5b323000a .devcontainer/Dockerfile, reduce build a bit + image size to 3.42 GB
- on a test system it reduced from 11m36s to 9m34s
2024-05-25 19:53:07 +02:00
Martin Filser
19d204c7a8 .devcontainer/Dockerfile, 3.49 GB image size 2024-05-25 19:50:16 +02:00
Martin Filser
672c279b0a .devcontainer/Dockerfile, 4.12 GB image size 2024-05-25 19:50:16 +02:00
Martin Filser
669e31ea64 .devcontainer/Dockerfile, 4.16 GB image size 2024-05-25 19:50:16 +02:00
Martin Filser
4ab72170e3 .devcontainer/Dockerfile, 4.16 GB image size 2024-05-25 19:50:16 +02:00
Martin Filser
9ca39696b3 .devcontainer/Dockerfile, 5.64 GB image size
- first copy all files, then install to make it possible to install everything
  in one RUN section
2024-05-25 19:50:16 +02:00
Martin Filser
7c36279308 .devcontainer/Dockerfile, 5.64 GB image size 2024-05-25 19:50:16 +02:00
Martin Filser
89e5b3a979 .devcontainer/Dockerfile, 6.02 GB image size 2024-05-25 19:50:14 +02:00
Martin Filser
58782c9a89 .devcontainer/Dockerfile contained duplicated logic 2024-05-25 19:49:30 +02:00
Martin Filser
c3824dcbd2 .devcontainer, added missing environments 2024-05-25 19:49:30 +02:00
Lauri Ojansivu
cead2bc00f
Merge pull request #5417 from LanetNetwork/fix-cards-load
fixed loading of cards if there are more than 20 of them on one swimlane
2024-05-24 17:50:24 +03:00
Dmytro Novash
0d5380466a fix cards load if cards > 20 on swimlane 2024-05-24 17:15:52 +03:00
e-gaulue
58f6acbc48
Remove notification while copying board
1. It takes too long while server stops after 2 minutes (#5371).
2. It is useless, because when you copy a board, most of the time your users don't want to be notified of every copied cards.
2024-05-15 22:17:54 +02:00
Lauri Ojansivu
db73fb4e37 Updated translations. 2024-05-08 18:00:31 +03:00
Lauri Ojansivu
a3d4c3d948
Merge pull request #5405 from LanetNetwork/uk_upd
Update ukrainian translation
2024-05-08 17:45:41 +03:00
Dmytro Novash
f9dc5c6f80 upd 2024-05-07 18:57:48 +03:00
Dmitriy Novash
96b763fb89
Merge branch 'wekan:main' into uk_upd 2024-05-07 16:51:49 +03:00
Lauri Ojansivu
98a75305e7
Merge pull request #5404 from C0rn3j/fix-deprecated-grep
Swap deprecated `egrep` for `grep -E`
2024-05-06 17:09:58 +03:00
Lauri Ojansivu
0d8739327e
Merge pull request #5403 from C0rn3j/image-optim
Optimize SVGs and PNGs to save 550KB~
2024-05-06 16:54:30 +03:00
Martin Rys
7dc4d9bb71 Swap deprecated egrep for grep -E
also remove some extra whitespace in MD doc
2024-05-06 11:19:59 +02:00
Martin Rys
c814221185 Run SVG logos through svgo to reduce their filesize 2024-05-06 11:16:17 +02:00
Martin Rys
f2f6b57944 Losslessly optimize PNGs (-522KB)
oxipng --zopfli --opt max
2024-05-06 11:12:54 +02:00
Lauri Ojansivu
f50c2af914 v7.45 2024-05-06 01:38:35 +03:00
Lauri Ojansivu
5b7442436d Updated ChangeLog. 2024-05-06 01:33:54 +03:00
Lauri Ojansivu
9cebee7347 Fix Can't set a Due Date that has a leading zero in time, errors with invalid time.
Thanks to C0rn3j and xet7 !

Fixes #5395
2024-05-06 01:30:49 +03:00
Lauri Ojansivu
f311359373 Updated ChangeLog. 2024-05-04 23:17:22 +03:00
Lauri Ojansivu
31b9970c04
Merge pull request #5401 from C0rn3j/set-silver
Allow `silver` color to be set in List and Swimlane
2024-05-04 23:14:06 +03:00
Martin Rys
baf0edc51e Allow silver color to be set in List and Swimlane 2024-05-04 22:09:04 +02:00
Lauri Ojansivu
69a2a76b2e
Merge pull request #5400 from C0rn3j/fix-white-list-color
Fix white List color and define Silver in CSS instead of leaving it unset
2024-05-04 23:01:05 +03:00
Martin Rys
7fd894f33d Do not leave silver color unset in Swimlane and List CSS 2024-05-04 21:59:05 +02:00
Martin Rys
3f366844e2 Fix white List color 2024-05-04 21:58:08 +02:00
Lauri Ojansivu
4156b6f932 Temporarily revert collapse per user that did not work yet.
Thanks to xet7 !

Related #5388
2024-05-04 22:57:13 +03:00
Lauri Ojansivu
ed801f7082 Collapse Swimlane. In Progress.
Thanks to xet7 !

Related #5388
2024-05-04 22:50:13 +03:00
Lauri Ojansivu
cedd10e067 Updated translations. 2024-05-02 00:06:30 +03:00
Lauri Ojansivu
86b756b6bc Updated ChangeLog. 2024-05-02 00:04:42 +03:00
Lauri Ojansivu
259a12acf9 Merge branch 'main' of github.com:wekan/wekan 2024-05-02 00:00:43 +03:00
Lauri Ojansivu
902f86d363 Collapse Lists to be per user, not per board. In Progress.
Related #5388

Thanks to xet7 !
2024-05-01 23:58:57 +03:00
Lauri Ojansivu
d5fc75e345
Merge pull request #5392 from wekan/dependabot/github_actions/meteorengineer/setup-meteor-2
Bump meteorengineer/setup-meteor from 1 to 2
2024-04-30 17:56:10 +03:00
Lauri Ojansivu
5650bd829a
Merge pull request #5393 from LanetNetwork/fix_tables
fix display of tables with a large number of rows
2024-04-30 17:55:46 +03:00
Dmitriy Novash
f9ad46180e
upd 2024-04-30 17:43:06 +03:00
Dmitriy Novash
6e534d7543
fix display of tables with a large number of rows 2024-04-30 15:54:28 +03:00
Dmitriy Novash
9aa56a8e42
update ukr translation 2024-04-30 15:49:48 +03:00
Dmitriy Novash
4ed67832d2
remove deprecated & invalid translation 2024-04-30 15:48:32 +03:00
dependabot[bot]
3409de9ed1
Bump meteorengineer/setup-meteor from 1 to 2
Bumps [meteorengineer/setup-meteor](https://github.com/meteorengineer/setup-meteor) from 1 to 2.
- [Release notes](https://github.com/meteorengineer/setup-meteor/releases)
- [Commits](https://github.com/meteorengineer/setup-meteor/compare/v1...v2)

---
updated-dependencies:
- dependency-name: meteorengineer/setup-meteor
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-29 20:50:33 +00:00
Lauri Ojansivu
e73a44d15b Updated translations. 2024-04-28 16:22:55 +03:00
Lauri Ojansivu
5cf30f05fd Updated ChangeLog. 2024-04-28 16:21:49 +03:00
Lauri Ojansivu
63117e87e7 Update Docker base container to Ubuntu 24.04, and update software versions.
Thanks to developers of dependencies !
2024-04-28 16:19:14 +03:00
Lauri Ojansivu
a8e520e7f0 v7.44 2024-04-26 14:35:54 +03:00
Lauri Ojansivu
e14bb16d60 Updated ChangeLog. 2024-04-26 14:29:31 +03:00
Lauri Ojansivu
b704d58f0f Collapse Swimlane. In Progress, does not work yet, not visible yet.
Thanks to xet7 !
2024-04-26 14:27:09 +03:00
Lauri Ojansivu
246e9a7764 Updated translations. 2024-04-26 14:23:46 +03:00
Lauri Ojansivu
1c7b63f583 Updated ChangeLog. 2024-04-26 08:00:15 +03:00
Lauri Ojansivu
e6476319bc Fix board not visible.
Thanks to xet7 !
2024-04-26 07:57:16 +03:00
Lauri Ojansivu
c954934b33 Updated translations. 2024-04-26 07:41:38 +03:00
Lauri Ojansivu
a72a6886f6 Updated ChangeLog. 2024-04-26 07:35:15 +03:00
Lauri Ojansivu
a601ba542a Collapse Lists.
Thanks to xet7 !
2024-04-26 07:33:06 +03:00
Lauri Ojansivu
f22f470ba4 Updated translations. 2024-04-19 15:04:23 +03:00
Lauri Ojansivu
3faeeac126 v7.43 2024-04-18 04:53:26 +03:00
Lauri Ojansivu
40be1d416b Updated translations. 2024-04-18 04:44:10 +03:00
Lauri Ojansivu
9ef82458b7 Updated ChangeLog. 2024-04-18 04:21:38 +03:00
Lauri Ojansivu
da99e363cd Updated dependencies.
Thanks to developers of dependencies !
2024-04-18 04:20:04 +03:00
Lauri Ojansivu
3110bb48fd Updated ChangeLog. 2024-04-18 03:47:22 +03:00
Lauri Ojansivu
08e2f2f273 Updated dependencies.
Thanks to developers of dependencies !
2024-04-18 03:45:48 +03:00
Lauri Ojansivu
6636d12215 Updated ChangeLog. 2024-04-18 03:30:39 +03:00
Lauri Ojansivu
5f243d173a Updated translations. 2024-04-18 03:23:07 +03:00
Lauri Ojansivu
5ea8d3a4c6
Merge pull request #5381 from tvogel/localized-timestamps
By default, use localized long date-time format
2024-04-17 22:25:00 +03:00
Tilman Vogel
dad3fd22ec By default, use localized long date-time format
because ISO 8601 is not easy to the eye (at least for non-tech people).
2024-04-17 16:52:10 +02:00
Lauri Ojansivu
f381402e8f
Merge pull request #5380 from verdel/fix-debug-env-check
Fix DEBUG environment variable check
2024-04-17 15:40:31 +03:00
Vadim Aleksandrov
f010235ff2
Fix DEBUG environment variable check 2024-04-17 14:06:15 +03:00
Lauri Ojansivu
09f6dcbde1 Updated translations. 2024-04-14 22:50:16 +03:00
Lauri Ojansivu
224b8e3492 Updated ChangeLog. 2024-04-14 22:47:25 +03:00
Martin Rys
28612bbc8a Dockerfile: Switch RUN commands to heredoc to avoid an insane amount of ANDs and escapes 2024-04-14 17:31:19 +02:00
Martin Rys
dfe4f7bb56 docker-compose.yml: Remove obsolete version parameter 2024-04-14 17:24:56 +02:00
Lauri Ojansivu
3f28c0dd22
Merge pull request #5372 from wekan/dependabot/npm_and_yarn/tar-6.2.1
Bump tar from 6.2.0 to 6.2.1
2024-04-11 20:56:35 +03:00
dependabot[bot]
959dd1a95a
Bump tar from 6.2.0 to 6.2.1
Bumps [tar](https://github.com/isaacs/node-tar) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v6.2.0...v6.2.1)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-11 12:34:10 +00:00
Lauri Ojansivu
d5297cd1df Updated translations. 2024-04-11 06:41:33 +03:00
Lauri Ojansivu
95404f43b7 Updated ChangeLog. 2024-04-07 18:46:08 +03:00
Lauri Ojansivu
9838af5e56 Updated Transifex URL. 2024-04-07 18:44:43 +03:00
Lauri Ojansivu
dab656f8ca Updated ChangeLog. 2024-04-07 18:35:52 +03:00
Lauri Ojansivu
802eeb1e6b Updated release script for Windows On-Premise, that is without container like Docker and Snap.
Thanks to xet7 !
2024-04-07 18:33:23 +03:00
Lauri Ojansivu
98dd28818a Updated wiki. 2024-04-07 16:49:05 +03:00
Lauri Ojansivu
f705373cc4 v7.42 2024-04-03 01:20:29 +03:00
Lauri Ojansivu
5bc60a8dab Updated ChangeLog. 2024-04-03 01:17:13 +03:00
Lauri Ojansivu
1c8f783767 Updated dependencies.
Thanks to developers of dependencies !
2024-04-03 01:15:08 +03:00
Lauri Ojansivu
24d3075c85 Updated ChangeLog. 2024-04-03 01:13:20 +03:00
Lauri Ojansivu
c461adff11 Fixed CRITICAL SECURITY ISSUE by updating meteor-node-stubs.
Thanks to Meteor developers !
2024-04-03 00:53:47 +03:00
Lauri Ojansivu
b172f7207d
Merge pull request #5363 from jghaanstra/main
Small tweaks to moderndark theme
2024-04-01 17:27:31 +03:00
Jelger Haanstra
ef31fffa40
Small tweaks to moderndark theme 2024-03-28 19:27:35 +01:00
Lauri Ojansivu
426632a307 Updated translations. 2024-03-27 20:59:32 +02:00
Lauri Ojansivu
2c708b6df6 Updated translations. 2024-03-25 14:10:34 +02:00
Lauri Ojansivu
b555d0ccc8
Merge pull request #5360 from dyercode/patch-1
Update README.md
2024-03-21 22:05:55 +02:00
Jon Dyer
e1724c8a12
Update README.md
change link to the thing you're talking about (presumably) instead of cyclically linking to the page the link is on
2024-03-21 08:30:32 -04:00
Lauri Ojansivu
cd35574c0b
Merge pull request #5356 from wekan/dependabot/github_actions/docker/login-action-3.1.0
Bump docker/login-action from 3.0.0 to 3.1.0
2024-03-19 07:50:28 +02:00
Lauri Ojansivu
d016cbcffc
Merge pull request #5355 from wekan/dependabot/github_actions/docker/build-push-action-5.3.0
Bump docker/build-push-action from 5.2.0 to 5.3.0
2024-03-19 07:50:13 +02:00
dependabot[bot]
7e4b672888
Bump docker/login-action from 3.0.0 to 3.1.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](343f7c4344...e92390c5fb)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-18 20:06:55 +00:00
dependabot[bot]
06d9abf6f6
Bump docker/build-push-action from 5.2.0 to 5.3.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](af5a7ed5ba...2cdde995de)

---
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>
2024-03-18 20:06:52 +00:00
Lauri Ojansivu
a1a6dae5c6 v7.41 2024-03-18 02:32:43 +02:00
Lauri Ojansivu
c5f40f1be9 Updated ChangeLog. 2024-03-18 02:26:26 +02:00
Lauri Ojansivu
4358cb5e57
Merge pull request #5350 from lorodoes/main
Update mongodb-control
2024-03-18 01:46:46 +02:00
lorodoes
a591bf05e0
Update mongodb-control
Missed a few mongosh lines.
2024-03-17 19:28:50 -04:00
Lauri Ojansivu
568b7538ad
Merge pull request #5349 from lorodoes/main
Update mongodb-control
2024-03-18 01:06:54 +02:00
lorodoes
bbd7765432
Update mongodb-control
Fixes for mongosh to allow snap packages to update to the edge/candidate version
2024-03-17 19:04:07 -04:00
Lauri Ojansivu
558024785f v7.40 2024-03-17 04:03:51 +02:00
Lauri Ojansivu
76043cc5b6 Updated ChangeLog. 2024-03-17 03:53:50 +02:00
Lauri Ojansivu
583fca1814 Fixed In RTL, hamburger margin is too much in mobile.
Thanks to mohammadZahedian and xet7 !

Fixes #5337
2024-03-17 03:49:46 +02:00
Lauri Ojansivu
806201b8cb Updated ChangeLog. 2024-03-17 03:38:26 +02:00
Lauri Ojansivu
24c89aeb64 Fixed centering of text below custom login logo.
Thanks to xet7 !
2024-03-17 03:36:05 +02:00
Lauri Ojansivu
8f0d88d9e0 v7.39 2024-03-16 15:08:24 +02:00
Lauri Ojansivu
e92d8dc127 Updated ChangeLog. 2024-03-16 14:59:15 +02:00
Lauri Ojansivu
8a99e8f796
Merge pull request #5346 from kuba-orlik/patch-1
Make the contents of the cards grow to the list width
2024-03-14 20:38:18 +02:00
Kuba Orlik
c0246c6834
Make the contents of the cards grow to the list width 2024-03-14 11:42:56 +01:00
Lauri Ojansivu
42ed92f346
Merge pull request #5344 from wekan/dependabot/github_actions/VeryGoodOpenSource/very_good_coverage-3.0.0
Bump VeryGoodOpenSource/very_good_coverage from 2.2.0 to 3.0.0
2024-03-13 16:06:19 +02:00
Lauri Ojansivu
df0bd90fae
Merge pull request #5343 from wekan/dependabot/github_actions/docker/build-push-action-5.2.0
Bump docker/build-push-action from 5.1.0 to 5.2.0
2024-03-13 16:05:57 +02:00
dependabot[bot]
3453f94b43
Bump VeryGoodOpenSource/very_good_coverage from 2.2.0 to 3.0.0
Bumps [VeryGoodOpenSource/very_good_coverage](https://github.com/verygoodopensource/very_good_coverage) from 2.2.0 to 3.0.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.2.0...v3.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-11 20:01:56 +00:00
dependabot[bot]
ca537e266d
Bump docker/build-push-action from 5.1.0 to 5.2.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](4a13e500e5...af5a7ed5ba)

---
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>
2024-03-11 20:01:53 +00:00
Lauri Ojansivu
8f3c948614 Updated docs. 2024-03-11 15:53:23 +02:00
Lauri Ojansivu
059743ad34
Merge pull request #5341 from e-gaulue/e-gaulue-wiki-1
Clarify usage of api.py
2024-03-11 15:29:04 +02:00
e-gaulue
33ccf68e17
Update New-card-with-Python3-and-REST-API.md 2024-03-11 14:17:20 +01:00
e-gaulue
b6f22712f9
Update New-card-with-Python3-and-REST-API.md
Clarify usage, at least for me.
2024-03-11 14:14:42 +01:00
Lauri Ojansivu
9e413b3961
Merge pull request #5340 from e-gaulue/ED1 2024-03-11 11:49:55 +02:00
Lauri Ojansivu
5dd318a481 v7.38 2024-03-10 23:47:29 +01:00
Lauri Ojansivu
1783257c0e v7.38 2024-03-10 08:42:04 +02:00
Lauri Ojansivu
966852c212 Updated ChangeLog. 2024-03-10 08:37:21 +02:00
Lauri Ojansivu
07d6c1e514 Upgraded to MongoDB 6.0.14 at Snap Candidate.
Thanks to MongoDB developers !
2024-03-10 08:35:55 +02:00
Lauri Ojansivu
09be915ea5 Updated ChangeLog. 2024-03-10 08:34:27 +02:00
Lauri Ojansivu
abd3c95dfa Fixed In RTL, hamburger needs margin.
Thanks to mohammadZahedian and xet7 !

Fixes #5337
2024-03-10 08:31:33 +02:00
Lauri Ojansivu
3fa61ac23c Updated ChangeLog. 2024-03-10 08:21:10 +02:00
Lauri Ojansivu
00bbc26698 Fixed text below custom login logo not visible.
Thanks to xet7 !
2024-03-10 08:18:50 +02:00
Lauri Ojansivu
3004f54b5d Updated ChangeLog. 2024-03-08 23:14:20 +02:00
Lauri Ojansivu
ef5b888779 Add info about GitHub top committers at Finland.
Thanks to xet7 !
2024-03-08 23:02:41 +02:00
Lauri Ojansivu
835e33bf09 Added script to count lines of code changed per committer email address, because GitHub removed that feature from web UI.
Thanks to bgwines and xet7 !
2024-03-08 22:57:38 +02:00
Lauri Ojansivu
8ba3a05648 Updated contributing to wiki. 2024-03-08 21:36:29 +02:00
Lauri Ojansivu
73ae73d4c3 Added docs from wekan.wiki and wekan-snap.wiki 2024-03-08 21:24:14 +02:00
Lauri Ojansivu
76175a711a
Merge pull request #5336 from xator91/patch-12
Update api.py
2024-03-08 14:18:55 +02:00
Mirko Genovese
574acd6744
Update api.py
#5322 Fix error during delete.
2024-03-08 11:45:34 +01:00
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 19703fed31 (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](dbef88086f...8e5442c4ef)

---
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](9dc751fe24...dbef88086f)

---
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](31cebacef4...9dc751fe24)

---
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](96383f4557...31cebacef4)

---
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](0565240e2d...4a13e500e5)

---
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
673 changed files with 50884 additions and 17781 deletions

View file

@ -1,20 +1,24 @@
FROM ubuntu:21.10
LABEL maintainer="sgr"
FROM ubuntu:24.04
LABEL maintainer="wekan"
LABEL org.opencontainers.image.ref.name="ubuntu"
LABEL org.opencontainers.image.version="24.04"
LABEL org.opencontainers.image.source="https://github.com/wekan/wekan"
# 2022-04-25:
# - gyp does not yet work with Ubuntu 22.04 ubuntu:rolling,
# so changing to 21.10. https://github.com/wekan/wekan/issues/4488
ENV BUILD_DEPS="gnupg gosu libarchive-tools wget curl bzip2 g++ build-essential python3 git ca-certificates iproute2"
ENV DEBIAN_FRONTEND=noninteractive
ENV BUILD_DEPS="apt-utils gnupg gosu wget bzip2 g++ iproute2 apt-transport-https libarchive-tools"
ENV DEV_DEPS="curl python3 ca-certificates build-essential git"
ARG DEBIAN_FRONTEND=noninteractive
ENV \
DEBUG=false \
NODE_VERSION=v14.21.4 \
METEOR_RELEASE=METEOR@2.13 \
METEOR_RELEASE=METEOR@2.14 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
NPM_VERSION=latest \
NPM_VERSION=6.14.17 \
FIBERS_VERSION=4.0.1 \
ARCHITECTURE=linux-x64 \
SRC_PATH=./ \
@ -28,15 +32,14 @@ ENV \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60 \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 \
ACCOUNTS_COMMON_LOGIN_EXPIRATION_IN_DAYS=90 \
RICHER_CARD_COMMENT_EDITOR=false \
CARD_OPENED_WEBHOOK_ENABLED=false \
ATTACHMENTS_STORE_PATH="" \
ATTACHMENTS_UPLOAD_EXTERNAL_PROGRAM="" \
ATTACHMENTS_UPLOAD_MIME_TYPES="" \
ATTACHMENTS_UPLOAD_MAX_SIZE=0 \
AVATARS_UPLOAD_EXTERNAL_PROGRAM="" \
AVATARS_UPLOAD_MIME_TYPES="" \
AVATARS_UPLOAD_MAX_SIZE=0 \
RICHER_CARD_COMMENT_EDITOR=false \
CARD_OPENED_WEBHOOK_ENABLED=false \
MAX_IMAGE_PIXEL="" \
IMAGE_COMPRESS_RATIO="" \
NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE="" \
@ -48,12 +51,15 @@ ENV \
MATOMO_SITE_ID="" \
MATOMO_DO_NOT_TRACK=true \
MATOMO_WITH_USERNAME=false \
METRICS_ALLOWED_IP_ADDRESSES="" \
BROWSER_POLICY_ENABLED=true \
TRUSTED_URL="" \
WEBHOOKS_ATTRIBUTES="" \
OAUTH2_ENABLED=false \
OIDC_REDIRECTION_ENABLED=false \
OAUTH2_CA_CERT="" \
OAUTH2_ADFS_ENABLED=false \
OAUTH2_B2C_ENABLED=false \
OAUTH2_LOGIN_STYLE=redirect \
OAUTH2_CLIENT_ID="" \
OAUTH2_SECRET="" \
@ -70,6 +76,9 @@ ENV \
LDAP_ENABLE=false \
LDAP_PORT=389 \
LDAP_HOST="" \
LDAP_AD_SIMPLE_AUTH="" \
LDAP_USER_AUTHENTICATION=false \
LDAP_USER_AUTHENTICATION_FIELD=uid \
LDAP_BASEDN="" \
LDAP_LOGIN_FALLBACK=false \
LDAP_RECONNECT=true \
@ -87,8 +96,6 @@ ENV \
LDAP_ENCRYPTION=false \
LDAP_CA_CERT="" \
LDAP_REJECT_UNAUTHORIZED=false \
LDAP_USER_AUTHENTICATION=false \
LDAP_USER_AUTHENTICATION_FIELD=uid \
LDAP_USER_SEARCH_FILTER="" \
LDAP_USER_SEARCH_SCOPE="" \
LDAP_USER_SEARCH_FIELD="" \
@ -143,69 +150,32 @@ ENV \
SAML_IDENTIFIER_FORMAT="" \
SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE="" \
SAML_ATTRIBUTES="" \
DEFAULT_WAIT_SPINNER="" \
ORACLE_OIM_ENABLED=false \
WAIT_SPINNER="" \
WRITABLE_PATH=/data \
S3=""
# \
# 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"
#---------------------------------------------
# == at docker-compose.yml: AUTOLOGIN WITH OIDC/OAUTH2 ====
# https://github.com/wekan/wekan/wiki/autologin
#- OIDC_REDIRECTION_ENABLED=true
#---------------------------------------------------------------------
# Install OS
RUN set -o xtrace \
&& useradd --user-group -m --system --home-dir /home/wekan wekan \
&& apt-get update \
&& apt-get install --assume-yes --no-install-recommends apt-utils apt-transport-https ca-certificates 2>&1 \
&& apt-get install --assume-yes --no-install-recommends ${BUILD_DEPS}
# OLD:
# && curl -fsSLO --compressed "https://nodejs.org/dist/$NODE_VERSION/node-$NODE_VERSION-$ARCHITECTURE.tar.xz" \
# && curl -fsSLO --compressed "https://nodejs.org/dist/$NODE_VERSION/SHASUMS256.txt.asc" \
# Install NodeJS
RUN set -o xtrace \
&& cd /tmp \
&& curl -fsSLO --compressed "https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.xz" \
&& curl -fsSLO --compressed "https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/SHASUMS256.txt" \
&& grep " node-$NODE_VERSION-$ARCHITECTURE.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
&& tar -xJf "node-$NODE_VERSION-$ARCHITECTURE.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
&& rm "node-$NODE_VERSION-$ARCHITECTURE.tar.xz" SHASUMS256.txt \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs \
&& mkdir -p /usr/local/lib/node_modules/fibers/.node-gyp /root/.node-gyp/${NODE_VERSION} /home/wekan/.config \
&& npm install -g npm@${NPM_VERSION} \
&& chown wekan:wekan --recursive /home/wekan/.config
ENV DEBIAN_FRONTEND=dialog
USER wekan
# Install Meteor
RUN set -o xtrace \
&& cd /home/wekan \
&& curl https://install.meteor.com/?release=$METEOR_VERSION --output /home/wekan/install-meteor.sh \
# Replace tar with bsdtar in the install script; https://github.com/jshimko/meteor-launchpad/issues/39
&& sed --in-place "s/tar -xzf.*/bsdtar -xf \"\$TARBALL_FILE\" -C \"\$INSTALL_TMPDIR\"/g" /home/wekan/install-meteor.sh \
&& sed --in-place 's/VERBOSITY="--silent"/VERBOSITY="--progress-bar"/' /home/wekan/install-meteor.sh \
&& printf "\n[-] Installing Meteor $METEOR_VERSION...\n\n" \
&& sh /home/wekan/install-meteor.sh
ENV PATH=$PATH:/home/wekan/.meteor/
USER root
RUN echo "export PATH=$PATH" >> /etc/environment
USER wekan
RUN <<EOR
echo "export PATH=$PATH" >> /etc/environment
EOR
# Copy source dir
RUN set -o xtrace \
&& mkdir -p /home/wekan/app/.meteor \
&& mkdir -p /home/wekan/app/packages
RUN <<EOR
set -o xtrace
mkdir -p /home/wekan/app/.meteor
mkdir -p /home/wekan/app/packages
EOR
COPY \
.meteor/.finished-upgraders \
@ -230,44 +200,83 @@ COPY \
packages \
/home/wekan/app/packages/
USER root
# Install OS
RUN <<EOR
set -o xtrace
RUN set -o xtrace \
&& chown -R wekan:wekan /home/wekan/app /home/wekan/.meteor
# Add non-root user wekan
useradd --user-group --system --home-dir /home/wekan wekan
# OS dependencies
apt-get update --assume-yes
apt-get install --assume-yes --no-install-recommends ${BUILD_DEPS} ${DEV_DEPS}
USER wekan
# Meteor installer doesn't work with the default tar binary, so using bsdtar while installing.
# https://github.com/coreos/bugs/issues/1095#issuecomment-350574389
cp $(which tar) $(which tar)~
ln -sf $(which bsdtar) $(which tar)
RUN \
set -o xtrace && \
# Build app
cd /home/wekan/app && \
/home/wekan/.meteor/meteor add standard-minifier-js && \
/home/wekan/.meteor/meteor npm install && \
/home/wekan/.meteor/meteor build --directory /home/wekan/app_build
# Install NodeJS
cd /tmp
RUN \
set -o xtrace && \
cd /home/wekan/app_build/bundle/programs/server/ && \
chmod u+w package.json npm-shrinkwrap.json && \
npm install && \
cd node_modules/fibers && \
node build.js
# Download nodejs
wget "https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz"
wget "https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/SHASUMS256.txt"
# Verify nodejs authenticity
grep "node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz" "SHASUMS256.txt" | shasum -a 256 -c -
rm -f "SHASUMS256.txt"
# Install Node
tar xzf "node-$NODE_VERSION-$ARCHITECTURE.tar.gz" -C /usr/local --strip-components=1 --no-same-owner
rm "node-$NODE_VERSION-$ARCHITECTURE.tar.gz" "SHASUMS256.txt"
ln -s "/usr/local/bin/node" "/usr/local/bin/nodejs"
mkdir -p "/opt/nodejs/lib/node_modules/fibers/.node-gyp" "/root/.node-gyp/${NODE_VERSION} /home/wekan/.config"
# Install node dependencies
npm install -g npm@${NPM_VERSION}
chown --recursive wekan:wekan /home/wekan/.config
# Install Meteor
cd /home/wekan
chown --recursive wekan:wekan /home/wekan
echo "Starting meteor ${METEOR_RELEASE} installation... \n"
gosu wekan:wekan curl https://install.meteor.com/ | /bin/sh
mv /root/.meteor /home/wekan/
chown --recursive wekan:wekan /home/wekan/.meteor
# sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' /home/wekan/app/packages/meteor-useraccounts-core/package.js
cd /home/wekan/.meteor
gosu wekan:wekan /home/wekan/.meteor/meteor -- help
# Build app (Development)
cd /home/wekan/app
gosu wekan:wekan /home/wekan/.meteor/meteor add standard-minifier-js
gosu wekan:wekan /home/wekan/.meteor/meteor npm install
# Put back the original tar
mv $(which tar)~ $(which tar)
USER root
# Cleanup
RUN \
set -o xtrace && \
apt-get clean -y && \
apt-get autoremove -y && \
rm -Rf /tmp/* && \
rm -Rf /home/wekan/app_build && \
rm -Rf /var/cache/apt /var/lib/apt/lists && \
rm -Rf /var/lib/apt/lists/*
apt-get remove --purge --assume-yes ${BUILD_DEPS}
apt-get install --assume-yes --no-install-recommends build-essential
apt-get autoremove --assume-yes
apt-get clean --assume-yes
rm -Rf /tmp/*
rm -Rf /var/lib/apt/lists/*
rm -Rf /var/cache/apt
rm -Rf /var/lib/apt/lists
rm -Rf /home/wekan/app_build
mkdir /data
chown wekan --recursive /data
EOR
USER wekan
ENV PORT=3000
EXPOSE $PORT
STOPSIGNAL SIGKILL
WORKDIR /home/wekan/app
#---------------------------------------------------------------------
@ -277,7 +286,6 @@ WORKDIR /home/wekan/app
# Add more stack:
# bash -c "ulimit -s 65500; exec node --stack-size=65500 main.js"
#---------------------------------------------------------------------
#TODO:
#CMD ["bash", "-c", "ulimit -s 65500; exec node --stack-size=65500 /build/main.js"]
#
CMD ["/home/wekan/.meteor/meteor", "run", "--verbose", "--settings", "settings.json"]

View file

@ -1,18 +1,26 @@
## Issue
<!--
Please report these elsewhere:
Please report these issues 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.
If WeKan Snap is slow, try this: https://github.com/wekan/wekan/wiki/Cron
**[PLEASE UPGRADE](https://github.com/wekan/wekan/wiki/Backup)** to the newest
WeKan ® before reporting an issue, if possible.
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
-->
Email settings, only SMTP MAIL_URL and MAIL_FROM are in use:
https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
### Server Setup Information
<!-- Please anonymize info, and do not any of your Wekan board URLs, passwords, API tokens etc to this public issue. -->
Please anonymize info, and do not any of your Wekan board URLs, passwords,
API tokens etc to this public issue.
* Did you test in newest Wekan?:
* Did you configure root-url correctly so Wekan cards open correctly (see https://github.com/wekan/wekan/wiki/Settings)?
* Operating System:
@ -23,13 +31,25 @@ Email settings, only SMTP MAIL_URL and MAIL_FROM are in use: https://github.com/
* What webbrowser version are you using (Wekan should work on all modern browsers that support Javascript)?
### Problem description
<!-- Add a recorded animated gif (e.g. with https://github.com/phw/peek) about how it works currently, and screenshot mockups how it should work. -->
Add a recorded animated gif (e.g. with https://github.com/phw/peek) about
how it works currently, and screenshot mockups how it should work.
#### Reproduction Steps
#### Logs
<!-- Check Right Click>Inspect>Console in you browser - generally Chrome shows more detailed info than Firefox. -->
<!-- Please anonymize logs.
#### Logs
Check Right Click / Inspect / Console in you browser - generally Chromium
based browsers show more detailed info than Firefox based browsers.
Please anonymize logs.
Snap: sudo snap logs wekan.wekan
Docker: sudo docker logs wekan-app
If logs are very long, attach them in .zip file -->
If logs are very long, attach them in .zip file

View file

@ -11,4 +11,4 @@ jobs:
- name: 'Checkout Repository'
uses: actions/checkout@v4
- name: 'Dependency Review'
uses: actions/dependency-review-action@v3
uses: actions/dependency-review-action@v4

View file

@ -38,7 +38,7 @@ jobs:
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772
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@96383f45573cb7f253c731d3b3ab81c87ef81934
uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804
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@0565240e2d4ab88bba5387d719585280857ece09
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4
with:
context: .
push: ${{ github.event_name != 'pull_request' }}

View file

@ -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.6.0
uses: helm/chart-releaser-action@v1.7.0
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

View file

@ -95,7 +95,7 @@ jobs:
# 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
@ -125,7 +125,7 @@ jobs:
v1-meteor_build_cache-
- name: Setup meteor
uses: meteorengineer/setup-meteor@v1
uses: meteorengineer/setup-meteor@v2
with:
meteor-release: '2.2'
@ -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/
@ -150,14 +150,14 @@ jobs:
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@v3.0.0
with:
path: ".coverage/lcov.info"
min_coverage: 1 # TODO add tests and increase to 95!

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!
@ -20,11 +20,11 @@ cottz:publish-relations
dburles:collection-helpers
idmontie:migrations
easy:search
mongo@1.16.8-beta2140.0
mongo@1.16.8
mquandalle:collection-mutations
# Account system
accounts-password@2.4.0-beta2140.0
accounts-password@2.4.0
useraccounts:core
useraccounts:flow-routing
useraccounts:unstyled
@ -42,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
@ -83,14 +83,14 @@ matb33:collection-hooks
simple:json-routes
kadira:flow-router
spacebars
service-configuration@1.3.2-beta2140.0
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-beta2140.0
logging@1.3.3
wekan-fullcalendar
momentjs:moment@2.29.3
wekan-fontawesome

View file

@ -1 +1 @@
METEOR@2.14-beta.0
METEOR@2.14

View file

@ -1,6 +1,6 @@
accounts-base@2.2.9-beta2140.0
accounts-oauth@1.4.3-beta2140.0
accounts-password@2.4.0-beta2140.0
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,13 +10,13 @@ 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
@ -29,22 +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.7.0-beta2140.0
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.4-beta2140.0
fetch@0.1.4
geojson-utils@1.0.11
hot-code-push@1.0.4
html-tools@1.1.3
@ -60,10 +60,10 @@ kadira:flow-router@2.12.1
konecty:mongo-counter@0.0.5_3
lmieulet:meteor-coverage@1.1.4
localstorage@1.2.0
logging@1.3.3-beta2140.0
logging@1.3.3
matb33:collection-hooks@1.3.0
mdg:validation-error@0.5.1
meteor@1.11.4-beta2140.0
meteor@1.11.5
meteor-autosize@5.0.1
meteor-base@1.5.1
meteorhacks:aggregate@1.3.0
@ -77,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.10-beta2140.0
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.8-beta2140.0
mongo@1.16.8
mongo-decimal@0.1.3
mongo-dev-server@1.1.0
mongo-id@1.0.8
@ -94,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.17.0-beta2140.0
oauth@2.2.1-beta2140.0
npm-mongo@4.17.2
oauth@2.2.1
oauth2@1.3.2
observe-sequence@1.0.21
ongoworks:speakingurl@1.1.0
@ -111,19 +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
random@1.2.1
rate-limit@1.1.1
react-fast-refresh@0.2.8-beta2140.0
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
service-configuration@1.3.2-beta2140.0
service-configuration@1.3.3
session@1.2.1
sha@1.0.9
shell-server@0.5.0
@ -132,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
@ -141,15 +141,15 @@ templating@1.4.1
templating-compiler@1.4.1
templating-runtime@1.5.0
templating-tools@1.2.2
tracker@1.3.2
typescript@4.9.4
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

View file

@ -1,6 +1,6 @@
[main]
host = https://www.transifex.com
lang_map = es_AR: es-AR, es_419: es-LA, es_TX: es-TX, he_IL: he-IL, zh_CN: zh-CN, ar_EG: ar-EG, cs_CZ: cs-CZ, fa_IR: fa-IR, ms_MY: ms-MY, nl_NL: nl-NL, de_CH: de-CH, en_IT: en-IT, uz_UZ: uz-UZ, fr_CH: fr-CH, hi_IN: hi-IN, et_EE: et-EE, es_PE: es-PE, es_MX: es-MX, gl_ES: gl-ES, mn_MN: mn, sl_SI: sl, zh_TW: zh-TW, ast_ES: ast-ES, es_CL: es-CL, ja_JP: ja, lv_LV: lv, ro_RO: ro-RO, az_AZ: az-AZ, cy_GB: cy-GB, gu_IN: gu-IN, pl_PL: pl-PL, vep: ve-PP, en_BR: en-BR, en@ysv: en-YS, hu_HU: hu, ko_KR: ko-KR, pt_BR: pt-BR, zh_HK: zh-HK, zu_ZA: zu-ZA, en_MY: en-MY, ja-Hira: ja-HI, fi_FI: fi, vec: ve-CC, vi_VN: vi-VN, fr_FR: fr-FR, id_ID: id, zh_Hans: zh-Hans, en_DE: en-DE, en_GB: en-GB, el_GR: el-GR, uk_UA: uk-UA, az@latin: az-LA, de_AT: de-AT, uz@Latn: uz-LA, vls: vl-SS, ar_DZ: ar-DZ, bg_BG: bg, es_PY: es-PY, fy_NL: fy-NL, uz@Arab: uz-AR, ru_UA: ru-UA, war: wa-RR, zh_CN.GB2312: zh-GB
lang_map = te_IN: te-IN, es_AR: es-AR, es_419: es-LA, es_TX: es-TX, he_IL: he-IL, zh_CN: zh-CN, ar_EG: ar-EG, cs_CZ: cs-CZ, fa_IR: fa-IR, ms_MY: ms-MY, nl_NL: nl-NL, de_CH: de-CH, en_IT: en-IT, uz_UZ: uz-UZ, fr_CH: fr-CH, hi_IN: hi-IN, et_EE: et-EE, es_PE: es-PE, es_MX: es-MX, gl_ES: gl-ES, mn_MN: mn, sl_SI: sl, zh_TW: zh-TW, ast_ES: ast-ES, es_CL: es-CL, ja_JP: ja, lv_LV: lv, ro_RO: ro-RO, az_AZ: az-AZ, cy_GB: cy-GB, gu_IN: gu-IN, pl_PL: pl-PL, vep: ve-PP, en_BR: en-BR, en@ysv: en-YS, hu_HU: hu, ko_KR: ko-KR, pt_BR: pt-BR, zh_HK: zh-HK, zu_ZA: zu-ZA, en_MY: en-MY, ja-Hira: ja-HI, fi_FI: fi, vec: ve-CC, vi_VN: vi-VN, fr_FR: fr-FR, id_ID: id, zh_Hans: zh-Hans, en_DE: en-DE, en_GB: en-GB, el_GR: el-GR, uk_UA: uk-UA, az@latin: az-LA, de_AT: de-AT, uz@Latn: uz-LA, vls: vl-SS, ar_DZ: ar-DZ, bg_BG: bg, es_PY: es-PY, fy_NL: fy-NL, uz@Arab: uz-AR, ru_UA: ru-UA, war: wa-RR, zh_CN.GB2312: zh-GB
[o:wekan:p:wekan:r:application]
file_filter = imports/i18n/data/<lang>.i18n.json

84
.vscode/launch.json vendored
View file

@ -1,45 +1,57 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Meteor: Chrome",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}"
{
"type": "node",
"request": "launch",
"name": "Meteor: Node",
"runtimeExecutable": "meteor",
"runtimeArgs": [
"--port=4000",
"--exclude-archs=web.browser.legacy,web.cordova",
"--raw-logs"
],
"env": {
"WRITABLE_PATH": "/tmp/uploads",
},
{
"type": "node",
"request": "launch",
"name": "Meteor: Node",
"runtimeExecutable": "/home/wekan/.meteor/meteor",
"runtimeArgs": ["run", "--inspect-brk=9229"],
"outputCapture": "std",
"port": 9229,
"timeout": 60000
"outputCapture": "std",
"restart": true,
"timeout": 60000
},
{
"type": "chrome",
"request": "launch",
"name": "Meteor: Chrome",
"url": "http://localhost:4000",
"sourceMapPathOverrides": {
"meteor://💻app/*": "${workspaceFolder}/*"
},
{
"type": "node",
"request": "launch",
"name": "Test: Node",
"runtimeExecutable": "meteor",
"runtimeArgs": [
"test",
"--inspect-brk=9229",
"--port=4040",
"--exclude-archs=web.browser.legacy,web.cordova",
"--driver-package=meteortesting:mocha",
"--settings=settings.json"
],
"outputCapture": "std",
"port": 9229,
"timeout": 60000
}
"userDataDir": "${env:HOME}/.vscode/chrome"
},
{
"type": "node",
"request": "launch",
"name": "Test: Node",
"runtimeExecutable": "meteor",
"runtimeArgs": [
"test",
"--port=4040",
"--exclude-archs=web.browser.legacy,web.cordova",
"--driver-package=meteortesting:mocha",
"--settings=settings.json",
"--raw-logs"
],
"env": {
"TEST_WATCH": "1"
},
"outputCapture": "std",
"timeout": 60000
}
],
"compounds": [
{
"name": "Meteor: All",
"configurations": ["Meteor: Node", "Meteor: Chrome"]
}
{
"name": "Meteor: All",
"configurations": ["Meteor: Node", "Meteor: Chrome"]
}
]
}

File diff suppressed because it is too large Load diff

22
CODE_OF_CONDUCT.md Normal file
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@wekan.team
- 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

View file

@ -1,3 +1,23 @@
## 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:
@ -7,13 +27,9 @@ CVE Hall of Fame is at https://wekan.github.io/hall-of-fame/
## Contributing to Documentation Wiki
Please clone wiki:
```
git clone https://github.com/wekan/wekan.wiki
```
Edit .md files, and add changed files in .zip attachment
directly to comment of new issue at
https://github.com/wekan/wekan/issues
Fork WeKan repo https://github.com/wekan/wekan ,
edit `docs` directory content at GitHub web interface,
and click send PR.
## Contributing code
@ -42,7 +58,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
@ -62,12 +78,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

View file

@ -1,12 +1,8 @@
FROM --platform=linux/amd64 ubuntu:23.10 as wekan
LABEL maintainer="wekan" \
org.opencontainers.image.ref.name="ubuntu" \
org.opencontainers.image.version="23.10"
# 2022-09-04:
# - above "--platform=linux/amd64 ubuntu:22.04 as wekan" is needed to build Dockerfile
# correctly on Mac M1 etc, to not get this error:
# https://stackoverflow.com/questions/71040681/qemu-x86-64-could-not-open-lib64-ld-linux-x86-64-so-2-no-such-file-or-direc
FROM ubuntu:24.04
LABEL maintainer="wekan"
LABEL org.opencontainers.image.ref.name="ubuntu"
LABEL org.opencontainers.image.version="24.04"
LABEL org.opencontainers.image.source="https://github.com/wekan/wekan"
# 2022-04-25:
# - gyp does not yet work with Ubuntu 22.04 ubuntu:rolling,
@ -15,19 +11,17 @@ LABEL maintainer="wekan" \
# 2021-09-18:
# - Above Ubuntu base image copied from Docker Hub ubuntu:hirsute-20210825
# to Quay to avoid Docker Hub rate limits.
# Set the environment variables (defaults where required)
# DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
# ENV BUILD_DEPS="paxctl"
ARG DEBIAN_FRONTEND=noninteractive
ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-essential git ca-certificates python3" \
ENV BUILD_DEPS="apt-utils gnupg gosu wget bzip2 g++ curl libarchive-tools build-essential git ca-certificates python3"
ENV \
DEBUG=false \
NODE_VERSION=v14.21.4 \
METEOR_RELEASE=METEOR@2.13.3 \
METEOR_RELEASE=METEOR@2.14 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
NPM_VERSION=9.8.1 \
NPM_VERSION=6.14.17 \
FIBERS_VERSION=4.0.1 \
ARCHITECTURE=linux-x64 \
SRC_PATH=./ \
@ -68,6 +62,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="" \
@ -163,7 +158,7 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
WRITABLE_PATH=/data \
S3=""
# NODE_OPTIONS="--max_old_space_size=4096" \
# NODE_OPTIONS="--max_old_space_size=4096"
#---------------------------------------------
# == at docker-compose.yml: AUTOLOGIN WITH OIDC/OAUTH2 ====
@ -174,99 +169,98 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
# Copy the app to the image
COPY ${SRC_PATH} /home/wekan/app
RUN \
set -o xtrace && \
# Add non-root user wekan
useradd --user-group --system --home-dir /home/wekan wekan && \
\
# OS dependencies
apt-get update -y && apt-get install -y --no-install-recommends ${BUILD_DEPS} && \
\
# Meteor installer doesn't work with the default tar binary, so using bsdtar while installing.
# https://github.com/coreos/bugs/issues/1095#issuecomment-350574389
cp $(which tar) $(which tar)~ && \
ln -sf $(which bsdtar) $(which tar) && \
\
# Download nodejs
wget https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/node-${NODE_VERSION}-${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}-${ARCHITECTURE}.tar.gz && \
#wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
#---------------------------------------------------------------------------------------------
\
# Verify nodejs authenticity
grep node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz SHASUMS256.txt | shasum -a 256 -c - && \
rm -f SHASUMS256.txt && \
#grep ${NODE_VERSION}-${ARCHITECTURE}.tar.gz SHASUMS256.txt.asc | shasum -a 256 -c - && \
#rm -f SHASUMS256.txt.asc && \
\
# Install Node
tar xvzf node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
rm node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
mv node-${NODE_VERSION}-${ARCHITECTURE} /opt/nodejs && \
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/${NODE_VERSION} /home/wekan/.config && \
chown wekan --recursive /home/wekan/.config && \
\
#DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
#paxctl -mC `which node` && \
\
# Install Node dependencies. Python path for node-gyp.
#npm install -g npm@${NPM_VERSION} && \
\
# Change user to wekan and install meteor
cd /home/wekan/ && \
chown wekan --recursive /home/wekan && \
echo "Starting meteor ${METEOR_RELEASE} installation... \n" && \
gosu wekan:wekan curl https://install.meteor.com/ | /bin/sh && \
mv /root/.meteor /home/wekan/ && \
chown wekan --recursive /home/wekan/.meteor && \
\
sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' /home/wekan/app/packages/meteor-useraccounts-core/package.js && \
cd /home/wekan/.meteor && \
gosu wekan:wekan /home/wekan/.meteor/meteor -- help; \
\
# Build app
cd /home/wekan/app && \
mkdir -p /home/wekan/.npm && \
chown wekan --recursive /home/wekan/.npm /home/wekan/.config /home/wekan/.meteor && \
chmod u+w *.json && \
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 meteor npm install && \
cd node_modules/fibers && \
node build.js && \
cd ../.. && \
# Remove legacy webbroser bundle, so that Wekan works also at Android Firefox, iOS Safari, etc.
rm -rf /home/wekan/app_build/bundle/programs/web.browser.legacy && \
mv /home/wekan/app_build/bundle /build && \
\
# Put back the original tar
mv $(which tar)~ $(which tar) && \
\
# Cleanup
apt-get remove --purge -y ${BUILD_DEPS} && \
apt-get autoremove -y && \
npm uninstall -g api2html &&\
rm -R /tmp/* && \
rm -R /var/lib/apt/lists/* && \
rm -R /home/wekan/.meteor && \
rm -R /home/wekan/app && \
rm -R /home/wekan/app_build && \
mkdir /data && \
chown wekan --recursive /data
#cat /home/wekan/python/esprima-python/files.txt | xargs rm -R && \
#rm -R /home/wekan/python
#rm /home/wekan/install_meteor.sh
# Install OS
RUN <<EOR
set -o xtrace
# Add non-root user wekan
useradd --user-group --system --home-dir /home/wekan wekan
# OS dependencies
apt-get update --assume-yes
apt-get install --assume-yes --no-install-recommends ${BUILD_DEPS}
# Meteor installer doesn't work with the default tar binary, so using bsdtar while installing.
# https://github.com/coreos/bugs/issues/1095#issuecomment-350574389
cp $(which tar) $(which tar)~
ln -sf $(which bsdtar) $(which tar)
# Install NodeJS
cd /tmp
# Download nodejs
wget "https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz"
wget "https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/SHASUMS256.txt"
# Verify nodejs authenticity
grep "node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz" "SHASUMS256.txt" | shasum -a 256 -c -
rm -f "SHASUMS256.txt"
# Install Node
tar xzf "node-$NODE_VERSION-$ARCHITECTURE.tar.gz" -C /usr/local --strip-components=1 --no-same-owner
rm "node-$NODE_VERSION-$ARCHITECTURE.tar.gz" "SHASUMS256.txt"
ln -s "/usr/local/bin/node" "/usr/local/bin/nodejs"
mkdir -p "/opt/nodejs/lib/node_modules/fibers/.node-gyp" "/root/.node-gyp/${NODE_VERSION} /home/wekan/.config"
# Install node dependencies
npm install -g npm@${NPM_VERSION} --production
chown --recursive wekan:wekan /home/wekan/.config
# Install Meteor
cd /home/wekan
chown --recursive wekan:wekan /home/wekan
echo "Starting meteor ${METEOR_RELEASE} installation... \n"
gosu wekan:wekan curl https://install.meteor.com/ | /bin/sh
mv /root/.meteor /home/wekan/
chown --recursive wekan:wekan /home/wekan/.meteor
sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' /home/wekan/app/packages/meteor-useraccounts-core/package.js
cd /home/wekan/.meteor
gosu wekan:wekan /home/wekan/.meteor/meteor -- help
# Build app (Production)
cd /home/wekan/app
mkdir -p /home/wekan/.npm
chown --recursive wekan:wekan /home/wekan/.npm
chmod u+w *.json
gosu wekan:wekan meteor npm install --production
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 meteor npm install --production
cd node_modules/fibers
node build.js
cd ../..
# Remove legacy webbroser bundle, so that Wekan works also at Android Firefox, iOS Safari, etc.
rm -rf /home/wekan/app_build/bundle/programs/web.browser.legacy
mv /home/wekan/app_build/bundle /build
# Put back the original tar
mv $(which tar)~ $(which tar)
# Cleanup
apt-get remove --purge --assume-yes ${BUILD_DEPS}
npm uninstall -g api2html
apt-get autoremove --assume-yes
apt-get clean --assume-yes
rm -Rf /tmp/*
rm -Rf /var/lib/apt/lists/*
rm -Rf /var/cache/apt
rm -Rf /var/lib/apt/lists
rm -Rf /home/wekan/app_build
rm -Rf /home/wekan/app
rm -Rf /home/wekan/.meteor
mkdir /data
chown wekan --recursive /data
EOR
USER wekan
ENV PORT=8080
EXPOSE $PORT
USER wekan
STOPSIGNAL SIGKILL
WORKDIR /home/wekan/app
#---------------------------------------------------------------------
# https://github.com/wekan/wekan/issues/3585#issuecomment-1021522132
@ -277,6 +271,6 @@ STOPSIGNAL SIGKILL
#---------------------------------------------------------------------
#
# CMD ["node", "/build/main.js"]
#CMD ["bash", "-c", "ulimit -s 65500; exec node --stack-size=65500 /build/main.js"]
# CMD ["bash", "-c", "ulimit -s 65500; exec node --stack-size=65500 /build/main.js"]
# CMD ["bash", "-c", "ulimit -s 65500; exec node --stack-size=65500 --max-old-space-size=8192 /build/main.js"]
CMD ["bash", "-c", "ulimit -s 65500; exec node /build/main.js"]

View file

@ -88,5 +88,6 @@ RUN \
EXPOSE $PORT
USER wekan
# CMD ["bash", "-c", "ulimit -s 65500; exec node --stack-size=65500 --max-old-space-size=8192 /home/wekan/bundle/main.js"]
CMD ["bash", "-c", "ulimit -s 65500; exec node /home/wekan/bundle/main.js"]

40
FUTURE.md Normal file
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
GOVERNANCE.md Normal file
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

View file

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2014-2023 The Wekan Team
Copyright (c) 2014-2024 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

View file

@ -2,23 +2,34 @@
# 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/blob/main/docker-compose.yml
## 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/)
Translations to non-English languages are accepted only at [Transifex](https://app.transifex.com/wekan/) using webbrowser.
Translations to non-English languages are accepted only at [Transifex](https://app.transifex.com/wekan/wekan) using webbrowser.
New English strings of new features can be added as PRs to master branch file wekan/imports/i18n/data/en.i18n.json .
## [WeKan ® feature requests and bugs](https://github.com/wekan/wekan/issues)
@ -96,6 +107,14 @@ that by providing one-click installation on various platforms.
We also welcome sponsors for features and bugfixes.
By working directly with WeKan ® you get the benefit of active maintenance and new features added by growing WeKan ® developer community.
## Getting Started with Development
The default branch uses [Meteor 2 with Node.js 14](https://wekan.github.io/install/).
To contribute, [create a fork](https://github.com/wekan/wekan/wiki/Emoji#2-create-fork-of-httpsgithubcomwekanwekan-at-github-web-page) and run `./rebuild-wekan.sh` (or `./rebuild-wekan.bat` on Windows) as detailed [here](https://github.com/wekan/wekan/wiki/Emoji#3-select-option-1-to-install-dependencies-and-then-enter). Once you're ready, please test your code and [submit a pull request (PR)](https://github.com/wekan/wekan/wiki/Emoji#7-test).
Please refer to the [developer documentation](https://github.com/wekan/wekan/wiki/Developer-Documentation) for more information.
## Screenshot
[More screenshots at Features page](https://github.com/wekan/wekan/wiki/Features)

View file

@ -1,6 +1,7 @@
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
the information responsibly by sending an email to security@wekan.team and not by
creating a GitHub issue. We will respond swiftly to fix verifiable security issues.
We thank you with a place at our hall of fame page, that is
@ -58,7 +59,7 @@ and by by companies that have 30k users.
## SSL/TLS
- SSL/TLS encrypts traffic between webbrowser and webserver.
- If you are thinking about TLS MITM, look at Caddy 2 webserver MITM detections.
- 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:
@ -216,7 +217,7 @@ Typical already known or "no impact" bugs such as:
- Email spoofing, SPF, DMARC & DKIM. Wekan does not include email server.
Wekan is Open Source with MIT license, and free to use also for commercial use.
We welcome all fixes to improve security by email to security (at) wekan.team .
We welcome all fixes to improve security by email to security@wekan.team
## Bonus Points

View file

@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v7.16.0"
appVersion: "v7.85.0"
files:
userUploads:
- README.md

357
api.py
View file

@ -37,9 +37,24 @@ 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 copyboard BOARDID NEWBOARDTITLE # Copy a board
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 +194,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 +298,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 +358,155 @@ 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] == 'copyboard':
# ------- COPY BOARD START -----------
boardid = sys.argv[2]
boardtitle = sys.argv[3]
edboardcopy = wekanurl + apiboards + boardid + s + 'copy'
print(edboardcopy)
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
post_data = {'title': boardtitle}
body = requests.post(edboardcopy, json=post_data, headers=headers)
print("=== COPY BOARD ===\n")
#body = requests.get(edboardcopy, 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)
# ------- COPY BOARD END -----------
if sys.argv[1] == 'createlist':
# ------- CREATE LIST START -----------
@ -293,6 +546,90 @@ 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)
if response.status_code == 404:
print(f"Card not found: {card['_id']}")
else:
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 +701,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':

View file

@ -49,43 +49,6 @@
margin-top: 5px;
padding: 5px;
}
.activities .activity .activity-desc .reactions {
display: flex;
margin-top: 5px;
gap: 5px;
}
.activities .activity .activity-desc .reactions .open-comment-reaction-popup {
display: flex;
align-items: center;
text-decoration: none;
height: 24px;
}
.activities .activity .activity-desc .reactions .open-comment-reaction-popup i.fa.fa-smile-o {
font-size: 17px;
font-weight: 500;
margin-left: 2px;
}
.activities .activity .activity-desc .reactions .open-comment-reaction-popup i.fa.fa-plus {
font-size: 8px;
margin-top: -7px;
margin-left: 1px;
}
.activities .activity .activity-desc .reactions .reaction {
cursor: pointer;
border: 1px solid #808080;
border-radius: 15px;
display: flex;
padding: 2px 5px;
}
.activities .activity .activity-desc .reactions .reaction.selected {
background-color: #b0c4de;
}
.activities .activity .activity-desc .reactions .reaction:hover {
background-color: #b0c4de;
}
.activities .activity .activity-desc .reactions .reaction .reaction-count {
font-size: 12px;
}
.activities .activity .activity-desc .activity-checklist {
display: block;
border-radius: 3px;

View file

@ -1,11 +1,12 @@
template(name="activities")
.activities.js-sidebar-activities
//- We should use Template.dynamic here but there is a bug with
//- blaze-components: https://github.com/peerlibrary/meteor-blaze-components/issues/30
if $eq mode "board"
+boardActivities
else
+cardActivities
if showActivities
.activities.js-sidebar-activities
//- We should use Template.dynamic here but there is a bug with
//- blaze-components: https://github.com/peerlibrary/meteor-blaze-components/issues/30
if $eq mode "board"
+boardActivities
else
+cardActivities
template(name="boardActivities")
each activityData in currentBoard.activities
@ -15,32 +16,6 @@ template(name="cardActivities")
each activityData in activities
+activity(activity=activityData card=card mode=mode)
template(name="editOrDeleteComment")
= ' - '
a.js-open-inlined-form {{_ "edit"}}
= ' - '
a.js-delete-comment {{_ "delete"}}
template(name="deleteCommentPopup")
p {{_ "comment-delete"}}
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
template(name="commentReactions")
.reactions
each reaction in reactions
span.reaction(class="{{#if isSelected reaction.userIds}}selected{{/if}}" data-codepoint="#{reaction.reactionCodepoint}" title="{{userNames reaction.userIds}}")
span.reaction-codepoint !{reaction.reactionCodepoint}
span.reaction-count #{reaction.userIds.length}
if (currentUser.isBoardMember)
a.open-comment-reaction-popup(title="{{_ 'addReactionPopup-title'}}")
i.fa.fa-smile-o
i.fa.fa-plus
template(name="addReactionPopup")
.reactions-popup
each codepoint in codepoints
span.add-comment-reaction(data-codepoint="#{codepoint}") !{codepoint}
template(name="activity")
.activity(data-id=activity._id)
+userAvatar(userId=activity.user._id)
@ -130,39 +105,17 @@ template(name="activity")
| {{{_ 'activity-checklist-item-removed' (sanitize activity.checklist.title) cardLink}}}.
//- comment activity ----------------------------------------------------
if($eq mode 'card')
//- if we are in card mode we display the comment in a way that it
//- can be edited by the owner
if($eq activity.activityType 'addComment')
+inlinedForm(classNames='js-edit-comment')
+editor(autofocus=true)
= activity.comment.text
.edit-controls
button.primary(type="submit") {{_ 'edit'}}
.fa.fa-times-thin.js-close-inlined-form
else
.activity-comment
+viewer
= activity.comment.text
+commentReactions(reactions=activity.comment.reactions commentId=activity.comment._id)
span(title=activity.createdAt).activity-meta {{ moment activity.createdAt }}
if($eq currentUser._id activity.comment.userId)
+editOrDeleteComment
else if currentUser.isBoardAdmin
+editOrDeleteComment
if($eq activity.activityType 'deleteComment')
| {{{_ 'activity-deleteComment' activity.commentId}}}.
if($eq activity.activityType 'deleteComment')
| {{{_ 'activity-deleteComment' activity.commentId}}}.
if($eq activity.activityType 'editComment')
| {{{_ 'activity-editComment' activity.commentId}}}.
if($eq activity.activityType 'editComment')
| {{{_ 'activity-editComment' activity.commentId}}}.
else
//- if we are not in card mode we only display a summary of the comment
if($eq activity.activityType 'addComment')
| {{{_ 'activity-on' cardLink}}}
a.activity-comment(href="{{ activity.card.originRelativeUrl }}")
+viewer
= activity.comment.text
if($eq activity.activityType 'addComment')
| {{{_ 'activity-on' cardLink}}}
a.activity-comment(href="{{ activity.card.originRelativeUrl }}")
+viewer
= activity.comment.text
//- date activity ------------------------------------------------
if($eq activity.activityType 'a-receivedAt')
@ -208,6 +161,9 @@ template(name="activity")
if($eq activity.activityType 'archivedList')
| {{_ 'activity-archived' (sanitize listLabel)}}.
if($eq activity.activityType 'changedListTitle')
| {{_ 'activity-changedListTitle' (sanitize listLabel) boardLabelLink}}
//- member activity ----------------------------------------------------
if($eq activity.activityType 'joinMember')
if($eq user._id activity.member._id)
@ -243,4 +199,4 @@ template(name="activity")
else if(currentData.timeValue)
| {{_ activity.activityType currentData.timeValue}}
span(title=activity.createdAt).activity-meta {{ moment activity.createdAt }}
div(title=activity.createdAt).activity-meta {{ moment activity.createdAt }}

View file

@ -13,39 +13,41 @@ BlazeComponent.extendComponent({
const sidebar = Sidebar;
sidebar && sidebar.callFirstWith(null, 'resetNextPeak');
this.autorun(() => {
let mode = this.data().mode;
const capitalizedMode = Utils.capitalize(mode);
let searchId;
if (mode === 'linkedcard' || mode === 'linkedboard') {
searchId = Utils.getCurrentCard().linkedId;
mode = mode.replace('linked', '');
} else if (mode === 'card') {
searchId = Utils.getCurrentCardId();
} else {
searchId = Session.get(`current${capitalizedMode}`);
}
const limit = this.page.get() * activitiesPerPage;
const user = ReactiveCache.getCurrentUser();
const hideSystem = user ? user.hasHiddenSystemMessages() : false;
if (searchId === null) return;
this.subscribe('activities', mode, searchId, limit, hideSystem, () => {
this.loadNextPageLocked = false;
// TODO the guard can be removed as soon as the TODO above is resolved
if (!sidebar) return;
// If the sibear peak hasn't increased, that mean that there are no more
// activities, and we can stop calling new subscriptions.
// XXX This is hacky! We need to know excatly and reactively how many
// activities there are, we probably want to denormalize this number
// dirrectly into card and board documents.
const nextPeakBefore = sidebar.callFirstWith(null, 'getNextPeak');
sidebar.calculateNextPeak();
const nextPeakAfter = sidebar.callFirstWith(null, 'getNextPeak');
if (nextPeakBefore === nextPeakAfter) {
sidebar.callFirstWith(null, 'resetNextPeak');
let mode = this.data()?.mode;
if (mode) {
const capitalizedMode = Utils.capitalize(mode);
let searchId;
const showActivities = this.showActivities();
if (mode === 'linkedcard' || mode === 'linkedboard') {
const currentCard = Utils.getCurrentCard();
searchId = currentCard.linkedId;
mode = mode.replace('linked', '');
} else if (mode === 'card') {
searchId = Utils.getCurrentCardId();
} else {
searchId = Session.get(`current${capitalizedMode}`);
}
});
const limit = this.page.get() * activitiesPerPage;
if (searchId === null) return;
this.subscribe('activities', mode, searchId, limit, showActivities, () => {
this.loadNextPageLocked = false;
// TODO the guard can be removed as soon as the TODO above is resolved
if (!sidebar) return;
// If the sibear peak hasn't increased, that mean that there are no more
// activities, and we can stop calling new subscriptions.
// XXX This is hacky! We need to know excatly and reactively how many
// activities there are, we probably want to denormalize this number
// dirrectly into card and board documents.
const nextPeakBefore = sidebar.callFirstWith(null, 'getNextPeak');
sidebar.calculateNextPeak();
const nextPeakAfter = sidebar.callFirstWith(null, 'getNextPeak');
if (nextPeakBefore === nextPeakAfter) {
sidebar.callFirstWith(null, 'resetNextPeak');
}
});
}
});
},
loadNextPage() {
@ -54,14 +56,26 @@ BlazeComponent.extendComponent({
this.loadNextPageLocked = true;
}
},
}).register('activities');
Template.activities.helpers({
activities() {
const ret = this.card.activities();
showActivities() {
let ret = false;
let mode = this.data()?.mode;
if (mode) {
if (mode === 'linkedcard' || mode === 'linkedboard') {
const currentCard = Utils.getCurrentCard();
ret = currentCard.showActivities ?? false;
} else if (mode === 'card') {
ret = this.data()?.card?.showActivities ?? false;
} else {
ret = Utils.getCurrentBoard().showActivities ?? false;
}
}
return ret;
},
});
activities() {
const ret = this.data().card.activities();
return ret;
},
}).register('activities');
BlazeComponent.extendComponent({
checkItem() {
@ -247,32 +261,6 @@ BlazeComponent.extendComponent({
return customField.name;
},
events() {
return [
{
// XXX We should use Popup.afterConfirmation here
'click .js-delete-comment': Popup.afterConfirm('deleteComment', () => {
const commentId = this.data().activity.commentId;
CardComments.remove(commentId);
Popup.back();
}),
'submit .js-edit-comment'(evt) {
evt.preventDefault();
const commentText = this.currentComponent()
.getValue()
.trim();
const commentId = Template.parentData().activity.commentId;
if (commentText) {
CardComments.update(commentId, {
$set: {
text: commentText,
},
});
}
},
},
];
},
}).register('activity');
Template.activity.helpers({

View file

@ -63,3 +63,78 @@
display: block;
margin: auto;
}
.comments {
clear: both;
}
.comments .comment {
margin: 0.5px 0;
padding: 6px 0;
display: flex;
}
.comments .comment .member {
width: 32px;
height: 32px;
}
.comments .comment .comment-member {
font-weight: 700;
}
.comments .comment .comment-desc {
word-wrap: break-word;
overflow: hidden;
flex: 1;
align-self: center;
margin: 0;
margin-left: 3px;
overflow: hidden;
word-break: break-word;
}
.comments .comment .comment-desc .comment-text {
display: block;
border-radius: 3px;
background: #fff;
text-decoration: none;
box-shadow: 0 1px 2px rgba(0,0,0,0.2);
margin-top: 5px;
padding: 5px;
}
.comments .comment .comment-desc .reactions {
display: flex;
margin-top: 5px;
gap: 5px;
}
.comments .comment .comment-desc .reactions .open-comment-reaction-popup {
display: flex;
align-items: center;
text-decoration: none;
height: 24px;
}
.comments .comment .comment-desc .reactions .open-comment-reaction-popup i.fa.fa-smile-o {
font-size: 17px;
font-weight: 500;
margin-left: 2px;
}
.comments .comment .comment-desc .reactions .open-comment-reaction-popup i.fa.fa-plus {
font-size: 8px;
margin-top: -7px;
margin-left: 1px;
}
.comments .comment .comment-desc .reactions .reaction {
cursor: pointer;
border: 1px solid #808080;
border-radius: 15px;
display: flex;
padding: 2px 5px;
}
.comments .comment .comment-desc .reactions .reaction.selected {
background-color: #b0c4de;
}
.comments .comment .comment-desc .reactions .reaction:hover {
background-color: #b0c4de;
}
.comments .comment .comment-desc .reactions .reaction .reaction-count {
font-size: 12px;
}
.comments .comment .comment-desc .comment-meta {
font-size: 0.8em;
color: #999;
}

View file

@ -7,3 +7,59 @@ template(name="commentForm")
| {{getUnsavedValue 'cardComment' currentCard._id}}
.add-controls
button.primary.confirm.clear.js-add-comment(type="submit") {{_ 'comment'}}
template(name="comments")
.comments
each commentData in getComments
+comment(commentData)
template(name="comment")
.comment
+userAvatar(userId=userId)
p.comment-desc
span.comment-member
+memberName(user=user)
+inlinedForm(classNames='js-edit-comment')
+editor(autofocus=true)
= text
.edit-controls
button.primary(type="submit") {{_ 'edit'}}
.fa.fa-times-thin.js-close-inlined-form
else
.comment-text
+viewer
= text
+commentReactions(reactions=reactions commentId=_id)
span(title=createdAt).comment-meta {{ moment createdAt }}
if($eq currentUser._id userId)
+editOrDeleteComment
else if currentUser.isBoardAdmin
+editOrDeleteComment
template(name="editOrDeleteComment")
= ' - '
a.js-open-inlined-form {{_ "edit"}}
= ' - '
a.js-delete-comment {{_ "delete"}}
template(name="deleteCommentPopup")
p {{_ "comment-delete"}}
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
template(name="commentReactions")
.reactions
each reaction in reactions
span.reaction(class="{{#if isSelected reaction.userIds}}selected{{/if}}" data-codepoint="#{reaction.reactionCodepoint}" title="{{userNames reaction.userIds}}")
span.reaction-codepoint !{reaction.reactionCodepoint}
span.reaction-count #{reaction.userIds.length}
if (currentUser.isBoardMember)
a.open-comment-reaction-popup(title="{{_ 'addReactionPopup-title'}}")
i.fa.fa-smile-o
i.fa.fa-plus
template(name="addReactionPopup")
.reactions-popup
each codepoint in codepoints
span.add-comment-reaction(data-codepoint="#{codepoint}") !{codepoint}

View file

@ -55,6 +55,41 @@ BlazeComponent.extendComponent({
},
}).register('commentForm');
BlazeComponent.extendComponent({
getComments() {
const ret = this.data().comments();
return ret;
},
}).register("comments");
BlazeComponent.extendComponent({
events() {
return [
{
'click .js-delete-comment': Popup.afterConfirm('deleteComment', () => {
const commentId = this.data()._id;
CardComments.remove(commentId);
Popup.back();
}),
'submit .js-edit-comment'(evt) {
evt.preventDefault();
const commentText = this.currentComponent()
.getValue()
.trim();
const commentId = this.data()._id;
if (commentText) {
CardComments.update(commentId, {
$set: {
text: commentText,
},
});
}
},
},
];
},
}).register("comment");
// XXX This should be a static method of the `commentForm` component
function resetCommentInput(input) {
input.val(''); // without manually trigger, input event won't be fired

View file

@ -16,9 +16,6 @@
transition: margin 0.1s;
overflow-y: auto;
}
.board-wrapper .board-canvas.is-sibling-sidebar-open {
margin-right: 248px;
}
.board-wrapper .board-canvas .board-overlay {
position: fixed;
left: 0;

View file

@ -17,25 +17,32 @@ template(name="boardBody")
| {{_ 'tableVisibilityMode-allowPrivateOnly'}}
else
.board-wrapper(class=currentBoard.colorClass)
+sidebar
.board-canvas.js-swimlanes(
class="{{#if hasSwimlanes}}dragscroll{{/if}}"
class="{{#if Sidebar.isOpen}}is-sibling-sidebar-open{{/if}}"
class="{{#if MultiSelection.isActive}}is-multiselection-active{{/if}}"
class="{{#if draggingActive.get}}is-dragging-active{{/if}}")
class="{{#if draggingActive.get}}is-dragging-active{{/if}}"
class="{{#unless isVerticalScrollbars}}no-scrollbars{{/unless}}")
if showOverlay.get
.board-overlay
if currentBoard.isTemplatesBoard
each currentBoard.swimlanes
+swimlane(this)
else if isViewSwimlanes
each currentBoard.swimlanes
+swimlane(this)
if hasSwimlanes
each currentBoard.swimlanes
+swimlane(this)
else
a.js-empty-board-add-swimlane(title="{{_ 'add-swimlane'}}")
h1.big-message.quiet
| {{_ 'add-swimlane'}} +
else if isViewLists
+listsGroup(currentBoard)
else if isViewCalendar
+calendarView
else
+listsGroup(currentBoard)
+sidebar
template(name="calendarView")
if isViewCalendar

View file

@ -1,5 +1,6 @@
import { ReactiveCache } from '/imports/reactiveCache';
import { TAPi18n } from '/imports/i18n';
import dragscroll from '@wekanteam/dragscroll';
const subManager = new SubsManager();
const { calculateIndex } = Utils;
@ -194,6 +195,9 @@ BlazeComponent.extendComponent({
});
this.autorun(() => {
// Always reset dragscroll on view switch
dragscroll.reset();
if (Utils.isTouchScreenOrShowDesktopDragHandles()) {
$swimlanesDom.sortable({
handle: '.js-swimlane-header-handle',
@ -219,6 +223,7 @@ BlazeComponent.extendComponent({
boardComponent.openNewListForm();
}
dragscroll.reset();
Utils.setBackgroundImage();
},
@ -243,6 +248,10 @@ BlazeComponent.extendComponent({
}
},
hasSwimlanes() {
return Utils.getCurrentBoard().swimlanes().length > 0;
},
isViewLists() {
const currentUser = ReactiveCache.getCurrentUser();
if (currentUser) {
@ -261,6 +270,11 @@ BlazeComponent.extendComponent({
}
},
isVerticalScrollbars() {
const user = ReactiveCache.getCurrentUser();
return user && user.isVerticalScrollbars();
},
openNewListForm() {
if (this.isViewSwimlanes()) {
// The form had been removed in 416b17062e57f215206e93a85b02ef9eb1ab4902
@ -283,6 +297,7 @@ BlazeComponent.extendComponent({
this._isDragging = false;
}
},
'click .js-empty-board-add-swimlane': Popup.open('swimlaneAdd'),
},
];
},

File diff suppressed because it is too large Load diff

View file

@ -12,8 +12,9 @@ template(name="boardHeaderBar")
if currentBoard
if currentUser
with currentBoard
a.board-header-btn(class="{{#if currentUser.isBoardAdmin}}js-edit-board-title{{else}}is-disabled{{/if}}" title="{{_ 'edit'}}" value=title)
i.fa.fa-pencil-square-o
if currentUser.isBoardAdmin
a.board-header-btn(class="{{#if currentUser.isBoardAdmin}}js-edit-board-title{{else}}is-disabled{{/if}}" title="{{_ 'edit'}}" value=title)
i.fa.fa-pencil-square-o
a.board-header-btn.js-star-board(class="{{#if isStarred}}is-active{{/if}}"
title="{{#if isStarred}}{{_ 'click-to-unstar'}}{{else}}{{_ 'click-to-star'}}{{/if}} {{_ 'starred-boards-description'}}")

View file

@ -1,42 +1,12 @@
import { ReactiveCache } from '/imports/reactiveCache';
import { TAPi18n } from '/imports/i18n';
import dragscroll from '@wekanteam/dragscroll';
/*
const DOWNCLS = 'fa-sort-down';
const UPCLS = 'fa-sort-up';
*/
const sortCardsBy = new ReactiveVar('');
Template.boardMenuPopup.events({
'click .js-rename-board': Popup.open('boardChangeTitle'),
'click .js-custom-fields'() {
Sidebar.setView('customFields');
Popup.back();
},
'click .js-open-archives'() {
Sidebar.setView('archives');
Popup.back();
},
'click .js-change-board-color': Popup.open('boardChangeColor'),
'click .js-change-language': Popup.open('changeLanguage'),
'click .js-archive-board ': Popup.afterConfirm('archiveBoard', function() {
const currentBoard = Utils.getCurrentBoard();
currentBoard.archive();
// XXX We should have some kind of notification on top of the page to
// confirm that the board was successfully archived.
FlowRouter.go('home');
}),
'click .js-delete-board': Popup.afterConfirm('deleteBoard', function() {
const currentBoard = Utils.getCurrentBoard();
Popup.back();
Boards.remove(currentBoard._id);
FlowRouter.go('home');
}),
'click .js-outgoing-webhooks': Popup.open('outgoingWebhooks'),
'click .js-import-board': Popup.open('chooseBoardSource'),
'click .js-subtask-settings': Popup.open('boardSubtaskSettings'),
'click .js-card-settings': Popup.open('boardCardSettings'),
'click .js-minicard-settings': Popup.open('boardMinicardSettings'),
});
Template.boardChangeTitlePopup.events({
submit(event, templateInstance) {

View file

@ -151,8 +151,8 @@ BlazeComponent.extendComponent({
}
const currUser = ReactiveCache.getCurrentUser();
let orgIdsUserBelongs = currUser !== undefined && currUser.teams !== 'undefined' ? currUser.orgIdsUserBelongs() : '';
if (orgIdsUserBelongs && orgIdsUserBelongs != '') {
let orgIdsUserBelongs = currUser?.orgIdsUserBelongs() || '';
if (orgIdsUserBelongs) {
let orgsIds = orgIdsUserBelongs.split(',');
// for(let i = 0; i < orgsIds.length; i++){
// query.$and[2].$or.push({'orgs.orgId': orgsIds[i]});
@ -162,8 +162,8 @@ BlazeComponent.extendComponent({
query.$and[2].$or.push({ 'orgs.orgId': { $in: orgsIds } });
}
let teamIdsUserBelongs = currUser !== undefined && currUser.teams !== 'undefined' ? currUser.teamIdsUserBelongs() : '';
if (teamIdsUserBelongs && teamIdsUserBelongs != '') {
let teamIdsUserBelongs = currUser?.teamIdsUserBelongs() || '';
if (teamIdsUserBelongs) {
let teamsIds = teamIdsUserBelongs.split(',');
// for(let i = 0; i < teamsIds.length; i++){
// query.$or[2].$or.push({'teams.teamId': teamsIds[i]});
@ -199,15 +199,12 @@ BlazeComponent.extendComponent({
},
boardMembers(boardId) {
let boardMembers = [];
/* Bug Board icons random dance https://github.com/wekan/wekan/issues/4214
const lists = ReactiveCache.getBoard(boardId)
let members = lists.members
members.forEach(member => {
boardMembers.push(member.userId);
});
*/
const boardMembers = lists?.members.map(member => member.userId);
return boardMembers;
*/
return [];
},
isStarred() {

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
@ -116,8 +117,6 @@ template(name="attachmentActionsPopup")
| {{_ 'remove-background-image'}}
else
| {{_ 'add-background-image'}}
p.attachment-storage
| {{versions.original.storage}}
if $neq versions.original.storage "fs"
a.js-move-storage-fs

View file

@ -39,7 +39,7 @@ Template.attachmentGallery.events({
'click .js-rename': Popup.open('attachmentRename'),
'click .js-confirm-delete': Popup.afterConfirm('attachmentDelete', function() {
Attachments.remove(this._id);
Popup.back(2);
Popup.back();
}),
});
@ -501,7 +501,7 @@ BlazeComponent.extendComponent({
if (name === DOMPurify.sanitize(name)) {
Meteor.call('renameAttachment', this.data()._id, name);
}
Popup.back(2);
Popup.back();
},
}
]

View file

@ -79,13 +79,14 @@ template(name="cardCustomField-currency")
template(name="cardCustomField-date")
if canModifyCard
a.js-edit-date(title="{{showTitle}} {{_ 'predicate-week'}} {{showWeek}}" class="{{classes}}")
a.js-edit-date(title="{{showTitle}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
if value
div.card-date
time(datetime="{{showISODate}}")
| {{showDate}}
b
| {{showWeek}}
if showWeekOfYear
b
| {{showWeek}}
else
| {{_ 'edit'}}
else
@ -93,8 +94,9 @@ template(name="cardCustomField-date")
div.card-date
time(datetime="{{showISODate}}")
| {{showDate}}
b
| {{showWeek}}
if showWeekOfYear
b
| {{showWeek}}
template(name="cardCustomField-dropdown")
if canModifyCard

View file

@ -148,6 +148,10 @@ CardCustomField.register('cardCustomField');
return this.date.get().week().toString();
}
showWeekOfYear() {
return ReactiveCache.getCurrentUser().isShowWeekOfYear();
}
showDate() {
// this will start working once mquandalle:moment
// is updated to at least moment.js 2.10.5

View file

@ -1,20 +1,23 @@
template(name="dateBadge")
if canModifyCard
a.js-edit-date.card-date(title="{{showTitle}} {{_ 'predicate-week'}} {{showWeek}}" class="{{classes}}")
a.js-edit-date.card-date(title="{{showTitle}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
time(datetime="{{showISODate}}")
| {{showDate}}
b
| {{showWeek}}
if showWeekOfYear
b
| {{showWeek}}
else
a.card-date(title="{{showTitle}} {{_ 'predicate-week'}} {{showWeek}}" class="{{classes}}")
a.card-date(title="{{showTitle}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
time(datetime="{{showISODate}}")
| {{showDate}}
b
| {{showWeek}}
if showWeekOfYear
b
| {{showWeek}}
template(name="dateCustomField")
a(title="{{showTitle}} {{_ 'predicate-week'}} {{showWeek}}" class="{{classes}}")
a(title="{{showTitle}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
time(datetime="{{showISODate}}")
| {{showDate}}
b
| {{showWeek}}
if showWeekOfYear
b
| {{showWeek}}

View file

@ -11,7 +11,7 @@ import { DatePicker } from '/client/lib/datepicker';
}
_storeDate(date) {
this.card.setReceived(date);
this.card.setReceived(moment(date).format('YYYY-MM-DD HH:mm'));
}
_deleteDate() {
@ -37,7 +37,7 @@ import { DatePicker } from '/client/lib/datepicker';
}
_storeDate(date) {
this.card.setStart(date);
this.card.setStart(moment(date).format('YYYY-MM-DD HH:mm'));
}
_deleteDate() {
@ -60,7 +60,7 @@ import { DatePicker } from '/client/lib/datepicker';
}
_storeDate(date) {
this.card.setDue(date);
this.card.setDue(moment(date).format('YYYY-MM-DD HH:mm'));
}
_deleteDate() {
@ -83,7 +83,7 @@ import { DatePicker } from '/client/lib/datepicker';
}
_storeDate(date) {
this.card.setEnd(date);
this.card.setEnd(moment(date).format('YYYY-MM-DD HH:mm'));
}
_deleteDate() {
@ -110,6 +110,10 @@ const CardDate = BlazeComponent.extendComponent({
return this.date.get().week().toString();
},
showWeekOfYear() {
return ReactiveCache.getCurrentUser().isShowWeekOfYear();
},
showDate() {
// this will start working once mquandalle:moment
// is updated to at least moment.js 2.10.5
@ -283,6 +287,10 @@ class CardCustomFieldDate extends CardDate {
return this.date.get().week().toString();
}
showWeekOfYear() {
return ReactiveCache.getCurrentUser().isShowWeekOfYear();
}
showDate() {
// this will start working once mquandalle:moment
// is updated to at least moment.js 2.10.5
@ -314,19 +322,19 @@ CardCustomFieldDate.register('cardCustomFieldDate');
(class extends CardStartDate {
showDate() {
return this.date.get().format('L');
return this.date.get().format('YYYY-MM-DD HH:mm');
}
}.register('minicardStartDate'));
(class extends CardDueDate {
showDate() {
return this.date.get().format('L');
return this.date.get().format('YYYY-MM-DD HH:mm');
}
}.register('minicardDueDate'));
(class extends CardEndDate {
showDate() {
return this.date.get().format('L');
return this.date.get().format('YYYY-MM-DD HH:mm');
}
}.register('minicardEndDate'));

View file

@ -5,7 +5,7 @@
float: left;
height: 30px;
width: 30px;
margin: 0 4px 4px 0;
margin: .3vh;
cursor: pointer;
user-select: none;
z-index: 1;
@ -272,7 +272,7 @@
box-sizing: border-box;
top: 97px;
left: 0px;
height: calc(100% - 20px);
height: calc(100% - 100px);
width: calc(100% - 20px);
float: left;
}

View file

@ -5,7 +5,7 @@ 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
section.card-details.js-card-details.nodragscroll(class='{{#if cardMaximized}}card-details-maximized{{/if}}' class='{{#if isPopup}}card-details-popup{{/if}}' class='{{#unless isVerticalScrollbars}}no-scrollbars{{/unless}}'): .card-details-canvas
.card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}')
+inlinedForm(classNames="js-card-details-title")
+editCardTitleForm
@ -13,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"
@ -29,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"
@ -524,11 +525,12 @@ template(name="cardDetails")
a.fa.fa-times-thin.js-close-inlined-form
else
if currentBoard.allowsDescriptionText
a.js-open-inlined-form.right(title="{{_ 'edit'}}" value=title)
a.js-open-inlined-form(title="{{_ 'edit'}}" value=title)
i.fa.fa-pencil-square-o
if getDescription
+viewer
= getDescription
a.js-open-inlined-form(title="{{_ 'edit'}}" value=title)
if getDescription
+viewer
= getDescription
if (hasUnsavedValue 'cardDescription' _id)
p.quiet
| {{_ 'unsaved-description'}}
@ -547,7 +549,7 @@ template(name="cardDetails")
.card-checklist-attachmentGallery.card-checklists
if currentBoard.allowsChecklists
hr
+checklists(cardId = _id)
+checklists(cardId = _id card = this)
if currentBoard.allowsSubtasks
hr
+subtasks(cardId = _id)
@ -567,25 +569,34 @@ template(name="cardDetails")
+attachmentGallery
hr
unless currentUser.isNoComments
.comment-title
h3.card-details-item-title
i.fa.fa-comment-o
| {{_ 'comments'}}
if currentBoard.allowsComments
if currentUser.isBoardMember
unless currentUser.isNoComments
+commentForm
+comments
hr
.card-details-right
unless currentUser.isNoComments
.activity-title
h3.card-details-item-title
i.fa.fa-history
| {{ _ 'activity'}}
| {{ _ 'activities'}}
if currentUser.isBoardMember
.material-toggle-switch(title="{{_ 'hide-system-messages'}}")
//span.toggle-switch-title
if hiddenSystemMessages
input.toggle-switch(type="checkbox" id="toggleButton" checked="checked")
.material-toggle-switch(title="{{_ 'show-activities'}}")
if showActivities
input.toggle-switch(type="checkbox" id="toggleShowActivitiesCard" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleButton")
label.toggle-label(for="toggleButton")
if currentBoard.allowsComments
if currentUser.isBoardMember
unless currentUser.isNoComments
+commentForm
input.toggle-switch(type="checkbox" id="toggleShowActivitiesCard")
label.toggle-label(for="toggleShowActivitiesCard")
unless currentUser.isNoComments
if isLoaded.get
if isLinkedCard

View file

@ -63,10 +63,6 @@ BlazeComponent.extendComponent({
return card.findWatcher(Meteor.userId());
},
hiddenSystemMessages() {
return ReactiveCache.getCurrentUser().hasHiddenSystemMessages();
},
customFieldsGrid() {
return ReactiveCache.getCurrentUser().hasCustomFieldsGrid();
},
@ -118,6 +114,11 @@ BlazeComponent.extendComponent({
);
},
isVerticalScrollbars() {
const user = ReactiveCache.getCurrentUser();
return user && user.isVerticalScrollbars();
},
/** returns if the list id is the current list id
* @param listId list id to check
* @return is the list id the current list id ?
@ -377,8 +378,11 @@ BlazeComponent.extendComponent({
Session.set('cardDetailsIsDragging', false);
Session.set('cardDetailsIsMouseDown', false);
},
'click #toggleButton'() {
Meteor.call('toggleSystemMessages');
'click #toggleShowActivitiesCard'() {
this.data().toggleShowActivities();
},
'click #toggleHideCheckedChecklistItems'() {
this.data().toggleHideCheckedChecklistItems();
},
'click #toggleCustomFieldsGridButton'() {
Meteor.call('toggleCustomFieldsGrid');
@ -846,13 +850,15 @@ BlazeComponent.extendComponent({
'click .js-palette-color'() {
this.currentColor.set(this.currentData().color);
},
'click .js-submit'() {
'click .js-submit'(event) {
event.preventDefault();
this.currentCard.setColor(this.currentColor.get());
Popup.close();
Popup.back();
},
'click .js-remove-color'() {
'click .js-remove-color'(event) {
event.preventDefault();
this.currentCard.setColor(null);
Popup.close();
Popup.back();
},
},
];

View file

@ -8,20 +8,6 @@ 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 {
@ -40,8 +26,6 @@ textarea.js-edit-checklist-item {
display: flex;
justify-content: space-between;
}
.checklist-progress-bar-container {
display: flex;
flex-direction: row;
@ -61,6 +45,9 @@ textarea.js-edit-checklist-item {
border-radius: 16px;
height: 100%;
}
.checklist-title {
padding: 10px;
}
.checklist-title .checkbox {
float: left;
width: 30px;

View file

@ -9,10 +9,19 @@ 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-finished-checklist'}}")
//span.toggle-switch-title
if card.hideFinishedChecklistIfItemsAreHidden
input.toggle-switch(type="checkbox" id="toggleHideFinishedChecklist" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleHideFinishedChecklist")
label.toggle-label(for="toggleHideFinishedChecklist")
.card-checklist-items
each checklist in checklists
+checklistDetail(checklist=checklist)
if checklist.showChecklist card.hideFinishedChecklistIfItemsAreHidden
+checklistDetail(checklist = checklist card = card)
if canModifyCard
+inlinedForm(autoclose=false classNames="js-add-checklist" cardId = cardId)
@ -22,7 +31,7 @@ template(name="checklists")
i.fa.fa-plus
template(name="checklistDetail")
.js-checklist.checklist
.js-checklist.checklist.nodragscroll
+inlinedForm(classNames="js-edit-checklist-title" checklist = checklist)
+editChecklistItemForm(checklist = checklist)
else
@ -47,7 +56,7 @@ template(name="checklistDetail")
.checklist-progress-text {{finishedPercent}}%
.checklist-progress-bar
.checklist-progress(style="width:{{finishedPercent}}%")
+checklistItems(checklist = checklist)
+checklistItems(checklist = checklist card = card)
template(name="checklistDeletePopup")
p {{_ 'confirm-checklist-delete-popup'}}
@ -64,6 +73,12 @@ template(name="addChecklistItemForm")
.material-toggle-switch(title="{{_ 'newlineBecomesNewChecklistItem'}}")
input.toggle-switch(type="checkbox" id="toggleNewlineBecomesNewChecklistItem")
label.toggle-label(for="toggleNewlineBecomesNewChecklistItem")
| {{_ 'newLineNewItem'}}
if $eq position 'top'
.material-toggle-switch(title="{{_ 'newlineBecomesNewChecklistItemOriginOrder'}}")
input.toggle-switch(type="checkbox" id="toggleNewlineBecomesNewChecklistItemOriginOrder")
label.toggle-label(for="toggleNewlineBecomesNewChecklistItemOriginOrder")
| {{_ 'originOrder'}}
template(name="editChecklistItemForm")
a.fa.fa-copy(title="{{_ 'copy-text-to-clipboard'}}")
@ -87,7 +102,7 @@ template(name="checklistItems")
if checklist.items.length
if canModifyCard
+inlinedForm(autoclose=false classNames="js-add-checklist-item" checklist = checklist position="top")
+addChecklistItemForm(checklist=checklist showNewlineBecomesNewChecklistItem=true)
+addChecklistItemForm(checklist=checklist showNewlineBecomesNewChecklistItem=true position="top")
else
a.add-checklist-item.js-open-inlined-form(title="{{_ 'add-checklist-item'}}")
i.fa.fa-plus
@ -96,7 +111,7 @@ template(name="checklistItems")
+inlinedForm(classNames="js-edit-checklist-item" item = item checklist = checklist)
+editChecklistItemForm(type = 'item' item = item checklist = checklist)
else
+checklistItemDetail(item = item checklist = checklist)
+checklistItemDetail(item = item checklist = checklist card = card)
if canModifyCard
+inlinedForm(autoclose=false classNames="js-add-checklist-item" checklist = checklist)
+addChecklistItemForm(checklist=checklist showNewlineBecomesNewChecklistItem=true)
@ -105,7 +120,7 @@ template(name="checklistItems")
i.fa.fa-plus
template(name='checklistItemDetail')
.js-checklist-item.checklist-item(class="{{#if item.isFinished }}is-checked{{#if hideCheckedItems}} invisible{{/if}}{{/if}}"
.js-checklist-item.checklist-item(class="{{#if item.isFinished }}is-checked{{#if checklist.hideCheckedChecklistItems}} invisible{{/if}}{{/if}}{{#if checklist.hideAllChecklistItems}} is-checked invisible{{/if}}"
role="checkbox" aria-checked="{{#if item.isFinished }}true{{else}}false{{/if}}" tabindex="0")
if canModifyCard
.check-box-container
@ -122,27 +137,6 @@ 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
@ -154,6 +148,24 @@ template(name="checklistActionsPopup")
a.js-copy-checklist.copy-checklist
i.fa.fa-copy
| {{_ "copyChecklist"}} ...
a.js-hide-checked-checklist-items
i.fa.fa-eye-slash
| {{_ "hideCheckedChecklistItems"}} ...
.material-toggle-switch(title="{{_ 'hide-checked-items'}}")
if checklist.hideCheckedChecklistItems
input.toggle-switch(type="checkbox" id="toggleHideCheckedChecklistItems_{{checklist._id}}" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleHideCheckedChecklistItems_{{checklist._id}}")
label.toggle-label(for="toggleHideCheckedChecklistItems_{{checklist._id}}")
a.js-hide-all-checklist-items
i.fa.fa-ban
| {{_ "hideAllChecklistItems"}} ...
.material-toggle-switch(title="{{_ 'hideAllChecklistItems'}}")
if checklist.hideAllChecklistItems
input.toggle-switch(type="checkbox" id="toggleHideAllChecklistItems_{{checklist._id}}" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleHideAllChecklistItems_{{checklist._id}}")
label.toggle-label(for="toggleHideAllChecklistItems_{{checklist._id}}")
template(name="copyChecklistPopup")
+copyAndMoveChecklist

View file

@ -119,6 +119,7 @@ BlazeComponent.extendComponent({
event.preventDefault();
const textarea = this.find('textarea.js-add-checklist-item');
const newlineBecomesNewChecklistItem = this.find('input#toggleNewlineBecomesNewChecklistItem');
const newlineBecomesNewChecklistItemOriginOrder = this.find('input#toggleNewlineBecomesNewChecklistItemOriginOrder');
const title = textarea.value.trim();
const checklist = this.currentData().checklist;
@ -127,22 +128,28 @@ BlazeComponent.extendComponent({
if (newlineBecomesNewChecklistItem.checked) {
checklistItems = title.split('\n').map(_value => _value.trim());
if (this.currentData().position === 'top') {
checklistItems = checklistItems.reverse();
if (newlineBecomesNewChecklistItemOriginOrder.checked === false) {
checklistItems = checklistItems.reverse();
}
}
}
let addIndex;
let sortIndex;
if (this.currentData().position === 'top') {
sortIndex = Utils.calculateIndexData(null, checklist.firstItem()).base;
addIndex = -1;
} else {
sortIndex = Utils.calculateIndexData(checklist.lastItem(), null).base;
addIndex = 1;
}
for (let checklistItem of checklistItems) {
let sortIndex;
if (this.currentData().position === 'top') {
sortIndex = Utils.calculateIndexData(null, checklist.firstItem()).base;
} else {
sortIndex = Utils.calculateIndexData(checklist.lastItem(), null).base;
}
ChecklistItems.insert({
title: checklistItem,
checklistId: checklist._id,
cardId: checklist.cardId,
sort: sortIndex,
});
sortIndex += addIndex;
}
}
// We keep the form opened, empty it.
@ -201,12 +208,8 @@ BlazeComponent.extendComponent({
},
events() {
const events = {
};
return [
{
...events,
'click .js-open-checklist-details-menu': Popup.open('checklistActions'),
'submit .js-add-checklist': this.addChecklist,
'submit .js-edit-checklist-title': this.editChecklist,
@ -217,6 +220,10 @@ BlazeComponent.extendComponent({
'focus .js-add-checklist-item': this.focusChecklistItem,
// add and delete checklist / checklist-item
'click .js-open-inlined-form': this.closeAllInlinedForms,
'click #toggleHideFinishedChecklist'(event) {
event.preventDefault();
this.data().card.toggleHideFinishedChecklist();
},
keydown: this.pressKey,
},
];
@ -271,16 +278,6 @@ 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();
return false;
},
});
BlazeComponent.extendComponent({
@ -303,26 +300,9 @@ 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;
@ -332,6 +312,16 @@ BlazeComponent.extendComponent({
}),
'click .js-move-checklist': Popup.open('moveChecklist'),
'click .js-copy-checklist': Popup.open('copyChecklist'),
'click .js-hide-checked-checklist-items'(event) {
event.preventDefault();
this.data().checklist.toggleHideCheckedChecklistItems();
Popup.back();
},
'click .js-hide-all-checklist-items'(event) {
event.preventDefault();
this.data().checklist.toggleHideAllChecklistItems();
Popup.back();
},
}
]
}
@ -357,11 +347,6 @@ BlazeComponent.extendComponent({
}).register('editChecklistItemForm');
Template.checklistItemDetail.helpers({
hideCheckedItems() {
const user = ReactiveCache.getCurrentUser();
if (user) return user.hasHideCheckedItems();
return false;
},
});
BlazeComponent.extendComponent({

View file

@ -37,5 +37,4 @@ template(name="cardLabelsPopup")
= name
if(isLabelSelected ../_id)
i.card-label-selectable-icon.fa.fa-check
if currentUser.isBoardAdmin
a.quiet-button.full.js-add-label {{_ 'label-create'}}
a.quiet-button.full.js-add-label {{_ 'label-create'}}

View file

@ -1,12 +1,3 @@
.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;
@ -56,10 +47,12 @@
float: right;
font-size: 18px;
padding-right: 30px;
padding-left: 5px;
}
.minicard-details-menu {
float: right;
font-size: 18px;
padding-left: 5px;
}
@media print {
.minicard-details-menu,
@ -99,7 +92,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 {
@ -136,14 +129,6 @@
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;
@ -173,7 +158,6 @@
.minicard .minicard-title .viewer {
display: block;
word-wrap: break-word;
max-width: 230px;
}
}
.minicard .dates {

View file

@ -1,14 +1,15 @@
template(name="minicard")
.minicard(
.minicard.nodragscroll(
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,12 +112,6 @@ 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
@ -129,12 +124,12 @@ 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.badge-text
@ -189,12 +184,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

View file

@ -37,16 +37,12 @@ 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
;
ret = board.allowsCreatorOnMinicard ?? false;
}
return ret;
},
@ -92,11 +88,6 @@ 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())

View file

@ -7,18 +7,16 @@
border-left: 1px solid #ccc;
padding: 0;
float: left;
min-width: 100px; /* TODO(mark-i-m): hardcoded? */
/*max-width: 270px;*/
/* Reverted incomplete change list width: */
/* https://github.com/wekan/wekan/issues/4558 */
/* Orinal width: 270px. Changes not saved yet: */
/*resize: both; - List width and height resizeable */
/* overflow: auto; - List width and height resizeable */
}
[id^="swimlane-"] .list:first-child {
min-width: 20px;
}
.list.list-auto-width {
flex: 1;
}
.list:first-child {
min-width: 20px;
margin-left: 5px;
border-left: none;
flex: none;
}
.card-details + .list {
border-left: none;
@ -37,6 +35,9 @@
box-shadow: none;
height: 100px;
}
.list.list-collapsed {
flex: none;
}
.list.list-composer .open-list-composer,
.list .list-composer .open-list-composer {
color: #8c8c8c;
@ -48,7 +49,7 @@
}
.list-header-add {
flex: 0 0 auto;
padding: 20px 12px 4px;
padding: 12px;
position: relative;
min-height: 20px;
}
@ -81,6 +82,20 @@
overflow: hidden;
text-overflow: ellipsis;
word-wrap: break-word;
}
.list-rotated {
width: 10px;
height: 250px;
margin-top: -90px;
margin-left: -110px;
margin-right: 0;
transform: rotate(90deg);
position: relative;
text-overflow: ellipsis;
white-space: nowrap;
}
.list-header .list-rotated {
}
.list-header .list-header-watch-icon {
padding-left: 10px;
@ -99,6 +114,23 @@
color: #a6a6a6;
margin-right: 15px;
}
.list-header .list-header-collapse-right {
color: #a6a6a6;
}
.list-header .list-header-collapse-left {
color: #a6a6a6;
margin-right: 15px;
}
.list-header .list-header-uncollapse-left {
color: #a6a6a6;
}
.list-header .list-header-uncollapse-right {
color: #a6a6a6;
}
.list-header .list-header-collapse {
color: #a6a6a6;
margin-right: 15px;
}
.list-header .highlight {
color: #ce1414;
}
@ -220,11 +252,11 @@
padding: 15px 19px;
}
.list-header {
padding: 0 12px 0px;
/*Updated padding values for mobile devices, this should fix text grouping issue*/
padding: 20px 0px 20px 0px;
border-bottom: 0px solid #e4e4e4;
height: 60px;
min-height: 30px;
margin-top: 10px;
display: flex;
align-items: center;
}
.list-header .list-header-left-icon {
@ -297,7 +329,6 @@
}
.list-header-white {
border-bottom: 6px solid #fff;
border: 1px solid #eee;
}
.list-header-green {
border-bottom: 6px solid #3cb500;
@ -330,7 +361,7 @@
border-bottom: 6px solid #51e898;
}
.list-header-silver {
border-bottom: 6px solid unset;
border-bottom: 6px solid #e4e4e4;
}
.list-header-peachpuff {
border-bottom: 6px solid #ffdab9;

View file

@ -1,6 +1,7 @@
template(name='list')
.list.js-list(id="js-list-{{_id}}"
style="width:{{listWidth}}px;")
style="{{#unless collapsed}}min-width:{{listWidth}}px;max-width:{{listConstraint}}px;{{/unless}}"
class="{{#if collapsed}}list-collapsed{{/if}} {{#if autoWidth}}list-auto-width{{/if}}")
+listHeader
+listBody

View file

@ -196,10 +196,22 @@ BlazeComponent.extendComponent({
},
listWidth() {
const user = Meteor.user();
const user = ReactiveCache.getCurrentUser();
const list = Template.currentData();
return user.getListWidth(list.boardId, list._id);
},
listConstraint() {
const user = ReactiveCache.getCurrentUser();
const list = Template.currentData();
return user.getListConstraint(list.boardId, list._id);
},
autoWidth() {
const user = ReactiveCache.getCurrentUser();
const list = Template.currentData();
return user.isAutoWidth(list.boardId);
},
}).register('list');
Template.miniList.events({

View file

@ -1,37 +1,38 @@
template(name="listBody")
.list-body
.minicards.clearfix.js-minicards(class="{{#if reachedWipLimit}}js-list-full{{/if}}")
if cards.length
+inlinedForm(autoclose=false position="top")
+addCardForm(listId=_id position="top")
ul.sidebar-list
each customFieldsSum
li
+viewer
= name
if $eq customFieldsSum.type "number"
unless collapsed
.list-body(class="{{#unless isVerticalScrollbars}}no-scrollbars{{/unless}}")
.minicards.clearfix.js-minicards(class="{{#if reachedWipLimit}}js-list-full{{/if}}")
if cards.length
+inlinedForm(autoclose=false position="top")
+addCardForm(listId=_id position="top")
ul.sidebar-list
each customFieldsSum
li
+viewer
= value
if $eq customFieldsSum.type "currency"
+viewer
= formattedCurrencyCustomFieldValue(value)
each (cardsWithLimit (idOrNull ../../_id))
a.minicard-wrapper.js-minicard(href=originRelativeUrl
class="{{#if cardIsSelected}}is-selected{{/if}}"
class="{{#if MultiSelection.isSelected _id}}is-checked{{/if}}")
if MultiSelection.isActive
.materialCheckBox.multi-selection-checkbox.js-toggle-multi-selection(
class="{{#if MultiSelection.isSelected _id}}is-checked{{/if}}")
+minicard(this)
if (showSpinner (idOrNull ../../_id))
+spinnerList
= name
if $eq customFieldsSum.type "number"
+viewer
= value
if $eq customFieldsSum.type "currency"
+viewer
= formattedCurrencyCustomFieldValue(value)
each (cardsWithLimit (idOrNull ../../_id))
a.minicard-wrapper.js-minicard(href=originRelativeUrl
class="{{#if cardIsSelected}}is-selected{{/if}}"
class="{{#if MultiSelection.isSelected _id}}is-checked{{/if}}")
if MultiSelection.isActive
.materialCheckBox.multi-selection-checkbox.js-toggle-multi-selection(
class="{{#if MultiSelection.isSelected _id}}is-checked{{/if}}")
+minicard(this)
if (showSpinner (idOrNull ../../_id))
+spinnerList
if canSeeAddCard
+inlinedForm(autoclose=false position="bottom")
+addCardForm(listId=_id position="bottom")
else
a.open-minicard-composer.js-card-composer.js-open-inlined-form(title="{{_ 'add-card-to-bottom-of-list'}}")
i.fa.fa-plus
if canSeeAddCard
+inlinedForm(autoclose=false position="bottom")
+addCardForm(listId=_id position="bottom")
else
a.open-minicard-composer.js-card-composer.js-open-inlined-form(title="{{_ 'add-card-to-bottom-of-list'}}")
i.fa.fa-plus
template(name="spinnerList")
.sk-spinner.sk-spinner-list(

View file

@ -231,6 +231,11 @@ BlazeComponent.extendComponent({
);
},
isVerticalScrollbars() {
const user = ReactiveCache.getCurrentUser();
return user && user.isVerticalScrollbars();
},
cardDetailsPopup(event) {
if (!Popup.isOpen()) {
Popup.open("cardDetails")(event);

View file

@ -1,5 +1,5 @@
template(name="listHeader")
.list-header.js-list-header(
.list-header.js-list-header.nodragscroll(
class="{{#if limitToShowCardsCount}}list-header-card-count{{/if}}"
class=colorClass)
+inlinedForm
@ -8,19 +8,40 @@ template(name="listHeader")
if isMiniScreen
if currentList
a.list-header-left-icon.fa.fa-angle-left.js-unselect-list
h2.list-header-name(
title="{{ moment modifiedAt 'LLL' }}"
class="{{#if currentUser.isBoardMember}}{{#unless currentUser.isCommentOnly}}{{#unless currentUser.isWorker}}js-open-inlined-form is-editable{{/unless}}{{/unless}}{{/if}}")
+viewer
= title
if wipLimit.enabled
|&nbsp;(
span(class="{{#if exceededWipLimit}}highlight{{/if}}") {{cards.length}}
|/#{wipLimit.value})
if showCardsCountForList cards.length
span.cardCount {{cardsCount}} {{cardsCountForListIsOne cards.length}}
else
if collapsed
a.js-collapse(title="{{_ 'uncollapse'}}")
i.fa.fa-arrow-left.list-header-uncollapse-left
i.fa.fa-arrow-right.list-header-uncollapse-right
if showCardsCountForList cards.length
br
span.cardCount {{cardsCount}}
if isMiniScreen
h2.list-header-name(
title="{{ moment modifiedAt 'LLL' }}"
class="{{#if currentUser.isBoardMember}}{{#unless currentUser.isCommentOnly}}{{#unless currentUser.isWorker}}js-open-inlined-form is-editable{{/unless}}{{/unless}}{{/if}}")
+viewer
= title
if wipLimit.enabled
|&nbsp;(
span(class="{{#if exceededWipLimit}}highlight{{/if}}") {{cards.length}}
|/#{wipLimit.value})
if showCardsCountForList cards.length
span.cardCount {{cardsCount}} {{cardsCountForListIsOne cards.length}}
else
div(class="{{#if collapsed}}list-rotated{{/if}}")
h2.list-header-name(
title="{{ moment modifiedAt 'LLL' }}"
class="{{#if currentUser.isBoardMember}}{{#unless currentUser.isCommentOnly}}{{#unless currentUser.isWorker}}js-open-inlined-form is-editable{{/unless}}{{/unless}}{{/if}}")
+viewer
= title
if wipLimit.enabled
|&nbsp;(
span(class="{{#if exceededWipLimit}}highlight{{/if}}") {{cards.length}}
|/#{wipLimit.value})
unless collapsed
if showCardsCountForList cards.length
span.cardCount {{cardsCount}} {{cardsCountForListIsOne cards.length}}
if isMiniScreen
if currentList
if isWatching
@ -36,16 +57,20 @@ template(name="listHeader")
else if currentUser.isBoardMember
if isWatching
i.list-header-watch-icon.fa.fa-eye
div.list-header-menu
unless currentUser.isCommentOnly
//if isBoardAdmin
// a.fa.js-list-star.list-header-plus-top(class="fa-star{{#unless starred}}-o{{/unless}}")
if canSeeAddCard
a.js-add-card.fa.fa-plus.list-header-plus-top(title="{{_ 'add-card-to-top-of-list'}}")
a.fa.fa-navicon.js-open-list-menu(title="{{_ 'listActionPopup-title'}}")
if currentUser.isBoardAdmin
if isTouchScreenOrShowDesktopDragHandles
a.list-header-handle.handle.fa.fa-arrows.js-list-handle
unless collapsed
div.list-header-menu
unless currentUser.isCommentOnly
//if isBoardAdmin
// a.fa.js-list-star.list-header-plus-top(class="fa-star{{#unless starred}}-o{{/unless}}")
if canSeeAddCard
a.js-add-card.fa.fa-plus.list-header-plus-top(title="{{_ 'add-card-to-top-of-list'}}")
a.js-collapse(title="{{_ 'collapse'}}")
i.fa.fa-arrow-right.list-header-collapse-right
i.fa.fa-arrow-left.list-header-collapse-left
a.fa.fa-navicon.js-open-list-menu(title="{{_ 'listActionPopup-title'}}")
if currentUser.isBoardAdmin
if isTouchScreenOrShowDesktopDragHandles
a.list-header-handle.handle.fa.fa-arrows.js-list-handle
template(name="editListTitleForm")
.list-composer
@ -166,8 +191,14 @@ template(name="setListWidthPopup")
label {{_ 'set-list-width-value'}}
p
input.list-width-value(type="number" value="{{ listWidthValue }}" min="100")
input.list-constraint-value(type="number" value="{{ listConstraintValue }}" min="100")
input.list-width-apply(type="submit" value="{{_ 'apply'}}")
input.list-width-error
br
a.js-auto-width-board(
title="{{#if isAutoWidth}}{{_ 'click-to-disable-auto-width'}}{{else}}{{_ 'click-to-enable-auto-width'}}{{/if}}")
i.fa(class="fa-solid fa-{{#if isAutoWidth}}compress{{else}}expand{{/if}}")
span {{_ 'auto-list-width'}}
template(name="listWidthErrorPopup")
.list-width-invalid

View file

@ -1,5 +1,6 @@
import { ReactiveCache } from '/imports/reactiveCache';
import { TAPi18n } from '/imports/i18n';
import dragscroll from '@wekanteam/dragscroll';
let listsColors;
Meteor.startup(() => {
@ -31,6 +32,17 @@ BlazeComponent.extendComponent({
return !status;
}
},
collapsed(check = undefined) {
const list = Template.currentData();
const status = list.isCollapsed();
if (check === undefined) {
// just check
return status;
} else {
list.collapse(!status);
return !status;
}
},
editTitle(event) {
event.preventDefault();
const newTitle = this.childComponents('inlinedForm')[0]
@ -104,6 +116,10 @@ BlazeComponent.extendComponent({
event.preventDefault();
this.starred(!this.starred());
},
'click .js-collapse'(event) {
event.preventDefault();
this.collapsed(!this.collapsed());
},
'click .js-open-list-menu': Popup.open('listAction'),
'click .js-add-card.list-header-plus-top'(event) {
const listDom = $(event.target).parents(
@ -140,7 +156,7 @@ Template.listActionPopup.helpers({
isWatching() {
return this.findWatcher(Meteor.userId());
},
}
});
Template.listActionPopup.events({
@ -332,14 +348,20 @@ BlazeComponent.extendComponent({
.val(),
10,
);
const constraint = parseInt(
Template.instance()
.$('.list-constraint-value')
.val(),
10,
);
// FIXME(mark-i-m): where do we put constants?
if (width < 100 || !width) {
if (width < 100 || !width || constraint < 100 || !constraint) {
Template.instance()
.$('.list-width-error')
.click();
} else {
Meteor.call('applyListWidth', board, list._id, width);
Meteor.call('applyListWidth', board, list._id, width, constraint);
Popup.back();
}
},
@ -347,12 +369,28 @@ BlazeComponent.extendComponent({
listWidthValue() {
const list = Template.currentData();
const board = list.boardId;
return Meteor.user().getListWidth(board, list._id);
return ReactiveCache.getCurrentUser().getListWidth(board, list._id);
},
listConstraintValue() {
const list = Template.currentData();
const board = list.boardId;
return ReactiveCache.getCurrentUser().getListConstraint(board, list._id);
},
isAutoWidth() {
const boardId = Utils.getCurrentBoardId();
const user = ReactiveCache.getCurrentUser();
return user && user.isAutoWidth(boardId);
},
events() {
return [
{
'click .js-auto-width-board'() {
dragscroll.reset();
ReactiveCache.getCurrentUser().toggleAutoWidth(Utils.getCurrentBoardId());
},
'click .list-width-apply': this.applyListWidth,
'click .list-width-error': Popup.open('listWidthError'),
},

View file

@ -0,0 +1,74 @@
.my-cards-board-wrapper {
border-radius: 0 0 4px 4px;
min-width: 400px;
margin-bottom: 2rem;
margin-right: auto;
margin-left: auto;
border-width: 2px;
border-style: solid;
border-color: #a2a2a2;
}
.my-cards-board-title {
font-size: 1.4rem;
font-weight: bold;
padding: 0.5rem;
background-color: #808080;
color: #fff;
}
.my-cards-swimlane-title {
font-size: 1.1rem;
font-weight: bold;
padding: 0.5rem;
padding-bottom: 0.4rem;
margin-top: 0;
margin-bottom: 0.5rem;
text-align: center;
}
.swimlane-default-color {
background-color: #d3d3d3;
}
.my-cards-list-title {
font-weight: bold;
font-size: 1.1rem;
text-align: center;
margin-bottom: 0.7rem;
}
.my-cards-list-wrapper {
margin: 1rem;
border-radius: 5px;
display: inline-grid;
min-width: 250px;
max-width: 350px;
}
.my-cards-card-wrapper {
margin-top: 0;
margin-bottom: 10px;
}
.my-cards-dueat-list-wrapper {
max-width: 500px;
margin-right: auto;
margin-left: auto;
}
.my-cards-board-table thead {
border-bottom: 3px solid #4d4d4d;
background-color: transparent;
}
.my-cards-board-table th,
.my-cards-board-table td {
border: 0;
}
.my-cards-board-table tr {
border-bottom: 2px solid #a2a2a2;
}
.my-cards-card-title-table {
font-weight: bold;
padding-left: 2px;
max-width: 243px;
}
.my-cards-board-badge {
width: 36px;
height: 24px;
float: left;
border-radius: 5px;
margin-right: 5px;
}

View file

@ -0,0 +1,8 @@
template(name="accessibilityHeaderBar")
if currentUser
h1
| {{_ 'accessibility-title'}}
template(name="accessibility")
if currentUser
| {{_ 'accessibility-content'}}

View file

@ -0,0 +1,11 @@
import { ReactiveCache } from '/imports/reactiveCache';
import { TAPi18n } from '/imports/i18n';
BlazeComponent.extendComponent({
onCreated() {
this.error = new ReactiveVar('');
this.loading = new ReactiveVar(false);
Meteor.subscribe('setting');
},
}).register('accessibility');

View file

@ -1,16 +1,16 @@
.new-comment a.fa.fa-brands.fa-markdown,
.inlined-form a.fa.fa-brands.fa-markdown {
float: right;
position: relative;
top: 20px;
right: 56px;
position: absolute;
top: -10px;
right: 60px;
}
.new-comment a.fa.fa-copy,
.inlined-form a.fa.fa-copy {
float: right;
position: relative;
top: 20px;
right: 6px;
top: -10px;
right: 5px;
}
.js-inlined-form.viewer.btn-sm {
position: absolute;

View file

@ -446,6 +446,12 @@ a:not(.disabled).is-active i.fa {
padding: 0;
padding-top: 15px;
}
.no-scrollbars {
scrollbar-width: none;
}
.no-scrollbars::-webkit-scrollbar {
display: none !important;
}
@media screen and (max-width: 800px) {
#content {
margin: 1px 0px 0px 0px;
@ -470,6 +476,7 @@ a:not(.disabled).is-active i.fa {
.select-authentication {
width: 100%;
}
.textBelowCustomLoginLogo,
.auth-layout {
display: flex;
flex-direction: column;

View file

@ -37,10 +37,13 @@ template(name="userFormsLayout")
else
img(src="{{pathFor '/wekan-logo.svg'}}" alt="" width="300" height="auto")
br
if currentSetting.textBelowCustomLoginLogo
+viewer
| {{currentSetting.textBelowCustomLoginLogo}}
br
if currentSetting.textBelowCustomLoginLogo
hr
section.textBelowCustomLoginLogo
+viewer
| {{currentSetting.textBelowCustomLoginLogo}}
hr
section.auth-layout
section.auth-dialog
if isLoading
+loader

View file

@ -58,18 +58,20 @@ template(name="rulesReport")
h1 {{_ 'rulesReportTitle'}}
if resultsCount
table
tr
th Rule Title
th Board Title
th actionType
th activityType
thead
tr
th Rule Title
th Board Title
th actionType
th activityType
each rule in results
tr
td {{ rule.title }}
td {{ rule.boardTitle }}
td {{ rule.action.actionType }}
td {{ rule.trigger.activityType }}
tbody
tr
td {{ rule.title }}
td {{ rule.boardTitle }}
td {{ rule.action.actionType }}
td {{ rule.trigger.activityType }}
else
div {{_ 'no-results' }}
@ -77,22 +79,24 @@ template(name="filesReport")
h1 {{_ 'filesReportTitle'}}
if resultsCount
table
tr
th Filename
th.right Size (kB)
th MIME Type
th Attachment ID
th Board ID
th Card ID
thead
tr
th Filename
th.right Size (kB)
th MIME Type
th Attachment ID
th Board ID
th Card ID
each att in results
tr
td {{ att.name }}
td.right {{ fileSize att.size }}
td {{ att.type }}
td {{ att._id }}
td {{ att.meta.boardId }}
td {{ att.meta.cardId }}
tbody
tr
td {{ att.name }}
td.right {{ fileSize att.size }}
td {{ att.type }}
td {{ att._id }}
td {{ att.meta.boardId }}
td {{ att.meta.cardId }}
else
div {{_ 'no-results' }}
@ -100,22 +104,24 @@ template(name="cardsReport")
h1 {{_ 'cardsReportTitle'}}
if resultsCount
table.table
tr
th Card Title
th Board
th Swimlane
th List
th Members
th Assignees
thead
tr
th Card Title
th Board
th Swimlane
th List
th Members
th Assignees
each card in results
tr
td {{abbreviate card.title }}
td {{abbreviate card.board.title }}
td {{abbreviate card.swimlane.title }}
td {{abbreviate card.list.title }}
td {{userNames card.members }}
td {{userNames card.assignees }}
tbody
tr
td {{abbreviate card.title }}
td {{abbreviate card.board.title }}
td {{abbreviate card.swimlane.title }}
td {{abbreviate card.list.title }}
td {{userNames card.members }}
td {{userNames card.assignees }}
else
div {{_ 'no-results' }}
@ -123,22 +129,25 @@ template(name="boardsReport")
h1 {{_ 'boardsReportTitle'}}
if resultsCount
table.table
tr
th Title
th Id
th Permission
th Archived?
th Members
th Organizations
th Teams
each board in results
thead
tr
td {{abbreviate board.title }}
td {{abbreviate board._id }}
td {{ board.permission }}
td
= yesOrNo(board.archived)
td {{userNames board.members }}
th Title
th Id
th Permission
th Archived?
th Members
th Organizations
th Teams
each board in results
tbody
tr
td {{abbreviate board.title }}
td {{abbreviate board._id }}
td {{ board.permission }}
td
= yesOrNo(board.archived)
td {{userNames board.members }}
td {{orgs board.orgs }}
td {{teams board.teams }}
else
div {{_ 'no-results' }}

View file

@ -170,8 +170,27 @@ class AdminReport extends BlazeComponent {
.join(", ");
return ret;
}
teams(memberTeams) {
const ret = (memberTeams || [])
.map(_memberTeam => {
const _ret = ReactiveCache.getTeam(_memberTeam.teamId)?.teamDisplayName || _memberTeam.teamId;
return _ret;
})
.join(", ");
return ret;
}
orgs(orgs) {
const ret = (orgs || [])
.map(_orgs => {
const _ret = ReactiveCache.getOrg(_orgs.orgId)?.orgDisplayName || _orgs.orgId;
return _ret;
})
.join(", ");
return ret;
}
}.register('boardsReport'));
(class extends AdminReport {
collection = Cards;

View file

@ -73,22 +73,25 @@ template(name="people")
template(name="orgGeneral")
table
tbody
thead
tr
th {{_ 'displayName'}}
th {{_ 'description'}}
th {{_ 'shortName'}}
th {{_ 'autoAddUsersWithDomainName'}}
th {{_ 'website'}}
th {{_ 'createdAt'}}
th {{_ 'active'}}
th
+newOrgRow
tbody
tr
each org in orgList
+orgRow(orgId=org._id)
template(name="teamGeneral")
table
tbody
thead
tr
th {{_ 'displayName'}}
th {{_ 'description'}}
@ -98,6 +101,8 @@ template(name="teamGeneral")
th {{_ 'active'}}
th
+newTeamRow
tbody
tr
each team in teamList
+teamRow(teamId=team._id)
@ -105,7 +110,7 @@ template(name="peopleGeneral")
#divAddOrRemoveTeamContainer
+modifyTeamsUsers
table
tbody
thead
tr
th
+selectAllUser
@ -123,6 +128,8 @@ template(name="peopleGeneral")
th {{_ 'teams'}}
th
+newUserRow
tbody
tr
each user in peopleList
+peopleRow(userId=user._id)
@ -159,6 +166,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 +318,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 +349,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 +419,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 +429,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 +450,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 +479,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
@ -483,9 +500,9 @@ template(name="modifyTeamsUsers")
| {{_ 'r-action'}}
.form-group.flex
input.wekan-form-control#addAction(type="radio" name="action" value="true" checked="checked")
span {{_ 'add'}}
label(for=addAction) {{_ 'add'}}
input.wekan-form-control#deleteAction(type="radio" name="action" value="false")
span {{_ 'delete'}}
label(for=deleteAction) {{_ 'delete'}}
div.buttonsContainer
input.primary.wide#addTeamBtn(type="submit" value="{{_ 'save'}}")
input.primary.wide#cancelBtn(type="submit" value="{{_ 'cancel'}}")

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,
);

View file

@ -7,11 +7,13 @@
display: -moz-flex;
display: -ms-flexbox;
display: flex;
height: 100%;
}
.setting-content {
color: #727479;
background: #dedede;
width: 100%;
height: 100%;
position: absolute;
}
.setting-content .content-title {
@ -56,6 +58,8 @@
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
max-height: 100%;
overflow: auto;
}
.setting-content .content-body .main-body ul li {
padding: 0.5rem 0.5rem;
@ -68,26 +72,31 @@
padding: 0 0.5rem;
}
.setting-content .content-body .main-body ul li .admin-announcement,
.setting-content .content-body .main-body ul li .admin-accessibility,
.setting-content .content-body .main-body ul li .invite-people,
.setting-content .content-body .main-body ul li .layout {
padding-left: 20px;
}
.setting-content .content-body .main-body ul li .admin-announcement li,
.setting-content .content-body .main-body ul li .admin-accessibility li,
.setting-content .content-body .main-body ul li .invite-people li,
.setting-content .content-body .main-body ul li .layout li {
min-width: 500px;
}
.setting-content .content-body .main-body ul li .admin-announcement li ul.no-margin-bottom,
.setting-content .content-body .main-body ul li .admin-accessibility li ul.no-margin-bottom,
.setting-content .content-body .main-body ul li .invite-people li ul.no-margin-bottom,
.setting-content .content-body .main-body ul li .layout li ul.no-margin-bottom {
margin-bottom: 0;
}
.setting-content .content-body .main-body ul li .admin-announcement li .bg-white a,
.setting-content .content-body .main-body ul li .admin-accessibility li .bg-white a,
.setting-content .content-body .main-body ul li .invite-people li .bg-white a,
.setting-content .content-body .main-body ul li .layout li .bg-white a {
background: #f7f7f7;
}
.setting-content .content-body .main-body ul li .admin-announcement li .bg-white a.is-checked,
.setting-content .content-body .main-body ul li .admin-accessibility li .bg-white a.is-checked,
.setting-content .content-body .main-body ul li .invite-people li .bg-white a.is-checked,
.setting-content .content-body .main-body ul li .layout li .bg-white a.is-checked {
background: #fff;

View file

@ -30,6 +30,10 @@ template(name="setting")
a.js-setting-menu(data-id="announcement-setting")
i.fa.fa-bullhorn
| {{_ 'admin-announcement'}}
//li
// a.js-setting-menu(data-id="accessibility-setting")
// i.fa.fa-universal-access
// | {{_ 'accessibility'}}
li
a.js-setting-menu(data-id="layout-setting")
i.fa.fa-object-group
@ -52,6 +56,8 @@ template(name="setting")
+tableVisibilityModeSettings
else if announcementSetting.get
+announcementSettings
else if accessibilitySetting.get
+accessibilitySettings
else if layoutSetting.get
+layoutSettings
else if webhookSetting.get
@ -137,34 +143,32 @@ template(name='tableVisibilityModeSettings')
.title {{_ 'tableVisibilityMode-allowPrivateOnly'}}
.form-group.flex
input.wekan-form-control#accounts-allowPrivateOnly(type="radio" name="allowPrivateOnly" value="true" checked="{{#if allowPrivateOnly}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#accounts-allowPrivateOnly(type="radio" name="allowPrivateOnly" value="false" checked="{{#unless allowPrivateOnly}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
button.js-tableVisibilityMode-save.primary {{_ 'save'}}
template(name='accountSettings')
ul#account-setting.setting-detail
li
button.js-all-hide-system-messages.primary {{_ 'hide-system-messages-of-all-users'}}
li.accounts-form
.title {{_ 'accounts-allowEmailChange'}}
.form-group.flex
input.wekan-form-control#accounts-allowEmailChange(type="radio" name="allowEmailChange" value="true" checked="{{#if allowEmailChange}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#accounts-allowEmailChange(type="radio" name="allowEmailChange" value="false" checked="{{#unless allowEmailChange}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
.title {{_ 'accounts-allowUserNameChange'}}
.form-group.flex
input.wekan-form-control#accounts-allowUserNameChange(type="radio" name="allowUserNameChange" value="true" checked="{{#if allowUserNameChange}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#accounts-allowUserNameChange(type="radio" name="allowUserNameChange" value="false" checked="{{#unless allowUserNameChange}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
.title {{_ 'accounts-allowUserDelete'}}
.form-group.flex
input.wekan-form-control#accounts-allowUserDelete(type="radio" name="allowUserDelete" value="true" checked="{{#if allowUserDelete}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#accounts-allowUserDelete(type="radio" name="allowUserDelete" value="false" checked="{{#unless allowUserDelete}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
button.js-accounts-save.primary {{_ 'save'}}
template(name='announcementSettings')
@ -183,8 +187,33 @@ template(name='announcementSettings')
li
button.js-announcement-save.primary {{_ 'save'}}
template(name='accessibilitySettings')
ul#accessibility-setting.setting-detail
li
a.flex.js-toggle-accessibility
.materialCheckBox(class="{{#if currentAccessibility.enabled}}is-checked{{/if}}")
span {{_ 'admin-accessibility-active'}}
li
.title {{_ 'accessibility-title'}}
.form-group
input.wekan-form-control#accessibility-title(type="text", placeholder="" value="{{currentSetting.accessibilityTitle}}")
li
.accessibility-content(class="{{#if currentAccessibility.enabled}}{{else}}hide{{/if}}")
ul
li
.title {{_ 'admin-accessibility-title'}}
textarea#admin-accessibility.wekan-form-control= currentAccessibility.accessibilityTitle
li
.title {{_ 'admin-accessibility-content'}}
textarea#admin-accessibility.wekan-form-control= currentAccessibility.accessibilityContent
li
button.js-accessibility-save.primary {{_ 'save'}}
template(name='layoutSettings')
ul#layout-setting.setting-detail
li
button.js-all-boards-hide-activities.primary {{_ 'hide-activities-of-all-boards'}}
li.layout-form
.title {{_ 'oidc-button-text'}}
.form-group
@ -201,9 +230,9 @@ template(name='layoutSettings')
.title {{_ 'display-authentication-method'}}
.form-group.flex
input.wekan-form-control#display-authentication-method(type="radio" name="displayAuthenticationMethod" value="true" checked="{{#if currentSetting.displayAuthenticationMethod}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#display-authentication-method(type="radio" name="displayAuthenticationMethod" value="false" checked="{{#unless currentSetting.displayAuthenticationMethod}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
li.layout-form
.title {{_ 'default-authentication-method'}}
+selectAuthenticationMethod(authenticationMethod=currentSetting.defaultAuthenticationMethod)
@ -218,9 +247,9 @@ template(name='layoutSettings')
.title {{_ 'hide-logo'}}
.form-group.flex
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="false" checked="{{#unless currentSetting.hideLogo}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
li.layout-form
.title {{_ 'custom-login-logo-image-url'}}
.form-group
@ -257,16 +286,16 @@ template(name='layoutSettings')
.title {{_ 'hide-card-counter-list'}}
.form-group.flex
input.wekan-form-control#hide-card-counter-list(type="radio" name="hideCardCounterList" value="true" checked="{{#if currentSetting.hideCardCounterList}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#hide-card-counter-list(type="radio" name="hideCardCounterList" value="false" checked="{{#unless currentSetting.hideCardCounterList}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
li.layout-form
.title {{_ 'hide-board-member-list'}}
.form-group.flex
input.wekan-form-control#hide-board-member-list(type="radio" name="hideBoardMemberList" value="true" checked="{{#if currentSetting.hideBoardMemberList}}checked{{/if}}")
span {{_ 'yes'}}
label {{_ 'yes'}}
input.wekan-form-control#hide-board-member-list(type="radio" name="hideBoardMemberList" value="false" checked="{{#unless currentSetting.hideBoardMemberList}}checked{{/unless}}")
span {{_ 'no'}}
label {{_ 'no'}}
li
button.js-save-layout.primary {{_ 'save'}}

View file

@ -89,6 +89,9 @@ BlazeComponent.extendComponent({
toggleHideBoardMemberList() {
$('#hide-board-member-list').toggleClass('is-checked');
},
toggleAccessibilityPageEnabled() {
$('#accessibility-page-enabled').toggleClass('is-checked');
},
toggleDisplayAuthenticationMethod() {
$('#display-authentication-method').toggleClass('is-checked');
},
@ -239,7 +242,15 @@ BlazeComponent.extendComponent({
const displayAuthenticationMethod =
$('input[name=displayAuthenticationMethod]:checked').val() === 'true';
const defaultAuthenticationMethod = $('#defaultAuthenticationMethod').val();
/*
const accessibilityPageEnabled = $('input[name=accessibilityPageEnabled]:checked').val() === 'true';
const accessibilityTitle = $('#accessibility-title')
.val()
.trim();
const accessibilityContent = $('#accessibility-content')
.val()
.trim();
*/
const spinnerName = $('#spinnerName').val();
try {
@ -265,6 +276,11 @@ BlazeComponent.extendComponent({
legalNotice,
},
});
/*
accessibilityPageEnabled,
accessibilityTitle,
accessibilityContent,
*/
} catch (e) {
return;
} finally {
@ -301,6 +317,7 @@ BlazeComponent.extendComponent({
'click a.js-toggle-hide-logo': this.toggleHideLogo,
'click a.js-toggle-hide-card-counter-list': this.toggleHideCardCounterList,
'click a.js-toggle-hide-board-member-list': this.toggleHideBoardMemberList,
'click a.js-toggle-accessibility-page-enabled': this.toggleAccessibilityPageEnabled,
'click button.js-save-layout': this.saveLayout,
'click a.js-toggle-display-authentication-method': this
.toggleDisplayAuthenticationMethod,
@ -336,12 +353,12 @@ BlazeComponent.extendComponent({
allowUserDelete() {
return AccountSettings.findOne('accounts-allowUserDelete').booleanValue;
},
allHideSystemMessages() {
Meteor.call('setAllUsersHideSystemMessages', (err, ret) => {
allBoardsHideActivities() {
Meteor.call('setAllBoardsHideActivities', (err, ret) => {
if (!err && ret) {
if (ret === true) {
const message = `${TAPi18n.__(
'now-system-messages-of-all-users-are-hidden',
'now-activities-of-all-boards-are-hidden',
)}`;
alert(message);
}
@ -359,7 +376,7 @@ BlazeComponent.extendComponent({
'click button.js-accounts-save': this.saveAccountsChange,
},
{
'click button.js-all-hide-system-messages': this.allHideSystemMessages,
'click button.js-all-boards-hide-activities': this.allBoardsHideActivities,
},
];
},
@ -376,12 +393,12 @@ BlazeComponent.extendComponent({
allowPrivateOnly() {
return TableVisibilityModeSettings.findOne('tableVisibilityMode-allowPrivateOnly').booleanValue;
},
allHideSystemMessages() {
Meteor.call('setAllUsersHideSystemMessages', (err, ret) => {
allBoardsHideActivities() {
Meteor.call('setAllBoardsHideActivities', (err, ret) => {
if (!err && ret) {
if (ret === true) {
const message = `${TAPi18n.__(
'now-system-messages-of-all-users-are-hidden',
'now-activities-of-all-boards-are-hidden',
)}`;
alert(message);
}
@ -399,7 +416,7 @@ BlazeComponent.extendComponent({
'click button.js-tableVisibilityMode-save': this.saveTableVisibilityChange,
},
{
'click button.js-all-hide-system-messages': this.allHideSystemMessages,
'click button.js-all-boards-hide-activities': this.allBoardsHideActivities,
},
];
},

View file

@ -34,13 +34,14 @@ template(name="translation")
template(name="translationGeneral")
table
tbody
thead
tr
th {{_ 'language'}}
th {{_ 'text'}}
th {{_ 'translation-text'}}
th
+newTranslationRow
tbody
each translation in translationList
+translationRow(translationId=translation._id)

View file

@ -3,34 +3,31 @@
top: 0;
bottom: 0;
right: 0;
overflow-y: scroll;
}
.sidebar .sidebar-shadow {
position: absolute;
top: 0;
bottom: 0;
right: 0;
left: 0;
.sidebar {
background: #f7f7f7;
box-shadow: -10px 0px 5px -10px #b3b3b3;
z-index: 10;
}
.sidebar-xmark {
position: absolute;
right: 10px;
top: 5px;
right: 0px;
top: 0px;
font-size: 25px;
padding: 10px;
}
.sidebar-xmark:hover {
background: rgba(0,0,0,0.15);
}
.sidebar-actions {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 10px 10px 0px 10px;
}
.sidebar .sidebar-content {
padding: 12px;
margin-bottom: 1.6em;
position: absolute;
top: 0;
bottom: 0;
right: 0;
left: 0;
overflow-x: hidden;
overflow-y: auto;
width: 90%;
padding: 0 12px;
}
.sidebar .sidebar-content .hide-btn {
display: none;
@ -106,21 +103,23 @@
margin-right: 10px;
}
.sidebar .sidebar-shortcuts {
position: absolute;
margin-left: 40%;
padding: 0;
top: 7px;
font-size: 0.8em;
font-size: 1em;
line-height: 1.6em;
color: #999;
}
.sidebar .sidebar-shortcuts .sidebar-btn {
margin-left: 3px;
margin-right: 3px;
}
.board-sidebar {
width: 548px;
right: -548px;
display: none;
width: 30vw;
z-index: 100;
transition: top 0.1s, right 0.1s, width 0.1s;
}
.board-sidebar.is-open {
right: 0;
display: block;
}
.board-widget h4 {
margin: 5px 0;
@ -178,7 +177,7 @@
@media screen and (max-width: 800px) {
.board-sidebar {
width: 100%;
right: -100%;
left: 0;
}
.board-sidebar .sidebar-content .hide-btn {
width: 40px;

View file

@ -1,36 +1,61 @@
template(name="sidebar")
.board-sidebar.sidebar(class="{{#if isOpen}}is-open{{/if}}")
.board-sidebar.sidebar(class="{{#if isOpen}}is-open{{/if}} {{#unless isVerticalScrollbars}}no-scrollbars{{/unless}}")
//a.sidebar-tongue.js-toggle-sidebar(
// class="{{#if isTongueHidden}}is-hidden{{/if}}",
// title="{{showTongueTitle}}")
// i.fa.fa-navicon
.sidebar-shadow
.sidebar-actions
.sidebar-shortcuts
a.sidebar-btn.js-shortcuts(title="{{_ 'keyboard-shortcuts' }}")
i.fa.fa-keyboard-o
span {{_ 'keyboard-shortcuts' }}
a.sidebar-btn.js-keyboard-shortcuts-toggle(
title="{{#if isKeyboardShortcuts}}{{_ 'keyboard-shortcuts-enabled'}}{{else}}{{_ 'keyboard-shortcuts-disabled'}}{{/if}}")
i.fa(class="fa-solid fa-{{#if isKeyboardShortcuts}}check-square-o{{else}}ban{{/if}}")
a.sidebar-xmark.js-close-sidebar &#10005;
.sidebar-content.js-board-sidebar-content
//a.hide-btn.js-hide-sidebar
// i.fa.fa-navicon
unless isDefaultView
h2
a.fa.fa-chevron-left.js-back-home
= getViewTitle
if isOpen
+Template.dynamic(template=getViewTemplate)
.sidebar-content.js-board-sidebar-content
//a.hide-btn.js-hide-sidebar
// i.fa.fa-navicon
unless isDefaultView
h2
a.fa.fa-chevron-left.js-back-home
= getViewTitle
if isOpen
+Template.dynamic(template=getViewTemplate)
template(name='homeSidebar')
hr
+membersWidget
hr
+labelsWidget
hr
ul#cards.label-text-hidden
a.flex.js-toggle-minicard-label-text(title="{{_ 'hide-minicard-label-text'}}")
span {{_ 'hide-minicard-label-text'}}
b &nbsp;
.materialCheckBox(class="{{#if hiddenMinicardLabelText}}is-checked{{/if}}")
ul#cards.vertical-scrollbars-toggle
a.flex.js-vertical-scrollbars-toggle(title="{{_ 'enable-vertical-scrollbars'}}")
span {{_ 'enable-vertical-scrollbars'}}
b &nbsp;
.materialCheckBox(class="{{#if isVerticalScrollbars}}is-checked{{/if}}")
ul#cards.show-week-of-year-toggle
a.flex.js-show-week-of-year-toggle(title="{{_ 'show-week-of-year'}}")
span {{_ 'show-week-of-year'}}
b &nbsp;
.materialCheckBox(class="{{#if isShowWeekOfYear}}is-checked{{/if}}")
hr
unless currentUser.isNoComments
h3
h3.activity-title
i.fa.fa-comments-o
| {{_ 'activities'}}
.material-toggle-switch(title="{{_ 'show-activities'}}")
if showActivities
input.toggle-switch(type="checkbox" id="toggleShowActivitiesBoard" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleShowActivitiesBoard")
label.toggle-label(for="toggleShowActivitiesBoard")
+activities(mode="board")
template(name="membersWidget")
@ -40,11 +65,6 @@ template(name="membersWidget")
a.board-header-btn.js-open-board-menu(title="{{_ 'boardMenuPopup-title'}}")
i.board-header-btn-icon.fa.fa-cog
| {{_ 'boardMenuPopup-title'}}
.board-widget.board-widget-members
.sidebar-shortcuts
a.board-header-btn.js-shortcuts(title="{{_ 'keyboard-shortcuts' }}")
i.fa.fa-keyboard-o
span {{_ 'keyboard-shortcuts' }}
hr
h3
i.fa.fa-users
@ -175,7 +195,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 +226,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 +262,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 +301,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 +325,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 +351,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 +493,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

View file

@ -105,6 +105,16 @@ BlazeComponent.extendComponent({
else return `${TAPi18n.__('sidebar-open')}`;
},
isKeyboardShortcuts() {
const user = ReactiveCache.getCurrentUser();
return user && user.isKeyboardShortcuts();
},
isVerticalScrollbars() {
const user = ReactiveCache.getCurrentUser();
return user && user.isVerticalScrollbars();
},
events() {
return [
{
@ -126,6 +136,15 @@ BlazeComponent.extendComponent({
'click .js-shortcuts'() {
FlowRouter.go('shortcuts');
},
'click .js-keyboard-shortcuts-toggle'() {
ReactiveCache.getCurrentUser().toggleKeyboardShortcuts();
},
'click .js-vertical-scrollbars-toggle'() {
ReactiveCache.getCurrentUser().toggleVerticalScrollbars();
},
'click .js-show-week-of-year-toggle'() {
ReactiveCache.getCurrentUser().toggleShowWeekOfYear();
},
'click .js-close-sidebar'() {
Sidebar.toggle()
},
@ -136,7 +155,7 @@ BlazeComponent.extendComponent({
Blaze.registerHelper('Sidebar', () => Sidebar);
Template.homeSidebar.helpers({
BlazeComponent.extendComponent({
hiddenMinicardLabelText() {
currentUser = ReactiveCache.getCurrentUser();
if (currentUser) {
@ -147,7 +166,28 @@ Template.homeSidebar.helpers({
return false;
}
},
});
isVerticalScrollbars() {
const user = ReactiveCache.getCurrentUser();
return user && user.isVerticalScrollbars();
},
isShowWeekOfYear() {
const user = ReactiveCache.getCurrentUser();
return user && user.isShowWeekOfYear();
},
showActivities() {
let ret = Utils.getCurrentBoard().showActivities ?? false;
return ret;
},
events() {
return [
{
'click #toggleShowActivitiesBoard'() {
Utils.getCurrentBoard().toggleShowActivities();
},
},
];
},
}).register('homeSidebar');
Template.boardInfoOnMyBoardsPopup.helpers({
hideCardCounterList() {
@ -236,7 +276,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'),
});
@ -914,11 +953,11 @@ BlazeComponent.extendComponent({
},
allowsCreator() {
return (
this.currentBoard.allowsCreator === null ||
this.currentBoard.allowsCreator === undefined ||
this.currentBoard.allowsCreator
);
return this.currentBoard.allowsCreator ?? false;
},
allowsCreatorOnMinicard() {
return this.currentBoard.allowsCreatorOnMinicard ?? false;
},
allowsMembers() {
@ -984,6 +1023,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 +1161,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 +1309,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 +1402,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 +1453,7 @@ BlazeComponent.extendComponent({
},
];
},
}).register('boardMinicardSettingsPopup');
}).register('boardCardSettingsPopup');
BlazeComponent.extendComponent({
onCreated() {

View file

@ -24,9 +24,17 @@ template(name="swimlaneFixedHeader")
| {{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-plus.js-open-add-swimlane-menu.swimlane-header-plus-icon(title="{{_ 'add-swimlane'}}")
a.fa.fa-navicon.js-open-swimlane-menu(title="{{_ 'swimlaneActionPopup-title'}}")
//// TODO: Collapse Swimlane: make button working, etc.
//unless collapsed
// a.js-collapse-swimlane(title="{{_ 'collapse'}}")
// i.fa.fa-arrow-down.swimlane-header-collapse-down
// i.fa.fa-arrow-up.swimlane-header-collapse-up
//if collapsed
// a.js-collapse-swimlane(title="{{_ 'uncollapse'}}")
// i.fa.fa-arrow-up.swimlane-header-collapse-up
// i.fa.fa-arrow-down.swimlane-header-collapse-down
unless isTouchScreen
if isShowDesktopDragHandles
a.swimlane-header-handle.handle.fa.fa-arrows.js-swimlane-header-handle

View file

@ -18,10 +18,25 @@ BlazeComponent.extendComponent({
swimlane.rename(newTitle.trim());
}
},
collapsed(check = undefined) {
const swimlane = Template.currentData();
const status = swimlane.isCollapsed();
if (check === undefined) {
// just check
return status;
} else {
swimlane.collapse(!status);
return !status;
}
},
events() {
return [
{
'click .js-collapse-swimlane'(event) {
event.preventDefault();
this.collapsed(!this.collapsed());
},
'click .js-open-swimlane-menu': Popup.open('swimlaneAction'),
'click .js-open-add-swimlane-menu': Popup.open('swimlaneAdd'),
submit: this.editTitle,
@ -128,7 +143,7 @@ BlazeComponent.extendComponent({
Swimlanes.insert({
title,
boardId: Session.get('currentBoard'),
sort: sortValue.base,
sort: sortValue.base || 0,
type: swimlaneType,
});
@ -209,7 +224,7 @@ BlazeComponent.extendComponent({
swimlaneHeightValue() {
const swimlane = this.currentData();
const board = swimlane.boardId;
return Meteor.user().getSwimlaneHeight(board, swimlane._id);
return ReactiveCache.getCurrentUser().getSwimlaneHeight(board, swimlane._id);
},
events() {

View file

@ -1,43 +1,3 @@
/*
// Minimize swimlanes start https://www.w3schools.com/howto/howto_js_accordion.asp
.accordion
cursor: pointer
width: 30px
height: 20px
border: none
outline: none
font-size: 18px
transition: 0.4s
padding-top: 0px
margin-top: 0px
.accordion:after
// Unicode triagle right:
content: '\25B6'
color: #777
font-weight: bold
float: left
.active:after
// Unicode triangle down:
content: '\25BC'
.panel
width: 100%
max-height: 0
overflow: hidden
transition: max-height 0.2s ease-out
margin: 0px
padding: 0px
// Minimize swimlanes end https://www.w3schools.com/howto/howto_js_accordion.asp
*/
@media screen and (min-width: 801px) {
.swimlane.ui-sortable {
width: max-content;
}
}
[class=swimlane] {
position: sticky;
left: 0;
@ -46,7 +6,30 @@
background: #dedede;
display: flex;
flex-direction: row;
overflow: 0;
overflow: auto;
max-height: 100%;
}
.swimlane-header-menu .swimlane-header-collapse-down {
font-size: 50%;
color: #a6a6a6;
position: absolute;
top: 5px;
left: 100px;
}
.swimlane-header-menu .swimlane-header-collapse-up {
font-size: 50%;
color: #a6a6a6;
position: absolute;
bottom: 5px;
left: 100px;
}
.swimlane-header-menu .swimlane-header-uncollapse-up {
font-size: 50%;
color: #a6a6a6;
}
.swimlane-header-menu .swimlane-header-uncollapse-down {
font-size: 50%;
color: #a6a6a6;
}
.swimlane.placeholder {
background-color: rgba(0,0,0,0.2);
@ -170,7 +153,7 @@
color: #4d4d4d !important;
}
.swimlane-silver {
background: unset !important;
background: #ccc !important;
color: #4d4d4d !important;
}
.swimlane-peachpuff {

View file

@ -1,8 +1,8 @@
template(name="swimlane")
.swimlane
.swimlane.nodragscroll
+swimlaneHeader
unless collapseSwimlane
.swimlane.js-lists.js-swimlane(id="swimlane-{{_id}}"
.swimlane.js-lists.js-swimlane.dragscroll(id="swimlane-{{_id}}"
style="height:{{swimlaneHeight}};")
if isMiniScreen
if currentListIsInThisSwimlane _id
@ -24,7 +24,7 @@ template(name="swimlane")
+cardDetails(currentCard)
template(name="listsGroup")
.swimlane.list-group.js-lists
.swimlane.list-group.js-lists.dragscroll
if isMiniScreen
if currentList
+list(currentList)
@ -46,8 +46,8 @@ template(name="listsGroup")
template(name="addListForm")
unless currentUser.isWorker
.list.list-composer.js-list-composer(class="{{#if isMiniScreen}}mini-list{{/if}}")
if currentUser.isBoardAdmin
unless currentUser.isCommentOnly
.list.list-composer.js-list-composer(class="{{#if isMiniScreen}}mini-list{{/if}}")
.list-header-add
+inlinedForm(autoclose=false)
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"

View file

@ -225,7 +225,7 @@ BlazeComponent.extendComponent({
},
swimlaneHeight() {
const user = Meteor.user();
const user = ReactiveCache.getCurrentUser();
const swimlane = Template.currentData();
const height = user.getSwimlaneHeight(swimlane.boardId, swimlane._id);
return height == -1 ? "auto" : (height + "px");
@ -288,7 +288,7 @@ BlazeComponent.extendComponent({
Template.swimlane.helpers({
canSeeAddList() {
return Meteor.user().isBoardAdmin();
return ReactiveCache.getCurrentUser().isBoardAdmin();
},
});

View file

@ -5,6 +5,7 @@
float: left;
height: 30px;
width: 30px;
margin: .3vh;
cursor: pointer;
user-select: none;
z-index: 1;

View file

@ -26,9 +26,9 @@ template(name="orgAvatar")
template(name="boardOrgRow")
tr
if orgData.orgIsActive
td <s>{{ orgData.orgDisplayName }}</s>
else
td {{ orgData.orgDisplayName }}
else
td <s>{{ orgData.orgDisplayName }}</s>
td
if currentUser.isBoardAdmin
a.member.orgOrTeamMember.add-member.js-manage-board-removeOrg(title="{{_ 'remove-from-board'}}")
@ -39,9 +39,9 @@ template(name="boardOrgRow")
template(name="boardTeamRow")
tr
if teamData.teamIsActive
td <s>{{ teamData.teamDisplayName }}</s>
else
td {{ teamData.teamDisplayName }}
else
td <s>{{ teamData.teamDisplayName }}</s>
td
if currentUser.isBoardAdmin
a.member.orgOrTeamMember.add-member.js-manage-board-removeTeam(title="{{_ 'remove-from-board'}}")

View file

@ -77,6 +77,10 @@ template(name="memberMenuPopup")
a.js-change-language
i.fa.fa-flag
| {{_ 'changeLanguagePopup-title'}}
//li
// a.js-support
// i.fa.fa-question-circle
// | {{_ 'support'}}
unless isSandstorm
hr
ul.pop-over-list
@ -139,6 +143,12 @@ template(name="editProfilePopup")
div
input#deleteButton.primary.wide(type="button" value="{{_ 'delete'}}")
template(name="supportPopup")
ul.pop-over-list
li
| Support popup text will be editable later.
template(name="changePasswordPopup")
+atForm(state='changePwd')
@ -153,12 +163,6 @@ template(name="changeLanguagePopup")
template(name="changeSettingsPopup")
ul.pop-over-list
//li
// a.js-toggle-system-messages
// i.fa.fa-comments-o
// | {{_ 'hide-system-messages'}}
// if hiddenSystemMessages
// i.fa.fa-check
//li
// a.js-toggle-desktop-drag-handles
// i.fa.fa-arrows

View file

@ -77,6 +77,7 @@ Template.memberMenuPopup.events({
'click .js-change-avatar': Popup.open('changeAvatar'),
'click .js-change-password': Popup.open('changePassword'),
'click .js-change-language': Popup.open('changeLanguage'),
'click .js-support': Popup.open('support'),
'click .js-logout'(event) {
event.preventDefault();
@ -283,16 +284,6 @@ Template.changeLanguagePopup.events({
});
Template.changeSettingsPopup.helpers({
hiddenSystemMessages() {
const currentUser = ReactiveCache.getCurrentUser();
if (currentUser) {
return (currentUser.profile || {}).hasHiddenSystemMessages;
} else if (window.localStorage.getItem('hasHiddenSystemMessages')) {
return true;
} else {
return false;
}
},
rescueCardDescription() {
const currentUser = ReactiveCache.getCurrentUser();
if (currentUser) {
@ -325,7 +316,7 @@ Template.changeSettingsPopup.helpers({
});
},
startDayOfWeek() {
currentUser = Meteor.user();
currentUser = ReactiveCache.getCurrentUser();
if (currentUser) {
return currentUser.getStartDayOfWeek();
} else {
@ -343,7 +334,7 @@ Template.changeSettingsPopup.events({
return ret;
},
'click .js-toggle-desktop-drag-handles'() {
currentUser = Meteor.user();
const currentUser = ReactiveCache.getCurrentUser();
if (currentUser) {
Meteor.call('toggleDesktopDragHandles');
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
@ -352,16 +343,6 @@ Template.changeSettingsPopup.events({
window.localStorage.setItem('showDesktopDragHandles', 'true');
}
},
'click .js-toggle-system-messages'() {
currentUser = Meteor.user();
if (currentUser) {
Meteor.call('toggleSystemMessages');
} else if (window.localStorage.getItem('hasHiddenSystemMessages')) {
window.localStorage.removeItem('hasHiddenSystemMessages');
} else {
window.localStorage.setItem('hasHiddenSystemMessages', 'true');
}
},
'click .js-rescue-card-description'() {
Meteor.call('toggleRescueCardDescription')
},
@ -375,7 +356,7 @@ Template.changeSettingsPopup.events({
templateInstance.$('#start-day-of-week').val(),
10,
);
const currentUser = Meteor.user();
const currentUser = ReactiveCache.getCurrentUser();
if (isNaN(minLimit) || minLimit < -1) {
minLimit = -1;
}

View file

@ -47,7 +47,7 @@ Blaze.registerHelper('isTouchScreenOrShowDesktopDragHandles', () =>
Blaze.registerHelper('moment', (...args) => {
args.pop(); // hash
const [date, format] = args;
return moment(date).format(format);
return moment(date).format(format ?? 'LLLL');
});
Blaze.registerHelper('canModifyCard', () =>

View file

@ -6,10 +6,11 @@ import moment from 'moment/min/moment-with-locales';
function adjustedTimeFormat() {
return moment
.localeData()
.longDateFormat('LT')
.replace(/HH/i, 'H');
.longDateFormat('LT');
}
// .replace(/HH/i, 'H');
export class DatePicker extends BlazeComponent {
template() {
return 'datepicker';

View file

@ -123,6 +123,7 @@ EscapeActions = {
// the shortcut sould work on textarea and inputs as well.
Mousetrap.bindGlobal('esc', () => {
EscapeActions.executeLowest();
Sidebar.hide();
});
// On a left click on the document, we try to exectute one escape action (eg,

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);

View file

@ -237,7 +237,6 @@ class SetFilter {
if (this._indexOfVal(val) === -1) {
this._selectedElements.push(val);
this._dep.changed();
showFilterSidebar();
}
}

View file

@ -3,6 +3,46 @@ import { ReactiveCache } from '/imports/reactiveCache';
// XXX There is no reason to define these shortcuts globally, they should be
// attached to a template (most of them will go in the `board` template).
window.addEventListener('keydown', (e) => {
// Only handle event if coming from body
if (e.target !== document.body) return;
// Only handle event if it's in another language
if (String.fromCharCode(e.which).toLowerCase() === e.key) return;
// Trigger the corresponding action
Mousetrap.handleKey(String.fromCharCode(e.which).toLowerCase(), [], {type: "keypress"});
});
// Overwrite the stopCallback to allow for more keyboard shortcut customizations
Mousetrap.stopCallback = (event, element) => {
// Are shortcuts enabled for the user?
if (ReactiveCache.getCurrentUser() && !ReactiveCache.getCurrentUser().isKeyboardShortcuts())
return true;
// Always handle escape
if (event.keyCode === 27)
return false;
// Make sure there are no selected characters
if (window.getSelection().type === "Range")
return true;
// Decide what the current element is
const currentElement = event.target || document.activeElement;
// If the current element is editable, we don't want to trigger an event
if (currentElement.isContentEditable)
return true;
// Make sure we are not in an input element
if (currentElement instanceof HTMLInputElement || currentElement instanceof HTMLSelectElement || currentElement instanceof HTMLTextAreaElement)
return true;
// We can trigger events!
return false;
}
function getHoveredCardId() {
const card = $('.js-minicard:hover').get(0);
if (!card) return null;
@ -33,6 +73,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();
@ -85,7 +133,7 @@ Mousetrap.bind(numbArray, (evt, key) => {
const cardIds = MultiSelection.getSelectedCardIds();
for (const cardId of cardIds)
{
card = ReactiveCache.getCard(cardId);
card = Cards.findOne(cardId);
if(num <= board.labels.length)
{
card.removeLabel(labels[num-1]["_id"]);
@ -109,7 +157,7 @@ Mousetrap.bind(numArray, (evt, key) => {
const cardIds = MultiSelection.getSelectedCardIds();
for (const cardId of cardIds)
{
card = ReactiveCache.getCard(cardId);
card = Cards.findOne(cardId);
if(num <= board.labels.length)
{
card.addLabel(labels[num-1]["_id"]);
@ -123,7 +171,7 @@ Mousetrap.bind(numArray, (evt, key) => {
return;
}
if (ReactiveCache.getCurrentUser().isBoardMember()) {
const card = ReactiveCache.getCard(cardId);
const card = Cards.findOne(cardId);
if(num <= board.labels.length)
{
card.toggleLabel(labels[num-1]["_id"]);
@ -131,6 +179,57 @@ Mousetrap.bind(numArray, (evt, key) => {
}
});
Mousetrap.bind(_.range(1, 10).map(x => `ctrl+alt+${x}`), (evt, key) => {
// Make sure the current user is defined
if (!ReactiveCache.getCurrentUser())
return;
// Make sure the current user is a board member
if (!ReactiveCache.getCurrentUser().isBoardMember())
return;
const memberIndex = parseInt(key.split("+").pop()) - 1;
const currentBoard = Utils.getCurrentBoard();
const validBoardMembers = currentBoard.memberUsers().filter(member => member.isBoardMember());
if (memberIndex >= validBoardMembers.length)
return;
const memberId = validBoardMembers[memberIndex]._id;
if (MultiSelection.isActive()) {
for (const cardId of MultiSelection.getSelectedCardIds())
Cards.findOne(cardId).toggleAssignee(memberId);
} else {
const cardId = getSelectedCardId();
if (!cardId)
return;
Cards.findOne(cardId).toggleAssignee(memberId);
}
});
Mousetrap.bind('m', evt => {
const cardId = getSelectedCardId();
if (!cardId) {
return;
}
const currentUserId = Meteor.userId();
if (currentUserId === null) {
return;
}
if (ReactiveCache.getCurrentUser().isBoardMember()) {
const card = Cards.findOne(cardId);
card.toggleAssignee(currentUserId);
// We should prevent scrolling in card when spacebar is clicked
// This should do it according to Mousetrap docs, but it doesn't
evt.preventDefault();
}
});
Mousetrap.bind('space', evt => {
const cardId = getSelectedCardId();
if (!cardId) {
@ -143,7 +242,7 @@ Mousetrap.bind('space', evt => {
}
if (ReactiveCache.getCurrentUser().isBoardMember()) {
const card = ReactiveCache.getCard(cardId);
const card = Cards.findOne(cardId);
card.toggleMember(currentUserId);
// We should prevent scrolling in card when spacebar is clicked
// This should do it according to Mousetrap docs, but it doesn't
@ -151,7 +250,7 @@ Mousetrap.bind('space', evt => {
}
});
Mousetrap.bind('c', evt => {
const archiveCard = evt => {
const cardId = getSelectedCardId();
if (!cardId) {
return;
@ -163,8 +262,40 @@ Mousetrap.bind('c', evt => {
}
if (Utils.canModifyBoard()) {
const card = ReactiveCache.getCard(cardId);
const card = Cards.findOne(cardId);
card.archive();
// We should prevent scrolling in card when spacebar is clicked
// This should do it according to Mousetrap docs, but it doesn't
evt.preventDefault();
}
};
// Archive card has multiple shortcuts
Mousetrap.bind('c', archiveCard);
Mousetrap.bind('-', archiveCard);
// Same as above, this time for Persian keyboard.
// https://github.com/wekan/wekan/pull/5589#issuecomment-2516776519
Mousetrap.bind('÷', archiveCard);
Mousetrap.bind('n', evt => {
const cardId = getSelectedCardId();
if (!cardId) {
return;
}
const currentUserId = Meteor.userId();
if (currentUserId === null) {
return;
}
if (Utils.canModifyBoard()) {
// Find the current hovered card
const card = Cards.findOne(cardId);
// Find the button and click it
$(`#js-list-${card.listId} .list-body .minicards .open-minicard-composer`).click();
// We should prevent scrolling in card when spacebar is clicked
// This should do it according to Mousetrap docs, but it doesn't
evt.preventDefault();
@ -181,6 +312,14 @@ Template.keyboardShortcuts.helpers({
keys: ['q'],
action: 'shortcut-filter-my-cards',
},
{
keys: ['a'],
action: 'shortcut-filter-my-assigned-cards',
},
{
keys: ['n'],
action: 'add-card-to-bottom-of-list',
},
{
keys: ['f'],
action: 'shortcut-toggle-filterbar',
@ -207,10 +346,14 @@ Template.keyboardShortcuts.helpers({
},
{
keys: ['SPACE'],
action: 'shortcut-add-self',
},
{
keys: ['m'],
action: 'shortcut-assign-self',
},
{
keys: ['c'],
keys: ['c', '÷', '-'],
action: 'archive-card',
},
{
@ -221,5 +364,9 @@ Template.keyboardShortcuts.helpers({
keys: ['shift + number keys 1-9'],
action: 'remove-labels-multiselect'
},
{
keys: ['ctrl + alt + number keys 1-9'],
action: 'toggle-assignees'
},
],
});

View file

@ -4,10 +4,11 @@ Utils = {
setBackgroundImage(url) {
const currentBoard = Utils.getCurrentBoard();
if (currentBoard.backgroundImageURL !== undefined) {
$(".board-wrapper,.board-wrapper .board-canvas").css({"background":"url(" + currentBoard.backgroundImageURL + ")","background-size":"cover"});
$(".board-wrapper").css({"background":"url(" + currentBoard.backgroundImageURL + ")","background-size":"cover"});
$(".swimlane,.swimlane .list,.swimlane .list .list-body,.swimlane .list:first-child .list-body").css({"background-color":"transparent"});
} else if (currentBoard.color !== undefined) {
currentBoard.setColor(currentBoard.color);
$(".minicard").css({"opacity": "0.9"});
} else if (currentBoard["background-color"]) {
currentBoard.setColor(currentBoard["background-color"]);
}
},
/** returns the current board id

View file

@ -16,6 +16,8 @@ export const ALLOWED_BOARD_COLORS = [
'modern',
'moderndark',
'exodark',
'cleandark',
'cleanlight',
];
export const ALLOWED_COLORS = [
'white',

View file

@ -55,6 +55,30 @@ FlowRouter.route('/public', {
},
});
FlowRouter.route('/accessibility', {
name: 'accessibility',
triggersEnter: [AccountsTemplates.ensureSignedIn],
action() {
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();
Utils.manageCustomUI();
Utils.manageMatomo();
BlazeLayout.render('defaultLayout', {
headerBar: 'accessibilityHeaderBar',
content: 'accessibility',
});
},
});
FlowRouter.route('/b/:id/:slug', {
name: 'board',
action(params) {

View file

@ -1,5 +1,3 @@
version: '2'
# Note: Do not add single quotes '' to variables. Having spaces still works without quotes where required.
#---------------------------------------------------------------------------------------------------------
# ==== CREATING USERS AND LOGGING IN TO WEKAN ====
@ -12,13 +10,13 @@ version: '2'
# 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
# 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
# docker compose up -d
#----------------------------------------------------------------------------------
# ==== OPTIONAL: DEDICATED DOCKER USER ====
# 1) Optionally create a dedicated user for Wekan, for example:
@ -38,14 +36,14 @@ version: '2'
# ----------------------------------------------------------------------------------
# ==== USAGE OF THIS docker-compose.yml ====
# 1) For seeing does Wekan work, try this and check with your web browser:
# docker-compose up
# docker compose up
# 2) Stop Wekan and start Wekan in background:
# docker-compose stop
# docker-compose up -d
# docker compose stop
# docker compose up -d
# 3) See running Docker containers:
# docker ps
# 4) Stop Docker containers:
# docker-compose stop
# docker compose stop
# ----------------------------------------------------------------------------------
# ===== INSIDE DOCKER CONTAINERS, AND BACKUP/RESTORE ====
# https://github.com/wekan/wekan/wiki/Backup
@ -142,7 +140,7 @@ services:
- wekan-tier
#-------------------------------------------------------------------------------------
# ==== BUILD wekan-app DOCKER CONTAINER FROM SOURCE, if you uncomment these ====
# ==== and use commands: docker-compose up -d --build
# ==== and use commands: docker compose up -d --build
#build:
# context: .
# dockerfile: Dockerfile
@ -368,7 +366,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
@ -391,6 +389,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:
@ -442,11 +442,15 @@ services:
# 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_SERVER_URL=<Keycloak server url - https://keycloak.example.com>
#- 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_ID_MAP=sub
#- OAUTH2_USERNAME_MAP=preferred_username
#- OAUTH2_EMAIL_MAP=email
#- OAUTH2_FULLNAME_MAP=name
#-----------------------------------------------------------------
# ==== OAUTH2 DOORKEEPER ====
# https://github.com/wekan/wekan/issues/1874
@ -573,10 +577,14 @@ services:
# If the sync of the users should be done in the background
#- LDAP_BACKGROUND_SYNC=false
#
# At which interval does the background task sync.
# LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds
# 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_INTERVAL=every 1 hours
# At which interval does the background task sync in milliseconds.
# Leave this unset, so it uses default, and does not crash.
# https://github.com/wekan/wekan/issues/2354#issuecomment-515305722
- LDAP_BACKGROUND_SYNC_INTERVAL=''
#
#- LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false
#
@ -585,7 +593,7 @@ services:
# 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.
# 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

View file

@ -575,10 +575,14 @@ services:
# If the sync of the users should be done in the background
#- LDAP_BACKGROUND_SYNC=false
#
# At which interval does the background task sync.
# LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds
# 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_INTERVAL=every 1 hours
# At which interval does the background task sync in milliseconds.
# Leave this unset, so it uses default, and does not crash.
# https://github.com/wekan/wekan/issues/2354#issuecomment-515305722
- LDAP_BACKGROUND_SYNC_INTERVAL=''
#
#- LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false
#

View file

@ -0,0 +1,41 @@
Wekan provides a python script to ease the call of the REST API from command line interface.
# Context
- [API Login to get Bearer token](REST-API#example-call---as-form-data)
- [API docs and examples for various programming languages](https://wekan.github.io/api/), there is Boards / Export for exporting board with API
- In the right menu, scroll down REST API Docs etc links =====>
- Wekan-Gogs integration with Node.js https://github.com/wekan/wekan-gogs
# Install
You need python3.
Windows
```
choco install python3
# REBOOT
pip3 install pip --upgrade
pip3 install json
python3 wekan.py
```
Debian/Ubuntu
```
sudo apt-get -y install python3 python3-pip python3-simplejson
sudo pip3 install pip --upgrade
chmod +x wekan.py
./wekan.py
```
# Usage
Copy the api.py script to you machine. [Newest Wekan Python CLI api.py here](https://raw.githubusercontent.com/wekan/wekan/master/api.py).
Then, in this script, look for and change:
- wekanurl: https://boards.example.com => Your Wekan URL
- username (could be username or username@example.com)
- Only works with password login admin user. Does not work with LDAP, OAuth2 etc.
Keep in mind your Wekan credentials are potentially accessible in this file.
Then call it without any argument to see if everything is all right. You should just get usage examples.

View file

@ -0,0 +1,56 @@
# Disclaimer
This page tries to be as up to date as possible. If you see something wrong here, feel free to update the page and help other people like you, that greatly depends on our APIs. If you don't feel comfortable doing this kind of changes, please contact us by creating an [issue](https://github.com/wekan/wekan/issues/new).
## Information about boards of user
```
curl -H "Authorization: Bearer a6DM_gOPRwBdynfXaGBaiiEwTiAuigR_Fj_81QmNpnf" \
http://localhost:3000/api/users/XQMZgynx9M79qTtQc/boards
```
## Add/Remove Board Member and Change Role
[Add/Remove Board Member and Change Role admin/normal/nocomments/commentonly](REST-API-Role).
## The admin takes the ownership of ALL boards of the user (archived and not archived) where the user is admin on.
| URL | Requires Admin Auth | HTTP Method |
| :--- | :--- | :--- |
| `/api/users/:id` | `yes` | `PUT` |
```shell
curl -H "Authorization: Bearer t7iYB86mXoLfP_XsMegxF41oKT7iiA9lDYiKVtXcctl" \
-H "Content-type:application/json" \
-X PUT \
http://localhost:3000/api/users/ztKvBTzCqmyJ77on8 \
-d '{ "action": "takeOwnership" }'
```
## Create board
Required:
- "title":"Board title here"
- "owner":"ABCDE12345" <= User ID in Wekan. Not username or email.
Optional, and defaults:
- "isAdmin":"true"
- "isActive":"true"
- "isNoComments":"false"
- "isCommentOnly":"false"
- "permission":"private" <== Set to "public" if you want public Wekan board
- "color":"belize" <== Board color: belize, nephritis, pomegranate, pumpkin, wisteria, midnight.
<img src="https://wekan.github.io/board-colors.png" width="40%" alt="Wekan logo" />
Example:
```
curl -H "Authorization: Bearer t7iYB86mXoLfP_XsMegxF41oKT7iiA9lDYiKVtXcctl" \
-H "Content-type:application/json" \
-X POST \
http://localhost:3000/api/boards \
-d '{"title":"Board title here","owner":"ABCDE12345","permission":"private","color":"nephritis"}'
```
## In Wekan code
If you believe that code is the best documentation, be our guest: [models/cards.js](https://github.com/wekan/wekan/blob/main/models/boards.js "Board API code")

View file

@ -0,0 +1,94 @@
# Disclaimer
This page tries to be as up to date as possible. If you see something wrong here, feel free to update the page and help other people like you, that greatly depends on our APIs. If you don't feel comfortable doing this kind of changes, please contact us by creating an [issue](https://github.com/wekan/wekan/issues/new).
# Retrieve cards by swimlane id
| API URL / Code Link | Requires Admin Auth | HTTP Method |
| :--- | :--- | :--- |
| [/api/boards/:boardId/swimlanes/:swimlaneId/cards](https://github.com/wekan/wekan/blob/c115046a7c86b30ab5deb8762d3ef7a5ea3f4f90/models/cards.js#L487) | `yes` | `GET` |
```shell
curl -H "Authorization: Bearer t7iYB86mXoLfP_XsMegxF41oKT7iiA9lDYiKVtXcctl" \
-X GET \
http://localhost:3000/api/boards/YRgy7Ku6uLFv2pYwZ/swimlanes/PgTuf6sFJsaxto5dC/cards
```
## Result example
```shell
{
"_id": "AzEeHS7KAGeYZCcak",
"title": "Create Auth Code",
"description": "Create Auth Code for application.",
"listId": "RPRtDTQMKpShpgqoj"
},
{
...
```
# Add Card to List-Board-Swimlane
| API URL / Code Link | Requires Admin Auth | HTTP Method |
| :--- | :--- | :--- |
| [/api/boards/:boardId/lists/:listId/cards](https://github.com/wekan/wekan/blob/c115046a7c86b30ab5deb8762d3ef7a5ea3f4f90/models/cards.js#L487) | `yes` | `POST` |
```shell
curl -H "Authorization: Bearer t7iYB86mXoLfP_XsMegxF41oKT7iiA9lDYiKVtXcctl" \
-H "Content-type:application/json" \
-X POST \
http://localhost:3000/api/boards/YRgy7Ku6uLFv2pYwZ/lists/PgTuf6sFJsaxto5dC/cards \
-d '{ "title": "Card title text", "description": "Card description text", "authorId": "The appropriate existing userId", "swimlaneId": "The destination swimlaneId" }'
```
## Result example
The new card's ID is returned in the format:
```json
{
"_id": "W9m9YxQKT6zZrKzRW"
}
```
# Update a card
You can change (any of) the card's title, list, and description.
| API URL / Code Link | Requires Admin Auth | HTTP Method |
| :--- | :--- | :--- |
| [/api/boards/:boardId/lists/:fromListId/cards/:cardId](https://github.com/wekan/wekan/blob/c115046a7c86b30ab5deb8762d3ef7a5ea3f4f90/models/cards.js#L520) | `yes` | `PUT` |
```shell
curl -H "Authorization: Bearer t7iYB86mXoLfP_XsMegxF41oKT7iiA9lDYiKVtXcctl" \
-H "Content-type:application/json" \
-X PUT \
http://localhost:3000/api/boards/YRgy7Ku6uLFv2pYwZ/lists/PgTuf6sFJsaxto5dC/cards/ssrNX9CvXvPxuC5DE \
-d '{ "title": "New title text", "listId": "New destination listId", "description": "New description text" }'
```
## Result example
The card's ID is returned in the format:
```json
{
"_id": "W9m9YxQKT6zZrKzRW"
}
```
# Delete a card
| API URL / Code Link | Requires Admin Auth | HTTP Method |
| :--- | :--- | :--- |
| [/api/boards/:boardId/lists/:listId/cards/:cardId](https://github.com/wekan/wekan/blob/c115046a7c86b30ab5deb8762d3ef7a5ea3f4f90/models/cards.js#L554) | `yes` | `DELETE` |
```shell
curl -H "Authorization: Bearer t7iYB86mXoLfP_XsMegxF41oKT7iiA9lDYiKVtXcctl" \
-H "Content-type:application/json" \
-X DELETE \
http://localhost:3000/api/boards/YRgy7Ku6uLFv2pYwZ/lists/PgTuf6sFJsaxto5dC/cards/ssrNX9CvXvPxuC5DE \
-d '{ "authorId": "the appropriate existing userId"}'
```
## Result example
The card's ID is returned in the format:
```json
{
"_id": "W9m9YxQKT6zZrKzRW"
}
```
# In Wekan code
If you believe that code is the best documentation, be our guest: [models/cards.js](https://github.com/wekan/wekan/blob/main/models/cards.js "Card API code")

View file

@ -0,0 +1,148 @@
## In Wekan code
## 1) Checklists
wekan/models/checklists.js at bottom:
```
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res) {
Authentication.checkUserId( req.userId);
const paramCardId = req.params.cardId;
const checklists = Checklists.find({ cardId: paramCardId }).map(function (doc) {
return {
_id: doc._id,
title: doc.title,
};
});
if (checklists) {
JsonRoutes.sendResult(res, {
code: 200,
data: checklists,
});
} else {
JsonRoutes.sendResult(res, {
code: 500,
});
}
});
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res) {
Authentication.checkUserId( req.userId);
const paramChecklistId = req.params.checklistId;
const paramCardId = req.params.cardId;
const checklist = Checklists.findOne({ _id: paramChecklistId, cardId: paramCardId });
if (checklist) {
checklist.items = ChecklistItems.find({checklistId: checklist._id}).map(function (doc) {
return {
_id: doc._id,
title: doc.title,
isFinished: doc.isFinished,
};
});
JsonRoutes.sendResult(res, {
code: 200,
data: checklist,
});
} else {
JsonRoutes.sendResult(res, {
code: 500,
});
}
});
JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res) {
Authentication.checkUserId( req.userId);
const paramCardId = req.params.cardId;
const id = Checklists.insert({
title: req.body.title,
cardId: paramCardId,
sort: 0,
});
if (id) {
req.body.items.forEach(function (item, idx) {
ChecklistItems.insert({
cardId: paramCardId,
checklistId: id,
title: item.title,
sort: idx,
});
});
JsonRoutes.sendResult(res, {
code: 200,
data: {
_id: id,
},
});
} else {
JsonRoutes.sendResult(res, {
code: 400,
});
}
});
JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res) {
Authentication.checkUserId( req.userId);
const paramChecklistId = req.params.checklistId;
Checklists.remove({ _id: paramChecklistId });
JsonRoutes.sendResult(res, {
code: 200,
data: {
_id: paramChecklistId,
},
});
});
```
### 2) Checklist Items
wekan/models/checklistItems.js at bottom:
```
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId/items/:itemId', function (req, res) {
Authentication.checkUserId( req.userId);
const paramItemId = req.params.itemId;
const checklistItem = ChecklistItems.findOne({ _id: paramItemId });
if (checklistItem) {
JsonRoutes.sendResult(res, {
code: 200,
data: checklistItem,
});
} else {
JsonRoutes.sendResult(res, {
code: 500,
});
}
});
JsonRoutes.add('PUT', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId/items/:itemId', function (req, res) {
Authentication.checkUserId( req.userId);
const paramItemId = req.params.itemId;
if (req.body.hasOwnProperty('isFinished')) {
ChecklistItems.direct.update({_id: paramItemId}, {$set: {isFinished: req.body.isFinished}});
}
if (req.body.hasOwnProperty('title')) {
ChecklistItems.direct.update({_id: paramItemId}, {$set: {title: req.body.title}});
}
JsonRoutes.sendResult(res, {
code: 200,
data: {
_id: paramItemId,
},
});
});
JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId/items/:itemId', function (req, res) {
Authentication.checkUserId( req.userId);
const paramItemId = req.params.itemId;
ChecklistItems.direct.remove({ _id: paramItemId });
JsonRoutes.sendResult(res, {
code: 200,
data: {
_id: paramItemId,
},
});
```

Some files were not shown because too many files have changed in this diff Show more