Compare commits

...
164 Commits
Author SHA1 Message Date
Lauri Ojansivu 7e13d09c3c v4.99 2021-02-25 09:26:27 +02:00
Lauri Ojansivu 71c0c62ee8 Updated translations. 2021-02-25 09:21:20 +02:00
Lauri Ojansivu c599e60e75 Updated ChangeLog. 2021-02-25 09:18:23 +02:00
Lauri Ojansivu f2241ba3de Updated to Meteor 2.1
Thanks to Meteor developers!
2021-02-25 09:16:49 +02:00
Lauri Ojansivu 85fb240b69 Updated ChangeLog. 2021-02-25 09:16:09 +02:00
Lauri Ojansivu 71725f1b26 Fixed CRITICAL SECURITY ISSUE of SMTP password visible to Admin at
Admin Panel by using browser inspect to see behind asterisks.

Thanks to Georg Krause and xet7 !
2021-02-25 09:02:23 +02:00
Lauri Ojansivu 64d4c3f971 Updated ChangeLog. 2021-02-24 20:51:46 +02:00
Lauri Ojansivu 4c24b042d0 Updated ChangeLog. 2021-02-24 20:26:01 +02:00
Lauri Ojansivu a43736b5c6 Update wekan/releases/up.sh script: Can not build ppc64le version because
OpenPower Minicloud is having emergency maintenance.

Thanks to xet7 !
2021-02-24 20:23:23 +02:00
Lauri Ojansivu 874c2a6212 v4.98 2021-02-24 19:54:37 +02:00
Lauri Ojansivu 94492b01cd v4.97 2021-02-24 19:48:03 +02:00
Lauri Ojansivu ab6f8397ce Updated ChangeLog. 2021-02-24 19:45:08 +02:00
Lauri Ojansivu b105088c28 Update release.sh script: Also build Sandstorm version of Wekan with same script.
Thanks to xet7 !
2021-02-24 19:43:20 +02:00
Lauri Ojansivu 1070805a0f Updated ChangeLog. 2021-02-24 19:41:27 +02:00
Lauri Ojansivu 799ae886c5 Update release-bundle.sh script: Can not build ppc64le version because
OpenPower Minicloud is having emergency maintenance.

Thanks to xet7 !
2021-02-24 19:37:51 +02:00
Lauri Ojansivu 1276b23817 Updated translations. 2021-02-24 19:28:57 +02:00
Lauri Ojansivu 6ecb5b5c64 Updated translations. 2021-02-24 19:14:39 +02:00
Lauri Ojansivu cbadf5e57c Updated ChangeLog. 2021-02-24 18:34:10 +02:00
Lauri Ojansivu 3a2deb0039 Admin Panel/People/People/New User: Added Initials.
Thanks to xet7 !
2021-02-24 18:31:44 +02:00
Lauri Ojansivu 0480c2195c Updated ChangeLog. 2021-02-24 17:24:17 +02:00
Lauri Ojansivu fde6a65933 Updated Node.js to v12.21.0
Thanks to Node.js developers!
2021-02-24 17:21:06 +02:00
Lauri Ojansivu 6f6249690b Updated ChangeLog. 2021-02-24 17:04:10 +02:00
Lauri Ojansivu c23aca78ba Updated GitHub issue template links.
Thanks to atlantsecurity and xet7 !

Related #3598
2021-02-24 17:01:53 +02:00
Lauri Ojansivu a195b52d34 Merge branch 'ednamaeG-sort-feature' 2021-02-24 16:47:31 +02:00
Lauri Ojansivu 09a13ef75f Made sort cards feature translatable. 2021-02-24 16:45:16 +02:00
Lauri Ojansivu 70e7534933 Merge branch 'sort-feature' of https://github.com/ednamaeG/wekan into ednamaeG-sort-feature 2021-02-24 16:01:59 +02:00
Lauri Ojansivu c95edbe25a Updated ChangeLog. 2021-02-24 15:57:25 +02:00
Lauri Ojansivu 4f9b4059a6 Merge pull request #3597 from jrsupplee/search
Global Search Updates
2021-02-24 15:55:46 +02:00
Lauri Ojansivu 9be19bf811 Updated ChangeLog. 2021-02-24 15:54:08 +02:00
Lauri Ojansivu 0a728f805b Added translation: Persian (Iran).
Thanks to translators!
2021-02-24 15:52:11 +02:00
John R. Supplee c7276ee614 Add new status predicates of public and private 2021-02-23 17:56:28 +02:00
John R. Supplee b419e17cac Only show label names on global search for type='board' 2021-02-23 17:49:32 +02:00
Lauri Ojansivu b9405bfb64 Update owasp-zap-scan.yml 2021-02-22 19:07:15 +02:00
Lauri Ojansivu 5d8856a1c7 Update owasp-zap-scan.yml 2021-02-22 19:04:16 +02:00
Lauri Ojansivu 076fd7e83c Create owasp-zap-scan.yml
https://github.com/marketplace/actions/owasp-zap-baseline-scan
2021-02-22 18:58:24 +02:00
Lauri Ojansivu 5073c0e9ad Create owasp-zap-scan.yml
https://github.com/marketplace/actions/owasp-zap-baseline-scan
2021-02-22 18:43:24 +02:00
Lauri Ojansivu d95df7245c Updated translations. 2021-02-22 18:01:46 +02:00
Lauri Ojansivu 41360ceb71 Updated ChangeLog. 2021-02-21 23:20:08 +02:00
Lauri Ojansivu 042594ffca Merge pull request #3584 from n8ores/customFieldsFix
Fix bugs with customFields identified in Issue #3574
2021-02-21 23:16:37 +02:00
John R. Supplee a8a9ee91bf Add help instructions for new has operator 2021-02-21 19:57:35 +02:00
John R. Supplee 726be664c8 Add new has operator for searching 2021-02-21 01:41:58 +02:00
John R. Supplee c02b71e0e1 Add searching of attachment names 2021-02-21 01:39:34 +02:00
John R. Supplee 5b51a36c62 Add searching of checklists 2021-02-20 18:35:44 +02:00
mae 2226ece4b7 added sort feature for viewing of cards 2021-02-19 08:42:09 +08:00
n8ores 950e41e8f7 Fix bugs with customFields identified in Issue #3574
Fixed bug with the reference to the customFieldValue in the cards.js

Activity Insert was not being passed the listId, swimlaneId which was required when building the webhook text string.

Added customField and customFieldValue as default values for the webhook msgs. There is no good reason to exclude these (they will only be included when changing a customField anyway). Updated the docker-compose comment to reflect this change.
2021-02-18 22:52:18 +13:00
Lauri Ojansivu 49df8f4b43 Updated ChangeLog. 2021-02-13 15:56:47 +02:00
Lauri Ojansivu 2e9ad941c0 Fix development script to escape character.
Thanks to xet7 !
2021-02-13 15:54:37 +02:00
Lauri Ojansivu dec21f34e9 v4.96 2021-02-13 15:06:15 +02:00
Lauri Ojansivu c8605b0cdf Updated translations. 2021-02-13 14:47:57 +02:00
Lauri Ojansivu 3d6d191d59 Updated ChangeLog. 2021-02-13 14:34:10 +02:00
Lauri Ojansivu 8f61278b33 Updated ChangeLog. 2021-02-13 02:43:33 +02:00
Lauri Ojansivu 5723c0c96f Merge pull request #3572 from mfilser/master
Lists, show also 0 cards at column description
2021-02-13 02:42:44 +02:00
Martin Filser 2830bdc075 Lists, show also 0 cards at column description 2021-02-13 01:13:10 +01:00
Lauri Ojansivu 37ab621a7e Updated ChangeLog. 2021-02-12 21:58:09 +02:00
Lauri Ojansivu f9f286e896 Merge pull request #3571 from mfilser/master
Checklist drag handle now at the left side (same place as for the checklist items)
2021-02-12 21:56:58 +02:00
Lauri Ojansivu e47545aa91 Updated ChangeLog. 2021-02-12 21:55:11 +02:00
Lauri Ojansivu 799417e0e8 Merge pull request #3570 from meerkampdvv/master
Helm: Made SecretEnv a secret and added default mongodb name as Wekan
2021-02-12 21:54:44 +02:00
Lauri Ojansivu cea5f0a30c Updated translations. 2021-02-12 21:51:43 +02:00
Lauri Ojansivu ce61e80261 Updated ChangeLog. 2021-02-12 21:46:39 +02:00
Lauri Ojansivu ec23124242 Merge pull request #3569 from helioguardabaxo/master
Modern theme: Remove font color when the card has a color
2021-02-12 21:46:10 +02:00
Lauri Ojansivu 678cc56836 Updated ChangeLog. 2021-02-12 21:44:14 +02:00
Lauri Ojansivu adf94b5e21 Merge pull request #3564 from lindhork/currency_decimal_separator
added replacement from comma to dot
2021-02-12 21:43:47 +02:00
Martin Filser d4e40c376a Checklist drag handle now at the left side (same place as for the checklist items)
- most people scroll with their right thumb, so it happens sometimes
  that they move whole checklists by accident.
- this fixes the problem, and also it looks more clean than a drag
  handle in the middle of the screen
2021-02-12 20:42:58 +01:00
Lauri Ojansivu 3cbf678671 Updated ChangeLog. 2021-02-12 21:42:07 +02:00
Lauri Ojansivu c7ec07ed47 Added ChangeLog update script. 2021-02-12 21:40:16 +02:00
Lauri Ojansivu 754d7d099b Updated ChangeLog. 2021-02-12 21:37:42 +02:00
Lauri Ojansivu c4cc3f176e Merge pull request #3563 from mfilser/master
Mobile View, list header is now always at top and only lists/cards view have a scroll area
2021-02-12 21:36:28 +02:00
Jan Meerkamp 79a2921e1d fixed fail when no secretEnv was defined 2021-02-12 18:54:56 +01:00
Jan Meerkamp d64a61bab9 removed not used var 2021-02-12 18:42:05 +01:00
Jan Meerkamp 0ee78865e1 Helm: Made SecretEnv a secret and added default mongodb name as Wekan 2021-02-12 18:34:55 +01:00
helioguardabaxo 2c29b150c5 Modern theme: Remove font color when the card has a color 2021-02-12 13:56:46 -03:00
lindhork 0801a2fbc4 added explanatory comment 2021-02-12 01:25:14 +01:00
lindhork af7ef25c9d added replacement from comma to dot 2021-02-12 01:17:11 +01:00
Martin Filser f852474b56 Mobile View, list header is now always at top and only lists/cards view have a scroll area 2021-02-12 00:34:50 +01:00
Lauri Ojansivu 54cfe5984b Updated ChangeLog. 2021-02-11 19:10:23 +02:00
Lauri Ojansivu 1bc07b1b4a Teams/Organizations: Added more code to Admin Panel for saving and editing. In Progress.
Thanks to xet7 !

Related #802
2021-02-11 19:07:34 +02:00
Lauri Ojansivu b8d52a5aa8 Updated ChangeLog. 2021-02-11 18:13:37 +02:00
Lauri Ojansivu af58b1039e Merge pull request #3561 from bronger/issue-3133
Changed default behaviour for BIGEVENTS that no activity matches it.
2021-02-11 18:11:47 +02:00
Torsten Bronger a124f1dc38 Changed default behaviour for BIGEVENTS that no activity matches it.
Previously, all changes to due dates notified all board members.  Now, you have
to set the environment variable BIGEVENTS_PATTERN explicitly to "due" to
restore this behaviour.  By default, no activity is considered a "big event".
Fixes <https://github.com/wekan/wekan/issues/3133>.
2021-02-11 16:21:36 +01:00
Lauri Ojansivu fa3e6267fd Updated ChangeLog. 2021-02-11 16:49:15 +02:00
Lauri Ojansivu 011f86f368 Updated Node.js to v12.20.2
Thanks to Node.js developers!
2021-02-11 16:46:40 +02:00
Lauri Ojansivu 0f6edc477e Removed package-lock.json. 2021-02-11 16:29:40 +02:00
Lauri Ojansivu bade652c02 Updated translations. 2021-02-11 16:28:02 +02:00
Lauri Ojansivu 03ab067d3a Updated ChangeLog. 2021-02-11 16:22:46 +02:00
Lauri Ojansivu e3a29ae82f Merge pull request #3559 from lindhork/header_padding
added padding
2021-02-11 16:21:51 +02:00
Lauri Ojansivu 3a9ce0f6ce Updated ChangeLog. 2021-02-11 16:19:07 +02:00
Lauri Ojansivu d6d40b35a5 Merge pull request #3557 from lindhork/master
Added possibility to specify hours in single digits in 24 hour format
2021-02-11 16:18:02 +02:00
Lauri Ojansivu 8baecb5911 Updated ChangeLog. 2021-02-11 16:16:38 +02:00
Lauri Ojansivu 3bb8fe9076 Merge pull request #3560 from mfilser/member_avatar_remove_red_line
Minicard, remove red line below member avatar icon
2021-02-11 16:15:20 +02:00
Lauri Ojansivu b93d66ce0b Updated ChangeLog. 2021-02-11 16:00:28 +02:00
Lauri Ojansivu b71fde7ff3 Merge pull request #3556 from pichouk/master
Add /api/boards_count endpoint for statistics
2021-02-11 15:57:35 +02:00
lindhork 5c7b060f19 moved the house icon slightly right 2021-02-11 13:39:51 +01:00
Martin Filser 1f544fff52 Minicard, remove red line below member avatar icon
- fixes comment at #3515
  https://github.com/wekan/wekan/issues/3515#issuecomment-777312174
