Compare commits

...
285 Commits
Author SHA1 Message Date
Lauri Ojansivu c30bc77eea v4.52 2020-11-12 01:10:38 +02:00
Lauri Ojansivu f74bac4f6b Update ChangeLog. 2020-11-12 00:54:27 +02:00
Lauri Ojansivu f54036225d Merge pull request #3346 from jghaanstra/master
Some more small improvements to Modern Dark theme
2020-11-12 00:52:47 +02:00
jghaanstra f1b680119f Some more small improvements to Modern Dark theme 2020-11-11 23:47:11 +01:00
Lauri Ojansivu 9ffdb83004 v4.51 2020-11-11 14:34:58 +02:00
Lauri Ojansivu 7080a0ce7d Merge branch 'master' of github.com:wekan/wekan 2020-11-11 13:44:20 +02:00
Lauri Ojansivu de4f1aa8c4 Update ChangeLog. 2020-11-11 13:44:04 +02:00
Lauri Ojansivu fa6182b979 Merge pull request #3344 from jghaanstra/master
Improvements Modern Dark Theme
2020-11-11 13:42:49 +02:00
Lauri Ojansivu a457e337ac Update ChangeLog. 2020-11-11 13:41:54 +02:00
Lauri Ojansivu ba2c280d56 Merge pull request #3341 from mfilser/drag_handle_checklist
Drag handles for checklist #3240
2020-11-11 13:39:18 +02:00
Lauri Ojansivu c8ed4947e1 Update ChangeLog. 2020-11-11 13:38:30 +02:00
Lauri Ojansivu 5b700a30d9 Merge branch 'brian-j-master' 2020-11-11 13:36:37 +02:00
Lauri Ojansivu d62f9a716e Merge branch 'master' of https://github.com/brian-j/wekan into brian-j-master 2020-11-11 13:32:29 +02:00
Lauri Ojansivu 949f22acf0 Update ChangeLog. 2020-11-11 13:31:08 +02:00
Lauri Ojansivu 358c411255 Merge pull request #3340 from mfilser/admin_modify_comments
board admin can edit and delete comments as well #3201
2020-11-11 13:27:50 +02:00
jghaanstra cfec612704 Improvements Modern Dark Theme 2020-11-11 12:19:36 +01:00
brian-j 1741808e53 Replace tabs with spaces 2020-11-10 22:01:04 -03:00
Martin Filser fd41e8ba45 Drag handles for checklist #3240 2020-11-11 00:13:26 +01:00
Martin Filser 01285ba10d board admin can edit and delete comments as well #3201 2020-11-10 23:36:30 +01:00
brian-j 0180196d7e Alter call to sanitizeXss
Addressing feature: Custom URL Schemes autolinked #3218

Create a custom SafeAttrValue function which can allow non-standard protocols such as thunderlink: cbthunderlink: and aodroplink: to operate correctly without getting the value stripped away. Any other protocols and code remain to be processed by the default safeAttrValue routine.
2020-11-10 18:03:17 -03:00
Lauri Ojansivu 167d9d34eb v4.50 2020-11-10 13:57:27 +02:00
Lauri Ojansivu ab288f1593 Update translations. 2020-11-10 08:04:11 +02:00
Lauri Ojansivu 5813ad95cf Update ChangeLog. 2020-11-10 07:34:09 +02:00
Lauri Ojansivu 6801c960b1 Fix typo. 2020-11-10 07:23:59 +02:00
Lauri Ojansivu 76d1148a98 Merge pull request #3335 from helioguardabaxo/master
Add 'Modern Dark' theme
2020-11-10 07:22:46 +02:00
Lauri Ojansivu f63ed78f5b Update ChangeLog. 2020-11-10 07:20:21 +02:00
Lauri Ojansivu 0ef248574c Fix edit description to require only one click.
Thanks to uusijani and xet7 !

Fixes #3338
2020-11-10 07:16:14 +02:00
helioguardabaxo 415fac8a25 Add 'Modern Dark' theme 2020-11-08 16:45:15 -03:00
Lauri Ojansivu 6cbb77b591 v4.49 2020-11-04 19:40:11 +02:00
Lauri Ojansivu 65ea8edea7 Update translations. 2020-11-04 19:34:27 +02:00
Lauri Ojansivu c87fbfd3f8 Update ChangeLog. 2020-11-04 17:54:03 +02:00
Lauri Ojansivu faad739f97 Fix Trello import.
Thanks to elct9620 and xet7 !

Fixes #3330
2020-11-04 17:51:17 +02:00
Lauri Ojansivu 38bcb8a724 Update translations. 2020-11-04 17:27:37 +02:00
Lauri Ojansivu 82237f2e79 Update ChangeLog. 2020-11-04 17:20:09 +02:00
Lauri Ojansivu fd363c69cc Translate some part of Gantt chart of Wekan Gantt GPL version.
This only adds translations to all Wekan versions,
not any GPL code to MIT version.

Thanks to xet7 !
2020-11-04 17:15:55 +02:00
Lauri Ojansivu e7769ce467 Update ChangeLog. 2020-11-04 16:32:34 +02:00
Lauri Ojansivu 76273300e7 Changed board icons bigger at All Boards page.
Thanks to xet7 !
2020-11-04 16:28:51 +02:00
Lauri Ojansivu cb6d74d7d9 Update ChangeLog. 2020-11-04 16:21:56 +02:00
Lauri Ojansivu cfe78471aa Merge pull request #3329 from cloudron-io/ldap_sync_email
ldap: sync email address
2020-11-04 16:19:42 +02:00
Girish Ramakrishnan e79e0cfb66 ldap: sync email address 2020-11-03 14:25:42 -08:00
Lauri Ojansivu a74bc81ff8 v4.48 2020-11-02 23:47:50 +02:00
Lauri Ojansivu b10b7a713e Update translations. 2020-11-02 22:13:30 +02:00
Lauri Ojansivu c9a2120c54 Update ChangeLog. 2020-11-02 22:03:56 +02:00
Lauri Ojansivu 4e2d337620 When RICHER_CARD_COMMENT_EDITOR=true, use richer editor
also when editing card description.

Thanks to xet7 !
2020-11-02 21:58:13 +02:00
Lauri Ojansivu ec33cdcb29 Update ChangeLog. 2020-11-02 17:55:28 +02:00
Lauri Ojansivu 4cfddf1d8d Admin Panel / Settings / Layout / Custom Top Left Corner Logo Height.
Thanks to xet7 !
2020-11-02 17:53:01 +02:00
Lauri Ojansivu 3f9b86d8e7 Update ChangeLog. 2020-11-02 16:28:43 +02:00
Lauri Ojansivu f4fdb94a3f Fix Clone Board.
Thanks to e-gaulue and xet7 !

Fixes #3326
2020-11-02 16:25:01 +02:00
Lauri Ojansivu 02856877a6 Update ChangeLog. 2020-11-02 15:53:27 +02:00
Lauri Ojansivu 0a5f9307d2 Smaller board icons to All Boards Page, and use full page width, so more board icons fit visible at once.
Removed variable height, because different heights made it look a little unbalanced.

Thanks to xet7 !
2020-11-02 15:47:00 +02:00
Lauri Ojansivu 579968143c Update ChangeLog. 2020-11-02 15:46:29 +02:00
Lauri Ojansivu aa454a5542 Removed hot-module-replacement and mdg:meteor-apm-agent.
Thanks to xet7 !
2020-11-02 15:43:52 +02:00
Lauri Ojansivu ce563085b5 v4.47 2020-11-01 23:24:24 +02:00
Lauri Ojansivu 6f99b22dc6 Update translations. 2020-11-01 23:22:09 +02:00
Lauri Ojansivu b08f228191 Update ChangeLog. 2020-11-01 23:20:02 +02:00
Lauri Ojansivu 55252300c6 Add settings for OAUTH2_CA_CERT that is
Optional OAuth2 CA Cert, see https://github.com/wekan/wekan/issues/3299

Thanks to xet7 !

Related #3299 ,
related https://github.com/wekan/wekan/pull/3325
2020-11-01 23:14:20 +02:00
Lauri Ojansivu f99934b994 Update ChangeLog. 2020-11-01 23:02:17 +02:00
Lauri Ojansivu cd16fa43a0 Merge pull request #3325 from faust64/oidc-custom-ca
fix(oidc): wekan/wekan#3299
2020-11-01 22:53:43 +02:00
Samuel MARTIN MORO ae9d82430a fix(oidc): wekan/wekan#3299 2020-11-01 20:48:50 +01:00
Lauri Ojansivu d75ca0c8f0 Added Thanks. 2020-10-31 00:20:36 +02:00
Lauri Ojansivu 66a4b1c2df v4.46 2020-10-30 22:53:06 +02:00
Lauri Ojansivu 6fe39d99ac Update translations. 2020-10-30 22:42:44 +02:00
Lauri Ojansivu 388c249212 Update ChangeLog. 2020-10-30 22:39:37 +02:00
Lauri Ojansivu af583145ed Upgrade to Meteor 2.0-beta.4 .
Thanks to Meteor developers!
2020-10-30 22:37:11 +02:00
Lauri Ojansivu 9c8b7b324f Update ChangeLog. 2020-10-30 22:34:57 +02:00
Lauri Ojansivu a3f5ef1a54 Merge pull request #3323 from jtbairdsr/master
fix: use current boardId when a worker moves a card
2020-10-30 22:32:53 +02:00
Jonathan Baird 305658da3a fix: use current boardId when a worker moves a card 2020-10-30 13:20:29 -06:00
Lauri Ojansivu 2b24ebf539 v4.45 2020-10-30 13:16:18 +02:00
Lauri Ojansivu 13d5015fc3 Update translations. 2020-10-30 13:02:55 +02:00
Lauri Ojansivu 13cf1a687e Update ChangeLog. 2020-10-30 13:00:35 +02:00
Lauri Ojansivu d2f434879c Fix can not upload and download files, by changing back to Node.js 12.19.0 and adding fast-render.
Current file storing to MongoDB code was not yet compatible with newer Node.js.

Thanks to eskogito and xet7 !

Fixes #3320
2020-10-30 12:53:41 +02:00
Lauri Ojansivu c3ffaa7ce2 v4.44 2020-10-28 18:53:31 +02:00
Lauri Ojansivu 2955c167c2 Update ChangeLog. 2020-10-28 18:49:35 +02:00
Lauri Ojansivu 81d1bf6d27 Merge branch 'jtbairdsr-master' 2020-10-28 18:46:08 +02:00
Lauri Ojansivu 46ce345203 Merge branch 'master' of https://github.com/jtbairdsr/wekan into jtbairdsr-master 2020-10-28 18:02:14 +02:00
Jonathan Baird 363e69f01c fix: expose moving cards on mobile to workers
this fix also hides the move to another board functionality in the
submenu (only from the worker) so that the worker is still constrained
to a single board.
2020-10-28 09:38:41 -06:00
Lauri Ojansivu 9b0875169b Update ChangeLog. 2020-10-28 16:34:58 +02:00
Lauri Ojansivu e616247254 For development, add Meteor 2.0 Hot Module Replacement
https://forums.meteor.com/t/meteor-2-0-beta-with-hot-module-replacement-hmr/54313/8

Thanks to zodern!
2020-10-28 16:31:59 +02:00
Lauri Ojansivu cc5f22df79 Update ChangeLog. 2020-10-28 16:18:48 +02:00
Lauri Ojansivu 3448467953 Merge pull request #3312 from helioguardabaxo/master
Fix Modern theme board canvas background
2020-10-28 16:16:19 +02:00
Lauri Ojansivu 74dbb96d85 Update translations. 2020-10-28 16:15:16 +02:00
Lauri Ojansivu d2cfe76a28 Update ChangeLog. 2020-10-28 16:06:27 +02:00
Lauri Ojansivu 045e9db7b8 Upgrade to Node.js 14.15.0
Thanks to Node.js and Meteor.js developers!
2020-10-28 15:57:38 +02:00
Lauri Ojansivu 460b1d3a66 Changed public board changing Swimlanes/Lists/Calendar view
and changing Hide minicard label text
from using cookies to using browser localStorage.

Thanks to xet7 !
2020-10-28 15:45:37 +02:00
Lauri Ojansivu a463f2a855 Upgrade to Meteor 2.0-beta.3. Removed fast-render and ostrio:cookies.
Thanks to xet7 !
2020-10-28 15:44:47 +02:00
helioguardabaxo 8b3399b8f6 Fix Moder theme board canvas background 2020-10-26 19:58:51 -03:00
Lauri Ojansivu ef59d6dcb9 Update ChangeLog. 2020-10-21 19:30:38 +03:00
Lauri Ojansivu 1b429b3f99 Fixed: With ORACLE_OIM_ENABLED, allow setting OAUTH2_REQUEST_PERMISSIONS with environment variable.
Thanks to xet7 !
2020-10-21 19:20:48 +03:00
Lauri Ojansivu 5098f7dee1 v4.43 2020-10-20 19:11:48 +03:00
Lauri Ojansivu c509aaf246 Update translations. 2020-10-20 19:04:18 +03:00
Lauri Ojansivu d7333dec84 Fixed CSV/TSV export. Please test.
Thanks to xet7 !

Related #3173
2020-10-20 18:59:41 +03:00
Lauri Ojansivu 9d97494cfc Update ChangeLog. 2020-10-16 23:58:54 +03:00
Lauri Ojansivu acf9e7caea Allow more than one assignee.
Thanks to xet7 !

Fixes #3302
2020-10-16 23:56:20 +03:00
Lauri Ojansivu f6d000b26a Update translations. 2020-10-16 23:42:12 +03:00
Lauri Ojansivu ba5b35d0cc v4.42 2020-10-14 21:51:51 +03:00
Lauri Ojansivu 1eae8222c4 Update translations. 2020-10-14 21:40:32 +03:00
Lauri Ojansivu 9b5a519bc7 Update ChangeLog. 2020-10-12 16:42:26 +03:00
Lauri Ojansivu b8a209249e Updagrade to Node.js 12.19.0.
Thanks to Node.js developers !
2020-10-12 16:39:47 +03:00
Lauri Ojansivu ecc1b69f5c Update translations. 2020-10-12 16:19:25 +03:00
Lauri Ojansivu 6253bc6c14 Merge branch 'master' of github.com:wekan/wekan 2020-10-11 01:50:44 +03:00
Lauri Ojansivu 7768a4c1ba Reverted systemd changes that caused Snap to fail building.
Thanks to xet7 !
2020-10-11 01:50:24 +03:00
Lauri Ojansivu cd1bc7a695 Reverted systemd changed that caused Snap to fail building. 2020-10-11 01:49:55 +03:00
Lauri Ojansivu 42f45f9a83 Update translations. 2020-10-10 20:13:45 +03:00
Lauri Ojansivu d081eb0a2e Update dependencies. 2020-10-10 20:10:08 +03:00
Lauri Ojansivu 504533991b Update translations. 2020-10-04 23:25:23 +03:00
Lauri Ojansivu 44a5976b85 Update ChangeLog. 2020-10-03 23:51:54 +03:00
Lauri Ojansivu ac65b93b43 Added restart on failure delay of 10 seconds to Snap.
Thanks to xet7 !

Related #3293
2020-10-03 23:48:11 +03:00
Lauri Ojansivu e9d27c521e Update translations. 2020-10-03 23:23:26 +03:00
Lauri Ojansivu dc86ae21de v4.41 2020-10-03 00:34:30 +03:00
Lauri Ojansivu befb0f18b6 Update ChangeLog. 2020-10-03 00:28:41 +03:00
Lauri Ojansivu b796a6cbf4 Update dependencies. 2020-10-03 00:27:22 +03:00
Lauri Ojansivu 9336a55a50 Update ChangeLog. 2020-10-03 00:24:39 +03:00
Lauri Ojansivu 26749442fd Update translations. 2020-10-03 00:23:03 +03:00
Lauri Ojansivu 7223d6e750 At Admin Panel / Layout: Text below custom login logo. Can have markdown formatting.
Thanks to xet7 !
2020-10-03 00:21:19 +03:00
Lauri Ojansivu 41a8e79e0e Update ChangeLog. 2020-10-02 23:35:16 +03:00
Lauri Ojansivu ec8a78537f Login with OIDC OAuth2 Oracle on premise identity manager OIM, with setting ORACLE_OIM_ENABLED=true.
Thanks to xet7 !
2020-10-02 23:15:39 +03:00
Lauri Ojansivu 4eb7597aa9 Update translations. 2020-10-02 21:14:45 +03:00
Lauri Ojansivu 3d13fa3a26 Update translations. 2020-09-20 15:05:21 +03:00
Lauri Ojansivu 655fe8afd3 v4.40 2020-09-18 19:50:40 +03:00
Lauri Ojansivu 855c66976e Update ChangeLog. 2020-09-18 19:46:27 +03:00
Lauri Ojansivu 185cf163b2 Upgrade to Meteor v1.11.1 .
Thanks to Meteor developers !
2020-09-18 19:42:34 +03:00
Lauri Ojansivu 45b7365025 Update translations. 2020-09-18 19:34:56 +03:00
Lauri Ojansivu ed5f64ccd6 Update ChangeLog. 2020-09-18 19:23:16 +03:00
Lauri Ojansivu 3fc80e1145 Better translation: Target URL to Link URL. 2020-09-18 19:20:16 +03:00
Lauri Ojansivu 05e3fc31b4 Remove extra translation that is not used. 2020-09-18 19:06:02 +03:00
Lauri Ojansivu d5e1c4bfa5 Update ChangeLog. 2020-09-18 18:58:22 +03:00
Lauri Ojansivu a7c3317ed6 Custom Logo for Login and Top Left Corner. Optional link when clicking logo. Settings at Admin Panel / Layout.
Thanks to xet7 !

Fixes #1493,
fixes #2721,
fixes #2681,
fixes #1583,
fixes #1196,
fixes #336,
fixes wekan/wekan-snap#130
2020-09-18 18:45:48 +03:00
Lauri Ojansivu 7db08082bc v4.39 2020-09-17 00:19:45 +03:00
Lauri Ojansivu 32836d42c9 Update ChangeLog. 2020-09-16 23:26:38 +03:00
Lauri Ojansivu 789c4b480a Update translations. 2020-09-16 23:23:22 +03:00
Lauri Ojansivu abe291837a Merge branch 'Akuket-feature/impersonate-user' 2020-09-16 23:12:25 +03:00
Lauri Ojansivu 81ac0fdba9 Add translations strings for impersonate user feature.
Thanks to xet7 !
2020-09-16 23:11:43 +03:00
Guillaume d19cc972e0 Add admin ability : Impersonate one user. 2020-09-16 18:11:19 +00:00
Lauri Ojansivu 8f6c3550e3 v4.38 2020-09-16 05:52:19 +03:00
Lauri Ojansivu 40681ccda4 Update translations. 2020-09-16 05:43:58 +03:00
Lauri Ojansivu 4f76e1e1eb Update ChangeLog. 2020-09-16 05:42:15 +03:00
Lauri Ojansivu 5cd9f89b21 Upgrade to Node.js v12.18.4.
Thanks to Node developers !
2020-09-16 05:35:21 +03:00
Lauri Ojansivu b24685e38d v4.37 2020-09-15 23:19:51 +03:00
Lauri Ojansivu 5d7aa373fd Update translations. 2020-09-15 23:17:44 +03:00
Lauri Ojansivu e79b7fad0a Update release scripts. 2020-09-15 23:14:05 +03:00
Lauri Ojansivu e05541da88 Update translations. 2020-09-15 22:51:51 +03:00
Lauri Ojansivu 0ccbfcfc9e Merge branch 'master' of github.com:wekan/wekan 2020-09-15 22:39:29 +03:00
Lauri Ojansivu 8e6a570d47 Update ChangeLog. 2020-09-15 22:39:13 +03:00
Lauri Ojansivu 129a884a4e Merge branch 'helioguardabaxo-master' 2020-09-15 22:34:49 +03:00
Lauri Ojansivu 2d278f303a Fix linting.
Thanks to xet7 !
2020-09-15 22:34:19 +03:00
Lauri Ojansivu dd67bd4b5e Merge branch 'master' of https://github.com/helioguardabaxo/wekan into helioguardabaxo-master 2020-09-15 22:29:00 +03:00
Lauri Ojansivu 17239fe052 Merge pull request #3278 from devilmengcry/patch-1
Update docker-compose.yml
2020-09-15 22:26:01 +03:00
helioguardabaxo 389908be7c Adjut cardPanelWidth for card details 2020-09-15 16:00:23 -03:00
helioguardabaxo 33cf589c05 UI improvements in filter, multi-selection and rules 2020-09-15 12:47:07 -03:00
李李李 d961355016 Update docker-compose.yml
yaml.parser.ParserError
2020-09-15 20:16:42 +08:00
Lauri Ojansivu 9a72cf7ac2 v4.36 2020-09-15 04:32:12 +03:00
Lauri Ojansivu 53027559cd Update translations. 2020-09-15 04:27:59 +03:00
Lauri Ojansivu 2e5545491b Update ChangeLog. 2020-09-15 04:26:36 +03:00
Lauri Ojansivu f9b0da65f1 Added translations for date selection popups.
Thanks to xet7 !

Fixes #1670
2020-09-15 04:21:23 +03:00
Lauri Ojansivu 4c734ee70f v4.35 2020-09-14 21:29:59 +03:00
Lauri Ojansivu 7173e293ef Try to fix Snap. 2020-09-14 21:26:35 +03:00
Lauri Ojansivu 19ff17b3a5 v4.34 2020-09-14 21:04:01 +03:00
Lauri Ojansivu d2b84c7773 Try to fix Snap. 2020-09-14 20:55:04 +03:00
Lauri Ojansivu 623d6c09c4 v4.33 2020-09-14 20:31:24 +03:00
Lauri Ojansivu 8ae80138a0 Update ChangeLog. 2020-09-14 20:28:17 +03:00
Lauri Ojansivu cca041e21a Update dependencies.
Thanks to developers of dependencies !
2020-09-14 20:26:32 +03:00
Lauri Ojansivu b333061de7 Update translations. 2020-09-14 20:20:45 +03:00
Lauri Ojansivu abf4322b6c Add dot. 2020-09-14 20:17:36 +03:00
Lauri Ojansivu 4e1a73fa27 Update ChangeLog. 2020-09-14 20:17:02 +03:00
Lauri Ojansivu 214c86cc22 Added some CAS and SAML settings. Not tested. Please test and send pull requests if it does not work.
See https://github.com/wekan/wekan/wiki/SAML and https://github.com/wekan/wekan/wiki/CAS

Thanks to xet7 !

Related #3204,
related #708
2020-09-14 19:57:50 +03:00
Lauri Ojansivu e0192f570e Update translations. 2020-09-13 17:10:03 +03:00
Lauri Ojansivu f5b5ab6331 Update translations. 2020-09-13 12:57:34 +03:00
Lauri Ojansivu d1c83b28f3 Update translations. 2020-09-13 12:46:58 +03:00
Lauri Ojansivu aa12b3f162 v4.32 2020-09-13 12:31:56 +03:00
Lauri Ojansivu 754087b5cf v4.31 2020-09-13 11:58:54 +03:00
Lauri Ojansivu e656e36a92 Update translations. 2020-09-13 11:55:56 +03:00
Lauri Ojansivu 0bf138281e Update ChangeLog. 2020-09-13 11:53:58 +03:00
Lauri Ojansivu fe62e12ab4 Try to fix Snap.
Thanks to xet7 !
2020-09-13 11:51:56 +03:00
Lauri Ojansivu 3c64c504c8 Add missing text. 2020-09-13 11:17:03 +03:00
Lauri Ojansivu 479472c1d8 v4.30 2020-09-13 11:15:00 +03:00
Lauri Ojansivu c10c10c4a9 Update ChangeLog. 2020-09-13 11:07:48 +03:00
Lauri Ojansivu d8c515c858 Update translations. 2020-09-13 11:01:01 +03:00
Lauri Ojansivu 168a308f5f Merge branch 'helioguardabaxo-master' 2020-09-13 10:56:15 +03:00
Lauri Ojansivu fe40c5fd37 Update English text 2020-09-13 10:53:13 +03:00
Lauri Ojansivu c430e36357 Merge branch 'master' of https://github.com/helioguardabaxo/wekan into helioguardabaxo-master 2020-09-13 10:51:08 +03:00
Lauri Ojansivu 007bf743a6 Merge branch 'xoe-labs-da-use-grifs-stream-updated-fork' 2020-09-13 10:49:28 +03:00
Lauri Ojansivu 774f57f3f6 Merge branch 'da-use-grifs-stream-updated-fork' of https://github.com/xoe-labs/wekan into xoe-labs-da-use-grifs-stream-updated-fork 2020-09-13 09:57:37 +03:00
Lauri Ojansivu 044a64b964 Update ChangeLog. 2020-09-13 09:49:01 +03:00
Lauri Ojansivu f6bdb4d694 - Remove mouse scroll settings of already removed custom scrollbar.
- Add setting OAUTH2_ADFS_ENABLED=false
- Add testing for both string and boolean version of true

