Compare commits

...
369 Commits
Author SHA1 Message Date
Lauri Ojansivu 5a3fab4f65 v6.45 2022-09-14 16:25:07 +03:00
Lauri Ojansivu 0a3d2c2868 Updated translations. 2022-09-14 16:18:10 +03:00
Lauri Ojansivu 57166b891a Updated ChangeLog. 2022-09-14 16:11:17 +03:00
Lauri Ojansivu a805eb09df Merge pull request #4681 from helioguardabaxo/master
Added help button with custom URL.
2022-09-14 16:08:34 +03:00
Lauri Ojansivu 6cb84673d4 Updated ChangeLog. 2022-09-14 16:06:53 +03:00
Lauri Ojansivu aa2c3774a2 Fixed WeKan api.py . WeKan API now works in newest WeKan and n8n.
Thanks to DimDz and Joffcom.

Fixes #4595
2022-09-14 16:02:50 +03:00
Lauri Ojansivu b485c7304f Updated translations. 2022-09-14 16:01:11 +03:00
Hélio Guardabaxo bbc6d0955c Merge branch 'wekan:master' into master 2022-09-13 11:25:26 -03:00
helioguardabaxo d610d03423 Added help button with custom URL. 2022-09-12 21:36:31 -03:00
Lauri Ojansivu 58e1084ba5 Updated ChangeLog. 2022-09-12 19:47:42 +03:00
Lauri Ojansivu cf7c051242 Add info about RTL languages to Meteor WeKan. Not used in Meteor WeKan yet.
Thanks to xet7 !

Related #3376
2022-09-12 19:45:18 +03:00
Lauri Ojansivu a92eafce80 Updated translations. 2022-09-12 18:24:50 +03:00
Lauri Ojansivu b62bce388c Updated translations. 2022-09-12 18:22:47 +03:00
Lauri Ojansivu e309b53ded Updated translations. 2022-09-12 04:46:37 +03:00
Lauri Ojansivu 1813400ecf Updated translations. 2022-09-12 04:27:55 +03:00
Lauri Ojansivu 5d09fca481 Updated translations. 2022-09-12 04:21:12 +03:00
Lauri Ojansivu c99a86cdb0 Added translation Password (again).
Thanks to xet7 !
2022-09-12 03:58:03 +03:00
Lauri Ojansivu 072d239a85 Updated ChangeLog. 2022-09-12 03:03:38 +03:00
Lauri Ojansivu 9e44ccaf5d Merge pull request #4680 from helioguardabaxo/master
Heading hierarchy fixed on checklist title to simplify screen reader.
2022-09-12 02:58:00 +03:00
helioguardabaxo 86d86b30e9 Heading hierarchy fixed to simplify screen reader. 2022-09-11 20:53:30 -03:00
Lauri Ojansivu b2edacbd12 Merge pull request #4677 from helioguardabaxo/master
Add ARIA in checklist items
2022-09-08 22:27:03 +03:00
helioguardabaxo a6ec394730 Add ARIA in checklist items 2022-09-08 16:17:07 -03:00
Lauri Ojansivu 4ae0d49431 Merge pull request #4675 from bronger/master
Avoid non-terminating containers
2022-09-06 13:37:19 +03:00
Torsten Bronger eaea1936a0 Avoid non-terminating containers
The process 1 in the container does not shut down gracefully after having
received a TERM signal.  Therefore, we send a SIGKILL immediately.  This is a
kludge as long as node/meteor has no proper SIGTERM handler enabled.  See
<https://github.com/wekan/wekan/issues/4668>.
2022-09-06 12:30:32 +02:00
Lauri Ojansivu 315597dcff Updated ChangeLog. 2022-09-05 15:10:49 +03:00
Lauri Ojansivu 51ed0acc4f Add starting wekan test to arm64/s390x/ppc64el release scripts.
Thanks to xet7 !
2022-09-05 15:08:03 +03:00
Lauri Ojansivu a06e971a53 v6.44 2022-09-05 14:54:10 +03:00
Lauri Ojansivu 33f39d047f Updated translations. 2022-09-05 14:43:41 +03:00
Lauri Ojansivu 98de6ae0db Updated ChangeLog. 2022-09-05 13:36:53 +03:00
Lauri Ojansivu 6b4613d3ed Fix 2) Due date is not created nor changed, when cards are moved in the calendar view.
Thanks to DimDz !

Related #2917
2022-09-05 13:35:14 +03:00
Lauri Ojansivu eace04db8e Updated ChangeLog. 2022-09-04 11:38:41 +03:00
Lauri Ojansivu 3772ce3aca Fix building Dockerfile on Mac M1 etc.
Thanks to willman42 and xet7 !

Fixes #4666
2022-09-04 11:33:57 +03:00
Lauri Ojansivu 663e2823fa Updated ChangeLog. 2022-09-04 10:27:44 +03:00
Lauri Ojansivu 77927a1ca4 Removed old stuff from Dockerfile.
Thanks to xet7 !
2022-09-04 10:26:23 +03:00
Lauri Ojansivu 6bf1fcbbc7 Updated ChangeLog. 2022-09-04 09:13:48 +03:00
Lauri Ojansivu 0f6d84d69f Updated matb33:collection-hooks.
Thanks to developers of dependencies !
2022-09-04 09:12:14 +03:00
Lauri Ojansivu 9d6cb7fbdb Updated translations. 2022-09-04 09:04:56 +03:00
Lauri Ojansivu 29572de2e7 Updated ChangeLog. 2022-09-04 08:40:08 +03:00
Lauri Ojansivu 3a0269640b Added missing currentUser.
Thanks to xet7 !

Related https://github.com/wekan/wekan/pull/4672
2022-09-04 08:32:05 +03:00
Lauri Ojansivu 9a15750e7c Merge pull request #4672 from helioguardabaxo/master
Added tab view to board members (people, orgs and teams)
2022-09-04 08:02:40 +03:00
helioguardabaxo ebfabba284 Added tab view to board members (people, orgs and teams) 2022-09-03 19:36:53 -03:00
Lauri Ojansivu 05c34cefde v6.43 2022-09-01 12:24:17 +03:00
Lauri Ojansivu 4097301e60 Updated translations. 2022-09-01 12:17:45 +03:00
Lauri Ojansivu 04827fd8f0 Updated ChangeLog. 2022-09-01 12:14:15 +03:00
Lauri Ojansivu 1e4fba3ec8 Added back autologin, because reverting it broke Google OIDC login.
Thanks to xet7 !
2022-09-01 12:12:30 +03:00
Lauri Ojansivu ba1d04b99f Updated ChangeLog. 2022-09-01 12:05:19 +03:00
Lauri Ojansivu ed72ef0e5e Merge pull request #4667 from willman42/willman42-revert-pr-4663
Willman42 revert pr 4663
2022-09-01 12:01:34 +03:00
William Trelawny 2287758fdc Update docker-compose.yml
revert change made in ca35970f3f
2022-08-31 20:59:25 -04:00
William Trelawny c6fa37640a Update Dockerfile
revert changes made in f26f86dd3f
2022-08-31 20:55:20 -04:00
Lauri Ojansivu 4907bf5030 6.42 2022-08-31 22:22:54 +03:00
Lauri Ojansivu 85edae924e v6.42 2022-08-31 22:15:51 +03:00
Lauri Ojansivu e6561462e9 Updated ChangeLog. 2022-08-31 22:02:35 +03:00
Lauri Ojansivu 0d3b7ca041 Try to fix EasySearch. Part 3.
Thanks to danielkaiser and xet7 !
2022-08-31 22:00:09 +03:00
Lauri Ojansivu 8fc23429a0 Updated ChangeLog. 2022-08-31 04:13:27 +03:00
Lauri Ojansivu bfffe58672 Merge pull request #4663 from willman42/master
Remove hard-coded port 8080 binding in Dockerfile
2022-08-31 04:09:37 +03:00
William Trelawny ca35970f3f Update docker-compose.yml
Added default `PORT=8080` environment variable setting as well as user guidance
2022-08-30 20:24:36 -04:00
William Trelawny f26f86dd3f Update Dockerfile
Removed hardcoding port 8080 in image, allowing more flexibility for complex docker deployments.
2022-08-30 20:03:28 -04:00
Lauri Ojansivu 63d000fbbb Updated ChangeLog. 2022-08-31 00:09:41 +03:00
Lauri Ojansivu 17f97f6acc Added translations: English (Malaysia) (en_MY), Japanese (Hiragana) (ja-Hira), Malay (ms).
Thanks to dimanLubis !
2022-08-31 00:07:07 +03:00
Lauri Ojansivu 33657a9ed1 Updated ChangeLog. 2022-08-30 23:15:23 +03:00
Lauri Ojansivu 43a7096753 Revert autologin, because it broke OIDC login with Keycloak.
Thanks to wb9688 and xet7 !

Fixes #4660,
related https://github.com/wekan/wekan/pull/4588
2022-08-30 23:12:23 +03:00
Lauri Ojansivu fbe1f5f948 Updated ChangeLog. 2022-08-30 22:44:29 +03:00
Lauri Ojansivu a21883e3a1 Try 2 to fix EasySearch.
Thanks to xet7 !
2022-08-30 22:43:09 +03:00
Lauri Ojansivu af2da93423 Updated ChangeLog. 2022-08-30 22:40:08 +03:00
Lauri Ojansivu 14f832f955 Merge pull request #4662 from mfilser/master
00checkStartup, userInfo was missing
2022-08-30 22:29:49 +03:00
Lauri Ojansivu 6ec81ccbc1 Updated ChangeLog. 2022-08-30 22:26:29 +03:00
Lauri Ojansivu d470a74a9f Comment out CentOS 7 specific settings.
Thanks to williamtrelawny and xet7 !

Related https://github.com/wekan/wekan/commit/054d420dc97cadee6ed7896c608d95a6fe09dc9d
2022-08-30 22:24:09 +03:00
Martin Filser cee1dd94ee 00checkStartup, userInfo was missing
fixes: https://github.com/wekan/wekan/issues/4566#issuecomment-1231906040
2022-08-30 19:18:30 +02:00
Lauri Ojansivu c587d34158 Updated ChangeLog. 2022-08-28 20:36:25 +03:00
Lauri Ojansivu 68e4e6f049 Fix check for current user at card details.
Thanks to xet7 !
2022-08-28 20:34:45 +03:00
Lauri Ojansivu 5c81cfbd7b v6.41 2022-08-28 19:35:22 +03:00
Lauri Ojansivu edc610d019 Updated ChangeLog. 2022-08-28 12:28:10 -04:00
Lauri Ojansivu 5ca84d2930 Try to fix EasySearch syntax.
Thanks to xet7 !
2022-08-28 12:26:22 -04:00
Lauri Ojansivu 6f864c5022 v6.40 2022-08-25 21:42:15 +03:00
Lauri Ojansivu 3c3adef26a Updated translations. 2022-08-25 21:36:01 +03:00
Lauri Ojansivu f533aa8d8e Updated ChangeLog. 2022-08-25 21:34:48 +03:00
Lauri Ojansivu c1d449d3bd Merge pull request #4657 from mfilser/move_copy_card_didnt_set_the_last_selected_board_right
Move/Copy Card dialog didn't set the last selected board right
2022-08-25 21:12:29 +03:00
Martin Filser 2c2f906c8b Move/Copy Card dialog didn't set the last selected board right
- fixes: #4655
2022-08-24 22:46:50 +02:00
Lauri Ojansivu 9e0d7ee00f Updated translations. 2022-08-22 20:23:21 +03:00
Lauri Ojansivu 11e467618d v6.39 2022-08-21 20:16:03 +03:00
Lauri Ojansivu f315721fef Updated ChangeLog. 2022-08-21 19:33:25 +03:00
Lauri Ojansivu 8eb4ffea89 Merge pull request #4650 from mfilser/attachment_using_new_feature_of_meteor-files-2.3.0
Attachment using new feature of Meteor Files 2.3.0
2022-08-21 19:09:52 +03:00
Lauri Ojansivu f20ca31a3f Merge pull request #4649 from repmovs/master
set miniscreen to 250px
2022-08-21 19:09:28 +03:00
Martin Filser f4e11ff7c5 Avatars, use same namingFunction as Attachments 2022-08-21 11:10:27 +02:00
Martin Filser f6fbd0a5c2 Attachment, rename not needed anymore since Meteor-Files 2.3.0
Thanks to @dr-dimitru
https://github.com/wekan/wekan/pull/4638#issuecomment-1217883870

https://github.com/veliovgroup/Meteor-Files/commit/00ab6f723b84eb596b366c5d26e6981a00377809
2022-08-21 11:10:27 +02:00
Martin Filser 25443926d3 Attachment, path was wrong if the file hasn't a extension 2022-08-21 11:10:27 +02:00
Repmovs 03a75c9c05 set miniscreen to 250px 2022-08-20 17:08:50 +00:00
Lauri Ojansivu 6a20f6dc70 Updated translations. 2022-08-20 16:50:55 +03:00
Lauri Ojansivu 3d2fbf1397 Updated ChangeLog. 2022-08-20 16:50:25 +03:00
Lauri Ojansivu d0f1382055 Upgraded Snap candidate MongoDB versions.
Thanks to MongoDB developers !
2022-08-20 16:48:43 +03:00
Lauri Ojansivu 0de353508a Updated ChangeLog. 2022-08-20 16:45:49 +03:00
Lauri Ojansivu c291b9ebb8 Merge pull request #4648 from NotTheEvilOne/pr/support-upload-avatar-validation
Add support to validate avatar uploads by type, size and external program
2022-08-20 16:43:46 +03:00
Tobias Wolf 24566ce853 Reset avatar if removed 2022-08-20 09:01:18 +02:00
Tobias Wolf c64a221453 Add support to validate uploaded avatars 2022-08-20 08:46:41 +02:00
Tobias Wolf 469d81f8a5 Separate uploaded file validation logic from the model "Attachments" 2022-08-19 14:30:22 +02:00
Lauri Ojansivu 503f6128bd v6.38 2022-08-18 20:25:58 +03:00
Lauri Ojansivu e1398d04da Updated ChangeLog. 2022-08-18 20:14:31 +03:00
Lauri Ojansivu 79add98aa7 Updated parse-ms.
Thanks to developers of dependencies !
2022-08-18 20:13:01 +03:00
Lauri Ojansivu 7a6098774d Updated ChangeLog. 2022-08-18 19:45:00 +03:00
Lauri Ojansivu ce1f8b674d Updated to ostrio:files 2.3.0 and standard-minifier-js 2.8.1.
Thanks to developers of dependencies !
2022-08-18 19:42:50 +03:00
Lauri Ojansivu 11e666f229 Updated ChangeLog. 2022-08-18 19:37:53 +03:00
Lauri Ojansivu c131b983b3 Updated translations. 2022-08-18 19:30:30 +03:00
Lauri Ojansivu a9334b3bf4 Merge pull request #4647 from mfilser/copy_and_move_card_checklists_same_code
Copy / move card and checklists using same code
2022-08-18 18:52:00 +03:00
Martin Filser c437c0d3f1 get all cards sometimes failed because the list was undefined 2022-08-18 17:45:56 +02:00
Martin Filser 97109df673 copy/move checklist uses now the same code as copy/move card 2022-08-18 17:45:56 +02:00
Martin Filser d4338dd5cc Moving DialogWithBoardSwimlaneList class to it's own file 2022-08-18 17:45:56 +02:00
Martin Filser 15ce816ec6 Convert checklist-item to card uses now the same code as copy card / move card 2022-08-18 17:45:55 +02:00
Lauri Ojansivu 3e921da314 Merge pull request #4646 from mfilser/copy_card-attachments
"Copy card" copies now attachments too
2022-08-18 18:44:40 +03:00
Martin Filser dc210dc53b Copy checklists to many cards copies the whole card now (+attachments)
- renamed copyChecklistToManyCards changed to copyManyCards because the whole card is copied
2022-08-18 17:31:41 +02:00
Martin Filser 43135ffc8d Copy many cards now also copies attachments 2022-08-18 17:31:41 +02:00
Martin Filser 1516615934 Copy attachment copies now all versions
- for now only the version "original" exists, but as other method already
  consider that other version's can exist
2022-08-18 17:31:41 +02:00
Martin Filser e37bf2b51d Copy card at card details copies now attachments 2022-08-18 17:31:41 +02:00
Lauri Ojansivu 0553e36bfb Merge pull request #4643 from mfilser/move_copy_card_dialog_remember_last_selected_board
Move and copy card dialog remember last selected board
2022-08-18 14:50:20 +03:00
Martin Filser 03deeb6729 Copy many card dialog remembers now the last selected board 2022-08-16 23:26:37 +02:00
Martin Filser a06d1806df Copy card dialog remembers now the last selected board 2022-08-16 23:26:32 +02:00
Martin Filser 0a4e472601 Move card dialog remembers now the last selected board 2022-08-16 23:24:10 +02:00
Lauri Ojansivu f320069ec8 Merge pull request #4641 from mfilser/attachment_upload_progress_bar
Attachment upload progress bar + multiple files upload
2022-08-17 00:01:16 +03:00
Martin Filser 20c2679dc8 Attachment size, changed calculation to npm filesize (Version Info) 2022-08-16 22:35:19 +02:00
Martin Filser 464bc2f87b Attachment size, changed calculation to npm filesize (Attachment Move) 2022-08-16 22:35:18 +02:00
Martin Filser 3aba91885f Attachment size, changed calculation to npm filesize (Admin Reports) 2022-08-16 22:35:18 +02:00
Martin Filser 110a83a736 Attachment size, changed calculation to npm filesize (Card Details) 2022-08-16 22:35:18 +02:00
Martin Filser af120f2e0b Attachment uploads show's all uploading files 2022-08-16 22:35:18 +02:00
Martin Filser ea937810f2 Attachment, simple upload progress bar 2022-08-16 22:35:18 +02:00
Martin Filser a6b4a698af Attachment, upload all selected files
- until now only the first attachment was uploaded
2022-08-16 22:35:18 +02:00
Lauri Ojansivu 778084e934 Updated ChangeLog. 2022-08-16 22:29:22 +03:00
Lauri Ojansivu c23f5dc858 Fix Validate attachment error at PR Meteor files 2.2.1 fixes + attachment view.
Thanks to xet7 !

Fixes #4640
2022-08-16 22:27:22 +03:00
Lauri Ojansivu 2cd8cfc9b9 Updated ChangeLog. 2022-08-16 22:05:22 +03:00
Lauri Ojansivu 2bb1feee51 Updated dependencies. 2022-08-16 22:02:56 +03:00
Lauri Ojansivu 0e6a1a171e Merge pull request #4638 from mfilser/meteor_files_2.2.1
Meteor files 2.2.1 fixes + attachment view
2022-08-16 21:33:55 +03:00
Martin Filser f833d1288f fixed wrong @import reset.css 2022-08-16 19:42:12 +02:00
Martin Filser cfccee897e Fix "Attachments view (gallery) was missing" 2022-08-16 19:38:07 +02:00
Martin Filser ea5025595a Server side code don't need a Meteor.call 2022-08-16 18:34:27 +02:00
Martin Filser 344aeb4051 Meteor-Files 2.2.1 changed the function "namingFunction"
See also:
https://github.com/veliovgroup/Meteor-Files/commit/f872569be282e3abfd1d812ab72cdd1b446273fa
2022-08-16 18:34:26 +02:00
Martin Filser db8e707049 Attachment filename was truncated to 28 characters since Meteor-Files 2.1.0. Fixed this
See also:
https://github.com/veliovgroup/Meteor-Files/commit/e3a347c432b1296c2f6ee9ce48d356b631d2ce14#diff-4d4d0cea7e443590b59dddca4fc34faa6f37fbfd94a251d8d0047b8aa8ca19eeR4-R6
2022-08-16 18:34:26 +02:00
Lauri Ojansivu f6f5c7ccf0 Updated ChangeLog. 2022-08-16 14:41:05 +03:00
Lauri Ojansivu 43f380c17a Merge pull request #4637 from NotTheEvilOne/pr/support-upload-anti-virus-verification
Add support to validate attachment uploads by an external program
2022-08-16 14:35:28 +03:00
Tobias Wolf e6b705be26 Remove leftover unused arguments parsing for external execution 2022-08-16 12:01:25 +02:00
Tobias Wolf b5d311c00c Add support to validate attachment uploads by an external program 2022-08-15 21:09:46 +02:00
Lauri Ojansivu 91b1713bf7 v6.37 2022-08-15 15:41:33 +03:00
Lauri Ojansivu 9274501939 Updated ChangeLog. 2022-08-15 15:26:41 +03:00
Lauri Ojansivu 7c619859fc Updated dependencies like ostrio:files etc.
Thanks to developers of dependencies and xet7 !

Related https://github.com/veliovgroup/Meteor-Files/issues/847
2022-08-15 15:24:16 +03:00
Lauri Ojansivu c091fa5993 Updated ChangeLog. 2022-08-15 14:29:14 +03:00
Lauri Ojansivu f9934eeec9 Merge pull request #4635 from repmovs/miniscreen-issues
fixing issue #4634
2022-08-15 14:25:08 +03:00
Repmovs 98b7953d7f fixing issue #4634 2022-08-15 11:20:09 +00:00
Lauri Ojansivu feb6fb72f4 6.36 2022-08-14 15:31:46 +03:00
Lauri Ojansivu c63c84e2ea v6.36 2022-08-14 15:29:21 +03:00
Lauri Ojansivu b334a4ee00 Updated ChangeLog. 2022-08-14 14:43:57 +03:00
Lauri Ojansivu 8566f32bbd Revert Fix URLs to favicons etc for sub-urls, because it broke favicons on subdomain URLs.
Thanks to dsvk and xet7 !

Related #2094
2022-08-14 14:29:40 +03:00
Lauri Ojansivu af4bcb47e7 Updated ChangeLog. 2022-08-14 14:14:33 +03:00
Lauri Ojansivu 8560b36a5a Revert Fix Open card links in current tab. So now links open in new tab.
Thanks to dvsk, mfilser and xet7 !

Fixes https://github.com/wekan/wekan/discussions/3534
2022-08-14 14:10:44 +03:00
Lauri Ojansivu 6fbd817e83 v6.35 2022-08-13 14:18:05 +03:00
Lauri Ojansivu a86ea22303 Updated ChangeLog. 2022-08-13 13:59:07 +03:00
Lauri Ojansivu 54e6e32ab2 Fix Users can delete Boards from global archive (w/o permission).
Thanks to Meeques and xet7 !

Fixes #4631
2022-08-13 13:55:40 +03:00
Lauri Ojansivu dbcc8539bc Updated translations. 2022-08-13 13:38:20 +03:00
Lauri Ojansivu 65dee38150 Updated ChangeLog. 2022-08-13 12:59:13 +03:00
Lauri Ojansivu ee3c5cbb6a Fix Open card links in current tab. Not in new tab anymore.
Thanks to bronger, ManZosh and xet7 !

Fixes https://github.com/wekan/wekan/discussions/3534
2022-08-13 12:54:37 +03:00
Lauri Ojansivu f480f945c5 Updated ChangeLog. 2022-08-13 12:43:23 +03:00
Lauri Ojansivu 9824b90e69 Merge pull request #4630 from wekan/dependabot/github_actions/docker/build-push-action-3.1.1
Bump docker/build-push-action from 3.1.0 to 3.1.1
2022-08-13 12:12:59 +03:00
Lauri Ojansivu e6c3995713 Updated ChangeLog. 2022-08-12 22:20:27 +03:00
Repmovs d7bb0b4cc0 Set drag handle on touch screen not miniscreen 2022-08-12 17:21:45 +00:00
dependabot[bot] 3762768ed3 Bump docker/build-push-action from 3.1.0 to 3.1.1
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/1cb9d22b932e4832bb29793b7777ec860fc1cde0...c84f38281176d4c9cdb1626ffafcd6b3911b5d94)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-08 20:25:06 +00:00
Lauri Ojansivu 61d2fd0308 Updated ChangeLog. 2022-08-05 15:29:15 -04:00
Lauri Ojansivu 458b372b1b Merge pull request #4625 from mfilser/master
_getTopStack(), comment type error
2022-08-05 22:13:40 +03:00
Martin Filser 6eb1495c3b _getTopStack(), comment type error 2022-08-05 20:53:12 +02:00
Lauri Ojansivu e9a251d6a8 Merge pull request #4624 from mfilser/master
Fix Typo in CHANGELOG
2022-08-05 21:49:49 +03:00
Martin Filser b712380661 Fix Typo in CHANGELOG 2022-08-05 20:41:41 +02:00
Lauri Ojansivu abf76b92d4 v6.34 2022-08-05 17:47:21 +03:00
Lauri Ojansivu 43360c103b Updated dependencies.
Thanks to developers of dependencies !
2022-08-05 17:41:44 +03:00
Lauri Ojansivu ec4564d994 Updated ChangeLog. 2022-08-05 17:32:39 +03:00
Lauri Ojansivu 49a023733a Merge pull request #4623 from danielkaiser/master
Fix and update easysearch
2022-08-05 17:25:05 +03:00
Daniel Kaiser 339e044a30 Fix and update easysearch 2022-08-05 13:06:02 +02:00
Lauri Ojansivu 01c938d6b2 v6.33 2022-08-05 02:10:50 +03:00
Lauri Ojansivu cb42fa37b1 Updated ChangeLog. 2022-08-05 01:58:55 +03:00
Lauri Ojansivu 37f9de8b9b Try 2 to fix missing variable in WeKan fails to get MongoDB server version.
Thanks to simon816 and xet7 !

Fixes #4596
2022-08-05 01:54:08 +03:00
Lauri Ojansivu 08e18200c6 v6.32 2022-08-05 00:49:50 +03:00
Lauri Ojansivu 3ddb97c8c9 Updated ChangeLog. 2022-08-04 02:40:16 +03:00
Lauri Ojansivu 4941fd183c Try to fix missing variable in WeKan fails to get MongoDB server version.
Thanks to simon816 and xet7 !

Fixes #4596
2022-08-04 02:37:34 +03:00
Lauri Ojansivu 2be017cf4a Updated ChangeLog. 2022-08-04 02:19:47 +03:00
Lauri Ojansivu 1b30485e68 Added dependencies for attachments file size and type.
Thanks to xet7 !

Related https://github.com/wekan/wekan/pull/4618
2022-08-04 02:17:45 +03:00
Lauri Ojansivu 0c224a0a7f Added attachments file type and size snap settings and help text.
Thanks to xet7 !

Related https://github.com/wekan/wekan/pull/4618
2022-08-04 02:12:49 +03:00
Lauri Ojansivu d7292690bd Merge branch 'pr/support-upload-validation' of https://github.com/NotTheEvilOne/wekan 2022-08-04 00:33:15 +03:00
Lauri Ojansivu 1467f3de31 Updated ChangeLog. 2022-08-04 00:31:00 +03:00
Lauri Ojansivu 063ad08e9e Fix In Lists view, Card Details pop-up does not appear in 6.31 release.
Thanks to Sdub76, niels, m4teh, r4nc0r, mfilser, medjedovicm and xet7 !

Fixes #4616
2022-08-04 00:26:42 +03:00
Tobias Wolf ed3223fedc Add support to validate attachment uploads by type and size 2022-08-03 13:06:23 +02:00
Lauri Ojansivu a551f2bcc7 Updated translations. 2022-08-02 00:18:26 +03:00
Lauri Ojansivu 0efc9aca15 Updated ChangeLog. 2022-08-02 00:06:33 +03:00
Lauri Ojansivu 73ea39466b Updated build scripts.
Thanks to xet7 !
2022-08-02 00:05:36 +03:00
Lauri Ojansivu ec2b008552 Updated ChangeLog. 2022-08-01 23:45:00 +03:00
Lauri Ojansivu 86d6d2d19a Update release scripts.
Thanks to xet7 !
2022-08-01 23:43:14 +03:00
Lauri Ojansivu 26f8df2995 Updated translations. 2022-07-31 23:04:52 +03:00
Lauri Ojansivu b0758449bc Updated ChangeLog. 2022-07-31 04:38:25 +03:00
Lauri Ojansivu b433fbdda8 Try to fix Snap. 2022-07-31 04:37:07 +03:00
Lauri Ojansivu 2e1ca73379 Updated ChangeLog. 2022-07-31 04:30:28 +03:00
Lauri Ojansivu 14e5d08a19 Updated release build scripts to reinstall bcrypt, upload Windows version etc.
Thanks to xet7 !
2022-07-31 04:27:53 +03:00
Lauri Ojansivu aeb29a4f95 v6.31 2022-07-31 02:19:02 +03:00
Lauri Ojansivu 27198c4064 Snap Candidate to MongoDB 5.0.10 etc.
Thanks to xet7 !
2022-07-31 02:12:23 +03:00
Lauri Ojansivu bba1f9e133 Merge pull request #4611 from wekan/dependabot/npm_and_yarn/moment-2.29.4
Bump moment from 2.29.3 to 2.29.4
2022-07-30 17:34:27 +03:00
dependabot[bot] fd6f2132af Bump moment from 2.29.3 to 2.29.4
Bumps [moment](https://github.com/moment/moment) from 2.29.3 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.3...2.29.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-30 14:33:28 +00:00
Lauri Ojansivu a24c47901f Updated ChangeLog. 2022-07-30 10:32:52 -04:00
Lauri Ojansivu d37adbb046 Fix Login Page Error, Lists can't move anymore, reverted incomplete Change Lists Width.
Thanks to johnnytolengo, gda140 and xet7 !

Fixes #4592,
related #4558
2022-07-30 10:29:19 -04:00
Lauri Ojansivu 0f0fab28b0 Updated ChangeLog. 2022-07-29 13:19:22 -04:00
Lauri Ojansivu 69c3bdf553 Updated ChangeLog. 2022-07-29 13:17:29 -04:00
Lauri Ojansivu 6594795f39 Reverted incomplete fix about bug where opening card scrolls to wrong place.
Thanks to danceb, DimDz, mfilser, Emile840, derbolle, xplodwild and xet7 !

Fixes #4572
2022-07-29 13:10:51 -04:00
Lauri Ojansivu 36ae118afc Updated translations. 2022-07-29 13:07:27 -04:00
Lauri Ojansivu b062eb8af4 Merge pull request #4610 from Emile840/master
Fix the bug that displayed a card popup to all swimlanes for public board (when a user is not logged)
2022-07-29 19:41:52 +03:00
Emile840 404fbacc41 Fix the bug that displayed a card popup to all swimlanes for public board (when a user is not logged) 2022-07-28 19:15:15 +02:00
Lauri Ojansivu 986b8e0463 Updated translations. 2022-07-28 17:37:35 +03:00
Lauri Ojansivu 6289dcf4c2 Updated ChangeLog. 2022-07-28 17:32:54 +03:00
Lauri Ojansivu 5b883f4ea6 Merge pull request #4598 from Viehlieb/feature/save_description_on_card_exit
Feature/save description on card exit
2022-07-28 17:11:35 +03:00
Lauri Ojansivu 58da4e4004 Merge pull request #4604 from wekan/dependabot/github_actions/docker/build-push-action-3.1.0
Bump docker/build-push-action from 3.0.0 to 3.1.0
2022-07-28 17:09:08 +03:00
Lauri Ojansivu c2dc80c452 Merge pull request #4599 from wekan/dependabot/npm_and_yarn/jquery-ui-1.13.2
Bump jquery-ui from 1.13.1 to 1.13.2
2022-07-28 17:08:57 +03:00
Lauri Ojansivu 1b95f9f167 Fix URLs to favicons etc.
Thanks to letmp, Meeques and xet7 !

Fixes #2094
2022-07-28 05:34:00 -04:00
dependabot[bot] 72c44e703f Bump docker/build-push-action from 3.0.0 to 3.1.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/e551b19e49efd4e98792db7592c17c09b89db8d8...1cb9d22b932e4832bb29793b7777ec860fc1cde0)