2021-02-11 12:04:22 +01:00
lindhork 019520a793 added padding 2021-02-11 04:26:56 +01:00
lindhork 29c22efed0 Error message corrected 2021-02-11 03:55:16 +01:00
lindhork 650519683c Added compatibility for single digit hours in 24 hours format 2021-02-11 03:54:12 +01:00
Kyâne bcf5a586c7 Add /api/boards_count endpoint for statistics 2021-02-11 00:49:34 +01:00
Lauri Ojansivu 5d8f5beb2a Updated translations. 2021-02-10 18:09:22 +02:00
Lauri Ojansivu 7e58627eaf Updated ChangeLog. 2021-02-09 20:37:00 +02:00
Lauri Ojansivu 89be0f80b9 Merge pull request #3551 from mfilser/checklistitems-not_always_insert_at_the_end
Checklistitems are now inserted always at the end of the checklist
2021-02-09 20:35:32 +02:00
Martin Filser e8b6b78dfa Checklistitems are now inserted always at the end of the checklist 2021-02-09 16:08:05 +01:00
Lauri Ojansivu d5ea44a760 v4.95 2021-02-08 23:44:03 +02:00
Lauri Ojansivu 0638d43cae Updated translations. 2021-02-08 23:42:41 +02:00
Lauri Ojansivu c5d133aaff Updated ChangeLog. 2021-02-08 23:39:47 +02:00
Lauri Ojansivu 067c2a6fe0 Merge branch 'mfilser-master' 2021-02-08 23:35:59 +02:00
Lauri Ojansivu 9e73a72b8b Merge branch 'master' of https://github.com/mfilser/wekan into mfilser-master 2021-02-08 23:27:39 +02:00
Lauri Ojansivu ae23b7611d Updated ChangeLog. 2021-02-08 23:04:19 +02:00
Lauri Ojansivu e34a284036 Updated release scripts. 2021-02-08 23:00:35 +02:00
Martin Filser 116aae0828 Deleting a linked card blocked the parent board to load #3540 2021-02-08 21:42:16 +01:00
Lauri Ojansivu f33c31aa83 Removed extra unneeded text from ChangeLog. 2021-02-08 22:30:35 +02:00
Lauri Ojansivu c7a742d1de Updated ChangeLog. 2021-02-08 22:21:52 +02:00
Lauri Ojansivu d0df3a2915 Updated release scripts. 2021-02-08 22:16:55 +02:00
Lauri Ojansivu 1c494803b0 Updated dependencies. 2021-02-08 22:10:30 +02:00
Lauri Ojansivu 0bd0a70564 Fix typo. 2021-02-08 21:56:45 +02:00
Lauri Ojansivu 5cd6470358 v4.94 2021-02-08 21:47:37 +02:00
Lauri Ojansivu a7d0576736 Updated translations. 2021-02-08 21:41:57 +02:00
Lauri Ojansivu 76e9e2076e Updated ChangeLog. 2021-02-08 21:38:57 +02:00
Lauri Ojansivu dcec5b5cb0 Update release scripts.
Thanks to xet7 !
2021-02-08 21:37:04 +02:00
Lauri Ojansivu b4352ada27 Updated dependencies.
Thanks to developers of dependencies !
2021-02-08 21:30:17 +02:00
Lauri Ojansivu 76047e5351 Updated ChangeLog. 2021-02-08 21:12:28 +02:00
Lauri Ojansivu 60fedad3fe Fixed lint.
Thanks to xet7 !
2021-02-08 21:11:13 +02:00
Lauri Ojansivu d57eb6a2fc Fixed Board does not load, by disabling Custom Fields sorting.
Thanks to marcungeschikts, olivierlambert and xet7 !

Fixes #3540
2021-02-08 21:08:36 +02:00
Lauri Ojansivu c33d39f5d0 Updated ChangeLog. 2021-02-08 19:48:07 +02:00
Lauri Ojansivu 81aa17f3f0 Merge pull request #3545 from mfilser/settings-show_cards_count_broken_at_mobile_view
Settings, "Show cards count" now works at mobile view too
2021-02-08 19:45:40 +02:00
Martin Filser 8475201db8 Settings, "Show cards count" now shows also 1 card 2021-02-08 18:22:55 +01:00
Martin Filser 40907ef1d8 Settings, "Show cards count" max value now endless
- there could be users who want to enter moren than 99
2021-02-08 18:22:55 +01:00
Martin Filser b79fc53265 Settings, "Show cards count" keyboard input possible 2021-02-08 18:22:55 +01:00
Lauri Ojansivu 2972351e79 Updated ChangeLog. 2021-02-08 19:03:16 +02:00
Lauri Ojansivu c82de08886 Merge pull request #3544 from jrsupplee/issue-3539
Fix bug in adding new users #3539
2021-02-08 19:01:41 +02:00
Lauri Ojansivu 7806945965 Comment out multi arch. 2021-02-08 18:57:16 +02:00
John R. Supplee 9a6a0b0047 Fix bug in adding new users
New `importUsernames` was not being parsed into an array before
calling `setCreateUser()`

Issue #3539
2021-02-08 18:48:59 +02:00
Lauri Ojansivu e0c94e3cbb Updated translations. 2021-02-08 17:27:03 +02:00
Lauri Ojansivu 9f328bdee3 Removed duplicate words from translations. 2021-02-08 14:24:15 +02:00
Lauri Ojansivu 7a96adf957 Removed duplicate word from translations.
Thanks to translators!
2021-02-06 17:02:56 +02:00
Lauri Ojansivu 2111e19d59 v4.93 2021-02-06 15:34:39 +02:00
Lauri Ojansivu d93cf08a27 Updated translations. 2021-02-06 15:27:31 +02:00
Lauri Ojansivu a24b64f7ca Updated ChangeLog. 2021-02-06 15:24:04 +02:00
Lauri Ojansivu 625577f145 Merge pull request #3533 from mfilser/master
Notifications, enable line wrapping #3527
2021-02-06 15:22:25 +02:00
Martin Filser e13fa0d2d1 Notifications, enable line wrapping #3527 2021-02-06 12:46:06 +01:00
Lauri Ojansivu d470281a5e Updated ChangeLog. 2021-02-06 12:54:00 +02:00
Lauri Ojansivu 6021438e2e Merge pull request #3532 from mfilser/master
Red line below the avatar now correctly on FireFox #3515
2021-02-06 12:52:17 +02:00
Lauri Ojansivu 737b425aca Try to fix Snap. 2021-02-06 12:51:31 +02:00
Martin Filser d2a35453ef Red line below the avatar now correctly on FireFox #3515 2021-02-06 11:26:10 +01:00
Lauri Ojansivu 77160a76e8 Update rebuild-wekan.sh 2021-02-06 11:13:32 +02:00
Lauri Ojansivu f012a67182 Updated dependencies. 2021-02-06 11:03:18 +02:00
Lauri Ojansivu 2c5e4fad79 Try to fix Snap: Added Typescript. 2021-02-06 10:52:58 +02:00
Lauri Ojansivu 1486f5f620 Try to fix Snap. 2021-02-06 10:26:34 +02:00
Lauri Ojansivu eb1209cb00 Updated ChangeLog. 2021-02-06 08:02:31 +02:00
Lauri Ojansivu bcdaf77a9c Updated Ubuntu base image in Dockerfile. 2021-02-06 08:00:28 +02:00
Lauri Ojansivu e8e97838ef Updated translations. 2021-02-06 00:49:09 +02:00
Lauri Ojansivu bec3f309bd Updated ChangeLog. 2021-02-06 00:43:41 +02:00
Lauri Ojansivu 39bfbbbe0a Merge pull request #3530 from messagerie-melanie2/master
Add the ability to call get_user operation with username
2021-02-06 00:41:05 +02:00
Lauri Ojansivu 57a98e7a5d Updated ChangeLog. 2021-02-06 00:24:44 +02:00
Lauri Ojansivu ea697f2238 Fixed file permissions. Thanks to xet7 ! Fixes #3524, fixes meteor/meteor#11314 2021-02-06 00:18:07 +02:00
magicbelette fd20a9218f Add the ability to call get_user operation with username 2021-02-05 19:58:24 +01:00
Lauri Ojansivu b47794cbc1 Try to fix Docker. 2021-02-03 18:56:44 +02:00
Lauri Ojansivu c3ce44562e Try to fix Docker builds by deleting package-lock.json , see
https://stackoverflow.com/questions/53732973/npm-err-404-not-found-har-validator5-1-2

Thanks to xet7 !

Related #3524
2021-02-03 16:26:21 +02:00
Lauri Ojansivu 4f7803c384 Try to fix Docker builds.
Thanks to xet7 !

Related #3524
2021-02-03 16:07:01 +02:00
Lauri Ojansivu 6e313d1760 Merge branch 'master' of github.com:wekan/wekan 2021-02-03 15:47:22 +02:00
Lauri Ojansivu 0f7a8a25ad Updated ChangeLog. 2021-02-03 15:47:05 +02:00
Lauri Ojansivu c692b7847b Merge pull request #3526 from jrsupplee/fix-3
Fix bug in `uniqueTitle`
2021-02-03 15:46:53 +02:00
Lauri Ojansivu 207893fee8 Merge pull request #3525 from jrsupplee/pull-3519
Set the language on `TAPi18n` when user selects language
2021-02-03 15:41:59 +02:00
John R. Supplee 9ec3574ff6 Fix bug in uniqueTitle
`uniqueTitle` was returning a numbered title even when not necessary
2021-02-03 14:03:33 +02:00
John R. Supplee b0522836e6 Set the language on TAPi18n when user selects language
When the `TAPi18n` initialization code was removed from an `autorun()`
it no longer is rerun when a user's profile language is changed.
2021-02-03 12:20:29 +02:00
145 changed files with 62013 additions and 58208 deletions

No files matched your search