Thanks to xet7 !

Fixes #2949
2020-09-13 09:41:53 +03:00
helioguardabaxo 6a6b76e084 Bold minicard item title 2020-09-13 01:11:19 -03:00
helioguardabaxo 9357ce8a26 Card details layout improvements 2020-09-13 00:23:12 -03:00
helioguardabaxo 0aab2b3085 Put card custom field check in the same line 2020-09-12 16:11:54 -03:00
helioguardabaxo 3edafd6c67 This PR add 'Template' label and modify placeholder in template search 2020-09-12 13:33:29 -03:00
David Arnold 850ded2e17 Use forked & updated version of gridfs-stream 2020-09-11 12:43:01 -05:00
Lauri Ojansivu 67a58daaf3 Update ChangeLog. 2020-09-11 19:18:50 +03:00
Lauri Ojansivu 9fdafd2008 Update npm-mongo dependency.
Thanks to filipenevola.
2020-09-11 19:16:01 +03:00
Lauri Ojansivu 66c37ccd3e Update dependencies. 2020-09-11 14:35:50 +03:00
Lauri Ojansivu fd3139201a Merge pull request #3268 from blaggacao/patch-1
bump: mongodb -> 3.6.2
2020-09-11 14:16:49 +03:00
Lauri Ojansivu abfedf573b Merge pull request #3269 from phaseshift3r/patch-1
Update oidc_server.js
2020-09-11 14:10:14 +03:00
phaseshift3r a1f9536657 Update oidc_server.js
added hack for getting the claims in the accessToken instead of the /adfs/oauth2/userinfo endpoint 

https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/overview/ad-fs-faq#i-am-trying-to-get-additional-claims-on-the-user-info-endpoint-but-its-only-returning-subject-how-can-i-get-additional-claims

Environment variable needed set
OAUTH2_ADFS=true
2020-09-11 11:16:28 +02:00
David Arnold dec0563e3c bump: mongodb -> 3.6.2
https://github.com/mongodb/node-mongodb-native/releases
2020-09-10 20:44:22 -05:00
Lauri Ojansivu 9a4136399f v4.29 2020-09-11 02:18:40 +03:00
Lauri Ojansivu 20b0177105 Changed markdown from marked to markdown-it. Added emoji support https://github.com/wekan/wekan/wiki/Emoji
Thanks to xet7 !

Fixes #2696,
fixes #1537
2020-09-11 02:04:17 +03:00
Lauri Ojansivu e0957f70e6 v4.28 2020-09-11 00:53:50 +03:00
Lauri Ojansivu 125c4684bd Update dependencies.
Thanks to developers of dependencies!
2020-09-11 00:45:46 +03:00
Lauri Ojansivu 991d4909e1 Update ChangeLog. 2020-09-11 00:31:56 +03:00
Lauri Ojansivu f81fd8084f Try to fix language names.
Thanks to buplet, xoas and xet7.

Fixes #3265
2020-09-11 00:28:33 +03:00
Lauri Ojansivu 231137617f Update translations. 2020-09-10 17:11:55 +03:00
Lauri Ojansivu f6b4c0ab25 Update ChangeLog. 2020-09-10 15:57:00 +03:00
Lauri Ojansivu 30f2de151b Update translations. 2020-09-10 15:54:02 +03:00
Lauri Ojansivu 20fe8bc09b Merge pull request #3264 from tborychowski/master
fix(card): fix card scrollbar on windows
2020-09-10 15:33:21 +03:00
Tomasz Borychowski 2e715444ed fix(card): fix card scrollbar on windows 2020-09-10 09:15:45 +01:00
Lauri Ojansivu 1b13beb106 v4.27 2020-09-09 09:14:13 +03:00
Lauri Ojansivu 88213911fd Update translations. 2020-09-09 09:08:19 +03:00
Lauri Ojansivu 50f3957011 Update ChangeLog. 2020-09-09 09:03:18 +03:00
Lauri Ojansivu bf18792d77 Reverted incomplete fix for "Checklist + card title with starting number and point", because it disabled some markdown. Related #2696
More fixes to GFM checklist not displayed properly in card title, fixes #2818

Thanks to xet7 !
2020-09-09 08:52:37 +03:00
Lauri Ojansivu ca39fce578 Update translations. 2020-09-08 21:01:31 +03:00
Lauri Ojansivu f0df8dcdc7 v4.26 2020-09-05 03:54:35 +03:00
Lauri Ojansivu 7d594705fb Update translations. 2020-09-05 03:47:20 +03:00
Lauri Ojansivu fe5e124f93 Update ChangeLog. 2020-09-05 03:04:38 +03:00
Lauri Ojansivu 41b1c55988 Disable list formatting and converting to HTML.
Fixes:
- Checklist + card title with starting number and point #2696
- How to begin a card title with "3. "? #1421
- GFM checklist not displayed properly in card title #2818

Thanks to xet7 !