---
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>
2022-07-25 20:54:30 +00:00
Lauri Ojansivu 8e17177331 Updated translations. 2022-07-24 15:04:37 -04:00
dependabot[bot] e825480b57 Bump jquery-ui from 1.13.1 to 1.13.2
Bumps [jquery-ui](https://github.com/jquery/jquery-ui) from 1.13.1 to 1.13.2.
- [Release notes](https://github.com/jquery/jquery-ui/releases)
- [Commits](https://github.com/jquery/jquery-ui/compare/1.13.1...1.13.2)

---
updated-dependencies:
- dependency-name: jquery-ui
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 17:22:11 +00:00
viehlieb b2a555f996 revert changeson rebuild-wekan.sh 2022-07-18 15:56:04 +02:00
viehlieb b2fd576f36 added space before text 2022-07-18 15:54:49 +02:00
viehlieb 1c4b54d1ad revert tiny change on input event keydown <-> keyup 2022-07-18 15:11:19 +02:00
viehlieb b36920e657 merge with master 2022-07-18 15:09:18 +02:00
viehlieb b3056626f3 add option to get asked whether unsaved card descriptions should be saved to db on e.g. unintentional click out of card details pane 2022-07-18 15:05:22 +02:00
Lauri Ojansivu 760dde2c10 Updated translations. 2022-07-16 08:26:37 +03:00
Lauri Ojansivu e7a2e8302c Updated ChangeLog. 2022-07-13 23:14:10 +03:00
Lauri Ojansivu e81900178e Added LaTex support to all input fields with markdown-it-mathjax3.
Examples: https://github.com/wekan/wekan/wiki/LaTeX

Thanks to DoktorScience !

Fixes #4589
2022-07-13 23:12:16 +03:00
Lauri Ojansivu 648adb414e Updated ChangeLog. 2022-07-11 20:30:49 +03:00
Lauri Ojansivu e3149289db v6.30 2022-07-11 20:07:17 +03:00
Lauri Ojansivu b680cf4938 Updated ChangeLog. 2022-07-11 19:59:29 +03:00
Lauri Ojansivu 69d454dd03 Fix uploading attachments.
Thanks to BabyFnord and xet7 !

Related #4585
2022-07-11 19:54:28 +03:00
Lauri Ojansivu 703c849482 Updated ChangeLog. 2022-07-11 17:47:05 +03:00
Lauri Ojansivu 284f440136 OIDC/OAuth2 autologin settings for Docker/Snap/Source/Bundle platforms.
Thanks to xet7 !
2022-07-11 17:44:58 +03:00
viehlieb b00169d24f wipon card description - prevention of unintentional exit deletesunsaved description 2022-07-11 16:15:40 +02:00
Lauri Ojansivu 267becdb9a Updated ChangeLog. 2022-07-11 17:06:34 +03:00
Lauri Ojansivu 054d420dc9 On CentOS 7 Docker there is seccomp issue with glibc 6, so setting it to unconfined to get WeKan working.
Thanks to m-brangeon !

Related #4585,
related #4587
2022-07-11 17:02:05 +03:00
Lauri Ojansivu 0fbc6efbcf Updated ChangeLog. 2022-07-11 16:47:04 +03:00
Lauri Ojansivu 63f5c88a15 Updated ChangeLog. 2022-07-11 16:20:03 +03:00
Lauri Ojansivu 24598eaf00 Merge pull request #4588 from Viehlieb/feature/direct_login_from_oidc
Feature/direct login from OIDC
2022-07-11 16:10:29 +03:00
viehlieb aa067b777a merge with master 2022-07-11 14:58:27 +02:00
viehlieb 2e9fca93ec remove unneccessary line in layout.js 2022-07-11 14:48:05 +02:00
Lauri Ojansivu c2f5355f9a Updated ChangeLog. 2022-07-11 00:23:58 -04:00
Lauri Ojansivu 9fdf739695 Updated ChangeLog. 2022-07-11 02:21:44 +03:00
Lauri Ojansivu 17f8f8f14f Try to fix Snap.
Thanks to xet7 !
2022-07-11 02:18:48 +03:00
Lauri Ojansivu 9a68c96585 v6.29 2022-07-11 01:20:31 +03:00
Lauri Ojansivu ed2a725a2c Updated dependencies. 2022-07-11 00:52:32 +03:00
Lauri Ojansivu 8914d4404e Updated dependencies. 2022-07-08 23:33:08 +03:00
viehlieb c5dd0b729d get ServiceConfiguration from server 2022-07-08 16:48:06 +02:00
Lauri Ojansivu f4f9c501d1 Updated ChangeLog. 2022-07-08 10:13:24 -04:00
Lauri Ojansivu 239dd1a341 Updated to Node.js v14.20.0. Thanks to Node.js developers. 2022-07-08 10:10:34 -04:00
viehlieb ee254cb9c8 wait for service config load to redirect to oidc provider 2022-07-08 15:09:39 +02:00
viehlieb 05a98fa88b Merge branch 'master' of https://github.com/wekan/wekan into feature/direct_login_from_oidc 2022-07-08 12:01:57 +02:00
viehlieb 5df5c7f5d7 merge master changes 2022-07-08 11:55:32 +02:00
Lauri Ojansivu ccea223ef7 Updated ChangeLog. 2022-07-06 00:34:27 +03:00
Lauri Ojansivu 25f9963645 Merge pull request #4582 from mfilser/move_copy_card_closes_popup_if_done
Move/Copy card closes now the popup if done
2022-07-06 00:33:31 +03:00
Lauri Ojansivu b1c41518df Updated ChangeLog. 2022-07-06 00:32:37 +03:00
Lauri Ojansivu ae09f0f008 Updated dependencies. 2022-07-06 00:31:13 +03:00
Martin Filser 490ad65b6e Move/Copy card closes now the popup if done
- Resolves discussion: #4337
2022-07-05 23:15:52 +02:00
Lauri Ojansivu cb78501b04 Updated ChangeLog. 2022-07-05 23:40:28 +03:00
Lauri Ojansivu 65a031f29d Merge pull request #4581 from mfilser/checkStartup-details_of_wekan_user
00checkStartup, on error give more details on current user which run's wekan
2022-07-05 23:21:22 +03:00
Martin Filser 6c94b57cfc 00checkStartup, on error give more details on current user which run's Wekan 2022-07-05 21:35:59 +02:00
Lauri Ojansivu 7ae15cae27 Updated translations. 2022-07-04 17:54:59 +03:00
Lauri Ojansivu 0596595284 Updated ChangeLog. 2022-07-04 17:47:54 +03:00
Lauri Ojansivu 724d1386f6 Comment out unused CSS.
Thanks to xet7 !
2022-07-04 17:46:36 +03:00
Lauri Ojansivu 920b32735f Updated ChangeLog. 2022-07-04 17:46:20 +03:00
Lauri Ojansivu 86aa7ff353 Merge pull request #4577 from JonasPfeiferb1/master
fixed one Typo in CSS Style Sheet
2022-07-04 17:04:13 +03:00
Jonas Pfeifer 20d87f2299 fixed Typo 2022-07-04 15:24:21 +02:00
Lauri Ojansivu 88f05e8c4e Updated ChangeLog. 2022-06-30 18:45:11 +03:00
Lauri Ojansivu c3bfcb78e9 Updated ostrio:files .
Thanks to developers of dependencies !
2022-06-30 18:43:37 +03:00
Lauri Ojansivu 83a78c792a Updated ChangeLog. 2022-06-30 18:40:04 +03:00
Lauri Ojansivu 99b2fdbf99 Added translations: Arabic (Algeria) (ar_DZ), Azerbaijani (az), Azerbaijani (Azerbaijan) (az_AZ), Azerbaijani (Latin) (az@latin).
Thanks to translators !
2022-06-30 18:35:37 +03:00
Lauri Ojansivu 7ca9e8f4d3 Updated ChangeLog. 2022-06-25 21:58:00 +03:00
Lauri Ojansivu dac85c0a03 Merge pull request #4574 from helioguardabaxo/master
Fix div max-width on My Cards table view
2022-06-25 21:54:47 +03:00
helioguardabaxo 04e04ead92 Add display timestamp on 'Boards in Archive' 2022-06-24 22:19:40 -03:00
helioguardabaxo 008fc806e8 Fix div max-width on My Cards table view 2022-06-24 21:50:07 -03:00
Lauri Ojansivu af7874b700 Merge pull request #4565 from wekan/dependabot/github_actions/actions/dependency-review-action-2
Bump actions/dependency-review-action from 1 to 2
2022-06-24 23:59:03 +03:00
Lauri Ojansivu 94e1fa79b3 Merge pull request #4573 from helioguardabaxo/master
Do not show archived lists on All Boards
2022-06-24 23:58:29 +03:00
helioguardabaxo 6694088ac7 Do not show archived lists on All Boards 2022-06-24 16:40:03 -03:00
dependabot[bot] b4c74b8d4c Bump actions/dependency-review-action from 1 to 2
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 1 to 2.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/v1...v2)

---
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>
2022-06-20 20:34:39 +00:00
Lauri Ojansivu 28612612bd Update README.md
Fix typos
2022-06-20 08:21:21 +03:00
Lauri Ojansivu f2f834e810 Update README.md
Fix typos
2022-06-20 08:18:23 +03:00
Lauri Ojansivu 3e5f8f458c Update README.md
Fix typos
2022-06-20 08:14:05 +03:00
Lauri Ojansivu cffb5baa68 Updated ChangeLog. 2022-06-19 09:30:47 +03:00
Lauri Ojansivu 01d0dd3b1d Resizeable size of list width and height. Size is not saved yet. In Progress.
Thanks to NLBlackEagle and xet7 !

Related #4558
2022-06-19 09:28:50 +03:00
Lauri Ojansivu c8bb3c7353 Try migrate mongo 3 to mongo 5. 2022-06-16 03:11:56 +03:00
Lauri Ojansivu 709b17805b Try to fix Snap. 2022-06-16 02:00:54 +03:00
Lauri Ojansivu e9982e34ed Try to fix Snap. 2022-06-16 01:57:51 +03:00
Lauri Ojansivu 1c2c3d9dea Try to fix Snap: Add wget 2022-06-16 01:04:17 +03:00
Lauri Ojansivu bd26ed7f7a Try to fix Snap. 2022-06-16 00:56:54 +03:00
Lauri Ojansivu c48299c0dd Try to fix nap 2022-06-14 09:11:27 +03:00
Lauri Ojansivu 753c54a741 Try to fix Snap. 2022-06-14 08:49:00 +03:00
Lauri Ojansivu 48a9fe3440 Try to fix Snap. 2022-06-14 08:22:25 +03:00
Lauri Ojansivu be1893e66a Updated ChangeLog. 2022-06-13 13:59:07 +03:00
Lauri Ojansivu 0d67a86f2c Updated ostrio:files.
Thanks to developers of dependencies !
2022-06-13 13:57:47 +03:00
Lauri Ojansivu 6e979beb01 Updated ChangeLog. 2022-06-13 13:56:47 +03:00
Lauri Ojansivu 12615fef5d Added translation Asturia (Spain).
Thanks to translators !
2022-06-13 13:54:54 +03:00
Lauri Ojansivu 403e2f4cbd Updated ChangeLog. 2022-06-13 13:41:57 +03:00
Lauri Ojansivu 6b4ffa69c6 Docker base image to Ubuntu 22.04 .
Thanks to Ubuntu developers !
2022-06-13 13:39:35 +03:00
viehlieb 0f65e06338 wip card description save 2022-06-10 17:57:15 +02:00
viehlieb 84d51393e4 enable redirect to oidc provider to empower sso solutions even further 2022-06-10 17:52:52 +02:00
Lauri Ojansivu 51fb490c22 v6.28 2022-06-08 09:42:53 +03:00
Lauri Ojansivu f9e25e028e Updated ChangeLog. 2022-06-08 09:36:24 +03:00
Lauri Ojansivu 937797356c Updated dependencies. Try to fix Binary release on releases.wekan.team lacks the CSS.
Thanks to znerol, mrcancer91, BabyFnord and xet7 !

Fixes #4545
2022-06-08 09:32:34 +03:00
Lauri Ojansivu 21ae1b59d6 Updated ChangeLog. 2022-06-08 07:54:26 +03:00
Lauri Ojansivu e25050316f Try to detect Japanese (Japan) better.
Thanks to takenoko14 at Transifex and xet7 !
2022-06-08 07:52:20 +03:00
Lauri Ojansivu 2e06d466b9 Updated ChangeLog. 2022-06-08 07:44:55 +03:00
Lauri Ojansivu 5739b5d93c Merge pull request #4557 from mfilser/move_and_copy_card_set_sorting
Move and copy card set sorting
2022-06-08 07:43:21 +03:00
Martin Filser 6b6bdddce6 Move card to top/bottom using now the same internal code logic 2022-06-07 06:32:52 +02:00
Martin Filser dcff70c983 Copy card is now at the top too (same as move card) 2022-06-07 06:32:52 +02:00
Martin Filser ad5167de55 Card Details, move card between lists moves now the card to the top by default
- mostly the card is sorted anywhere and you have to scroll the list,
  now, the card is always at the top
2022-06-07 06:32:52 +02:00
Lauri Ojansivu 947692693c Merge pull request #4552 from wekan/dependabot/github_actions/VeryGoodOpenSource/very_good_coverage-1.2.1
Bump VeryGoodOpenSource/very_good_coverage from 1.1.1 to 1.2.1
2022-06-07 00:37:24 +03:00
Lauri Ojansivu 0c8e812991 Merge pull request #4555 from wekan/dependabot/github_actions/helm/chart-releaser-action-1.4.0
Bump helm/chart-releaser-action from 1.1.0 to 1.4.0
2022-06-07 00:35:01 +03:00
Lauri Ojansivu fb1742b149 Merge pull request #4554 from wekan/dependabot/github_actions/docker/build-push-action-3
Bump docker/build-push-action from 2.5.0 to 3
2022-06-07 00:34:37 +03:00
Lauri Ojansivu 054915031e Merge pull request #4553 from wekan/dependabot/github_actions/actions/download-artifact-3
Bump actions/download-artifact from 2 to 3
2022-06-07 00:34:19 +03:00
Lauri Ojansivu ada6b8ee9c Merge pull request #4556 from wekan/dependabot/github_actions/actions/upload-artifact-3
Bump actions/upload-artifact from 2 to 3
2022-06-07 00:34:01 +03:00
dependabot[bot] 63e0597c68 Bump actions/upload-artifact from 2 to 3
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v2...v3)

---
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>
2022-06-06 20:20:26 +00:00
dependabot[bot] c71cedf9f4 Bump helm/chart-releaser-action from 1.1.0 to 1.4.0
Bumps [helm/chart-releaser-action](https://github.com/helm/chart-releaser-action) from 1.1.0 to 1.4.0.
- [Release notes](https://github.com/helm/chart-releaser-action/releases)
- [Commits](https://github.com/helm/chart-releaser-action/compare/v1.1.0...v1.4.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>
2022-06-06 20:20:23 +00:00
dependabot[bot] f6ee321d0f Bump docker/build-push-action from 2.5.0 to 3
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 2.5.0 to 3.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/ad44023a93711e3deb337508980b4b5e9bcdc5dc...e551b19e49efd4e98792db7592c17c09b89db8d8)

---
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>
2022-06-06 20:20:19 +00:00
dependabot[bot] 2a24720fad Bump actions/download-artifact from 2 to 3
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 2 to 3.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v2...v3)

---
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>
2022-06-06 20:20:14 +00:00
dependabot[bot] a7fd512124 Bump VeryGoodOpenSource/very_good_coverage from 1.1.1 to 1.2.1
Bumps [VeryGoodOpenSource/very_good_coverage](https://github.com/VeryGoodOpenSource/very_good_coverage) from 1.1.1 to 1.2.1.
- [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/v1.1.1...v1.2.1)

---
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>
2022-06-06 20:20:09 +00:00
Lauri Ojansivu b7f62cf5f2 Updated ChangeLog. 2022-06-06 15:00:22 +03:00
Lauri Ojansivu dfea3d0e73 Removed lightbox that caused bugs like Maximum stack size exceeded. TODO later: Add a new way to open attachment image bigger.
Thanks to xet7 !

Related #4545
2022-06-06 14:58:45 +03:00
Lauri Ojansivu e4e1a8f4e6 Updated ChangeLog. 2022-06-06 10:45:56 +03:00
Lauri Ojansivu 43b2d71404 Upgraded to Meteor 2.7.3 .
Thanks to Meteor developers !
2022-06-06 10:41:49 +03:00
Lauri Ojansivu c9f8e111c5 Updated ChangeLog. 2022-06-06 10:34:48 +03:00
Lauri Ojansivu 67596602d7 Merge branch 'master' of github.com:wekan/wekan 2022-06-06 10:33:13 +03:00
Lauri Ojansivu 5af4f54f4c Added translations: Moroccan Arabic (ary) and Standard Moroccan Tamazight (zgh).
Thanks to translators!
2022-06-06 10:32:36 +03:00
Lauri Ojansivu 0d7d38b358 Merge pull request #4543 from turrisxyz/Dependency-GitHub 2022-06-02 05:51:49 +03:00
naveen 680770a7df chore(deps): Included dependency review
> Dependency Review GitHub Action in your repository to enforce dependency
> reviews on your pull requests.
> The action scans for vulnerable versions of dependencies introduced by package version
> changes in pull requests,
> and warns you about the associated security vulnerabilities.
> This gives you better visibility of what's changing in a pull request,
> and helps prevent vulnerabilities being added to your repository.

https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement
Signed-off-by: naveen <172697+naveensrinivasan@users.noreply.github.com>
2022-06-01 23:35:00 +00:00
Lauri Ojansivu 14c3432896 Merge pull request #4539 from wekan/dependabot/github_actions/github/codeql-action-2
Bump github/codeql-action from 1 to 2
2022-05-31 05:17:43 +03:00
Lauri Ojansivu 34fc724d95 Merge pull request #4537 from wekan/dependabot/github_actions/docker/login-action-2
Bump docker/login-action from 1.9.0 to 2
2022-05-31 05:17:11 +03:00
dependabot[bot] 1ed2c3b45a Bump docker/login-action from 1.9.0 to 2
Bumps [docker/login-action](https://github.com/docker/login-action) from 1.9.0 to 2.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/28218f9b04b4f3f62068d7b6ce6ca5b26e35336c...49ed152c8eca782a232dede0303416e8f356c37b)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-31 02:16:56 +00:00
Lauri Ojansivu 81f74f4db6 Merge pull request #4536 from wekan/dependabot/github_actions/docker/metadata-action-4.0.1
Bump docker/metadata-action from 3.3.0 to 4.0.1
2022-05-31 05:16:33 +03:00
Lauri Ojansivu b5bc07d2e7 Merge pull request #4535 from wekan/dependabot/github_actions/actions/checkout-3
Bump actions/checkout from 2 to 3
2022-05-31 05:15:57 +03:00
Lauri Ojansivu 85fcaff678 Merge pull request #4538 from wekan/dependabot/github_actions/actions/cache-3
Bump actions/cache from 2 to 3
2022-05-31 05:15:11 +03:00
dependabot[bot] d5247daf8a Bump github/codeql-action from 1 to 2
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1 to 2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v1...v2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-31 02:12:27 +00:00
dependabot[bot] 9ff87d189f Bump actions/cache from 2 to 3
Bumps [actions/cache](https://github.com/actions/cache) from 2 to 3.
- [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/v2...v3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-31 02:12:24 +00:00
dependabot[bot] 2d36116823 Bump docker/metadata-action from 3.3.0 to 4.0.1
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 3.3.0 to 4.0.1.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Upgrade guide](https://github.com/docker/metadata-action/blob/master/UPGRADE.md)
- [Commits](https://github.com/docker/metadata-action/compare/98669ae865ea3cffbcbaa878cf57c20bbf1c6c38...69f6fc9d46f2f8bf0d5491e4aabe0bb8c6a4678a)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-31 02:12:17 +00:00
dependabot[bot] 9f0b9b29a5 Bump actions/checkout from 2 to 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-31 02:12:13 +00:00
Lauri Ojansivu 1d7e08390c Merge pull request #4534 from turrisxyz/Dependabot-GitHub-Actions
chore: Included githubactions in the dependabot config
2022-05-31 05:11:48 +03:00
naveen bbffa2eb6b chore: Included githubactions in the dependabot config
This should help with keeping the GitHub actions updated on new releases. This will also help with keeping it secure.

Dependabot helps in keeping the supply chain secure https://docs.github.com/en/code-security/dependabot

GitHub actions up to date https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot

https://github.com/ossf/scorecard/blob/main/docs/checks.md#dependency-update-tool
Signed-off-by: naveen <172697+naveensrinivasan@users.noreply.github.com>
2022-05-31 01:40:38 +00:00
Lauri Ojansivu 52ea940265 Merge pull request #4533 from turrisxyz/Pinned-Dependencies-GitHub
chore: Set permissions for GitHub actions
2022-05-30 04:15:47 +03:00
neilnaveen 355b358fe2 chore: Set permissions for GitHub actions
Restrict the GitHub token permissions only to the required ones; this way, even if the attackers will succeed in compromising your workflow, they won’t be able to do much.

- Included permissions for the action. https://github.com/ossf/scorecard/blob/main/docs/checks.md#token-permissions

https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions

https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs

[Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/)

Signed-off-by: neilnaveen <42328488+neilnaveen@users.noreply.github.com>
2022-05-30 01:09:08 +00:00
Lauri Ojansivu d74662bfd7 Updated ChangeLog. 2022-05-29 00:26:23 +03:00
Lauri Ojansivu e151da7163 Updated ChangeLog. 2022-05-29 00:24:42 +03:00
Lauri Ojansivu 1c71baec81 Update package-lock.json 2022-05-28 23:17:03 +03:00
Lauri Ojansivu 9382c2cd04 v6.27 2022-05-28 23:10:25 +03:00
Lauri Ojansivu 25e50e3908 Upgraded to Meteor 2.7.3-beta.0 .
Thanks to Meteor developers !
2022-05-28 22:58:04 +03:00
Lauri Ojansivu c6331830d4 Updated translations. 2022-05-28 22:38:17 +03:00
Lauri Ojansivu 4226a0bc37 Updated ChangeLog. 2022-05-24 00:47:35 +03:00
Lauri Ojansivu 693a49f852 Try to fix Snap. Part 8.
Thanks to xet7 !
2022-05-24 00:46:41 +03:00
Lauri Ojansivu 0b797ceb7e Updated ChangeLog. 2022-05-24 00:33:06 +03:00
Lauri Ojansivu 2587e2f00a Try to fix Snap. Part 7.
Thanks to xet7 !
2022-05-24 00:32:20 +03:00
Lauri Ojansivu 6ad83bcaeb Updated ChangeLog. 2022-05-24 00:15:29 +03:00
Lauri Ojansivu f2815a9039 Try to fix Snap. Part 6.
Thanks to xet7 !
2022-05-24 00:14:12 +03:00
Lauri Ojansivu 6d7e69cc9f Updated ChangeLog. 2022-05-24 00:02:19 +03:00
Lauri Ojansivu fac1ba5952 Try to fix Snap. Part 5.
Thanks to xet7 !
2022-05-24 00:01:13 +03:00
Lauri Ojansivu 3db14ad03a Updated ChangeLog. 2022-05-23 23:45:16 +03:00
Lauri Ojansivu 9ca26d22d0 Try to fix Snap. Part 4.
Thanks to xet7 !
2022-05-23 23:44:16 +03:00
Lauri Ojansivu 7640c7c04d Updated ChangeLog. 2022-05-23 23:23:34 +03:00
Lauri Ojansivu ea66eca60d Try to fix Snap. Part 3: Added --unsafe-perm to npm install.
Thanks to xet7 !

Related https://github.com/wekan/wekan/issues/4505#issuecomment-1135101672
2022-05-23 23:22:00 +03:00
Lauri Ojansivu 0ae8de4c04 Updated ChangeLog. 2022-05-23 22:58:45 +03:00
Lauri Ojansivu e50d69cfb7 Try to fix Snap. Part 2.
Thanks to xet7 !
2022-05-23 22:57:36 +03:00
Lauri Ojansivu d95436df51 Updated ChangeLog. 2022-05-23 22:34:39 +03:00
Lauri Ojansivu 3b419848d1 Try to fix Snap.
Thanks to xet7 !

Related #4524,
related #4423
2022-05-23 22:32:45 +03:00
Lauri Ojansivu 8efc8605a1 Updated ChangeLog. 2022-05-23 14:09:07 +03:00
Lauri Ojansivu 4f44c5bf87 Removed wekan-accounts-sandstorm .test-app directory, that could not be git cloned on Windows.
Thanks to xet7 !
2022-05-23 13:39:55 +03:00
Lauri Ojansivu 4b12245537 Updated ChangeLog. 2022-05-23 00:53:17 +03:00
Lauri Ojansivu adcc33ed7f Fix opening card scrolls to wrong position when many swimlanes and card at bottom of board.
Thanks to xet7 !
2022-05-23 00:50:21 +03:00
Lauri Ojansivu f1482cfa94 Updated translations. 2022-05-22 23:38:13 +03:00
viehlieb 2e354f9b1e wip redirect on landing page and logout to oidc provider 2022-05-11 09:05:43 +02:00
viehlieb b97c51abde Revert "Updated ChangeLog."
This reverts commit 75525c2215.
2022-04-29 10:13:59 +02:00
viehlieb 8c8560cfc2 add i18n to gitignote rm i18n from git tracking for faster development 2022-04-29 09:41:14 +02:00
251 changed files with 17401 additions and 3062 deletions

No files matched your search

+7 -1
View File
@@ -10,7 +10,7 @@ ENV DEBIAN_FRONTEND=noninteractive
ENV \
DEBUG=false \
NODE_VERSION=v14.19.3 \
NODE_VERSION=v14.20.0 \
METEOR_RELEASE=1.10.2 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
@@ -30,6 +30,12 @@ ENV \
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 \
MAX_IMAGE_PIXEL="" \
IMAGE_COMPRESS_RATIO="" \
NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE="" \
+1 -1
View File
@@ -81,7 +81,7 @@ parts:
wekan:
source: .
plugin: nodejs
node-engine: 14.19.3
node-engine: 14.20.0
node-packages:
- node-gyp
- node-pre-gyp
+6
View File
@@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
+11 -4
View File
@@ -9,8 +9,15 @@ on:
schedule:
- cron: '0 16 * * 3'
permissions:
contents: read
jobs:
analyze:
permissions:
actions: read # for github/codeql-action/init to get workflow details
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/autobuild to send a status report
name: Analyze
runs-on: ubuntu-latest
@@ -25,7 +32,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
@@ -38,14 +45,14 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
uses: github/codeql-action/autobuild@v2
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -59,4 +66,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
uses: github/codeql-action/analyze@v2
+14
View File
@@ -0,0 +1,14 @@
name: 'Dependency Review'
on: [pull_request]
permissions:
contents: read
jobs:
dependency-review:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v3
- name: 'Dependency Review'
uses: actions/dependency-review-action@v2
+4 -4
View File
@@ -32,13 +32,13 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
# Login against a Docker registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c
uses: docker/login-action@49ed152c8eca782a232dede0303416e8f356c37b
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@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
uses: docker/metadata-action@69f6fc9d46f2f8bf0d5491e4aabe0bb8c6a4678a
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@ad44023a93711e3deb337508980b4b5e9bcdc5dc
uses: docker/build-push-action@c84f38281176d4c9cdb1626ffafcd6b3911b5d94
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
+4 -1
View File
@@ -5,6 +5,9 @@ on:
branches:
- master
permissions:
contents: read
jobs:
build:
@@ -12,6 +15,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v3
- name: Build the Docker image
run: docker build . --file Dockerfile --tag wekan:$(date +%s)
+7 -2
View File
@@ -5,12 +5,17 @@ on:
branches:
- master
permissions:
contents: read
jobs:
release:
permissions:
contents: write # for helm/chart-releaser-action to push chart release and create a release
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 0
@@ -20,6 +25,6 @@ jobs:
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.1.0
uses: helm/chart-releaser-action@v1.4.0
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+11 -11
View File
@@ -15,7 +15,7 @@ jobs:
# runs-on: ubuntu-latest
# steps:
# - name: checkout
# uses: actions/checkout@v2
# uses: actions/checkout@v3
#
# - name: setup node
# uses: actions/setup-node@v1
@@ -39,7 +39,7 @@ jobs:
# needs: [lintcode]
# steps:
# - name: checkout
# uses: actions/checkout@v2
# uses: actions/checkout@v3
#
# - name: setup node
# uses: actions/setup-node@v1
@@ -62,7 +62,7 @@ jobs:
# needs: [lintcode,lintstyle]
# steps:
# - name: checkout
# uses: actions/checkout@v2
# uses: actions/checkout@v3
#
# - name: setup node
# uses: actions/setup-node@v1
@@ -87,12 +87,12 @@ jobs:
# CHECKOUTS
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
# CACHING
- name: Install Meteor
id: cache-meteor-install
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ~/.meteor
key: v1-meteor-${{ hashFiles('.meteor/versions') }}
@@ -101,7 +101,7 @@ jobs:
- name: Cache NPM dependencies
id: cache-meteor-npm
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ~/.npm
key: v1-npm-${{ hashFiles('package-lock.json') }}
@@ -110,7 +110,7 @@ jobs:
- name: Cache Meteor build
id: cache-meteor-build
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: |
.meteor/local/resolver-result-cache.json
@@ -133,7 +133,7 @@ jobs:
run: sh ./test-wekan.sh -cv
- name: Upload coverage
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: coverage-folder
path: .coverage/
@@ -144,17 +144,17 @@ jobs:
needs: [tests]
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Download coverage
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: coverage-folder
path: .coverage/
- name: Coverage Report
uses: VeryGoodOpenSource/very_good_coverage@v1.1.1
uses: VeryGoodOpenSource/very_good_coverage@v1.2.1
with:
path: ".coverage/lcov.info"
min_coverage: 1 # TODO add tests and increase to 95!
+15 -19
View File
@@ -7,7 +7,6 @@ meteor-base@1.5.1
# Build system
ecmascript@0.16.2
standard-minifier-css@1.8.1
standard-minifier-js@2.8.0
mquandalle:jade
coffeescript@2.4.1!
@@ -21,14 +20,22 @@ cfs:standard-packages
cottz:publish-relations
dburles:collection-helpers
idmontie:migrations
matteodem:easy-search
easy:search
mongo@1.15.0
mquandalle:collection-mutations
# Account system
#wekan-ldap
#wekan-accounts-cas
#wekan-accounts-oidc
accounts-password@2.3.1
useraccounts:core
useraccounts:flow-routing
useraccounts:unstyled
simple:rest-accounts-password
wekan-ldap
wekan-accounts-cas
wekan-accounts-sandstorm
wekan-accounts-lockout
wekan-oidc
wekan-accounts-oidc
# Utilities
check@1.3.1
@@ -61,8 +68,8 @@ meteor-autosize
rajit:bootstrap3-datepicker
shell-server@0.5.0
email@2.2.1
horka:swipebox
dynamic-import@0.7.2
cfs:gridfs
rzymek:fullcalendar
msavin:usercache
@@ -74,7 +81,7 @@ konecty:mongo-counter
percolate:synced-cron
cfs:filesystem
ostrio:cookies
ostrio:files@2.0.1
ostrio:files@2.3.0
rajit:bootstrap3-datepicker-fi
rajit:bootstrap3-datepicker-ar
rajit:bootstrap3-datepicker-bg
@@ -128,21 +135,10 @@ pascoual:pdfkit
lmieulet:meteor-coverage
meteortesting:mocha@2.0.3
aldeed:simple-schema
accounts-password@2.3.1
matb33:collection-hooks
simple:json-routes
kadira:flow-router
spacebars
useraccounts:core
useraccounts:flow-routing
useraccounts:unstyled
service-configuration@1.3.0
communitypackages:picker
simple:rest-accounts-password
wekan-accounts-sandstorm
wekan-accounts-lockout
wekan-oidc
wekan-accounts-oidc
wekan-ldap
wekan-accounts-cas
czbaker:lightbox2
minifier-css
+1 -1
View File
@@ -1 +1 @@
METEOR@2.7.2
METEOR@2.7.3
+16 -19
View File
@@ -1,4 +1,4 @@
accounts-base@2.2.3
accounts-base@2.2.4
accounts-oauth@1.4.1
accounts-password@2.3.1
aldeed:collection2@2.10.0
@@ -10,11 +10,11 @@ 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.9.0
babel-runtime@1.5.0
babel-compiler@7.9.2
babel-runtime@1.5.1
base64@1.0.12
binary-heap@1.0.11
blaze@2.6.0
blaze@2.6.1
blaze-tools@1.1.3
boilerplate-generator@1.7.1
caching-compiler@1.2.2
@@ -43,7 +43,6 @@ coffeescript@2.4.1
coffeescript-compiler@2.4.1
communitypackages:picker@1.1.0
cottz:publish-relations@2.0.8
czbaker:lightbox2@2.7.1_1
dburles:collection-helpers@1.1.0
ddp@1.4.0
ddp-client@2.5.0
@@ -53,7 +52,10 @@ ddp-server@2.5.0
deps@1.0.12
diff-sequence@1.1.1
dynamic-import@0.7.2
easy:search@2.2.1
easylogic:summernote@0.8.8
easysearch:components@2.2.2
easysearch:core@2.2.2
ecmascript@0.16.2
ecmascript-runtime@0.8.0
ecmascript-runtime-client@0.12.1
@@ -61,10 +63,10 @@ ecmascript-runtime-server@0.11.0
ejson@1.1.2
email@2.2.1
es5-shim@4.8.0
fastclick@1.0.13
fetch@0.1.1
fortawesome:fontawesome@4.7.0
geojson-utils@1.0.10
horka:swipebox@1.0.2
hot-code-push@1.0.4
html-tools@1.1.3
htmljs@1.1.1
@@ -77,18 +79,15 @@ kadira:blaze-layout@2.3.0
kadira:dochead@1.5.0
kadira:flow-router@2.12.1
konecty:mongo-counter@0.0.5_3
launch-screen@1.3.0
livedata@1.0.18
lmieulet:meteor-coverage@1.1.4
localstorage@1.2.0
logging@1.3.1
matb33:collection-hooks@1.1.2
matteodem:easy-search@1.6.4
matb33:collection-hooks@1.1.4
mdg:validation-error@0.5.1
meteor@1.10.0
meteor-autosize@5.0.1
meteor-base@1.5.1
meteor-platform@1.2.6
meteorhacks:aggregate@1.3.0
meteorhacks:collection-utils@1.2.0
meteorhacks:picker@1.0.3
@@ -96,11 +95,10 @@ meteorhacks:subs-manager@1.6.4
meteortesting:browser-tests@1.3.5
meteortesting:mocha@2.0.3
meteortesting:mocha-core@8.0.1
minifier-css@1.6.0
minifier-js@2.7.4
minifier-css@1.6.1
minifier-js@2.7.5
minifiers@1.1.8-faster-rebuild.0
minimongo@1.8.0
mobile-status-bar@1.1.0
modern-browsers@0.1.8
modules@0.18.0
modules-runtime@0.13.0
@@ -124,10 +122,10 @@ oauth2@1.3.1
observe-sequence@1.0.20
ongoworks:speakingurl@1.1.0
ordered-dict@1.1.0
ostrio:cookies@2.7.0
ostrio:cstorage@2.2.2
ostrio:files@2.0.1
ostrio:i18n@3.1.0
ostrio:cookies@2.7.2
ostrio:cstorage@4.0.1
ostrio:files@2.3.0
ostrio:i18n@3.2.0
pascoual:pdfkit@1.0.7
peerlibrary:assert@0.3.0
peerlibrary:base-component@0.17.1
@@ -209,8 +207,7 @@ simple:rest-json-error-handler@1.1.1
socket-stream-client@0.5.0
spacebars@1.3.0
spacebars-compiler@1.3.1
standard-minifier-css@1.8.1
standard-minifier-js@2.8.0
standard-minifier-js@2.8.1
templates:tabs@2.3.0
templating@1.4.1
templating-compiler@1.4.1
+1 -1
View File
@@ -3,7 +3,7 @@ sudo: required
env:
TRAVIS_DOCKER_COMPOSE_VERSION: 1.24.0
TRAVIS_NODE_VERSION: 14.19.3
TRAVIS_NODE_VERSION: 14.20.0
TRAVIS_NPM_VERSION: latest
before_install:
+1 -1
View File
@@ -39,7 +39,7 @@ host = https://www.transifex.com
# tap:i18n requires us to use `-` separator in the language identifiers whereas
# Transifex uses a `_` separator, without an option to customize it on one side
# or the other, so we need to do a Manual mapping.
lang_map = ar_EG:ar-EG, bg_BG:bg, cs_CZ:cs-CZ, cy_GB:cy-GB, de_AT:de-AT, de_CH:de-CH, en_BR:en-BR, en_DE:en-DE, en_IT:en-IT, en_GB:en-GB, et_EE:et-EE, es_AR:es-AR, en@ysv:en-YS, es_CL:es-CL, es_419:es-LA, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el-GR, fa_IR:fa-IR, fi_FI:fi, fr_FR:fr-FR, fr_CH:fr-CH, fy_NL:fy-NL, gl_ES:gl-ES, gu_IN:gu-IN, he_IL:he-IL, hi_IN:hi-IN, hu_HU:hu, id_ID:id, mn_MN:mn, ms_MY:ms-MY, nl_NL:nl-NL, ko_KR:ko-KR, lv_LV:lv, pl_PL:pl-PL, pt_BR:pt-BR, ro_RO:ro, ru_UA:ru-UA, sl_SI:sl, uk_UA:uk-UA, uz@Arab:uz-AR, uz@Latn:uz-LA, uz_UZ:uz-UZ, vec:ve-CC, vep:ve-PP, vls:vl-SS, war:wa-RR, vi_VN:vi-VN, zh_CN:zh-CN, zh_TW:zh-TW, zh_Hans:zh-Hans, zh_HK:zh-HK, zu_ZA:zu-ZA
lang_map = ar_DZ:ar-DZ, ar_EG:ar-EG, az_AZ:az-AZ, az@latin:az-LA, bg_BG:bg, cs_CZ:cs-CZ, cy_GB:cy-GB, de_AT:de-AT, de_CH:de-CH, en_BR:en-BR, en_DE:en-DE, en_IT:en-IT, en_GB:en-GB, en_MY:en-MY, et_EE:et-EE, ast_ES:ast-ES, es_AR:es-AR, en@ysv:en-YS, es_CL:es-CL, es_419:es-LA, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el-GR, fa_IR:fa-IR, ja-Hira:ja-HI, ja_JP:ja, fi_FI:fi, fr_FR:fr-FR, fr_CH:fr-CH, fy_NL:fy-NL, gl_ES:gl-ES, gu_IN:gu-IN, he_IL:he-IL, hi_IN:hi-IN, hu_HU:hu, id_ID:id, mn_MN:mn, ms_MY:ms-MY, nl_NL:nl-NL, ko_KR:ko-KR, lv_LV:lv, pl_PL:pl-PL, pt_BR:pt-BR, ro_RO:ro, ru_UA:ru-UA, sl_SI:sl, uk_UA:uk-UA, uz@Arab:uz-AR, uz@Latn:uz-LA, uz_UZ:uz-UZ, vec:ve-CC, vep:ve-PP, vls:vl-SS, war:wa-RR, vi_VN:vi-VN, zh_CN:zh-CN, zh_TW:zh-TW, zh_Hans:zh-Hans, zh_HK:zh-HK, zu_ZA:zu-ZA
[wekan.application]
file_filter = imports/i18n/data/<lang>.i18n.json
+417 -5
View File
@@ -1,5 +1,417 @@
[Mac ChangeLog](https://github.com/wekan/wekan/wiki/Mac)
Required versions of Node.js, MongoDB etc are listed at https://wekan.github.io
Download section.
[How to upgrade WeKan](https://github.com/wekan/wekan/issues/4585)
# v6.45 2022-09-14 WeKan ® release
This release adds the following new features:
- [Add ARIA in checklist items](https://github.com/wekan/wekan/pull/4677).
Thanks to helioguardabaxo.
- [Heading hierarchy fixed on checklist title to simplify screen reader](https://github.com/wekan/wekan/pull/4680).
Thanks to helioguardabaxo.
- [Add info about RTL languages to Meteor WeKan. Not used in Meteor WeKan yet](https://github.com/wekan/wekan/commit/cf7c0512422178be23d287cce269a7b854a2bc21).
Thanks to xet7.
- [Added help button with custom URL](https://github.com/wekan/wekan/pull/4681).
Thanks to helioguardabaxo.
and adds the following updates:
- [Add starting wekan test to arm64/s390x/ppc64el release scripts](https://github.com/wekan/wekan/commit/51ed0acc4f84ebce497f52a3267e57f554b3cd30).
Thanks to xet7.
and fixes the following bugs:
- [Avoid non-terminating containers](https://github.com/wekan/wekan/pull/4675).
Thanks to bronger.
- [Fixed WeKan api.py . WeKan API now works in newest WeKan and n8n](https://github.com/wekan/wekan/commit/aa2c3774a233025a163e9d9c210ad2f1807c0acb).
Thanks to DimDz and Joffcom.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.44 2022-09-05 WeKan ® release
This release adds the following new features:
- [Add tab view to sidebar members: people, orgs and teams](https://github.com/wekan/wekan/pull/4672).
Thanks to helioguardabaxo.
and adds the following updates:
- [Updated matb33:collection-hooks](https://github.com/wekan/wekan/commit/0f6d84d69f286c8191e8d3a6eee59bc3f6845ad1).
Thanks to developers of dependencies.
and fixes the following bugs:
- [Added missing currentUser](https://github.com/wekan/wekan/commit/3a0269640b7fad0d40dc3b65f559f5124f4256b6).
Thanks to xet7.
- [Removed old stuff from Dockerfile](https://github.com/wekan/wekan/commit/77927a1ca4fb9bf9c68fe823cf0dd9a95f310879).
Thanks to xet7.
- [Fix building Dockerfile on Mac M1 etc](https://github.com/wekan/wekan/commit/3772ce3acab5a7421144df3a538def33baf0eda4).
Thanks to willman42 and xet7.
- [Fix 2) Due date is not created nor changed, when cards are moved in the calendar view](https://github.com/wekan/wekan/commit/6b4613d3ed6020b4072fe6540da5fdb0b2e85ac7).
Thanks to DimDz.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.43 2022-09-01 WeKan ® release
This release fixes the following bugs:
- [Revert Remove hard-coded port 8080 binding in Dockerfile](https://github.com/wekan/wekan/pull/4667).
Thanks to willman42.
- [Added back autologin, because reverting it broke Google OIDC login](https://github.com/wekan/wekan/commit/1e4fba3ec8366aac2e9fdd812aa047f5d53db749).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.42 2022-08-31 WeKan ® release
This release adds the following new translations:
- [Added translations: English (Malaysia) (en_MY), Japanese (Hiragana) (ja-Hira), Malay (ms)](https://github.com/wekan/wekan/commit/17f97f6acc1827e956039f4cae5e15e7fcb0e19e).
Thanks to dimanLubis.
and fixes the following bugs:
- [Fix check for current user at card details](https://github.com/wekan/wekan/commit/68e4e6f04921a3618d71d72b617f49c9ee85c18f).
Thanks to xet7.
- [Comment out CentOS 7 specific settings](https://github.com/wekan/wekan/commit/d470a74a9fe2a2029c2063d940d4573b58adf6c0).
Thanks to williamtrelawny and xet7.
- [00checkStartup, userInfo was missing](https://github.com/wekan/wekan/pull/4662).
Thanks to mfilser.
- Try to fix EasySearch.
[Part 2](https://github.com/wekan/wekan/commit/a21883e3a151644ffeac921b5978157d0674c414),
[Part 3](https://github.com/wekan/wekan/commit/0d3b7ca04121abd2f170a5934672bc79112ac4ef).
Thanks to danielkaiser and xet7.
- [Revert autologin, because it broke OIDC login with Keycloak](https://github.com/wekan/wekan/commit/43a709675394f6aade42033c14c7fb5b78ac25c8).
Thanks to wb9688 and xet7.
- [Remove hard-coded port 8080 binding in Dockerfile](https://github.com/wekan/wekan/pull/4663).
Thanks to willman42.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.41 2022-08-28 WeKan ® release
This release fixes the following bugs:
- [Try to fix EasySearch syntax](https://github.com/wekan/wekan/commit/5ca84d293080c682de9c23c6754f142e7f3cd383).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.40 2022-08-25 WeKan ® release
This release fixes the following bugs:
- [Move/Copy Card dialog didn't set the last selected board right](https://github.com/wekan/wekan/pull/4657).
Thanks to mfilser.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.39 2022-08-21 WeKan ® release
This release adds the following new features:
- [Add support to validate avatar uploads by type, size and external program](https://github.com/wekan/wekan/pull/4648).
Thanks to NotTheEvilOne.
- [Attachment using new feature of Meteor Files 2.3.0](https://github.com/wekan/wekan/pull/4650).
Thanks to mfilser.
and adds the following updates:
- [Upgraded Snap candidate MongoDB versions](https://github.com/wekan/wekan/commit/d0f1382055278a2f78fd9d53b0dd5c3daaaf23fd).
Thanks to MongoDB developers.
and fixes the following bugs:
- [Set miniscreen to 250px to get Mobile Android Firefox working](https://github.com/wekan/wekan/pull/4649).
Thanks to repmovs.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.38 2022-08-18 WeKan ® release
This release adds the following new features:
- [Add support to validate attachment uploads by an external program](https://github.com/wekan/wekan/pull/4637).
Thanks to NotTheEvilOne.
- [Attachment upload progress bar + multiple files upload](https://github.com/wekan/wekan/pull/4641).
Thanks to mfilser.
- [Move and copy card dialog remember last selected board](https://github.com/wekan/wekan/pull/4643).
Thanks to mfilser.
- [Copy card copies now attachments too](https://github.com/wekan/wekan/pull/4646).
Thanks to mfilser.
- [Copy / move card and checklists using same code](https://github.com/wekan/wekan/pull/4647).
Thanks to mfilser.
and adds the following updates:
- [Updated to ostrio:files 2.3.0 and standard-minifier-js 2.8.1](https://github.com/wekan/wekan/commit/ce1f8b674de9e9a7d03e198e88e7a200af576729).
Thanks to developers of dependencies.
- [Updated parse-ms](https://github.com/wekan/wekan/commit/79add98aa77658221a86830f4816f19a15a52460).
Thanks to developers of dependencies.
and fixes the following bugs:
- [Meteor files 2.2.1 fixes + attachment view](https://github.com/wekan/wekan/pull/4638).
Thanks to mfilser.
- [Fix Validate attachment error at PR Meteor files 2.2.1 fixes + attachment view](https://github.com/wekan/wekan/commit/c23f5dc8582e948a7c9af6fd1c6c7cca85a7e1f1).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.37 2022-08-15 WeKan ® release
This release fixes the following CRITICAL SECURITY ISSUES:
- [Updated dependencies like ostrio:files etc](https://github.com/wekan/wekan/commit/7c619859fcb6a609581adc8f09c7937b7c2efcc4).
Thanks to developers of dependencies and xet7.
and fixes the following bugs:
- [Fix All Boards: The list of lists on each card with the summary counts is not sorted](https://github.com/wekan/wekan/pull/4635).
Thanks to repmovs.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.36 2022-08-14 WeKan ® release
This release fixes the following bugs:
- [Revert Fix Open card links in current tab. So now links open in new tab](https://github.com/wekan/wekan/commit/8560b36a5aeb31d7032d82f75a53a18281c9f7f8).
Thanks to dvsk, mfilser and xet7.
- [Revert Fix URLs to favicons etc for sub-urls, because it broke favicons on subdomain URLs](https://github.com/wekan/wekan/commit/8566f32bbdd3ce42ab907602fcb61ad67ece41c9).
Thanks to dsvk and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.35 2022-08-13 WeKan ® release
This release fixes the following CRITICAL SECURITY ISSUES:
- [Fix Users can delete Boards from global archive (w/o permission)](https://github.com/wekan/wekan/commit/54e6e32ab2ec0b3a6f4e18154f66d154cf4ee0de).
Thanks to Meeques and xet7.
and adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/commit/3762768ed39f967aa26b76c0454e7d5900655cc4).
Thanks to developers of dependencies.
and fixes the following bugs:
- [Fix Typo in CHANGELOG](https://github.com/wekan/wekan/pull/4624).
Thanks to mfilser.
- [Fix _getTopStack(), comment type error](https://github.com/wekan/wekan/pull/4625).
Thanks to mfilser.
- [Set drag handle on touch screen not miniscreen](https://github.com/wekan/wekan/pull/4633).
Thanks to repmovs.
- [Fix Open card links in current tab. Not in new tab anymore](https://github.com/wekan/wekan/commit/ee3c5cbb6a1ab87c1597d0ffcd6996f423f4d1b3).
Thanks to bronger, ManZosh and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.34 2022-08-05 WeKan ® release
This release adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/commit/43360c103b462ee02945d629ce46e9010fccd5d6).
Thanks to developers of dependencies.
and fixes the following bugs:
- [Fix and update easysearch](https://github.com/wekan/wekan/pull/4623).
Thanks to danielkaiser.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.33 2022-08-05 WeKan ® release
This release fixes the following bugs:
- [Try 2 to fix missing variable in WeKan fails to get MongoDB server version](https://github.com/wekan/wekan/commit/37f9de8b9b11e8dd1b54452531aa708e16517c6d).
Thanks to simon816 and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.32 2022-08-05 WeKan ® release
This release adds the following new features:
- [Add support to validate attachment uploads by type and size](https://github.com/wekan/wekan/pull/4618).
Thanks to NotTheEvilOne.
- [Added attachments file type and size snap settings and help text](https://github.com/wekan/wekan/commit/0c224a0a7f3f2f99839db65eed896bb2dd316e3c).
Thanks to xet7.
- [Added dependencies for attachments file size and type](https://github.com/wekan/wekan/commit/1b30485e68e5cd30784207801a1c8d659fb14018) (HEAD -> master)
Thanks to xet7.
and adds the following updates:
- Updated release build scripts to reinstall bcrypt, upload Windows version etc.
[Part 1](https://github.com/wekan/wekan/commit/14e5d08a19d213ab901cce9088a3e368b508e7d0),
[Part 2](https://github.com/wekan/wekan/commit/86d6d2d19aacaf0cadcbf36e223208a5a5e69ecd),
[Part 3](https://github.com/wekan/wekan/commit/73ea39466bd08f8d82e21beb0f71e715ee5ac120).
Thanks to xet7.
- [Try to fix Snap Candidate](https://github.com/wekan/wekan/commit/b433fbdda81478558585cbaa7717d00247550325).
Thanks to xet7.
and fixes the following bugs:
- [Fix In Lists view, Card Details pop-up does not appear in 6.31 release](https://github.com/wekan/wekan/commit/063ad08e9e81f5235d323cc3ed7af4cd5610dc93).
Thanks to Sdub76, niels, m4teh, r4nc0r, mfilser, medjedovicm and xet7.
- [Try to fix missing variable in WeKan fails to get MongoDB server version](https://github.com/wekan/wekan/commit/4941fd183c54f514119587380bf659115a1adc6e).
Thanks to simon816 and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.31 2022-07-31 WeKan ® release
This release adds the following new features:
- [Added LaTex support to all input fields with markdown-it-mathjax3](https://github.com/wekan/wekan/commit/e81900178e62d36672952a8f0707c5297dcd7767).
Examples: https://github.com/wekan/wekan/wiki/LaTeX .
Thanks to DoktorScience.
- [Rescue Save description on card exit](https://github.com/wekan/wekan/pull/4598).
Thanks to Viehlieb.
and adds the following updates:
- [Snap Candidate to MongoDB 5.0.10 etc](https://github.com/wekan/wekan/commit/27198c4064a41035bb800aa5e5797852e1dfdafb).
Thanks to MongoDB developers and xet7.
and fixes the following bugs:
- [Fix URLs to favicons etc](https://github.com/wekan/wekan/commit/1b95f9f167a021ac0d0c9392ced6a9cd888ffe2d).
Thanks to letmp, Meeques and xet7.
- [Fix the bug that displayed a card popup to all swimlanes for public board (when a user is not logged)](https://github.com/wekan/wekan/pull/4610).
Thanks to Emile840.
- [Reverted incomplete fix about bug where opening card scrolls to wrong place](https://github.com/wekan/wekan/commit/6594795f39bd6d14a7105dc61642baa034995bad).
Thanks to danceb, DimDz, mfilser, Emile840, derbolle, xplodwild and xet7.
- [Fix Login Page Error, Lists can't move anymore, reverted incomplete Change Lists Width](https://github.com/wekan/wekan/commit/d37adbb0462c7fc9f645594b3bd20d2bec781b18).
Thanks to johnnytolengo, gda140 and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.30 2022-07-11 WeKan ® release
This release adds the following new features:
- [Automatic login with OIDC](https://github.com/wekan/wekan/pull/4588).
Thanks to Viehlieb.
- [OIDC/OAuth2 autologin settings for Docker/Snap/Source/Bundle platforms](https://github.com/wekan/wekan/commit/284f4401369aadcec72e67fa935dfc3a9fead721).
Thanks to xet7.
and tries to fix the following bugs:
- [Try to fix Snap](https://github.com/wekan/wekan/commit/17f8f8f14ff205d0cbb316c63a2da36f61ba4a1d).
Thanks to xet7.
- [On CentOS 7 Docker there is seccomp issue with glibc 6, so setting it to unconfined to get WeKan working](https://github.com/wekan/wekan/commit/054d420dc97cadee6ed7896c608d95a6fe09dc9d).
Thanks to m-brangeon.
- [Fix uploading attachments](https://github.com/wekan/wekan/commit/69d454dd035a989266175eb4268ffc3d7891eb95).
Thanks to BabyFnord and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.29 2022-07-11 WeKan ® release
This release adds the following features:
- [Resizeable size of list width and height. Size is not saved yet. In Progress](https://github.com/wekan/wekan/commit/01d0dd3b1dd0a3c9764e7c9d31eab739db2d3ad8).
Thanks to NLBlackEagle and xet7.
- [00checkStartup, on error give more details on current user which run's wekan](https://github.com/wekan/wekan/pull/4581).
Thanks to mfilser.
and adds the following updates:
- [Updated to Node.js v14.20.0](https://github.com/wekan/wekan/commit/239dd1a3411a3d4f51b109e1a0505a5a23bc72ee).
Thanks to Node.js developers.
- [Docker base image to Ubuntu 22.04](https://github.com/wekan/wekan/commit/6b4ffa69c64f0186a8b1b3ac175b633ac7c24263).
Thanks to Ubuntu developers.
- Updated ostrio:files.
[Part 1](https://github.com/wekan/wekan/commit/0d67a86f2c9c1c9696d8507c60e53d47a226a6ad),
[Part 2](https://github.com/wekan/wekan/commit/c3bfcb78e9047a84d43041bebcec56718eaa140b).
Thanks to developers of dependencies.
- [Updated dependencies](https://github.com/wekan/wekan/commit/ae09f0f0083a96c2211fdc02e60b4ff6a2f413ca).
Thanks to developers of dependencies.
and adds the following translations:
- [Added translation Asturia (Spain)](https://github.com/wekan/wekan/commit/12615fef5d44cf611b3f1d9fc0a7be3e98b8c042).
Thanks to translators.
- [Added translations: Arabic (Algeria) (ar_DZ), Azerbaijani (az), Azerbaijani (Azerbaijan) (az_AZ), Azerbaijani (Latin) (az@latin)](https://github.com/wekan/wekan/commit/99b2fdbf99f26ee9df2e1ff906db2d740210f902).
Thanks to translators.
and fixes the following bugs:
- [Do not show archived lists on All Boards](https://github.com/wekan/wekan/pull/4573).
Thanks to helioguardabaxo.
- [Fix div max-width on My Cards table view](https://github.com/wekan/wekan/pull/4574).
Thanks to helioguardabaxo.
- [Fixed one Typo in CSS Style Sheet](https://github.com/wekan/wekan/pull/4577).
Thanks to JonasPfeiferb1.
- [Comment out unused CSS](https://github.com/wekan/wekan/commit/724d1386f6943ad87b8e32f5544cc84ae211904c).
Thanks to xet7.
- [Move/Copy card closes now the popup if done](https://github.com/wekan/wekan/pull/4582).
Thanks to mfilser.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.28 2022-06-08 WeKan ® release
This release adds the following updates:
- [Upgraded to Meteor 2.7.3](https://github.com/wekan/wekan/commit/43b2d714043e053874e3c1101ae6e464d2e61b7e).
Thanks to Meteor developers.
and adds the following translations:
- [Added translations: Moroccan Arabic (ary) and Standard Moroccan Tamazight (zgh)](https://github.com/wekan/wekan/commit/5af4f54f4c702f9cc4df60a27ac234421e41575d).
Thanks to translators.
- [Try to detect Japanese (Japan) better](https://github.com/wekan/wekan/commit/e25050316f6f018f68b03bef6fccbdaea7248461).
Thanks to takenoko14 at Transifex and xet7.
and fixes the following bugs:
- [Removed lightbox that caused bugs like Maximum stack size exceeded. TODO later: Add a new way to open attachment image bigger](https://github.com/wekan/wekan/commit/dfea3d0e735f1665a14f7e534e352e0e00871a02).
Thanks to xet7.
- [Move and copy card set sorting](https://github.com/wekan/wekan/pull/4557).
Thanks to mfilser.
- [Updated dependencies. Try to fix Binary release on releases.wekan.team lacks the CSS](https://github.com/wekan/wekan/commit/937797356ceeb99bf66eb826e13fc55f266c8739).
Thanks to znerol, mrcancer91, BabyFnord and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.27 2022-05-28 WeKan ® release
This release adds the following updates:
- [Upgraded to Meteor 2.7.3-beta.0](https://github.com/wekan/wekan/commit/25e50e3908a52a7bac61f8b939ad7c78cbd79060).
Thanks to Meteor developers.
and fixes the following bugs:
- [Fix opening card scrolls to wrong position when many swimlanes and card at bottom of board](https://github.com/wekan/wekan/commit/adcc33ed7fe686d46a85da6c11ea448d29e94ca7).
Thanks to xet7.
- [Removed wekan-accounts-sandstorm .test-app directory, that could not be git cloned on Windows](https://github.com/wekan/wekan/commit/4f44c5bf872e369cd89ea0e8791482cc925294d3).
Thanks to xet7.
- Try to fix Snap.
[Part 1](https://github.com/wekan/wekan/commit/3b419848d1b7a7f421db3662d860dcea1ea6af1c),
[Part 2](https://github.com/wekan/wekan/commit/e50d69cfb78e5f0150e96cc90337255ccbd59e76),
[Part 3](https://github.com/wekan/wekan/commit/ea66eca60ddbf7127c9fbed9ab41df52542ad279),
[Part 4](https://github.com/wekan/wekan/commit/9ca26d22d0c2c9bee792e50ff203a5c18c9d556b),
[Part 5](https://github.com/wekan/wekan/commit/fac1ba5952f763d257b04a934e3407f9b1d1d37a),
[Part 6](https://github.com/wekan/wekan/commit/f2815a90393418dea88aa49ee74c6af91fafe96d),
[Part 7](https://github.com/wekan/wekan/commit/2587e2f00ae27742893e48e98845a3139e3f3a02),
[Part 8](https://github.com/wekan/wekan/commit/693a49f85200adcf81f5cf0ea56c7dd795757988).
Thanks to xet7.
- [WeKan Gantt GPLv2: Try to fix Gantt, by adding translations, but is not visible yet](https://github.com/wekan/wekan-gantt-gpl/commit/a08c01c76eaaf2884890a39c97d1f72da222fba1).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v6.26 2022-05-21 WeKan ® release
This release adds the following updates:
@@ -829,7 +1241,7 @@ This release removes the following new features:
- [Revert change from WeKan v5.81: At Sandstorm, every WeKan user is now WeKan Admin and has Admin Panel](https://github.com/wekan/wekan/commit/ebc7741fcb9ad854234921ed0546255411adeec9).
Thanks to ocdtrekkie and xet7.
and adds the following new features:
- [List header contains now a button to add the card to the bottom of the list](https://github.com/wekan/wekan/pull/4195).
@@ -1081,7 +1493,7 @@ and fixes the following bugs:
Thanks to niklasdahlheimer.
- [Popup fixes: Archive cards, upload attachements etc](https://github.com/wekan/wekan/pull/4101).
Thanks to mfilser.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.68 2021-10-27 WeKan ® release
@@ -2052,7 +2464,7 @@ This release adds the following new features:
- [Custom Field "String Template"](https://github.com/wekan/wekan/pull/3701).
Thanks to tod31.
- [1) Admin reports. An option added to the admin panel that has reports an admin can run.
- [1) Admin reports. An option added to the admin panel that has reports an admin can run.
Right now it has two reports for attachments and broken cards.
2) Add the creator avatar to `cardDetails` and `minicard`. Avatar is only shown if it is selected in card settings.
3) Added a new search operator `creator`.
@@ -2785,7 +3197,7 @@ and fixes the following bugs:
Thanks to xet7.
- [Rules not copied during board copy](https://github.com/wekan/wekan/pull/3458).
Thanks to jrsupplee.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.83 2021-01-20 Wekan release
@@ -2806,7 +3218,7 @@ and fixes the following bugs:
Thanks to jrsupplee.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.82 2021-01-20 Wekan release
This release adds the following new features:
+21 -102
View File
@@ -1,6 +1,11 @@
FROM ubuntu:21.10
FROM --platform=linux/amd64 ubuntu:22.04 as wekan
LABEL maintainer="wekan"
# 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
# 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
@@ -16,8 +21,8 @@ ARG DEBIAN_FRONTEND=noninteractive
ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-essential git ca-certificates python3" \
DEBUG=false \
NODE_VERSION=v14.19.3 \
METEOR_RELEASE=1.10.2 \
NODE_VERSION=v14.20.0 \
METEOR_RELEASE=2.7.3 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
NPM_VERSION=latest \
@@ -33,6 +38,12 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60 \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 \
ACCOUNTS_COMMON_LOGIN_EXPIRATION_IN_DAYS=90 \
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="" \
@@ -50,6 +61,7 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
TRUSTED_URL="" \
WEBHOOKS_ATTRIBUTES="" \
OAUTH2_ENABLED=false \
OIDC_REDIRECTION_ENABLED=false \
OAUTH2_CA_CERT="" \
OAUTH2_ADFS_ENABLED=false \
OAUTH2_LOGIN_STYLE=redirect \
@@ -147,12 +159,10 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
NODE_OPTIONS="--max_old_space_size=4096" \
WRITABLE_PATH=/data
#---------------------------------------------------------------------
# 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
#---------------------------------------------------------------------
# Copy the app to the image
@@ -165,7 +175,6 @@ RUN \
\
# OS dependencies
apt-get update -y && apt-get install -y --no-install-recommends ${BUILD_DEPS} && \
#pip3 install -U pip setuptools wheel && \
\
# Meteor installer doesn't work with the default tar binary, so using bsdtar while installing.
# https://github.com/coreos/bugs/issues/1095#issuecomment-350574389
@@ -176,43 +185,9 @@ RUN \
wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
#---------------------------------------------------------------------------------------------
# Node Fibers 100% CPU usage issue:
# https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-381453161
# https://github.com/meteor/meteor/issues/9796#issuecomment-381676326
# https://github.com/sandstorm-io/sandstorm/blob/0f1fec013fe7208ed0fd97eb88b31b77e3c61f42/shell/server/00-startup.js#L99-L129
# Also see beginning of wekan/server/authentication.js
# import Fiber from "fibers";
# Fiber.poolSize = 1e9;
# OLD: Download node version 8.12.0 prerelease that has fix included, => Official 8.12.0 has been released
# Description at https://releases.wekan.team/node.txt
#wget https://releases.wekan.team/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
#echo "1ed54adb8497ad8967075a0b5d03dd5d0a502be43d4a4d84e5af489c613d7795 node-v8.12.0-linux-x64.tar.gz" >> SHASUMS256.txt.asc && \
\
# Verify nodejs authenticity
grep ${NODE_VERSION}-${ARCHITECTURE}.tar.gz SHASUMS256.txt.asc | shasum -a 256 -c - && \
#export GNUPGHOME="$(mktemp -d)" && \
#\
# Try other key servers if ha.pool.sks-keyservers.net is unreachable
# Code from https://github.com/chorrell/docker-node/commit/2b673e17547c34f17f24553db02beefbac98d23c
# gpg keys listed at https://github.com/nodejs/node#release-team
# and keys listed here from previous version of this Dockerfile
#for key in \
#9554F04D7259F04124DE6B476D5A82AC7E37093B \
#94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
#FD3A5288F042B6850C66B31F09FE44734EB7990E \
#71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
#DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
#C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
#B9AE9905FFD7803F25714661B63B535A4C206CA9 \
#; do \
#gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" || \
#gpg --keyserver pgp.mit.edu --recv-keys "$key" || \
#gpg --keyserver keyserver.pgp.com --recv-keys "$key" ; \
#done && \
#gpg --verify SHASUMS256.txt.asc && \
# Ignore socket files then delete files then delete directories
#find "$GNUPGHOME" -type f | xargs rm -f && \
#find "$GNUPGHOME" -type d | xargs rm -fR && \
rm -f SHASUMS256.txt.asc && \
\
# Install Node
@@ -229,90 +204,32 @@ RUN \
\
# Install Node dependencies. Python path for node-gyp.
npm install -g npm@${NPM_VERSION} && \
#npm config set python python2.7 && \
#npm install -g node-gyp && \
#npm install -g fibers@${FIBERS_VERSION} && \
\
# Change user to wekan and install meteor
cd /home/wekan/ && \
chown wekan --recursive /home/wekan && \
#curl "https://install.meteor.com" -o /home/wekan/install_meteor.sh && \
#curl "https://install.meteor.com/?release=${METEOR_RELEASE}" -o /home/wekan/install_meteor.sh && \
# OLD: sed -i "s|RELEASE=.*|RELEASE=${METEOR_RELEASE}\"\"|g" ./install_meteor.sh && \
# Install Meteor forcing its progress
#sed -i 's/VERBOSITY="--silent"/VERBOSITY="--progress-bar"/' ./install_meteor.sh && \
echo "Starting meteor ${METEOR_RELEASE} installation... \n" && \
gosu wekan:wekan curl https://install.meteor.com/ | /bin/sh && \
mv /root/.meteor /home/wekan/ && \
chown wekan --recursive /home/wekan/.meteor && \
\
# Check if opting for a release candidate instead of major release
#if [ "$USE_EDGE" = false ]; then \
#gosu wekan:wekan sh /home/wekan/install_meteor.sh; \
# gosu wekan:wekan curl https://install.meteor.com/ | sh; \
#else \
# gosu wekan:wekan git clone --recursive --depth 1 -b release/METEOR@${METEOR_EDGE} https://github.com/meteor/meteor.git /home/wekan/.meteor; \
#fi; \
#\
# Get additional packages
#mkdir -p /home/wekan/app/packages && \
#chown wekan:wekan --recursive /home/wekan && \
# REPOS BELOW ARE INCLUDED TO WEKAN REPO
#cd /home/wekan/app/packages && \
#gosu wekan:wekan git clone --depth 1 -b master https://github.com/wekan/flow-router.git kadira-flow-router && \
#gosu wekan:wekan git clone --depth 1 -b master https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core && \
#gosu wekan:wekan git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-cas.git && \
#gosu wekan:wekan git clone --depth 1 -b master https://github.com/wekan/wekan-ldap.git && \
#gosu wekan:wekan git clone --depth 1 -b master https://github.com/wekan/wekan-scrollbar.git && \
#gosu wekan:wekan git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-oidc.git && \
#gosu wekan:wekan git clone --depth 1 -b master --recurse-submodules https://github.com/wekan/markdown.git && \
#gosu wekan:wekan mv meteor-accounts-oidc/packages/switch_accounts-oidc wekan-accounts-oidc && \
#gosu wekan:wekan mv meteor-accounts-oidc/packages/switch_oidc wekan-oidc && \
#gosu wekan:wekan rm -rf meteor-accounts-oidc && \
sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' /home/wekan/app/packages/meteor-useraccounts-core/package.js && \
cd /home/wekan/.meteor && \
gosu wekan:wekan /home/wekan/.meteor/meteor -- help; \
\
# extract the OpenAPI specification
#npm install -g api2html@0.3.3 && \
#mkdir -p /home/wekan/python && \
#chown wekan --recursive /home/wekan/python && \
#cd /home/wekan/python && \
#gosu wekan:wekan git clone --depth 1 -b master https://github.com/Kronuz/esprima-python && \
#cd /home/wekan/python/esprima-python && \
#python3 setup.py install --record files.txt && \
#cd /home/wekan/app && \
#mkdir -p /home/wekan/app/public/api && \
#chown wekan --recursive /home/wekan/app && \
#gosu wekan:wekan python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml && \
#gosu wekan:wekan /opt/nodejs/bin/api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml; \
# Build app
cd /home/wekan/app && \
mkdir -p /home/wekan/.npm && \
chown wekan --recursive /home/wekan/.npm /home/wekan/.config /home/wekan/.meteor && \
#gosu wekan:wekan /home/wekan/.meteor/meteor add standard-minifier-js && \
chmod u+w *.json && \
gosu wekan:wekan npm install && \
gosu wekan:wekan /home/wekan/.meteor/meteor build --directory /home/wekan/app_build && \
#rm /home/wekan/app_build/bundle/programs/server/npm/node_modules/meteor/rajit_bootstrap3-datepicker/lib/bootstrap-datepicker/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs && \
#Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
#https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
#https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c
#cd /home/wekan/app_build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt && \
#gosu wekan:wekan rm -rf node_modules/bcrypt && \
#gosu wekan:wekan npm install bcrypt && \
#
# Delete phantomjs
#cd /home/wekan/app_build/bundle && \
#find . -name "*phantomjs*" | xargs rm -rf && \
#
cd /home/wekan/app_build/bundle/programs/server/ && \
chmod u+w *.json && \
gosu wekan:wekan npm install && \
cd node_modules/fibers && \
node build.js && \
cd ../.. && \
#gosu wekan:wekan npm install bcrypt && \
# 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 && \
@@ -339,6 +256,8 @@ ENV PORT=8080
EXPOSE $PORT
USER wekan
STOPSIGNAL SIGKILL
#---------------------------------------------------------------------
# https://github.com/wekan/wekan/issues/3585#issuecomment-1021522132
# Add more Node heap:
+2 -2
View File
@@ -4,7 +4,7 @@ FROM amd64/alpine:3.7 AS builder
ENV QEMU_VERSION=v4.2.0-6 \
QEMU_ARCHITECTURE=aarch64 \
NODE_ARCHITECTURE=linux-arm64 \
NODE_VERSION=v14.19.3 \
NODE_VERSION=v14.20.0 \
WEKAN_VERSION=latest \
WEKAN_ARCHITECTURE=arm64 \
NODE_OPTIONS="--max_old_space_size=4096"
@@ -49,7 +49,7 @@ LABEL maintainer="wekan"
# Set the environment variables (defaults where required)
ENV QEMU_ARCHITECTURE=aarch64 \
NODE_ARCHITECTURE=linux-arm64 \
NODE_VERSION=v14.19.3 \
NODE_VERSION=v14.20.0 \
NODE_ENV=production \
NPM_VERSION=latest \
WITH_API=true \
+5 -5
View File
@@ -17,9 +17,9 @@
## [Translate WeKan ® at Transifex](https://transifex.com/wekan/wekan)
Translations to non-English languages are accepted only at [Transifex](https://transifex.com/wekan/wekan) using webbrowser.
New English strings of new features can be added as PRs to edge branch file wekan/i18n/en.i18n.json .
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)
## [WeKan ® feature requests and bugs](https://github.com/wekan/wekan/issues)
Please add most of your questions as GitHub issue: [WeKan ® Feature Requests and Bugs](https://github.com/wekan/wekan/issues).
It's better than at chat where details get lost when chat scrolls up.
@@ -28,7 +28,7 @@ It's better than at chat where details get lost when chat scrolls up.
[Discussions][discussions] - WeKan Community GitHub Discussions, that are not [Feature Requests and Bugs](https://github.com/wekan/wekan/issues).
[Wekan IRC FAQ](https://github.com/wekan/wekan/wiki/IRC-FAQ)
[WeKan IRC FAQ](https://github.com/wekan/wekan/wiki/IRC-FAQ)
## Docker: Please only use Docker release tags
@@ -56,8 +56,8 @@ install Wekan on your own computer or server. In fact we encourage you to do
that by providing one-click installation on various platforms.
- WeKan ® is used in [most countries of the world](https://snapcraft.io/wekan).
- Wekan largest user has 22k users using Wekan in their company.
- Wekan has been [translated](https://transifex.com/wekan/wekan) to about 105 languages.
- WeKan ® largest user has 22k users using WeKan ® in their company.
- WeKan ® has been [translated](https://transifex.com/wekan/wekan) to about 105 languages.
- [Features][features]: WeKan ® has real-time user interface.
- [Platforms][platforms]: WeKan ® supports many platforms.
WeKan ® is critical part of new platforms Wekan is currently being integrated to.
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v6.26.0"
appVersion: "v6.45.0"
files:
userUploads:
- README.md
+1 -1
View File
@@ -162,7 +162,7 @@ users = wekanurl + apiusers
# ------- LOGIN TOKEN START -----------
data = {"username": username, "password": password}
body = requests.post(wekanloginurl, data=data)
body = requests.post(wekanloginurl, json=data)
d = body.json()
apikey = d['token']
@@ -14,6 +14,7 @@ template(name="archivedBoards")
i.fa.fa-undo
| {{_ 'restore-board'}}
= title
span {{ moment archivedAt 'LLL' }}
else
li.no-items-message {{_ 'no-archived-boards'}}
+1 -2
View File
@@ -32,11 +32,10 @@
animation: fadeIn 0.2s;
z-index: 16;
}
.board-wrapper .board-canvas.is-dragging-active .open-minicard-composer,
.board-wrapper .board-canvas.is-dragging-active .minicard-wrapper.is-checked {
display: none;
}
@media screen and (max-width: 800px) {
@media screen and (max-width: 250px) {
.board-wrapper .board-canvas .swimlane {
border-bottom: 1px solid #ccc;
display: flex;
+12 -10
View File
@@ -193,7 +193,7 @@ BlazeComponent.extendComponent({
});
this.autorun(() => {
if (Utils.isMiniScreenOrShowDesktopDragHandles()) {
if (Utils.isTouchScreenOrShowDesktopDragHandles()) {
$swimlanesDom.sortable({
handle: '.js-swimlane-header-handle',
});
@@ -228,10 +228,10 @@ BlazeComponent.extendComponent({
}
},
notDisplayThisBoard(){
notDisplayThisBoard() {
let allowPrivateVisibilityOnly = TableVisibilityModeSettings.findOne('tableVisibilityMode-allowPrivateOnly');
let currentBoard = Boards.findOne(Session.get('currentBoard'));
if(allowPrivateVisibilityOnly !== undefined && allowPrivateVisibilityOnly.booleanValue && currentBoard.permission == 'public'){
if (allowPrivateVisibilityOnly !== undefined && allowPrivateVisibilityOnly.booleanValue && currentBoard.permission == 'public') {
return true;
}
@@ -319,7 +319,7 @@ BlazeComponent.extendComponent({
BlazeComponent.extendComponent({
onRendered() {
this.autorun(function() {
this.autorun(function () {
$('#calendar-view').fullCalendar('refetchEvents');
});
},
@@ -351,7 +351,7 @@ BlazeComponent.extendComponent({
events(start, end, timezone, callback) {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
const events = [];
const pushEvent = function(card, title, start, end, extraCls) {
const pushEvent = function (card, title, start, end, extraCls) {
start = start || card.startAt;
end = end || card.endAt;
title = title || card.title;
@@ -375,12 +375,12 @@ BlazeComponent.extendComponent({
};
currentBoard
.cardsInInterval(start.toDate(), end.toDate())
.forEach(function(card) {
.forEach(function (card) {
pushEvent(card);
});
currentBoard
.cardsDueInBetween(start.toDate(), end.toDate())
.forEach(function(card) {
.forEach(function (card) {
pushEvent(
card,
`${card.title} ${TAPi18n.__('card-due')}`,
@@ -388,7 +388,7 @@ BlazeComponent.extendComponent({
new Date(card.dueAt.getTime() + 36e5),
);
});
events.sort(function(first, second) {
events.sort(function (first, second) {
return first.id > second.id ? 1 : -1;
});
callback(events);
@@ -411,8 +411,10 @@ BlazeComponent.extendComponent({
if (card) {
// TODO: add a flag for allDay events
if (!event.allDay) {
card.setStart(event.start.toDate());
card.setEnd(event.end.toDate());
// https://github.com/wekan/wekan/issues/2917#issuecomment-1236753962
//card.setStart(event.start.toDate());
//card.setEnd(event.end.toDate());
card.setDue(event.start.toDate());
isOk = true;
}
}
+1 -1
View File
@@ -1141,7 +1141,7 @@
color: rgba(0,0,0,0.5);
position: absolute;
margin-top: -34px;
margin-let: -11px;
margin-left: -11px;
}
.board-color-clearblue a.fa,
.board-color-clearblue a i.fa {
+1 -1
View File
@@ -1,4 +1,4 @@
@import url("css/reset.css") print, screen;
@import url("/css/reset.css") print, screen;
.board-list {
margin: 0 8px;
+2 -2
View File
@@ -62,7 +62,7 @@ template(name="boardList")
i.fa.js-has-spenttime-cards(
class="fa-circle{{#if hasOvertimeCards}} has-overtime-card-active{{else}} no-overtime-card-active{{/if}}"
title="{{#if hasOvertimeCards}}{{_ 'has-overtime-cards'}}{{else}}{{_ 'has-spenttime-cards'}}{{/if}}")
if isMiniScreenOrShowDesktopDragHandles
if isTouchScreenOrShowDesktopDragHandles
i.fa.board-handle(
class="fa-arrows"
title="{{_ 'Drag board'}}")
@@ -114,7 +114,7 @@ template(name="boardList")
i.fa.js-has-spenttime-cards(
class="fa-circle{{#if hasOvertimeCards}} has-overtime-card-active{{else}} no-overtime-card-active{{/if}}"
title="{{#if hasOvertimeCards}}{{_ 'has-overtime-cards'}}{{else}}{{_ 'has-spenttime-cards'}}{{/if}}")
if isMiniScreenOrShowDesktopDragHandles
if isTouchScreenOrShowDesktopDragHandles
i.fa.board-handle(
class="fa-arrows"
title="{{_ 'Drag board'}}")
+49 -51
View File
@@ -30,7 +30,7 @@ BlazeComponent.extendComponent({
Meteor.subscribe('tableVisibilityModeSettings');
let currUser = Meteor.user();
let userLanguage;
if(currUser && currUser.profile){
if (currUser && currUser.profile) {
userLanguage = currUser.profile.language
}
if (userLanguage) {
@@ -79,54 +79,54 @@ BlazeComponent.extendComponent({
// Disable drag-dropping if the current user is not a board member or is comment only
this.autorun(() => {
if (Utils.isMiniScreenOrShowDesktopDragHandles()) {
if (Utils.isTouchScreenOrShowDesktopDragHandles()) {
$boards.sortable({
handle: '.board-handle',
});
}
});
},
userHasTeams(){
if(Meteor.user() != null && Meteor.user().teams && Meteor.user().teams.length > 0)
userHasTeams() {
if (Meteor.user() != null && Meteor.user().teams && Meteor.user().teams.length > 0)
return true;
else
return false;
},
teamsDatas() {
if(Meteor.user().teams)
if (Meteor.user().teams)
return Meteor.user().teams.sort((a, b) => a.teamDisplayName.localeCompare(b.teamDisplayName));
else
return [];
},
userHasOrgs(){
if(Meteor.user() != null && Meteor.user().orgs && Meteor.user().orgs.length > 0)
userHasOrgs() {
if (Meteor.user() != null && Meteor.user().orgs && Meteor.user().orgs.length > 0)
return true;
else
return false;
},
/*
userHasTemplates(){
if(Meteor.user() != null && Meteor.user().orgs && Meteor.user().orgs.length > 0)
return true;
else
return false;
},
*/
/*
userHasTemplates(){
if(Meteor.user() != null && Meteor.user().orgs && Meteor.user().orgs.length > 0)
return true;
else
return false;
},
*/
orgsDatas() {
if(Meteor.user().orgs)
if (Meteor.user().orgs)
return Meteor.user().orgs.sort((a, b) => a.orgDisplayName.localeCompare(b.orgDisplayName));
else
return [];
},
userHasOrgsOrTeams(){
userHasOrgsOrTeams() {
let boolUserHasOrgs;
if(Meteor.user() != null && Meteor.user().orgs && Meteor.user().orgs.length > 0)
if (Meteor.user() != null && Meteor.user().orgs && Meteor.user().orgs.length > 0)
boolUserHasOrgs = true;
else
boolUserHasOrgs = false;
let boolUserHasTeams;
if(Meteor.user() != null && Meteor.user().teams && Meteor.user().teams.length > 0)
if (Meteor.user() != null && Meteor.user().teams && Meteor.user().teams.length > 0)
boolUserHasTeams = true;
else
boolUserHasTeams = false;
@@ -139,18 +139,18 @@ BlazeComponent.extendComponent({
// { type: { $in: ['board','template-container'] } },
$and: [
{ archived: false },
{ type: { $in: ['board','template-container'] } },
{ $or:[] }
{ type: { $in: ['board', 'template-container'] } },
{ $or: [] }
]
};
let allowPrivateVisibilityOnly = TableVisibilityModeSettings.findOne('tableVisibilityMode-allowPrivateOnly');
if (FlowRouter.getRouteName() === 'home'){
query.$and[2].$or.push({'members.userId': Meteor.userId()});
if (FlowRouter.getRouteName() === 'home') {
query.$and[2].$or.push({ 'members.userId': Meteor.userId() });
if(allowPrivateVisibilityOnly !== undefined && allowPrivateVisibilityOnly.booleanValue){
query.$and.push({'permission': 'private'});
if (allowPrivateVisibilityOnly !== undefined && allowPrivateVisibilityOnly.booleanValue) {
query.$and.push({ 'permission': 'private' });
}
const currUser = Users.findOne(Meteor.userId());
@@ -162,27 +162,27 @@ BlazeComponent.extendComponent({
// });
let orgIdsUserBelongs = currUser !== undefined && currUser.teams !== 'undefined' ? currUser.orgIdsUserBelongs() : '';
if(orgIdsUserBelongs && orgIdsUserBelongs != ''){
if (orgIdsUserBelongs && orgIdsUserBelongs != '') {
let orgsIds = orgIdsUserBelongs.split(',');
// for(let i = 0; i < orgsIds.length; i++){
// query.$and[2].$or.push({'orgs.orgId': orgsIds[i]});
// }
//query.$and[2].$or.push({'orgs': {$elemMatch : {orgId: orgsIds[0]}}});
query.$and[2].$or.push({'orgs.orgId': {$in : orgsIds}});
query.$and[2].$or.push({ 'orgs.orgId': { $in: orgsIds } });
}
let teamIdsUserBelongs = currUser !== undefined && currUser.teams !== 'undefined' ? currUser.teamIdsUserBelongs() : '';
if(teamIdsUserBelongs && teamIdsUserBelongs != ''){
if (teamIdsUserBelongs && teamIdsUserBelongs != '') {
let teamsIds = teamIdsUserBelongs.split(',');
// for(let i = 0; i < teamsIds.length; i++){
// query.$or[2].$or.push({'teams.teamId': teamsIds[i]});
// }
//query.$and[2].$or.push({'teams': { $elemMatch : {teamId: teamsIds[0]}}});
query.$and[2].$or.push({'teams.teamId': {$in : teamsIds}});
query.$and[2].$or.push({ 'teams.teamId': { $in: teamsIds } });
}
}
else if(allowPrivateVisibilityOnly !== undefined && !allowPrivateVisibilityOnly.booleanValue){
else if (allowPrivateVisibilityOnly !== undefined && !allowPrivateVisibilityOnly.booleanValue) {
query = {
archived: false,
//type: { $in: ['board','template-container'] },
@@ -197,9 +197,9 @@ BlazeComponent.extendComponent({
},
boardLists(boardId) {
let boardLists = [];
const lists = Lists.find({'boardId' : boardId})
const lists = Lists.find({ 'boardId': boardId, 'archived': false },{sort: ['sort','asc']});
lists.forEach(list => {
let cardCount = Cards.find({'boardId':boardId, 'listId':list._id}).count()
let cardCount = Cards.find({ 'boardId': boardId, 'listId': list._id }).count()
boardLists.push(`${list.title}: ${cardCount}`);
});
return boardLists
@@ -207,7 +207,7 @@ BlazeComponent.extendComponent({
boardMembers(boardId) {
let boardMembers = [];
const lists = Boards.findOne({'_id' : boardId})
const lists = Boards.findOne({ '_id': boardId })
let members = lists.members
members.forEach(member => {
boardMembers.push(member.userId);
@@ -291,10 +291,10 @@ BlazeComponent.extendComponent({
}
});
},
'click #resetBtn'(event){
'click #resetBtn'(event) {
let allBoards = document.getElementsByClassName("js-board");
let currBoard;
for(let i=0; i < allBoards.length; i++){
for (let i = 0; i < allBoards.length; i++) {
currBoard = allBoards[i];
currBoard.style.display = "block";
}
@@ -302,57 +302,55 @@ BlazeComponent.extendComponent({
'click #filterBtn'(event) {
event.preventDefault();
let selectedTeams = document.querySelectorAll('#jsAllBoardTeams option:checked');
let selectedTeamsValues = Array.from(selectedTeams).map(function(elt){return elt.value});
let selectedTeamsValues = Array.from(selectedTeams).map(function (elt) { return elt.value });
let index = selectedTeamsValues.indexOf("-1");
if (index > -1) {
selectedTeamsValues.splice(index, 1);
}
let selectedOrgs = document.querySelectorAll('#jsAllBoardOrgs option:checked');
let selectedOrgsValues = Array.from(selectedOrgs).map(function(elt){return elt.value});
let selectedOrgsValues = Array.from(selectedOrgs).map(function (elt) { return elt.value });
index = selectedOrgsValues.indexOf("-1");
if (index > -1) {
selectedOrgsValues.splice(index, 1);
}
if(selectedTeamsValues.length > 0 || selectedOrgsValues.length > 0){
if (selectedTeamsValues.length > 0 || selectedOrgsValues.length > 0) {
const query = {
$and: [
{ archived: false },
{ type: 'board' },
{ $or:[] }
{ $or: [] }
]
};
if(selectedTeamsValues.length > 0)
{
query.$and[2].$or.push({'teams.teamId': {$in : selectedTeamsValues}});
if (selectedTeamsValues.length > 0) {
query.$and[2].$or.push({ 'teams.teamId': { $in: selectedTeamsValues } });
}
if(selectedOrgsValues.length > 0)
{
query.$and[2].$or.push({'orgs.orgId': {$in : selectedOrgsValues}});
if (selectedOrgsValues.length > 0) {
query.$and[2].$or.push({ 'orgs.orgId': { $in: selectedOrgsValues } });
}
let filteredBoards = Boards.find(query, {}).fetch();
let allBoards = document.getElementsByClassName("js-board");
let currBoard;
if(filteredBoards.length > 0){
if (filteredBoards.length > 0) {
let currBoardId;
let found;
for(let i=0; i < allBoards.length; i++){
for (let i = 0; i < allBoards.length; i++) {
currBoard = allBoards[i];
currBoardId = currBoard.classList[0];
found = filteredBoards.find(function(board){
found = filteredBoards.find(function (board) {
return board._id == currBoardId;
});
if(found !== undefined)
if (found !== undefined)
currBoard.style.display = "block";
else
currBoard.style.display = "none";
}
}
else{
for(let i=0; i < allBoards.length; i++){
else {
for (let i = 0; i < allBoards.length; i++) {
currBoard = allBoards[i];
currBoard.style.display = "none";
}
+4
View File
@@ -1,3 +1,7 @@
.attachment-upload {
text-align: center;
font-weight: bold;
}
.attachments-galery {
display: flex;
flex-wrap: wrap;
+23 -10
View File
@@ -1,10 +1,25 @@
template(name="cardAttachmentsPopup")
ul.pop-over-list
li
input.js-attach-file.hide(type="file" name="file" multiple)
a.js-computer-upload {{_ 'computer'}}
li
a.js-upload-clipboard-image {{_ 'clipboard'}}
if $gt uploads.length 0
.attachment-upload {{_ 'uploading'}}
table
tr
th.upload-file-name-descr {{_ 'name'}}
th.upload-progress-descr {{_ 'progress'}}
th.upload-remaining-descr {{_ 'remaining_time'}}
th.upload-speed-descr {{_ 'speed'}}
each upload in uploads
tr
td.upload-file-name-value {{upload.file.name}}
td.upload-progress-value {{upload.progress.get}}%
td.upload-remaining-value {{getEstimateTime upload}}
td.upload-speed-value {{getEstimateSpeed upload}}
else
ul.pop-over-list
li
input.js-attach-file.hide(type="file" name="file" multiple)
a.js-computer-upload {{_ 'computer'}}
li
a.js-upload-clipboard-image {{_ 'clipboard'}}
template(name="previewClipboardImagePopup")
p <kbd>Ctrl</kbd>+<kbd>V</kbd> {{_ "paste-or-dragdrop"}}
@@ -19,7 +34,7 @@ template(name="attachmentsGalery")
.attachments-galery
each attachments
.attachment-item
a.attachment-thumbnail(href="{{link}}" title="{{name}}" data-lightbox="{{name}}")
a.attachment-thumbnail.swipebox(href="{{link}}" title="{{name}}")
if link
if isImage
img.attachment-thumbnail-img(src="{{link}}")
@@ -37,11 +52,9 @@ template(name="attachmentsGalery")
source(src="{{link}}" type="video/mp4")
else
span.attachment-thumbnail-ext= extension
else
+spinner
p.attachment-details
= name
span.file-size ({{fileSize size}} KB)
span.file-size ({{fileSize size}})
span.attachment-details-actions
a.js-download(href="{{link}}?download=true", download="{{name}}")
i.fa.fa-download
+59 -25
View File
@@ -1,3 +1,6 @@
const filesize = require('filesize');
const prettyMilliseconds = require('pretty-ms');
Template.attachmentsGalery.events({
'click .js-add-attachment': Popup.open('cardAttachments'),
// If we let this event bubble, FlowRouter will handle it and empty the page
@@ -13,37 +16,68 @@ Template.attachmentsGalery.helpers({
return Meteor.user().isBoardAdmin();
},
fileSize(size) {
return Math.round(size / 1024);
const ret = filesize(size);
return ret;
},
});
Template.cardAttachmentsPopup.onCreated(function() {
this.uploads = new ReactiveVar([]);
});
Template.cardAttachmentsPopup.helpers({
getEstimateTime(upload) {
const ret = prettyMilliseconds(upload.estimateTime.get());
return ret;
},
getEstimateSpeed(upload) {
const ret = filesize(upload.estimateSpeed.get(), {round: 0}) + "/s";
return ret;
},
uploads() {
return Template.instance().uploads.get();
}
});
Template.cardAttachmentsPopup.events({
'change .js-attach-file'(event) {
'change .js-attach-file'(event, templateInstance) {
const card = this;
if (event.currentTarget.files && event.currentTarget.files[0]) {
const fileId = Random.id();
const config = {
file: event.currentTarget.files[0],
fileId: fileId,
meta: Utils.getCommonAttachmentMetaFrom(card),
chunkSize: 'dynamic',
};
config.meta.fileId = fileId;
const uploader = Attachments.insert(
config,
false,
);
uploader.on('uploaded', (error, fileRef) => {
if (!error) {
if (fileRef.isImage) {
card.setCover(fileRef._id);
const files = event.currentTarget.files;
if (files) {
let uploads = [];
for (const file of files) {
const fileId = Random.id();
const config = {
file: file,
fileId: fileId,
meta: Utils.getCommonAttachmentMetaFrom(card),
chunkSize: 'dynamic',
};
config.meta.fileId = fileId;
const uploader = Attachments.insert(
config,
false,
);
uploader.on('start', function() {
uploads.push(this);
templateInstance.uploads.set(uploads);
});
uploader.on('uploaded', (error, fileRef) => {
if (!error) {
if (fileRef.isImage) {
card.setCover(fileRef._id);
}
}
}
});
uploader.on('end', (error, fileRef) => {
Popup.back();
});
uploader.start();
});
uploader.on('end', (error, fileRef) => {
uploads = uploads.filter(_upload => _upload.config.fileId != fileRef._id);
templateInstance.uploads.set(uploads);
if (uploads.length == 0 ) {
Popup.back();
}
});
uploader.start();
}
}
},
'click .js-computer-upload'(event, templateInstance) {
+19 -17
View File
@@ -682,13 +682,12 @@ template(name="cardDetailsActionsPopup")
i.fa.fa-copy
| {{_ 'copyCardPopup-title'}}
unless currentUser.isWorker
hr
ul.pop-over-list
li
a.js-copy-checklist-cards
i.fa.fa-list
i.fa.fa-copy
| {{_ 'copyChecklistToManyCardsPopup-title'}}
i.fa.fa-copy
| {{_ 'copyManyCardsPopup-title'}}
unless archived
hr
ul.pop-over-list
@@ -712,39 +711,42 @@ template(name="exportCardPopup")
| {{_ 'export-card-pdf'}}
template(name="moveCardPopup")
+boardsAndLists
+copyAndMoveCard
template(name="copyCardPopup")
label(for='copy-card-title') {{_ 'title'}}:
textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)
= getTitle
+boardsAndLists
+copyAndMoveCard
template(name="copyChecklistToManyCardsPopup")
label(for='copy-checklist-cards-title') {{_ 'copyChecklistToManyCardsPopup-instructions'}}:
template(name="copyManyCardsPopup")
label(for='copy-checklist-cards-title') {{_ 'copyManyCardsPopup-instructions'}}:
textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)
| {{_ 'copyChecklistToManyCardsPopup-format'}}
+boardsAndLists
| {{_ 'copyManyCardsPopup-format'}}
+copyAndMoveCard
template(name="boardsAndLists")
template(name="convertChecklistItemToCardPopup")
label(for='convert-checklist-item-to-card-title') {{_ 'title'}}:
textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)
= item.title
+copyAndMoveCard
template(name="copyAndMoveCard")
unless currentUser.isWorker
label {{_ 'boards'}}:
select.js-select-boards(autofocus)
each boards
if $eq _id currentBoard._id
option(value="{{_id}}" selected) {{_ 'current'}}
else
option(value="{{_id}}" selected="{{#if isMoveAndCopyDialogOptionBoardId _id}}selected{{/if}}") {{title}}
option(value="{{_id}}" selected="{{#if isDialogOptionBoardId _id}}selected{{/if}}") {{title}}
label {{_ 'swimlanes'}}:
select.js-select-swimlanes
each swimlanes
option(value="{{_id}}" selected="{{#if isMoveAndCopyDialogOptionSwimlaneId _id}}selected{{/if}}") {{title}}
option(value="{{_id}}" selected="{{#if isDialogOptionSwimlaneId _id}}selected{{/if}}") {{title}}
label {{_ 'lists'}}:
select.js-select-lists
each aBoardLists
option(value="{{_id}}" selected="{{#if isMoveAndCopyDialogOptionListId _id}}selected{{/if}}") {{title}}
each lists
option(value="{{_id}}" selected="{{#if isDialogOptionListId _id}}selected{{/if}}") {{title}}
.edit-controls.clearfix
button.primary.confirm.js-done {{_ 'done'}}
+135 -256
View File
@@ -10,6 +10,7 @@ import Lists from '/models/lists';
import CardComments from '/models/cardComments';
import { ALLOWED_COLORS } from '/config/const';
import { UserAvatar } from '../users/userAvatar';
import { DialogWithBoardSwimlaneList } from '/client/lib/dialogWithBoardSwimlaneList';
const subManager = new SubsManager();
const { calculateIndexData } = Utils;
@@ -86,17 +87,29 @@ BlazeComponent.extendComponent({
scrollParentContainer() {
const cardPanelWidth = 600;
const parentComponent = this.parentComponent();
// TODO sometimes parentComponent is not available, maybe because it's not
// yet created?!
if (!parentComponent) return;
const bodyBoardComponent = parentComponent.parentComponent();
/*
// Incomplete fix about bug where opening card scrolls to wrong place
// https://github.com/wekan/wekan/issues/4572#issuecomment-1184149395
// TODO sometimes parentComponent is not available, maybe because it's not
// yet created?!
if (!parentComponent) return;
const bodyBoardComponent = parentComponent.parentComponent();
*/
//On Mobile View Parent is Board, Not Board Body. I cant see how this funciton should work then.
if (bodyBoardComponent === null) return;
const $cardView = this.$(this.firstNode());
const $cardContainer = bodyBoardComponent.$('.js-swimlanes');
// TODO sometimes cardContainer is not available, maybe because it's not yet
// created?!
if (!$cardContainer) return;
/*
// Incomplete fix about bug where opening card scrolls to wrong place
// https://github.com/wekan/wekan/issues/4572#issuecomment-1184149395
// TODO sometimes cardContainer is not available, maybe because it's not yet
// created?!
if (!$cardContainer) return;
*/
const cardContainerScroll = $cardContainer.scrollLeft();
const cardContainerWidth = $cardContainer.width();
@@ -212,11 +225,6 @@ BlazeComponent.extendComponent({
//-------------
}
if (!Utils.isMiniScreen()) {
Meteor.setTimeout(() => {
this.scrollParentContainer();
}, 500);
}
const $checklistsDom = this.$('.card-checklist-items');
$checklistsDom.sortable({
@@ -299,7 +307,7 @@ BlazeComponent.extendComponent({
$checklistsDom.data('sortable')
) {
$checklistsDom.sortable('option', 'disabled', disabled);
if (Utils.isMiniScreenOrShowDesktopDragHandles()) {
if (Utils.isTouchScreenOrShowDesktopDragHandles()) {
$checklistsDom.sortable({ handle: '.checklist-handle' });
}
}
@@ -393,7 +401,9 @@ BlazeComponent.extendComponent({
let card = this.data();
const listSelect = this.$('.js-select-card-details-lists')[0];
const listId = listSelect.options[listSelect.selectedIndex].value;
card.move(card.boardId, card.swimlaneId, listId, card.sort);
const minOrder = card.getMinSort(listId, card.swimlaneId);
card.move(card.boardId, card.swimlaneId, listId, minOrder - 1);
},
'click .js-go-to-linked-card'() {
Utils.goCardId(this.data().linkedId);
@@ -440,10 +450,20 @@ BlazeComponent.extendComponent({
'click .js-maximize-card-details'() {
Meteor.call('toggleCardMaximized');
autosize($('.card-details'));
if (!Utils.isMiniScreen()) {
Meteor.setTimeout(() => {
this.scrollParentContainer();
}, 500);
}
},
'click .js-minimize-card-details'() {
Meteor.call('toggleCardMaximized');
autosize($('.card-details'));
if (!Utils.isMiniScreen()) {
Meteor.setTimeout(() => {
this.scrollParentContainer();
}, 500);
}
},
'click .js-vote'(e) {
const forIt = $(e.target).hasClass('js-vote-positive');
@@ -668,25 +688,17 @@ Template.cardDetailsActionsPopup.events({
'click .js-move-card': Popup.open('moveCard'),
'click .js-copy-card': Popup.open('copyCard'),
'click .js-convert-checklist-item-to-card': Popup.open('convertChecklistItemToCard'),
'click .js-copy-checklist-cards': Popup.open('copyChecklistToManyCards'),
'click .js-copy-checklist-cards': Popup.open('copyManyCards'),
'click .js-set-card-color': Popup.open('setCardColor'),
'click .js-move-card-to-top'(event) {
event.preventDefault();
const minOrder = _.min(
this.list()
.cardsUnfiltered(this.swimlaneId)
.map((c) => c.sort),
);
const minOrder = this.getMinSort();
this.move(this.boardId, this.swimlaneId, this.listId, minOrder - 1);
Popup.back();
},
'click .js-move-card-to-bottom'(event) {
event.preventDefault();
const maxOrder = _.max(
this.list()
.cardsUnfiltered(this.swimlaneId)
.map((c) => c.sort),
);
const maxOrder = this.getMaxSort();
this.move(this.boardId, this.swimlaneId, this.listId, maxOrder + 1);
Popup.back();
},
@@ -782,8 +794,8 @@ const filterMembers = (filterTerm) => {
user: Users.findOne(member.userId)
}))
.filter(({ user }) =>
(user.profile.fullname !== undefined && user.profile.fullname.toLowerCase().indexOf(filterTerm.toLowerCase()) !== -1)
|| user.profile.fullname === undefined && user.profile.username !== undefined && user.profile.username.toLowerCase().indexOf(filterTerm.toLowerCase()) !== -1)
(user.profile.fullname !== undefined && user.profile.fullname.toLowerCase().indexOf(filterTerm.toLowerCase()) !== -1)
|| user.profile.fullname === undefined && user.profile.username !== undefined && user.profile.username.toLowerCase().indexOf(filterTerm.toLowerCase()) !== -1)
.map(({ member }) => member);
}
return members;
@@ -815,178 +827,58 @@ Template.editCardAssignerForm.events({
},
});
Template.moveCardPopup.events({
'click .js-done'() {
const card = Cards.findOne(this._id);
const bSelect = $('.js-select-boards')[0];
let boardId;
// if we are a worker, we won't have a board select so we just use the
// current boardId of the card.
if (bSelect) {
boardId = bSelect.options[bSelect.selectedIndex].value;
} else {
boardId = card.boardId;
}
const lSelect = $('.js-select-lists')[0];
const listId = lSelect.options[lSelect.selectedIndex].value;
const slSelect = $('.js-select-swimlanes')[0];
const swimlaneId = slSelect.options[slSelect.selectedIndex].value;
card.move(boardId, swimlaneId, listId, 0);
// set new id's to card object in case the card is moved to top by the comment "moveCard" after this command (.js-move-card)
this.boardId = boardId;
this.swimlaneId = swimlaneId;
this.listId = listId;
Popup.back();
},
});
BlazeComponent.extendComponent({
onCreated() {
this.currentBoardId = Utils.getCurrentBoardId();
this.selectedBoardId = new ReactiveVar(this.currentBoardId);
this.setMoveAndCopyDialogOption(this.currentBoardId);
},
/** set the last confirmed dialog field values
* @param boardId the current board id
*/
setMoveAndCopyDialogOption(boardId) {
this.moveAndCopyDialogOption = {
'boardId' : "",
'swimlaneId' : "",
'listId' : "",
}
let currentOptions = Meteor.user().getMoveAndCopyDialogOptions();
if (currentOptions && boardId && currentOptions[boardId]) {
this.moveAndCopyDialogOption = currentOptions[boardId];
if (this.moveAndCopyDialogOption.boardId) {
this.selectedBoardId.set(this.moveAndCopyDialogOption.boardId)
}
}
subManager.subscribe('board', this.selectedBoardId.get(), false);
},
/** returns if the board id was the last confirmed one
* @param boardId check this board id
* @return if the board id was the last confirmed one
*/
isMoveAndCopyDialogOptionBoardId(boardId) {
let ret = this.moveAndCopyDialogOption.boardId == boardId;
/** Move Card Dialog */
(class extends DialogWithBoardSwimlaneList {
getDialogOptions() {
const ret = Meteor.user().getMoveAndCopyDialogOptions();
return ret;
},
}
setDone(boardId, swimlaneId, listId, options) {
Meteor.user().setMoveAndCopyDialogOption(this.currentBoardId, options);
const card = this.data();
const minOrder = card.getMinSort(listId, swimlaneId);
card.move(boardId, swimlaneId, listId, minOrder - 1);
}
}).register('moveCardPopup');
/** returns if the swimlane id was the last confirmed one
* @param swimlaneId check this swimlane id
* @return if the swimlane id was the last confirmed one
*/
isMoveAndCopyDialogOptionSwimlaneId(swimlaneId) {
let ret = this.moveAndCopyDialogOption.swimlaneId == swimlaneId;
/** Copy Card Dialog */
(class extends DialogWithBoardSwimlaneList {
getDialogOptions() {
const ret = Meteor.user().getMoveAndCopyDialogOptions();
return ret;
},
}
setDone(boardId, swimlaneId, listId, options) {
Meteor.user().setMoveAndCopyDialogOption(this.currentBoardId, options);
const card = this.data();
/** returns if the list id was the last confirmed one
* @param listId check this list id
* @return if the list id was the last confirmed one
*/
isMoveAndCopyDialogOptionListId(listId) {
let ret = this.moveAndCopyDialogOption.listId == listId;
return ret;
},
boards() {
return Boards.find(
{
archived: false,
'members.userId': Meteor.userId(),
_id: { $ne: Meteor.user().getTemplatesBoardId() },
},
{
sort: { sort: 1 /* boards default sorting */ },
},
);
},
swimlanes() {
const board = Boards.findOne(this.selectedBoardId.get());
return board.swimlanes();
},
aBoardLists() {
const board = Boards.findOne(this.selectedBoardId.get());
return board.lists();
},
events() {
return [
{
'click .js-done'() {
const boardSelect = this.$('.js-select-boards')[0];
const boardId = boardSelect.options[boardSelect.selectedIndex].value;
const listSelect = this.$('.js-select-lists')[0];
const listId = listSelect.options[listSelect.selectedIndex].value;
const swimlaneSelect = this.$('.js-select-swimlanes')[0];
const swimlaneId = swimlaneSelect.options[swimlaneSelect.selectedIndex].value;
const options = {
'boardId' : boardId,
'swimlaneId' : swimlaneId,
'listId' : listId,
}
Meteor.user().setMoveAndCopyDialogOption(this.currentBoardId, options);
},
'change .js-select-boards'(event) {
const boardId = $(event.currentTarget).val();
this.selectedBoardId.set(boardId);
subManager.subscribe('board', boardId, false);
},
},
];
},
}).register('boardsAndLists');
Template.copyCardPopup.events({
'click .js-done'() {
const card = Utils.getCurrentCard();
const lSelect = $('.js-select-lists')[0];
const listId = lSelect.options[lSelect.selectedIndex].value;
const slSelect = $('.js-select-swimlanes')[0];
const swimlaneId = slSelect.options[slSelect.selectedIndex].value;
const bSelect = $('.js-select-boards')[0];
const boardId = bSelect.options[bSelect.selectedIndex].value;
const textarea = $('#copy-card-title');
// const textarea = $('#copy-card-title');
const textarea = this.$('#copy-card-title');
const title = textarea.val().trim();
// insert new card to the bottom of new list
card.sort = Lists.findOne(card.listId).cards().count();
if (title) {
card.title = title;
card.coverId = '';
const _id = card.copy(boardId, swimlaneId, listId);
// insert new card to the top of new list
const newCardId = Meteor.call('copyCard', card._id, boardId, swimlaneId, listId, true, {title: title});
// In case the filter is active we need to add the newly inserted card in
// the list of exceptions -- cards that are not filtered. Otherwise the
// card will disappear instantly.
// See https://github.com/wekan/wekan/issues/80
Filter.addException(_id);
Popup.back();
Filter.addException(newCardId);
}
},
});
}
}).register('copyCardPopup');
Template.convertChecklistItemToCardPopup.events({
'click .js-done'() {
const card = Utils.getCurrentCard();
const lSelect = $('.js-select-lists')[0];
const listId = lSelect.options[lSelect.selectedIndex].value;
const slSelect = $('.js-select-swimlanes')[0];
const swimlaneId = slSelect.options[slSelect.selectedIndex].value;
const bSelect = $('.js-select-boards')[0];
const boardId = bSelect.options[bSelect.selectedIndex].value;
const textarea = $('#copy-card-title');
/** Convert Checklist-Item to card dialog */
(class extends DialogWithBoardSwimlaneList {
getDialogOptions() {
const ret = Meteor.user().getMoveAndCopyDialogOptions();
return ret;
}
setDone(boardId, swimlaneId, listId, options) {
Meteor.user().setMoveAndCopyDialogOption(this.currentBoardId, options);
const card = this.data();
const textarea = this.$('#copy-card-title');
const title = textarea.val().trim();
if (title) {
@@ -997,68 +889,42 @@ Template.convertChecklistItemToCardPopup.events({
swimlaneId: swimlaneId,
sort: 0,
});
const card = Cards.findOne(_id);
const minOrder = card.getMinSort();
card.move(card.boardId, card.swimlaneId, card.listId, minOrder - 1);
Filter.addException(_id);
Popup.back();
}
},
});
}
}).register('convertChecklistItemToCardPopup');
Template.copyChecklistToManyCardsPopup.events({
'click .js-done'() {
const card = Utils.getCurrentCard();
const oldId = card._id;
card._id = null;
const lSelect = $('.js-select-lists')[0];
card.listId = lSelect.options[lSelect.selectedIndex].value;
const slSelect = $('.js-select-swimlanes')[0];
card.swimlaneId = slSelect.options[slSelect.selectedIndex].value;
const bSelect = $('.js-select-boards')[0];
card.boardId = bSelect.options[bSelect.selectedIndex].value;
const textarea = $('#copy-card-title');
const titleEntry = textarea.val().trim();
// insert new card to the bottom of new list
card.sort = Lists.findOne(card.listId).cards().count();
/** Copy many cards dialog */
(class extends DialogWithBoardSwimlaneList {
getDialogOptions() {
const ret = Meteor.user().getMoveAndCopyDialogOptions();
return ret;
}
setDone(boardId, swimlaneId, listId, options) {
Meteor.user().setMoveAndCopyDialogOption(this.currentBoardId, options);
const card = this.data();
const textarea = this.$('#copy-card-title');
const title = textarea.val().trim();
if (title) {
const titleList = JSON.parse(title);
for (const obj of titleList) {
const newCardId = Meteor.call('copyCard', card._id, boardId, swimlaneId, listId, false, {title: obj.title, description: obj.description});
if (titleEntry) {
const titleList = JSON.parse(titleEntry);
for (let i = 0; i < titleList.length; i++) {
const obj = titleList[i];
card.title = obj.title;
card.description = obj.description;
card.coverId = '';
const _id = Cards.insert(card);
// In case the filter is active we need to add the newly inserted card in
// the list of exceptions -- cards that are not filtered. Otherwise the
// card will disappear instantly.
// See https://github.com/wekan/wekan/issues/80
Filter.addException(_id);
// copy checklists
Checklists.find({ cardId: oldId }).forEach((ch) => {
ch.copy(_id);
});
// copy subtasks
const cursor = Cards.find({ parentId: oldId });
cursor.forEach(function () {
'use strict';
const subtask = arguments[0];
subtask.parentId = _id;
subtask._id = null;
/* const newSubtaskId = */ Cards.insert(subtask);
});
// copy card comments
CardComments.find({ cardId: oldId }).forEach((cmt) => {
cmt.copy(_id);
});
Filter.addException(newCardId);
}
Popup.back();
}
},
});
}
}).register('copyManyCardsPopup');
BlazeComponent.extendComponent({
onCreated() {
@@ -1711,10 +1577,29 @@ BlazeComponent.extendComponent({
EscapeActions.register(
'detailsPane',
() => {
// if card description diverges from database due to editing
// ask user whether changes should be applied
if (Meteor.user()) {
if (Meteor.user().profile.rescueCardDescription == true) {
currentDescription = document.getElementsByClassName("editor js-new-description-input").item(0)
if (currentDescription?.value && !(currentDescription.value === Utils.getCurrentCard().getDescription())) {
if (confirm(TAPi18n.__('rescue-card-description-dialogue'))) {
Utils.getCurrentCard().setDescription(document.getElementsByClassName("editor js-new-description-input").item(0).value);
// Save it!
console.log(document.getElementsByClassName("editor js-new-description-input").item(0).value);
console.log("current description", Utils.getCurrentCard().getDescription());
} else {
// Do nothing!
console.log('Description changes were not saved to the database.');
}
}
}
}
if (Session.get('cardDetailsIsDragging')) {
// Reset dragging status as the mouse landed outside the cardDetails template area and this will prevent a mousedown event from firing
Session.set('cardDetailsIsDragging', false);
Session.set('cardDetailsIsMouseDown', false);
} else {
// Prevent close card when the user is selecting text and moves the mouse cursor outside the card detail area
Utils.goBoardId(Session.get('currentBoard'));
@@ -1777,13 +1662,7 @@ Template.cardAssigneesPopup.helpers({
Template.cardAssigneePopup.helpers({
userData() {
// We need to handle a special case for the search results provided by the
// `matteodem:easy-search` package. Since these results gets published in a
// separate collection, and not in the standard Meteor.Users collection as
// expected, we use a component parameter ("property") to distinguish the
// two cases.
const userCollection = this.esSearch ? ESSearchResults : Users;
return userCollection.findOne(this.userId, {
return Users.findOne(this.userId, {
fields: {
profile: 1,
username: 1,
@@ -1796,17 +1675,17 @@ Template.cardAssigneePopup.helpers({
return user && user.isBoardAdmin() ? 'admin' : 'normal';
},
/*
presenceStatusClassName() {
const user = Users.findOne(this.userId);
const userPresence = presences.findOne({ userId: this.userId });
if (user && user.isInvitedTo(Session.get('currentBoard'))) return 'pending';
else if (!userPresence) return 'disconnected';
else if (Session.equals('currentBoard', userPresence.state.currentBoardId))
return 'active';
else return 'idle';
},
*/
/*
presenceStatusClassName() {
const user = Users.findOne(this.userId);
const userPresence = presences.findOne({ userId: this.userId });
if (user && user.isInvitedTo(Session.get('currentBoard'))) return 'pending';
else if (!userPresence) return 'disconnected';
else if (Session.equals('currentBoard', userPresence.state.currentBoardId))
return 'active';
else return 'idle';
},
*/
isCardAssignee() {
const card = Template.parentData();
const cardAssignees = card.getAssignees();
+10 -38
View File
@@ -34,13 +34,13 @@ template(name="checklistDetail")
a.fa.fa-navicon.checklist-details-menu.js-open-checklist-details-menu(title="{{_ 'checklistActionsPopup-title'}}")
if canModifyCard
h2.title.js-open-inlined-form.is-editable
if isMiniScreenOrShowDesktopDragHandles
h4.title.js-open-inlined-form.is-editable
if isTouchScreenOrShowDesktopDragHandles
span.fa.checklist-handle(class="fa-arrows" title="{{_ 'dragChecklist'}}")
+viewer
= checklist.title
else
h2.title
h4.title
+viewer
= checklist.title
@@ -100,11 +100,12 @@ 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 hideCheckedItems}} invisible{{/if}}{{/if}}"
role="checkbox" aria-checked="{{#if item.isFinished }}true{{else}}false{{/if}}" tabindex="0")
if canModifyCard
.check-box-container
.check-box.materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}")
if isMiniScreenOrShowDesktopDragHandles
if isTouchScreenOrShowDesktopDragHandles
span.fa.checklistitem-handle(class="fa-arrows" title="{{_ 'dragChecklistItem'}}")
.item-title.js-open-inlined-form.is-editable(class="{{#if item.isFinished }}is-checked{{/if}}")
+viewer
@@ -115,35 +116,6 @@ template(name='checklistItemDetail')
+viewer
= item.title
template(name="convertChecklistItemToCardPopup")
label(for='convert-checklist-item-to-card-title') {{_ 'title'}}:
textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)
= item.title
+boardsSwimlanesAndLists
template(name="boardsSwimlanesAndLists")
unless currentUser.isWorker
label {{_ 'boards'}}:
select.js-select-boards(autofocus)
each boards
if $eq _id currentBoard._id
option(value="{{_id}}" selected) {{_ 'current'}}
else
option(value="{{_id}}") {{title}}
label {{_ 'swimlanes'}}:
select.js-select-swimlanes
each swimlanes
option(value="{{_id}}") {{title}}
label {{_ 'lists'}}:
select.js-select-lists
each aBoardLists
option(value="{{_id}}") {{title}}
.edit-controls.clearfix
button.primary.confirm.js-done {{_ 'done'}}
template(name="checklistActionsPopup")
ul.pop-over-list
li
@@ -171,22 +143,22 @@ template(name="copyAndMoveChecklist")
if $eq _id currentBoard._id
option(value="{{_id}}" selected) {{_ 'current'}}
else
option(value="{{_id}}" selected="{{#if isChecklistDialogOptionBoardId _id}}selected{{/if}}") {{title}}
option(value="{{_id}}" selected="{{#if isDialogOptionBoardId _id}}selected{{/if}}") {{title}}
label {{_ 'swimlanes'}}:
select.js-select-swimlanes
each swimlanes
option(value="{{_id}}" selected="{{#if isChecklistDialogOptionSwimlaneId _id}}selected{{/if}}") {{title}}
option(value="{{_id}}" selected="{{#if isDialogOptionSwimlaneId _id}}selected{{/if}}") {{title}}
label {{_ 'lists'}}:
select.js-select-lists
each lists
option(value="{{_id}}" selected="{{#if isChecklistDialogOptionListId _id}}selected{{/if}}") {{title}}
option(value="{{_id}}" selected="{{#if isDialogOptionListId _id}}selected{{/if}}") {{title}}
label {{_ 'cards'}}:
select.js-select-cards
each cards
option(value="{{_id}}" selected="{{#if isChecklistDialogOptionCardId _id}}selected{{/if}}") {{title}}
option(value="{{_id}}" selected="{{#if isDialogOptionCardId _id}}selected{{/if}}") {{title}}
.edit-controls.clearfix
button.primary.confirm.js-done {{_ 'done'}}
+10 -213
View File
@@ -1,6 +1,7 @@
import { TAPi18n } from '/imports/i18n';
import Cards from '/models/cards';
import Boards from '/models/boards';
import { DialogWithBoardSwimlaneListCard } from '/client/lib/dialogWithBoardSwimlaneListCard';
const subManager = new SubsManager();
const { calculateIndexData, capitalize } = Utils;
@@ -48,7 +49,7 @@ BlazeComponent.extendComponent({
const self = this;
self.itemsDom = this.$('.js-checklist-items');
initSorting(self.itemsDom);
self.itemsDom.mousedown(function(evt) {
self.itemsDom.mousedown(function (evt) {
evt.stopPropagation();
});
@@ -61,7 +62,7 @@ BlazeComponent.extendComponent({
const $itemsDom = $(self.itemsDom);
if ($itemsDom.data('uiSortable') || $itemsDom.data('sortable')) {
$(self.itemsDom).sortable('option', 'disabled', !userIsMember());
if (Utils.isMiniScreenOrShowDesktopDragHandles()) {
if (Utils.isTouchScreenOrShowDesktopDragHandles()) {
$(self.itemsDom).sortable({
handle: 'span.fa.checklistitem-handle',
});
@@ -306,15 +307,15 @@ BlazeComponent.extendComponent({
events() {
return [
{
'click .js-delete-checklist' : Popup.afterConfirm('checklistDelete', function () {
'click .js-delete-checklist': Popup.afterConfirm('checklistDelete', function () {
Popup.back(2);
const checklist = this.checklist;
if (checklist && checklist._id) {
Checklists.remove(checklist._id);
}
}),
'click .js-move-checklist' : Popup.open('moveChecklist'),
'click .js-copy-checklist' : Popup.open('copyChecklist'),
'click .js-move-checklist': Popup.open('moveChecklist'),
'click .js-copy-checklist': Popup.open('copyChecklist'),
}
]
}
@@ -380,213 +381,9 @@ BlazeComponent.extendComponent({
},
}).register('checklistItemDetail');
class DialogWithBoardSwimlaneListAndCard extends BlazeComponent {
/** returns the checklist dialog options
* @return Object with properties { boardId, swimlaneId, listId, cardId }
*/
getChecklistDialogOptions() {
}
/** checklist is done
* @param cardId the selected card id
* @param options the selected options (Object with properties { boardId, swimlaneId, listId, cardId })
*/
setDone(cardId, options) {
}
onCreated() {
this.currentBoardId = Utils.getCurrentBoardId();
this.selectedBoardId = new ReactiveVar(this.currentBoardId);
this.selectedSwimlaneId = new ReactiveVar('');
this.selectedListId = new ReactiveVar('');
this.setChecklistDialogOption(this.currentBoardId);
}
/** set the last confirmed dialog field values
* @param boardId the current board id
*/
setChecklistDialogOption(boardId) {
this.checklistDialogOption = {
'boardId' : "",
'swimlaneId' : "",
'listId' : "",
'cardId': "",
}
let currentOptions = this.getChecklistDialogOptions();
if (currentOptions && boardId && currentOptions[boardId]) {
this.checklistDialogOption = currentOptions[boardId];
if (this.checklistDialogOption.boardId &&
this.checklistDialogOption.swimlaneId &&
this.checklistDialogOption.listId
)
{
this.selectedBoardId.set(this.checklistDialogOption.boardId)
this.selectedSwimlaneId.set(this.checklistDialogOption.swimlaneId);
this.selectedListId.set(this.checklistDialogOption.listId);
}
}
this.getBoardData(this.selectedBoardId.get());
if (!this.selectedSwimlaneId.get() || !Swimlanes.findOne({_id: this.selectedSwimlaneId.get(), boardId: this.selectedBoardId.get()})) {
this.setFirstSwimlaneId();
}
if (!this.selectedListId.get() || !Lists.findOne({_id: this.selectedListId.get(), boardId: this.selectedBoardId.get()})) {
this.setFirstListId();
}
}
/** sets the first swimlane id */
setFirstSwimlaneId() {
try {
const board = Boards.findOne(this.selectedBoardId.get());
const swimlaneId = board.swimlanes().fetch()[0]._id;
this.selectedSwimlaneId.set(swimlaneId);
} catch (e) {}
}
/** sets the first list id */
setFirstListId() {
try {
const board = Boards.findOne(this.selectedBoardId.get());
const listId = board.lists().fetch()[0]._id;
this.selectedListId.set(listId);
} catch (e) {}
}
/** returns if the board id was the last confirmed one
* @param boardId check this board id
* @return if the board id was the last confirmed one
*/
isChecklistDialogOptionBoardId(boardId) {
let ret = this.checklistDialogOption.boardId == boardId;
return ret;
}
/** returns if the swimlane id was the last confirmed one
* @param swimlaneId check this swimlane id
* @return if the swimlane id was the last confirmed one
*/
isChecklistDialogOptionSwimlaneId(swimlaneId) {
let ret = this.checklistDialogOption.swimlaneId == swimlaneId;
return ret;
}
/** returns if the list id was the last confirmed one
* @param listId check this list id
* @return if the list id was the last confirmed one
*/
isChecklistDialogOptionListId(listId) {
let ret = this.checklistDialogOption.listId == listId;
return ret;
}
/** returns if the card id was the last confirmed one
* @param cardId check this card id
* @return if the card id was the last confirmed one
*/
isChecklistDialogOptionCardId(cardId) {
let ret = this.checklistDialogOption.cardId == cardId;
return ret;
}
/** returns all available board */
boards() {
const ret = Boards.find(
{
archived: false,
'members.userId': Meteor.userId(),
_id: { $ne: Meteor.user().getTemplatesBoardId() },
},
{
sort: { sort: 1 },
},
);
return ret;
}
/** returns all available swimlanes of the current board */
swimlanes() {
const board = Boards.findOne(this.selectedBoardId.get());
const ret = board.swimlanes();
return ret;
}
/** returns all available lists of the current board */
lists() {
const board = Boards.findOne(this.selectedBoardId.get());
const ret = board.lists();
return ret;
}
/** returns all available cards of the current list */
cards() {
const list = Lists.findOne(this.selectedListId.get());
const ret = list.cards(this.selectedSwimlaneId.get());
return ret;
}
/** get the board data from the server
* @param boardId get the board data of this board id
*/
getBoardData(boardId) {
const self = this;
Meteor.subscribe('board', boardId, false, {
onReady() {
const sameBoardId = self.selectedBoardId.get() == boardId;
self.selectedBoardId.set(boardId);
if (!sameBoardId) {
// reset swimlane id (for selection in cards())
self.setFirstSwimlaneId();
// reset list id (for selection in cards())
self.setFirstListId();
}
},
});
}
events() {
return [
{
'click .js-done'() {
const boardSelect = this.$('.js-select-boards')[0];
const boardId = boardSelect.options[boardSelect.selectedIndex].value;
const listSelect = this.$('.js-select-lists')[0];
const listId = listSelect.options[listSelect.selectedIndex].value;
const swimlaneSelect = this.$('.js-select-swimlanes')[0];
const swimlaneId = swimlaneSelect.options[swimlaneSelect.selectedIndex].value;
const cardSelect = this.$('.js-select-cards')[0];
const cardId = cardSelect.options[cardSelect.selectedIndex].value;
const options = {
'boardId' : boardId,
'swimlaneId' : swimlaneId,
'listId' : listId,
'cardId': cardId,
}
this.setDone(cardId, options);
Popup.back(2);
},
'change .js-select-boards'(event) {
const boardId = $(event.currentTarget).val();
this.getBoardData(boardId);
},
'change .js-select-swimlanes'(event) {
this.selectedSwimlaneId.set($(event.currentTarget).val());
},
'change .js-select-lists'(event) {
this.selectedListId.set($(event.currentTarget).val());
},
},
];
}
}
/** Move Checklist Dialog */
(class extends DialogWithBoardSwimlaneListAndCard {
getChecklistDialogOptions() {
(class extends DialogWithBoardSwimlaneListCard {
getDialogOptions() {
const ret = Meteor.user().getMoveChecklistDialogOptions();
return ret;
}
@@ -597,8 +394,8 @@ class DialogWithBoardSwimlaneListAndCard extends BlazeComponent {
}).register('moveChecklistPopup');
/** Copy Checklist Dialog */
(class extends DialogWithBoardSwimlaneListAndCard {
getChecklistDialogOptions() {
(class extends DialogWithBoardSwimlaneListCard {
getDialogOptions() {
const ret = Meteor.user().getCopyChecklistDialogOptions();
return ret;
}
+1 -1
View File
@@ -29,7 +29,7 @@ template(name="cardLabelsPopup")
each board.labels
li.js-card-label-item
a.card-label-edit-button.fa.fa-pencil.js-edit-label
if isMiniScreenOrShowDesktopDragHandles
if isTouchScreenOrShowDesktopDragHandles
span.fa.label-handle(class="fa-arrows" title="{{_ 'dragLabel'}}")
span.card-label.card-label-selectable.js-select-label.card-label-wrapper(class="card-label-{{color}}"
class="{{# if isLabelSelected ../_id }}active{{/if}}")
+3 -4
View File
@@ -50,8 +50,7 @@ BlazeComponent.extendComponent({
appendTo: '.edit-labels-pop-over',
helper(element, currentItem) {
let ret = currentItem.clone();
if (currentItem.closest('.popup-container-depth-0').size() == 0)
{ // only set css transform at every sub-popup, not at the main popup
if (currentItem.closest('.popup-container-depth-0').size() == 0) { // only set css transform at every sub-popup, not at the main popup
const content = currentItem.closest('.content')[0]
const offsetLeft = content.offsetLeft;
const offsetTop = $('.pop-over > .header').height() * -1;
@@ -76,7 +75,7 @@ BlazeComponent.extendComponent({
// Disable drag-dropping if the current user is not a board member or is comment only
this.autorun(() => {
if (Utils.isMiniScreenOrShowDesktopDragHandles()) {
if (Utils.isTouchScreenOrShowDesktopDragHandles()) {
$labels.sortable({
handle: '.label-handle',
});
@@ -130,7 +129,7 @@ Template.createLabelPopup.events({
});
Template.editLabelPopup.events({
'click .js-delete-label': Popup.afterConfirm('deleteLabel', function() {
'click .js-delete-label': Popup.afterConfirm('deleteLabel', function () {
const board = Boards.findOne(Session.get('currentBoard'));
board.removeLabel(this._id);
Popup.back(2);
+1 -1
View File
@@ -3,7 +3,7 @@ template(name="minicard")
class="{{#if isLinkedCard}}linked-card{{/if}}"
class="{{#if isLinkedBoard}}linked-board{{/if}}"
class="{{#if colorClass}}minicard-{{colorClass}}{{/if}}")
if isMiniScreenOrShowDesktopDragHandles
if isTouchScreenOrShowDesktopDragHandles
.handle
.fa.fa-arrows
if cover
+6 -6
View File
@@ -56,17 +56,17 @@ template(name="importMapMembersAddPopup")
p
| {{_ 'import-user-select'}}
.js-map-member
+esInput(index="users")
+EasySearch.Input(index=searchIndex)
ul.pop-over-list
+esEach(index="users")
+EasySearch.Each(index=searchIndex)
li.item.js-member-item
a.name.js-select-import(title="{{profile.fullname}} ({{username}})" data-id="{{_id}}")
+userAvatar(userId=_id esSearch=true)
a.name.js-select-import(title="{{profile.fullname}} ({{username}})" data-id="{{__originalId}}")
+userAvatar(userId=__originalId)
span.full-name
= profile.fullname
| (<span class="username">{{username}}</span>)
+ifEsIsSearching(index='users')
+EasySearch.IfSearching(index=searchIndex)
+spinner
+ifEsHasNoResults(index="users")
+EasySearch.IfNoResults(index=searchIndex)
.manage-member-section
p.quiet {{_ 'no-results'}}
+5 -1
View File
@@ -297,7 +297,7 @@ BlazeComponent.extendComponent({
},
onSelectUser() {
Popup.getOpenerComponent().mapSelectedMember(this.currentData()._id);
Popup.getOpenerComponent(5).mapSelectedMember(this.currentData().__originalId);
Popup.back();
},
@@ -309,3 +309,7 @@ BlazeComponent.extendComponent({
];
},
}).register('importMapMembersAddPopup');
Template.importMapMembersAddPopup.helpers({
searchIndex: () => UserSearchIndex,
})
+6 -1
View File
@@ -9,6 +9,11 @@
float: left;
min-width: 270px;
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 */
}
.list:first-child {
margin-left: 5px;
@@ -154,7 +159,7 @@
#js-wip-limit-edit div {
float: left;
}
@media screen and (max-width: 800px) {
@media screen and (max-width: 250px) {
.mini-list {
flex: 0 0 60px;
height: auto;
+8 -12
View File
@@ -96,7 +96,7 @@ BlazeComponent.extendComponent({
$cards.sortable('cancel');
if (MultiSelection.isActive()) {
Cards.find(MultiSelection.getMongoSelector(), {sort: ['sort']}).forEach((card, i) => {
Cards.find(MultiSelection.getMongoSelector(), { sort: ['sort'] }).forEach((card, i) => {
const newSwimlaneId = targetSwimlaneId
? targetSwimlaneId
: card.swimlaneId || defaultSwimlaneId;
@@ -119,35 +119,31 @@ BlazeComponent.extendComponent({
},
sort(event, ui) {
const $boardCanvas = $('.board-canvas');
const boardCanvas = $boardCanvas[0];
const boardCanvas = $boardCanvas[0];
if (event.pageX < 10)
{ // scroll to the left
if (event.pageX < 10) { // scroll to the left
boardCanvas.scrollLeft -= 15;
ui.helper[0].offsetLeft -= 15;
}
if (
event.pageX > boardCanvas.offsetWidth - 10 &&
boardCanvas.scrollLeft < $boardCanvas.data('scrollLeftMax') // don't scroll more than possible
)
{ // scroll to the right
) { // scroll to the right
boardCanvas.scrollLeft += 15;
}
if (
event.pageY > boardCanvas.offsetHeight - 10 &&
event.pageY + boardCanvas.scrollTop < $boardCanvas.data('scrollTopMax') // don't scroll more than possible
)
{ // scroll to the bottom
) { // scroll to the bottom
boardCanvas.scrollTop += 15;
}
if (event.pageY < 10)
{ // scroll to the top
if (event.pageY < 10) { // scroll to the top
boardCanvas.scrollTop -= 15;
}
},
activate(event, ui) {
const $boardCanvas = $('.board-canvas');
const boardCanvas = $boardCanvas[0];
const boardCanvas = $boardCanvas[0];
// scrollTopMax and scrollLeftMax only available at Firefox (https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollTopMax)
// https://www.it-swarm.com.de/de/javascript/so-erhalten-sie-den-maximalen-dokument-scrolltop-wert/1069126844/
$boardCanvas.data('scrollTopMax', boardCanvas.scrollHeight - boardCanvas.clientTop);
@@ -157,7 +153,7 @@ BlazeComponent.extendComponent({
});
this.autorun(() => {
if (Utils.isMiniScreenOrShowDesktopDragHandles()) {
if (Utils.isTouchScreenOrShowDesktopDragHandles()) {
$cards.sortable({
handle: '.handle',
});
+1 -1
View File
@@ -44,7 +44,7 @@ template(name="listHeader")
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 isShowDesktopDragHandles
if isTouchScreenOrShowDesktopDragHandles
a.list-header-handle.handle.fa.fa-arrows.js-list-handle
template(name="editListTitleForm")
+3
View File
@@ -394,6 +394,9 @@ Template.viewer.events({
} else {
const href = event.currentTarget.href;
if (href) {
// Open links in current browser tab, changed from _blank to _self, and back to _blank:
// https://github.com/wekan/wekan/discussions/3534
//window.open(href, '_self');
window.open(href, '_blank');
}
}
+4 -2
View File
@@ -178,13 +178,15 @@
top: -5px;
margin-right: 5px;
}
#header-quick-access #header-user-bar .header-user-bar-avatar .member {
#header-quick-access #header-user-bar .header-user-bar-avatar .member,
#header-quick-access #header-help {
width: 24px;
height: 24px;
margin: 0;
margin-top: 1px;
}
#header-quick-access #header-user-bar .header-user-bar-name {
#header-quick-access #header-user-bar .header-user-bar-name,
#header-quick-access #header-help {
margin: 4px 8px 0 0;
float: left;
}
+5
View File
@@ -67,6 +67,11 @@ template(name="header")
+notifications
if currentSetting.customHelpLinkUrl
#header-help
a(href="{{currentSetting.customHelpLinkUrl}}", title="{{_ 'help'}}", target="_blank", rel="noopener noreferrer")
span.fa.fa-question
+headerUserBar
#header(class=currentBoard.colorClass)
+4 -46
View File
@@ -1,6 +1,9 @@
* {
-webkit-box-sizing: unset;
box-sizing: unset;
}
/* Fixed missing 'import nib' stylesheet reset and extra li bullet points
* https://github.com/wekan/wekan/issues/4512#issuecomment-1129347536
* https://github.com/stylus/nib/blob/master/lib/nib/reset.styl
*/
a, abbr, acronym, address, applet, big, blockquote, body, caption, cite,
code, dd, del, dfn, div, dl, dt, em, fieldset, form, h1, h2, h3, h4, h5,
@@ -16,51 +19,6 @@ table, tbody, td, tfoot, th, thread, tr, tt, ul, var {
font-size: 100%;
vertical-align: baseline;
}
ol, ul {
list-style: none;
}
a img {
border: none;
}
/* reset body */
body {
line-height: 1;
color: black;
background: white;
}
/* reset table cell */
table {
border-collapse: separate;
border-spacing: 0;
vertical-align: middle;
}
caption, td, th {
text-align: left;
font-weight: normal;
vertical-align: middle;
}
/* reset html5 */
article, aside, canvas, details, figcaption,
figure, footer, header, hgroup, menu, nav,
section, summary, main {
display: block;
}
audio, canvas, video {
display: inline-block;
*display: inline;
*zoom: 1;
}
audio:not([controls]),[hidden] {
display: none;
}
/* End of reset css */
* {
-webkit-box-sizing: unset;
box-sizing: unset;
}
.note-popover .popover-content .note-color-palette div .note-color-btn,
.panel-heading.note-toolbar .note-color-palette div .note-color-btn {
background: none;
+1
View File
@@ -16,6 +16,7 @@ head
meta(name="application-name" content="Wekan")
meta(name="msapplication-TileColor" content="#00aba9")
meta(name="theme-color" content="#ffffff")
//link(rel="stylesheet" type="text/css" class="__meteor-css__" href="css/html5-default-theme.css")
template(name="userFormsLayout")
section.auth-layout
+37 -26
View File
@@ -4,7 +4,7 @@ BlazeLayout.setRoot('body');
let alreadyCheck = 1;
let isCheckDone = false;
let counter = 0;
const validator = {
set(obj, prop, value) {
if (prop === 'state' && value !== 'signIn') {
@@ -21,7 +21,7 @@ const validator = {
// let isSettingDatabaseFctCallDone = false;
Template.userFormsLayout.onCreated(function() {
Template.userFormsLayout.onCreated(function () {
const templateInstance = this;
templateInstance.currentSetting = new ReactiveVar();
templateInstance.isLoading = new ReactiveVar(false);
@@ -37,7 +37,7 @@ Template.userFormsLayout.onCreated(function() {
}
// isSettingDatabaseFctCallDone = true;
if(currSetting && currSetting !== undefined && currSetting.customLoginLogoImageUrl !== undefined)
if (currSetting && currSetting !== undefined && currSetting.customLoginLogoImageUrl !== undefined)
document.getElementById("isSettingDatabaseCallDone").style.display = 'none';
else
document.getElementById("isSettingDatabaseCallDone").style.display = 'block';
@@ -50,6 +50,18 @@ Template.userFormsLayout.onCreated(function() {
}
});
if (!Meteor.user()?.profile) {
Meteor.call('isOidcRedirectionEnabled', (_, result) => {
if (result) {
AccountsTemplates.options.socialLoginStyle = 'redirect';
options = {
loginStyle: AccountsTemplates.options.socialLoginStyle,
};
Meteor.loginWithOidc(options);
}
else console.log("oidc redirect not set");
});
}
Meteor.call('isDisableRegistration', (_, result) => {
if (result) {
$('.at-signup-link').hide();
@@ -81,22 +93,22 @@ Template.userFormsLayout.helpers({
// return isSettingDatabaseFctCallDone;
// },
isLegalNoticeLinkExist(){
isLegalNoticeLinkExist() {
const currSet = Template.instance().currentSetting.get();
if(currSet && currSet !== undefined && currSet != null){
if (currSet && currSet !== undefined && currSet != null) {
return currSet.legalNotice !== undefined && currSet.legalNotice.trim() != "";
}
else
return false;
},
getLegalNoticeWithWritTraduction(){
getLegalNoticeWithWritTraduction() {
let spanLegalNoticeElt = $("#legalNoticeSpan");
if(spanLegalNoticeElt != null && spanLegalNoticeElt != undefined){
if (spanLegalNoticeElt != null && spanLegalNoticeElt != undefined) {
spanLegalNoticeElt.html(TAPi18n.__('acceptance_of_our_legalNotice', {}));
}
let atLinkLegalNoticeElt = $("#legalNoticeAtLink");
if(atLinkLegalNoticeElt != null && atLinkLegalNoticeElt != undefined){
if (atLinkLegalNoticeElt != null && atLinkLegalNoticeElt != undefined) {
atLinkLegalNoticeElt.html(TAPi18n.__('legalNotice', {}));
}
return true;
@@ -147,41 +159,41 @@ Template.userFormsLayout.events({
}
isCheckDone = false;
},
'click #at-signUp'(event, templateInstance){
'click #at-signUp'(event, templateInstance) {
isCheckDone = false;
},
'DOMSubtreeModified #at-oidc'(event){
if(alreadyCheck <= 2){
'DOMSubtreeModified #at-oidc'(event) {
if (alreadyCheck <= 2) {
let currSetting = Settings.findOne();
let oidcBtnElt = $("#at-oidc");
if(currSetting && currSetting !== undefined && currSetting.oidcBtnText !== undefined && oidcBtnElt != null && oidcBtnElt != undefined){
if (currSetting && currSetting !== undefined && currSetting.oidcBtnText !== undefined && oidcBtnElt != null && oidcBtnElt != undefined) {
let htmlvalue = "<i class='fa fa-oidc'></i>" + currSetting.oidcBtnText;
if(alreadyCheck == 1){
if (alreadyCheck == 1) {
alreadyCheck++;
oidcBtnElt.html("");
}
else{
else {
alreadyCheck++;
oidcBtnElt.html(htmlvalue);
}
}
}
else{
else {
alreadyCheck = 1;
}
},
'DOMSubtreeModified .at-form'(event){
if(alreadyCheck <= 2 && !isCheckDone){
if(document.getElementById("at-oidc") != null){
'DOMSubtreeModified .at-form'(event) {
if (alreadyCheck <= 2 && !isCheckDone) {
if (document.getElementById("at-oidc") != null) {
let currSetting = Settings.findOne();
let oidcBtnElt = $("#at-oidc");
if(currSetting && currSetting !== undefined && currSetting.oidcBtnText !== undefined && oidcBtnElt != null && oidcBtnElt != undefined){
if (currSetting && currSetting !== undefined && currSetting.oidcBtnText !== undefined && oidcBtnElt != null && oidcBtnElt != undefined) {
let htmlvalue = "<i class='fa fa-oidc'></i>" + currSetting.oidcBtnText;
if(alreadyCheck == 1){
if (alreadyCheck == 1) {
alreadyCheck++;
oidcBtnElt.html("");
}
else{
else {
alreadyCheck++;
isCheckDone = true;
oidcBtnElt.html(htmlvalue);
@@ -189,7 +201,7 @@ Template.userFormsLayout.events({
}
}
}
else{
else {
alreadyCheck = 1;
}
},
@@ -221,7 +233,7 @@ async function authentication(event, templateInstance) {
switch (result) {
case 'ldap':
return new Promise(resolve => {
Meteor.loginWithLDAP(match, password, function() {
Meteor.loginWithLDAP(match, password, function () {
resolve(FlowRouter.go('/'));
});
});
@@ -233,7 +245,7 @@ async function authentication(event, templateInstance) {
{
provider,
},
function() {
function () {
resolve(FlowRouter.go('/'));
},
);
@@ -241,7 +253,7 @@ async function authentication(event, templateInstance) {
case 'cas':
return new Promise(resolve => {
Meteor.loginWithCas(match, password, function() {
Meteor.loginWithCas(match, password, function () {
resolve(FlowRouter.go('/'));
});
});
@@ -267,7 +279,6 @@ function getUserAuthenticationMethod(defaultAuthenticationMethod, match) {
Meteor.subscribe('user-authenticationMethod', match, {
onReady() {
const user = Users.findOne();
const authenticationMethod = user
? user.authenticationMethod
: defaultAuthenticationMethod;
+1
View File
@@ -63,6 +63,7 @@
.my-cards-card-title-table {
font-weight: bold;
padding-left: 2px;
max-width: 243px;
}
.my-cards-board-badge {
width: 36px;
+1 -1
View File
@@ -88,7 +88,7 @@ template(name="filesReport")
each att in results
tr
td {{ att.name }}
td.right {{fileSize att.size }}
td.right {{ fileSize att.size }}
td {{ att.type }}
td {{ att._id }}
td {{ att.meta.boardId }}
+3 -1
View File
@@ -4,6 +4,7 @@ import { CardSearchPagedComponent } from '/client/lib/cardSearch';
import SessionData from '/models/usersessiondata';
import { QueryParams } from '/config/query-classes';
import { OPERATOR_LIMIT } from '/config/search-const';
const filesize = require('filesize');
BlazeComponent.extendComponent({
subscription: null,
@@ -114,7 +115,8 @@ class AdminReport extends BlazeComponent {
}
fileSize(size) {
return Math.round(size / 1024);
const ret = filesize(size);
return ret;
}
abbreviate(text) {
+2 -2
View File
@@ -52,7 +52,7 @@ template(name="moveBoardAttachments")
th {{_ 'name'}}
th {{_ 'path'}}
th {{_ 'version-name'}}
th {{_ 'size'}} (B)
th {{_ 'size'}}
th GridFsFileId
th {{_ 'storage'}}
th {{_ 'action'}}
@@ -68,7 +68,7 @@ template(name="moveAttachment")
td {{ name }}
td {{ version.path }}
td {{ version.versionName }}
td {{ version.size }}
td {{ fileSize version.size }}
td {{ version.meta.gridFsFileId }}
td {{ version.storageName }}
td
@@ -1,4 +1,5 @@
import Attachments, { fileStoreStrategyFactory } from '/models/attachments';
const filesize = require('filesize');
BlazeComponent.extendComponent({
subscription: null,
@@ -108,6 +109,10 @@ BlazeComponent.extendComponent({
}).register('moveBoardAttachments');
BlazeComponent.extendComponent({
fileSize(size) {
const ret = filesize(size);
return ret;
},
events() {
return [
{
+14 -14
View File
@@ -58,38 +58,38 @@ template(name='statistics')
td {{numFormat statistics.os.loadavg.[0]}}, {{numFormat statistics.os.loadavg.[1]}}, {{numFormat statistics.os.loadavg.[2]}}
tr
th {{_ 'OS_Totalmem'}}
td {{bytesToSize statistics.os.totalmem}}
td {{fileSize statistics.os.totalmem}}
tr
th {{_ 'OS_Freemem'}}
td {{bytesToSize statistics.os.freemem}}
td {{fileSize statistics.os.freemem}}
tr
th {{_ 'OS_Cpus'}}
td {{statistics.os.cpus.length}}
unless isSandstorm
tr
th {{_ 'Node_heap_total_heap_size'}}
td {{bytesToSize statistics.nodeHeapStats.totalHeapSize}}
td {{fileSize statistics.nodeHeapStats.totalHeapSize}}
tr
th {{_ 'Node_heap_total_heap_size_executable'}}
td {{bytesToSize statistics.nodeHeapStats.totalHeapSizeExecutable}}
td {{fileSize statistics.nodeHeapStats.totalHeapSizeExecutable}}
tr
th {{_ 'Node_heap_total_physical_size'}}
td {{bytesToSize statistics.nodeHeapStats.totalPhysicalSize}}
td {{fileSize statistics.nodeHeapStats.totalPhysicalSize}}
tr
th {{_ 'Node_heap_total_available_size'}}
td {{bytesToSize statistics.nodeHeapStats.totalAvailableSize}}
td {{fileSize statistics.nodeHeapStats.totalAvailableSize}}
tr
th {{_ 'Node_heap_used_heap_size'}}
td {{bytesToSize statistics.nodeHeapStats.usedHeapSize}}
td {{fileSize statistics.nodeHeapStats.usedHeapSize}}
tr
th {{_ 'Node_heap_heap_size_limit'}}
td {{bytesToSize statistics.nodeHeapStats.heapSizeLimit}}
td {{fileSize statistics.nodeHeapStats.heapSizeLimit}}
tr
th {{_ 'Node_heap_malloced_memory'}}
td {{bytesToSize statistics.nodeHeapStats.mallocedMemory}}
td {{fileSize statistics.nodeHeapStats.mallocedMemory}}
tr
th {{_ 'Node_heap_peak_malloced_memory'}}
td {{bytesToSize statistics.nodeHeapStats.peakMallocedMemory}}
td {{fileSize statistics.nodeHeapStats.peakMallocedMemory}}
tr
th {{_ 'Node_heap_does_zap_garbage'}}
td {{statistics.nodeHeapStats.doesZapGarbage}}
@@ -101,13 +101,13 @@ template(name='statistics')
td {{statistics.nodeHeapStats.numberOfDetachedContexts}}
tr
th {{_ 'Node_memory_usage_rss'}}
td {{bytesToSize statistics.nodeMemoryUsage.rss}}
td {{fileSize statistics.nodeMemoryUsage.rss}}
tr
th {{_ 'Node_memory_usage_heap_total'}}
td {{bytesToSize statistics.nodeMemoryUsage.heapTotal}}
td {{fileSize statistics.nodeMemoryUsage.heapTotal}}
tr
th {{_ 'Node_memory_usage_heap_used'}}
td {{bytesToSize statistics.nodeMemoryUsage.heapUsed}}
td {{fileSize statistics.nodeMemoryUsage.heapUsed}}
tr
th {{_ 'Node_memory_usage_external'}}
td {{bytesToSize statistics.nodeMemoryUsage.external}}
td {{fileSize statistics.nodeMemoryUsage.external}}
@@ -1,4 +1,5 @@
import { TAPi18n } from '/imports/i18n';
const filesize = require('filesize');
BlazeComponent.extendComponent({
onCreated() {
@@ -39,12 +40,8 @@ BlazeComponent.extendComponent({
return parseFloat(number).toFixed(2);
},
bytesToSize(bytes) {
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
if (bytes === 0) {
return '0 Byte';
}
const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10);
return `${Math.round(bytes / Math.pow(1024, i), 2)} ${sizes[i]}`;
fileSize(size) {
const ret = filesize(size);
return ret;
},
}).register('statistics');
+3 -6
View File
@@ -190,22 +190,19 @@ BlazeComponent.extendComponent({
Template.orgRow.helpers({
orgData() {
const orgCollection = this.esSearch ? ESSearchResults : Org;
return orgCollection.findOne(this.orgId);
return Org.findOne(this.orgId);
},
});
Template.teamRow.helpers({
teamData() {
const teamCollection = this.esSearch ? ESSearchResults : Team;
return teamCollection.findOne(this.teamId);
return Team.findOne(this.teamId);
},
});
Template.peopleRow.helpers({
userData() {
const userCollection = this.esSearch ? ESSearchResults : Users;
return userCollection.findOne(this.userId);
return Users.findOne(this.userId);
},
});
@@ -229,6 +229,10 @@ template(name='layoutSettings')
.title {{_ 'custom-login-logo-link-url'}}
.form-group
input.wekan-form-control#custom-login-logo-link-url(type="text", placeholder="" value="{{currentSetting.customLoginLogoLinkUrl}}")
li.layout-form
.title {{_ 'custom-help-link-url'}}
.form-group
input.wekan-form-control#custom-help-link-url(type="text", placeholder="" value="{{currentSetting.customHelpLinkUrl}}")
li.layout-form
.title {{_ 'text-below-custom-login-logo'}}
.form-group
@@ -189,6 +189,9 @@ BlazeComponent.extendComponent({
const customLoginLogoLinkUrl = $('#custom-login-logo-link-url')
.val()
.trim();
const customHelpLinkUrl = $('#custom-help-link-url')
.val()
.trim();
const textBelowCustomLoginLogo = $('#text-below-custom-login-logo')
.val()
.trim();
@@ -240,6 +243,7 @@ BlazeComponent.extendComponent({
hideLogo: hideLogoChange,
customLoginLogoImageUrl,
customLoginLogoLinkUrl,
customHelpLinkUrl,
textBelowCustomLoginLogo,
customTopLeftCornerLogoImageUrl,
customTopLeftCornerLogoLinkUrl,
+52 -53
View File
@@ -15,6 +15,7 @@ template(name="sidebar")
+Template.dynamic(template=getViewTemplate)
template(name='homeSidebar')
hr
+membersWidget
hr
+labelsWidget
@@ -31,61 +32,59 @@ template(name='homeSidebar')
+activities(mode="board")
template(name="membersWidget")
if AtLeastOneOrgWasCreated
.board-widget.board-widget-members
unless currentUser.isCommentOnly
unless currentUser.isWorker
h3
i.fa.fa-users
| {{_ 'organizations'}}
.board-widget-content
+boardOrgGeneral
.clearfix
br
hr
if AtLeastOneTeamWasCreated
.board-widget.board-widget-members
h3
i.fa.fa-users
| {{_ 'teams'}}
.board-widget-content
+boardTeamGeneral
.clearfix
br
hr
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
h3
i.fa.fa-users
| {{_ 'members'}}
.sidebar-shortcuts
a.board-header-btn.js-shortcuts(title="{{_ 'keyboard-shortcuts' }}")
i.fa.fa-keyboard-o
span {{_ 'keyboard-shortcuts' }}
unless currentUser.isCommentOnly
hr
h3
i.fa.fa-users
| {{_ 'members'}}
+basicTabs(tabs=tabs)
+tabContent(slug="people")
unless currentUser.isWorker
a.board-header-btn.js-open-board-menu(title="{{_ 'boardMenuPopup-title'}}").right
i.board-header-btn-icon.fa.fa-cog
.board-widget-content
each currentBoard.activeMembers
+userAvatar(userId=this.userId showStatus=true)
if isSandstorm
if currentUser.isBoardMember
a.member.add-member.sandstorm-powerbox-request-identity(title="{{_ 'add-members'}}")
i.fa.fa-plus
else if currentUser.isBoardAdmin
a.member.add-member.js-manage-board-members(title="{{_ 'add-members'}}")
i.fa.fa-plus
.clearfix
if isInvited
hr
p
i.fa.fa-exclamation-circle
| {{_ 'just-invited'}}
button.js-member-invite-accept.primary {{_ 'accept'}}
button.js-member-invite-decline {{_ 'decline'}}
p.quiet
.board-widget-content
each currentBoard.activeMembers
+userAvatar(userId=this.userId showStatus=true)
if isSandstorm
if currentUser.isBoardMember
a.member.add-member.sandstorm-powerbox-request-identity(title="{{_ 'add-members'}}")
i.fa.fa-plus
else if currentUser.isBoardAdmin
a.member.add-member.js-manage-board-members(title="{{_ 'add-members'}}")
i.fa.fa-plus
.clearfix
if isInvited
hr
p
i.fa.fa-exclamation-circle
| {{_ 'just-invited'}}
button.js-member-invite-accept.primary {{_ 'accept'}}
button.js-member-invite-decline {{_ 'decline'}}
+tabContent(slug='organizations')
unless currentUser.isWorker
p.quiet
if AtLeastOneOrgWasCreated
.board-widget.board-widget-members
.board-widget-content
+boardOrgGeneral
.clearfix
+tabContent(slug="teams")
unless currentUser.isWorker
p.quiet
if AtLeastOneTeamWasCreated
.board-widget.board-widget-members
.board-widget-content
+boardTeamGeneral
.clearfix
template(name="boardOrgGeneral")
table
@@ -561,7 +560,7 @@ template(name="removeBoardTeamPopup")
template(name="addMemberPopup")
.js-search-member
+esInput(index="users")
+EasySearch.Input(index=searchIndex)
if loading.get
+spinner
@@ -569,20 +568,20 @@ template(name="addMemberPopup")
.warning {{_ error.get}}
else
ul.pop-over-list
+esEach(index="users")
+EasySearch.Each(index=searchIndex)
li.item.js-member-item(class="{{#if isBoardMember}}disabled{{/if}}")
a.name.js-select-member(title="{{profile.fullname}} ({{username}})")
+userAvatar(userId=_id esSearch=true)
+userAvatar(userId=__originalId)
span.full-name
= profile.fullname
| (<span class="username">{{username}}</span>)
if isBoardMember
.quiet ({{_ 'joined'}})
+ifEsIsSearching(index='users')
+EasySearch.IfSearching(index=searchIndex)
+spinner
+ifEsHasNoResults(index="users")
+EasySearch.IfNoResults(index=searchIndex)
.manage-member-section
p.quiet {{_ 'no-results'}}
button.js-email-invite.primary.full {{_ 'email-invite'}}
+14 -2
View File
@@ -330,6 +330,14 @@ BlazeComponent.extendComponent({
isLoading() {
return this.loading.get();
},
tabs() {
return [
{ name: TAPi18n.__('people'), slug: 'people' },
{ name: TAPi18n.__('organizations'), slug: 'organizations' },
{ name: TAPi18n.__('teams'), slug: 'teams' },
];
},
}).register('membersWidget');
Template.membersWidget.helpers({
@@ -1333,7 +1341,7 @@ BlazeComponent.extendComponent({
},
isBoardMember() {
const userId = this.currentData()._id;
const userId = this.currentData().__originalId;
const user = Users.findOne(userId);
return user && user.isBoardMember();
},
@@ -1373,7 +1381,7 @@ BlazeComponent.extendComponent({
this.setError('');
},
'click .js-select-member'() {
const userId = this.currentData()._id;
const userId = this.currentData().__originalId;
const currentBoard = Boards.findOne(Session.get('currentBoard'));
if (!currentBoard.hasMember(userId)) {
this.inviteUser(userId);
@@ -1390,6 +1398,10 @@ BlazeComponent.extendComponent({
},
}).register('addMemberPopup');
Template.addMemberPopup.helpers({
searchIndex: () => UserSearchIndex,
})
BlazeComponent.extendComponent({
onCreated() {
this.error = new ReactiveVar('');
@@ -25,10 +25,10 @@ template(name="swimlaneFixedHeader")
if currentUser.isBoardAdmin
a.fa.fa-plus.js-open-add-swimlane-menu.swimlane-header-plus-icon(title="{{_ 'add-swimlane'}}")
a.fa.fa-navicon.js-open-swimlane-menu(title="{{_ 'swimlaneActionPopup-title'}}")
unless isMiniScreen
unless isTouchScreen
if isShowDesktopDragHandles
a.swimlane-header-handle.handle.fa.fa-arrows.js-swimlane-header-handle
if isMiniScreen
if isTouchScreen
a.swimlane-header-miniscreen-handle.handle.fa.fa-arrows.js-swimlane-header-handle
template(name="editSwimlaneTitleForm")
@@ -46,7 +46,6 @@
background: #dedede;
display: flex;
flex-direction: row;
overflow: 0;
max-height: calc(100% - 26px);
}
.swimlane.placeholder {
+23 -6
View File
@@ -10,10 +10,10 @@ function currentListIsInThisSwimlane(swimlaneId) {
function currentCardIsInThisList(listId, swimlaneId) {
const currentCard = Utils.getCurrentCard();
const currentUser = Meteor.user();
//const currentUser = Meteor.user();
if (
currentUser &&
currentUser.profile &&
//currentUser &&
//currentUser.profile &&
Utils.boardView() === 'board-view-swimlanes'
)
return (
@@ -21,7 +21,15 @@ function currentCardIsInThisList(listId, swimlaneId) {
currentCard.listId === listId &&
currentCard.swimlaneId === swimlaneId
);
else return currentCard && currentCard.listId === listId;
else if (
//currentUser &&
//currentUser.profile &&
Utils.boardView() === 'board-view-lists'
)
return (
currentCard &&
currentCard.listId === listId
);
// https://github.com/wekan/wekan/issues/1623
// https://github.com/ChronikEwok/wekan/commit/cad9b20451bb6149bfb527a99b5001873b06c3de
@@ -77,6 +85,15 @@ function initSortable(boardComponent, $listsDom) {
const listDomElement = ui.item.get(0);
const list = Blaze.getData(listDomElement);
/*
Reverted incomplete change list width,
removed from below Lists.update:
https://github.com/wekan/wekan/issues/4558
$set: {
width: list._id.width(),
height: list._id.height(),
*/
Lists.update(list._id, {
$set: {
sort: sortIndex.base,
@@ -97,7 +114,7 @@ function initSortable(boardComponent, $listsDom) {
//}
boardComponent.autorun(() => {
if (Utils.isMiniScreenOrShowDesktopDragHandles()) {
if (Utils.isTouchScreenOrShowDesktopDragHandles()) {
$listsDom.sortable({
handle: '.js-list-handle',
});
@@ -183,7 +200,7 @@ BlazeComponent.extendComponent({
// his mouse.
const noDragInside = ['a', 'input', 'textarea', 'p'].concat(
Utils.isMiniScreenOrShowDesktopDragHandles()
Utils.isTouchScreenOrShowDesktopDragHandles()
? ['.js-list-handle', '.js-swimlane-header-handle']
: ['.js-list-header'],
);
+5 -20
View File
@@ -3,17 +3,10 @@ import Avatars from '/models/avatars';
import Users from '/models/users';
import Org from '/models/org';
import Team from '/models/team';
import { formatFleURL } from 'meteor/ostrio:files/lib';
Template.userAvatar.helpers({
userData() {
// We need to handle a special case for the search results provided by the
// `matteodem:easy-search` package. Since these results gets published in a
// separate collection, and not in the standard Meteor.Users collection as
// expected, we use a component parameter ("property") to distinguish the
// two cases.
const userCollection = this.esSearch ? ESSearchResults : Users;
return userCollection.findOne(this.userId, {
return Users.findOne(this.userId, {
fields: {
profile: 1,
username: 1,
@@ -95,8 +88,7 @@ BlazeComponent.extendComponent({
Template.boardOrgRow.helpers({
orgData() {
const orgCollection = this.esSearch ? ESSearchResults : Org;
return orgCollection.findOne(this.orgId);
return Org.findOne(this.orgId);
},
currentUser(){
return Meteor.user();
@@ -158,8 +150,7 @@ BlazeComponent.extendComponent({
Template.boardTeamRow.helpers({
teamData() {
const teamCollection = this.esSearch ? ESSearchResults : Team;
return teamCollection.findOne(this.teamId);
return Team.findOne(this.teamId);
},
currentUser(){
return Meteor.user();
@@ -226,13 +217,6 @@ BlazeComponent.extendComponent({
},
false,
);
uploader.on('uploaded', (error, fileRef) => {
if (!error) {
self.setAvatar(
`${formatFleURL(fileRef)}?auth=false&brokenIsFine=true`,
);
}
});
uploader.on('error', (error, fileData) => {
self.setError(error.reason);
});
@@ -246,8 +230,9 @@ BlazeComponent.extendComponent({
'click .js-select-initials'() {
this.setAvatar('');
},
'click .js-delete-avatar'() {
'click .js-delete-avatar'(event) {
Avatars.remove(this.currentData()._id);
event.stopPropagation();
},
},
];
+7
View File
@@ -180,6 +180,13 @@ template(name="changeSettingsPopup")
option(selected="true", value="#{day.value}") #{day.name}
else
option(value="#{day.value}") #{day.name}
label.bold.clear
| {{_ 'card-settings'}}
ul#cards.card-description-rescued
a.flex.js-rescue-card-description(title="{{_ 'rescue-card-description'}}")
b &nbsp;
#rescue-card-description.materialCheckBox.left(class="{{#if rescueCardDescription}}is-checked{{/if}}", value=rescueCardDescription)
span {{_ 'rescue-card-description'}}
input.js-apply-user-settings.left(type="submit" value="{{_ 'apply'}}")
template(name="userDeletePopup")
+13
View File
@@ -297,6 +297,16 @@ Template.changeSettingsPopup.helpers({
return false;
}
},
rescueCardDescription() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).rescueCardDescription;
} else if (window.localStorage.getItem('rescueCardDescription')) {
return true;
} else {
return false;
}
},
showCardsCountAt() {
currentUser = Meteor.user();
if (currentUser) {
@@ -356,6 +366,9 @@ Template.changeSettingsPopup.events({
window.localStorage.setItem('hasHiddenSystemMessages', 'true');
}
},
'click .js-rescue-card-description'() {
Meteor.call('toggleRescueCardDescription')
},
'click .js-apply-user-settings'(event, templateInstance) {
event.preventDefault();
let minLimit = parseInt(
+4 -2
View File
@@ -27,12 +27,14 @@ Blaze.registerHelper('concat', (...args) => args.slice(0, -1).join(''));
Blaze.registerHelper('isMiniScreen', () => Utils.isMiniScreen());
Blaze.registerHelper('isTouchScreen', () => Utils.isTouchScreen());
Blaze.registerHelper('isShowDesktopDragHandles', () =>
Utils.isShowDesktopDragHandles(),
);
Blaze.registerHelper('isMiniScreenOrShowDesktopDragHandles', () =>
Utils.isMiniScreenOrShowDesktopDragHandles(),
Blaze.registerHelper('isTouchScreenOrShowDesktopDragHandles', () =>
Utils.isTouchScreenOrShowDesktopDragHandles(),
);
Blaze.registerHelper('moment', (...args) => {
+188
View File
@@ -0,0 +1,188 @@
export class DialogWithBoardSwimlaneList extends BlazeComponent {
/** returns the card dialog options
* @return Object with properties { boardId, swimlaneId, listId }
*/
getDialogOptions() {
}
/** list is done
* @param listId the selected list id
* @param options the selected options (Object with properties { boardId, swimlaneId, listId })
*/
setDone(listId, options) {
}
/** get the default options
* @return the options
*/
getDefaultOption(boardId) {
const ret = {
'boardId' : "",
'swimlaneId' : "",
'listId' : "",
}
return ret;
}
onCreated() {
this.currentBoardId = Utils.getCurrentBoardId();
this.selectedBoardId = new ReactiveVar(this.currentBoardId);
this.selectedSwimlaneId = new ReactiveVar('');
this.selectedListId = new ReactiveVar('');
this.setOption(this.currentBoardId);
}
/** set the last confirmed dialog field values
* @param boardId the current board id
*/
setOption(boardId) {
this.cardOption = this.getDefaultOption();
let currentOptions = this.getDialogOptions();
if (currentOptions && boardId && currentOptions[boardId]) {
this.cardOption = currentOptions[boardId];
if (this.cardOption.boardId &&
this.cardOption.swimlaneId &&
this.cardOption.listId
)
{
this.selectedBoardId.set(this.cardOption.boardId)
this.selectedSwimlaneId.set(this.cardOption.swimlaneId);
this.selectedListId.set(this.cardOption.listId);
}
}
this.getBoardData(this.selectedBoardId.get());
if (!this.selectedSwimlaneId.get() || !Swimlanes.findOne({_id: this.selectedSwimlaneId.get(), boardId: this.selectedBoardId.get()})) {
this.setFirstSwimlaneId();
}
if (!this.selectedListId.get() || !Lists.findOne({_id: this.selectedListId.get(), boardId: this.selectedBoardId.get()})) {
this.setFirstListId();
}
}
/** sets the first swimlane id */
setFirstSwimlaneId() {
try {
const board = Boards.findOne(this.selectedBoardId.get());
const swimlaneId = board.swimlanes().fetch()[0]._id;
this.selectedSwimlaneId.set(swimlaneId);
} catch (e) {}
}
/** sets the first list id */
setFirstListId() {
try {
const board = Boards.findOne(this.selectedBoardId.get());
const listId = board.lists().fetch()[0]._id;
this.selectedListId.set(listId);
} catch (e) {}
}
/** returns if the board id was the last confirmed one
* @param boardId check this board id
* @return if the board id was the last confirmed one
*/
isDialogOptionBoardId(boardId) {
let ret = this.cardOption.boardId == boardId;
return ret;
}
/** returns if the swimlane id was the last confirmed one
* @param swimlaneId check this swimlane id
* @return if the swimlane id was the last confirmed one
*/
isDialogOptionSwimlaneId(swimlaneId) {
let ret = this.cardOption.swimlaneId == swimlaneId;
return ret;
}
/** returns if the list id was the last confirmed one
* @param listId check this list id
* @return if the list id was the last confirmed one
*/
isDialogOptionListId(listId) {
let ret = this.cardOption.listId == listId;
return ret;
}
/** returns all available board */
boards() {
const ret = Boards.find(
{
archived: false,
'members.userId': Meteor.userId(),
_id: { $ne: Meteor.user().getTemplatesBoardId() },
},
{
sort: { sort: 1 },
},
);
return ret;
}
/** returns all available swimlanes of the current board */
swimlanes() {
const board = Boards.findOne(this.selectedBoardId.get());
const ret = board.swimlanes();
return ret;
}
/** returns all available lists of the current board */
lists() {
const board = Boards.findOne(this.selectedBoardId.get());
const ret = board.lists();
return ret;
}
/** get the board data from the server
* @param boardId get the board data of this board id
*/
getBoardData(boardId) {
const self = this;
Meteor.subscribe('board', boardId, false, {
onReady() {
const sameBoardId = self.selectedBoardId.get() == boardId;
self.selectedBoardId.set(boardId);
if (!sameBoardId) {
// reset swimlane id (for selection in cards())
self.setFirstSwimlaneId();
// reset list id (for selection in cards())
self.setFirstListId();
}
},
});
}
events() {
return [
{
'click .js-done'() {
const boardSelect = this.$('.js-select-boards')[0];
const boardId = boardSelect.options[boardSelect.selectedIndex].value;
const listSelect = this.$('.js-select-lists')[0];
const listId = listSelect.options[listSelect.selectedIndex].value;
const swimlaneSelect = this.$('.js-select-swimlanes')[0];
const swimlaneId = swimlaneSelect.options[swimlaneSelect.selectedIndex].value;
const options = {
'boardId' : boardId,
'swimlaneId' : swimlaneId,
'listId' : listId,
}
this.setDone(boardId, swimlaneId, listId, options);
Popup.back(2);
},
'change .js-select-boards'(event) {
const boardId = $(event.currentTarget).val();
this.getBoardData(boardId);
},
'change .js-select-swimlanes'(event) {
this.selectedSwimlaneId.set($(event.currentTarget).val());
},
},
];
}
}
@@ -0,0 +1,71 @@
import { DialogWithBoardSwimlaneList } from '/client/lib/dialogWithBoardSwimlaneList';
export class DialogWithBoardSwimlaneListCard extends DialogWithBoardSwimlaneList {
getDefaultOption(boardId) {
const ret = {
'boardId' : "",
'swimlaneId' : "",
'listId' : "",
'cardId': "",
}
return ret;
}
/** returns if the card id was the last confirmed one
* @param cardId check this card id
* @return if the card id was the last confirmed one
*/
isDialogOptionCardId(cardId) {
let ret = this.cardOption.cardId == cardId;
return ret;
}
/** returns all available cards of the current list */
cards() {
const list = Lists.findOne(this.selectedListId.get());
let ret = {}
if (list) {
ret = list.cards(this.selectedSwimlaneId.get());
}
return ret;
}
events() {
return [
{
'click .js-done'() {
const boardSelect = this.$('.js-select-boards')[0];
const boardId = boardSelect.options[boardSelect.selectedIndex].value;
const listSelect = this.$('.js-select-lists')[0];
const listId = listSelect.options[listSelect.selectedIndex].value;
const swimlaneSelect = this.$('.js-select-swimlanes')[0];
const swimlaneId = swimlaneSelect.options[swimlaneSelect.selectedIndex].value;
const cardSelect = this.$('.js-select-cards')[0];
const cardId = cardSelect.options[cardSelect.selectedIndex].value;
const options = {
'boardId' : boardId,
'swimlaneId' : swimlaneId,
'listId' : listId,
'cardId': cardId,
}
this.setDone(cardId, options);
Popup.back(2);
},
'change .js-select-boards'(event) {
const boardId = $(event.currentTarget).val();
this.getBoardData(boardId);
},
'change .js-select-swimlanes'(event) {
this.selectedSwimlaneId.set($(event.currentTarget).val());
},
'change .js-select-lists'(event) {
this.selectedListId.set($(event.currentTarget).val());
},
},
];
}
}
+3 -3
View File
@@ -149,12 +149,12 @@ window.Popup = new (class {
}
}
getOpenerComponent() {
const { openerElement } = Template.parentData(4);
getOpenerComponent(n=4) {
const { openerElement } = Template.parentData(n);
return BlazeComponent.getComponentForElement(openerElement);
}
// An utility fonction that returns the top element of the internal stack
// An utility function that returns the top element of the internal stack
_getTopStack() {
return this._stack[this._stack.length - 1];
}
+39 -39
View File
@@ -5,20 +5,20 @@ import { Random } from 'meteor/random';
import '../utils';
describe('Utils', function() {
beforeEach(function() {
sinon.stub(Utils, 'reload').callsFake(() => {});
describe('Utils', function () {
beforeEach(function () {
sinon.stub(Utils, 'reload').callsFake(() => { });
});
afterEach(function() {
afterEach(function () {
window.localStorage.removeItem(boardView);
sinon.restore();
});
const boardView = 'boardView';
describe(Utils.setBoardView.name, function() {
it('sets the board view if the user exists', function(done) {
describe(Utils.setBoardView.name, function () {
it('sets the board view if the user exists', function (done) {
const viewId = Random.id();
const user = {
setBoardView: (view) => {
@@ -32,14 +32,14 @@ describe('Utils', function() {
expect(window.localStorage.getItem(boardView)).to.equal(viewId);
});
it('sets a specific view if no user exists but a view is defined', function() {
it('sets a specific view if no user exists but a view is defined', function () {
const views = [
'board-view-swimlanes',
'board-view-lists',
'board-view-cal'
];
sinon.stub(Meteor, 'user').callsFake(() => {});
sinon.stub(Meteor, 'user').callsFake(() => { });
views.forEach(viewName => {
Utils.setBoardView(viewName);
@@ -47,15 +47,15 @@ describe('Utils', function() {
});
});
it('sets a default view if no user and no view are given', function() {
sinon.stub(Meteor, 'user').callsFake(() => {});
it('sets a default view if no user and no view are given', function () {
sinon.stub(Meteor, 'user').callsFake(() => { });
Utils.setBoardView();
expect(window.localStorage.getItem(boardView)).to.equal('board-view-swimlanes');
});
});
describe(Utils.unsetBoardView.name, function() {
it('removes the boardview from localStoage', function() {
describe(Utils.unsetBoardView.name, function () {
it('removes the boardview from localStoage', function () {
window.localStorage.setItem(boardView, Random.id());
window.localStorage.setItem('collapseSwimlane', Random.id());
@@ -66,8 +66,8 @@ describe('Utils', function() {
});
});
describe(Utils.boardView.name, function() {
it('returns the user\'s board view if a user exists', function() {
describe(Utils.boardView.name, function () {
it('returns the user\'s board view if a user exists', function () {
const viewId = Random.id();
const user = {};
sinon.stub(Meteor, 'user').callsFake(() => user);
@@ -78,108 +78,108 @@ describe('Utils', function() {
expect(Utils.boardView()).to.equal(boardView);
});
it('returns the current defined view', function() {
it('returns the current defined view', function () {
const views = [
'board-view-swimlanes',
'board-view-lists',
'board-view-cal'
];
sinon.stub(Meteor, 'user').callsFake(() => {});
sinon.stub(Meteor, 'user').callsFake(() => { });
views.forEach(viewName => {
window.localStorage.setItem(boardView, viewName);
expect(Utils.boardView()).to.equal(viewName);
});
});
it('returns a default if nothing is set', function() {
sinon.stub(Meteor, 'user').callsFake(() => {});
it('returns a default if nothing is set', function () {
sinon.stub(Meteor, 'user').callsFake(() => { });
expect(Utils.boardView()).to.equal('board-view-swimlanes');
expect(window.localStorage.getItem(boardView)).to.equal('board-view-swimlanes');
});
});
describe(Utils.myCardsSort.name, function() {
describe(Utils.myCardsSort.name, function () {
it('has no tests yet');
});
describe(Utils.myCardsSortToggle.name, function() {
describe(Utils.myCardsSortToggle.name, function () {
it('has no tests yet');
});
describe(Utils.setMyCardsSort.name, function() {
describe(Utils.setMyCardsSort.name, function () {
it('has no tests yet');
});
describe(Utils.archivedBoardIds.name, function() {
describe(Utils.archivedBoardIds.name, function () {
it('has no tests yet');
});
describe(Utils.dueCardsView.name, function() {
describe(Utils.dueCardsView.name, function () {
it('has no tests yet');
});
describe(Utils.setDueCardsView.name, function() {
describe(Utils.setDueCardsView.name, function () {
it('has no tests yet');
});
describe(Utils.goBoardId.name, function() {
describe(Utils.goBoardId.name, function () {
it('has no tests yet');
});
describe(Utils.goCardId.name, function() {
describe(Utils.goCardId.name, function () {
it('has no tests yet');
});
describe(Utils.processUploadedAttachment.name, function() {
describe(Utils.processUploadedAttachment.name, function () {
it('has no tests yet');
});
describe(Utils.shrinkImage.name, function() {
describe(Utils.shrinkImage.name, function () {
it('has no tests yet');
});
describe(Utils.capitalize.name, function() {
describe(Utils.capitalize.name, function () {
it('has no tests yet');
});
describe(Utils.isMiniScreen.name, function() {
describe(Utils.isMiniScreen.name, function () {
it('has no tests yet');
});
describe(Utils.isShowDesktopDragHandles.name, function() {
describe(Utils.isShowDesktopDragHandles.name, function () {
it('has no tests yet');
});
describe(Utils.isMiniScreenOrShowDesktopDragHandles.name, function() {
describe(Utils.isTouchScreenOrShowDesktopDragHandles.name, function () {
it('has no tests yet');
});
describe(Utils.calculateIndexData.name, function() {
describe(Utils.calculateIndexData.name, function () {
it('has no tests yet');
});
describe(Utils.calculateIndex.name, function() {
describe(Utils.calculateIndex.name, function () {
it('has no tests yet');
});
describe(Utils.manageCustomUI.name, function() {
describe(Utils.manageCustomUI.name, function () {
it('has no tests yet');
});
describe(Utils.setCustomUI.name, function() {
describe(Utils.setCustomUI.name, function () {
it('has no tests yet');
});
describe(Utils.setMatomo.name, function() {
describe(Utils.setMatomo.name, function () {
it('has no tests yet');
});
describe(Utils.manageMatomo.name, function() {
describe(Utils.manageMatomo.name, function () {
it('has no tests yet');
});
describe(Utils.getTriggerActionDesc.name, function() {
describe(Utils.getTriggerActionDesc.name, function () {
it('has no tests yet');
});
});
+29 -30
View File
@@ -40,7 +40,7 @@ Utils = {
const ret = Cards.findOne(cardId);
return ret;
},
reload () {
reload() {
// we move all window.location.reload calls into this function
// so we can disable it when running tests.
// This is because we are not allowed to override location.reload but
@@ -201,14 +201,14 @@ Utils = {
image = document.createElement('img');
const maxSize = options.maxSize || 1024;
const ratio = options.ratio || 1.0;
const next = function(result) {
const next = function (result) {
image = null;
canvas = null;
if (typeof callback === 'function') {
callback(result);
}
};
image.onload = function() {
image.onload = function () {
let width = this.width,
height = this.height;
let changed = false;
@@ -237,7 +237,7 @@ Utils = {
next(changed);
}
};
image.onerror = function() {
image.onerror = function () {
next(false);
};
image.src = dataurl;
@@ -255,36 +255,35 @@ Utils = {
isMiniScreen() {
// OLD WINDOW WIDTH DETECTION:
this.windowResizeDep.depend();
return $(window).width() <= 800;
return $(window).width() <= 250;
},
isTouchScreen() {
// NEW TOUCH DEVICE DETECTION:
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent
/*
var hasTouchScreen = false;
if ("maxTouchPoints" in navigator) {
hasTouchScreen = navigator.maxTouchPoints > 0;
hasTouchScreen = navigator.maxTouchPoints > 0;
} else if ("msMaxTouchPoints" in navigator) {
hasTouchScreen = navigator.msMaxTouchPoints > 0;
hasTouchScreen = navigator.msMaxTouchPoints > 0;
} else {
var mQ = window.matchMedia && matchMedia("(pointer:coarse)");
if (mQ && mQ.media === "(pointer:coarse)") {
hasTouchScreen = !!mQ.matches;
} else if ('orientation' in window) {
hasTouchScreen = true; // deprecated, but good fallback
} else {
// Only as a last resort, fall back to user agent sniffing
var UA = navigator.userAgent;
hasTouchScreen = (
/\b(BlackBerry|webOS|iPhone|IEMobile)\b/i.test(UA) ||
/\b(Android|Windows Phone|iPad|iPod)\b/i.test(UA)
);
}
var mQ = window.matchMedia && matchMedia("(pointer:coarse)");
if (mQ && mQ.media === "(pointer:coarse)") {
hasTouchScreen = !!mQ.matches;
} else if ('orientation' in window) {
hasTouchScreen = true; // deprecated, but good fallback
} else {
// Only as a last resort, fall back to user agent sniffing
var UA = navigator.userAgent;
hasTouchScreen = (
/\b(BlackBerry|webOS|iPhone|IEMobile)\b/i.test(UA) ||
/\b(Android|Windows Phone|iPad|iPod)\b/i.test(UA)
);
}
}
*/
//if (hasTouchScreen)
// document.getElementById("exampleButton").style.padding="1em";
//return false;
return hasTouchScreen;
},
// returns if desktop drag handles are enabled
@@ -300,8 +299,8 @@ Utils = {
},
// returns if mini screen or desktop drag handles
isMiniScreenOrShowDesktopDragHandles() {
return this.isMiniScreen() || this.isShowDesktopDragHandles();
isTouchScreenOrShowDesktopDragHandles() {
return this.isTouchScreen() || this.isShowDesktopDragHandles();
},
calculateIndexData(prevData, nextData, nItems = 1) {
@@ -396,7 +395,7 @@ Utils = {
window._paq.push(['trackPageView']);
window._paq.push(['enableLinkTracking']);
(function() {
(function () {
window._paq.push(['setTrackerUrl', `${data.address}piwik.php`]);
window._paq.push(['setSiteId', data.siteId]);
@@ -500,8 +499,8 @@ Utils = {
copyTextToClipboard(text) {
let ret;
if (navigator.clipboard) {
ret = navigator.clipboard.writeText(text).then(function() {
}, function(err) {
ret = navigator.clipboard.writeText(text).then(function () {
}, function (err) {
console.error('Async: Could not copy text: ', err);
});
} else {
+35 -5
View File
@@ -5,6 +5,16 @@ const emailField = AccountsTemplates.removeField('email');
let disableRegistration = false;
let disableForgotPassword = false;
let passwordLoginDisabled = false;
let oidcRedirectionEnabled = false;
let oauthServerUrl = "home";
let oauthDashboardUrl = "";
Meteor.call('isOidcRedirectionEnabled', (_, result) => {
if(result)
{
oidcRedirectionEnabled = true;
}
});
Meteor.call('isPasswordLoginDisabled', (_, result) => {
if (result) {
@@ -14,6 +24,18 @@ Meteor.call('isPasswordLoginDisabled', (_, result) => {
}
});
Meteor.call('getOauthServerUrl', (_, result) => {
if (result) {
oauthServerUrl = result;
}
});
Meteor.call('getOauthDashboardUrl', (_, result) => {
if (result) {
oauthDashboardUrl = result;
}
});
Meteor.call('isDisableRegistration', (_, result) => {
if (result) {
disableRegistration = true;
@@ -59,11 +81,19 @@ AccountsTemplates.configure({
showForgotPasswordLink: !disableForgotPassword,
forbidClientAccountCreation: disableRegistration,
onLogoutHook() {
const homePage = 'home';
if (FlowRouter.getRouteName() === homePage) {
FlowRouter.reload();
} else {
FlowRouter.go(homePage);
// here comeslogic for redirect
if(oidcRedirectionEnabled)
{
window.location = oauthServerUrl + oauthDashboardUrl;
}
else
{
const homePage = 'home';
if (FlowRouter.getRouteName() === homePage) {
FlowRouter.reload();
} else {
FlowRouter.go(homePage);
}
}
},
});
+21
View File
@@ -127,6 +127,13 @@ services:
# image: wekanteam/wekan
#-------------------------------------------------------------------------------------
container_name: wekan-app
# On CentOS 7 there is seccomp issue with glibc 6,
# so CentOS 7 users shoud use these security_opt seccomp:unconfined
# settings to get WeKan working. See:
# - https://github.com/wekan/wekan/issues/4585
# - https://github.com/wekan/wekan/issues/4587
#security_opt:
# - seccomp:unconfined
restart: always
networks:
- wekan-tier
@@ -260,6 +267,16 @@ services:
# https://github.com/wekan/wekan/issues/2518
- CARD_OPENED_WEBHOOK_ENABLED=false
#---------------------------------------------------------------
# ==== Allow configuration to validate uploaded attachments ====
#-ATTACHMENTS_UPLOAD_EXTERNAL_PROGRAM=/usr/local/bin/avscan {file}
#-ATTACHMENTS_UPLOAD_MIME_TYPES=image/*,text/*
#-ATTACHMENTS_UPLOAD_MAX_SIZE=5000000
#---------------------------------------------------------------
# ==== Allow configuration to validate uploaded avatars ====
#-AVATARS_UPLOAD_EXTERNAL_PROGRAM=/usr/local/bin/avscan {file}
#-AVATARS_UPLOAD_MIME_TYPES=image/*
#-AVATARS_UPLOAD_MAX_SIZE=500000
#---------------------------------------------------------------
# ==== Allow to shrink attached/pasted image ====
# https://github.com/wekan/wekan/pull/2544
#-MAX_IMAGE_PIXEL=1024
@@ -336,6 +353,10 @@ services:
#-----------------------------------------------------------------
# ==== Debug OIDC OAuth2 etc ====
#- DEBUG=true
#---------------------------------------------
# ==== AUTOLOGIN WITH OIDC/OAUTH2 ====
# https://github.com/wekan/wekan/wiki/autologin
#- OIDC_REDIRECTION_ENABLED=true
#-----------------------------------------------------------------
# ==== OAUTH2 ORACLE on premise identity manager OIM ====
#- ORACLE_OIM_ENABLED=true
+1 -1
View File
@@ -1,5 +1,5 @@
apiVersion: v2
appVersion: "6.26"
appVersion: "6.45"
dependencies:
- condition: mongodb.enabled
name: mongodb
+1 -1
View File
@@ -14,7 +14,7 @@ serviceAccounts:
##
image:
repository: quay.io/wekan/wekan
tag: v6.26
tag: v6.45
pullPolicy: IfNotPresent
## Configuration for wekan component
File diff suppressed because it is too large. Load diff
+18 -6
View File
@@ -295,9 +295,9 @@
"linkCardPopup-title": "Link Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"create": "Create",
"createBoardPopup-title": "Create Board",
"chooseBoardSourcePopup-title": "Import board",
@@ -512,7 +512,7 @@
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
"not-accepted-yet": "Invitation not accepted yet",
"notify-participate": "Receive updates to any cards you participate as creater or member",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
"optional": "optional",
"or": "or",
@@ -541,6 +541,9 @@
"rename": "Rename",
"rename-board": "Rename Board",
"restore": "Restore",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Card Settings",
"save": "Save",
"search": "Search",
"rules": "Rules",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27",
"custom-login-logo-image-url": "Custom Login Logo Image URL",
"custom-login-logo-link-url": "Custom Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text below Custom Login Logo",
"automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
"username": "Username",
@@ -706,7 +710,6 @@
"default": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
"minicard-settings": "Minicard Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"boardCardSettingsPopup-title": "Card Settings",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Edit User",
"newUserPopup-title": "New User",
"notifications": "Notifications",
"help": "Help",
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
@@ -1177,5 +1181,13 @@
"storage": "Storage",
"action": "Action",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Rename"
"attachmentRenamePopup-title": "Rename",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
+86 -74
View File
@@ -1,41 +1,41 @@
{
"accept": "قبول",
"act-activity-notify": "اشعار النشاط",
"act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-completeChecklist": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-editComment": "edited comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-deleteComment": "deleted comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createBoard": "created board __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-createCustomField": "created custom field __customField__ at board __board__",
"act-deleteCustomField": "deleted custom field __customField__ at board __board__",
"act-setCustomField": "edited custom field __customField__: __customFieldValue__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-createList": "added list __list__ to board __board__",
"act-addBoardMember": "added member __member__ to board __board__",
"act-archivedBoard": "Board __board__ moved to Archive",
"act-archivedCard": "Card __card__ at list __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
"act-archivedList": "List __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
"act-archivedSwimlane": "Swimlane __swimlane__ at board __board__ moved to Archive",
"act-importBoard": "imported board __board__",
"act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
"act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
"act-addAttachment": "ماتمت اضافتة__اضافة_للكرت\n__الكرت__في قائمة__قائمة__في المنطقة العائمة \n__المنطقة العائمة__في اللوح__اللوح__",
"act-deleteAttachment": "حذف الاضافة__الاضافة__في كرت\n__كرت__في قائمة__قائمة__في المنطقة العائمة\n__المنطقة العائمة__في اللوح__اللوح__",
"act-addSubtask": "مهمة فرعية مضافة__مهمة فرعية__ للكرت\n__الكرت__في قائمة__قائمة__في المنطقة العائمة\n__المنطقة العائمة__في اللوح__اللوح__",
"act-addLabel": "العلامة المضافة__العلامة__للكرت__كرت__في قائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-addedLabel": "العلامة المضافة__العلامة__للكرت__كرت__في قائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-removeLabel": "العلامة المحذوفة__العلامة__من الكرت__في قائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-removedLabel": "العلامة المحذوفة__العلامة__من الكرت__في قائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-addChecklist": "قائمة التأكد المضافة__قائمة التأكد__للكرت__كرت__في قائمة__قائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-addChecklistItem": "عنصر قائمة التأكد المضافة__عنصر قائمة التأكد__لقائمة التأكد__قائمة التأكد__لكرت__الكرت__في قائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-removeChecklist": " قائمة التأكد المحذوفة__عنصر قائمة التأكد__لقائمة التأكد__قائمة التأكد__لكرت__الكرت__في قائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-removeChecklistItem": "عنصر قائمة التأكد المحذوف__عنصر قائمة التأكد__لقائمة التأكد__قائمة التأكد__لكرت__الكرت__في قائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-checkedItem": "مختار__عنصر قائمة التأكد__لقائمة التأكد__قائمة التأكد__ لكرت__الكرت__في قائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-uncheckedItem": "غير مختار__عنصر قائمة التأكد__لقائمة التأكد__قائمة التأكد__ لكرت__الكرت__في قائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-completeChecklist": "قائمة تأكد مكتملة__عنصر قائمة التأكد__لقائمة التأكد__قائمة التأكد__ لكرت__الكرت__في قائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-uncompleteChecklist": "قائمة تأكد غير مكتملة__عنصر قائمة التأكد__لقائمة التأكد__قائمة التأكد__ لكرت__الكرت__في قائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-addComment": "تعليق على كرت__كرت__:\n__تعليق__في قائمة__قائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-editComment": "تعليق معدل على كرت__كرت__:\n__تعليق__في قائمة__قائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-deleteComment": "تعليق محذوف على كرت__كرت__:\n__تعليق__في قائمة__قائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-createBoard": "لوح مكون__لوح__",
"act-createSwimlane": "منطقة عائمة مكونة__منطقة عائمة__في اللوح__اللوح__",
"act-createCard": "كرت مكون__كرت__في قائمة__قائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-createCustomField": "مجال مخصوص مكون__مجال مخصوص__في اللوح__اللوح__",
"act-deleteCustomField": "مجال مخصوص محذوف__مجال مخصوص__في اللوح__اللوح__",
"act-setCustomField": "مجال مخصوص معدل__مجال مخصوص__:__قيمة مجال مخصوص__للكرت_الكرت__في قائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-createList": "قائمة مضافة__قائمة__ في اللوح __اللوح__",
"act-addBoardMember": "عضو مضاف__عضو__في اللوح__اللوح__",
"act-archivedBoard": "اللوح__اللوح__منقول الى الارشيف",
"act-archivedCard": "الكرت__الكرت__في قائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في قائمة__القائمة__ منقول الى الارشيف",
"act-archivedList": "القائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__ منقول الى الارشيف",
"act-archivedSwimlane": "المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__ منقول الى الارشيف",
"act-importBoard": "اللوح المستورد__اللوح__",
"act-importCard": "الكرت المستورد__الكرت__في القائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-importList": " القائمة المستوردة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-joinMember": "العضو المضاف__العضو__للكرت_الكرت__في قائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"act-moveCard": "الكرت المحذوف__الكرت__في اللوح_اللوح__من قائمة__قائمة قديمة__في المنطقة العائمة__منطقة عائمة قديمة__في القائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__",
"act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
"act-removeBoardMember": "removed member __member__ from board __board__",
"act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
@@ -71,7 +71,7 @@
"add": "أضف",
"activity-checked-item-card": "checked %s in checklist %s",
"activity-unchecked-item-card": "unchecked %s in checklist %s",
"activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"activity-checklist-completed-card": "قائمة تأكد مكتماة__عنصر قائمة التأكد__لقائمة التأكد__قائمة التأكد__ لكرت__الكرت__في قائمة__القائمة__في المنطقة العائمة__المنطقة العائمة__في اللوح__اللوح__",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"activity-editComment": "edited comment %s",
"activity-deleteComment": "تعليق محذوف %s",
@@ -107,7 +107,7 @@
"and-n-other-card_plural": "And __count__ other بطاقات",
"apply": "طبق",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"app-try-reconnect": "Try to reconnect.",
"app-try-reconnect": "محاولة إعادة الاتصال.",
"archive": "نقل الى الارشيف",
"archive-all": "نقل الكل الى الارشيف",
"archive-board": "نقل اللوح الى الارشيف",
@@ -136,9 +136,9 @@
"back": "رجوع",
"board-change-color": "تغيير اللومr",
"show-at-all-boards-page": "Show at All Boards page",
"board-info-on-my-boards": "All Boards Settings",
"boardInfoOnMyBoardsPopup-title": "All Boards Settings",
"boardInfoOnMyBoards-title": "All Boards Settings",
"board-info-on-my-boards": "جميع إعدادات اللوحات",
"boardInfoOnMyBoardsPopup-title": "جميع إعدادات اللوحات",
"boardInfoOnMyBoards-title": "جميع إعدادات اللوحات",
"show-card-counter-per-list": "Show card count per list",
"show-board_members-avatar": "Show Board members avatars",
"board-nb-stars": "%s نجوم",
@@ -150,13 +150,13 @@
"boardChangeTitlePopup-title": "إعادة تسمية اللوحة",
"boardChangeVisibilityPopup-title": "تعديل وضوح الرؤية",
"boardChangeWatchPopup-title": "تغيير المتابعة",
"boardMenuPopup-title": "Board Settings",
"boardMenuPopup-title": "إعدادات اللوحة",
"boardChangeViewPopup-title": "عرض اللوحات",
"boards": "لوحات",
"board-view": "عرض اللوحات",
"board-view-cal": "التقويم",
"board-view-swimlanes": "خطوط السباحة",
"board-view-collapse": "Collapse",
"board-view-collapse": "انهيار",
"board-view-gantt": "Gantt",
"board-view-lists": "القائمات",
"bucket-example": "مثل « todo list » على سبيل المثال",
@@ -193,7 +193,7 @@
"vote-public": "Show who voted what",
"vote-for-it": "مع",
"vote-against": "ضد",
"deleteVotePopup-title": "Delete vote?",
"deleteVotePopup-title": "حذف التصويت؟",
"vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
"cardStartPlanningPokerPopup-title": "Start a Planning Poker",
"card-edit-planning-poker": "Edit Planning Poker",
@@ -208,10 +208,10 @@
"poker-twenty": "20",
"poker-forty": "40",
"poker-oneHundred": "100",
"poker-unsure": "?",
"poker-unsure": "؟",
"poker-finish": "Finish",
"poker-result-votes": "Votes",
"poker-result-who": "Who",
"poker-result-votes": "الأصوات",
"poker-result-who": "من",
"poker-replay": "Replay",
"set-estimation": "Set Estimation",
"deletePokerPopup-title": "Delete planning poker?",
@@ -274,7 +274,7 @@
"color-slateblue": "slateblue",
"color-white": "أبيض",
"color-yellow": "yellow",
"unset-color": "Unset",
"unset-color": "غير محدد",
"comment": "تعليق",
"comment-placeholder": "أكتب تعليق",
"comment-only": "التعليق فقط",
@@ -283,7 +283,7 @@
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "لا يوجد تعليقات",
"no-comments-desc": "Can not see comments and activities.",
"worker": "Worker",
"worker": "عامل",
"worker-desc": "Can only move cards, assign itself to card and comment.",
"computer": "حاسوب",
"confirm-subtask-delete-popup": "Are you sure you want to delete subtask?",
@@ -295,9 +295,9 @@
"linkCardPopup-title": "ربط البطاقة",
"searchElementPopup-title": "بحث",
"copyCardPopup-title": "نسخ البطاقة",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"create": "إنشاء",
"createBoardPopup-title": "إنشاء لوحة",
"chooseBoardSourcePopup-title": "استيراد لوحة",
@@ -307,7 +307,7 @@
"current": "الحالي",
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
"custom-field-checkbox": "Checkbox",
"custom-field-currency": "Currency",
"custom-field-currency": "عملة",
"custom-field-currency-option": "Currency Code",
"custom-field-date": "تاريخ",
"custom-field-dropdown": "Dropdown List",
@@ -512,7 +512,7 @@
"normal": "عادي",
"normal-desc": "يمكن مشاهدة و تعديل البطاقات. لا يمكن تغيير إعدادات الضبط.",
"not-accepted-yet": "Invitation not accepted yet",
"notify-participate": "Receive updates to any cards you participate as creater or member",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
"optional": "اختياري",
"or": "or",
@@ -541,9 +541,12 @@
"rename": "إعادة التسمية",
"rename-board": "إعادة تسمية اللوحة",
"restore": "استعادة",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Card Settings",
"save": "حفظ",
"search": "بحث",
"rules": "Rules",
"rules": "قواعد",
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
"search-example": "Write text you search and press Enter",
"select-color": "اختيار اللون",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27",
"custom-login-logo-image-url": "Custom Login Logo Image URL",
"custom-login-logo-link-url": "Custom Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text below Custom Login Logo",
"automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
"username": "اسم المستخدم",
@@ -706,7 +710,6 @@
"default": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
"minicard-settings": "Minicard Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"boardCardSettingsPopup-title": "Card Settings",
@@ -832,14 +835,14 @@
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "When a card is moved to another list",
"r-set": "Set",
"r-update": "Update",
"r-update": "تحديث",
"r-datefield": "date field",
"r-df-start-at": "بداية",
"r-df-due-at": "due",
"r-df-end-at": "نهاية",
"r-df-received-at": "received",
"r-to-current-datetime": "to current date/time",
"r-remove-value-from": "Remove value from",
"r-remove-value-from": "إزالة القيمة من",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
@@ -862,9 +865,9 @@
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"delete-all": "حذف الكل",
"loading": "Loading, please wait.",
"previous_as": "last time was",
"previous_as": "كانت آخر مرة",
"act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__",
"act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)",
"act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)",
@@ -893,14 +896,15 @@
"addmore-detail": "Add a more detailed description",
"show-on-card": "Show on Card",
"show-on-minicard": "Show on Minicard",
"new": "New",
"new": "جديد",
"editOrgPopup-title": "Edit Organization",
"newOrgPopup-title": "New Organization",
"editTeamPopup-title": "Edit Team",
"newTeamPopup-title": "New Team",
"editUserPopup-title": "Edit User",
"newUserPopup-title": "New User",
"newUserPopup-title": "مستخدم جديد",
"notifications": "Notifications",
"help": "Help",
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
@@ -909,18 +913,18 @@
"allowRenamePopup-title": "Allow Rename",
"start-day-of-week": "Set day of the week start",
"monday": "Monday",
"tuesday": "Tuesday",
"tuesday": "الثلاثاء",
"wednesday": "Wednesday",
"thursday": "Thursday",
"thursday": "الخميس",
"friday": "Friday",
"saturday": "Saturday",
"saturday": "السبت",
"sunday": "Sunday",
"status": "Status",
"swimlane": "Swimlane",
"owner": "Owner",
"last-modified-at": "Last modified at",
"last-activity": "Last activity",
"voting": "Voting",
"voting": "التصويت",
"archived": "Archived",
"delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
"delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
@@ -932,8 +936,8 @@
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"website": "Website",
"person": "Person",
"website": "موقع الكتروني",
"person": "شخص",
"my-cards": "My Cards",
"card": "بطاقة",
"board": "Board",
@@ -968,7 +972,7 @@
"n-cards-found": "%s Cards Found",
"n-n-of-n-cards-found": "__start__-__end__ of __total__ Cards Found",
"operator-board": "لوح",
"operator-board-abbrev": "b",
"operator-board-abbrev": "ب",
"operator-swimlane": "swimlane",
"operator-swimlane-abbrev": "s",
"operator-list": "قائمة",
@@ -987,7 +991,7 @@
"operator-created": "created",
"operator-modified": "modified",
"operator-sort": "sort",
"operator-comment": "comment",
"operator-comment": "تعليق",
"operator-has": "has",
"operator-limit": "limit",
"operator-debug": "debug",
@@ -1114,12 +1118,12 @@
"open": "مفتوح",
"pending": "Pending",
"closed": "مقفل",
"resolved": "Resolved",
"resolved": "تم الحل",
"cancelled": "الغاء",
"history": "تاريخ",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"request": "طلب",
"requests": "الطلبات",
"help-request": "طلب مساعدة",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "نقاصيل البطاقة",
"add-teams": "اضافة فرق",
@@ -1177,5 +1181,13 @@
"storage": "Storage",
"action": "Action",
"board-title": "عنوان اللوح",
"attachmentRenamePopup-title": "إعادة التسمية"
"attachmentRenamePopup-title": "إعادة التسمية",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+18 -6
View File
@@ -295,9 +295,9 @@
"linkCardPopup-title": "Свържи картата",
"searchElementPopup-title": "Търсене",
"copyCardPopup-title": "Копирай картата",
"copyChecklistToManyCardsPopup-title": "Копирай чеклисти в други карти",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"create": "Създай",
"createBoardPopup-title": "Създай Табло",
"chooseBoardSourcePopup-title": "Импортирай Табло",
@@ -512,7 +512,7 @@
"normal": "Нормално",
"normal-desc": "Can view and edit cards. Can't change settings.",
"not-accepted-yet": "Invitation not accepted yet",
"notify-participate": "Получавате информация за всички карти, в които сте отбелязани или сте създали",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Получавате информация за всички табла, списъци и карти, които наблюдавате",
"optional": "не е задължително",
"or": "или",
@@ -541,6 +541,9 @@
"rename": "Преименуване",
"rename-board": "Промени името на Таблото",
"restore": "Възстанови",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Настройки на Карта",
"save": "Запази",
"search": "Търсене",
"rules": "Правила",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27",
"custom-login-logo-image-url": "Custom Login Logo Image URL",
"custom-login-logo-link-url": "Custom Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text below Custom Login Logo",
"automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
"username": "Потребителско име",
@@ -706,7 +710,6 @@
"default": "по подразбиране",
"queue": "Опашка",
"subtask-settings": "Настройки на Подзадачите",
"card-settings": "Настройки на Карта",
"minicard-settings": "Minicard Settings",
"boardSubtaskSettingsPopup-title": "Настройки за Подзадачите за това Табло",
"boardCardSettingsPopup-title": "Настройки на Карта",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Edit User",
"newUserPopup-title": "New User",
"notifications": "Уведомления",
"help": "Help",
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
@@ -1177,5 +1181,13 @@
"storage": "Storage",
"action": "Действие",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Преименуване"
"attachmentRenamePopup-title": "Преименуване",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
+18 -6
View File
@@ -295,9 +295,9 @@
"linkCardPopup-title": "Link Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"create": "Krouiñ",
"createBoardPopup-title": "Create Board",
"chooseBoardSourcePopup-title": "Import board",
@@ -512,7 +512,7 @@
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
"not-accepted-yet": "Invitation not accepted yet",
"notify-participate": "Receive updates to any cards you participate as creater or member",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
"optional": "optional",
"or": "or",
@@ -541,6 +541,9 @@
"rename": "Rename",
"rename-board": "Rename Board",
"restore": "Restore",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Card Settings",
"save": "Save",
"search": "Search",
"rules": "Rules",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27",
"custom-login-logo-image-url": "Custom Login Logo Image URL",
"custom-login-logo-link-url": "Custom Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text below Custom Login Logo",
"automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
"username": "Username",
@@ -706,7 +710,6 @@
"default": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
"minicard-settings": "Minicard Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"boardCardSettingsPopup-title": "Card Settings",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Edit User",
"newUserPopup-title": "New User",
"notifications": "Notifications",
"help": "Help",
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
@@ -1177,5 +1181,13 @@
"storage": "Storage",
"action": "Action",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Rename"
"attachmentRenamePopup-title": "Rename",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
+18 -6
View File
@@ -295,9 +295,9 @@
"linkCardPopup-title": "Link Card",
"searchElementPopup-title": "Cerca",
"copyCardPopup-title": "Copia la fitxa",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Títols de fitxa i Descripcions de destí en aquest format JSON",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Títol de la primera fitxa\", \"description\":\"Descripció de la primera fitxa\"}, {\"title\":\"Títol de la segona fitxa\",\"description\":\"Descripció de la segona fitxa\"},{\"title\":\"Títol de l'última fitxa\",\"description\":\"Descripció de l'última fitxa\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Títols de fitxa i Descripcions de destí en aquest format JSON",
"copyManyCardsPopup-format": "[ {\"title\": \"Títol de la primera fitxa\", \"description\":\"Descripció de la primera fitxa\"}, {\"title\":\"Títol de la segona fitxa\",\"description\":\"Descripció de la segona fitxa\"},{\"title\":\"Títol de l'última fitxa\",\"description\":\"Descripció de l'última fitxa\"} ]",
"create": "Crea",
"createBoardPopup-title": "Crea tauler",
"chooseBoardSourcePopup-title": "Importa Tauler",
@@ -512,7 +512,7 @@
"normal": "Normal",
"normal-desc": "Podeu veure i editar fitxes. No podeu canviar la configuració.",
"not-accepted-yet": "La invitació no ha esta acceptada encara",
"notify-participate": "Rebre actualitzacions per a cada fitxa de la qual n'ets creador o membre",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Rebre actualitzacions per qualsevol tauler, llista o fitxa en observació",
"optional": "opcional",
"or": "o",
@@ -541,6 +541,9 @@
"rename": "Canvia el nom",
"rename-board": "Canvia el nom del tauler",
"restore": "Restaura",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Configuració de targeta",
"save": "Desa",
"search": "Cerca",
"rules": "Regles",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27",
"custom-login-logo-image-url": "Custom Login Logo Image URL",
"custom-login-logo-link-url": "Custom Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text below Custom Login Logo",
"automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
"username": "Nom d'Usuari",
@@ -706,7 +710,6 @@
"default": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Configuració de targeta",
"minicard-settings": "Minicard Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"boardCardSettingsPopup-title": "Configuració de targeta",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Edit User",
"newUserPopup-title": "New User",
"notifications": "Notifications",
"help": "Help",
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
@@ -1177,5 +1181,13 @@
"storage": "Storage",
"action": "Action",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Canvia el nom"
"attachmentRenamePopup-title": "Canvia el nom",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
+18 -6
View File
@@ -295,9 +295,9 @@
"linkCardPopup-title": "Propojit kartu",
"searchElementPopup-title": "Hledat",
"copyCardPopup-title": "Kopírovat kartu",
"copyChecklistToManyCardsPopup-title": "Kopírovat checklist do více karet",
"copyChecklistToManyCardsPopup-instructions": "Názvy a popisy cílové karty v tomto formátu JSON",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Nadpis první karty\", \"description\":\"Popis první karty\"}, {\"title\":\"Nadpis druhé karty\",\"description\":\"Popis druhé karty\"},{\"title\":\"Nadpis poslední kary\",\"description\":\"Popis poslední karty\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Názvy a popisy cílové karty v tomto formátu JSON",
"copyManyCardsPopup-format": "[ {\"title\": \"Nadpis první karty\", \"description\":\"Popis první karty\"}, {\"title\":\"Nadpis druhé karty\",\"description\":\"Popis druhé karty\"},{\"title\":\"Nadpis poslední kary\",\"description\":\"Popis poslední karty\"} ]",
"create": "Vytvořit",
"createBoardPopup-title": "Vytvořit tablo",
"chooseBoardSourcePopup-title": "Importovat tablo",
@@ -512,7 +512,7 @@
"normal": "Normální",
"normal-desc": "Může zobrazovat a upravovat karty. Nemůže měnit nastavení.",
"not-accepted-yet": "Pozvánka ještě nebyla přijmuta",
"notify-participate": "Dostane aktualizace do všech karet, ve kterých se účastní jako tvůrce nebo člen",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Dostane aktualitace to všech tabel, sloupců nebo karet, které sledujete",
"optional": "volitelný",
"or": "nebo",
@@ -541,6 +541,9 @@
"rename": "Přejmenovat",
"rename-board": "Přejmenovat tablo",
"restore": "Obnovit",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Nastavení karet",
"save": "Uložit",
"search": "Hledat",
"rules": "Pravidla",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Výška vlastního loga v horním levém rohu. Defaultně: 27",
"custom-login-logo-image-url": "URL vlastního loga přihlášení",
"custom-login-logo-link-url": "URL odkazu vlastního loga přihlášení",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text pod vlastním logem přihlášení",
"automatic-linked-url-schemes": "Vlastní URL schémata, která by automaticky měla být klikatelná.\nJedno schéma na řádek",
"username": "Uživatelské jméno",
@@ -706,7 +710,6 @@
"default": "Výchozí",
"queue": "Fronta",
"subtask-settings": "Nastavení podúkolů",
"card-settings": "Nastavení karet",
"minicard-settings": "Minicard Settings",
"boardSubtaskSettingsPopup-title": "Nastavení podúkolů tabla",
"boardCardSettingsPopup-title": "Nastavení karet",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Editovat uživatele",
"newUserPopup-title": "Nový uživatel",
"notifications": "Upozornění",
"help": "Help",
"view-all": "Zobrazit vše",
"filter-by-unread": "Zobrazit nepřečtené",
"mark-all-as-read": "Označit vše jako přečtené",
@@ -1177,5 +1181,13 @@
"storage": "Storage",
"action": "Akce",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Přejmenovat"
"attachmentRenamePopup-title": "Přejmenovat",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
+18 -6
View File
@@ -295,9 +295,9 @@
"linkCardPopup-title": "Propojit kartu",
"searchElementPopup-title": "Hledat",
"copyCardPopup-title": "Kopírovat kartu",
"copyChecklistToManyCardsPopup-title": "Kopírovat checklist do více karet",
"copyChecklistToManyCardsPopup-instructions": "Názvy a popisy cílové karty v tomto formátu JSON",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Nadpis první karty\", \"description\":\"Popis první karty\"}, {\"title\":\"Nadpis druhé karty\",\"description\":\"Popis druhé karty\"},{\"title\":\"Nadpis poslední kary\",\"description\":\"Popis poslední karty\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Názvy a popisy cílové karty v tomto formátu JSON",
"copyManyCardsPopup-format": "[ {\"title\": \"Nadpis první karty\", \"description\":\"Popis první karty\"}, {\"title\":\"Nadpis druhé karty\",\"description\":\"Popis druhé karty\"},{\"title\":\"Nadpis poslední kary\",\"description\":\"Popis poslední karty\"} ]",
"create": "Vytvořit",
"createBoardPopup-title": "Vytvořit tablo",
"chooseBoardSourcePopup-title": "Importovat tablo",
@@ -512,7 +512,7 @@
"normal": "Normální",
"normal-desc": "Může zobrazovat a upravovat karty. Nemůže měnit nastavení.",
"not-accepted-yet": "Pozvánka ještě nebyla přijmuta",
"notify-participate": "Dostane aktualizace do všech karet, ve kterých se účastní jako tvůrce nebo člen",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Dostane aktualitace to všech tabel, sloupců nebo karet, které sledujete",
"optional": "volitelný",
"or": "nebo",
@@ -541,6 +541,9 @@
"rename": "Přejmenovat",
"rename-board": "Přejmenovat tablo",
"restore": "Obnovit",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Nastavení karet",
"save": "Uložit",
"search": "Hledat",
"rules": "Pravidla",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Výška vlastního loga v horním levém rohu. Defaultně: 27",
"custom-login-logo-image-url": "URL vlastního loga přihlášení",
"custom-login-logo-link-url": "URL odkazu vlastního loga přihlášení",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text pod vlastním logem přihlášení",
"automatic-linked-url-schemes": "Vlastní URL schémata, která by automaticky měla být klikatelná.\nJedno schéma na řádek",
"username": "Uživatelské jméno",
@@ -706,7 +710,6 @@
"default": "Výchozí",
"queue": "Fronta",
"subtask-settings": "Nastavení podúkolů",
"card-settings": "Nastavení karet",
"minicard-settings": "Minicard Settings",
"boardSubtaskSettingsPopup-title": "Nastavení podúkolů tabla",
"boardCardSettingsPopup-title": "Nastavení karet",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Editovat uživatele",
"newUserPopup-title": "Nový uživatel",
"notifications": "Upozornění",
"help": "Help",
"view-all": "Zobrazit vše",
"filter-by-unread": "Zobrazit nepřečtené",
"mark-all-as-read": "Označit vše jako přečtené",
@@ -1177,5 +1181,13 @@
"storage": "Storage",
"action": "Akce",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Přejmenovat"
"attachmentRenamePopup-title": "Přejmenovat",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
+18 -6
View File
@@ -295,9 +295,9 @@
"linkCardPopup-title": "Link Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"create": "Create",
"createBoardPopup-title": "Create Board",
"chooseBoardSourcePopup-title": "Import board",
@@ -512,7 +512,7 @@
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
"not-accepted-yet": "Invitation not accepted yet",
"notify-participate": "Receive updates to any cards you participate as creater or member",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
"optional": "optional",
"or": "or",
@@ -541,6 +541,9 @@
"rename": "Rename",
"rename-board": "Rename Board",
"restore": "Restore",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Card Settings",
"save": "Save",
"search": "Search",
"rules": "Rules",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27",
"custom-login-logo-image-url": "Custom Login Logo Image URL",
"custom-login-logo-link-url": "Custom Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text below Custom Login Logo",
"automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
"username": "Username",
@@ -706,7 +710,6 @@
"default": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
"minicard-settings": "Minicard Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"boardCardSettingsPopup-title": "Card Settings",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Edit User",
"newUserPopup-title": "New User",
"notifications": "Notifications",
"help": "Help",
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
@@ -1177,5 +1181,13 @@
"storage": "Storage",
"action": "Action",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Rename"
"attachmentRenamePopup-title": "Rename",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
+18 -6
View File
@@ -295,9 +295,9 @@
"linkCardPopup-title": "Link Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"create": "Create",
"createBoardPopup-title": "Create Board",
"chooseBoardSourcePopup-title": "Import board",
@@ -512,7 +512,7 @@
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
"not-accepted-yet": "Invitation not accepted yet",
"notify-participate": "Receive updates to any cards you participate as creater or member",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
"optional": "optional",
"or": "or",
@@ -541,6 +541,9 @@
"rename": "Rename",
"rename-board": "Rename Board",
"restore": "Restore",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Card Settings",
"save": "Save",
"search": "Search",
"rules": "Rules",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27",
"custom-login-logo-image-url": "Custom Login Logo Image URL",
"custom-login-logo-link-url": "Custom Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text below Custom Login Logo",
"automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
"username": "Username",
@@ -706,7 +710,6 @@
"default": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
"minicard-settings": "Minicard Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"boardCardSettingsPopup-title": "Card Settings",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Edit User",
"newUserPopup-title": "New User",
"notifications": "Notifications",
"help": "Help",
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
@@ -1177,5 +1181,13 @@
"storage": "Storage",
"action": "Action",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Rename"
"attachmentRenamePopup-title": "Rename",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
+18 -6
View File
@@ -295,9 +295,9 @@
"linkCardPopup-title": "Sammenkæd kort",
"searchElementPopup-title": "Søg",
"copyCardPopup-title": "Kopiér kort",
"copyChecklistToManyCardsPopup-title": "Kopiér tjeklisteskabelon til flere kort",
"copyChecklistToManyCardsPopup-instructions": "Destination for kortenes titler og beskrivelser i dette JSON-format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Destination for kortenes titler og beskrivelser i dette JSON-format",
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"create": "Opret",
"createBoardPopup-title": "Opret tavle",
"chooseBoardSourcePopup-title": "Importér tavle",
@@ -512,7 +512,7 @@
"normal": "Normal",
"normal-desc": "Du kan se og redigere kort. Indstillinger kan ikke ændres.",
"not-accepted-yet": "Invitation er endnu ikke accepteret",
"notify-participate": "Modtag opdateringer for alle kort du deltager i, som opretter eller medlem ",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Modtag opdateringer for alle tavler eller kort som du følger ",
"optional": "valgfri",
"or": "eller",
@@ -541,6 +541,9 @@
"rename": "Omdøb",
"rename-board": "Omdøb tavle",
"restore": "Genskab",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Indstillinger for kort",
"save": "Gem",
"search": "Søg",
"rules": "Regler",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27",
"custom-login-logo-image-url": "Custom Login Logo Image URL",
"custom-login-logo-link-url": "Custom Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text below Custom Login Logo",
"automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
"username": "Brugernavn",
@@ -706,7 +710,6 @@
"default": "Standard",
"queue": "Kø",
"subtask-settings": "Indstillinger for delopgaver",
"card-settings": "Indstillinger for kort",
"minicard-settings": "Minicard Settings",
"boardSubtaskSettingsPopup-title": "Indstillinger for delopgaver i tavle",
"boardCardSettingsPopup-title": "Indstillinger for kort",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Redigér bruger",
"newUserPopup-title": "Ny bruger",
"notifications": "Notifikationer",
"help": "Help",
"view-all": "Vis alle",
"filter-by-unread": "Filtrér efter ulæst",
"mark-all-as-read": "Markér alle som læst",
@@ -1177,5 +1181,13 @@
"storage": "Storage",
"action": "Action",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Omdøb"
"attachmentRenamePopup-title": "Omdøb",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
+18 -6
View File
@@ -295,9 +295,9 @@
"linkCardPopup-title": "Karte verknüpfen",
"searchElementPopup-title": "Suche",
"copyCardPopup-title": "Karte kopieren",
"copyChecklistToManyCardsPopup-title": "Checklistenvorlage in mehrere Karten kopieren",
"copyChecklistToManyCardsPopup-instructions": "Titel und Beschreibungen der Zielkarten im folgenden JSON-Format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Titel der ersten Karte\", \"description\":\"Beschreibung der ersten Karte\"}, {\"title\":\"Titel der zweiten Karte\",\"description\":\"Beschreibung der zweiten Karte\"},{\"title\":\"Titel der letzten Karte\",\"description\":\"Beschreibung der letzten Karte\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Titel und Beschreibungen der Zielkarten im folgenden JSON-Format",
"copyManyCardsPopup-format": "[ {\"title\": \"Titel der ersten Karte\", \"description\":\"Beschreibung der ersten Karte\"}, {\"title\":\"Titel der zweiten Karte\",\"description\":\"Beschreibung der zweiten Karte\"},{\"title\":\"Titel der letzten Karte\",\"description\":\"Beschreibung der letzten Karte\"} ]",
"create": "Erstellen",
"createBoardPopup-title": "Board erstellen",
"chooseBoardSourcePopup-title": "Board importieren",
@@ -512,7 +512,7 @@
"normal": "Normal",
"normal-desc": "Kann Karten anzeigen und bearbeiten, aber keine Einstellungen ändern.",
"not-accepted-yet": "Die Einladung wurde noch nicht angenommen",
"notify-participate": "Benachrichtigungen zu allen Karten erhalten, an denen Sie teilnehmen",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Benachrichtigungen über alle Boards, Listen oder Karten erhalten, die Sie beobachten",
"optional": "optional",
"or": "oder",
@@ -541,6 +541,9 @@
"rename": "Umbenennen",
"rename-board": "Board umbenennen",
"restore": "Wiederherstellen",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Karten-Einstellungen",
"save": "Speichern",
"search": "Suchen",
"rules": "Regeln",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Benutzerdefiniertes Logo oben links Höhe. Voreinstellung: 27",
"custom-login-logo-image-url": "Benutzerdefiniertes Login Logo Bild URL",
"custom-login-logo-link-url": "Benutzerdefiniertes Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text unterhalb benutzerdefiniertem Login Logo",
"automatic-linked-url-schemes": "Spezielle URL-Schemas, die durch Klick automatisch öffenbar sein sollen. Ein URL-Schema pro Zeile",
"username": "Benutzername",
@@ -706,7 +710,6 @@
"default": "Standard",
"queue": "Warteschlange",
"subtask-settings": "Einstellungen für Teilaufgaben",
"card-settings": "Karten-Einstellungen",
"minicard-settings": "Minicard Settings",
"boardSubtaskSettingsPopup-title": "Boardeinstellungen für Teilaufgaben",
"boardCardSettingsPopup-title": "Karten-Einstellungen",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Benutzer ändern",
"newUserPopup-title": "Neuer Benutzer",
"notifications": "Benachrichtigungen",
"help": "Help",
"view-all": "Alle anzeigen",
"filter-by-unread": "Nur ungelesene",
"mark-all-as-read": "Alle als gelesen markieren",
@@ -1177,5 +1181,13 @@
"storage": "Storage",
"action": "Aktion",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Umbenennen"
"attachmentRenamePopup-title": "Umbenennen",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
+48 -36
View File
@@ -135,12 +135,12 @@
"avatar-too-big": "Das Profilbild ist zu gross (520KB max)",
"back": "Zurück",
"board-change-color": "Farbe ändern",
"show-at-all-boards-page": "Show at All Boards page",
"board-info-on-my-boards": "All Boards Settings",
"boardInfoOnMyBoardsPopup-title": "All Boards Settings",
"boardInfoOnMyBoards-title": "All Boards Settings",
"show-card-counter-per-list": "Show card count per list",
"show-board_members-avatar": "Show Board members avatars",
"show-at-all-boards-page": "Zeigen auf der Seite \"Alle Boards\"",
"board-info-on-my-boards": "Einstellungen für alle Boards",
"boardInfoOnMyBoardsPopup-title": "Einstellungen für alle Boards",
"boardInfoOnMyBoards-title": "Einstellungen für alle Boards",
"show-card-counter-per-list": "Zeige Kartenanzahl pro Liste",
"show-board_members-avatar": "Zeige Profilbilder der Board-Mitglieder",
"board-nb-stars": "%s Sterne",
"board-not-found": "Board nicht gefunden",
"board-private-info": "Dieses Board wird <strong>privat</strong> sein.",
@@ -288,16 +288,16 @@
"computer": "Computer",
"confirm-subtask-delete-popup": "Wollen Sie die Teilaufgabe wirklich löschen?",
"confirm-checklist-delete-popup": "Wollen Sie diese Checkliste wirklich löschen?",
"subtaskDeletePopup-title": "Delete Subtask?",
"subtaskDeletePopup-title": "Teilaufgabe löschen?",
"checklistDeletePopup-title": "Checkliste löschen?",
"copy-card-link-to-clipboard": "Kopiere Link zur Karte in die Zwischenablage",
"copy-text-to-clipboard": "Text in die Zwischenablage kopieren",
"linkCardPopup-title": "Karte verknüpfen",
"searchElementPopup-title": "Suche",
"copyCardPopup-title": "Karte kopieren",
"copyChecklistToManyCardsPopup-title": "Checklisten-Vorlage in mehrere Karten kopieren",
"copyChecklistToManyCardsPopup-instructions": "Titel und Beschreibungen der Zielkarten im folgenden JSON-Format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Titel der ersten Karte\", \"description\":\"Beschreibung der ersten Karte\"}, {\"title\":\"Titel der zweiten Karte\",\"description\":\"Beschreibung der zweiten Karte\"},{\"title\":\"Titel der letzten Karte\",\"description\":\"Beschreibung der letzten Karte\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Titel und Beschreibungen der Zielkarten im folgenden JSON-Format",
"copyManyCardsPopup-format": "[ {\"title\": \"Titel der ersten Karte\", \"description\":\"Beschreibung der ersten Karte\"}, {\"title\":\"Titel der zweiten Karte\",\"description\":\"Beschreibung der zweiten Karte\"},{\"title\":\"Titel der letzten Karte\",\"description\":\"Beschreibung der letzten Karte\"} ]",
"create": "Erstellen",
"createBoardPopup-title": "Board erstellen",
"chooseBoardSourcePopup-title": "Board importieren",
@@ -512,7 +512,7 @@
"normal": "Normal",
"normal-desc": "Kann Karten anzeigen und bearbeiten, aber keine Einstellungen ändern.",
"not-accepted-yet": "Die Einladung wurde noch nicht angenommen",
"notify-participate": "Benachrichtigungen zu allen Karten erhalten, an denen Sie teilnehmen",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Benachrichtigungen über alle Boards, Listen oder Karten erhalten, die Sie beobachten",
"optional": "optional",
"or": "oder",
@@ -541,6 +541,9 @@
"rename": "Umbenennen",
"rename-board": "Board umbenennen",
"restore": "Wiederherstellen",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Karten-Einstellungen",
"save": "Speichern",
"search": "Suchen",
"rules": "Regeln",
@@ -578,8 +581,8 @@
"has-spenttime-cards": "Hat Karten mit aufgewendeten Zeiten",
"time": "Zeit",
"title": "Titel",
"toggle-labels": "Toggle labels 1-9 for card. Multi-Selection adds labels 1-9",
"remove-labels-multiselect": "Multi-Selection removes labels 1-9",
"toggle-labels": "Label 1-9 zur Karte hinzufügen. Bei Mehrfachauswahl Label 1-9 hinzufügen",
"remove-labels-multiselect": "Labels 1-9 bei Karten-Mehrfachauswahl entfernen",
"tracking": "Folgen",
"tracking-info": "Sie werden über alle Änderungen an Karten benachrichtigt, an denen Sie als Ersteller oder Mitglied beteiligt sind.",
"type": "Typ",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Benutzerdefiniertes Logo oben links Höhe. Voreinstellung: 27",
"custom-login-logo-image-url": "Benutzerdefiniertes Login Logo Bild URL",
"custom-login-logo-link-url": "Benutzerdefiniertes Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text unterhalb benutzerdefiniertem Login Logo",
"automatic-linked-url-schemes": "Spezielle URL-Schemas, die durch Klick automatisch öffenbar sein sollen. Ein URL-Schema pro Zeile",
"username": "Benutzername",
@@ -706,15 +710,14 @@
"default": "Standard",
"queue": "Warteschlange",
"subtask-settings": "Einstellungen für Teilaufgaben",
"card-settings": "Karten-Einstellungen",
"minicard-settings": "Minicard Settings",
"minicard-settings": "Einstellungen für Minikarte",
"boardSubtaskSettingsPopup-title": "Boardeinstellungen für Teilaufgaben",
"boardCardSettingsPopup-title": "Karten-Einstellungen",
"boardMinicardSettingsPopup-title": "Minicard Settings",
"boardMinicardSettingsPopup-title": "Einstellungen für Minikarte",
"deposit-subtasks-board": "Teilaufgaben in diesem Board ablegen:",
"deposit-subtasks-list": "Zielliste für hier abgelegte Teilaufgaben:",
"show-parent-in-minicard": "Übergeordnetes Element auf Minikarte anzeigen:",
"description-on-minicard": "Description on minicard",
"description-on-minicard": "Beschreibung auf Minikarte",
"prefix-with-full-path": "Vollständiger Pfad über Titel",
"prefix-with-parent": "Über Titel",
"subtext-with-full-path": "Vollständiger Pfad unter Titel",
@@ -892,7 +895,7 @@
"cardAssigneesPopup-title": "Zugewiesen",
"addmore-detail": "Eine detailliertere Beschreibung hinzufügen",
"show-on-card": "Zeige auf Karte",
"show-on-minicard": "Show on Minicard",
"show-on-minicard": "Anzeigen auf Minikarte",
"new": "Neu",
"editOrgPopup-title": "Organisation bearbeiten",
"newOrgPopup-title": "Neue Organisation",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Benutzer ändern",
"newUserPopup-title": "Neuer Benutzer",
"notifications": "Benachrichtigungen",
"help": "Help",
"view-all": "Alle anzeigen",
"filter-by-unread": "Nur ungelesene",
"mark-all-as-read": "Alle als gelesen markieren",
@@ -938,10 +942,10 @@
"card": "Karte",
"board": "Board",
"context-separator": "/",
"myCardsViewChange-title": "My Cards View",
"myCardsViewChangePopup-title": "My Cards View",
"myCardsViewChange-title": "Meine Kartenansicht",
"myCardsViewChangePopup-title": "Meine Kartenansicht",
"myCardsViewChange-choice-boards": "Boards",
"myCardsViewChange-choice-table": "Table",
"myCardsViewChange-choice-table": "Tabelle",
"myCardsSortChange-title": "Meine Karten Sortierung",
"myCardsSortChangePopup-title": "Meine Karten Sortierung",
"myCardsSortChange-choice-board": "nach Board",
@@ -1162,20 +1166,28 @@
"copyChecklist": "Checkliste kopieren",
"copyChecklistPopup-title": "Checkliste kopieren",
"card-show-lists": "Listen anzeigen",
"subtaskActionsPopup-title": "Subtask Actions",
"attachmentActionsPopup-title": "Attachment Actions",
"attachment-move-storage-fs": "Move attachment to filesystem",
"attachment-move-storage-gridfs": "Move attachment to GridFS",
"attachment-move": "Move Attachment",
"move-all-attachments-to-fs": "Move all attachments to filesystem",
"move-all-attachments-to-gridfs": "Move all attachments to GridFS",
"move-all-attachments-of-board-to-fs": "Move all attachments of board to filesystem",
"move-all-attachments-of-board-to-gridfs": "Move all attachments of board to GridFS",
"path": "Path",
"version-name": "Version-Name",
"size": "Size",
"storage": "Storage",
"subtaskActionsPopup-title": "Teilaufgabenaktionen",
"attachmentActionsPopup-title": "Anhang-Aktionen",
"attachment-move-storage-fs": "Verschiebe den Anhang ins Dateisystem",
"attachment-move-storage-gridfs": "Verschiebe den Anhang zu GridFS",
"attachment-move": "Verschiebe den Anhang",
"move-all-attachments-to-fs": "Verschiebe alle Anhänge ins Dateisystem",
"move-all-attachments-to-gridfs": "Verschiebe alle Anhänge zu GridFS",
"move-all-attachments-of-board-to-fs": "Verschiebe alle Anhänge des Boards ins Dateisystem",
"move-all-attachments-of-board-to-gridfs": "Verschiebe alle Anhänge des Boards zu GridFS",
"path": "Pfad",
"version-name": "Versionsname",
"size": "Grösse",
"storage": "Speicher",
"action": "Aktion",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Umbenennen"
"board-title": "Board-Titel",
"attachmentRenamePopup-title": "Umbenennen",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
+23 -11
View File
@@ -137,8 +137,8 @@
"board-change-color": "Farbe ändern",
"show-at-all-boards-page": "Zeige auf \"Alle Boards\" Seite",
"board-info-on-my-boards": "\"Alle Boards\" Einstellungen",
"boardInfoOnMyBoardsPopup-title": "\"Alle Boards\" Einstellungen",
"boardInfoOnMyBoards-title": "\"Alle Boards\" Einstellungen",
"boardInfoOnMyBoardsPopup-title": "Einstellungen für Alle Boards",
"boardInfoOnMyBoards-title": "Einstellungen für Alle Boards",
"show-card-counter-per-list": "Zeige Kartenanzahl pro Liste",
"show-board_members-avatar": "Zeige Profilbilder der Board-Mitglieder",
"board-nb-stars": "%s Sterne",
@@ -295,9 +295,9 @@
"linkCardPopup-title": "Karte verknüpfen",
"searchElementPopup-title": "Suche",
"copyCardPopup-title": "Karte kopieren",
"copyChecklistToManyCardsPopup-title": "Checklistenvorlage in mehrere Karten kopieren",
"copyChecklistToManyCardsPopup-instructions": "Titel und Beschreibungen der Zielkarten im folgenden JSON-Format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Titel der ersten Karte\", \"description\":\"Beschreibung der ersten Karte\"}, {\"title\":\"Titel der zweiten Karte\",\"description\":\"Beschreibung der zweiten Karte\"},{\"title\":\"Titel der letzten Karte\",\"description\":\"Beschreibung der letzten Karte\"} ]",
"copyManyCardsPopup-title": "Kopiere die Vorlage zu mehreren Karten",
"copyManyCardsPopup-instructions": "Titel und Beschreibungen der Zielkarten im folgenden JSON-Format",
"copyManyCardsPopup-format": "[ {\"title\": \"Titel der ersten Karte\", \"description\":\"Beschreibung der ersten Karte\"}, {\"title\":\"Titel der zweiten Karte\",\"description\":\"Beschreibung der zweiten Karte\"},{\"title\":\"Titel der letzten Karte\",\"description\":\"Beschreibung der letzten Karte\"} ]",
"create": "Erstellen",
"createBoardPopup-title": "Board erstellen",
"chooseBoardSourcePopup-title": "Board importieren",
@@ -512,7 +512,7 @@
"normal": "Normal",
"normal-desc": "Kann Karten anzeigen und bearbeiten, aber keine Einstellungen ändern.",
"not-accepted-yet": "Die Einladung wurde noch nicht angenommen",
"notify-participate": "Benachrichtigungen zu allen Karten erhalten, an denen Sie teilnehmen",
"notify-participate": "Benachrichtigungen zu allen Karten erhalten, bei denen Sie Ersteller oder Mitglied sind ",
"notify-watch": "Benachrichtigungen über alle Boards, Listen oder Karten erhalten, die Sie beobachten",
"optional": "optional",
"or": "oder",
@@ -541,6 +541,9 @@
"rename": "Umbenennen",
"rename-board": "Board umbenennen",
"restore": "Wiederherstellen",
"rescue-card-description": "Zeige eine Sicherheitsmeldung, bevor die Kartenbeschreibung ungespeichert geschlossen wird.",
"rescue-card-description-dialogue": "Soll die aktuelle Kartenbeschreibung mit deinen Änderungen überschrieben werden?",
"card-settings": "Karten-Einstellungen",
"save": "Speichern",
"search": "Suchen",
"rules": "Regeln",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Benutzerdefiniertes Logo oben links Höhe. Voreinstellung: 27",
"custom-login-logo-image-url": "Benutzerdefiniertes Login Logo Bild URL",
"custom-login-logo-link-url": "Benutzerdefiniertes Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text unterhalb benutzerdefiniertem Login Logo",
"automatic-linked-url-schemes": "Spezielle URL-Schemas, die durch Klick automatisch öffenbar sein sollen. Ein URL-Schema pro Zeile",
"username": "Benutzername",
@@ -706,7 +710,6 @@
"default": "Standard",
"queue": "Warteschlange",
"subtask-settings": "Einstellungen für Teilaufgaben",
"card-settings": "Karten-Einstellungen",
"minicard-settings": "Minikarte-Einstellungen",
"boardSubtaskSettingsPopup-title": "Boardeinstellungen für Teilaufgaben",
"boardCardSettingsPopup-title": "Karten-Einstellungen",
@@ -882,10 +885,10 @@
"act-pastdue": "erinnernd an das aktuelle Fälligkeitszeitpunkt (__timeValue__) von __card__ ist vorbei",
"act-duenow": "erinnernd an das aktuelle Fälligkeitszeitpunkt (__timeValue__) von __card__ ist jetzt",
"act-atUserComment": "Sie wurden in [__board__] __list__/__card__ erwähnt",
"delete-user-confirm-popup": "Sind Sie sicher, dass Sie diesen Account löschen wollen? Die Aktion kann nicht rückgängig gemacht werden.",
"delete-user-confirm-popup": "Möchten Sie dieses Benutzerkonto wirklich löschen? Die Aktion kann nicht rückgängig gemacht werden.",
"delete-team-confirm-popup": "Sind Sie sicher, daß Sie dieses Team löschen wollen? Es gibt keine Möglichkeit, das rückgängig zu machen.",
"delete-org-confirm-popup": "Sind Sie sicher, daß Sie diese Organisation löschen wollen? Es gibt keine Möglichkeit, das rückgängig zu machen.",
"accounts-allowUserDelete": "Erlaube Benutzern ihren eigenen Account zu löschen",
"accounts-allowUserDelete": "Erlaube Benutzern ihr Benutzerkonto selbst zu löschen",
"hide-minicard-label-text": "Labeltext auf Minikarte ausblenden",
"show-desktop-drag-handles": "Desktop-Ziehpunkte anzeigen",
"assignee": "Zugewiesen",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Benutzer ändern",
"newUserPopup-title": "Neuer Benutzer",
"notifications": "Benachrichtigungen",
"help": "Help",
"view-all": "Alle anzeigen",
"filter-by-unread": "Nur ungelesene",
"mark-all-as-read": "Alle als gelesen markieren",
@@ -1158,7 +1162,7 @@
"checklistActionsPopup-title": "Checklistenaktionen",
"moveChecklist": "Checkliste verschieben",
"moveChecklistPopup-title": "Checkliste verschieben",
"newlineBecomesNewChecklistItem": "Neue Zeile wird ein neues Checklistenelement",
"newlineBecomesNewChecklistItem": "Neue Zeile wird neuer Checklisteneintrag",
"copyChecklist": "Checkliste kopieren",
"copyChecklistPopup-title": "Checkliste kopieren",
"card-show-lists": "Listen anzeigen",
@@ -1177,5 +1181,13 @@
"storage": "Speicher",
"action": "Aktion",
"board-title": "Board-Titel",
"attachmentRenamePopup-title": "Umbenennen"
"attachmentRenamePopup-title": "Umbenennen",
"uploading": "Hochladen",
"remaining_time": "Verbleibende Zeit",
"speed": "Schnelligkeit",
"progress": "Fortschritt",
"password-again": "Passwort (wiederholen)",
"if-you-already-have-an-account": "Wenn Sie bereits ein Benutzerkonto haben",
"register": "Registrieren",
"forgot-password": "Passwort vergessen"
}
+18 -6
View File
@@ -295,9 +295,9 @@
"linkCardPopup-title": "Σύνδεση Κάρτας",
"searchElementPopup-title": "Αναζήτηση",
"copyCardPopup-title": "Αντιγραφή Κάρτας",
"copyChecklistToManyCardsPopup-title": "Αντιγραφή του Προτύπου Λίστας Ελέγχου - Checklist σε πολλές Κάρτες",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Τίτλος πρώτης κάρτας\", \"description\":\"Περιγραφή πρώτης κάρτας\"}, {\"title\":\"Τίτλος δεύτερης κάρτας\",\"description\":\"Περιγραφή δεύτερης κάρτας\"},{\"title\":\"Τίτλος τελευταίας κάρτας\",\"description\":\"Περιγραφή τελευταίας κάρτας\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyManyCardsPopup-format": "[ {\"title\": \"Τίτλος πρώτης κάρτας\", \"description\":\"Περιγραφή πρώτης κάρτας\"}, {\"title\":\"Τίτλος δεύτερης κάρτας\",\"description\":\"Περιγραφή δεύτερης κάρτας\"},{\"title\":\"Τίτλος τελευταίας κάρτας\",\"description\":\"Περιγραφή τελευταίας κάρτας\"} ]",
"create": "Δημιουργία",
"createBoardPopup-title": "Δημιουργία Πίνακα",
"chooseBoardSourcePopup-title": "Εισαγωγή πίνακα",
@@ -512,7 +512,7 @@
"normal": "Κανονικό",
"normal-desc": "Can view and edit cards. Can't change settings.",
"not-accepted-yet": "Η πρόσκληση δεν έχει λάβει αποδοχή ακόμη",
"notify-participate": "Receive updates to any cards you participate as creater or member",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
"optional": "προεραιτικό",
"or": "ή",
@@ -541,6 +541,9 @@
"rename": "Μετανομασία",
"rename-board": "Μετονομασία Πίνακα",
"restore": "Επαναφορά",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Ρυθμίσεις Κάρτας",
"save": "Αποθήκευση",
"search": "Αναζήτηση",
"rules": "Κανόνες",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27",
"custom-login-logo-image-url": "Custom Login Logo Image URL",
"custom-login-logo-link-url": "Custom Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text below Custom Login Logo",
"automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
"username": "Όνομα Χρήστη",
@@ -706,7 +710,6 @@
"default": "Προεπιλογή",
"queue": "Ουρά αναμονής",
"subtask-settings": "Ρυθμίσεις υποεργασιών (subtasks)",
"card-settings": "Ρυθμίσεις Κάρτας",
"minicard-settings": "Minicard Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"boardCardSettingsPopup-title": "Ρυθμίσεις Κάρτας",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Edit User",
"newUserPopup-title": "New User",
"notifications": "Notifications",
"help": "Help",
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
@@ -1177,5 +1181,13 @@
"storage": "Storage",
"action": "Ενέργεια",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Μετανομασία"
"attachmentRenamePopup-title": "Μετανομασία",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
+3 -3
View File
@@ -288,9 +288,9 @@
"linkCardPopup-title": "Σύνδεση Κάρτας",
"searchElementPopup-title": "Αναζήτηση",
"copyCardPopup-title": "Αντιγραφή Κάρτας",
"copyChecklistToManyCardsPopup-title": "Αντιγραφή του Προτύπου Λίστας Ελέγχου - Checklist σε πολλές Κάρτες",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Τίτλος πρώτης κάρτας\", \"description\":\"Περιγραφή πρώτης κάρτας\"}, {\"title\":\"Τίτλος δεύτερης κάρτας\",\"description\":\"Περιγραφή δεύτερης κάρτας\"},{\"title\":\"Τίτλος τελευταίας κάρτας\",\"description\":\"Περιγραφή τελευταίας κάρτας\"} ]",
"copyManyCardsPopup-title": "Αντιγραφή του Προτύπου Λίστας Ελέγχου - Checklist σε πολλές Κάρτες",
"copyManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyManyCardsPopup-format": "[ {\"title\": \"Τίτλος πρώτης κάρτας\", \"description\":\"Περιγραφή πρώτης κάρτας\"}, {\"title\":\"Τίτλος δεύτερης κάρτας\",\"description\":\"Περιγραφή δεύτερης κάρτας\"},{\"title\":\"Τίτλος τελευταίας κάρτας\",\"description\":\"Περιγραφή τελευταίας κάρτας\"} ]",
"create": "Δημιουργία",
"createBoardPopup-title": "Δημιουργία Πίνακα",
"chooseBoardSourcePopup-title": "Εισαγωγή πίνακα",
+18 -6
View File
@@ -295,9 +295,9 @@
"linkCardPopup-title": "Link Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"create": "Create",
"createBoardPopup-title": "Create Board",
"chooseBoardSourcePopup-title": "Import board",
@@ -512,7 +512,7 @@
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
"not-accepted-yet": "Invitation not accepted yet",
"notify-participate": "Receive updates to any cards you participate as creater or member",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
"optional": "optional",
"or": "or",
@@ -541,6 +541,9 @@
"rename": "Rename",
"rename-board": "Rename Board",
"restore": "Restore",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Card Settings",
"save": "Save",
"search": "Search",
"rules": "Rules",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27",
"custom-login-logo-image-url": "Custom Login Logo Image URL",
"custom-login-logo-link-url": "Custom Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text below Custom Login Logo",
"automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
"username": "Username",
@@ -706,7 +710,6 @@
"default": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
"minicard-settings": "Minicard Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"boardCardSettingsPopup-title": "Card Settings",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Edit User",
"newUserPopup-title": "New User",
"notifications": "Notifications",
"help": "Help",
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
@@ -1177,5 +1181,13 @@
"storage": "Storage",
"action": "Action",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Rename"
"attachmentRenamePopup-title": "Rename",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
+18 -6
View File
@@ -295,9 +295,9 @@
"linkCardPopup-title": "Link Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"create": "Create",
"createBoardPopup-title": "Create Board",
"chooseBoardSourcePopup-title": "Import board",
@@ -512,7 +512,7 @@
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
"not-accepted-yet": "Invitation not accepted yet",
"notify-participate": "Receive updates to any cards you participate as creater or member",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
"optional": "optional",
"or": "or",
@@ -541,6 +541,9 @@
"rename": "Rename",
"rename-board": "Rename Board",
"restore": "Restore",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Card Settings",
"save": "Save",
"search": "Search",
"rules": "Rules",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27",
"custom-login-logo-image-url": "Custom Login Logo Image URL",
"custom-login-logo-link-url": "Custom Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text below Custom Login Logo",
"automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
"username": "Username",
@@ -706,7 +710,6 @@
"default": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
"minicard-settings": "Minicard Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"boardCardSettingsPopup-title": "Card Settings",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Edit User",
"newUserPopup-title": "New User",
"notifications": "Notifications",
"help": "Help",
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
@@ -1177,5 +1181,13 @@
"storage": "Storage",
"action": "Action",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Rename"
"attachmentRenamePopup-title": "Rename",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
+18 -6
View File
@@ -295,9 +295,9 @@
"linkCardPopup-title": "Link Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"copyManyCardsPopup-title": "Copy Template to Many Cards",
"copyManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"create": "Create",
"createBoardPopup-title": "Create Board",
"chooseBoardSourcePopup-title": "Import board",
@@ -512,7 +512,7 @@
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
"not-accepted-yet": "Invitation not accepted yet",
"notify-participate": "Receive updates to any cards you participate as creater or member",
"notify-participate": "Receive updates to any cards you participate as creator or member",
"notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
"optional": "optional",
"or": "or",
@@ -541,6 +541,9 @@
"rename": "Rename",
"rename-board": "Rename Board",
"restore": "Restore",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings": "Card Settings",
"save": "Save",
"search": "Search",
"rules": "Rules",
@@ -594,6 +597,7 @@
"custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27",
"custom-login-logo-image-url": "Custom Login Logo Image URL",
"custom-login-logo-link-url": "Custom Login Logo Link URL",
"custom-help-link-url": "Custom Help Link URL",
"text-below-custom-login-logo": "Text below Custom Login Logo",
"automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
"username": "Username",
@@ -706,7 +710,6 @@
"default": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
"minicard-settings": "Minicard Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"boardCardSettingsPopup-title": "Card Settings",
@@ -901,6 +904,7 @@
"editUserPopup-title": "Edit User",
"newUserPopup-title": "New User",
"notifications": "Notifications",
"help": "Help",
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
@@ -1177,5 +1181,13 @@
"storage": "Storage",
"action": "Action",
"board-title": "Board Title",
"attachmentRenamePopup-title": "Rename"
"attachmentRenamePopup-title": "Rename",
"uploading": "Uploading",
"remaining_time": "Remaining time",
"speed": "Speed",
"progress": "Progress",
"password-again": "Password (again)",
"if-you-already-have-an-account": "If you already have an account",
"register": "Register",
"forgot-password": "Forgot password"
}
Loaded 100 of 251 files, more files were not shown because too many files have changed in this diff. Show more