+1 -1
View File
@@ -10,7 +10,7 @@ ENV DEBIAN_FRONTEND=noninteractive
ENV \
DEBUG=false \
NODE_VERSION=v12.20.1 \
NODE_VERSION=v12.21.0 \
METEOR_RELEASE=1.10.2 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
+1 -1
View File
@@ -81,7 +81,7 @@ parts:
wekan:
source: .
plugin: nodejs
node-engine: 12.20.1
node-engine: 12.21.0
node-packages:
- node-gyp
- node-pre-gyp
+2 -2
View File
@@ -5,7 +5,7 @@ echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correct
echo " You can still use any other locale as your main locale."
#Below script installs newest node 8.x for Debian/Ubuntu/Mint.
#NODE_VERSION=12.18.2
#NODE_VERSION=12.21.0
#X64NODE="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz"
function pause(){
@@ -80,7 +80,7 @@ do
curl -0 -L https://npmjs.org/install.sh | sudo sh
sudo chown -R $(id -u):$(id -g) $HOME/.npm
sudo npm -g install n
sudo n 12.18.2
sudo n 12.21.0
#curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
#sudo apt-get install -y nodejs
elif [[ "$OSTYPE" == "darwin"* ]]; then
+1 -1
View File
@@ -83,7 +83,7 @@ parts:
wekan:
source: .
plugin: nodejs
node-engine: 12.20.1
node-engine: 12.21.0
node-packages:
- node-gyp
- node-pre-gyp
+1 -2
View File
@@ -1,8 +1,7 @@
## Issue
Add these issues to elsewhere:
- Snap: https://github.com/wekan/wekan-snap/issues
- LDAP: https://github.com/wekan/wekan-ldap/issues
- SECURITY ISSUES: https://github.com/wekan/wekan/blob/master/SECURITY.md
- UCS: https://github.com/wekan/univention/issues
Other Wekan issues can be added here.
+12
View File
@@ -0,0 +1,12 @@
on: [push]
jobs:
zap_scan:
runs-on: ubuntu-latest
name: Scan the webapplication
steps:
- name: OWASP ZAP Scan
runs-on: ubuntu-latest
uses: zaproxy/action-baseline@v0.4.0
with:
target: 'https://boards.wekan.team/sign-in'
+1 -1
View File
@@ -52,7 +52,6 @@ mquandalle:autofocus
ongoworks:speakingurl
raix:handlebar-helpers
tap:i18n
http@1.4.2
# UI components
blaze
@@ -145,3 +144,4 @@ rajit:bootstrap3-datepicker-zh-cn
rajit:bootstrap3-datepicker-zh-tw
staringatlights:fast-render
spacebars
jkuester:http
+1 -1
View File
@@ -1 +1 @@
METEOR@2.0
METEOR@2.1
+1
View File
@@ -76,6 +76,7 @@ http@1.4.3
id-map@1.1.0
idmontie:migrations@1.0.3
inter-process-messaging@0.1.1
jkuester:http@2.0.1
jquery@1.11.11
kadira:blaze-layout@2.3.0
kadira:dochead@1.5.0
+1 -1
View File
@@ -3,7 +3,7 @@ sudo: required
env:
TRAVIS_DOCKER_COMPOSE_VERSION: 1.24.0
TRAVIS_NODE_VERSION: 12.20.1
TRAVIS_NODE_VERSION: 12.21.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, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
lang_map = ar_EG:ar-EG, bg_BG:bg, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fa_IR:fa-IR, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
[wekan.application]
file_filter = i18n/<lang>.i18n.json
+186
View File
@@ -1,3 +1,189 @@
# v4.99 2021-02-25 Wekan release
This release fixes the following CRITICAL SECURITY ISSUES:
- [Fixed SMTP password visible to Admin at Admin Panel by using browser inspect
to see behind asterisks](https://github.com/wekan/wekan/commit/71725f1b262b385162b2544f10658a0bc22f6b41).
Thanks to Georg Krause and xet7.
and adds the following updates:
- [Update wekan/releases/up.sh script: Can not build ppc64le version because OpenPower Minicloud
is having emergency maintenance](https://github.com/wekan/wekan/commit/a43736b5c6196c65770d8ae17af927406dce2c43).
Thanks to xet7.
- [Updated to Meteor 2.1](https://github.com/wekan/wekan/commit/f2241ba3de82e393161ee1c456e1a947c6bdb5fc).
Thanks to Meteor developers.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.98 2021-02-24 Wekan release
This release adds the following CRITICAL SECURITY FIXES:
- [Updated Node.js to v12.21.0](https://github.com/wekan/wekan/commit/fde6a6593379277d601408ec83f6f5a4347afef0).
Thanks to Node.js developers.
and adds the following new features:
- [Added sort feature for viewing of cards](https://github.com/wekan/wekan/pull/3586).
Thanks to ednamaeG.
- [Made sort cards feature translatable](https://github.com/wekan/wekan/commit/09a13ef75f478b0fc02ae3cdbfe918367664aa0c).
Thanks to xet7.
and fixes the following bugs:
- [Fix development script to escape character](https://github.com/wekan/wekan/commit/2e9ad941c0b63b384ee215548a3f31b4a635b28b).
Thanks to xet7.
- [Fix bugs with customFields in Webhooks](https://github.com/wekan/wekan/pull/3584).
Thanks to n8ores.
and adds the following improvements:
- [Global Search Updates](https://github.com/wekan/wekan/pull/3597).
Thanks to jrsupplee.
- [Updated GitHub issue template links](https://github.com/wekan/wekan/commit/c23aca78babd51857271134aed9247615b87b895).
Thanks to atlantsecurity and xet7.
- [Admin Panel/People/People/New User: Added Initials](https://github.com/wekan/wekan/commit/3a2deb00399eb213472ef169826bd15ad655e490).
Thanks to xet7.
and adds the following updates:
- [Update release-bundle.sh script: Can not build ppc64le version because OpenPower Minicloud
is having emergency maintenance](https://github.com/wekan/wekan/commit/799ae886c5fedad3bafa18a14f8fbbca7ad2c227).
Thanks to xet7.
- [Update release.sh script: Also build Sandstorm version of Wekan with same
script](https://github.com/wekan/wekan/commit/b105088c2858bc04120551a8a8e5a75f187041e5).
Thanks to xet7.
and adds the following new translations:
- [Added translation: Persian (Iran)](https://github.com/wekan/wekan/commit/0a728f805b336588741ca93f2ecbd1ca31ee53f2).
Thanks to translators.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.97 2021-02-24 Wekan release
Release skipped, because not all required files had new version number updated yet.
# v4.96 2021-02-13 Wekan release
This release adds the following new features:
- [Add /api/boards_count endpoint for statistics](https://github.com/wekan/wekan/pull/3556).
Thanks to pichouk.
- [Added possibility to specify hours in single digits in 24 hour format](https://github.com/wekan/wekan/pull/3557).
Thanks to lindhork.
- [Added replacement from comma to dot](https://github.com/wekan/wekan/pull/3564).
Thanks to lindhork.
and adds the following improvements:
- [Checklistitems are now inserted always at the end of the checklist](https://github.com/wekan/wekan/pull/3551).
Thanks to mfilser.
- [Teams/Organizations: Added more code to Admin Panel for saving and editing. In Progress, does not work yet](https://github.com/wekan/wekan/commit/1bc07b1b4a3e8cd1a177f3f1776ed8e189bc627a).
Thanks to xet7.
- [Mobile View, list header is now always at top and only lists/cards view have a scroll area](https://github.com/wekan/wekan/pull/3563).
Thanks to mfilser.
- [Added ChangeLog update script](https://github.com/wekan/wekan/commit/c7ec07ed4748fe9b00f622af7472fd291cf1a3ce).
Thanks to xet7.
- [Helm: Made SecretEnv a secret and added default mongodb name as Wekan](https://github.com/wekan/wekan/pull/3570).
Thanks to meerkampdvv.
- [Checklist drag handle now at the left side (same place as for the checklist items)](https://github.com/wekan/wekan/pull/3571).
Thanks to mfilser.
- [Lists, show also 0 cards at column description](https://github.com/wekan/wekan/pull/3572).
Thanks to mfilser.
and adds the following updates:
- [Updated Node.js to v12.20.2](https://github.com/wekan/wekan/commit/011f86f368a83c2e70f597c11ec60ec857e0fab0).
Thanks to Node.js developers.
and fixes the following bugs:
- [Minicard, remove red line below member avatar icon](https://github.com/wekan/wekan/pull/3560).
Thanks to mfilser.
- [Added padding](https://github.com/wekan/wekan/pull/3559).
Thanks to lindhork.
- [Changed default behaviour for BIGEVENTS that no activity matches it](https://github.com/wekan/wekan/pull/3561).
Thanks to bronger.
- [Modern theme: Remove font color when the card has a color](https://github.com/wekan/wekan/pull/3569).
Thanks to helioguardabaxo.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.95 2021-02-08 Wekan release
This release adds back the following features:
- [Added back Custom Fields sorting, because it now does not prevent loading boards](https://github.com/wekan/wekan/pull/3547).
Thanks to mfilser.
and adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/commit/1c494803b091d987e26ccb783432434e7fee15a5).
Thanks to xet7.
- [Fix typo](https://github.com/wekan/wekan/commit/0bd0a70564d3dda67706deb1bbfbd1d5a96f811f).
Thanks to xet7.
- Updated release scripts
[Part 1](https://github.com/wekan/wekan/commit/d0df3a2915d08b255d7ab92f9bcac195a1e7f442),
[Part 2](https://github.com/wekan/wekan/commit/e34a2840366351c0e069515ac2210db3911dbc0f).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.94 2021-02-08 Wekan release
This release adds the following new features:
- [Settings, "Show cards count" now works at mobile view too](https://github.com/wekan/wekan/pull/3545).
Thanks to mfilser.
and adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/commit/b4352ada27545fadc425ca7024532aede3cc1a6f).
Thanks to developers of dependencies.
- [Update release scripts](https://github.com/wekan/wekan/commit/dcec5b5cb05ac9e0dfae8f360def169f5f9b6fa2).
Thanks to xet7.
and fixes the following bugs:
- [Fix bug in adding new users](https://github.com/wekan/wekan/pull/3544).
Thanks to jrsupplee.
- [Fixed Board does not load, by disabling Custom Fields sorting](https://github.com/wekan/wekan/commit/d57eb6a2fc73c7b25c957ad42b5f7a06f680e1a1).
Thanks to marcungeschikts, olivierlambert and xet7.
- [Fixed lint](https://github.com/wekan/wekan/commit/60fedad3fe384a2b0652941e57ecaa5fc4b7897a).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# 4.93 2021-02-06 Wekan release
This release adds the following new features:
- [Add the ability to call get_user operation with username](https://github.com/wekan/wekan/pull/3530).
Thanks to magicbelette.
and adds the following updates:
- [Updated Ubuntu base image in Dockerfile](https://github.com/wekan/wekan/commit/bcdaf77a9c675530cfa21d038e8abd7c62aef70d).
Thanks to Ubuntu and xet7.
and fixes the following bugs:
- [Set the language on `TAPi18n` when user selects language](https://github.com/wekan/wekan/pull/3525).
Thanks to jrsupplee.
- [Fix bug in `uniqueTitle`](https://github.com/wekan/wekan/pull/3526).
Thanks to jrsupplee.
- [Fixed file permissions in build scripts](https://github.com/wekan/wekan/commit/ea697f2238842893953dee76bed03ffd5b4a107e).
Thanks to xet7.
- [Red line below the avatar now correctly on FireFox](https://github.com/wekan/wekan/pull/3532).
Thanks to mfilser.
- [Notifications, enable line wrapping](https://github.com/wekan/wekan/pull/3533).
Thanks to mfilser.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.92 2021-02-03 Wekan release
This release adds the following improvements:
+7 -5
View File
@@ -1,4 +1,4 @@
FROM quay.io/wekan/ubuntu:groovy-20201125.2
FROM quay.io/wekan/ubuntu:groovy-20210115
LABEL maintainer="wekan"
# 2020-12-03:
@@ -12,7 +12,7 @@ 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=v12.20.1 \
NODE_VERSION=v12.21.0 \
METEOR_RELEASE=1.10.2 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
@@ -274,11 +274,12 @@ RUN \
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 && \
cp /home/wekan/app/fix-download-unicode/cfs_access-point.txt /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \
#cp /home/wekan/app/fix-download-unicode/cfs_access-point.txt /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \
#rm /home/wekan/app_build/bundle/programs/server/npm/node_modules/meteor/rajit_bootstrap3-datepicker/lib/bootstrap-datepicker/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs && \
chown wekan /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \
#chown wekan /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \
#Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
#https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
#https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c
@@ -291,10 +292,11 @@ RUN \
#find . -name "*phantomjs*" | xargs rm -rf && \
#
cd /home/wekan/app_build/bundle/programs/server/ && \
chmod u+w *.json && \
gosu wekan:wekan npm install && \
#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 && \
rm -rf /home/wekan/app_build/bundle/programs/web.browser.legacy && \
mv /home/wekan/app_build/bundle /build && \
\
# Put back the original tar
+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=v12.20.1 \
NODE_VERSION=v12.21.0 \
WEKAN_VERSION=3.96 \
WEKAN_ARCHITECTURE=arm64
@@ -40,7 +40,7 @@ LABEL maintainer="wekan"
# Set the environment variables (defaults where required)
ENV QEMU_ARCHITECTURE=aarch64 \
NODE_ARCHITECTURE=linux-arm64 \
NODE_VERSION=v12.20.1 \
NODE_VERSION=v12.21.0 \
NODE_ENV=production \
NPM_VERSION=latest \
WITH_API=true \
+1 -1
View File
@@ -52,7 +52,7 @@ 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 13k users using Wekan in their company.
- Wekan has been [translated](https://transifex.com/wekan/wekan) to about 60 languages.
- Wekan has been [translated](https://transifex.com/wekan/wekan) to about 61 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: "v4.92.0"
appVersion: "v4.99.0"
files:
userUploads:
- README.md
@@ -654,7 +654,6 @@ setBoardClear(color1,color2)
/* Card changes */
.minicard
background: #FFF
padding: 15px 15px 10px
box-shadow: 0 3px 8px rgba(0,0,0,.05)
+19
View File
@@ -31,6 +31,9 @@ template(name="boardHeaderBar")
if $eq watchLevel "muted"
i.fa.fa-bell-slash
span {{_ watchLevel}}
a.board-header-btn.js-sort-cards(title="{{_ 'sort-cards'}}")
i.fa.fa-sort
| {{_ 'sort-cards'}} {{sortCardsBy.get}}
else
a.board-header-btn.js-log-in(
@@ -247,3 +250,19 @@ template(name="boardChangeTitlePopup")
template(name="boardCreateRulePopup")
p {{_ 'close-board-pop'}}
button.js-confirm.negate.full(type="submit") {{_ 'archive'}}
template(name="cardsSortPopup")
ul.pop-over-list
li
a.js-sort-due {{_ 'due-date'}}
hr
li
a.js-sort-title {{_ 'title-alphabetically'}}
hr
li
a.js-sort-created-desc {{_ 'created-at-newest-first'}}
hr
li
a.js-sort-created-asc {{_ 'created-at-oldest-first'}}
+51
View File
@@ -2,6 +2,7 @@
const DOWNCLS = 'fa-sort-down';
const UPCLS = 'fa-sort-up';
*/
const sortCardsBy = new ReactiveVar('');
Template.boardMenuPopup.events({
'click .js-rename-board': Popup.open('boardChangeTitle'),
'click .js-custom-fields'() {
@@ -110,6 +111,7 @@ BlazeComponent.extendComponent({
'click .js-open-filter-view'() {
Sidebar.setView('filter');
},
'click .js-sort-cards': Popup.open('cardsSort'),
/*
'click .js-open-sort-view'(evt) {
const target = evt.target;
@@ -368,3 +370,52 @@ BlazeComponent.extendComponent({
},
}).register('listsortPopup');
*/
BlazeComponent.extendComponent({
events() {
return [
{
'click .js-sort-due'() {
const sortBy = {
dueAt: 1,
};
Session.set('sortBy', sortBy);
sortCardsBy.set(TAPi18n.__('due-date'));
Popup.close();
},
'click .js-sort-title'() {
const sortBy = {
title: 1,
};
Session.set('sortBy', sortBy);
sortCardsBy.set(TAPi18n.__('title'));
Popup.close();
},
'click .js-sort-created-asc'() {
const sortBy = {
createdAt: 1,
};
Session.set('sortBy', sortBy);
sortCardsBy.set(TAPi18n.__('date-created-newest-first'));
Popup.close();
},
'click .js-sort-created-desc'() {
const sortBy = {
createdAt: -1,
};
Session.set('sortBy', sortBy);
sortCardsBy.set(TAPi18n.__('date-created-oldest-first'));
Popup.close();
},
'click .js-sort-default'() {
const sortBy = {
sort: 1,
};
Session.set('sortBy', sortBy);
sortCardsBy.set(TAPi18n.__('default'));
Popup.close();
},
},
];
},
}).register('cardsSortPopup');
+2 -1
View File
@@ -121,7 +121,8 @@ CardCustomField.register('cardCustomField');
{
'submit .js-card-customfield-currency'(event) {
event.preventDefault();
const value = Number(this.find('input').value, 10);
// To allow input separated by comma, the comma is replaced by a period.
const value = Number(this.find('input').value.replace(/,/i, '.'), 10);
this.card.setCustomField(this.customFieldId, value);
},
},
+33 -7
View File
@@ -1,3 +1,11 @@
// Helper function to replace HH with H for 24 hours format, because H allows also single-digit hours
function adjustedTimeFormat() {
return moment
.localeData()
.longDateFormat('LT')
.replace(/HH/i, 'H');
}
// Edit received, start, due & end dates
BlazeComponent.extendComponent({
template() {
@@ -59,7 +67,11 @@ BlazeComponent.extendComponent({
},
'keyup .js-time-field'() {
// parse for localized time format in strict mode
const dateMoment = moment(this.find('#time').value, 'LT', true);
const dateMoment = moment(
this.find('#time').value,
adjustedTimeFormat(),
true,
);
if (dateMoment.isValid()) {
this.error.set('');
}
@@ -71,16 +83,30 @@ BlazeComponent.extendComponent({
const time =
evt.target.time.value ||
moment(new Date().setHours(12, 0, 0)).format('LT');
const newTime = moment(time, adjustedTimeFormat(), true);
const newDate = moment(evt.target.date.value, 'L', true);
const dateString = `${evt.target.date.value} ${time}`;
const newDate = moment(dateString, 'L LT', true);
if (newDate.isValid()) {
this._storeDate(newDate.toDate());
Popup.close();
} else {
const newCompleteDate = moment(
dateString,
'L ' + adjustedTimeFormat(),
true,
);
if (!newTime.isValid()) {
this.error.set('invalid-time');
evt.target.time.focus();
}
if (!newDate.isValid()) {
this.error.set('invalid-date');
evt.target.date.focus();
}
if (newCompleteDate.isValid()) {
this._storeDate(newCompleteDate.toDate());
Popup.close();
} else {
if (!this.error) {
this.error.set('invalid');
}
}
},
'click .js-delete-date'(evt) {
evt.preventDefault();
+1 -1
View File
@@ -111,7 +111,7 @@ BlazeComponent.extendComponent({
title,
checklistId: checklist._id,
cardId: checklist.cardId,
sort: checklist.itemCount(),
sort: Utils.calculateIndexData(checklist.lastItem()).base,
});
}
// We keep the form opened, empty it.
+2 -2
View File
@@ -44,8 +44,8 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item
span.fa.checklist-handle
padding-right: 20px
padding-top: 6px
float: right
padding-top: 3px
float: left
.js-confirm-checklist-delete
-1
View File
@@ -90,7 +90,6 @@ template(name="minicard")
.minicard-assignees.js-minicard-assignees
each getAssignees
+userAvatar(userId=this)
hr(class="assigneehr" title="{{_ 'assignee'}}")
if getMembers
.minicard-members.js-minicard-members
+5 -5
View File
@@ -166,17 +166,14 @@
.minicard-assignees
float: right
margin-left: 5px
.assigneehr
border-top: 1px solid red
margin-bottom: 4px
margin-bottom: 4px
.member
float: right
border-radius: 50%
height: 28px
width: @height
margin: 0px 0px 4px 0px
margin-bottom: 4px
.assignee
float: right
@@ -187,6 +184,9 @@
+ .badges
margin-top: 5px
.minicard-assignees
border-bottom: 1px solid red
.minicard-members:empty,
.minicard-assignees:empty
display: none
+2 -1
View File
@@ -180,7 +180,8 @@
border-bottom: 1px solid darken(white, 20%)
.list
display: block
display: contents
flex-basis: auto
width: 100%
border-left: 0px
&:first-child
+4 -1
View File
@@ -168,13 +168,16 @@ BlazeComponent.extendComponent({
cardsWithLimit(swimlaneId) {
const limit = this.cardlimit.get();
const defaultSort = { sort: 1 };
const sortBy = Session.get('sortBy') ? Session.get('sortBy') : defaultSort;
const selector = {
listId: this.currentData()._id,
archived: false,
};
if (swimlaneId) selector.swimlaneId = swimlaneId;
return Cards.find(Filter.mongoSelector(selector), {
sort: ['sort'],
// sort: ['sort'],
sort: sortBy,
limit,
});
},
+1 -1
View File
@@ -82,7 +82,7 @@ BlazeComponent.extendComponent({
showCardsCountForList(count) {
const limit = this.limitToShowCardsCount();
return limit > 0 && count > limit;
return limit >= 0 && count >= limit;
},
events() {
+35
View File
@@ -222,6 +222,7 @@ BlazeComponent.extendComponent({
'operator-created': 'createdAt',
'operator-modified': 'modifiedAt',
'operator-comment': 'comments',
'operator-has': 'has',
};
const predicates = {
@@ -238,12 +239,19 @@ BlazeComponent.extendComponent({
'predicate-archived': 'archived',
'predicate-all': 'all',
'predicate-ended': 'ended',
'predicate-public': 'public',
'predicate-private': 'private',
},
sorts: {
'predicate-due': 'dueAt',
'predicate-created': 'createdAt',
'predicate-modified': 'modifiedAt',
},
has: {
'predicate-description': 'description',
'predicate-checklist': 'checklist',
'predicate-attachment': 'attachment',
},
};
const predicateTranslations = {};
Object.entries(predicates).forEach(([category, catPreds]) => {
@@ -276,6 +284,7 @@ BlazeComponent.extendComponent({
createdAt: null,
modifiedAt: null,
comments: [],
has: [],
};
let text = '';
@@ -296,6 +305,7 @@ BlazeComponent.extendComponent({
} else {
op = m.groups.abbrev.toLowerCase();
}
// eslint-disable-next-line no-prototype-builtins
if (operatorMap.hasOwnProperty(op)) {
let value = m.groups.value;
if (operatorMap[op] === 'labels') {
@@ -353,6 +363,15 @@ BlazeComponent.extendComponent({
} else {
value = predicateTranslations.status[value];
}
} else if (operatorMap[op] === 'has') {
if (!predicateTranslations.has[value]) {
this.parsingErrors.push({
tag: 'operator-has-invalid',
value,
});
} else {
value = predicateTranslations.has[value];
}
}
if (Array.isArray(params[operatorMap[op]])) {
params[operatorMap[op]].push(value);
@@ -511,6 +530,7 @@ BlazeComponent.extendComponent({
operator_created: TAPi18n.__('operator-created'),
operator_modified: TAPi18n.__('operator-modified'),
operator_status: TAPi18n.__('operator-status'),
operator_has: TAPi18n.__('operator-has'),
predicate_overdue: TAPi18n.__('predicate-overdue'),
predicate_archived: TAPi18n.__('predicate-archived'),
predicate_all: TAPi18n.__('predicate-all'),
@@ -519,6 +539,11 @@ BlazeComponent.extendComponent({
predicate_month: TAPi18n.__('predicate-month'),
predicate_quarter: TAPi18n.__('predicate-quarter'),
predicate_year: TAPi18n.__('predicate-year'),
predicate_attachment: TAPi18n.__('predicate-attachment'),
predicate_description: TAPi18n.__('predicate-description'),
predicate_checklist: TAPi18n.__('predicate-checklist'),
predicate_public: TAPi18n.__('predicate-public'),
predicate_private: TAPi18n.__('predicate-private'),
};
text = `# ${TAPi18n.__('globalSearch-instructions-heading')}`;
@@ -574,9 +599,19 @@ BlazeComponent.extendComponent({
'globalSearch-instructions-status-archived',
tags,
)}`;
text += `\n* ${TAPi18n.__(
'globalSearch-instructions-status-public',
tags,
)}`;
text += `\n* ${TAPi18n.__(
'globalSearch-instructions-status-private',
tags,
)}`;
text += `\n* ${TAPi18n.__('globalSearch-instructions-status-all', tags)}`;
text += `\n* ${TAPi18n.__('globalSearch-instructions-status-ended', tags)}`;
text += `\n* ${TAPi18n.__('globalSearch-instructions-operator-has', tags)}`;
text += `\n## ${TAPi18n.__('heading-notes')}`;
text += `\n* ${TAPi18n.__('globalSearch-instructions-notes-1', tags)}`;
text += `\n* ${TAPi18n.__('globalSearch-instructions-notes-2', tags)}`;
+4 -4
View File
@@ -11,7 +11,7 @@ template(name="header")
a(href="{{pathFor 'home'}}")
span.fa.fa-home
ul
ul.header-quick-access-list
if currentList
each currentBoard.lists
li(class="{{#if $.Session.equals 'currentList' _id}}current{{/if}}")
@@ -37,11 +37,11 @@ template(name="header")
img(src="{{currentSetting.customTopLeftCornerLogoImageUrl}}" height="{{#if currentSetting.customTopLeftCornerLogoHeight}}#{currentSetting.customTopLeftCornerLogoHeight}{{else}}27{{/if}}" width="auto" margin="0" padding="0")
unless currentSetting.customTopLeftCornerLogoImageUrl
img(src="{{pathFor '/logo-header.png'}}" alt="")
span
span.allBoards
a(href="{{pathFor 'home'}}")
span.fa.fa-home
| {{_ 'all-boards'}}
ul
ul.header-quick-access-list
//li
// a(href="{{pathFor 'public'}}")
// span.fa.fa-globe
@@ -51,7 +51,7 @@ template(name="header")
a(href="{{pathFor 'board' id=_id slug=slug}}")
= title
else
li.current {{_ 'quick-access-description'}}
li.current.empty {{_ 'quick-access-description'}}
// Next line is used only for spacing at header,
// there is no visible clickable icon.
+9 -2
View File
@@ -102,6 +102,9 @@
z-index: 21
padding: 10px 0px
.allBoards
padding: 0 0 0 10px
#header-user-bar,
#header-new-board-icon,
ul li
@@ -113,7 +116,7 @@
a:hover, a.is-active
color: white
ul
ul.header-quick-access-list
transition: opacity 0.2s
overflow-x: auto
overflow-y: hidden
@@ -135,6 +138,9 @@
&.current
color: darken(white, 5%)
&.current.empty
padding: 12px 10px 12px 10px
&:first-child .fa-home,&:nth-child(3) .fa-globe
margin-right: 5px
@@ -210,7 +216,8 @@
.fa-home
font-size: 26px
margin-top: -2px
margin-right: 20px
margin-right: 10px
margin-left: 10px
#header-new-board-icon
display: none
+19 -2
View File
@@ -79,18 +79,35 @@ Template.userFormsLayout.helpers({
name = 'مَصرى';
} else if (lang.name === 'es-PY') {
name = 'Español de Paraguayo';
} else if (lang.name === 'fa-IR') {
// fa-IR = Persian (Iran)
name = 'فارسی/پارسی (ایران‎)';
} else if (lang.name === 'fr-BE') {
name = 'Français (Belgique)';
} else if (lang.name === 'fr-CA') {
name = 'Français (Canada)';
} else if (lang.name === 'fr-CA') {
name = 'Français (Canada)';
} else if (lang.name === 'ig') {
name = 'Igbo';
} else if (lang.name === 'lv') {
name = 'Latviešu';
} else if (lang.name === 'latviešu valoda') {
name = 'Latviešu';
} else if (lang.name === 'Español') {
name = 'español';
} else if (lang.name === 'Español de Argentina') {
name = 'español de Argentina';
} else if (lang.name === 'Español de Chile') {
name = 'español de Chile';
} else if (lang.name === 'Español de Colombia') {
name = 'español de Colombia';
} else if (lang.name === 'Español de México') {
name = 'español de México';
} else if (lang.name === 'es-PY') {
name = 'español de Paraguayo';
} else if (lang.name === 'Español de Perú') {
name = 'español de Perú';
} else if (lang.name === 'Español de Puerto Rico') {
name = 'español de Puerto Rico';
} else if (lang.name === 'oc') {
name = 'Occitan';
} else if (lang.name === 'st') {
@@ -29,10 +29,7 @@
color: #bbb
.details
.activity
display: flex
a.member
margin: 0px 0px 0px 0px
padding: 0px
+39 -44
View File
@@ -74,7 +74,6 @@ template(name="orgGeneral")
th {{_ 'description'}}
th {{_ 'shortName'}}
th {{_ 'website'}}
th {{_ 'teams'}}
th {{_ 'createdAt'}}
th {{_ 'active'}}
th
@@ -134,25 +133,21 @@ template(name="newUserRow")
template(name="orgRow")
tr
if orgData.loginDisabled
td <s>{{ orgData.displayName }}</s>
td <s>{{ orgData.orgDisplayName }}</s>
else
td {{ orgData.displayName }}
td {{ orgData.orgDisplayName }}
if orgData.loginDisabled
td <s>{{ orgData.orgDesc }}</s>
else
td {{ orgData.desc }}
td {{ orgData.orgDesc }}
if orgData.loginDisabled
td <s>{{ orgData.name }}</s>
td <s>{{ orgData.orgName }}</s>
else
td {{ orgData.name }}
td {{ orgData.orgName }}
if orgData.loginDisabled
td <s>{{ orgData.website }}</s>
td <s>{{ orgData.orgWebsite }}</s>
else
td {{ orgData.website }}
if orgData.loginDisabled
td <s>{{ orgData.teams }}</s>
else
td {{ orgData.teams }}
td {{ orgData.orgWebsite }}
if orgData.loginDisabled
td <s>{{ moment orgData.createdAt 'LLL' }}</s>
else
@@ -172,21 +167,21 @@ template(name="orgRow")
template(name="teamRow")
tr
if teamData.loginDisabled
td <s>{{ teamData.displayName }}</s>
td <s>{{ teamData.teamDisplayName }}</s>
else
td {{ teamData.displayName }}
td {{ teamData.teamDisplayName }}
if teamData.loginDisabled
td <s>{{ teamData.desc }}</s>
td <s>{{ teamData.teamDesc }}</s>
else
td {{ teamData.desc }}
td {{ teamData.teamDesc }}
if teamData.loginDisabled
td <s>{{ teamData.dame }}</s>
td <s>{{ teamData.teamName }}</s>
else
td {{ teamData.name }}
td {{ teamData.teamName }}
if teamData.loginDisabled
td <s>{{ teamData.website }}</s>
td <s>{{ teamData.teamWebsite }}</s>
else
td {{ teamData.website }}
td {{ teamData.teamWebsite }}
if orgData.loginDisabled
td <s>{{ moment teamData.createdAt 'LLL' }}</s>
else
@@ -273,19 +268,19 @@ template(name="editOrgPopup")
form
label.hide.orgId(type="text" value=org._id)
label
| {{_ 'orgDisplayName'}}
| {{_ 'displayName'}}
input.js-orgDisplayName(type="text" value=org.displayName required)
span.error.hide.orgname-taken
| {{_ 'error-orgname-taken'}}
label
| {{_ 'orgDesc'}}
input.js-orgDesc(type="text" value=org.desc required)
| {{_ 'description'}}
input.js-orgDesc(type="text" value=org.orgDesc required)
label
| {{_ 'orgName'}}
input.js-orgName(type="text" value=org.name required)
| {{_ 'shortName'}}
input.js-orgShortName(type="text" value=org.orgShortName required)
label
| {{_ 'orgWebsite'}}
input.js-orgWebsite(type="text" value=org.website required)
| {{_ 'website'}}
input.js-orgWebsite(type="text" value=org.orgWebsite required)
label
| {{_ 'active'}}
select.select-active.js-org-isactive
@@ -300,18 +295,18 @@ template(name="editTeamPopup")
label.hide.teamId(type="text" value=team._id)
label
| {{_ 'displayName'}}
input.js-teamDisplayName(type="text" value=team.displayName required)
input.js-teamDisplayName(type="text" value=team.teamDisplayName required)
span.error.hide.teamname-taken
| {{_ 'error-teamname-taken'}}
label
| {{_ 'description'}}
input.js-orgDesc(type="text" value=org.desc required)
input.js-teamDesc(type="text" value=team.teamDesc required)
label
| {{_ 'name'}}
input.js-orgName(type="text" value=org.name required)
| {{_ 'shortName'}}
input.js-teamShortName(type="text" value=team.teamShortName required)
label
| {{_ 'website'}}
input.js-orgWebsite(type="text" value=org.website required)
input.js-teamWebsite(type="text" value=team.teamWebsite required)
label
| {{_ 'active'}}
select.select-active.js-team-isactive
@@ -337,7 +332,7 @@ template(name="editUserPopup")
input.js-profile-fullname(type="text" value=user.profile.fullname required)
label
| {{_ 'initials'}}
input.js-profile-initials(type="text" value=user.profile.initials)
input.js-profile-initials(type="text" value=user.profile.initials required)
label
| {{_ 'admin'}}
select.select-role.js-profile-isadmin
@@ -384,22 +379,19 @@ template(name="newOrgPopup")
//label.hide.userId(type="text" value=user._id)
label
| {{_ 'displayName'}}
input.js-displayName(type="text" value="" required)
input.js-orgDisplayName(type="text" value="" required)
label
| {{_ 'description'}}
input.js-desc(type="text" value="" required)
input.js-orgDesc(type="text" value="" required)
label
| {{_ 'shortName'}}
input.js-name(type="text" value="")
label
| {{_ 'teams'}}
input.js-teams(type="text" value="")
input.js-orgName(type="text" value="" required)
label
| {{_ 'website'}}
input.js-website(type="text" value="")
input.js-orgWebsite(type="text" value="" required)
label
| {{_ 'active'}}
select.select-active.js-profile-isactive
select.select-active.js-org-isactive
option(value="false" selected="selected") {{_ 'yes'}}
option(value="true") {{_ 'no'}}
hr
@@ -417,13 +409,13 @@ template(name="newTeamPopup")
input.js-teamDesc(type="text" value="" required)
label
| {{_ 'shortName'}}
input.js-teamName(type="text" value="")
input.js-teamName(type="text" value="" required)
label
| {{_ 'website'}}
input.js-teamWebsite(type="text" value="")
input.js-teamWebsite(type="text" value="" required)
label
| {{_ 'active'}}
select.select-active.js-profile-isactive
select.select-active.js-team-isactive
option(value="false" selected="selected") {{_ 'yes'}}
option(value="true") {{_ 'no'}}
hr
@@ -444,6 +436,9 @@ template(name="newUserPopup")
// input.js-profile-username(type="text" value=user.username readonly)
//else
input.js-profile-username(type="text" value="" required)
label
| {{_ 'initials'}}
input.js-profile-initials(type="text" value="" required)
label
| {{_ 'email'}}
span.error.hide.email-taken
+126 -33
View File
@@ -404,6 +404,88 @@ BlazeComponent.extendComponent({
},
}).register('newUserRow');
Template.editOrgPopup.events({
submit(event, templateInstance) {
event.preventDefault();
const org = Orgs.findOne(this.orgId);
const orgDisplayName = templateInstance
.find('.js-orgDisplayName')
.value.trim();
const orgDesc = templateInstance.find('.js-orgDesc').value.trim();
const orgShortName = templateInstance.find('.js-orgShortName').value.trim();
const orgWebsite = templateInstance.find('.js-orgWebsite').value.trim();
const orgIsActive = templateInstance.find('.js-org-isactive').value.trim();
const isChangeOrgDisplayName = orgDisplayName !== org.orgDisplayName;
const isChangeOrgDesc = orgDesc !== org.orgDesc;
const isChangeOrgShortName = orgShortName !== org.orgShortName;
const isChangeOrgWebsite = orgWebsite !== org.orgWebsite;
const isChangeOrgIsActive = orgIsActive !== org.orgIsActive;
if (isChangeOrgDisplayName) {
Meteor.call('setOrgDisplayName', org, orgDisplayName);
}
if (isChangeOrgDesc) {
Meteor.call('setOrgDesc', org, orgDesc);
}
if (isChangeOrgShortName) {
Meteor.call('setOrgShortName', org, orgShortName);
}
if (isChangeOrgIsActive) {
Meteor.call('setOrgIsActive', org, orgIsActive);
}
Popup.close();
},
});
Template.editTeamPopup.events({
submit(event, templateInstance) {
event.preventDefault();
const team = Teams.findOne(this.teamId);
const teamDisplayName = templateInstance
.find('.js-teamDisplayName')
.value.trim();
const teamDesc = templateInstance.find('.js-teamDesc').value.trim();
const teamShortName = templateInstance
.find('.js-teamShortName')
.value.trim();
const teamWebsite = templateInstance.find('.js-teamWebsite').value.trim();
const teamIsActive = templateInstance
.find('.js-team-isactive')
.value.trim();
const isChangeTeamDisplayName = teamDisplayName !== team.teamDisplayName;
const isChangeTeamDesc = teamDesc !== team.teamDesc;
const isChangeTeamShortName = teamShortName !== team.teamShortName;
const isChangeTeamWebsite = teamWebsite !== team.teamWebsite;
const isChangeTeamIsActive = teamIsActive !== team.teamIsActive;
if (isChangeTeamDisplayName) {
Meteor.call('setTeamDisplayName', team, teamDisplayName);
}
if (isChangeTeamDesc) {
Meteor.call('setTeamDesc', team, teamDesc);
}
if (isChangeTeamShortName) {
Meteor.call('setTeamShortName', team, teamShortName);
}
if (isChangeTeamIsActive) {
Meteor.call('setTeamIsActive', team, teamIsActive);
}
Popup.close();
},
});
Template.editUserPopup.events({
submit(event, templateInstance) {
event.preventDefault();
@@ -520,39 +602,48 @@ Template.editUserPopup.events({
Template.newOrgPopup.events({
submit(event, templateInstance) {
event.preventDefault();
const displayName = templateInstance.find('.js-displayName').value.trim();
const desc = templateInstance.find('.js-desc').value.trim();
const name = templateInstance.find('.js-name').value.trim();
const teams = templateInstance.find('.js-teams').value.trim();
const website = templateInstance.find('.js-website').value.trim();
const isActive = templateInstance.find('.js-profile-isactive').value.trim();
const orgDisplayName = templateInstance
.find('.js-orgDisplayName')
.value.trim();
const orgDesc = templateInstance.find('.js-orgDesc').value.trim();
const orgShortName = templateInstance.find('.js-orgShortName').value.trim();
const orgWebsite = templateInstance.find('.js-orgWebsite').value.trim();
const orgIsActive = templateInstance.find('.js-org-isactive').value.trim();
Meteor.call(
'setCreateOrg',
displayName,
desc,
name,
teams,
website,
isActive,
email.toLowerCase(),
function(error) {
const nameMessageElement = templateInstance.$('.name-taken');
if (error) {
const errorElement = error.error;
if (errorElement === 'name-already-taken') {
nameMessageElement.show();
emailMessageElement.hide();
} else if (errorElement === 'email-already-taken') {
usernameMessageElement.hide();
emailMessageElement.show();
}
} else {
usernameMessageElement.hide();
emailMessageElement.hide();
Popup.close();
}
},
orgDisplayName,
orgDesc,
orgShortName,
orgWebsite,
orgIsActive,
);
Popup.close();
},
});
Template.newTeamPopup.events({
submit(event, templateInstance) {
event.preventDefault();
const teamDisplayName = templateInstance
.find('.js-teamDisplayName')
.value.trim();
const teamDesc = templateInstance.find('.js-teamDesc').value.trim();
const teamShortName = templateInstance
.find('.js-teamShortName')
.value.trim();
const teamWebsite = templateInstance.find('.js-teamWebsite').value.trim();
const teamIsActive = templateInstance
.find('.js-team-isactive')
.value.trim();
Meteor.call(
'setCreateTeam',
teamDisplayName,
teamDesc,
teamShortName,
teamWebsite,
teamIsActive,
);
Popup.close();
},
@@ -563,18 +654,20 @@ Template.newUserPopup.events({
event.preventDefault();
const fullname = templateInstance.find('.js-profile-fullname').value.trim();
const username = templateInstance.find('.js-profile-username').value.trim();
const initials = templateInstance.find('.js-profile-initials').value.trim();
const password = templateInstance.find('.js-profile-password').value;
const isAdmin = templateInstance.find('.js-profile-isadmin').value.trim();
const isActive = templateInstance.find('.js-profile-isactive').value.trim();
const email = templateInstance.find('.js-profile-email').value.trim();
const importUsernames = templateInstance
.find('.js-import-usernames')
.value.trim();
const importUsernames = Users.parseImportUsernames(
templateInstance.find('.js-import-usernames').value,
);
Meteor.call(
'setCreateUser',
fullname,
username,
initials,
password,
isAdmin,
isActive,
+1 -1
View File
@@ -97,7 +97,7 @@ template(name='email')
li.smtp-form
.title {{_ 'smtp-password'}}
.form-group
input.wekan-form-control#mail-server-password(type="password", placeholder="{{_ 'password'}}" value="{{currentSetting.mailServer.password}}")
input.wekan-form-control#mail-server-password(type="password", placeholder="{{_ 'password'}}" value="")
li.smtp-form
.title {{_ 'smtp-tls'}}
.form-group
+27 -18
View File
@@ -31,30 +31,39 @@ BlazeComponent.extendComponent({
},
archivedCards() {
return Cards.find({
archived: true,
boardId: Session.get('currentBoard'),
}, {
sort: { archivedAt: -1, modifiedAt: -1 },
});
return Cards.find(
{
archived: true,
boardId: Session.get('currentBoard'),
},
{
sort: { archivedAt: -1, modifiedAt: -1 },
},
);
},
archivedLists() {
return Lists.find({
archived: true,
boardId: Session.get('currentBoard'),
}, {
sort: { archivedAt: -1, modifiedAt: -1 },
});
return Lists.find(
{
archived: true,
boardId: Session.get('currentBoard'),
},
{
sort: { archivedAt: -1, modifiedAt: -1 },
},
);
},
archivedSwimlanes() {
return Swimlanes.find({
archived: true,
boardId: Session.get('currentBoard'),
}, {
sort: { archivedAt: -1, modifiedAt: -1 },
});
return Swimlanes.find(
{
archived: true,
boardId: Session.get('currentBoard'),
},
{
sort: { archivedAt: -1, modifiedAt: -1 },
},
);
},
cardIsInArchivedList() {
-1
View File
@@ -9,7 +9,6 @@ avatar-radius = 50%
float: left
height: 30px
width: @height
margin: 0 4px 4px 0
cursor: pointer
user-select: none
z-index: 1
+1 -1
View File
@@ -143,7 +143,7 @@ template(name="changeSettingsPopup")
label.bold.clear
i.fa.fa-sort-numeric-asc
| {{_ 'show-cards-minimum-count'}}
input#show-cards-count-at.inline-input.left(type="number" value="#{showCardsCountAt}" min="0" max="99" onkeydown="return false")
input#show-cards-count-at.inline-input.left(type="number" value="#{showCardsCountAt}" min="-1")
label.bold.clear
i.fa.fa-calendar
| {{_ 'start-day-of-week'}}
+30 -1
View File
@@ -168,8 +168,24 @@ Template.changeLanguagePopup.helpers({
let name = lang.name;
if (lang.name === 'br') {
name = 'Brezhoneg';
} else if (lang.name === 'ar-EG') {
// ar-EG = Arabic (Egypt), simply Masri (مَصرى, [ˈmɑsˤɾi], Egyptian, Masr refers to Cairo)
name = 'مَصرى';
} else if (lang.name === 'es-PY') {
name = 'Español de Paraguayo';
} else if (lang.name === 'fa-IR') {
// fa-IR = Persian (Iran)
name = 'فارسی/پارسی (ایران‎)';
} else if (lang.name === 'fr-BE') {
name = 'Français (Belgique)';
} else if (lang.name === 'fr-CA') {
name = 'Français (Canada)';
} else if (lang.name === 'ig') {
name = 'Igbo';
} else if (lang.name === 'lv') {
name = 'Latviešu';
} else if (lang.name === 'latviešu valoda') {
name = 'Latviešu';
} else if (lang.name === 'Español') {
name = 'español';
} else if (lang.name === 'Español de Argentina') {
@@ -188,6 +204,8 @@ Template.changeLanguagePopup.helpers({
name = 'español de Puerto Rico';
} else if (lang.name === 'oc') {
name = 'Occitan';
} else if (lang.name === 'st') {
name = 'Sãotomense';
} else if (lang.name === '繁体中文(台湾)') {
name = '繁體中文(台灣)';
}
@@ -213,6 +231,7 @@ Template.changeLanguagePopup.events({
'profile.language': this.tag,
},
});
TAPi18n.setLanguage(this.tag);
event.preventDefault();
},
});
@@ -270,6 +289,13 @@ Template.changeSettingsPopup.helpers({
});
Template.changeSettingsPopup.events({
'keypress/paste #show-cards-count-at'() {
let keyCode = event.keyCode;
let charCode = String.fromCharCode(keyCode);
let regex = new RegExp('[-0-9]');
let ret = regex.test(charCode);
return ret;
},
'click .js-toggle-desktop-drag-handles'() {
currentUser = Meteor.user();
if (currentUser) {
@@ -292,7 +318,7 @@ Template.changeSettingsPopup.events({
},
'click .js-apply-user-settings'(event, templateInstance) {
event.preventDefault();
const minLimit = parseInt(
let minLimit = parseInt(
templateInstance.$('#show-cards-count-at').val(),
10,
);
@@ -301,6 +327,9 @@ Template.changeSettingsPopup.events({
10,
);
const currentUser = Meteor.user();
if (isNaN(minLimit) || minLimit < -1) {
minLimit = -1;
}
if (!isNaN(minLimit)) {
if (currentUser) {
Meteor.call('changeLimitToShowCardsCount', minLimit);
+33 -7
View File
@@ -1,3 +1,11 @@
// Helper function to replace HH with H for 24 hours format, because H allows also single-digit hours
function adjustedTimeFormat() {
return moment
.localeData()
.longDateFormat('LT')
.replace(/HH/i, 'H');
}
DatePicker = BlazeComponent.extendComponent({
template() {
return 'datepicker';
@@ -77,7 +85,11 @@ DatePicker = BlazeComponent.extendComponent({
},
'keyup .js-time-field'() {
// parse for localized time format in strict mode
const dateMoment = moment(this.find('#time').value, 'LT', true);
const dateMoment = moment(
this.find('#time').value,
adjustedTimeFormat(),
true,
);
if (dateMoment.isValid()) {
this.error.set('');
}
@@ -89,16 +101,30 @@ DatePicker = BlazeComponent.extendComponent({
const time =
evt.target.time.value ||
moment(new Date().setHours(12, 0, 0)).format('LT');
const newTime = moment(time, adjustedTimeFormat(), true);
const newDate = moment(evt.target.date.value, 'L', true);
const dateString = `${evt.target.date.value} ${time}`;
const newDate = moment(dateString, 'L LT', true);
if (newDate.isValid()) {
this._storeDate(newDate.toDate());
Popup.close();
} else {
const newCompleteDate = moment(
dateString,
'L ' + adjustedTimeFormat(),
true,
);
if (!newTime.isValid()) {
this.error.set('invalid-time');
evt.target.time.focus();
}
if (!newDate.isValid()) {
this.error.set('invalid-date');
evt.target.date.focus();
}
if (newCompleteDate.isValid()) {
this._storeDate(newCompleteDate.toDate());
Popup.close();
} else {
if (!this.error) {
this.error.set('invalid');
}
}
},
'click .js-delete-date'(evt) {
evt.preventDefault();
+1 -1
View File
@@ -309,7 +309,7 @@ services:
#- TRUSTED_URL=https://intra.example.com
#-----------------------------------------------------------------
# ==== OUTGOING WEBHOOKS ====
# What to send to Outgoing Webhook, or leave out. Example, that includes all that are default: cardId,listId,oldListId,boardId,comment,user,card,commentId .
# What to send to Outgoing Webhook, or leave out. If commented out the default values will be: cardId,listId,oldListId,boardId,comment,user,card,commentId,swimlaneId,customerField,customFieldValue
#- WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,commentId
#-----------------------------------------------------------------
# ==== Debug OIDC OAuth2 etc ====
+1 -1
View File
@@ -1,5 +1,5 @@
name: wekan
version: 1.0.2
version: 1.0.3
apiVersion: v1
description: Open Source kanban
home: https://wekan.github.io/
+1 -1
View File
@@ -81,7 +81,7 @@ else use user-provided URL.
{{- $release := .Release.Name -}}
{{- $replicaSetName := (index .Values "mongodb" "replicaSetName") -}}
{{- $mongodbSvcName := include "wekan.mongodb.svcname" . -}}
mongodb://{{- range $v := until $count }}{{ $release }}-mongodb-{{ $v }}.{{ $mongodbSvcName }}:27017{{ if ne $v (sub $count 1) }},{{- end -}}{{- end -}}?replicaSet={{ $replicaSetName }}
mongodb://{{- range $v := until $count }}{{ $release }}-mongodb-{{ $v }}.{{ $mongodbSvcName }}:27017{{ if ne $v (sub $count 1) }},{{- end -}}{{- end -}}/{{ .Values.dbname }}?replicaSet={{ $replicaSetName }}
{{- else -}}
{{- index .Values "mongodb" "url" -}}
{{- end -}}
+4 -1
View File
@@ -46,7 +46,10 @@ spec:
{{- range $key := .Values.secretEnv }}
{{- if .value }}
- name: {{ .name }}
value: {{ .value | quote }}
valueFrom:
secretKeyRef:
name: {{ template "wekan.fullname" $ }}-secret
key: {{ .name }}
{{- end }}
{{- end }}
livenessProbe:
+11
View File
@@ -0,0 +1,11 @@
{{ if .Values.secretEnv }}
apiVersion: v1
kind: Secret
metadata:
name: {{ template "wekan.fullname" $ }}-secret
type: Opaque
data:
{{- range $key := .Values.secretEnv }}
{{ $key.name }}: {{ $key.value | b64enc }}
{{- end}}
{{ end }}
+4 -3
View File
@@ -21,6 +21,7 @@ image:
##
replicaCount: 1
dbname: wekan
## Specify additional environmental variables for the Deployment
##
@@ -32,9 +33,9 @@ env:
## Deployment. These can e.g. be provided by a Secret and allow
## to store passwords separately
##
secretEnv:
- name: ""
value: ""
secretEnv: {}
# - name: ""
# value: ""
service:
type: NodePort
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+23 -5
View File
@@ -322,6 +322,8 @@
"error-user-notAllowSelf": "You can not invite yourself",
"error-user-notCreated": "This user is not created",
"error-username-taken": "This username is already taken",
"error-orgname-taken": "This organization name is already taken",
"error-teamname-taken": "This team name is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"export-board-json": "Export board to JSON",
@@ -904,6 +906,7 @@
"operator-modified": "modified",
"operator-sort": "sort",
"operator-comment": "comment",
"operator-has": "has",
"predicate-archived": "archived",
"predicate-ended": "ended",
"predicate-all": "all",
@@ -915,10 +918,16 @@
"predicate-due": "due",
"predicate-modified": "modified",
"predicate-created": "created",
"predicate-attachment": "attachment",
"predicate-description": "description",
"predicate-checklist": "checklist",
"predicate-public": "public",
"predicate-private": "private",
"operator-unknown-error": "%s is not an operator",
"operator-number-expected": "operator __operator__ expected a number, got '__value__'",
"operator-sort-invalid": "sort of '%s' is invalid",
"operator-status-invalid": "'%s' is not a valid status",
"operator-has-invalid": "%s is not a valid existence check",
"next-page": "Next Page",
"previous-page": "Previous Page",
"heading-notes": "Notes",
@@ -928,7 +937,7 @@
"globalSearch-instructions-operator-board": "`__operator_board__:title` - cards in boards matching the specified title",
"globalSearch-instructions-operator-list": "`__operator_list__:title` - cards in lists matching the specified title",
"globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:title` - cards in swimlanes matching the specified title",
"globalSearch-instructions-operator-comment": "`__operator_comment__:text` - cards with with a comment containing *text*.",
"globalSearch-instructions-operator-comment": "`__operator_comment__:text` - cards with a comment containing *text*.",
"globalSearch-instructions-operator-label": "`__operator_label__:color` `__operator_label__:name` - cards that have a label matching the given color or name",
"globalSearch-instructions-operator-hash": "`__operator_label_abbrev__label` - shorthand for `__operator_label__:label`",
"globalSearch-instructions-operator-user": "`__operator_user__:username` - cards where the specified user is a *member* or *assignee*",
@@ -936,21 +945,30 @@
"globalSearch-instructions-operator-member": "`__operator_member__:username` - cards where the specified user is a *member*",
"globalSearch-instructions-operator-assignee": "`__operator_assignee__:username` - cards where the specified user is an *assignee*",
"globalSearch-instructions-operator-due": "`__operator_due__:n` - cards which are due *n* days from now. `__operator_due__:__predicate_overdue__ lists all cards past their due date.",
"globalSearch-instructions-operator-created": "`__operator_created__:n` - cards which which were created *n* days ago",
"globalSearch-instructions-operator-modified": "`__operator_modified__:n` - cards which which were modified *n* days ago",
"globalSearch-instructions-operator-created": "`__operator_created__:n` - cards which were created *n* days ago",
"globalSearch-instructions-operator-modified": "`__operator_modified__:n` - cards which were modified *n* days ago",
"globalSearch-instructions-status-archived": "`__operator_status__:__predicate_archived__` - cards that are archived.",
"globalSearch-instructions-status-all": "`__operator_status__:__predicate_all__` - all archived and unarchived cards.",
"globalSearch-instructions-status-ended": "`__operator_status__:__predicate_ended__` - cards with an end date.",
"globalSearch-instructions-status-public": "`__operator_status__:__predicate_public__` - cards only in public boards.",
"globalSearch-instructions-status-private": "`__operator_status__:__predicate_private__` - cards only in private boards.",
"globalSearch-instructions-operator-has": "`__operator_has__:field` - where *field* is one of `__predicate_attachment__`, `__predicate_checklist__` or `__predicate_description__`",
"globalSearch-instructions-notes-1": "Multiple operators may be specified.",
"globalSearch-instructions-notes-2": "Similar operators are *OR*ed together. Cards that match any of the conditions will be returned.\n`__operator_list__:Available __operator_list__:Blocked` would return cards contained in any list named *Blocked* or *Available*.",
"globalSearch-instructions-notes-3": "Differing operators are *AND*ed together. Only cards that match all of the differing operators are returned. `__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.",
"globalSearch-instructions-notes-3-2": "Days can be specified as an integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__`",
"globalSearch-instructions-notes-4": "Text searches are case insensitive.",
"globalSearch-instructions-notes-5": "Currently archived cards are not searched.",
"globalSearch-instructions-notes-5": "By default archived cards are not searched.",
"link-to-search": "Link to this search",
"excel-font": "Arial",
"number": "Number",
"label-colors": "Label Colors",
"label-names": "Label Names",
"archived-at": "archived at"
"archived-at": "archived at",
"sort-cards": "Sort Cards",
"cardsSortPopup-title": "Sort Cards",
"due-date": "Due Date",
"title-alphabetically": "Title (Alphabetically)",
"created-at-newest-first": "Created At (Newest First)",
"created-at-oldest-first": "Created At (Oldest First)"
}
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+973
View File
@@ -0,0 +1,973 @@
{
"accept": "Accept",
"act-activity-notify": "Activity Notification",
"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-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__",
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Actions",
"activities": "Activities",
"activity": "Activity",
"activity-added": "added %s to %s",
"activity-archived": "%s moved to Archive",
"activity-attached": "attached %s to %s",
"activity-created": "created %s",
"activity-customfield-created": "created custom field %s",
"activity-excluded": "excluded %s from %s",
"activity-imported": "imported %s into %s from %s",
"activity-imported-board": "imported %s from %s",
"activity-joined": "joined %s",
"activity-moved": "moved %s from %s to %s",
"activity-on": "on %s",
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
"activity-subtask-added": "added subtask to %s",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-removed": "removed a checklist from %s",
"activity-checklist-completed": "completed checklist %s of %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
"add": "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-uncompleted-card": "uncompleted the checklist %s",
"activity-editComment": "edited comment %s",
"activity-deleteComment": "deleted comment %s",
"activity-receivedDate": "edited received date to %s of %s",
"activity-startDate": "edited start date to %s of %s",
"activity-dueDate": "edited due date to %s of %s",
"activity-endDate": "edited end date to %s of %s",
"add-attachment": "Add Attachment",
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
"add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
"add-label": "Add Label",
"add-list": "Add List",
"add-members": "Add Members",
"added": "Added",
"addMemberPopup-title": "Members",
"admin": "Admin",
"admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "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.",
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive-swimlane": "Move Swimlane to Archive",
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
"archived-items": "Archive",
"archived-boards": "Boards in Archive",
"restore-board": "Restore Board",
"no-archived-boards": "No Boards in Archive.",
"archives": "Archive",
"template": "Template",
"templates": "Templates",
"assign-member": "Assign member",
"attached": "attached",
"attachment": "Attachment",
"attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
"attachmentDeletePopup-title": "Delete Attachment?",
"attachments": "Attachments",
"auto-watch": "Automatically watch boards when they are created",
"avatar-too-big": "The avatar is too large (520KB max)",
"back": "Back",
"board-change-color": "Change color",
"board-nb-stars": "%s stars",
"board-not-found": "Board not found",
"board-private-info": "This board will be <strong>private</strong>.",
"board-public-info": "This board will be <strong>public</strong>.",
"boardChangeColorPopup-title": "Change Board Background",
"boardChangeTitlePopup-title": "Rename Board",
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Boards",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-gantt": "Gantt",
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-comments-title": "This card has %s comment.",
"card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
"card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-due": "Due",
"card-due-on": "Due on",
"card-spent": "Spent Time",
"card-edit-attachments": "Edit attachments",
"card-edit-custom-fields": "Edit custom fields",
"card-edit-labels": "Edit labels",
"card-edit-members": "Edit members",
"card-labels-title": "Change the labels for the card.",
"card-members-title": "Add or remove members of the board from the card.",
"card-start": "Start",
"card-start-on": "Starts on",
"cardAttachmentsPopup-title": "Attach From",
"cardCustomField-datePopup-title": "Change date",
"cardCustomFieldsPopup-title": "Edit custom fields",
"cardStartVotingPopup-title": "Start a vote",
"positiveVoteMembersPopup-title": "Proponents",
"negativeVoteMembersPopup-title": "Opponents",
"card-edit-voting": "Edit voting",
"editVoteEndDatePopup-title": "Change vote end date",
"allowNonBoardMembers": "Allow all logged in users",
"vote-question": "Voting question",
"vote-public": "Show who voted what",
"vote-for-it": "for it",
"vote-against": "against",
"deleteVotePopup-title": "Delete vote?",
"vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
"cardDeletePopup-title": "Delete Card?",
"cardDetailsActionsPopup-title": "Card Actions",
"cardLabelsPopup-title": "Labels",
"cardMembersPopup-title": "Members",
"cardMorePopup-title": "More",
"cardTemplatePopup-title": "Create template",
"cards": "Cards",
"cards-count": "Cards",
"casSignIn": "Sign In with CAS",
"cardType-card": "Card",
"cardType-linkedCard": "Linked Card",
"cardType-linkedBoard": "Linked Board",
"change": "Change",
"change-avatar": "Change Avatar",
"change-password": "Change Password",
"change-permissions": "Change permissions",
"change-settings": "Change Settings",
"changeAvatarPopup-title": "Change Avatar",
"changeLanguagePopup-title": "Change Language",
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
"subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
"clipboard": "Clipboard or drag & drop",
"close": "Close",
"close-board": "Close Board",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"no-comments": "No comments",
"no-comments-desc": "Can not see comments and activities.",
"worker": "Worker",
"worker-desc": "Can only move cards, assign itself to card and comment.",
"computer": "Computer",
"confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"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\"} ]",
"create": "Create",
"createBoardPopup-title": "Create Board",
"chooseBoardSourcePopup-title": "Import board",
"createLabelPopup-title": "Create Label",
"createCustomField": "Create Field",
"createCustomFieldPopup-title": "Create Field",
"current": "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-option": "Currency Code",
"custom-field-date": "Date",
"custom-field-dropdown": "Dropdown List",
"custom-field-dropdown-none": "(none)",
"custom-field-dropdown-options": "List Options",
"custom-field-dropdown-options-placeholder": "Press enter to add more options",
"custom-field-dropdown-unknown": "(unknown)",
"custom-field-number": "Number",
"custom-field-text": "Text",
"custom-fields": "Custom Fields",
"date": "Date",
"decline": "Decline",
"default-avatar": "Default avatar",
"delete": "Delete",
"deleteCustomFieldPopup-title": "Delete Custom Field?",
"deleteLabelPopup-title": "Delete Label?",
"description": "Description",
"disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
"disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
"discard": "Discard",
"done": "Done",
"download": "Download",
"edit": "Edit",
"edit-avatar": "Change Avatar",
"edit-profile": "Edit Profile",
"edit-wip-limit": "Edit WIP Limit",
"soft-wip-limit": "Soft WIP Limit",
"editCardStartDatePopup-title": "Change start date",
"editCardDueDatePopup-title": "Change due date",
"editCustomFieldPopup-title": "Edit Field",
"editCardSpentTimePopup-title": "Change spent time",
"editLabelPopup-title": "Change Label",
"editNotificationPopup-title": "Edit Notification",
"editProfilePopup-title": "Edit Profile",
"email": "Email",
"email-enrollAccount-subject": "An account created for you on __siteName__",
"email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
"email-fail": "Sending email failed",
"email-fail-text": "Error trying to send email",
"email-invalid": "Invalid email",
"email-invite": "Invite via Email",
"email-invite-subject": "__inviter__ sent you an invitation",
"email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
"email-resetPassword-subject": "Reset your password on __siteName__",
"email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
"email-sent": "Email sent",
"email-verifyEmail-subject": "Verify your email address on __siteName__",
"email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
"enable-wip-limit": "Enable WIP Limit",
"error-board-doesNotExist": "This board does not exist",
"error-board-notAdmin": "You need to be admin of this board to do that",
"error-board-notAMember": "You need to be a member of this board to do that",
"error-json-malformed": "Your text is not valid JSON",
"error-json-schema": "Your JSON data does not include the proper information in the correct format",
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format",
"error-list-doesNotExist": "This list does not exist",
"error-user-doesNotExist": "This user does not exist",
"error-user-notAllowSelf": "You can not invite yourself",
"error-user-notCreated": "This user is not created",
"error-username-taken": "This username is already taken",
"error-orgname-taken": "This organization name is already taken",
"error-teamname-taken": "This team name is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"export-board-json": "Export board to JSON",
"export-board-csv": "Export board to CSV",
"export-board-tsv": "Export board to TSV",
"export-board-excel": "Export board to Excel",
"user-can-not-export-excel": "User can not export Excel",
"export-board-html": "Export board to HTML",
"exportBoardPopup-title": "Export board",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-labels-label": "Filter by label",
"filter-no-label": "No label",
"filter-member-label": "Filter by member",
"filter-no-member": "No member",
"filter-assignee-label": "Filter by assignee",
"filter-no-assignee": "No assignee",
"filter-custom-fields-label": "Filter by Custom Fields",
"filter-no-custom-fields": "No Custom Fields",
"filter-show-archive": "Show archived lists",
"filter-hide-empty": "Hide empty lists",
"filter-on": "Filter is on",
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
"filter-to-selection": "Filter to selection",
"other-filters-label": "Other Filters",
"advanced-filter-label": "Advanced Filter",
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
"fullname": "Full Name",
"header-logo-title": "Go back to your boards page.",
"hide-system-messages": "Hide system messages",
"headerBarCreateBoardPopup-title": "Create Board",
"home": "Home",
"import": "Import",
"impersonate-user": "Impersonate user",
"link": "Link",
"import-board": "import board",
"import-board-c": "Import board",
"import-board-title-trello": "Import board from Trello",
"import-board-title-wekan": "Import board from previous export",
"import-board-title-csv": "Import board from CSV/TSV",
"from-trello": "From Trello",
"from-wekan": "From previous export",
"from-csv": "From CSV/TSV",
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
"import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
"import-json-placeholder": "Paste your valid JSON data here",
"import-csv-placeholder": "Paste your valid CSV/TSV data here",
"import-map-members": "Map members",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-members-map-note": "Note: Unmapped members will be assigned to the current user.",
"import-show-user-mapping": "Review members mapping",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"info": "Version",
"initials": "Initials",
"invalid-date": "Invalid date",
"invalid-time": "Invalid time",
"invalid-user": "Invalid user",
"joined": "joined",
"just-invited": "You are just invited to this board",
"keyboard-shortcuts": "Keyboard shortcuts",
"label-create": "Create Label",
"label-default": "%s label (default)",
"label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
"labels": "Labels",
"language": "Language",
"last-admin-desc": "You can’t change roles because there must be at least one admin.",
"leave-board": "Leave Board",
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
"leaveBoardPopup-title": "Leave Board ?",
"link-card": "Link to this card",
"list-archive-cards": "Move all cards in this list to Archive",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"settingsUserPopup-title": "User Settings",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
"listMorePopup-title": "More",
"link-list": "Link to this list",
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
"lists": "Lists",
"swimlanes": "Swimlanes",
"log-out": "Log Out",
"log-in": "Log In",
"loginPopup-title": "Log In",
"memberMenuPopup-title": "Member Settings",
"members": "Members",
"menu": "Menu",
"move-selection": "Move selection",
"moveCardPopup-title": "Move Card",
"moveCardToBottom-title": "Move to Bottom",
"moveCardToTop-title": "Move to Top",
"moveSelectionPopup-title": "Move selection",
"multi-selection": "Multi-Selection",
"multi-selection-label": "Set label for selection",
"multi-selection-member": "Set member for selection",
"multi-selection-on": "Multi-Selection is on",
"muted": "Muted",
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "My Boards",
"name": "Name",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-results": "No results",
"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-watch": "Receive updates to any boards, lists, or cards you’re watching",
"optional": "optional",
"or": "or",
"page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
"page-not-found": "Page not found.",
"password": "Password",
"paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
"participating": "Participating",
"preview": "Preview",
"previewAttachedImagePopup-title": "Preview",
"previewClipboardImagePopup-title": "Preview",
"private": "Private",
"private-desc": "This board is private. Only people added to the board can view and edit it.",
"profile": "Profile",
"public": "Public",
"public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
"quick-access-description": "Star a board to add a shortcut in this bar.",
"remove-cover": "Remove Cover",
"remove-from-board": "Remove from Board",
"remove-label": "Remove Label",
"listDeletePopup-title": "Delete List ?",
"remove-member": "Remove Member",
"remove-member-from-card": "Remove from Card",
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
"removeMemberPopup-title": "Remove Member?",
"rename": "Rename",
"rename-board": "Rename Board",
"restore": "Restore",
"save": "Save",
"search": "Search",
"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": "Select Color",
"select-board": "Select Board",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
"setWipLimitPopup-title": "Set WIP Limit",
"shortcut-assign-self": "Assign yourself to current card",
"shortcut-autocomplete-emoji": "Autocomplete emoji",
"shortcut-autocomplete-members": "Autocomplete members",
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
"shortcut-toggle-sidebar": "Toggle Board Sidebar",
"show-cards-minimum-count": "Show cards count if list contains more than",
"sidebar-open": "Open Sidebar",
"sidebar-close": "Close Sidebar",
"signupPopup-title": "Create an Account",
"star-board-title": "Click to star this board. It will show up at top of your boards list.",
"starred-boards": "Starred Boards",
"starred-boards-description": "Starred boards show up at the top of your boards list.",
"subscribe": "Subscribe",
"team": "Team",
"this-board": "this board",
"this-card": "this card",
"spent-time-hours": "Spent time (hours)",
"overtime-hours": "Overtime (hours)",
"overtime": "Overtime",
"has-overtime-cards": "Has overtime cards",
"has-spenttime-cards": "Has spent time cards",
"time": "Time",
"title": "Title",
"tracking": "Tracking",
"tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
"type": "Type",
"unassign-member": "Unassign member",
"unsaved-description": "You have an unsaved description.",
"unwatch": "Unwatch",
"upload": "Upload",
"upload-avatar": "Upload an avatar",
"uploaded-avatar": "Uploaded an avatar",
"custom-top-left-corner-logo-image-url": "Custom Top Left Corner Logo Image URL",
"custom-top-left-corner-logo-link-url": "Custom Top Left Corner Logo Link URL",
"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",
"text-below-custom-login-logo": "Text below Custom Login Logo",
"username": "Username",
"import-usernames": "Import Usernames",
"view-it": "View it",
"warn-list-archived": "warning: this card is in an list at Archive",
"watch": "Watch",
"watching": "Watching",
"watching-info": "You will be notified of any change in this board",
"welcome-board": "Welcome Board",
"welcome-swimlane": "Milestone 1",
"welcome-list1": "Basics",
"welcome-list2": "Advanced",
"card-templates-swimlane": "Card Templates",
"list-templates-swimlane": "List Templates",
"board-templates-swimlane": "Board Templates",
"what-to-do": "What do you want to do?",
"wipLimitErrorPopup-title": "Invalid WIP Limit",
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
"wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
"admin-panel": "Admin Panel",
"settings": "Settings",
"people": "People",
"registration": "Registration",
"disable-self-registration": "Disable Self-Registration",
"invite": "Invite",
"invite-people": "Invite People",
"to-boards": "To board(s)",
"email-addresses": "Email Addresses",
"smtp-host-description": "The address of the SMTP server that handles your emails.",
"smtp-port-description": "The port your SMTP server uses for outgoing emails.",
"smtp-tls-description": "Enable TLS support for SMTP server",
"smtp-host": "SMTP Host",
"smtp-port": "SMTP Port",
"smtp-username": "Username",
"smtp-password": "Password",
"smtp-tls": "TLS support",
"send-from": "From",
"send-smtp-test": "Send a test email to yourself",
"invitation-code": "Invitation Code",
"email-invite-register-subject": "__inviter__ sent you an invitation",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email",
"email-smtp-test-text": "You have successfully sent an email",
"error-invitation-code-not-exist": "Invitation code doesn't exist",
"error-notAuthorized": "You are not authorized to view this page.",
"webhook-title": "Webhook Name",
"webhook-token": "Token (Optional for Authentication)",
"outgoing-webhooks": "Outgoing Webhooks",
"bidirectional-webhooks": "Two-Way Webhooks",
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
"boardCardTitlePopup-title": "Card Title Filter",
"disable-webhook": "Disable This Webhook",
"global-webhook": "Global Webhooks",
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(Unknown)",
"Node_version": "Node version",
"Meteor_version": "Meteor version",
"MongoDB_version": "MongoDB version",
"MongoDB_storage_engine": "MongoDB storage engine",
"MongoDB_Oplog_enabled": "MongoDB Oplog enabled",
"OS_Arch": "OS Arch",
"OS_Cpus": "OS CPU Count",
"OS_Freemem": "OS Free Memory",
"OS_Loadavg": "OS Load Average",
"OS_Platform": "OS Platform",
"OS_Release": "OS Release",
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",
"accounts": "Accounts",
"accounts-allowEmailChange": "Allow Email Change",
"accounts-allowUserNameChange": "Allow Username Change",
"createdAt": "Created at",
"modifiedAt": "Modified at",
"verified": "Verified",
"active": "Active",
"card-received": "Received",
"card-received-on": "Received on",
"card-end": "End",
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Card Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"boardCardSettingsPopup-title": "Card Settings",
"deposit-subtasks-board": "Deposit subtasks to this board:",
"deposit-subtasks-list": "Landing list for subtasks deposited here:",
"show-parent-in-minicard": "Show parent in minicard:",
"prefix-with-full-path": "Prefix with full path",
"prefix-with-parent": "Prefix with parent",
"subtext-with-full-path": "Subtext with full path",
"subtext-with-parent": "Subtext with parent",
"change-card-parent": "Change card's parent",
"parent-card": "Parent card",
"source-board": "Source board",
"no-parent": "Don't show parent",
"activity-added-label": "added label '%s' to %s",
"activity-removed-label": "removed label '%s' from %s",
"activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
"r-board-rules": "Board rules",
"r-add-rule": "Add rule",
"r-view-rule": "View rule",
"r-delete-rule": "Delete rule",
"r-new-rule-name": "New rule title",
"r-no-rules": "No rules",
"r-trigger": "Trigger",
"r-action": "Action",
"r-when-a-card": "When a card",
"r-is": "is",
"r-is-moved": "is moved",
"r-added-to": "Added to",
"r-removed-from": "Removed from",
"r-the-board": "the board",
"r-list": "list",
"list": "List",
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-a-card": "a card",
"r-when-a-label-is": "When a label is",
"r-when-the-label": "When the label",
"r-list-name": "list name",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "name",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "When a checklist is",
"r-when-the-checklist": "When the checklist",
"r-completed": "Completed",
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "When a checklist item is",
"r-when-the-item": "When the checklist item",
"r-checked": "Checked",
"r-unchecked": "Unchecked",
"r-move-card-to": "Move card to",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-archive": "Move to Archive",
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-add": "Add",
"r-remove": "Remove",
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
"r-items-check": "items of checklist",
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-of-checklist": "of checklist",
"r-send-email": "Send an email",
"r-to": "to",
"r-of": "of",
"r-subject": "subject",
"r-rule-details": "Rule details",
"r-d-move-to-top-gen": "Move card to top of its list",
"r-d-move-to-top-spec": "Move card to top of list",
"r-d-move-to-bottom-gen": "Move card to bottom of its list",
"r-d-move-to-bottom-spec": "Move card to bottom of list",
"r-d-send-email": "Send email",
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-add-label": "Add label",
"r-d-remove-label": "Remove label",
"r-create-card": "Create new card",
"r-in-list": "in list",
"r-in-swimlane": "in swimlane",
"r-d-add-member": "Add member",
"r-d-remove-member": "Remove member",
"r-d-remove-all-member": "Remove all member",
"r-d-check-all": "Check all items of a list",
"r-d-uncheck-all": "Uncheck all items of a list",
"r-d-check-one": "Check item",
"r-d-uncheck-one": "Uncheck item",
"r-d-check-of-list": "of checklist",
"r-d-add-checklist": "Add checklist",
"r-d-remove-checklist": "Remove checklist",
"r-by": "by",
"r-add-checklist": "Add checklist",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-board-note": "Note: leave a field empty to match every possible value.",
"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-datefield": "date field",
"r-df-start-at": "start",
"r-df-due-at": "due",
"r-df-end-at": "end",
"r-df-received-at": "received",
"r-to-current-datetime": "to current date/time",
"r-remove-value-from": "Remove value from",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentication method",
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board",
"org-number": "The number of organizations is:",
"team-number": "The number of teams is:",
"people-number": "The number of people is:",
"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",
"loading": "Loading, please wait.",
"previous_as": "last time was",
"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__)",
"act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)",
"a-dueAt": "modified due time to be",
"a-endAt": "modified ending time to be",
"a-startAt": "modified starting time to be",
"a-receivedAt": "modified received time to be",
"almostdue": "current due time %s is approaching",
"pastdue": "current due time %s is past",
"duenow": "current due time %s is today",
"act-newDue": "__list__/__card__ has 1st due reminder [__board__]",
"act-withDue": "__list__/__card__ due reminders [__board__]",
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now",
"act-atUserComment": "You were mentioned in [__board__] __list__/__card__",
"delete-user-confirm-popup": "Are you sure you want to delete this account? There is no undo.",
"accounts-allowUserDelete": "Allow users to self delete their account",
"hide-minicard-label-text": "Hide minicard label text",
"show-desktop-drag-handles": "Show desktop drag handles",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee",
"addmore-detail": "Add a more detailed description",
"show-on-card": "Show on Card",
"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",
"notifications": "Notifications",
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename",
"start-day-of-week": "Set day of the week start",
"monday": "Monday",
"tuesday": "Tuesday",
"wednesday": "Wednesday",
"thursday": "Thursday",
"friday": "Friday",
"saturday": "Saturday",
"sunday": "Sunday",
"status": "Status",
"swimlane": "Swimlane",
"owner": "Owner",
"last-modified-at": "Last modified at",
"last-activity": "Last activity",
"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",
"hide-checked-items": "Hide checked items",
"task": "Task",
"create-task": "Create Task",
"ok": "OK",
"organizations": "Organizations",
"teams": "Teams",
"displayName": "Display Name",
"shortName": "Short Name",
"website": "Website",
"person": "Person",
"my-cards": "My Cards",
"card": "Card",
"board": "Board",
"context-separator": "/",
"myCardsSortChange-title": "My Cards Sort",
"myCardsSortChangePopup-title": "My Cards Sort",
"myCardsSortChange-choice-board": "By Board",
"myCardsSortChange-choice-dueat": "By Due Date",
"dueCards-title": "Due Cards",
"dueCardsViewChange-title": "Due Cards View",
"dueCardsViewChangePopup-title": "Due Cards View",
"dueCardsViewChange-choice-me": "Me",
"dueCardsViewChange-choice-all": "All Users",
"dueCardsViewChange-choice-all-description": "Shows all incomplete cards with a *Due* date from boards for which the user has permission.",
"broken-cards": "Broken Cards",
"board-title-not-found": "Board '%s' not found.",
"swimlane-title-not-found": "Swimlane '%s' not found.",
"list-title-not-found": "List '%s' not found.",
"label-not-found": "Label '%s' not found.",
"label-color-not-found": "Label color %s not found.",
"user-username-not-found": "Username '%s' not found.",
"comment-not-found": "Card with comment containing text '%s' not found.",
"globalSearch-title": "Search All Boards",
"no-cards-found": "No Cards Found",
"one-card-found": "One Card Found",
"n-cards-found": "%s Cards Found",
"n-n-of-n-cards-found": "__start__-__end__ of __total__ Cards Found",
"operator-board": "board",
"operator-board-abbrev": "b",
"operator-swimlane": "swimlane",
"operator-swimlane-abbrev": "s",
"operator-list": "list",
"operator-list-abbrev": "l",
"operator-label": "label",
"operator-label-abbrev": "#",
"operator-user": "user",
"operator-user-abbrev": "@",
"operator-member": "member",
"operator-member-abbrev": "m",
"operator-assignee": "assignee",
"operator-assignee-abbrev": "a",
"operator-status": "status",
"operator-due": "due",
"operator-created": "created",
"operator-modified": "modified",
"operator-sort": "sort",
"operator-comment": "comment",
"operator-has": "has",
"predicate-archived": "archived",
"predicate-ended": "ended",
"predicate-all": "all",
"predicate-overdue": "overdue",
"predicate-week": "week",
"predicate-month": "month",
"predicate-quarter": "quarter",
"predicate-year": "year",
"predicate-due": "due",
"predicate-modified": "modified",
"predicate-created": "created",
"predicate-attachment": "attachment",
"predicate-description": "description",
"predicate-checklist": "checklist",
"predicate-public": "public",
"predicate-private": "private",
"operator-unknown-error": "%s is not an operator",
"operator-number-expected": "operator __operator__ expected a number, got '__value__'",
"operator-sort-invalid": "sort of '%s' is invalid",
"operator-status-invalid": "'%s' is not a valid status",
"operator-has-invalid": "%s is not a valid existence check",
"next-page": "Next Page",
"previous-page": "Previous Page",
"heading-notes": "Notes",
"globalSearch-instructions-heading": "Search Instructions",
"globalSearch-instructions-description": "Searches can include operators to refine the search. Operators are specified by writing the operator name and value separated by a colon. For example, an operator specification of `list:Blocked` would limit the search to cards that are contained in a list named *Blocked*. If the value contains spaces or special characters it must be enclosed in quotation marks (e.g. `__operator_list__:\"To Review\"`).",
"globalSearch-instructions-operators": "Available operators:",
"globalSearch-instructions-operator-board": "`__operator_board__:title` - cards in boards matching the specified title",
"globalSearch-instructions-operator-list": "`__operator_list__:title` - cards in lists matching the specified title",
"globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:title` - cards in swimlanes matching the specified title",
"globalSearch-instructions-operator-comment": "`__operator_comment__:text` - cards with a comment containing *text*.",
"globalSearch-instructions-operator-label": "`__operator_label__:color` `__operator_label__:name` - cards that have a label matching the given color or name",
"globalSearch-instructions-operator-hash": "`__operator_label_abbrev__label` - shorthand for `__operator_label__:label`",
"globalSearch-instructions-operator-user": "`__operator_user__:username` - cards where the specified user is a *member* or *assignee*",
"globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - shorthand for `user:username`",
"globalSearch-instructions-operator-member": "`__operator_member__:username` - cards where the specified user is a *member*",
"globalSearch-instructions-operator-assignee": "`__operator_assignee__:username` - cards where the specified user is an *assignee*",
"globalSearch-instructions-operator-due": "`__operator_due__:n` - cards which are due *n* days from now. `__operator_due__:__predicate_overdue__ lists all cards past their due date.",
"globalSearch-instructions-operator-created": "`__operator_created__:n` - cards which were created *n* days ago",
"globalSearch-instructions-operator-modified": "`__operator_modified__:n` - cards which were modified *n* days ago",
"globalSearch-instructions-status-archived": "`__operator_status__:__predicate_archived__` - cards that are archived.",
"globalSearch-instructions-status-all": "`__operator_status__:__predicate_all__` - all archived and unarchived cards.",
"globalSearch-instructions-status-ended": "`__operator_status__:__predicate_ended__` - cards with an end date.",
"globalSearch-instructions-status-public": "`__operator_status__:__predicate_public__` - cards only in public boards.",
"globalSearch-instructions-status-private": "`__operator_status__:__predicate_private__` - cards only in private boards.",
"globalSearch-instructions-operator-has": "`__operator_has__:field` - where *field* is one of `__predicate_attachment__`, `__predicate_checklist__` or `__predicate_description__`",
"globalSearch-instructions-notes-1": "Multiple operators may be specified.",
"globalSearch-instructions-notes-2": "Similar operators are *OR*ed together. Cards that match any of the conditions will be returned.\n`__operator_list__:Available __operator_list__:Blocked` would return cards contained in any list named *Blocked* or *Available*.",
"globalSearch-instructions-notes-3": "Differing operators are *AND*ed together. Only cards that match all of the differing operators are returned. `__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.",
"globalSearch-instructions-notes-3-2": "Days can be specified as an integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__`",
"globalSearch-instructions-notes-4": "Text searches are case insensitive.",
"globalSearch-instructions-notes-5": "By default archived cards are not searched.",
"link-to-search": "Link to this search",
"excel-font": "Arial",
"number": "Number",
"label-colors": "Label Colors",
"label-names": "Label Names",
"archived-at": "archived at",
"sort-cards": "Sort Cards",
"cardsSortPopup-title": "Sort Cards",
"due-date": "Due Date",
"title-alphabetically": "Title (Alphabetically)",
"created-at-newest-first": "Created At (Newest First)",
"created-at-oldest-first": "Created At (Oldest First)"
}
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
+972 -953
View File
File diff suppressed because it is too large. Load diff
Loaded 100 of 145 files, more files were not shown because too many files have changed in this diff. Show more