Fixes #2696,
fixes #1421,
fixes #2818
2020-09-05 02:50:36 +03:00
Lauri Ojansivu cfcbf640d6 Update dependencies.
Thanks to developers of dependencies.
2020-09-05 01:36:43 +03:00
Lauri Ojansivu d344c39d49 Delete markdown demo that is not in use.
Thanks to xet7 !
2020-09-04 22:44:40 +03:00
Lauri Ojansivu 22d07d7a65 Update translations. 2020-09-04 20:56:29 +03:00
Lauri Ojansivu 44fc7c0771 Merge pull request #3254 from wekan/dependabot/npm_and_yarn/bl-2.2.1
Bump bl from 2.2.0 to 2.2.1
2020-09-04 17:21:30 +03:00
dependabot[bot] 7ec671bb9f Bump bl from 2.2.0 to 2.2.1
Bumps [bl](https://github.com/rvagg/bl) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/rvagg/bl/releases)
- [Commits](https://github.com/rvagg/bl/compare/v2.2.0...v2.2.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-03 18:55:54 +00:00
Lauri Ojansivu df35683043 Create codeql-analysis.yml 2020-09-03 19:32:02 +03:00
Lauri Ojansivu 03bfd8a734 v4.25 2020-08-31 15:25:27 +03:00
Lauri Ojansivu 409245e374 Update ChangeLog. 2020-08-31 15:11:37 +03:00
Lauri Ojansivu 5870d38e8e Restore original package.json and package-lock.json 2020-08-31 13:30:25 +03:00
Lauri Ojansivu c105e348d8 Merge branch 'tborychowski-master' 2020-08-31 13:29:13 +03:00
Lauri Ojansivu ccd0f89ae0 Merge branch 'master' of https://github.com/tborychowski/wekan into tborychowski-master 2020-08-31 13:28:34 +03:00
Lauri Ojansivu bdd28444bb Merge pull request #3248 from relikd/patch-1
Improving documentation for nextcloud integration
2020-08-31 12:28:22 +03:00
Oleg Geier c96468d76d Update docker-compose.yml
Important information missing in description
2020-08-30 18:58:11 +02:00
Lauri Ojansivu 943cd25592 Update translations. 2020-08-30 17:09:21 +03:00
Lauri Ojansivu 7f4d3ff3ec Update ChangeLog. 2020-08-30 17:07:37 +03:00
Lauri Ojansivu 5d2daa4a80 Mongo 4.4 does not work. Mongo 4.2 and 3.x works.
Thanks to GuidoDr for info.

Related #3247
2020-08-30 17:03:59 +03:00
Tomasz Borychowski 6372bb82c4 fix(scrollbar): revert formatting 2020-08-28 11:57:50 +01:00
Tomasz Borychowski 03a7da0795 fix(scrollbar): revert formatting 2020-08-28 11:56:10 +01:00
Tom bc1165ef3e revert formatting 2020-08-28 11:54:03 +01:00
Tom 47f34f6d12 revert formatting 2020-08-28 11:53:39 +01:00
Tomasz Borychowski d887e553ce fix(scrollbar): remove custom scrollbar 2020-08-28 11:46:51 +01:00
Lauri Ojansivu 13b5bb6407 v4.24 2020-08-27 17:16:09 +03:00
Lauri Ojansivu 5863df3323 Update translations. 2020-08-27 17:13:09 +03:00
Lauri Ojansivu b0cf69c160 Update ChangeLog. 2020-08-27 17:05:11 +03:00
Lauri Ojansivu 60b2787c55 Update dependencies.
Thanks to developers of dependencies!
2020-08-27 19:58:18 +03:00
Lauri Ojansivu 4d1e4f011f Update translations. 2020-08-27 19:40:05 +03:00
Lauri Ojansivu ec607596d1 Update ChangeLog. 2020-08-27 03:19:13 +03:00
Lauri Ojansivu 7e4b791c29 Add setting for mouse scroll deltafactor. Fix snap setting for mouse scroll amount.
Thanks to danger89 and xet7 !

Related #2949
2020-08-27 03:15:00 +03:00
Lauri Ojansivu 55d8d26b34 Update ChangeLog. 2020-08-27 02:40:46 +03:00
Lauri Ojansivu 3f5175778d Update translations. 2020-08-27 02:34:17 +03:00
Lauri Ojansivu 7e80db36cf Merge pull request #3244 from helioguardabaxo/master
Add Trigger and Action headers in Rule Details
2020-08-26 23:22:51 +03:00
Lauri Ojansivu 6828a1e07a Update translations. 2020-08-27 02:21:29 +03:00
helioguardabaxo 2a51a17ddc add Trigger and Action headers in Rule Details 2020-08-26 16:37:21 -03:00
Lauri Ojansivu ce11933dda Update ChangeLog. 2020-08-26 03:55:14 +03:00
Lauri Ojansivu b9f87bf310 Add Spanish (Peru) (es_PE).
Thanks to translators!
2020-08-26 03:49:53 +03:00
Lauri Ojansivu 28eeee3a28 Update translations. 2020-08-25 23:43:04 +03:00
Lauri Ojansivu e17e8d4154 Merge branch 'dependabot/npm_and_yarn/bcrypt-5.0.0' 2020-08-24 09:52:50 +03:00
dependabot[bot] dee7020a5a Bump bcrypt from 3.0.8 to 5.0.0
Bumps [bcrypt](https://github.com/kelektiv/node.bcrypt.js) from 3.0.8 to 5.0.0.
- [Release notes](https://github.com/kelektiv/node.bcrypt.js/releases)
- [Changelog](https://github.com/kelektiv/node.bcrypt.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kelektiv/node.bcrypt.js/compare/v3.0.8...v5.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-20 17:44:30 +00:00
Lauri Ojansivu 79f4e2ad6d Update translations. 2020-08-19 20:59:39 +03:00
Lauri Ojansivu 25f1256724 Update ChangeLog. 2020-08-19 20:10:18 +03:00
Lauri Ojansivu 4d49265b25 Upgrade to Meteor 1.11.
Thanks to Meteor developers!
2020-08-19 20:07:45 +03:00
Lauri Ojansivu 3d0e91f80e v4.23 2020-08-13 17:44:43 +03:00
Lauri Ojansivu 533857c961 Update ChangeLog. 2020-08-13 17:39:05 +03:00
Lauri Ojansivu 83bc176ebf Update translations. 2020-08-13 17:35:46 +03:00
Lauri Ojansivu 910f0cecbe Update vulnerable dependency elliptic that is dependency of meteor-node-stubs that is dependency of Wekan.
Thanks to filipenevola, neeldug, L25inux and xet7.

Closes #3234
2020-08-13 17:32:27 +03:00
Lauri Ojansivu 10f0c49007 Update translations. 2020-08-11 17:47:21 +03:00
Lauri Ojansivu ba2911a645 Update translations. 2020-08-10 19:12:26 +03:00
Lauri Ojansivu 07860bd4de Update translations. 2020-08-10 13:33:38 +03:00
Lauri Ojansivu 42bd03e333 Remove old code from rebuild-wekan.sh 2020-08-08 21:25:55 +03:00
Lauri Ojansivu 97f525fdbc Update dependencies. 2020-08-08 21:25:23 +03:00
Lauri Ojansivu 1050e04c10 Update translations. 2020-08-03 11:49:33 +03:00
Lauri Ojansivu 1534b22315 v4.22 2020-07-23 17:43:27 +03:00
Lauri Ojansivu bcec728c2e Update translations. 2020-07-23 17:36:05 +03:00
Lauri Ojansivu 6f503ca818 Upgrade to Node 12.18.3
Thanks to Node developers !
2020-07-23 17:32:08 +03:00
Lauri Ojansivu 1b927a9d3a Update ChangeLog. 2020-07-23 17:22:41 +03:00
Lauri Ojansivu 045b8a84a2 Hide CSV export until it's fixed in EdgeHTML compatible way.
Thanks to xet7 !
2020-07-23 17:16:02 +03:00
Lauri Ojansivu 1624fc82f7 Exports now work at #3173 at least for small boards. TODO: Fix EdgeHTML to work, before I can release this.
Thanks to xet7 !
2020-07-23 13:36:39 +03:00
Lauri Ojansivu 42d8773e36 Revert xss to previous compatible version.
Thanks to xet7 !
2020-07-23 12:32:57 +03:00
Lauri Ojansivu 15dff73b94 Update ChangeLog. 2020-07-23 11:53:38 +03:00
Lauri Ojansivu ec1d8f275f Fix detecting current IP address on rebuild-wekan.sh
Thanks to xet7 !
2020-07-23 11:47:37 +03:00
Lauri Ojansivu 68391a943b Try to fix Snap. TODO: Sometime migrate from Caddy v1 to Caddy v2.
Thanks to xet7 !
2020-07-22 14:45:03 +03:00
Lauri Ojansivu 9c48cc9ec0 v4.21 2020-07-21 22:06:09 +03:00
Lauri Ojansivu 41c06c1374 Update ChangeLog. 2020-07-21 21:20:11 +03:00
Lauri Ojansivu 2c6841210c Update translations. 2020-07-21 21:13:43 +03:00
Lauri Ojansivu eba8fb4c9c Merge pull request #3215 from gvespignani70/develop
changed edit_card and get_card_by_customfields
2020-07-21 21:03:00 +03:00
Unknown 95522ebcd9 changed edit_card and get_card_by_customfields
There was a bug in edit_card API: If I call API to edit listid and some fields It modifies only the listid. In addiction I've modified get_card_by_customfield to return full documents.
2020-07-21 17:36:46 +02:00
Unknown 8bf13f43e8 Merge remote-tracking branch 'myorigin/master' into develop 2020-07-21 16:13:56 +02:00
Unknown ca8f2a70a4 Merge remote-tracking branch 'origin/master' 2020-07-21 16:11:51 +02:00
Lauri Ojansivu f6e9f5a5e8 Fix typo. 2020-07-20 00:54:33 +03:00
200 changed files with 47692 additions and 59795 deletions

No files matched your search

+25 -4
View File
@@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND=noninteractive
ENV \
DEBUG=false \
NODE_VERSION=12.18.2 \
NODE_VERSION=v12.19.0 \
METEOR_RELEASE=1.10.2 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
@@ -21,10 +21,13 @@ ENV \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3 \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60 \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 \
RICHER_CARD_COMMENT_EDITOR=true \
RICHER_CARD_COMMENT_EDITOR=false \
CARD_OPENED_WEBHOOK_ENABLED=false \
ATTACHMENTS_STORE_PATH="" \
MAX_IMAGE_PIXEL="" \
IMAGE_COMPRESS_RATIO="" \
BIGEVENTS_PATTERN="" \
NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE="" \
BIGEVENTS_PATTERN=NONE \
NOTIFY_DUE_DAYS_BEFORE_AND_AFTER="" \
NOTIFY_DUE_AT_HOUR_OF_DAY="" \
EMAIL_NOTIFICATION_TIMEOUT=30000 \
@@ -36,6 +39,8 @@ ENV \
TRUSTED_URL="" \
WEBHOOKS_ATTRIBUTES="" \
OAUTH2_ENABLED=false \
OAUTH2_CA_CERT="" \
OAUTH2_ADFS_ENABLED=false \
OAUTH2_LOGIN_STYLE=redirect \
OAUTH2_CLIENT_ID="" \
OAUTH2_SECRET="" \
@@ -108,7 +113,23 @@ ENV \
CORS="" \
CORS_ALLOW_HEADERS="" \
CORS_EXPOSE_HEADERS="" \
DEFAULT_AUTHENTICATION_METHOD=""
DEFAULT_AUTHENTICATION_METHOD="" \
PASSWORD_LOGIN_ENABLED=true \
CAS_ENABLED=false \
CAS_BASE_URL="" \
CAS_LOGIN_URL="" \
CAS_VALIDATE_URL="" \
SAML_ENABLED=false \
SAML_PROVIDER="" \
SAML_ENTRYPOINT="" \
SAML_ISSUER="" \
SAML_CERT="" \
SAML_IDPSLO_REDIRECTURL="" \
SAML_PRIVATE_KEYFILE="" \
SAML_PUBLIC_CERTFILE="" \
SAML_IDENTIFIER_FORMAT="" \
SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE="" \
SAML_ATTRIBUTES=""
# Install OS
RUN set -o xtrace \
+1 -1
View File
@@ -45,7 +45,7 @@
"no-spaced-func": 2,
"no-trailing-spaces": 2,
"operator-linebreak": 2,
"quotes": [2, "single"],
"quotes": [2, "single", { "avoidEscape": true }],
"semi-spacing": 2,
"space-unary-ops": 2,
"arrow-spacing": 2,
+1 -1
View File
@@ -81,7 +81,7 @@ parts:
wekan:
source: .
plugin: nodejs
node-engine: 12.18.2
node-engine: 12.19.0
node-packages:
- node-gyp
- node-pre-gyp
+198
View File
@@ -0,0 +1,198 @@
#!/bin/bash
echo "Note: If you use other locale than en_US.UTF-8 , you need to additionally install en_US.UTF-8"
echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correctly."
echo " You can still use any other locale as your main locale."
#Below script installs newest node 8.x for Debian/Ubuntu/Mint.
#NODE_VERSION=12.18.2
#X64NODE="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz"
function pause(){
read -p "$*"
}
function cprec(){
if [[ -d "$1" ]]; then
if [[ ! -d "$2" ]]; then
sudo mkdir -p "$2"
fi
for i in $(ls -A "$1"); do
cprec "$1/$i" "$2/$i"
done
else
sudo cp "$1" "$2"
fi
}
# sudo npm doesn't work right, so this is a workaround
function npm_call(){
TMPDIR="/tmp/tmp_npm_prefix"
if [[ -d "$TMPDIR" ]]; then
rm -rf $TMPDIR
fi
mkdir $TMPDIR
NPM_PREFIX="$(npm config get prefix)"
npm config set prefix $TMPDIR
npm "$@"
npm config set prefix "$NPM_PREFIX"
echo "Moving files to $NPM_PREFIX"
for i in $(ls -A $TMPDIR); do
cprec "$TMPDIR/$i" "$NPM_PREFIX/$i"
done
rm -rf $TMPDIR
}
#function wekan_repo_check(){
## UNCOMMENTING, IT'S NOT REQUIRED THAT /HOME/USERNAME IS /HOME/WEKAN
# git_remotes="$(git remote show 2>/dev/null)"
# res=""
# for i in $git_remotes; do
# res="$(git remote get-url $i | sed 's/.*wekan\/wekan.*/wekan\/wekan/')"
# if [[ "$res" == "wekan/wekan" ]]; then
# break
# fi
# done
#
# if [[ "$res" != "wekan/wekan" ]]; then
# echo "$PWD is not a wekan repository"
# exit;
# fi
#}
echo
PS3='Please enter your choice: '
options=("Install Wekan dependencies" "Build Wekan" "Run Meteor for dev on http://localhost:4000" "Run Meteor for dev on http://CURRENT-IP-ADDRESS:4000" "Run Meteor for dev on http://CUSTOM-IP-ADDRESS:PORT" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Install Wekan dependencies")
if [[ "$OSTYPE" == "linux-gnu" ]]; then
echo "Linux";
# Debian, Ubuntu, Mint
sudo apt-get install -y build-essential gcc g++ make git curl wget
# npm nodejs
#sudo npm -g install npm
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
#curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
#sudo apt-get install -y nodejs
elif [[ "$OSTYPE" == "darwin"* ]]; then
echo "macOS";
pause '1) Install XCode 2) Install Node 8.x from https://nodejs.org/en/ 3) Press [Enter] key to continue.'
elif [[ "$OSTYPE" == "cygwin" ]]; then
# POSIX compatibility layer and Linux environment emulation for Windows
echo "TODO: Add Cygwin";
exit;
elif [[ "$OSTYPE" == "msys" ]]; then
# Lightweight shell and GNU utilities compiled for Windows (part of MinGW)
echo "TODO: Add msys on Windows";
exit;
elif [[ "$OSTYPE" == "win32" ]]; then
# I'm not sure this can happen.
echo "TODO: Add Windows";
exit;
elif [[ "$OSTYPE" == "freebsd"* ]]; then
echo "TODO: Add FreeBSD";
exit;
else
echo "Unknown"
echo ${OSTYPE}
exit;
fi
## Latest npm with Meteor 1.8.x
npm_call -g install npm
npm_call -g install node-gyp
# Latest fibers for Meteor 1.8.x
sudo mkdir -p /usr/local/lib/node_modules/fibers/.node-gyp
npm_call -g install fibers
# Install Meteor, if it's not yet installed
curl https://install.meteor.com | bash
sudo chown -R $(id -u):$(id -g) $HOME/.npm $HOME/.meteor
break
;;
"Build Wekan")
echo "Building Wekan."
#wekan_repo_check
# REPOS BELOW ARE INCLUDED TO WEKAN REPO
#rm -rf packages/kadira-flow-router packages/meteor-useraccounts-core packages/meteor-accounts-cas packages/wekan-ldap packages/wekan-ldap packages/wekan-scrfollbar packages/meteor-accounts-oidc packages/markdown
#mkdir packages
#cd packages
#git clone --depth 1 -b master https://github.com/wekan/flow-router.git kadira-flow-router
#git clone --depth 1 -b master https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core
#git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-cas.git
#git clone --depth 1 -b master https://github.com/wekan/wekan-ldap.git
#git clone --depth 1 -b master https://github.com/wekan/wekan-scrollbar.git
#git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-oidc.git
#git clone --depth 1 -b master --recurse-submodules https://github.com/wekan/markdown.git
#mv meteor-accounts-oidc/packages/switch_accounts-oidc wekan_accounts-oidc
#mv meteor-accounts-oidc/packages/switch_oidc wekan_oidc
#rm -rf meteor-accounts-oidc
#if [[ "$OSTYPE" == "darwin"* ]]; then
# echo "sed at macOS";
# sed -i '' 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js
#else
# echo "sed at ${OSTYPE}"
# sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js
#fi
#cd ..
sudo chown -R $(id -u):$(id -g) $HOME/.npm $HOME/.meteor
rm -rf node_modules .meteor/local
npm install
rm -rf .build
meteor build .build --directory
cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
# Remove legacy webbroser bundle, so that Wekan works also at Android Firefox, iOS Safari, etc.
rm -rf .build/bundle/programs/web.browser.legacy
#Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
#https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
#https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c
#cd ~/repos/wekan/.build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
#rm -rf node_modules/bcrypt
#meteor npm install bcrypt
cd .build/bundle/programs/server
rm -rf node_modules
npm install
#meteor npm install bcrypt
cd ../../../..
echo Done.
break
;;
"Run Meteor for dev on http://localhost:4000")
WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://localhost:4000 meteor run --exclude-archs web.browser.legacy,web.cordova --port 4000
break
;;
"Run Meteor for dev on http://CURRENT-IP-ADDRESS:4000")
IPADDRESS=$(ip a | grep 'noprefixroute' | grep 'inet ' | cut -d: -f2 | awk '{ print $2}' | cut -d '/' -f 1)
echo "Your IP address is $IPADDRESS"
WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:4000 meteor run --exclude-archs web.browser.legacy,web.cordova --port 4000
break
;;
"Run Meteor for dev on http://CUSTOM-IP-ADDRESS:PORT")
ip address
echo "From above list, what is your IP address?"
read IPADDRESS
echo "On what port you would like to run Wekan?"
read PORT
echo "ROOT_URL=http://$IPADDRESS:$PORT"
WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:$PORT meteor run --exclude-archs web.browser.legacy,web.cordova --port $PORT
break
;;
"Quit")
break
;;
*) echo invalid option;;
esac
done
+1 -1
View File
@@ -83,7 +83,7 @@ parts:
wekan:
source: .
plugin: nodejs
node-engine: 12.18.2
node-engine: 12.19.0
node-packages:
- node-gyp
- node-pre-gyp
+62
View File
@@ -0,0 +1,62 @@
name: "CodeQL"
on:
push:
branches: [master]
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
schedule:
- cron: '0 16 * * 3'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# Override automatic language detection by changing the below list
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
language: ['javascript', 'python']
# Learn more...
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
+1
View File
@@ -5,6 +5,7 @@
tmp/
node_modules/
npm-debug.log
.gitmodules
.vscode/
.idea/
.build/*
+56 -10
View File
@@ -6,8 +6,8 @@
meteor-base@1.4.0
# Build system
ecmascript@0.14.3
standard-minifier-css@1.6.0
ecmascript@0.15.0-beta200.4
standard-minifier-css@1.7.0-beta200.4
standard-minifier-js@2.6.0
mquandalle:jade
coffeescript@2.4.1!
@@ -70,21 +70,17 @@ rajit:bootstrap3-datepicker
shell-server@0.5.0
simple:rest-accounts-password
useraccounts:core
email@1.2.3
email@2.0.0
horka:swipebox
dynamic-import@0.5.2
staringatlights:fast-render
dynamic-import@0.6.0-beta200.4
accounts-password@1.6.0
accounts-password@1.6.2
cfs:gridfs
rzymek:fullcalendar
momentjs:moment@2.22.2
browser-policy-framing@1.1.0
mquandalle:moment
msavin:usercache
wekan-scrollbar
mquandalle:perfect-scrollbar
mdg:meteor-apm-agent@3.2.0-rc.0!
# Keep stylus in 1.1.0, because building v2 takes extra 52 minutes.
coagmano:stylus@1.1.0!
lucasantoniassi:accounts-lockout
@@ -97,5 +93,55 @@ konecty:mongo-counter
percolate:synced-cron
easylogic:summernote
cfs:filesystem
ostrio:cookies
tmeasday:check-npm-versions
steffo:meteor-accounts-saml
rajit:bootstrap3-datepicker-fi
rajit:bootstrap3-datepicker-ar
rajit:bootstrap3-datepicker-bg
rajit:bootstrap3-datepicker-br
rajit:bootstrap3-datepicker-ca
rajit:bootstrap3-datepicker-cs
rajit:bootstrap3-datepicker-da
rajit:bootstrap3-datepicker-de
rajit:bootstrap3-datepicker-el
rajit:bootstrap3-datepicker-en-gb
rajit:bootstrap3-datepicker-eo
rajit:bootstrap3-datepicker-es
rajit:bootstrap3-datepicker-eu
rajit:bootstrap3-datepicker-fa
rajit:bootstrap3-datepicker-fr
rajit:bootstrap3-datepicker-gl
rajit:bootstrap3-datepicker-he
rajit:bootstrap3-datepicker-hi
rajit:bootstrap3-datepicker-hu
rajit:bootstrap3-datepicker-hy
rajit:bootstrap3-datepicker-id
rajit:bootstrap3-datepicker-it
rajit:bootstrap3-datepicker-ja
rajit:bootstrap3-datepicker-ka
rajit:bootstrap3-datepicker-km
rajit:bootstrap3-datepicker-ko
rajit:bootstrap3-datepicker-lv
rajit:bootstrap3-datepicker-mk
rajit:bootstrap3-datepicker-mn
rajit:bootstrap3-datepicker-nb
rajit:bootstrap3-datepicker-nl
rajit:bootstrap3-datepicker-oc
rajit:bootstrap3-datepicker-pl
rajit:bootstrap3-datepicker-pt-br
rajit:bootstrap3-datepicker-pt
rajit:bootstrap3-datepicker-ro
rajit:bootstrap3-datepicker-ru
rajit:bootstrap3-datepicker-sl
rajit:bootstrap3-datepicker-sr
rajit:bootstrap3-datepicker-sv
rajit:bootstrap3-datepicker-sw
rajit:bootstrap3-datepicker-ta
rajit:bootstrap3-datepicker-th
rajit:bootstrap3-datepicker-tr
rajit:bootstrap3-datepicker-uk
rajit:bootstrap3-datepicker-vi
rajit:bootstrap3-datepicker-zh-cn
rajit:bootstrap3-datepicker-zh-tw
staringatlights:fast-render
spacebars
+1 -1
View File
@@ -1 +1 @@
METEOR@1.10.2
METEOR@2.0-beta.4
+69 -24
View File
@@ -1,7 +1,7 @@
3stack:presence@1.1.2
accounts-base@1.6.0
accounts-base@1.7.0
accounts-oauth@1.2.0
accounts-password@1.6.1
accounts-password@1.6.2
aldeed:collection2@2.10.0
aldeed:collection2-core@1.2.0
aldeed:schema-deny@1.1.0
@@ -10,14 +10,14 @@ aldeed:simple-schema@1.5.4
allow-deny@1.1.0
arillo:flow-router-helpers@0.5.2
audit-argument-checks@1.0.7
autoupdate@1.6.0
babel-compiler@7.5.3
autoupdate@1.7.0-beta200.4
babel-compiler@7.6.0-beta200.4
babel-runtime@1.5.0
base64@1.0.12
binary-heap@1.0.11
blaze@2.3.4
blaze-tools@1.0.10
boilerplate-generator@1.7.0
boilerplate-generator@1.7.1
browser-policy-common@1.0.11
browser-policy-framing@1.1.0
caching-compiler@1.2.2
@@ -49,20 +49,20 @@ coffeescript-compiler@2.4.1
cottz:publish-relations@2.0.8
dburles:collection-helpers@1.1.0
ddp@1.4.0
ddp-client@2.3.3
ddp-client@2.4.0-beta200.4
ddp-common@1.4.0
ddp-rate-limiter@1.0.7
ddp-rate-limiter@1.0.9
ddp-server@2.3.2
deps@1.0.12
diff-sequence@1.1.1
dynamic-import@0.5.2
dynamic-import@0.6.0-beta200.4
easylogic:summernote@0.8.8
ecmascript@0.14.3
ecmascript@0.15.0-beta200.4
ecmascript-runtime@0.7.0
ecmascript-runtime-client@0.10.0
ecmascript-runtime-server@0.9.0
ecmascript-runtime-client@0.11.0
ecmascript-runtime-server@0.10.0
ejson@1.1.1
email@1.2.3
email@2.0.0
es5-shim@4.8.0
fastclick@1.0.13
fetch@0.1.1
@@ -91,7 +91,6 @@ logging@1.1.20
lucasantoniassi:accounts-lockout@1.0.0
matb33:collection-hooks@0.9.1
matteodem:easy-search@1.6.4
mdg:meteor-apm-agent@3.2.6
mdg:validation-error@0.5.1
meteor@1.9.3
meteor-base@1.4.0
@@ -101,15 +100,15 @@ meteorhacks:collection-utils@1.2.0
meteorhacks:picker@1.0.3
meteorhacks:subs-manager@1.6.4
meteorspark:util@0.2.0
minifier-css@1.5.2
minifier-css@1.5.3
minifier-js@2.6.0
minifiers@1.1.8-faster-rebuild.0
minimongo@1.6.0
mobile-status-bar@1.1.0
modern-browsers@0.1.5
modules@0.15.0
modules@0.16.0-beta200.4
modules-runtime@0.12.0
momentjs:moment@2.27.0
momentjs:moment@2.29.1
mongo@1.10.0
mongo-decimal@0.1.1
mongo-dev-server@1.1.0
@@ -124,16 +123,14 @@ mquandalle:jquery-textcomplete@0.8.0_1
mquandalle:jquery-ui-drag-drop-sort@0.2.0
mquandalle:moment@1.0.1
mquandalle:mousetrap-bindglobal@0.0.1
mquandalle:perfect-scrollbar@0.6.5_2
msavin:usercache@1.8.0
npm-bcrypt@0.9.3
npm-mongo@3.7.1
oauth@1.3.0
npm-mongo@3.8.1
oauth@1.3.2
oauth2@1.3.0
observe-sequence@1.0.16
ongoworks:speakingurl@1.1.0
ordered-dict@1.1.0
ostrio:cookies@2.6.0
peerlibrary:assert@0.3.0
peerlibrary:base-component@0.16.0
peerlibrary:blaze-components@0.15.1
@@ -144,6 +141,54 @@ promise@0.11.2
raix:eventemitter@0.1.3
raix:handlebar-helpers@0.2.5
rajit:bootstrap3-datepicker@1.7.1_1
rajit:bootstrap3-datepicker-ar@1.7.1
rajit:bootstrap3-datepicker-bg@1.7.1
rajit:bootstrap3-datepicker-br@1.7.1
rajit:bootstrap3-datepicker-ca@1.7.1
rajit:bootstrap3-datepicker-cs@1.7.1
rajit:bootstrap3-datepicker-da@1.7.1
rajit:bootstrap3-datepicker-de@1.7.1
rajit:bootstrap3-datepicker-el@1.7.1
rajit:bootstrap3-datepicker-en-gb@1.7.1
rajit:bootstrap3-datepicker-eo@1.7.1
rajit:bootstrap3-datepicker-es@1.7.1
rajit:bootstrap3-datepicker-eu@1.7.1
rajit:bootstrap3-datepicker-fa@1.7.1
rajit:bootstrap3-datepicker-fi@1.7.1
rajit:bootstrap3-datepicker-fr@1.7.1
rajit:bootstrap3-datepicker-gl@1.7.1
rajit:bootstrap3-datepicker-he@1.7.1
rajit:bootstrap3-datepicker-hi@1.7.1
rajit:bootstrap3-datepicker-hu@1.7.1
rajit:bootstrap3-datepicker-hy@1.7.1
rajit:bootstrap3-datepicker-id@1.7.1
rajit:bootstrap3-datepicker-it@1.7.1
rajit:bootstrap3-datepicker-ja@1.7.1
rajit:bootstrap3-datepicker-ka@1.7.1
rajit:bootstrap3-datepicker-km@1.7.1
rajit:bootstrap3-datepicker-ko@1.7.1
rajit:bootstrap3-datepicker-lv@1.7.1
rajit:bootstrap3-datepicker-mk@1.7.1
rajit:bootstrap3-datepicker-mn@1.7.1
rajit:bootstrap3-datepicker-nb@1.7.1
rajit:bootstrap3-datepicker-nl@1.7.1
rajit:bootstrap3-datepicker-oc@1.7.1
rajit:bootstrap3-datepicker-pl@1.7.1
rajit:bootstrap3-datepicker-pt@1.7.1
rajit:bootstrap3-datepicker-pt-br@1.7.1
rajit:bootstrap3-datepicker-ro@1.7.1
rajit:bootstrap3-datepicker-ru@1.7.1
rajit:bootstrap3-datepicker-sl@1.7.1
rajit:bootstrap3-datepicker-sr@1.7.1
rajit:bootstrap3-datepicker-sv@1.7.1
rajit:bootstrap3-datepicker-sw@1.7.1
rajit:bootstrap3-datepicker-ta@1.7.1
rajit:bootstrap3-datepicker-th@1.7.1
rajit:bootstrap3-datepicker-tr@1.7.1
rajit:bootstrap3-datepicker-uk@1.7.1
rajit:bootstrap3-datepicker-vi@1.7.1
rajit:bootstrap3-datepicker-zh-cn@1.7.1
rajit:bootstrap3-datepicker-zh-tw@1.7.1
random@1.2.0
rate-limit@1.0.9
reactive-dict@1.3.0
@@ -167,10 +212,11 @@ softwarerero:accounts-t9n@1.3.11
spacebars@1.0.15
spacebars-compiler@1.1.3
srp@1.1.0
standard-minifier-css@1.6.0
standard-minifier-css@1.7.0-beta200.4
standard-minifier-js@2.6.0
staringatlights:fast-render@3.3.0
staringatlights:inject-data@2.3.0
steffo:meteor-accounts-saml@0.0.18
tap:i18n@1.8.2
templates:tabs@2.3.0
templating@1.3.2
@@ -187,13 +233,12 @@ useraccounts:core@1.14.2
useraccounts:flow-routing@1.14.2
useraccounts:unstyled@1.14.2
verron:autosize@3.0.8
webapp@1.9.1
webapp-hashing@1.0.9
webapp@1.10.0-beta200.4
webapp-hashing@1.1.0-beta200.4
wekan-accounts-cas@0.1.0
wekan-accounts-oidc@1.0.10
wekan-ldap@0.0.2
wekan-markdown@1.0.9
wekan-oidc@1.0.12
wekan-scrollbar@3.1.3
yasaricli:slugify@0.0.7
zimme:active-route@2.3.2
+1 -1
View File
@@ -3,7 +3,7 @@ sudo: required
env:
TRAVIS_DOCKER_COMPOSE_VERSION: 1.24.0
TRAVIS_NODE_VERSION: 12.18.2
TRAVIS_NODE_VERSION: 12.19.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 = bg_BG:bg, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, 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 = bg_BG:bg, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_PE:es-PE, 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
[wekan.application]
file_filter = i18n/<lang>.i18n.json
+493 -1
View File
@@ -1,8 +1,500 @@
# v4.52 2020-11-12 Wekan release
This release adds the following improvements:
- [Some more small improvements to Modern Dark theme](https://github.com/wekan/wekan/pull/3346).
Thanks to jghaanstra.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.51 2020-11-11 Wekan release
This release adds the following new features:
- [Board admin can edit and delete comments as well](https://github.com/wekan/wekan/pull/3340).
Thanks to mfilser.
- [Drag handles for checklist](https://github.com/wekan/wekan/pull/3341).
Thanks to mfilser.
- [Custom URL Schemes autolinked](https://github.com/wekan/wekan/pull/3339).
Thanks to brian-j.
and adds the following improvements:
- [Improvements to Modern Dark Theme](https://github.com/wekan/wekan/pull/3344).
Thanks to jghaanstra.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.50 2020-11-10 Wekan release
This release adds the following new features:
- Add 'Modern Dark' theme [Part1](https://github.com/wekan/wekan/pulls/3335)
and [Part2](https://github.com/wekan/wekan/commit/6801c960b115be4265bf18ba05c444ac79aef887).
Thanks to jghaanstra, helioguardabaxo and xet7.
and fixes the following bugs:
- [Fix edit description to require only one click](https://github.com/wekan/wekan/commit/0ef248574c2751be1245c5748a9cbbe5ba2969b5).
Thanks to uusijani and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.49 2020-11-04 Wekan release
This release adds the following new features:
- [LDAP: Sync email address](https://github.com/wekan/wekan/pull/3329).
Thanks to gramakri.
and adds the following changes:
- [Changed board icons bigger at All Boards page](https://github.com/wekan/wekan/commit/76273300e749ebe3b1d711dee84336d03b31ed49).
Thanks to xet7.
and adds the following translations:
- [Translate some part of Gantt chart of Wekan Gantt GPL version](https://github.com/wekan/wekan/commit/fd363c69cc6e1cf3a283e3dbcc323edb1eae896e).
This only adds translations to all Wekan versions, not any GPL code to MIT version.
Thanks to xet7.
and fixes the following bugs:
- [Fix Trello import](https://github.com/wekan/wekan/commit/faad739f974a0392ca73e4db03e5267edcc5dec7).
Thanks to elct9620 and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.48 2020-11-02 Wekan release
This release adds the following new features:
- [Smaller board icons to All Boards Page, and use full page width, so more board icons fit visible at once.
Removed variable height, because different heights made it look a little unbalanced](https://github.com/wekan/wekan/commit/0a5f9307d27a4b77aa7ff005701fea8ce0d50ec8).
Thanks to xet7.
- [Admin Panel / Settings / Layout / Custom Top Left Corner Logo Height](https://github.com/wekan/wekan/commit/4cfddf1d8d37bdbbb58c050333ee6ea2afc3e6f9).
Thanks to xet7.
- [When RICHER_CARD_COMMENT_EDITOR=true, use richer editor also when editing card description](https://github.com/wekan/wekan/commit/4e2d337620ac490b8e99ee968e6f92477e09b900).
Thanks to xet7.
and removes the following dependencies:
- [Removed hot-module-replacement and mdg:meteor-apm-agent](https://github.com/wekan/wekan/commit/aa454a5542e5ab1d581eef50cdb5c96ac2ada940).
Thanks to xet7.
and fixes the following bugs:
- [Fix Clone Board](https://github.com/wekan/wekan/commit/f4fdb94a3fcd63432ef7ded4df970b3491700020).
Thanks to e-gaulue and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.47 2020-11-01 Wekan release
This release fixes the following bugs:
- [Fix: OAuth2 fails with self-signed server certificate](https://github.com/wekan/wekan/pull/3325) and
[Added related settings for OAUTH2_CA_CERT that is optional OAuth2 CA Cert](https://github.com/wekan/wekan/commit/55252300c601ea40dc8adad1887397b31ceb0bb2).
Thanks to faust64 and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.46 2020-10-30 Wekan release
This release adds the following updates:
- [Upgrade to Meteor 2.0-beta.4](https://github.com/wekan/wekan/commit/af583145ed2b36af8e6c72765fd35d70a292fad6).
Thanks to Meteor developers.
and fixes the following bugs:
- [Fix: Use current boardId when a worker moves a card](https://github.com/wekan/wekan/pull/3323).
Thanks to jtbairdsr.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.45 2020-10-30 Wekan release
This release fixes the following bugs:
- [Fix can not upload and download files, by changing back to Node.js 12.19.0 and adding
fast-render](https://github.com/wekan/wekan/commit/d2f434879caa20d69651f23fa2124074f55c9893).
Current file storing to MongoDB code was not yet compatible with newer Node.js.
Thanks to eskogito and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.44 2020-10-28 Wekan release
This release adds the following new features:
- For development, [add Meteor 2.0 Hot Module Replacement](https://github.com/wekan/wekan/commit/e6162472548d9dff497dd76e82d23044f779f757).
More info at https://forums.meteor.com/t/meteor-2-0-beta-with-hot-module-replacement-hmr/54313/8 .
Thanks to zodern.
and adds the following updates:
- [Upgrade to Node.js 14.15.0](https://github.com/wekan/wekan/commit/045e9db7b8f0de852ef4486cb1ad200d6ca7296d).
Thanks to Node.js and Meteor.js developers.
- [Upgrade to Meteor 2.0-beta.3. Removed fast-render and ostrio:cookies](https://github.com/wekan/wekan/commit/a463f2a855498935db5b66e5fad446ce465adab1).
Thanks to Meteor.js developers and xet7.
and fixes the following bugs:
- [Fixed: With ORACLE_OIM_ENABLED, allow setting OAUTH2_REQUEST_PERMISSIONS with environment variable](https://github.com/wekan/wekan/commit/1b429b3f99c32840ebb0ff9a29015aa8c28ec644).
Thanks to xet7.
- [Changed public board changing Swimlanes/Lists/Calendar view and changing Hide minicard label text
from using cookies to using browser localStorage](https://github.com/wekan/wekan/commit/460b1d3a664b648bc03c40422b9d175401e229c1),
to remove some errors from browser inspect console.
Thanks to xet7.
- [Fix Modern theme board canvas background](https://github.com/wekan/wekan/pull/3312).
Thanks to helioguardabaxo.
- [Fix: 1) Expose moving cards on mobile to workers. 2) Hide the move to another board functionality
in the submenu (only from the worker) so that the worker is still constrained to a single
board](https://github.com/wekan/wekan/pull/3315).
Thanks to jtbairdsr.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.43 2020-10-20 Wekan release
This release adds the following new features:
- [Allow more than one assignee](https://github.com/wekan/wekan/commit/acf9e7caeaf59e1030ae1014c0cb2fb7dae27147).
Thanks to xet7.
and fixes the following bugs:
- [Fixed CSV/TSV export](https://github.com/wekan/wekan/commit/d7333dec84328ca191f430d96aaf9e550840631a).
Please test and report any problems [at issue #3173](https://github.com/wekan/wekan/issues/3173).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.42 2020-10-14 Wekan release
This release adds the following updates:
- [Upgrade to Node.js 12.19.0](https://github.com/wekan/wekan/commit/b8a209249e968b90917af319adf24fedf2157396).
Thanks to Node.js developers.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.41 2020-10-03 Wekan release
This release adds the following new features:
- [Login with OIDC OAuth2 Oracle on premise identity manager OIM, with setting ORACLE_OIM_ENABLED=true](https://github.com/wekan/wekan/commit/ec8a78537f1dc40e967de36a02ea09cf7398318a).
More info [at wiki](https://github.com/wekan/wekan/wiki/Oracle-OIM).
Thanks to xet7.
- [At Admin Panel / Layout: Text below Custom Login Logo. Can have markdown formatting](https://github.com/wekan/wekan/commit/7223d6e75057d1412862a97b8a43c34ec23b16e9).
Thanks to xet7.
and adds the following updates:
- [Update dependencies](https://github.com/wekan/wekan/commit/b796a6cbf4911c14ff036a51db0252e08d3a5ef8).
Thanks to developers of dependencies.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.40 2020-09-18 Wekan release
This release adds the following new features:
- Custom Logo for Login and Top Left Corner. Optional link when clicking logo.
Settings at Admin Panel / Layout.
[Part 1](https://github.com/wekan/wekan/commit/a7c3317ed696fad8e211b22afbb3012f3a4f2ddb),
[Part 2](https://github.com/wekan/wekan/commit/05e3fc31b4633978a6b002a0325aad8e74d57ec4),
[Part 3](https://github.com/wekan/wekan/commit/3fc80e1145b23f8e6c7492ef4e3313b02f3d8772).
Thanks to xet7.
and adds the following updates:
- [Upgrade to Meteor v1.11.1](https://github.com/wekan/wekan/commit/185cf163b23280af5a7910381209984e2362a452).
Thanks to Meteor developers.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.39 2020-09-17 Wekan release
This release adds the following new features:
- [Impersonate one user](https://github.com/wekan/wekan/pull/3280) and
[related translatable strings](https://github.com/wekan/wekan/commit/81ac0fdba9b52477dbbe7b6ed01b6d299288bcca).
Thanks to Akuket and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.38 2020-09-16 Wekan release
This release fixes the following CRITICAL VULNERABILITIES:
- [Upgrade to Node.js v12.18.4](https://github.com/wekan/wekan/commit/5cd9f89b21e6f800c2b78da49a1c0cf7f6fba955).
Thanks to Node.js developers.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.37 2020-09-15 Wekan release
This release adds the following UI improvements:
- [UI improvements in filter, multi-selection and rules](https://github.com/wekan/wekan/pull/3279).
Thanks to helioguardabaxo and xet7.
and adds the following updates:
- [Update release scripts](https://github.com/wekan/wekan/commit/e79b7fad0a35f29020c48a4a4eedb435573c9bf1).
Thanks to xet7.
and fixes the following bugs:
- [Fix parse error in docker-compose.yml](https://github.com/wekan/wekan/pull/3278).
Thanks to devilmengcry.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.36 2020-09-15 Wekan release
This release adds the following new features:
- [Added translations for date selection popups](https://github.com/wekan/wekan/commit/f9b0da65f1de48a2af11aa7afbd767559ba95b79).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.35 2020-09-14 Wekan release
This release tries to fix the following bugs:
- [Try to fix Snap](https://github.com/wekan/wekan/commit/7173e293ef6b0d3c1fe82b5320340589c72c9326).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.34 2020-09-14 Wekan release
This release tries to fix the following bugs:
- [Try to fix Snap](https://github.com/wekan/wekan/commit/d2b84c7773f20b34bca8be23078469a8809005a6).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.33 2020-09-14 Wekan release
This release adds the following login settings:
- [Added some CAS and SAML settings](https://github.com/wekan/wekan/commit/214c86cc22f4c721a79ec0a4a4f3bbd90d673f93).
Not tested. Please test and send pull requests if it does not work.
See https://github.com/wekan/wekan/wiki/SAML and https://github.com/wekan/wekan/wiki/CAS .
Thanks to xet7.
and updates some dependencies:
- [Update dependencies](https://github.com/wekan/wekan/commit/cca041e21a66087ca4008a22cb0f5b4176801101).
Thanks to developers of dependencies.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.32 2020-09-13 Wekan release
This release tried to fix the following bugs:
- [Try to fix Snap](https://github.com/wekan/wekan/commit/).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.31 2020-09-13 Wekan release
This release tried to fix the following bugs:
- [Try to fix Snap](https://github.com/wekan/wekan/commit/fe62e12ab46c41ea30ba79795b0dc39b3451d4a2).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.30 2020-09-13 Wekan release
This release adds the following new features and improvements:
- [Add setting for OAUTH2_ADFS_ENABLED=true](https://github.com/wekan/wekan/pull/3269)
for [SSO Integration with ADFS 4.0 using OAuth 2 and OpenID](https://github.com/wekan/wekan/issues/3184).
Thanks to phaseshift3r.
- [Add setting OAUTH2_ADFS_ENABLED=false for most platforms. Remove mouse scroll settings of already removed custom scrollbar.
Add testing for both string and boolean version of true](https://github.com/wekan/wekan/commit/f6bdb4d694453d73f4bfa6a75814833594cf5000).
Thanks to xet7.
- [Design improvements in templates, card details and custom fields](https://github.com/wekan/wekan/pull/3271)
and [related change to translation](https://github.com/wekan/wekan/commit/fe40c5fd37a7c54240c080caf98b6130229f5d31).
Thanks to helioguardabaxo and xet7.
and adds the following updates:
- [Use forked & updated version of gridfs-stream](https://github.com/wekan/wekan/pull/3270).
Thanks to blaggacao.
- [Update dependencies](https://github.com/wekan/wekan/pull/3268).
Thanks to blaggacao.
- [Update npm-mongo dependency](https://github.com/wekan/wekan/commit/9fdafd20081b20302af3d1a6397fb840348f1209).
Thanks to filipenevola.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.29 2020-09-11 Wekan release
This release adds the following new features:
- [Changed markdown from marked to markdown-it](https://github.com/wekan/wekan/commit/20b01771055ca4d8871d13abb559ab92ecee10f4) and
added emoji support https://github.com/wekan/wekan/wiki/Emoji .
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.28 2020-09-11 Wekan release
This release updates some dependencies:
- [Update some dependencies](https://github.com/wekan/wekan/commit/125c4684bd6815a8f49241bc2663e82112afe67b).
Thanks to developers of dependencies.
and fixes the following bugs:
- [Fix card scrollbar on Windows](https://github.com/wekan/wekan/pull/3264).
Thanks to tborychowski.
- [Try to fix language names](https://github.com/wekan/wekan/commit/f81fd8084fd6cd1ad57daefcc22ed1fb0acaaeca).
Thanks to buplet, xoas and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.27 2020-09-09 Wekan release
This release fixes the following bugs:
- [Reverted incomplete fix for "Checklist + card title with starting number and point", because it disabled some markdown.
Also more fixes to GFM checklist not displayed properly](https://github.com/wekan/wekan/commit/bf18792d7733d6e6cfb61a8d6db4caafdcc19b34).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.26 2020-09-05 Wekan release
This release adds the following quality checks:
- [Added GitHub automatic code quality analysis](https://github.com/wekan/wekan/commit/df35683043603f6ecb9bd4f2a4b357e374397ad1).
Thanks to xet7.
and updates the following dependencies:
- [bl](https://github.com/wekan/wekan/commit/7ec671bb9f8a33c5eb28c26b98143f9b4cd9b958).
Thanks to developers of dependencies.
- [Delete markdown demo that is not in use](https://github.com/wekan/wekan/commit/d344c39d497cc291ee7927fdda900dc8bac22bc2).
Thanks to xet7.
- [Update markdown and xss](https://github.com/wekan/wekan/commit/cfcbf640d64bdfc4f3a482c32e35f396e1a22191)
Thanks to developers of dependencies.
and fixes the following bugs:
- [Disable list formatting and converting to HTML. This fixes markdown numbering and viewing bugs](https://github.com/wekan/wekan/commit/41b1c55988a9a65005ac0b9e1ddcc0596c047a49).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.25 2020-08-31 Wekan release
This release adds the following docker-compose.yml changes:
- [Mongo 4.4 does not work. Mongo 4.2 and 3.x works](https://github.com/wekan/wekan/commit/5d2daa4a80c819f0610ff2f17589de1e1085836c).
Thanks to GuidoDr for info. Related https://github.com/wekan/wekan/issues/3247
and adds the following Nextcloud documentation:
- [Improving documentation for Nextcloud integration](https://github.com/wekan/wekan/pull/3248).
Thanks to relikd.
and removes the following code and allows double quotes in code:
- Removed custom scrollbar [1](https://github.com/wekan/wekan/pull/3246) and [2](https://github.com/wekan/wekan/commit/5870d38e8e63159ede8c18d1766a4f9f6ba8987c).
Also in eslint settings allowed double quotes in code. Thanks to tborychowski and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.24 2020-08-27 Wekan release
This release adds the following updates:
- [Upgrade to Meteor 1.11](https://github.com/wekan/wekan/commit/4d49265b25595444553e1c2d6e48c7a699949654).
Thanks to Meteor developers.
- [Update bcrypt](https://github.com/wekan/wekan/commit/dee7020a5aaa90c8580ef42fa73aff0ca4ae3e12).
Thanks to bcrypt developers.
- [Update dependencies](https://github.com/wekan/wekan/commit/60b2787c559b9966d6040a622c5b971fa95241c3).
Thanks to developers of dependencies.
and adds the following translations:
- [Add Trigger and Action header words to Rule Details](https://github.com/wekan/wekan/pull/3244).
Thanks to helioguardabaxo.
- [Add Spanish (Peru) (es_PE)](https://github.com/wekan/wekan/commit/b9f87bf310b4f071c8219bb7511b15a7fa27340d).
Thanks to translators.
and adds the following mouse scroll settings:
- [Add setting for mouse scroll deltafactor. Fix snap setting for mouse scroll amount](https://github.com/wekan/wekan/commit/7e4b791c2964f4b130abbaee62ffdff1536450c4).
Thanks to danger89 and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.23 2020-08-13 Wekan release
This release fixes following CRITICAL VULNERABILITIES:
- [Update vulnerable dependency elliptic that is dependency of meteor-node-stubs that is dependency of
Wekan](https://github.com/wekan/wekan/commit/910f0cecbe7a4b3fdff603e5e74c2cb1c40b660b).
Thanks to filipenevola, neeldug, L25inux and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.22 2020-07-23 Wekan release
This release adds back these features:
- [Export to JSON and HTML .zip file](https://github.com/commit/1624fc82f7c319e84a78f29445c7867f7da15c32)
that also fixes #3216 Clone Boards not working.
Thanks to xet7.
and hides these features temporarily:
- [Hide CSV export until it's fixed in EdgeHTML compatible way](https://github.com/wekan/wekan/commit/045b8a84a29dde09201dd5108c757719d00e6f55).
Thanks to xet7.
and adds the following updates:
- [Upgrade to Node 12.18.3](https://github.com/wekan/wekan/commit/6f503ca818abff17a20b6612aeea1f9e2c4a8234).
Thanks to Node developers.
and fixes the following bugs:
- [Fix Snap](https://github.com/wekan/wekan/commit/68391a943bd37d9f98819ffb7b7a29692d0bd380).
This fix was already included to Wekan v4.21 to get it released.
TODO: Sometime migrate from Caddy v1 to Caddy v2.
Thanks to xet7.
- [Fix detecting current IP address on rebuild-wekan.sh](https://github.com/wekan/wekan/commit/ec1d8f275ff4cd720a8cd3bc918b32f9c5f5d099).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.21 2020-07-21 Wekan release
This release adds the following new features:
- [REST API: Changed edit_card and get_card_by_customfields to return full documents](https://github.com/wekan/wekan/pull/3215).
Thanks to gvespignani70.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.20 2020-07-20 Wekan release
This release adds the following updates:
- Update dependencies[Part1](https://github.com/wekan/wekan/commit/419615bed43b6e9de4030193c47137a066b85bde) and
- Update dependencies [Part1](https://github.com/wekan/wekan/commit/419615bed43b6e9de4030193c47137a066b85bde) and
[Part2](https://github.com/wekan/wekan/commit/116372e11e09ce9b8376a8694553add595e02815).
Thanks to developers of dependencies and xet7.
+20 -4
View File
@@ -8,7 +8,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.18.2 \
NODE_VERSION=v12.19.0 \
METEOR_RELEASE=1.10.2 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
@@ -41,6 +41,8 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
TRUSTED_URL="" \
WEBHOOKS_ATTRIBUTES="" \
OAUTH2_ENABLED=false \
OAUTH2_CA_CERT="" \
OAUTH2_ADFS_ENABLED=false \
OAUTH2_LOGIN_STYLE=redirect \
OAUTH2_CLIENT_ID="" \
OAUTH2_SECRET="" \
@@ -114,9 +116,23 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
CORS_ALLOW_HEADERS="" \
CORS_EXPOSE_HEADERS="" \
DEFAULT_AUTHENTICATION_METHOD="" \
SCROLLINERTIA="0" \
SCROLLAMOUNT="auto" \
PASSWORD_LOGIN_ENABLED=true
PASSWORD_LOGIN_ENABLED=true \
CAS_ENABLED=false \
CAS_BASE_URL="" \
CAS_LOGIN_URL="" \
CAS_VALIDATE_URL="" \
SAML_ENABLED=false \
SAML_PROVIDER="" \
SAML_ENTRYPOINT="" \
SAML_ISSUER="" \
SAML_CERT="" \
SAML_IDPSLO_REDIRECTURL="" \
SAML_PRIVATE_KEYFILE="" \
SAML_PUBLIC_CERTFILE="" \
SAML_IDENTIFIER_FORMAT="" \
SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE="" \
SAML_ATTRIBUTES="" \
ORACLE_OIM_ENABLED=false
# Copy the app to the image
COPY ${SRC_PATH} /home/wekan/app
+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.18.2 \
NODE_VERSION=v12.19.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.18.2 \
NODE_VERSION=v12.19.0 \
NODE_ENV=production \
NPM_VERSION=latest \
WITH_API=true \
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v4.20.0"
appVersion: "v4.52.0"
files:
userUploads:
- README.md
+10 -5
View File
@@ -15,6 +15,12 @@ template(name="cardActivities")
each activityData in currentCard.activities
+activity(activity=activityData card=card mode=mode)
template(name="editOrDeleteComment")
= ' - '
a.js-open-inlined-form {{_ "edit"}}
= ' - '
a.js-delete-comment {{_ "delete"}}
template(name="activity")
.activity
+userAvatar(userId=activity.user._id)
@@ -118,11 +124,10 @@ template(name="activity")
+viewer
= activity.comment.text
span(title=activity.createdAt).activity-meta {{ moment activity.createdAt }}
if ($eq currentUser._id activity.comment.userId)
= ' - '
a.js-open-inlined-form {{_ "edit"}}
= ' - '
a.js-delete-comment {{_ "delete"}}
if($eq currentUser._id activity.comment.userId)
+editOrDeleteComment
else if currentUser.isBoardAdmin
+editOrDeleteComment
if($eq activity.activityType 'deleteComment')
| {{{_ 'activity-deleteComment' currentData.commentId}}}.
+1 -1
View File
@@ -15,7 +15,7 @@ template(name="board")
template(name="boardBody")
.board-wrapper(class=currentBoard.colorClass)
+sidebar
.board-canvas.js-swimlanes.js-perfect-scrollbar(
.board-canvas.js-swimlanes(
class="{{#if Sidebar.isOpen}}is-sibling-sidebar-open{{/if}}"
class="{{#if MultiSelection.isActive}}is-multiselection-active{{/if}}"
class="{{#if draggingActive.get}}is-dragging-active{{/if}}")
+7 -7
View File
@@ -1,5 +1,3 @@
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
const subManager = new SubsManager();
const { calculateIndex } = Utils;
const swimlaneWhileSortingHeight = 150;
@@ -197,7 +195,7 @@ BlazeComponent.extendComponent({
if (currentUser) {
showDesktopDragHandles = (currentUser.profile || {})
.showDesktopDragHandles;
} else if (cookies.has('showDesktopDragHandles')) {
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
showDesktopDragHandles = true;
} else {
showDesktopDragHandles = false;
@@ -237,7 +235,9 @@ BlazeComponent.extendComponent({
if (currentUser) {
return (currentUser.profile || {}).boardView === 'board-view-swimlanes';
} else {
return cookies.get('boardView') === 'board-view-swimlanes';
return (
window.localStorage.getItem('boardView') === 'board-view-swimlanes'
);
}
},
@@ -246,7 +246,7 @@ BlazeComponent.extendComponent({
if (currentUser) {
return (currentUser.profile || {}).boardView === 'board-view-lists';
} else {
return cookies.get('boardView') === 'board-view-lists';
return window.localStorage.getItem('boardView') === 'board-view-lists';
}
},
@@ -255,7 +255,7 @@ BlazeComponent.extendComponent({
if (currentUser) {
return (currentUser.profile || {}).boardView === 'board-view-cal';
} else {
return cookies.get('boardView') === 'board-view-cal';
return window.localStorage.getItem('boardView') === 'board-view-cal';
}
},
@@ -417,7 +417,7 @@ BlazeComponent.extendComponent({
if (currentUser) {
return (currentUser.profile || {}).boardView === 'board-view-cal';
} else {
return cookies.get('boardView') === 'board-view-cal';
return window.localStorage.getItem('boardView') === 'board-view-cal';
}
},
}).register('calendarView');
+267 -4
View File
@@ -589,22 +589,25 @@ setBoardClear(color1,color2)
position relative
&#header-quick-access #header-user-bar .header-user-bar-name
margin: 5px 3px 0 0;
margin: 5px 3px 0 0
section#notifications-drawer
top: 46px;
top: 46px
box-shadow: 0 4px 20px rgba(0,0,0,.1)
max-width: 100%
section#notifications-drawer .header
top: 46px;
top: 46px
border-radius: 0 3px
height: 21px
background: #f7f7f7
.board-canvas
background: #f5f5f5
/* Swimlane */
.swimlane
background: #f5f5f5
background: none
.swimlane .swimlane-header-wrap .swimlane-header
font-family: Poppins
@@ -739,3 +742,263 @@ setBoardClear(color1,color2)
section#notifications-drawer .header .toggle-read
top: 18px
/*
Alternate "Modern Dark" Styling
*/
.board-color-moderndark
setBoardColor(#2a2a2a)
/* General */
body
background: #2a2a2a
/* Forms */
button[type=submit].primary, .board-color-modern input[type=submit].primary
background-color: #819C5D
.toggle-switch:checked~.toggle-label
background-color: #D2E9B4
.toggle-label:after, .board-color-modern .toggle-switch:checked~.toggle-label:after
background-color: #819C5D !important
/* Headers */
&#header-quick-access, .background-box, #header
background-color: #333333
&#header-quick-access
padding: 4px
font-size: 14px
&#header #header-main-bar
height: 30px
padding-top: 3px
padding-bottom: 3px
&#header
box-shadow: 0 6px 6px -6px rgba(0,0,0,0.8)
&#header-quick-access ul
overflow: visible
&#header-quick-access ul li.current
border: 0 !important
font-weight: bold
&#header-quick-access ul li.separator
display: none
&#header-quick-access ul li:nth-child(3)
margin-right: 10px
&#header-quick-access ul li a
padding: 5px 10px
border-radius: 2px
&#header-quick-access ul li.current a
border-radius: 2px
background: rgba(255,255,255,.2)
&#header #header-main-bar h1
font-family: Poppins
font-weight: bold
line-height: 0.8em
padding-top: 10px
/* Content */
.board-canvas
background: #2a2a2a
padding: 10px 10px 0
/* Swimlanes */
.swimlane .swimlane-header-wrap
background-color: #666666
color: #cccccc
padding: 4px 0
margin-bottom: 10px
.swimlane .swimlane-header-wrap .swimlane-header
font-family: Poppins
.swimlane
background: #2a2a2a
line-height: 15px
max-height: 100%
/* Lists */
.swimlane .list
background: #666666
border-radius: 0
border: 0px solid #666666
.swimlane .list:nth-child(even)
background: #5f5f5f
.list-header
background: #333333
padding-top: 10px
border-bottom: 6px solid #333333
.list-header .viewer
padding-left: 10px
.list-header .list-header-name
line-height: 14px
color: #eeeeee
.list-header .list-header-menu
padding-top: 17px
.list-body
scrollbar-width: thin
scrollbar-color: #343434 #999999
.list-body::-webkit-scrollbar
width: 10px
.list-body::-webkit-scrollbar-track
background: #343434
border-radius: 3px
margin: 4px 0
.list-body::-webkit-scrollbar-thumb
background-color: #999999
border-radius: 6px
border: 3px solid #343434
.list-body .open-minicard-composer:hover
background: none
box-shadow: none
border-bottom: 0
.list-body a.open-minicard-composer, .list-body a.open-minicard-composer i
color: #bbbbbb
.list-body a.open-minicard-composer:hover, .list-body a.open-minicard-composer:hover i
color: #ffffff
/* Mini Card */
.minicard
background-color: #444444
color: #cccccc
border-radius: 2px
font-size: 0.9em
padding: 10px
box-shadow: 0 4px 3px -3px rgba(0,0,0,0.8)
border-bottom: 1px solid #666666
.minicard:hover
background-color: #555555 !important
.card-label
font-size: 11px
font-weight: 400
padding: 2px 6px 0
.minicard .badges
color: #bbbbbb
.minicard .date
margin-top: 7px
font-size: 11px
.card-date.almost-due
color: #666666
.minicard.minicard-composer textarea.minicard-composer-textarea:focus
background-color: #eeeeee
color: #333333
padding: 6px
.is-selected .minicard
background-color: #666666
/* Card Details */
.card-details
background-color: #454545
color: #cccccc
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19)
border: 1px solid #111111
.card-details
scrollbar-width: thin
scrollbar-color: #343434 #999999
.card-details::-webkit-scrollbar
width: 16px
.card-details::-webkit-scrollbar-track
background: #343434
.card-details::-webkit-scrollbar-thumb
background-color: #999999
border-radius: 6px
border: 4px solid #343434
.card-details .card-details-header
background: #333333
color: #cccccc
border-bottom: 2px solid #2d2d2d
.card-details hr
background: #2d2d2d
.card-details .card-details-item-title
color: #ffffff
.card-details .new-description textarea, .card-details .new-comment textarea
background-color: #dddddd
color: #111111
.card-details .checklist
background-color: transparent
.card-details .checklist-item
background-color: rgba(255,255,255,0.1)
padding: 2px 8px
border-radius: 3px
.card-details .check-box.materialCheckBox
border-color: #ffffff
.card-details .check-box.materialCheckBox.is-checked
border-bottom: 2px solid #819C5D
border-right: 2px solid #819C5D
border-top: 0
border-left: 0
.card-details .js-add-checklist-item
margin-top: 4px
.card-details .activities .activity .activity-desc .activity-comment
background-color: rgba(255,255,255,0.1)
/* Sidebar */
.sidebar .sidebar-shadow
background-color: #222222
box-shadow: -10px 0 5px -10px #444444
border-left: 1px solid #333333
color: #cccccc
.activities .activity .activity-desc .activity-comment
background-color: #cccccc
color: #222222
/* Pop-Ups for "Modern Dark" */
.pop-over.board-color-moderndark
background-color: #454545
color: #cccccc
border: 1px solid #111111
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19)
.pop-over.board-color-moderndark .header
background-color: #333333
.pop-over.board-color-moderndark .header-title
font-family: Poppins
font-size: 16px
color: #cccccc
.pop-over.board-color-moderndark .pop-over-list li:hover > a
background-color: #819C5D !important
+2 -2
View File
@@ -7,7 +7,7 @@ $spaceBetweenTiles = 16px
li
float: left
width: 25%
width: 20%
box-sizing: border-box
position: relative
@@ -33,7 +33,7 @@ $spaceBetweenTiles = 16px
overflow: hidden;
background-color: #999
color: #f6f6f6
height: auto
height: 80px
font-size: 16px
line-height: 22px
border-radius: 3px
@@ -4,8 +4,7 @@ template(name="cardCustomFieldsPopup")
li.item(class="")
a.name.js-select-field(href="#")
span.full-name
+viewer
= name
= name
if hasCustomField
i.fa.fa-check
hr
@@ -0,0 +1,7 @@
template(name="descriptionForm")
.new-description.js-new-description(
class="{{#if descriptionFormIsOpen}}is-open{{/if}}")
form.js-new-description-form
+editor(class="js-new-description-input" data-meteor-emoji-large="true" autofocus="autofocus")
| {{getUnsavedValue 'cardDescription' _id getDescription}}
@@ -0,0 +1,33 @@
const descriptionFormIsOpen = new ReactiveVar(false);
BlazeComponent.extendComponent({
onDestroyed() {
descriptionFormIsOpen.set(false);
},
descriptionFormIsOpen() {
return descriptionFormIsOpen.get();
},
getInput() {
return this.$('.js-new-description-input');
},
events() {
return [
{
'submit .js-card-description'(event) {
event.preventDefault();
const description = this.currentComponent().getValue();
this.data().setDescription(description);
},
// Pressing Ctrl+Enter should submit the form
'keydown form textarea'(evt) {
if (evt.keyCode === 13 && (evt.metaKey || evt.ctrlKey)) {
this.find('button[type=submit]').click();
}
},
},
];
},
}).register('descriptionForm');
@@ -0,0 +1,60 @@
@import 'nib'
.new-description
position: relative
margin: 0 0 20px 0
&.is-open
.helper
display: inline-block
textarea
min-height: 100px
color: #4d4d4d
cursor: auto
overflow: hidden
word-wrap: break-word
.too-long
margin-top: 8px
textarea
background-color: #fff
border: 0
box-shadow: 0 1px 2px rgba(0, 0, 0, .23)
color: #8c8c8c
height: 36px
margin: 4px 4px 6px 0
padding: 9px 11px
width: 100%
&:hover,
&:is-open
background-color: #fff
box-shadow: 0 1px 3px rgba(0, 0, 0, .33)
border: 0
cursor: pointer
&:is-open
cursor: auto
.description-item
background-color: #fff
border: 0
box-shadow: 0 1px 2px rgba(0, 0, 0, .23)
color: #8c8c8c
height: 36px
margin: 4px 4px 6px 0
width: 92%
&:hover
background: darken(white, 12%)
&.add-description
display: flex
margin: 5px
a
display: block
margin: auto
+68 -61
View File
@@ -1,5 +1,5 @@
template(name="cardDetails")
section.card-details.js-card-details.js-perfect-scrollbar: .card-details-canvas
section.card-details.js-card-details: .card-details-canvas
.card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}')
+inlinedForm(classNames="js-card-details-title")
+editCardTitleForm
@@ -43,11 +43,27 @@ template(name="cardDetails")
p.warning {{_ 'card-archived'}}
.card-details-items
if currentBoard.allowsLabels
.card-details-item.card-details-item-labels
h3.card-details-item-title
i.fa.fa-tags
| {{_ 'labels'}}
a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}")
each labels
span.card-label(class="card-label-{{color}}" title=name)
+viewer
= name
if canModifyCard
unless currentUser.isWorker
a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
i.fa.fa-plus
if currentBoard.allowsReceivedDate
hr
.card-details-item.card-details-item-received
h3
h3.card-details-item-title
i.fa.fa-sign-out
card-details-item-title {{_ 'card-received'}}
| {{_ 'card-received'}}
if getReceived
+cardReceivedDate
else
@@ -58,9 +74,9 @@ template(name="cardDetails")
if currentBoard.allowsStartDate
.card-details-item.card-details-item-start
h3
h3.card-details-item-title
i.fa.fa-hourglass-start
card-details-item-title {{_ 'card-start'}}
| {{_ 'card-start'}}
if getStart
+cardStartDate
else
@@ -71,9 +87,9 @@ template(name="cardDetails")
if currentBoard.allowsDueDate
.card-details-item.card-details-item-due
h3
h3.card-details-item-title
i.fa.fa-sign-in
card-details-item-title {{_ 'card-due'}}
| {{_ 'card-due'}}
if getDue
+cardDueDate
else
@@ -84,9 +100,9 @@ template(name="cardDetails")
if currentBoard.allowsEndDate
.card-details-item.card-details-item-end
h3
h3.card-details-item-title
i.fa.fa-hourglass-end
card-details-item-title {{_ 'card-end'}}
| {{_ 'card-end'}}
if getEnd
+cardEndDate
else
@@ -97,10 +113,11 @@ template(name="cardDetails")
//.card-details-items
if currentBoard.allowsMembers
hr
.card-details-item.card-details-item-members
h3
h3.card-details-item-title
i.fa.fa-users
card-details-item-title {{_ 'members'}}
| {{_ 'members'}}
each getMembers
+userAvatar(userId=this cardId=../_id)
| {{! XXX Hack to hide syntaxic coloration /// }}
@@ -112,9 +129,9 @@ template(name="cardDetails")
//if assigneeSelected
if currentBoard.allowsAssignee
.card-details-item.card-details-item-assignees
h3
h3.card-details-item-title
i.fa.fa-user
card-details-item-title {{_ 'assignee'}}
| {{_ 'assignee'}}
each getAssignees
+userAvatarAssignee(userId=this cardId=../_id)
| {{! XXX Hack to hide syntaxic coloration /// }}
@@ -126,44 +143,23 @@ template(name="cardDetails")
a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}")
i.fa.fa-plus
if currentBoard.allowsLabels
.card-details-item.card-details-item-labels
h3
i.fa.fa-tags
card-details-item-title {{_ 'labels'}}
a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}")
each labels
span.card-label(class="card-label-{{color}}" title=name)
+viewer
= name
if canModifyCard
unless currentUser.isWorker
a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
i.fa.fa-plus
//.card-details-items
each customFieldsWD
.card-details-item.card-details-item-customfield
h3.card-details-item-title
+viewer
= definition.name
+cardCustomField
//.card-details-items
if getSpentTime
.card-details-item.card-details-item-spent
if getIsOvertime
h3.card-details-item-title {{_ 'overtime-hours'}}
h3.card-details-item-title
| {{_ 'overtime-hours'}}
else
h3.card-details-item-title {{_ 'spent-time-hours'}}
h3.card-details-item-title
| {{_ 'spent-time-hours'}}
+cardSpentTime
//.card-details-items
if currentBoard.allowsRequestedBy
.card-details-item.card-details-item-name
h3
h3.card-details-item-title
i.fa.fa-shopping-cart
card-details-item-title {{_ 'requested-by'}}
| {{_ 'requested-by'}}
if canModifyCard
unless currentUser.isWorker
+inlinedForm(classNames="js-card-details-requester")
@@ -181,9 +177,9 @@ template(name="cardDetails")
if currentBoard.allowsAssignedBy
.card-details-item.card-details-item-name
h3
h3.card-details-item-title
i.fa.fa-user-plus
card-details-item-title {{_ 'assigned-by'}}
| {{_ 'assigned-by'}}
if canModifyCard
unless currentUser.isWorker
+inlinedForm(classNames="js-card-details-assigner")
@@ -199,6 +195,16 @@ template(name="cardDetails")
+viewer
= getAssignedBy
//.card-details-items
if customFieldsWD
hr
each customFieldsWD
.card-details-item.card-details-item-customfield
h3.card-details-item-title
i.fa.fa-list-alt
= definition.name
+cardCustomField
if getVoteQuestion
hr
.vote-title
@@ -234,13 +240,12 @@ template(name="cardDetails")
unless currentUser.isWorker
if currentBoard.allowsDescriptionTitle
hr
h3
h3.card-details-item-title
i.fa.fa-align-left
card-details-item-title {{_ 'description'}}
| {{_ 'description'}}
if currentBoard.allowsDescriptionText
+inlinedCardDescription(classNames="card-description js-card-description")
+editor(autofocus=true)
| {{getUnsavedValue 'cardDescription' _id getDescription}}
+descriptionForm
.edit-controls.clearfix
button.primary(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
@@ -276,7 +281,7 @@ template(name="cardDetails")
+subtasks(cardId = _id)
if currentBoard.allowsAttachments
hr
h3
h3.card-details-item-title
i.fa.fa-paperclip
| {{_ 'attachments'}}
.card-checklist-attachmentGalery.card-attachmentGalery
@@ -285,7 +290,7 @@ template(name="cardDetails")
hr
unless currentUser.isNoComments
.activity-title
h3
h3.card-details-item-title
i.fa.fa-history
| {{ _ 'activity'}}
if currentUser.isBoardMember
@@ -375,17 +380,18 @@ template(name="cardDetailsActionsPopup")
a.js-move-card-to-bottom
i.fa.fa-arrow-down
| {{_ 'moveCardToBottom-title'}}
unless currentUser.isWorker
hr
ul.pop-over-list
li
a.js-move-card
i.fa.fa-arrow-right
| {{_ 'moveCardPopup-title'}}
ul.pop-over-list
li
a.js-move-card
i.fa.fa-arrow-right
| {{_ 'moveCardPopup-title'}}
unless currentUser.isWorker
li
a.js-copy-card
i.fa.fa-copy
| {{_ 'copyCardPopup-title'}}
unless currentUser.isWorker
hr
ul.pop-over-list
li
@@ -424,13 +430,14 @@ template(name="copyChecklistToManyCardsPopup")
+boardsAndLists
template(name="boardsAndLists")
label {{_ 'boards'}}:
select.js-select-boards(autofocus)
each boards
if $eq _id currentBoard._id
option(value="{{_id}}" selected) {{_ 'current'}}
else
option(value="{{_id}}") {{title}}
unless currentUser.isWorker
label {{_ 'boards'}}:
select.js-select-boards(autofocus)
each boards
if $eq _id currentBoard._id
option(value="{{_id}}" selected) {{_ 'current'}}
else
option(value="{{_id}}") {{title}}
label {{_ 'swimlanes'}}:
select.js-select-swimlanes
+11 -11
View File
@@ -8,7 +8,7 @@ Meteor.startup(() => {
BlazeComponent.extendComponent({
mixins() {
return [Mixins.InfiniteScrolling, Mixins.PerfectScrollbar];
return [Mixins.InfiniteScrolling];
},
calculateNextPeak() {
@@ -57,7 +57,7 @@ BlazeComponent.extendComponent({
},
scrollParentContainer() {
const cardPanelWidth = 510;
const cardPanelWidth = 600;
const parentComponent = this.parentComponent();
// TODO sometimes parentComponent is not available, maybe because it's not
// yet created?!
@@ -171,13 +171,6 @@ BlazeComponent.extendComponent({
if (!Utils.isMiniScreen()) {
Meteor.setTimeout(() => {
$('.card-details').mCustomScrollbar({
theme: 'minimal-dark',
setWidth: false,
setLeft: 0,
scrollbarPosition: 'outside',
mouseWheel: true,
});
this.scrollParentContainer();
}, 500);
}
@@ -257,12 +250,15 @@ BlazeComponent.extendComponent({
// Disable sorting if the current user is not a board member
this.autorun(() => {
const disabled = !userIsMember() || Utils.isMiniScreen();
const disabled = !userIsMember();
if (
$checklistsDom.data('uiSortable') ||
$checklistsDom.data('sortable')
) {
$checklistsDom.sortable('option', 'disabled', disabled);
if (Utils.isMiniScreenOrShowDesktopDragHandles()) {
$checklistsDom.sortable({ handle: '.checklist-handle'});
}
}
if ($subtasksDom.data('uiSortable') || $subtasksDom.data('sortable')) {
$subtasksDom.sortable('option', 'disabled', disabled);
@@ -675,7 +671,11 @@ Template.moveCardPopup.events({
// instead from a “component” state.
const card = Cards.findOne(Session.get('currentCard'));
const bSelect = $('.js-select-boards')[0];
const boardId = bSelect.options[bSelect.selectedIndex].value;
let boardId;
// if we are a worker, we won't have a board select so we just use the
// current boardId of the card.
if (bSelect) boardId = bSelect.options[bSelect.selectedIndex].value;
else boardId = card.boardId;
const lSelect = $('.js-select-lists')[0];
const listId = lSelect.options[lSelect.selectedIndex].value;
const slSelect = $('.js-select-swimlanes')[0];
+20 -15
View File
@@ -89,7 +89,7 @@ avatar-radius = 50%
.card-details
padding: 0
flex-shrink: 0
flex-basis: 510px
flex-basis: 600px
will-change: flex-basis
overflow-y: scroll
overflow-x: hidden
@@ -104,17 +104,13 @@ avatar-radius = 50%
.mCustomScrollBox
padding-left: 0
.ps-scrollbar-y-rail
pointer-event: all
position: absolute
.card-details-canvas
width: 470px
padding-left: 20px
width: auto
padding: 0 20px
.card-details-header
margin: 0 -20px 5px
padding 7px 16px
padding 7px 20px
background: darken(white, 7%)
border-bottom: 1px solid darken(white, 14%)
@@ -202,23 +198,32 @@ avatar-radius = 50%
margin-right: 0.5em
&:last-child
margin-right: 0
&.card-details-item-labels,
&.card-details-item-labels
display: block
word-wrap: break-word
max-width: 95%
flex-grow: 1
&.card-details-item-members,
&.card-details-item-assignees,
&.card-details-item-received,
&.card-details-item-start,
&.card-details-item-due,
&.card-details-item-end,
&.card-details-item-customfield,
&.card-details-item-name
display: block
word-wrap: break-word
max-width: 48%
max-width: 36%
flex-grow: 1
&.card-details-item-received,
&.card-details-item-start,
&.card-details-item-due,
&.card-details-item-end
display: block
word-wrap: break-word
max-width: 28%
flex-grow: 1
.card-details-item-title
font-size: 16px
color: #000
font-weight: bold
color: #4d4d4d
.card-label
padding-top: 5px
+3 -1
View File
@@ -1,6 +1,6 @@
template(name="checklists")
.checklists-title
h3
h3.card-details-item-title
i.fa.fa-check
| {{_ 'checklists'}}
if currentUser.isBoardMember
@@ -41,6 +41,8 @@ template(name="checklistDetail")
if canModifyCard
h2.title.js-open-inlined-form.is-editable
if isMiniScreenOrShowDesktopDragHandles
span.fa.checklist-handle(class="fa-arrows" title="{{_ 'dragChecklist'}}")
+viewer
= checklist.title
else
+5
View File
@@ -42,6 +42,11 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item
.js-delete-checklist
@extends .delete-text
span.fa.checklist-handle
padding-right: 20px
padding-top: 6px
float: right
.js-confirm-checklist-delete
background-color: darken(white, 3%)
+5 -7
View File
@@ -1,5 +1,3 @@
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
// Template.cards.events({
// 'click .member': Popup.open('cardMember')
// });
@@ -34,10 +32,10 @@ BlazeComponent.extendComponent({
},
{
'click .js-toggle-minicard-label-text'() {
if (cookies.has('hiddenMinicardLabelText')) {
cookies.remove('hiddenMinicardLabelText'); //true
if (window.localStorage.getItem('hiddenMinicardLabelText')) {
window.localStorage.removeItem('hiddenMinicardLabelText'); //true
} else {
cookies.set('hiddenMinicardLabelText', 'true'); //true
window.localStorage.setItem('hiddenMinicardLabelText', 'true'); //true
}
},
},
@@ -50,7 +48,7 @@ Template.minicard.helpers({
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else if (cookies.has('showDesktopDragHandles')) {
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
return true;
} else {
return false;
@@ -60,7 +58,7 @@ Template.minicard.helpers({
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).hiddenMinicardLabelText;
} else if (cookies.has('hiddenMinicardLabelText')) {
} else if (window.localStorage.getItem('hiddenMinicardLabelText')) {
return true;
} else {
return false;
+1 -1
View File
@@ -1,5 +1,5 @@
template(name="subtasks")
h3
h3.card-details-item-title
i.fa.fa-sitemap
| {{_ 'subtasks'}}
if toggleDeleteDialog.get
+1 -1
View File
@@ -1,4 +1,4 @@
export function getMembersToMap(data) {
export function csvGetMembersToMap(data) {
// we will work on the list itself (an ordered array of objects) when a
// mapping is done, we add a 'wekan' field to the object representing the
// imported member
+6 -6
View File
@@ -1,6 +1,6 @@
import trelloMembersMapper from './trelloMembersMapper';
import wekanMembersMapper from './wekanMembersMapper';
import csvMembersMapper from './csvMembersMapper';
import { trelloGetMembersToMap } from './trelloMembersMapper';
import { wekanGetMembersToMap } from './wekanMembersMapper';
import { csvGetMembersToMap } from './csvMembersMapper';
const Papa = require('papaparse');
@@ -99,13 +99,13 @@ BlazeComponent.extendComponent({
let membersToMap;
switch (importSource) {
case 'trello':
membersToMap = trelloMembersMapper.getMembersToMap(dataObject);
membersToMap = trelloGetMembersToMap(dataObject);
break;
case 'wekan':
membersToMap = wekanMembersMapper.getMembersToMap(dataObject);
membersToMap = wekanGetMembersToMap(dataObject);
break;
case 'csv':
membersToMap = csvMembersMapper.getMembersToMap(dataObject);
membersToMap = csvGetMembersToMap(dataObject);
break;
}
return membersToMap;
@@ -1,4 +1,4 @@
export function getMembersToMap(data) {
export function trelloGetMembersToMap(data) {
// we will work on the list itself (an ordered array of objects) when a
// mapping is done, we add a 'wekan' field to the object representing the
// imported member
@@ -1,4 +1,4 @@
export function getMembersToMap(data) {
export function wekanGetMembersToMap(data) {
// we will work on the list itself (an ordered array of objects) when a
// mapping is done, we add a 'wekan' field to the object representing the
// imported member
+2 -4
View File
@@ -1,5 +1,3 @@
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
const { calculateIndex } = Utils;
BlazeComponent.extendComponent({
@@ -124,7 +122,7 @@ BlazeComponent.extendComponent({
if (currentUser) {
showDesktopDragHandles = (currentUser.profile || {})
.showDesktopDragHandles;
} else if (cookies.has('showDesktopDragHandles')) {
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
showDesktopDragHandles = true;
} else {
showDesktopDragHandles = false;
@@ -185,7 +183,7 @@ Template.list.helpers({
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else if (cookies.has('showDesktopDragHandles')) {
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
return true;
} else {
return false;
-3
View File
@@ -120,9 +120,6 @@
form
margin-bottom: 9px
.ps-scrollbar-y-rail
transform: translateX(2px)
.open-minicard-composer
border-radius: 2px
color: #8c8c8c
+4 -2
View File
@@ -1,5 +1,5 @@
template(name="listBody")
.list-body.js-perfect-scrollbar
.list-body
.minicards.clearfix.js-minicards(class="{{#if reachedWipLimit}}js-list-full{{/if}}")
if cards.count
+inlinedForm(autoclose=false position="top")
@@ -105,8 +105,10 @@ template(name="searchElementPopup")
each boards
option(value="{{_id}}") {{title}}
form.js-search-term-form
label
| {{_ 'template'}}
input(type="text" name="searchTerm" placeholder="{{_ 'search-example'}}" autofocus dir="auto")
.list-body.js-perfect-scrollbar.search-card-results
.list-body.search-card-results
.minicards.clearfix.js-minicards
if isBoardTemplateSearch
each results
+3 -3
View File
@@ -8,7 +8,7 @@ BlazeComponent.extendComponent({
},
mixins() {
return [Mixins.PerfectScrollbar];
return [];
},
openForm(options) {
@@ -523,7 +523,7 @@ BlazeComponent.extendComponent({
BlazeComponent.extendComponent({
mixins() {
return [Mixins.PerfectScrollbar];
return [];
},
onCreated() {
@@ -721,7 +721,7 @@ BlazeComponent.extendComponent({
onRendered() {
this.spinner = this.find('.sk-spinner-list');
this.container = this.$(this.spinner).parents('.js-perfect-scrollbar')[0];
this.container = this.$(this.spinner).parents('.list-body')[0];
$(this.container).on(
`scroll.spinner_${this.swimlaneId}_${this.listId}`,
+1 -3
View File
@@ -1,5 +1,3 @@
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
let listsColors;
Meteor.startup(() => {
listsColors = Lists.simpleSchema()._schema.color.allowedValues;
@@ -110,7 +108,7 @@ Template.listHeader.helpers({
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else if (cookies.has('showDesktopDragHandles')) {
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
return true;
} else {
return false;
+23 -2
View File
@@ -91,6 +91,7 @@ Template.editor.onRendered(() => {
};
const editor = '.editor';
const selectors = [
`.js-new-description-form ${editor}`,
`.js-new-comment-form ${editor}`,
`.js-edit-comment ${editor}`,
].join(','); // only new comment and edit comment
@@ -264,6 +265,26 @@ Template.editor.onRendered(() => {
import sanitizeXss from 'xss';
// Additional safeAttrValue function to allow for other specific protocols
// See https://github.com/leizongmin/js-xss/issues/52#issuecomment-241354114
function mySafeAttrValue(tag, name, value, cssFilter) {
// only when the tag is 'a' and attribute is 'href'
// then use your custom function
if (tag === 'a' && name === 'href') {
// only filter the value if starts with 'cbthunderlink:' or 'aodroplink'
if (/^thunderlink:/ig.test(value) || /^cbthunderlink:/ig.test(value) || /^aodroplink:/ig.test(value)) {
return value;
}
else {
// use the default safeAttrValue function to process all non cbthunderlinks
return sanitizeXss.safeAttrValue(tag, name, value, cssFilter);
}
} else {
// use the default safeAttrValue function to process it
return sanitizeXss.safeAttrValue(tag, name, value, cssFilter);
}
};
// XXX I believe we should compute a HTML rendered field on the server that
// would handle markdown and user mentions. We can simply have two
// fields, one source, and one compiled version (in HTML) and send only the
@@ -277,7 +298,7 @@ Blaze.Template.registerHelper(
const view = this;
let content = Blaze.toHTML(view.templateContentBlock);
const currentBoard = Boards.findOne(Session.get('currentBoard'));
if (!currentBoard) return HTML.Raw(sanitizeXss(content));
if (!currentBoard) return HTML.Raw(sanitizeXss(content, { safeAttrValue: mySafeAttrValue }));
const knowedUsers = currentBoard.members.map(member => {
const u = Users.findOne(member.userId);
if (u) {
@@ -321,7 +342,7 @@ Blaze.Template.registerHelper(
content = content.replace(fullMention, Blaze.toHTML(link));
}
return HTML.Raw(sanitizeXss(content));
return HTML.Raw(sanitizeXss(content, { safeAttrValue: mySafeAttrValue }));
}),
);
+13 -11
View File
@@ -19,6 +19,19 @@ template(name="header")
= title
#header-new-board-icon
else
//-
On sandstorm, the logo shouldn't be clickable, because we only have one
page/document on it, and we don't want to see the home page containing
the list of all boards.
unless currentSetting.hideLogo
if currentSetting.customTopLeftCornerLogoImageUrl
if currentSetting.customTopLeftCornerLogoLinkUrl
a(href="{{currentSetting.customTopLeftCornerLogoLinkUrl}}")
img(src="{{currentSetting.customTopLeftCornerLogoImageUrl}}" height="{{#if currentSetting.customTopLeftCornerLogoHeight}}#{currentSetting.customTopLeftCornerLogoHeight}{{else}}27{{/if}}" width="auto" margin="0" padding="0")
unless currentSetting.customTopLeftCornerLogoLinkUrl
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="")
ul
li
a(href="{{pathFor 'home'}}")
@@ -52,17 +65,6 @@ template(name="header")
#header-main-bar(class="{{#if wrappedHeader}}wrapper{{/if}}")
+Template.dynamic(template=headerBar)
//unless hideLogo
//-
On sandstorm, the logo shouldn't be clickable, because we only have one
page/document on it, and we don't want to see the home page containing
the list of all boards.
// unless currentSetting.hideLogo
// a.wekan-logo(href="{{pathFor 'home'}}" title="{{_ 'header-logo-title'}}")
// img(src="{{pathFor '/logo-header.png'}}" alt="")
if appIsOffline
+offlineWarning
+21
View File
@@ -19,6 +19,27 @@ head
template(name="userFormsLayout")
section.auth-layout
if currentSetting.hideLogo
h1.at-form-landing-logo
br
br
unless currentSetting.hideLogo
h1.at-form-landing-logo
if currentSetting.customLoginLogoImageUrl
if currentSetting.customLoginLogoLinkUrl
a(href="{{currentSetting.customLoginLogoLinkUrl}}")
img(src="{{currentSetting.customLoginLogoImageUrl}}" width="300" height="auto")
br
unless currentSetting.customLoginLogoLinkUrl
img(src="{{currentSetting.customLoginLogoImageUrl}}" width="300" height="auto")
br
unless currentSetting.customLoginLogoImageUrl
img(src="{{pathFor '/wekan-logo.svg'}}" alt="" width="300" height="auto")
br
if currentSetting.textBelowCustomLoginLogo
+viewer
| {{currentSetting.textBelowCustomLoginLogo}}
br
section.auth-dialog
if isLoading
+loader
+37
View File
@@ -74,10 +74,34 @@ Template.userFormsLayout.helpers({
let name = lang.name;
if (lang.name === 'br') {
name = 'Brezhoneg';
} 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 === 'Español de Puerto Rico') {
name = 'español de Puerto Rico';
} 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 === 'oc') {
name = 'Occitan';
} else if (lang.name === 'st') {
name = 'Sãotomense';
} else if (lang.name === '繁体中文(台湾)') {
name = '繁體中文(台灣)';
}
@@ -145,6 +169,19 @@ async function authentication(event, templateInstance) {
});
});
case 'saml':
return new Promise(resolve => {
const provider = Meteor.settings.public.SAML_PROVIDER;
Meteor.loginWithSaml(
{
provider,
},
function() {
resolve(FlowRouter.go('/'));
},
);
});
case 'cas':
return new Promise(resolve => {
Meteor.loginWithCas(match, password, function() {
+1 -2
View File
@@ -276,7 +276,7 @@ kbd
padding-bottom: 0
.wrapper
max-width: 1200px
width: calc(100% - 20px)
margin: 0 auto
.relative
@@ -447,7 +447,6 @@ a
flex-direction: column
align-items: center
justify-content: center
height: 100%
.auth-dialog
margin: 0 !important
-5
View File
@@ -107,11 +107,6 @@ $popupWidth = 300px
padding: 8px 4px 8px 10px
margin-right: 8px
&::-webkit-scrollbar-button
display: block
height: 4px
width: 4px
.at-form
.at-error, .at-result
padding: 8px 12px
@@ -1,16 +0,0 @@
const { isTouchDevice } = Utils;
Mixins.PerfectScrollbar = BlazeComponent.extendComponent({
onRendered() {
if (!isTouchDevice()) {
const component = this.mixinParent();
const domElement = component.find('.js-perfect-scrollbar');
Ps.initialize(domElement);
// XXX We should create an event map to be consistent with other components
// but since BlazeComponent doesn't merge Mixins events transparently I
// prefered to use a jQuery event (which is what an event map ends up doing)
component.$(domElement).on('mouseenter', () => Ps.update(domElement));
}
},
});
@@ -1,2 +0,0 @@
.ps-container
position: relative
+5 -1
View File
@@ -6,10 +6,14 @@ template(name="ruleDetails")
.triggers-content
.triggers-body
.triggers-main-body
h4
| {{_ 'r-trigger'}}
div.trigger-item
div.trigger-content
div.trigger-text
= trigger
= trigger
h4
| {{_ 'r-action'}}
div.trigger-item
div.trigger-content
div.trigger-text
+2
View File
@@ -2,10 +2,12 @@
overflow:hidden
overflow-y:scroll
max-height: 400px
padding-right: 5px
.rules-lists-item
display: block
position: relative
overflow: auto
border-bottom: 1px solid #bfbfbf
p
display: inline-block
float: left
@@ -104,6 +104,8 @@ template(name="peopleRow")
a.edit-user
i.fa.fa-edit
| {{_ 'edit'}}
a.more-settings-user
i.fa.fa-ellipsis-h
template(name="editUserPopup")
form
@@ -200,3 +202,10 @@ template(name="newUserPopup")
input.js-profile-password(type="password")
div.buttonsContainer
input.primary.wide(type="submit" value="{{_ 'save'}}")
template(name="settingsUserPopup")
ul.pop-over-list
li
a.impersonate-user
i.fa.fa-user
| {{_ 'impersonate-user'}}
+14
View File
@@ -194,6 +194,7 @@ BlazeComponent.extendComponent({
return [
{
'click a.edit-user': Popup.open('editUser'),
'click a.more-settings-user': Popup.open('settingsUser'),
},
];
},
@@ -343,3 +344,16 @@ Template.newUserPopup.events({
Popup.close();
},
});
Template.settingsUserPopup.events({
'click .impersonate-user'(event) {
event.preventDefault();
Meteor.call('impersonate', this.userId, err => {
if (!err) {
FlowRouter.go('/');
Meteor.connection.setUserId(this.userId);
}
});
},
});
@@ -46,3 +46,6 @@ table
div
margin: auto
.more-settings-user
margin-left: 10px;
+31 -8
View File
@@ -163,13 +163,6 @@ template(name='announcementSettings')
template(name='layoutSettings')
ul#layout-setting.setting-detail
//li.layout-form
.title {{_ 'hide-logo'}}
.form-group.flex
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}")
span {{_ 'yes'}}
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="false" checked="{{#unless currentSetting.hideLogo}}checked{{/unless}}")
span {{_ 'no'}}
li.layout-form
.title {{_ 'display-authentication-method'}}
.form-group.flex
@@ -184,10 +177,40 @@ template(name='layoutSettings')
.title {{_ 'custom-product-name'}}
.form-group
input.wekan-form-control#product-name(type="text", placeholder="" value="{{currentSetting.productName}}")
li.layout-form
.title {{_ 'hide-logo'}}
.form-group.flex
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}")
span {{_ 'yes'}}
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="false" checked="{{#unless currentSetting.hideLogo}}checked{{/unless}}")
span {{_ 'no'}}
li.layout-form
.title {{_ 'custom-login-logo-image-url'}}
.form-group
input.wekan-form-control#custom-login-logo-image-url(type="text", placeholder="" value="{{currentSetting.customLoginLogoImageUrl}}")
li.layout-form
.title {{_ 'custom-login-logo-link-url'}}
.form-group
input.wekan-form-control#custom-login-logo-link-url(type="text", placeholder="" value="{{currentSetting.customLoginLogoLinkUrl}}")
li.layout-form
.title {{_ 'text-below-custom-login-logo'}}
.form-group
textarea#text-below-custom-login-logo.wekan-form-control= currentSetting.textBelowCustomLoginLogo
li.layout-form
.title {{_ 'custom-top-left-corner-logo-image-url'}}
.form-group
input.wekan-form-control#custom-top-left-corner-logo-image-url(type="text", placeholder="" value="{{currentSetting.customTopLeftCornerLogoImageUrl}}")
li.layout-form
.title {{_ 'custom-top-left-corner-logo-link-url'}}
.form-group
input.wekan-form-control#custom-top-left-corner-logo-link-url(type="text", placeholder="" value="{{currentSetting.customTopLeftCornerLogoLinkUrl}}")
li.layout-form
.title {{_ 'custom-top-left-corner-logo-height'}}
.form-group
input.wekan-form-control#custom-top-left-corner-logo-height(type="text", placeholder="" value="{{currentSetting.customTopLeftCornerLogoHeight}}")
li
button.js-save-layout.primary {{_ 'save'}}
template(name='selectAuthenticationMethod')
select#defaultAuthenticationMethod
each authentications
+30
View File
@@ -167,6 +167,30 @@ BlazeComponent.extendComponent({
const productName = $('#product-name')
.val()
.trim();
const customLoginLogoImageUrl = $('#custom-login-logo-image-url')
.val()
.trim();
const customLoginLogoLinkUrl = $('#custom-login-logo-link-url')
.val()
.trim();
const textBelowCustomLoginLogo = $('#text-below-custom-login-logo')
.val()
.trim();
const customTopLeftCornerLogoImageUrl = $(
'#custom-top-left-corner-logo-image-url',
)
.val()
.trim();
const customTopLeftCornerLogoLinkUrl = $(
'#custom-top-left-corner-logo-link-url',
)
.val()
.trim();
const customTopLeftCornerLogoHeight = $(
'#custom-top-left-corner-logo-height',
)
.val()
.trim();
const hideLogoChange = $('input[name=hideLogo]:checked').val() === 'true';
const displayAuthenticationMethod =
$('input[name=displayAuthenticationMethod]:checked').val() === 'true';
@@ -177,6 +201,12 @@ BlazeComponent.extendComponent({
$set: {
productName,
hideLogo: hideLogoChange,
customLoginLogoImageUrl,
customLoginLogoLinkUrl,
textBelowCustomLoginLogo,
customTopLeftCornerLogoImageUrl,
customTopLeftCornerLogoLinkUrl,
customTopLeftCornerLogoHeight,
displayAuthenticationMethod,
defaultAuthenticationMethod,
},
+1 -1
View File
@@ -9,7 +9,7 @@ template(name="sidebar")
a.board-header-btn.js-shortcuts
i.fa.fa-keyboard-o
span {{_ 'keyboard-shortcuts' }}
.sidebar-content.js-board-sidebar-content.js-perfect-scrollbar
.sidebar-content.js-board-sidebar-content
//a.hide-btn.js-hide-sidebar
// i.fa.fa-navicon
unless isDefaultView
+7 -7
View File
@@ -1,5 +1,3 @@
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
Sidebar = null;
const defaultView = 'home';
@@ -16,7 +14,7 @@ const viewTitles = {
BlazeComponent.extendComponent({
mixins() {
return [Mixins.InfiniteScrolling, Mixins.PerfectScrollbar];
return [Mixins.InfiniteScrolling];
},
onCreated() {
@@ -112,10 +110,12 @@ BlazeComponent.extendComponent({
currentUser = Meteor.user();
if (currentUser) {
Meteor.call('toggleMinicardLabelText');
} else if (cookies.has('hiddenMinicardLabelText')) {
cookies.remove('hiddenMinicardLabelText');
} else if (window.localStorage.getItem('hiddenMinicardLabelText')) {
window.localStorage.removeItem('hiddenMinicardLabelText');
location.reload();
} else {
cookies.set('hiddenMinicardLabelText', 'true');
window.localStorage.setItem('hiddenMinicardLabelText', 'true');
location.reload();
}
},
'click .js-shortcuts'() {
@@ -133,7 +133,7 @@ Template.homeSidebar.helpers({
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).hiddenMinicardLabelText;
} else if (cookies.has('hiddenMinicardLabelText')) {
} else if (window.localStorage.getItem('hiddenMinicardLabelText')) {
return true;
} else {
return false;
+3 -2
View File
@@ -34,6 +34,7 @@
color: darken(white, 50%)
font-size: 1em
margin-bottom: 10px
font-weight: bold
i.fa
margin-right: 3px
@@ -167,8 +168,8 @@
button
float: right
margin: 0
margin-bottom: 5px
padding: 0 2px 0 10px
margin: 0 0 5px 5px
padding: 0 10px 0 10px
@media screen and (max-width: 800px)
.board-sidebar
+23 -3
View File
@@ -4,10 +4,14 @@
and #each x in y constructors to fix this.
template(name="filterSidebar")
h3 {{_ 'list-filter-label'}}
ul.sidebar-list
span {{_ 'list-filter-label'}}
form.js-list-filter
input(type="text")
hr
h3
i.fa.fa-tags
| {{_ 'filter-labels-label'}}
ul.sidebar-list
li(class="{{#if Filter.labelIds.isSelected undefined}}active{{/if}}")
a.name.js-toggle-label-filter
@@ -27,6 +31,9 @@ template(name="filterSidebar")
if Filter.labelIds.isSelected _id
i.fa.fa-check
hr
h3
i.fa.fa-users
| {{_ 'filter-member-label'}}
ul.sidebar-list
li(class="{{#if Filter.members.isSelected undefined}}active{{/if}}")
a.name.js-toggle-member-filter
@@ -45,6 +52,9 @@ template(name="filterSidebar")
if Filter.members.isSelected _id
i.fa.fa-check
hr
h3
i.fa.fa-user
| {{_ 'filter-assignee-label'}}
ul.sidebar-list
li(class="{{#if Filter.assignees.isSelected undefined}}active{{/if}}")
a.name.js-toggle-assignee-filter
@@ -63,6 +73,9 @@ template(name="filterSidebar")
if Filter.assignees.isSelected _id
i.fa.fa-check
hr
h3
i.fa.fa-list-alt
| {{_ 'filter-custom-fields-label'}}
ul.sidebar-list
li(class="{{#if Filter.customFields.isSelected undefined}}active{{/if}}")
a.name.js-toggle-custom-fields-filter
@@ -78,6 +91,8 @@ template(name="filterSidebar")
if Filter.customFields.isSelected _id
i.fa.fa-check
hr
h3
| {{_ 'other-filters-label'}}
ul.sidebar-list
li(class="{{#if Filter.archive.isSelected _id}}active{{/if}}")
a.name.js-toggle-archive-filter
@@ -85,7 +100,6 @@ template(name="filterSidebar")
| {{_ 'filter-show-archive'}}
if Filter.archive.isSelected _id
i.fa.fa-check
hr
ul.sidebar-list
li(class="{{#if Filter.hideEmpty.isSelected _id}}active{{/if}}")
a.name.js-toggle-hideEmpty-filter
@@ -94,7 +108,7 @@ template(name="filterSidebar")
if Filter.hideEmpty.isSelected _id
i.fa.fa-check
hr
span {{_ 'advanced-filter-label'}}
h3 {{_ 'advanced-filter-label'}}
input.js-field-advanced-filter(type="text")
span {{_ 'advanced-filter-description'}}
if Filter.isActive
@@ -107,6 +121,9 @@ template(name="filterSidebar")
span {{_ 'filter-to-selection'}}
template(name="multiselectionSidebar")
h3
i.fa.fa-tags
| {{_ 'multi-selection-label'}}
ul.sidebar-list
each currentBoard.labels
li
@@ -122,6 +139,9 @@ template(name="multiselectionSidebar")
else if someSelectedElementHave 'label' _id
i.fa.fa-ellipsis-h
hr
h3
i.fa.fa-users
| {{_ 'multi-selection-member'}}
ul.sidebar-list
each currentBoard.activeMembers
with getUser userId
@@ -1,7 +1,7 @@
template(name="searchSidebar")
form.js-search-term-form
input(type="text" name="searchTerm" placeholder="{{_ 'search-example'}}" autofocus dir="auto")
.list-body.js-perfect-scrollbar
.list-body
.minilists.clearfix.js-minilists
each (lists)
a.minilist-wrapper.js-minilist(href=absoluteUrl)
@@ -1,5 +1,3 @@
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
const { calculateIndexData } = Utils;
let swimlaneColors;
@@ -35,7 +33,7 @@ Template.swimlaneHeader.helpers({
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else if (cookies.has('showDesktopDragHandles')) {
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
return true;
} else {
return false;
+3 -5
View File
@@ -1,5 +1,3 @@
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
const { calculateIndex } = Utils;
function currentListIsInThisSwimlane(swimlaneId) {
@@ -102,7 +100,7 @@ function initSortable(boardComponent, $listsDom) {
if (currentUser) {
showDesktopDragHandles = (currentUser.profile || {})
.showDesktopDragHandles;
} else if (cookies.has('showDesktopDragHandles')) {
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
showDesktopDragHandles = true;
} else {
showDesktopDragHandles = false;
@@ -178,7 +176,7 @@ BlazeComponent.extendComponent({
if (currentUser) {
showDesktopDragHandles = (currentUser.profile || {})
.showDesktopDragHandles;
} else if (cookies.has('showDesktopDragHandles')) {
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
showDesktopDragHandles = true;
} else {
showDesktopDragHandles = false;
@@ -269,7 +267,7 @@ Template.swimlane.helpers({
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else if (cookies.has('showDesktopDragHandles')) {
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
return true;
} else {
return false;
+12 -15
View File
@@ -1,6 +1,3 @@
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
Template.headerUserBar.events({
'click .js-open-header-member-menu': Popup.open('memberMenu'),
'click .js-change-avatar': Popup.open('changeAvatar'),
@@ -200,7 +197,7 @@ Template.changeSettingsPopup.helpers({
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else if (cookies.has('showDesktopDragHandles')) {
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
return true;
} else {
return false;
@@ -210,7 +207,7 @@ Template.changeSettingsPopup.helpers({
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).hasHiddenSystemMessages;
} else if (cookies.has('hasHiddenSystemMessages')) {
} else if (window.localStorage.getItem('hasHiddenSystemMessages')) {
return true;
} else {
return false;
@@ -221,7 +218,7 @@ Template.changeSettingsPopup.helpers({
if (currentUser) {
return Meteor.user().getLimitToShowCardsCount();
} else {
return cookies.get('limitToShowCardsCount');
return window.localStorage.getItem('limitToShowCardsCount');
}
},
weekDays(startDay) {
@@ -242,7 +239,7 @@ Template.changeSettingsPopup.helpers({
if (currentUser) {
return currentUser.getStartDayOfWeek();
} else {
return cookies.get('startDayOfWeek');
return window.localStorage.getItem('startDayOfWeek');
}
},
});
@@ -252,20 +249,20 @@ Template.changeSettingsPopup.events({
currentUser = Meteor.user();
if (currentUser) {
Meteor.call('toggleDesktopDragHandles');
} else if (cookies.has('showDesktopDragHandles')) {
cookies.remove('showDesktopDragHandles');
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
window.localStorage.removeItem('showDesktopDragHandles');
} else {
cookies.set('showDesktopDragHandles', 'true');
window.localStorage.setItem('showDesktopDragHandles', 'true');
}
},
'click .js-toggle-system-messages'() {
currentUser = Meteor.user();
if (currentUser) {
Meteor.call('toggleSystemMessages');
} else if (cookies.has('hasHiddenSystemMessages')) {
cookies.remove('hasHiddenSystemMessages');
} else if (window.localStorage.getItem('hasHiddenSystemMessages')) {
window.localStorage.removeItem('hasHiddenSystemMessages');
} else {
cookies.set('hasHiddenSystemMessages', 'true');
window.localStorage.setItem('hasHiddenSystemMessages', 'true');
}
},
'click .js-apply-user-settings'(event, templateInstance) {
@@ -283,14 +280,14 @@ Template.changeSettingsPopup.events({
if (currentUser) {
Meteor.call('changeLimitToShowCardsCount', minLimit);
} else {
cookies.set('limitToShowCardsCount', minLimit);
window.localStorage.setItem('limitToShowCardsCount', minLimit);
}
}
if (!isNaN(startDay)) {
if (currentUser) {
Meteor.call('changeStartDayOfWeek', startDay);
} else {
cookies.set('startDayOfWeek', startDay);
window.localStorage.setItem('startDayOfWeek', startDay);
}
}
Popup.back();
+4
View File
@@ -30,3 +30,7 @@ Blaze.registerHelper('getUser', userId => Users.findOne(userId));
Blaze.registerHelper('concat', (...args) => args.slice(0, -1).join(''));
Blaze.registerHelper('isMiniScreen', () => Utils.isMiniScreen());
Blaze.registerHelper('isShowDesktopDragHandles', () => Utils.isShowDesktopDragHandles());
Blaze.registerHelper('isMiniScreenOrShowDesktopDragHandles', () => Utils.isMiniScreenOrShowDesktopDragHandles());
-9
View File
@@ -65,15 +65,6 @@ window.ExportHtml = Popup => {
'.list-composer,.js-card-composer, .js-add-card',
),
).forEach(elem => elem.remove());
Array.from(
document.querySelectorAll('.js-perfect-scrollbar > div:nth-of-type(n+2)'),
).forEach(elem => elem.remove());
Array.from(document.querySelectorAll('.js-perfect-scrollbar')).forEach(
elem => {
elem.style = 'overflow-y: auto !important;';
elem.classList.remove('js-perfect-scrollbar');
},
);
Array.from(document.querySelectorAll('[href]:not(link)')).forEach(elem =>
elem.attributes.removeNamedItem('href'),
);
+31 -13
View File
@@ -1,43 +1,44 @@
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
Utils = {
setBoardView(view) {
currentUser = Meteor.user();
if (currentUser) {
Meteor.user().setBoardView(view);
} else if (view === 'board-view-swimlanes') {
cookies.set('boardView', 'board-view-swimlanes'); //true
window.localStorage.setItem('boardView', 'board-view-swimlanes'); //true
location.reload();
} else if (view === 'board-view-lists') {
cookies.set('boardView', 'board-view-lists'); //true
window.localStorage.setItem('boardView', 'board-view-lists'); //true
location.reload();
} else if (view === 'board-view-cal') {
cookies.set('boardView', 'board-view-cal'); //true
window.localStorage.setItem('boardView', 'board-view-cal'); //true
location.reload();
} else {
cookies.set('boardView', 'board-view-swimlanes'); //true
window.localStorage.setItem('boardView', 'board-view-swimlanes'); //true
location.reload();
}
},
unsetBoardView() {
cookies.remove('boardView');
cookies.remove('collapseSwimlane');
window.localStorage.removeItem('boardView');
window.localStorage.removeItem('collapseSwimlane');
},
boardView() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).boardView;
} else if (cookies.get('boardView') === 'board-view-swimlanes') {
} else if (
window.localStorage.getItem('boardView') === 'board-view-swimlanes'
) {
return 'board-view-swimlanes';
} else if (cookies.get('boardView') === 'board-view-lists') {
} else if (
window.localStorage.getItem('boardView') === 'board-view-lists'
) {
return 'board-view-lists';
} else if (cookies.get('boardView') === 'board-view-cal') {
} else if (window.localStorage.getItem('boardView') === 'board-view-cal') {
return 'board-view-cal';
} else {
cookies.set('boardView', 'board-view-swimlanes'); //true
window.localStorage.setItem('boardView', 'board-view-swimlanes'); //true
location.reload();
return 'board-view-swimlanes';
}
@@ -189,6 +190,23 @@ Utils = {
//return false;
},
// returns if desktop drag handles are enabled
isShowDesktopDragHandles() {
let currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else if (cookies.has('showDesktopDragHandles')) {
return true;
} else {
return false;
}
},
// returns if mini screen or desktop drag handles
isMiniScreenOrShowDesktopDragHandles() {
return this.isMiniScreen() || this.isShowDesktopDragHandles()
},
calculateIndexData(prevData, nextData, nItems = 1) {
let base, increment;
// If we drop the card to an empty column
+30 -8
View File
@@ -93,7 +93,9 @@ services:
#-------------------------------------------------------------------------------------
# ==== MONGODB AND METEOR VERSION ====
# a) For Wekan Meteor 1.8.x version at master branch, use mongo 4.x
image: mongo:latest
# DOES NOT WORK: mongo 4.4, see https://github.com/wekan/wekan/issues/3247
# WORKS: mongo 3.x and 4.2
image: mongo:4.2
# b) For Wekan Meteor 1.6.x version at devel branch.
# Only for Snap and Sandstorm while they are not upgraded yet to Meteor 1.8.x
#image: mongo:3.2.21
@@ -240,11 +242,6 @@ services:
# https://github.com/wekan/wekan/pull/2560
- RICHER_CARD_COMMENT_EDITOR=false
#---------------------------------------------------------------
# ==== MOUSE SCROLL ====
# https://github.com/wekan/wekan/issues/2949
- SCROLLINERTIA=0
- SCROLLAMOUNT=auto
#---------------------------------------------------------------
# ==== CARD OPENED, SEND WEBHOOK MESSAGE ====
# https://github.com/wekan/wekan/issues/2518
- CARD_OPENED_WEBHOOK_ENABLED=false
@@ -326,6 +323,9 @@ services:
# ==== Debug OIDC OAuth2 etc ====
#- DEBUG=true
#-----------------------------------------------------------------
# ==== OAUTH2 ORACLE on premise identity manager OIM ====
#- ORACLE_OIM_ENABLED=true
#-----------------------------------------------------------------
# ==== OAUTH2 AZURE ====
# https://github.com/wekan/wekan/wiki/Azure
# 1) Register the application with Azure. Make sure you capture
@@ -333,6 +333,10 @@ services:
# 2) Configure the environment variables. This differs slightly
# by installation type, but make sure you have the following:
#- OAUTH2_ENABLED=true
# Optional OAuth2 CA Cert, see https://github.com/wekan/wekan/issues/3299
#- OAUTH2_CA_CERT=ABCD1234
# Use OAuth2 ADFS additional changes. Also needs OAUTH2_ENABLED=true setting.
#- OAUTH2_ADFS_ENABLED=false
# OAuth2 login style: popup or redirect.
#- OAUTH2_LOGIN_STYLE=redirect
# Application GUID captured during app registration:
@@ -353,8 +357,9 @@ services:
#- OAUTH2_EMAIL_MAP=email
#-----------------------------------------------------------------
# ==== OAUTH2 Nextcloud ====
# 1) Register the application with Nextcloud: https://your.nextcloud/settings/admin/security
# 1) Register the application with Nextcloud: https://your.nextcloud/index.php/settings/admin/security
# Make sure you capture the application ID as well as generate a secret key.
# Use https://your.wekan/_oauth/oidc for the redirect URI.
# 2) Configure the environment variables. This differs slightly
# by installation type, but make sure you have the following:
#- OAUTH2_ENABLED=true
@@ -598,9 +603,26 @@ services:
# example : LOGOUT_ON_MINUTES=55
#- LOGOUT_ON_MINUTES=
#-------------------------------------------------------------------
# Hide password login form
# Hide password login form
# - PASSWORD_LOGIN_ENABLED=true
#-------------------------------------------------------------------
#- CAS_ENABLED=true
#- CAS_BASE_URL=https://cas.example.com/cas
#- CAS_LOGIN_URL=https://cas.example.com/login
#- CAS_VALIDATE_URL=https://cas.example.com/cas/p3/serviceValidate
#---------------------------------------------------------------------
#- SAML_ENABLED=true
#- SAML_PROVIDER=
#- SAML_ENTRYPOINT=
#- SAML_ISSUER=
#- SAML_CERT=
#- SAML_IDPSLO_REDIRECTURL=
#- SAML_PRIVATE_KEYFILE=
#- SAML_PUBLIC_CERTFILE=
#- SAML_IDENTIFIER_FORMAT=
#- SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE=
#- SAML_ATTRIBUTES=
#---------------------------------------------------------------------
depends_on:
- wekandb
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+24 -2
View File
@@ -138,6 +138,7 @@
"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",
@@ -337,15 +338,20 @@
"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",
@@ -354,6 +360,7 @@
"headerBarCreateBoardPopup-title": "Create Board",
"home": "Home",
"import": "Import",
"impersonate-user": "Impersonate user",
"link": "Link",
"import-board": "import board",
"import-board-c": "Import board",
@@ -398,6 +405,7 @@
"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",
@@ -420,6 +428,8 @@
"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",
@@ -465,8 +475,9 @@
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
"search-example": "Text to search for?",
"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",
@@ -505,6 +516,12 @@
"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",
"view-it": "View it",
"warn-list-archived": "warning: this card is in an list at Archive",
@@ -638,6 +655,8 @@
"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",
@@ -809,5 +828,8 @@
"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"
"hide-checked-items": "Hide checked items",
"task": "Task",
"create-task": "Create Task",
"ok": "OK"
}
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+835
View File
@@ -0,0 +1,835 @@
{
"accept": "Aceptar",
"act-activity-notify": "Notificación de actividad",
"act-addAttachment": "agregado el adjunto __attachment__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-deleteAttachment": "eliminado el adjunto __attachment__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-addSubtask": "agregada la subtarea __subtask__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-addLabel": "agregada la etiqueta __label__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-addedLabel": "agregada la etiqueta __label__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-removeLabel": "eliminada la etiqueta __label__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-removedLabel": "eliminada la etiqueta __label__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-addChecklist": "agregada la lista de comprobación __checklist__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-addChecklistItem": "agregado el elemento __checklistItem__ a la lista de comprobación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-removeChecklist": "eliminada la lista de comprobación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-removeChecklistItem": "eliminado el elemento __checklistItem__ de la lista de comprobación __checkList__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-checkedItem": "marcado el elemento __checklistItem__ de la lista de comprobación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-uncheckedItem": "desmarcado el elemento __checklistItem__ de la lista de comprobación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-completeChecklist": "completada la lista de comprobación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-uncompleteChecklist": "no completada la lista de comprobación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-addComment": "comentario en la tarjeta__card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-editComment": "comentario editado en la tarjeta __card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-deleteComment": "comentario eliminado en la tarjeta __card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-createBoard": "creó el tablero __board__",
"act-createSwimlane": "creó el carril «swimlane» __swimlane__ en el tablero __board__",
"act-createCard": "creada la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-createCustomField": "creado el campo personalizado __customField__ en el tablero __board__",
"act-deleteCustomField": "eliminado el campo personalizado __customField__ del tablero __board__",
"act-setCustomField": "editado el campo personalizado __customField__: __customFieldValue__ en la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-createList": "agregada la lista __list__ al tablero __board__",
"act-addBoardMember": "agregado el mimbro __member__ al tablero __board__",
"act-archivedBoard": "El tablero __board__ se ha archivado",
"act-archivedCard": "La tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__ se ha archivado",
"act-archivedList": "La lista __list__ del carril __swimlane__ del tablero __board__ se ha archivado",
"act-archivedSwimlane": "El carril __swimlane__ del tablero __board__ se ha archivado",
"act-importBoard": "importado el tablero __board__",
"act-importCard": "importada la tarjeta __card__ a la lista __list__ del carrril __swimlane__ del tablero __board__",
"act-importList": "importada la lista __list__ al carril __swimlane__ del tablero __board__",
"act-joinMember": "agregado el miembro __member__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-moveCard": "movida la tarjeta __card__ del tablero __board__ de la lista __oldList__ del carril __oldSwimlane__ a la lista __list__ del carril __swimlane__",
"act-moveCardToOtherBoard": "movida la tarjeta __card__ de la lista __oldList__ del carril __oldSwimlane__ del tablero __oldBoard__ a la lista __list__ del carril __swimlane__ del tablero __board__",
"act-removeBoardMember": "eliminado el miembro __member__ del tablero __board__",
"act-restoredCard": "restaurada la tarjeta __card__ a la lista __list__ del carril __swimlane__ del tablero __board__",
"act-unjoinMember": "eliminado el miembro __member__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Acciones",
"activities": "Actividades",
"activity": "Actividad",
"activity-added": "ha agregado %s a %s",
"activity-archived": "%s se ha archivado",
"activity-attached": "ha adjuntado %s a %s",
"activity-created": "ha creado %s",
"activity-customfield-created": "creó el campo personalizado %s",
"activity-excluded": "ha excluido %s de %s",
"activity-imported": "ha importado %s a %s desde %s",
"activity-imported-board": "ha importado %s desde %s",
"activity-joined": "se ha unido a %s",
"activity-moved": "ha movido %s de %s a %s",
"activity-on": "en %s",
"activity-removed": "ha eliminado %s de %s",
"activity-sent": "ha enviado %s a %s",
"activity-unjoined": "se ha desvinculado de %s",
"activity-subtask-added": "ha agregado la subtarea a %s",
"activity-checked-item": "marcado %s en la lista de comprobación %s de %s",
"activity-unchecked-item": "desmarcado %s en la lista de comprobación %s de %s",
"activity-checklist-added": "ha agregado una lista de comprobación a %s",
"activity-checklist-removed": "eliminada una lista de comprobación desde %s",
"activity-checklist-completed": "lista de comprobación completada %s de %s",
"activity-checklist-uncompleted": "no completado la lista de comprobación %s de %s",
"activity-checklist-item-added": "ha agregado el elemento de la lista de comprobación a «%s» en %s",
"activity-checklist-item-removed": "eliminado un elemento de la lista de comprobación desde «%s» en %s",
"add": "Agregar",
"activity-checked-item-card": "marcado %s en la lista de comprobación %s",
"activity-unchecked-item-card": "desmarcado %s en la lista de comprobación %s",
"activity-checklist-completed-card": "completada la lista de comprobación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
"activity-checklist-uncompleted-card": "no completó la lista de comprobación %s",
"activity-editComment": "comentario editado",
"activity-deleteComment": "comentario eliminado",
"add-attachment": "Agregar adjunto",
"add-board": "Agregar tablero",
"add-card": "Agregar una tarjeta",
"add-swimlane": "Agregar un carril «swimlane»",
"add-subtask": "Agregar subtarea",
"add-checklist": "Agregar lista de comprobación",
"add-checklist-item": "Agregar un elemento a la lista de comprobación",
"add-cover": "Agregar portada",
"add-label": "Agregar una etiqueta",
"add-list": "Agregar una lista",
"add-members": "Agregar miembros",
"added": "Agregada el",
"addMemberPopup-title": "Miembros",
"admin": "Administrador",
"admin-desc": "Puede ver y editar tarjetas, eliminar miembros y cambiar la configuración del tablero.",
"admin-announcement": "Anuncio",
"admin-announcement-active": "Habilitar los anuncios en todo el sistema",
"admin-announcement-title": "Anuncio del administrador",
"all-boards": "Todos los tableros",
"and-n-other-card": "y __count__ tarjeta más",
"and-n-other-card_plural": "y otras __count__ tarjetas",
"apply": "Aplicar",
"app-is-offline": "Cargando, por favor espere. Actualizar la página causará pérdida de datos. Si la carga no funciona, por favor compruebe que el servidor no se ha detenido.",
"archive": "Archivar",
"archive-all": "Archivar todo",
"archive-board": "Archivar este tablero",
"archive-card": "Archivar esta tarjeta",
"archive-list": "Archivar esta lista",
"archive-swimlane": "Archivar este carril",
"archive-selection": "Archivar esta selección",
"archiveBoardPopup-title": "¿Archivar este tablero?",
"archived-items": "Archivo",
"archived-boards": "Tableros en el archivo",
"restore-board": "Restaurar el tablero",
"no-archived-boards": "No hay tableros en el archivo",
"archives": "Archivo",
"template": "Plantilla",
"templates": "Plantillas",
"assign-member": "Asignar miembros",
"attached": "adjuntado",
"attachment": "Adjunto",
"attachment-delete-pop": "La eliminación de un fichero adjunto es permanente. Esta acción no puede deshacerse.",
"attachmentDeletePopup-title": "¿Eliminar el adjunto?",
"attachments": "Adjuntos",
"auto-watch": "Suscribirse automáticamente a los tableros cuando son creados",
"avatar-too-big": "El avatar es muy grande (70 KB máx.)",
"back": "Atrás",
"board-change-color": "Cambiar el color",
"board-nb-stars": "%s destacados",
"board-not-found": "Tablero no encontrado",
"board-private-info": "Este tablero será <strong>privado</strong>.",
"board-public-info": "Este tablero será <strong>público</strong>.",
"boardChangeColorPopup-title": "Cambiar el fondo del tablero",
"boardChangeTitlePopup-title": "Renombrar el tablero",
"boardChangeVisibilityPopup-title": "Cambiar visibilidad",
"boardChangeWatchPopup-title": "Cambiar vigilancia",
"boardMenuPopup-title": "Configuración del tablero",
"boardChangeViewPopup-title": "Vista del tablero",
"boards": "Tableros",
"board-view": "Vista del tablero",
"board-view-cal": "Calendario",
"board-view-swimlanes": "Carriles",
"board-view-collapse": "Contraer",
"board-view-gantt": "Gantt",
"board-view-lists": "Listas",
"bucket-example": "Como «Cosas por hacer» por ejemplo",
"cancel": "Cancelar",
"card-archived": "Se archivó esta tarjeta",
"board-archived": "Se archivó este tablero",
"card-comments-title": "Esta tarjeta tiene %s comentarios.",
"card-delete-notice": "la eliminación es permanente. Perderá todas las acciones asociadas a esta tarjeta.",
"card-delete-pop": "Se eliminarán todas las acciones de la fuente de actividades y no se podrá volver a abrir la tarjeta. Esta acción no puede deshacerse.",
"card-delete-suggest-archive": "Puede mover una tarjeta al archivo para quitarla del tablero y preservar la actividad.",
"card-due": "Vence",
"card-due-on": "Vence el",
"card-spent": "Tiempo consumido",
"card-edit-attachments": "Editar los adjuntos",
"card-edit-custom-fields": "Editar los campos personalizados",
"card-edit-labels": "Editar las etiquetas",
"card-edit-members": "Editar los miembros",
"card-labels-title": "Cambia las etiquetas de la tarjeta.",
"card-members-title": "Agregar o eliminar miembros del tablero desde la tarjeta.",
"card-start": "Comienza",
"card-start-on": "Comienza el",
"cardAttachmentsPopup-title": "Adjuntar desde",
"cardCustomField-datePopup-title": "Cambiar la fecha",
"cardCustomFieldsPopup-title": "Editar los campos personalizados",
"cardStartVotingPopup-title": "Comience a votar",
"positiveVoteMembersPopup-title": "Favorables",
"negativeVoteMembersPopup-title": "Contrarios",
"card-edit-voting": "Editar votación",
"editVoteEndDatePopup-title": "Cambie fecha de termino del voto",
"allowNonBoardMembers": "Permitir todos los usuarios autentificados",
"vote-question": "Pregunta de votación",
"vote-public": "Mostrar quien voto que",
"vote-for-it": "por esto",
"vote-against": "contrarios",
"deleteVotePopup-title": "¿Borrar voto?",
"vote-delete-pop": "El borrado es permanente. Perderá todas las acciones asociadas con este voto.",
"cardDeletePopup-title": "¿Eliminar la tarjeta?",
"cardDetailsActionsPopup-title": "Acciones de la tarjeta",
"cardLabelsPopup-title": "Etiquetas",
"cardMembersPopup-title": "Miembros",
"cardMorePopup-title": "Más",
"cardTemplatePopup-title": "Crear plantilla",
"cards": "Tarjetas",
"cards-count": "Tarjetas",
"casSignIn": "Iniciar sesión con CAS",
"cardType-card": "Tarjeta",
"cardType-linkedCard": "Tarjeta enlazada",
"cardType-linkedBoard": "Tablero enlazado",
"change": "Cambiar",
"change-avatar": "Cambiar el avatar",
"change-password": "Cambiar la contraseña",
"change-permissions": "Cambiar los permisos",
"change-settings": "Cambiar la configuración",
"changeAvatarPopup-title": "Cambiar el avatar",
"changeLanguagePopup-title": "Cambiar el idioma",
"changePasswordPopup-title": "Cambiar la contraseña",
"changePermissionsPopup-title": "Cambiar los permisos",
"changeSettingsPopup-title": "Cambiar la configuración",
"subtasks": "Subtareas",
"checklists": "Listas de comprobación",
"click-to-star": "Haga clic para destacar este tablero.",
"click-to-unstar": "Haga clic para dejar de destacar este tablero.",
"clipboard": "el portapapeles o con arrastrar y soltar",
"close": "Cerrar",
"close-board": "Cerrar el tablero",
"close-board-pop": "Podrá restaurar el tablero haciendo clic en el botón «Archivo» de la cabecera de inicio.",
"color-black": "negro",
"color-blue": "azul",
"color-crimson": "carmesí",
"color-darkgreen": "verde oscuro",
"color-gold": "oro",
"color-gray": "gris",
"color-green": "verde",
"color-indigo": "añil",
"color-lime": "lima",
"color-magenta": "magenta",
"color-mistyrose": "rosa claro",
"color-navy": "azul marino",
"color-orange": "naranja",
"color-paleturquoise": "turquesa",
"color-peachpuff": "melocotón",
"color-pink": "rosa",
"color-plum": "púrpura",
"color-purple": "violeta",
"color-red": "roja",
"color-saddlebrown": "marrón",
"color-silver": "plata",
"color-sky": "celeste",
"color-slateblue": "azul",
"color-white": "blanco",
"color-yellow": "amarillo",
"unset-color": "Desmarcar",
"comment": "Comentar",
"comment-placeholder": "Escribir comentario",
"comment-only": "Sólo comentarios",
"comment-only-desc": "Sólo puede comentar en las tarjetas.",
"no-comments": "No hay comentarios",
"no-comments-desc": "No se pueden mostrar comentarios ni actividades.",
"worker": "Trabajador",
"worker-desc": "Sólo puede mover tarjetas, asignarse a la tarjeta y comentar.",
"computer": "Computadora",
"confirm-subtask-delete-dialog": "¿Seguro que desea eliminar la subtarea?",
"confirm-checklist-delete-dialog": "¿Seguro que desea eliminar la lista de comprobación?",
"copy-card-link-to-clipboard": "Copiar el enlace de la tarjeta al portapapeles",
"linkCardPopup-title": "Enlazar tarjeta",
"searchElementPopup-title": "Buscar",
"copyCardPopup-title": "Copiar la tarjeta",
"copyChecklistToManyCardsPopup-title": "Copiar la plantilla de la lista de comprobación en varias tarjetas",
"copyChecklistToManyCardsPopup-instructions": "Títulos y descripciones de las tarjetas de destino en formato JSON",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Título de la primera tarjeta\", \"description\":\"Descripción de la primera tarjeta\"}, {\"title\":\"Título de la segunda tarjeta\",\"description\":\"Descripción de la segunda tarjeta\"},{\"title\":\"Título de la última tarjeta\",\"description\":\"Descripción de la última tarjeta\"} ]",
"create": "Crear",
"createBoardPopup-title": "Crear tablero",
"chooseBoardSourcePopup-title": "Importar un tablero",
"createLabelPopup-title": "Crear etiqueta",
"createCustomField": "Crear un campo",
"createCustomFieldPopup-title": "Crear un campo",
"current": "actual",
"custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
"custom-field-checkbox": "Casilla de verificación",
"custom-field-currency": "Divisa",
"custom-field-currency-option": "Código de divisa",
"custom-field-date": "Fecha",
"custom-field-dropdown": "Lista desplegable",
"custom-field-dropdown-none": "(ninguno)",
"custom-field-dropdown-options": "Opciones de la lista",
"custom-field-dropdown-options-placeholder": "Presione Entrar para agregar más opciones",
"custom-field-dropdown-unknown": "(desconocido)",
"custom-field-number": "Número",
"custom-field-text": "Texto",
"custom-fields": "Campos personalizados",
"date": "Fecha",
"decline": "Declinar",
"default-avatar": "Avatar por defecto",
"delete": "Eliminar",
"deleteCustomFieldPopup-title": "¿Eliminar el campo personalizado?",
"deleteLabelPopup-title": "¿Eliminar la etiqueta?",
"description": "Descripción",
"disambiguateMultiLabelPopup-title": "Desambiguar la acción de etiqueta",
"disambiguateMultiMemberPopup-title": "Desambiguar la acción de miembro",
"discard": "Descartar",
"done": "Hecho",
"download": "Descargar",
"edit": "Editar",
"edit-avatar": "Cambiar el avatar",
"edit-profile": "Editar el perfil",
"edit-wip-limit": "Cambiar el límite del trabajo en proceso",
"soft-wip-limit": "Límite del trabajo en proceso flexible",
"editCardStartDatePopup-title": "Cambiar la fecha de comienzo",
"editCardDueDatePopup-title": "Cambiar la fecha de vencimiento",
"editCustomFieldPopup-title": "Editar el campo",
"editCardSpentTimePopup-title": "Cambiar el tiempo consumido",
"editLabelPopup-title": "Cambiar la etiqueta",
"editNotificationPopup-title": "Editar las notificaciones",
"editProfilePopup-title": "Editar el perfil",
"email": "Correo electrónico",
"email-enrollAccount-subject": "Cuenta creada en __siteName__",
"email-enrollAccount-text": "Hola __user__,\n\nPara empezar a utilizar el servicio, simplemente haga clic en el siguiente enlace.\n\n__url__\n\nGracias.",
"email-fail": "Error al enviar el correo",
"email-fail-text": "Error al intentar enviar el correo",
"email-invalid": "Correo no válido",
"email-invite": "Invitar vía correo electrónico",
"email-invite-subject": "__inviter__ ha enviado una invitación",
"email-invite-text": "Estimado __user__,\n\n__inviter__ le invita a unirse al tablero «__board__» para colaborar.\n\nPor favor, haga clic en el siguiente enlace:\n\n__url__\n\nGracias.",
"email-resetPassword-subject": "Restablezca su contraseña en __siteName__",
"email-resetPassword-text": "Hola __user__,\n\nPara restablecer su contraseña, simplemente haga clic en el siguiente enlace.\n\n__url__\n\nGracias.",
"email-sent": "Correo enviado",
"email-verifyEmail-subject": "Verifique su dirección de correo electrónico en __siteName__",
"email-verifyEmail-text": "Hola __user__,\n\nPara verificar el correo electrónico de su cuenta, simplemente haga clic en el siguiente enlace.\n\n__url__\n\nGracias.",
"enable-wip-limit": "Habilitar el límite del trabajo en proceso",
"error-board-doesNotExist": "El tablero no existe",
"error-board-notAdmin": "Es necesario ser administrador de este tablero para hacer eso",
"error-board-notAMember": "Es necesario ser miembro de este tablero para hacer eso",
"error-json-malformed": "El texto no es un JSON válido",
"error-json-schema": "Sus datos JSON no incluyen la información apropiada en el formato correcto",
"error-csv-schema": "Su archivo CSV (valores separados por comas) o TSV (valores separados por tabulaciones) no incluye la información adecuada en el formato correcto",
"error-list-doesNotExist": "La lista no existe",
"error-user-doesNotExist": "El usuario no existe",
"error-user-notAllowSelf": "No se puede invitar a sí mismo",
"error-user-notCreated": "El usuario no ha sido creado",
"error-username-taken": "Este nombre de usuario ya está en uso",
"error-email-taken": "Esta dirección de correo ya está en uso",
"export-board": "Exportar tablero",
"export-board-json": "Exportar tablero a JSON",
"export-board-csv": "Exportar tablero a CSV",
"export-board-tsv": "Exportar tablero a TSV",
"export-board-html": "Exportar tablero a HTML",
"exportBoardPopup-title": "Exportar tablero",
"sort": "Ordenar",
"sort-desc": "Clic para ordenar lista",
"list-sort-by": "Ordenar la lista por:",
"list-label-modifiedAt": "Hora de último acceso",
"list-label-title": "Nombre de la lista",
"list-label-sort": "Su orden manual",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filtrar",
"filter-cards": "Filtrar tarjetas o listas",
"list-filter-label": "Filtrar listas por título",
"filter-clear": "Limpiar el filtro",
"filter-labels-label": "Filtrar por etiqueta",
"filter-no-label": "Sin etiqueta",
"filter-member-label": "Filtrar por miembro",
"filter-no-member": "Sin miembro",
"filter-assignee-label": "Filtrar por asignado",
"filter-no-assignee": "No asignado",
"filter-custom-fields-label": "Filtrar por campos personalizados",
"filter-no-custom-fields": "Sin campos personalizados",
"filter-show-archive": "Mostrar las listas archivadas",
"filter-hide-empty": "Ocultar las listas vacías",
"filter-on": "Filtrado activado",
"filter-on-desc": "Está filtrando las tarjetas en este tablero. Haga clic aquí para editar el filtro.",
"filter-to-selection": "Filtrar la selección",
"other-filters-label": "Otros filtros",
"advanced-filter-label": "Filtro avanzado",
"advanced-filter-description": "El filtrado avanzado permite escribir una cadena que contiene los siguientes operadores: == != <= >= && || ( ) Se utiliza un espacio como separador entre los operadores. Se pueden filtrar todos los campos personalizados escribiendo sus nombres y valores. Por ejemplo: Campo1 == Valor1. Nota: Si los campos o valores contienen espacios, deben encapsularse entre comillas simples. Por ejemplo: 'Campo 1' == 'Valor 1'. Para omitir los caracteres de control único (' \\/), se usa \\. Por ejemplo: Campo1 = I\\'m. También se pueden combinar múltiples condiciones. Por ejemplo: C1 == V1 || C1 == V2. Normalmente todos los operadores se interpretan de izquierda a derecha. Se puede cambiar el orden colocando paréntesis. Por ejemplo: C1 == V1 && ( C2 == V2 || C2 == V3 ). También se puede buscar en campos de texto usando expresiones regulares: C1 == /Tes.*/i",
"fullname": "Nombre completo",
"header-logo-title": "Volver a su página de tableros",
"hide-system-messages": "Ocultar las notificaciones de actividad",
"headerBarCreateBoardPopup-title": "Crear tablero",
"home": "Inicio",
"import": "Importar",
"impersonate-user": "Impersonar usuario",
"link": "Enlace",
"import-board": "importar un tablero",
"import-board-c": "Importar un tablero",
"import-board-title-trello": "Importar un tablero desde Trello",
"import-board-title-wekan": "Importar tablero desde una exportación previa",
"import-board-title-csv": "Importar tablero desde CSV/TSV",
"from-trello": "Desde Trello",
"from-wekan": "Desde exportación previa",
"from-csv": "Desde CSV/TSV",
"import-board-instruction-trello": "En su tablero de Trello, vaya a «Menú», luego «Más», «Imprimir y exportar», «Exportar en formato JSON», y copie el texto resultante.",
"import-board-instruction-csv": "Pegue en sus Valores separados por comas (CSV)/Valores separados por tabulaciones (TSV).",
"import-board-instruction-wekan": "En su tablero, vaya a «Menú», luego «Exportar tablero», y copie el texto en el archivo descargado.",
"import-board-instruction-about-errors": "Si se obtienen errores al importar el tablero, a veces la importación sigue funcionando, y el tablero está en la página de todos los tableros.",
"import-json-placeholder": "Pegue sus datos JSON válidos aquí",
"import-csv-placeholder": "Pegue sus datos CSV/TSV válidos aquí",
"import-map-members": "Asignar miembros",
"import-members-map": "Su tablero importado tiene algunos miembros. Por favor, asigne los miembros que desea importar a sus usuarios",
"import-show-user-mapping": "Revisión de la asignación de miembros",
"import-user-select": "Elija su usuario existente que desea utilizar como este miembro",
"importMapMembersAddPopup-title": "Seleccionar miembro",
"info": "Versión",
"initials": "Iniciales",
"invalid-date": "Fecha no válida",
"invalid-time": "Tiempo no válido",
"invalid-user": "Usuario no válido",
"joined": "se ha unido",
"just-invited": "Ha sido invitado a este tablero",
"keyboard-shortcuts": "Atajos de teclado",
"label-create": "Crear una etiqueta",
"label-default": "etiqueta %s (por defecto)",
"label-delete-pop": "Se eliminará esta etiqueta de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
"labels": "Etiquetas",
"language": "Cambiar el idioma",
"last-admin-desc": "No se pueden cambiar los roles porque debe haber al menos un administrador.",
"leave-board": "Abandonar el tablero",
"leave-board-pop": "¿Seguro que desea abandonar __boardTitle__? Será desvinculado de todas las tarjetas en este tablero.",
"leaveBoardPopup-title": "¿Abandonar el tablero?",
"link-card": "Enlazar a esta tarjeta",
"list-archive-cards": "Archivar todas las tarjetas de esta lista",
"list-archive-cards-pop": "Esto eliminará todas las tarjetas de esta lista del tablero. Para ver las tarjetas en el archivo y traerlas de vuelta al tablero, haga clic en «Menú» > «Archivo».",
"list-move-cards": "Mover todas las tarjetas de esta lista",
"list-select-cards": "Seleccionar todas las tarjetas de esta lista",
"set-color-list": "Cambiar el color",
"listActionPopup-title": "Acciones de la lista",
"settingsUserPopup-title": "Configuración de usuario",
"swimlaneActionPopup-title": "Acciones del carril «swimlane»",
"swimlaneAddPopup-title": "Agregar un carril «swimlane» debajo",
"listImportCardPopup-title": "Importar una tarjeta de Trello",
"listImportCardsTsvPopup-title": "Importar CSV/TSV",
"listMorePopup-title": "Más",
"link-list": "Enlazar a esta lista",
"list-delete-pop": "Todas las acciones serán eliminadas de la fuente de actividades y no se podrá recuperar la lista. Esta acción no puede deshacerse.",
"list-delete-suggest-archive": "Puede mover una lista a archivo para eliminarla del tablero y preservar la actividad.",
"lists": "Listas",
"swimlanes": "Carriles",
"log-out": "Finalizar la sesión",
"log-in": "Iniciar sesión",
"loginPopup-title": "Iniciar sesión",
"memberMenuPopup-title": "Configuración de miembros",
"members": "Miembros",
"menu": "Menú",
"move-selection": "Mover la selección",
"moveCardPopup-title": "Mover la tarjeta",
"moveCardToBottom-title": "Mover al final",
"moveCardToTop-title": "Mover al principio",
"moveSelectionPopup-title": "Mover la selección",
"multi-selection": "Selección múltiple",
"multi-selection-label": "Establecer etiqueta para la selección",
"multi-selection-member": "Establecer miembro para la selección",
"multi-selection-on": "Selección múltiple activada",
"muted": "Silenciado",
"muted-info": "Nunca se le notificará ningún cambio en este tablero",
"my-boards": "Mis tableros",
"name": "Nombre",
"no-archived-cards": "No hay tarjetas archivadas.",
"no-archived-lists": "No hay listas archivadas.",
"no-archived-swimlanes": "No hay carriles archivados.",
"no-results": "Sin resultados",
"normal": "Normal",
"normal-desc": "Puede ver y editar las tarjetas. No puede cambiar la configuración.",
"not-accepted-yet": "La invitación no ha sido aceptada aún",
"notify-participate": "Recibir actualizaciones de cualquier tarjeta en la que participas como creador o miembro",
"notify-watch": "Recibir actualizaciones de cualquier tablero, lista o tarjeta que esté vigilando",
"optional": "opcional",
"or": "o",
"page-maybe-private": "Esta página puede ser privada. Puede verla <a href='%s'>iniciando sesión</a>.",
"page-not-found": "Página no encontrada.",
"password": "Contraseña",
"paste-or-dragdrop": "pegar o arrastrar y soltar un fichero de imagen (sólo imagen)",
"participating": "Participando",
"preview": "Previsualizar",
"previewAttachedImagePopup-title": "Previsualizar",
"previewClipboardImagePopup-title": "Previsualizar",
"private": "Privado",
"private-desc": "Este tablero es privado. Sólo las personas agregadas al tablero pueden verlo y editarlo.",
"profile": "Perfil",
"public": "Público",
"public-desc": "Este tablero es público. Es visible para cualquiera a través del enlace, y se mostrará en los buscadores como Google. Sólo las personas agregadas al tablero pueden editarlo.",
"quick-access-description": "Destaca un tablero para añadir un acceso directo en esta barra.",
"remove-cover": "Eliminar portada",
"remove-from-board": "Desvincular del tablero",
"remove-label": "Eliminar la etiqueta",
"listDeletePopup-title": "¿Eliminar la lista?",
"remove-member": "Eliminar miembro",
"remove-member-from-card": "Eliminar de la tarjeta",
"remove-member-pop": "¿Eliminar a __name__ (__username__) de __boardTitle__? El miembro será eliminado de todas las tarjetas de este tablero y recibirá una notificación.",
"removeMemberPopup-title": "¿Eliminar miembro?",
"rename": "Renombrar",
"rename-board": "Renombrar el tablero",
"restore": "Restaurar",
"save": "Guardar",
"search": "Buscar",
"rules": "Reglas",
"search-cards": "Buscar entre los títulos, las descripciones de las tarjetas/listas y los campos personalizados en este tablero.",
"search-example": "Escriba el texto que busca y presione Entrar",
"select-color": "Seleccionar el color",
"select-board": "Seleccionar tablero",
"set-wip-limit-value": "Cambiar el límite para el número máximo de tareas en esta lista.",
"setWipLimitPopup-title": "Cambiar el límite del trabajo en proceso",
"shortcut-assign-self": "Asignarse a la tarjeta actual",
"shortcut-autocomplete-emoji": "Autocompletar emoji",
"shortcut-autocomplete-members": "Autocompletar miembros",
"shortcut-clear-filters": "Limpiar todos los filtros",
"shortcut-close-dialog": "Cerrar el cuadro de diálogo",
"shortcut-filter-my-cards": "Filtrar mis tarjetas",
"shortcut-show-shortcuts": "Mostrar esta lista de atajos",
"shortcut-toggle-filterbar": "Alternar la barra lateral del filtro",
"shortcut-toggle-sidebar": "Alternar la barra lateral del tablero",
"show-cards-minimum-count": "Mostrar recuento de tarjetas si la lista contiene más de",
"sidebar-open": "Abrir la barra lateral",
"sidebar-close": "Cerrar la barra lateral",
"signupPopup-title": "Crear una cuenta",
"star-board-title": "Haga clic para destacar este tablero. Se mostrará en la parte superior de su lista de tableros.",
"starred-boards": "Tableros destacados",
"starred-boards-description": "Los tableros destacados se mostrarán en la parte superior de su lista de tableros.",
"subscribe": "Suscribirse",
"team": "Equipo",
"this-board": "este tablero",
"this-card": "esta tarjeta",
"spent-time-hours": "Tiempo consumido (horas)",
"overtime-hours": "Tiempo excesivo (horas)",
"overtime": "Tiempo excesivo",
"has-overtime-cards": "Hay tarjetas con el tiempo excedido",
"has-spenttime-cards": "Se ha excedido el tiempo de las tarjetas",
"time": "Hora",
"title": "Título",
"tracking": "Siguiendo",
"tracking-info": "Será notificado de cualquier cambio en las tarjetas en las que participa como creador o miembro.",
"type": "Tipo",
"unassign-member": "Desasignar miembro",
"unsaved-description": "Tiene una descripción sin guardar.",
"unwatch": "Dejar de vigilar",
"upload": "Cargar",
"upload-avatar": "Cargar un avatar",
"uploaded-avatar": "Avatar cargado",
"custom-top-left-corner-logo-image-url": "URL de imagen del logo personalizado de la esquina superior izquierda",
"custom-top-left-corner-logo-link-url": "URL de enlace del logo personalizado de la esquina superior izquierda",
"custom-top-left-corner-logo-height": "Altura del logo de la esquina superior izquierda. Por defecto: 27",
"custom-login-logo-image-url": "URL de imagen del logo personalizado de inicio de sesión",
"custom-login-logo-link-url": "URL de enlace del logo personalizado de inicio de sesión",
"text-below-custom-login-logo": "Texto debajo del logo personalizado de inicio de sesión",
"username": "Nombre de usuario",
"view-it": "Verla",
"warn-list-archived": "advertencia: esta tarjeta está en una lista en el archivo",
"watch": "Vigilar",
"watching": "Vigilando",
"watching-info": "Será notificado de cualquier cambio en este tablero",
"welcome-board": "Tablero de bienvenida",
"welcome-swimlane": "Hito 1",
"welcome-list1": "Básicos",
"welcome-list2": "Avanzados",
"card-templates-swimlane": "Plantilla de tarjeta",
"list-templates-swimlane": "Listar plantillas",
"board-templates-swimlane": "Plantilla de tablero",
"what-to-do": "¿Qué desea hacer?",
"wipLimitErrorPopup-title": "El límite del trabajo en proceso no es válido.",
"wipLimitErrorPopup-dialog-pt1": "El número de tareas en esta lista es mayor que el límite del trabajo en proceso que ha definido.",
"wipLimitErrorPopup-dialog-pt2": "Por favor, mueva algunas tareas de esta lista, o establezca un límite de trabajo en proceso más alto.",
"admin-panel": "Panel de administración",
"settings": "Configuración",
"people": "Personas",
"registration": "Registro",
"disable-self-registration": "Deshabilitar autoregistro",
"invite": "Invitar",
"invite-people": "Invitar a personas",
"to-boards": "A el(los) tablero(s)",
"email-addresses": "Direcciones de correo electrónico",
"smtp-host-description": "La dirección del servidor SMTP que maneja sus correos electrónicos.",
"smtp-port-description": "Puerto usado por el servidor SMTP para mandar correos",
"smtp-tls-description": "Habilitar el soporte TLS para el servidor SMTP",
"smtp-host": "Servidor SMTP",
"smtp-port": "Puerto SMTP",
"smtp-username": "Nombre de usuario",
"smtp-password": "Contraseña",
"smtp-tls": "Soporte TLS",
"send-from": "Desde",
"send-smtp-test": "Enviarte un correo de prueba a ti mismo",
"invitation-code": "Código de Invitación",
"email-invite-register-subject": "__inviter__ le envió una invitación",
"email-invite-register-text": "Estimado __user__,\n\n__inviter__ le invita a participar en un tablero Kanban para colaborar.\n\nPor favor, siga el siguiente enlace:\n__url__\n\nY su código de invitación es: __icode__\n\nGracias.",
"email-smtp-test-subject": "Prueba de email SMTP",
"email-smtp-test-text": "El correo se ha enviado correctamente",
"error-invitation-code-not-exist": "El código de invitación no existe",
"error-notAuthorized": "No está autorizado a ver esta página.",
"webhook-title": "Nombre del Webhook",
"webhook-token": "Token (opcional para la autenticación)",
"outgoing-webhooks": "Webhooks salientes",
"bidirectional-webhooks": "Webhooks de doble sentido",
"outgoingWebhooksPopup-title": "Webhooks salientes",
"boardCardTitlePopup-title": "Filtro de títulos de tarjeta",
"disable-webhook": "Deshabilitar este Webhook",
"global-webhook": "Webhooks globales",
"new-outgoing-webhook": "Nuevo webhook saliente",
"no-name": "(Desconocido)",
"Node_version": "Versión de Node",
"Meteor_version": "Versión de Meteor",
"MongoDB_version": "Versión de MongoDB",
"MongoDB_storage_engine": "Motor de almacenamiento de MongoDB",
"MongoDB_Oplog_enabled": "Oplog de MongoDB habilitado",
"OS_Arch": "Arquitectura del sistema",
"OS_Cpus": "Número de CPUs del sistema",
"OS_Freemem": "Memoria libre del sistema",
"OS_Loadavg": "Carga media del sistema",
"OS_Platform": "Plataforma del sistema",
"OS_Release": "Publicación del sistema",
"OS_Totalmem": "Memoria total del sistema",
"OS_Type": "Tipo de sistema",
"OS_Uptime": "Tiempo activo del sistema",
"days": "días",
"hours": "horas",
"minutes": "minutos",
"seconds": "segundos",
"show-field-on-card": "Mostrar este campo en la tarjeta",
"automatically-field-on-card": "Crear campos automáticamente para todas las tarjetas.",
"showLabel-field-on-card": "Mostrar etiquetas de campos en la minitarjeta.",
"yes": "Sí",
"no": "No",
"accounts": "Cuentas",
"accounts-allowEmailChange": "Permitir cambiar el correo electrónico",
"accounts-allowUserNameChange": "Permitir cambiar el nombre de usuario",
"createdAt": "Creado en",
"verified": "Verificado",
"active": "Activo",
"card-received": "Recibido",
"card-received-on": "Recibido el",
"card-end": "Finalizado",
"card-end-on": "Finalizado el",
"editCardReceivedDatePopup-title": "Cambiar la fecha de recepción",
"editCardEndDatePopup-title": "Cambiar la fecha de finalización",
"setCardColorPopup-title": "Cambiar el color",
"setCardActionsColorPopup-title": "Elegir un color",
"setSwimlaneColorPopup-title": "Elegir un color",
"setListColorPopup-title": "Elegir un color",
"assigned-by": "Asignado por",
"requested-by": "Solicitado por",
"board-delete-notice": "Se eliminarán todas las listas, tarjetas y acciones asociadas a este tablero. Esta acción no puede deshacerse.",
"delete-board-confirm-popup": "Se eliminarán todas las listas, tarjetas, etiquetas y actividades, y no podrás recuperar los contenidos del tablero. Esta acción no puede deshacerse.",
"boardDeletePopup-title": "¿Eliminar el tablero?",
"delete-board": "Eliminar el tablero",
"default-subtasks-board": "Subtareas para el tablero __board__",
"default": "Por defecto",
"queue": "Cola",
"subtask-settings": "Configuración de subtareas",
"card-settings": "Configuración de tarjeta",
"boardSubtaskSettingsPopup-title": "Configuración de subtareas del tablero",
"boardCardSettingsPopup-title": "Configuración de tarjeta",
"deposit-subtasks-board": "Depositar subtareas en este tablero:",
"deposit-subtasks-list": "Lista de destino para subtareas depositadas aquí:",
"show-parent-in-minicard": "Mostrar el padre en una minitarjeta:",
"prefix-with-full-path": "Prefijo con ruta completa",
"prefix-with-parent": "Prefijo con el padre",
"subtext-with-full-path": "Subtexto con ruta completa",
"subtext-with-parent": "Subtexto con el padre",
"change-card-parent": "Cambiar la tarjeta padre",
"parent-card": "Tarjeta padre",
"source-board": "Tablero de origen",
"no-parent": "No mostrar la tarjeta padre",
"activity-added-label": "agregada etiqueta «%s» a %s",
"activity-removed-label": "eliminada etiqueta '%s' desde %s",
"activity-delete-attach": "eliminado un adjunto desde %s",
"activity-added-label-card": "agregada etiqueta «%s»",
"activity-removed-label-card": "eliminada etiqueta '%s'",
"activity-delete-attach-card": "eliminado un adjunto",
"activity-set-customfield": "Cambiar el campo personalizado '%s' a '%s' en %s",
"activity-unset-customfield": "Desmarcar el campo personalizado '%s' en %s",
"r-rule": "Regla",
"r-add-trigger": "Agregar desencadenador",
"r-add-action": "Agregar acción",
"r-board-rules": "Reglas del tablero",
"r-add-rule": "Agregar regla",
"r-view-rule": "Ver regla",
"r-delete-rule": "Eliminar regla",
"r-new-rule-name": "Nuevo título de regla",
"r-no-rules": "No hay reglas",
"r-trigger": "Desencadenador",
"r-action": "Acción",
"r-when-a-card": "Cuando una tarjeta",
"r-is": "es",
"r-is-moved": "es movida",
"r-added-to": "Agregado a",
"r-removed-from": "eliminado de",
"r-the-board": "el tablero",
"r-list": "la lista",
"set-filter": "Filtrar",
"r-moved-to": "Movido a",
"r-moved-from": "Movido desde",
"r-archived": "Se archivó",
"r-unarchived": "Restaurado del archivo",
"r-a-card": "una tarjeta",
"r-when-a-label-is": "Cuando una etiqueta es",
"r-when-the-label": "Cuando la etiqueta es",
"r-list-name": "Nombre de lista",
"r-when-a-member": "Cuando un miembro es",
"r-when-the-member": "Cuando el miembro",
"r-name": "nombre",
"r-when-a-attach": "Cuando un adjunto",
"r-when-a-checklist": "Cuando una lista de comprobación es",
"r-when-the-checklist": "Cuando la lista de comprobación",
"r-completed": "Completada",
"r-made-incomplete": "Hecha incompleta",
"r-when-a-item": "Cuando un elemento de la lista de comprobación es",
"r-when-the-item": "Cuando el elemento de la lista de comprobación es",
"r-checked": "Marcado",
"r-unchecked": "Desmarcado",
"r-move-card-to": "Mover la tarjeta",
"r-top-of": "Arriba de",
"r-bottom-of": "Abajo de",
"r-its-list": "su lista",
"r-archive": "Archivar",
"r-unarchive": "Restaurar del archivo",
"r-card": "la tarjeta",
"r-add": "Agregar",
"r-remove": "Eliminar",
"r-label": "etiqueta",
"r-member": "miembro",
"r-remove-all": "Eliminar todos los miembros de la tarjeta",
"r-set-color": "Cambiar el color a",
"r-checklist": "lista de comprobación",
"r-check-all": "Marcar todo",
"r-uncheck-all": "Desmarcar todo",
"r-items-check": "elementos de la lista de comprobación",
"r-check": "Marcar",
"r-uncheck": "Desmarcar",
"r-item": "elemento",
"r-of-checklist": "de la lista de comprobación",
"r-send-email": "Enviar un email",
"r-to": "a",
"r-of": "de",
"r-subject": "asunto",
"r-rule-details": "Detalle de la regla",
"r-d-move-to-top-gen": "Mover la tarjeta al inicio de su lista",
"r-d-move-to-top-spec": "Mover la tarjeta al inicio de la lista",
"r-d-move-to-bottom-gen": "Mover la tarjeta al final de su lista",
"r-d-move-to-bottom-spec": "Mover la tarjeta al final de la lista",
"r-d-send-email": "Enviar email",
"r-d-send-email-to": "a",
"r-d-send-email-subject": "asunto",
"r-d-send-email-message": "mensaje",
"r-d-archive": "Archivar la tarjeta",
"r-d-unarchive": "Restaurar tarjeta del archivo",
"r-d-add-label": "Agregar etiqueta",
"r-d-remove-label": "Eliminar etiqueta",
"r-create-card": "Crear nueva tarjeta",
"r-in-list": "en la lista",
"r-in-swimlane": "en el carril",
"r-d-add-member": "Agregar miembro",
"r-d-remove-member": "Eliminar miembro",
"r-d-remove-all-member": "Eliminar todos los miembros",
"r-d-check-all": "Marcar todos los elementos de una lista",
"r-d-uncheck-all": "Desmarcar todos los elementos de una lista",
"r-d-check-one": "Marcar elemento",
"r-d-uncheck-one": "Desmarcar elemento",
"r-d-check-of-list": "de la lista de comprobación",
"r-d-add-checklist": "Agregar lista de comprobación",
"r-d-remove-checklist": "Eliminar lista de comprobación",
"r-by": "por",
"r-add-checklist": "Agregar lista de comprobación",
"r-with-items": "con elementos",
"r-items-list": "elemento1,elemento2,elemento3",
"r-add-swimlane": "Agregar el carril",
"r-swimlane-name": "nombre del carril",
"r-board-note": "Nota: deje un campo vacío para que coincida con todos los valores posibles",
"r-checklist-note": "Nota: los elementos de la lista de comprobación deben escribirse como valores separados por comas.",
"r-when-a-card-is-moved": "Cuando una tarjeta es movida a otra lista",
"r-set": "Cambiar",
"r-update": "Actualizar",
"r-datefield": "campo de fecha",
"r-df-start-at": "comienza",
"r-df-due-at": "vencimiento",
"r-df-end-at": "finalizado",
"r-df-received-at": "recibido",
"r-to-current-datetime": "a la fecha/hora actual",
"r-remove-value-from": "Eliminar el valor de",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Método de autenticación",
"authentication-type": "Tipo de autenticación",
"custom-product-name": "Nombre de producto personalizado",
"layout": "Diseño",
"hide-logo": "Ocultar el logo",
"add-custom-html-after-body-start": "Agrega HTML personalizado después de <body>",
"add-custom-html-before-body-end": "Agrega HTML personalizado después de </body>",
"error-undefined": "Algo no está bien",
"error-ldap-login": "Ocurrió un error al intentar acceder",
"display-authentication-method": "Mostrar el método de autenticación",
"default-authentication-method": "Método de autenticación por defecto",
"duplicate-board": "Duplicar tablero",
"people-number": "El número de personas es:",
"swimlaneDeletePopup-title": "¿Eliminar el carril «swimlane»?",
"swimlane-delete-pop": "Todas las acciones serán eliminadas de la fuente de actividades y no se podrá recuperar el carril «swimlane». Esta acción no puede deshacerse.",
"restore-all": "Restaurar todas",
"delete-all": "Borrar todas",
"loading": "Cargando. Por favor, espere.",
"previous_as": "el último tiempo fue",
"act-a-dueAt": "cambiada la hora de vencimiento a \nCuándo: __timeValue__\nDónde: __card__\n el vencimiento anterior fue __timeOldValue__",
"act-a-endAt": "cambiada la hora de finalización a __timeValue__ Fecha anterior: (__timeOldValue__)",
"act-a-startAt": "cambiada la hora de comienzo a __timeValue__ Fecha anterior: (__timeOldValue__)",
"act-a-receivedAt": "cambiada la fecha de recepción a __timeValue__ Fecha anterior: (__timeOldValue__)",
"a-dueAt": "cambiada la hora de vencimiento a",
"a-endAt": "cambiada la hora de finalización a",
"a-startAt": "cambiada la hora de comienzo a",
"a-receivedAt": "cambiada la hora de recepción a",
"almostdue": "está próxima la hora de vencimiento actual %s",
"pastdue": "se sobrepasó la hora de vencimiento actual %s",
"duenow": "la hora de vencimiento actual %s es hoy",
"act-newDue": "__list__/__card__ tiene una 1ra notificación de vencimiento [__board__]",
"act-withDue": "__list__/__card__ notificaciones de vencimiento [__board__]",
"act-almostdue": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ está próximo",
"act-pastdue": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ se sobrepasó",
"act-duenow": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ es ahora",
"act-atUserComment": "Se le mencionó en [__board__] __list__/__card__",
"delete-user-confirm-popup": "¿Seguro que desea eliminar esta cuenta? Esta acción no puede deshacerse.",
"accounts-allowUserDelete": "Permitir a los usuarios eliminar su cuenta",
"hide-minicard-label-text": "Ocultar el texto de la etiqueta de la minitarjeta",
"show-desktop-drag-handles": "Mostrar los controles de arrastre del escritorio",
"assignee": "Asignado",
"cardAssigneesPopup-title": "Asignado",
"addmore-detail": "Agregar una descripción detallada",
"show-on-card": "Mostrar en la tarjeta",
"new": "Nuevo",
"editUserPopup-title": "Editar el usuario",
"newUserPopup-title": "Nuevo usuario",
"notifications": "Notificaciones",
"view-all": "Ver todo",
"filter-by-unread": "Filtrar por no leído",
"mark-all-as-read": "Marcar todo como leido",
"remove-all-read": "Eliminar todos los leídos",
"allow-rename": "Permitir renombrar",
"allowRenamePopup-title": "Permitir renombrar",
"start-day-of-week": "Establecer el día de inicio de la semana",
"monday": "lunes",
"tuesday": "martes",
"wednesday": "miércoles",
"thursday": "jueves",
"friday": "viernes",
"saturday": "sábado",
"sunday": "domingo",
"status": "Estado",
"swimlane": "Carril",
"owner": "Propietario",
"last-modified-at": "Última modificación",
"last-activity": "Última actividad",
"voting": "Votar",
"archived": "Archivado",
"delete-linked-card-before-this-card": "No puede borrar esta tarjeta antes de borrar la tarjeta enlazada que tiene",
"delete-linked-cards-before-this-list": "No puede borrar esta lista antes de borrar las tarjetas enlazadas que apuntan a tarjetas en esta lista",
"hide-checked-items": "Ocultar elementos marcados",
"task": "Tarea",
"create-task": "Crear tarea",
"ok": "OK"
}
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
+834 -812
View File
File diff suppressed because it is too large. Load diff
Loaded 100 of 200 files, more files were not shown because too many files have changed in this diff. Show more