Compare commits

..
210 Commits
Author SHA1 Message Date
Lauri Ojansivu 89a7bb8bc8 v5.71 2021-10-29 11:02:41 +03:00
Lauri Ojansivu e762465e09 Updated translations. 2021-10-29 10:50:34 +03:00
Lauri Ojansivu 7d42b7eaf0 Updated translations. 2021-10-29 03:45:21 +03:00
Lauri Ojansivu 4106aab659 Updated ChangeLog. 2021-10-29 03:34:15 +03:00
Lauri Ojansivu df2a2aae1d Updated dependencies.
Thanks to developers of dependencies !
2021-10-29 03:32:36 +03:00
Lauri Ojansivu fbcafdbd02 Updated ChangeLog. 2021-10-29 03:28:18 +03:00
Lauri Ojansivu 7cc35970a8 Update GitHub issue template. Part 2. 2021-10-29 03:27:15 +03:00
Lauri Ojansivu 123654008f Updated translations. 2021-10-29 03:18:10 +03:00
Lauri Ojansivu 711182ef8a Updated ChangeLog. 2021-10-29 03:17:52 +03:00
Lauri Ojansivu 46a5eec7d2 Add info about upgrades to GitHub issue template.
Thanks to xet7 !
2021-10-29 03:16:26 +03:00
Lauri Ojansivu a42c132306 Update translations. 2021-10-29 02:55:19 +03:00
Lauri Ojansivu be8a3191d1 Updated translations. 2021-10-29 02:51:14 +03:00
Lauri Ojansivu 157f16a1d4 Updated ChangeLog. 2021-10-29 02:47:25 +03:00
Lauri Ojansivu 803c949c8d Merge pull request #4105 from Ben0it-T/master
Fix : Filter List by Card Title (#4066)
2021-10-29 02:44:33 +03:00
Ben0it-T e64bc38932 Fix : Filter List by Card Title 2021-10-28 22:45:44 +02:00
Lauri Ojansivu f1d96fcef8 v5.70 2021-10-28 16:20:36 +03:00
Lauri Ojansivu 5934b7a4a2 Updated translations. 2021-10-28 16:08:10 +03:00
Lauri Ojansivu 245d6dc96d Fix typo. 2021-10-28 16:05:04 +03:00
Lauri Ojansivu 1941ee6af5 Updated ChangeLog. 2021-10-28 16:04:30 +03:00
Lauri Ojansivu e3292dd562 Part 2: Docker: Try to fix "Failed export and unexpected container restart". Added timezone and localtime.
Thanks to akitzing, mfilser and xet7 !

Fixes #4089
2021-10-28 16:01:45 +03:00
Lauri Ojansivu ec33d0b34f Docker: Try to fix "Failed export and unexpected container restart". Added timezone and localtime.
Thanks to akitzing, mfilser and xet7 !

Fixes #4089
2021-10-28 15:48:48 +03:00
Lauri Ojansivu 5add2aaea6 Delete not needed files. 2021-10-28 15:48:25 +03:00
Lauri Ojansivu 50a849fccd Merge pull request #4103 from Emile840/master
fix bug regarding #4083 (last version add default display:none to checkbox)
2021-10-28 15:07:14 +03:00
Emile NDAGIJIMANA ef53ade32e fix bug regarding #4083 (last version add defaut display:none checkbox) 2021-10-28 13:56:54 +02:00
Lauri Ojansivu 3ee2156399 v5.69 2021-10-28 14:08:32 +03:00
Lauri Ojansivu 90cd26e78e Updated ChangeLog. 2021-10-28 14:00:35 +03:00
Lauri Ojansivu 4c9d10f7a7 Merge pull request #4101 from mfilser/popup_fixes_archive_cards_attachement_etc
Popup fixes: Archive cards, upload attachements etc
2021-10-28 13:54:44 +03:00
Martin Filser a686a18809 Fix: Card color setting reloaded the board (hotfix)
- There is another issue why the board get's reloaded again. If i comment
  out the whole events() block so the card color is not saved, the boards
  get reloaded too ...
2021-10-28 12:41:12 +02:00
Martin Filser c7ab0403a6 Card watching closes now the popup after confirmation 2021-10-28 12:40:18 +02:00
Martin Filser f90fb28483 Card archive closes now the popup after confirmation 2021-10-28 12:40:18 +02:00
Martin Filser fecb9cdb66 Popup#afterConfirm popup broke features like "Archiv Cards", "Upload Attachements" and so on -> fixed 2021-10-28 12:40:18 +02:00
Lauri Ojansivu 66df3cc2ee Updated ChangeLog. 2021-10-28 13:09:09 +03:00
Lauri Ojansivu d9adce7b67 Fix Docs: Only MAIL_URL and MAIL_FROM for email settings. Not Admin Panel anymore.
Thanks to niklasdahlheimer !

Fixes #4090
2021-10-28 13:06:43 +03:00
Emile NDAGIJIMANA 6f39a3cf1c transactions not commited 2021-10-28 11:28:33 +02:00
Emile NDAGIJIMANA f840d26faf [Adding team to the board] some meaningfuly texts on buttons 2021-10-28 11:27:22 +02:00
Lauri Ojansivu dfd5acea97 Updated ChangeLog. 2021-10-27 23:40:21 +03:00
Lauri Ojansivu 5411113544 Updated Docker base image to Ubuntu 21.10 Impish.
Thanks to Ubuntu developers!
2021-10-27 23:37:30 +03:00
Lauri Ojansivu d1eb6f2355 v5.68 2021-10-27 22:43:36 +03:00
Lauri Ojansivu aed1e71094 Updated ChangeLog. 2021-10-27 22:20:04 +03:00
Lauri Ojansivu 46f6d1e989 Merge pull request #4087 from mfilser/fix_labels_desktop_view_add_and_delete
Fix labels desktop view add and delete
2021-10-27 22:19:01 +03:00
Martin Filser e9c1b2b2c4 Fix: Labels on desktop view can be added/deleted again 2021-10-27 17:29:11 +02:00
Martin Filser 94f8fb2393 Fix: Labels at desktop view with enabled drag handles were sortable 2021-10-27 17:29:11 +02:00
Martin Filser 2055d916e9 Labels/Drag handles on desktop view with drag handles were too long 2021-10-27 17:29:11 +02:00
Lauri Ojansivu 70dbd1518d Updated ChangeLog. 2021-10-27 16:44:47 +03:00
Lauri Ojansivu 3db3a5bad9 Merge pull request #4084 from mfilser/labels_drag_drop
Adding drag/drop to labels
2021-10-27 16:21:43 +03:00
Lauri Ojansivu b8a41406f5 v5.67 2021-10-27 09:42:11 +03:00
Martin Filser c8b8fb83dc Labels drag/drop 2021-10-27 08:02:46 +02:00
Lauri Ojansivu cb9b8d4f2b Fix typo.
Thanks to xet7 !
2021-10-27 08:57:08 +03:00
Lauri Ojansivu 69ce16192d v5.66 2021-10-27 08:52:32 +03:00
Lauri Ojansivu 46efd27079 Updated translations. 2021-10-27 08:44:06 +03:00
Lauri Ojansivu 141e866719 Updated ChangeLog. 2021-10-27 08:41:04 +03:00
Lauri Ojansivu 4e7f1a9937 Merge pull request #4083 from Emile840/master
Add a possibility of selecting displayed users in admin panel
2021-10-27 08:39:54 +03:00
Lauri Ojansivu 3e7fee8fae Updated ChangeLog. 2021-10-27 08:39:28 +03:00
Lauri Ojansivu b09e5b2680 Merge pull request #4082 from mfilser/board_search_remove_limit
Board search remove limit
2021-10-27 08:37:31 +03:00
Emile NDAGIJIMANA fb00869e49 Add a possibility of selecting displayed users in admin panel 2021-10-26 17:31:23 +02:00
Martin Filser 4521d5c10d Search cards, dont't search on empty search term
- otherwise all cards / lists are returned, and at big boards it will
  take a long time to load all cards / lists
2021-10-26 12:48:47 +02:00
Martin Filser 5eb4cff991 Board search, remove limit of 10 lists 2021-10-26 12:48:47 +02:00
Martin Filser 20415b881c Board search, removed limit of 10 cards 2021-10-26 12:48:47 +02:00
Lauri Ojansivu 90b0a93547 Updated ChangeLog. 2021-10-26 01:53:09 +03:00
Lauri Ojansivu f67a174c4a Re-enables custom schemes auto linking.
Thanks to chrisi51 !

Related https://github.com/wekan/wekan/pull/4059
2021-10-26 01:50:28 +03:00
Lauri Ojansivu 8224410e0c Updated ChangeLog. 2021-10-25 23:56:33 +03:00
Lauri Ojansivu 7f78106211 Merge pull request #4079 from mfilser/minicard_label_popup
Minicard label popup
2021-10-25 23:54:46 +03:00
Martin Filser 0025212b3e Minicard, label popup only opened if a label is clicked 2021-10-25 22:39:23 +02:00
Martin Filser d79a35ea82 Minicard, label popup added 2021-10-25 22:39:23 +02:00
Lauri Ojansivu ce829f586b Updated translations. 2021-10-25 23:30:19 +03:00
Lauri Ojansivu a3d41c560b Revert "Re-enables custom schemes auto linking" https://github.com/wekan/wekan/pull/4059 because Markdown links did not work, commented out some code.
Thanks to mfilser and xet7 !

Related https://github.com/wekan/wekan/pull/4059
2021-10-25 23:06:13 +03:00
Lauri Ojansivu 5af4386a0f Updated translations. 2021-10-25 21:31:28 +03:00
Lauri Ojansivu c08c9543af Updated ChangeLog. 2021-10-25 21:21:17 +03:00
Lauri Ojansivu b25eeb334c Merge pull request #4078 from Ben0it-T/master
Fix : Filter List by Card Title - see #4066 comments
2021-10-25 21:20:02 +03:00
Lauri Ojansivu 5c2a44e6fe Updated ChangeLog. 2021-10-25 21:18:50 +03:00
Lauri Ojansivu 4c0d382fd8 Merge pull request #4077 from mfilser/comment_delete_confirmation_popup
Comment, added confirm delete popup
2021-10-25 21:17:51 +03:00
Ben0it-T 8550213146 Fix : Filter List by Card Title - see #4066 comments 2021-10-25 20:05:07 +02:00
Martin Filser 1a09b75974 Comment, added confirm delete popup 2021-10-25 20:00:17 +02:00
Lauri Ojansivu ea73e4ec7d Updated ChangeLog. 2021-10-25 20:44:20 +03:00
Lauri Ojansivu 7e45e0676a Merge pull request #4076 from mfilser/board_view_sort_cards_mobile_view
Board View, sort cards button also in mobile view
2021-10-25 20:43:27 +03:00
Martin Filser 6f09987b07 Board View, sort cards also in mobile view 2021-10-25 18:40:19 +02:00
Lauri Ojansivu a09b7a4002 Updated ChangeLog. 2021-10-25 18:53:24 +03:00
Lauri Ojansivu 8a51e271a2 Merge pull request #4075 from mfilser/card_dates_remove
Card dates, if deleted rules didn't apply on "unset date fields"
2021-10-25 18:50:27 +03:00
Martin Filser 53c827e134 Card dates, if deleted rules didn't apply on "unset date fields" 2021-10-25 17:37:19 +02:00
Lauri Ojansivu bcc17127a9 Updated ChangeLog. 2021-10-25 18:04:06 +03:00
Lauri Ojansivu 18ff4bee2d Merge pull request #4074 from mfilser/global_search_checklistitems_and_customFields_boolean
Global search checklistitems and custom fields boolean
2021-10-25 18:01:10 +03:00
Lauri Ojansivu 71068cf13e Updated ChangeLog. 2021-10-25 17:56:54 +03:00
Lauri Ojansivu 2666b30ba9 Added npm publish script for releases.
Thanks to xet7 !
2021-10-25 17:55:41 +03:00
Lauri Ojansivu 7a9ed24127 Updated ChangeLog. 2021-10-25 17:52:55 +03:00
Lauri Ojansivu 156c0b5d4d Updated dependencies.
Thanks to developers of dependencies!
2021-10-25 17:50:57 +03:00
Martin Filser e5a31e7f99 Global search, boolean custom fields are searched too
Fixes: #4035
2021-10-25 14:45:01 +02:00
Martin Filser ccc0b3bcf9 Global Search, Checklist-Items are searched now too 2021-10-25 14:45:01 +02:00
Lauri Ojansivu 44f6cc978d Updated ChangeLog. 2021-10-25 15:43:48 +03:00
Lauri Ojansivu c07646d13d Updated ChangeLog. 2021-10-25 15:40:36 +03:00
Lauri Ojansivu e20ca04fab Fix typos. 2021-10-25 15:39:26 +03:00
Lauri Ojansivu f14e710ac0 Updated dependencies.
Thanks to developers of dependencies!
2021-10-25 15:39:00 +03:00
Lauri Ojansivu 5546f6aa17 Merge branch 'chrisi51-master' 2021-10-25 15:26:48 +03:00
Lauri Ojansivu 9cfbd7b37d Merge branch 'master' of https://github.com/chrisi51/wekan into chrisi51-master 2021-10-25 15:26:12 +03:00
Lauri Ojansivu 62bfa75cf7 Updated ChangeLog. 2021-10-25 15:25:10 +03:00
Lauri Ojansivu fe2a7e207c Merge pull request #4073 from mfilser/labels_wrapped_if_too_long
Labels wrapped if too long
2021-10-25 15:24:13 +03:00
Lauri Ojansivu 1c2d4e5b4c Updated ChangeLog. 2021-10-25 14:47:40 +03:00
Martin Filser 2b33d7890c Labels in Minicard are now centered if the label is wrapped 2021-10-25 13:46:55 +02:00
Martin Filser e8c9222283 Labels in Card Details are now centered if the label is wrapped 2021-10-25 13:46:51 +02:00
Lauri Ojansivu a62a177fb1 Comment out slowing Search All Boards logs in console.
Thanks to mfilser and xet7 !

Fixes #4072
2021-10-25 14:43:56 +03:00
Martin Filser e954df4d8e Labels, wrap long text
CSS initial:
https://stackoverflow.com/questions/15901030/reset-remove-css-styles-for-element-only/15903168#15903168
2021-10-25 13:43:24 +02:00
Lauri Ojansivu d0a0c74fd9 Updated ChangeLog. 2021-10-25 14:40:34 +03:00
Lauri Ojansivu 552e99d460 Merge pull request #4071 from mfilser/card_popup_search_and_global_search
Card popup search and global search
2021-10-25 14:39:06 +03:00
Martin Filser ce30c7e1b7 Card Details, show card link in mobile view 2021-10-25 12:53:04 +02:00
Martin Filser 876d78eec4 Card Details Popup, Checklist-Items are now displayed if opened from Global Search 2021-10-25 12:53:04 +02:00
Martin Filser 0313e21ca1 Fix, move to top now works after moving the card (card details action popup) 2021-10-25 12:53:04 +02:00
Martin Filser e6f94c9d16 Move card to top - close Popup / back to previous popup 2021-10-25 12:53:04 +02:00
Martin Filser cdc4be3a13 Card Details Popup in Desktop View has (for now) no maximize button 2021-10-25 12:53:04 +02:00
Martin Filser 4131dd89d4 Global search open the minicard as Popup 2021-10-25 12:53:04 +02:00
Martin Filser 4936e580fd Board search open the minicard as Popup 2021-10-25 12:53:04 +02:00
Martin Filser b9250e4be4 Use Popup.back() instead of Popup.close() to get no conflicts if a Popup is opened as "Sub Popup"
- .back() is also .close() if there is no "popup layer" left
2021-10-25 12:53:04 +02:00
Martin Filser a59dfa8fc0 Card Details Popup, every "Sub-Popup" must use .back() instead of .close()
- .close() closes the popup. Until now it was ok, but as the Card
  Details are opened in a popup too, .back() must be used to get the
  same behaviour back
- .back() is also .close() if there is no "popup layer" left
2021-10-25 12:53:04 +02:00
Lauri Ojansivu 2fd2ea72fe Updated ChangeLog. 2021-10-25 13:52:42 +03:00
Lauri Ojansivu a6d3810e19 Merge pull request #4070 from mfilser/card_details_custom_fields_popup
Card details custom fields popup
2021-10-25 13:50:31 +03:00
Martin Filser 5e29c68154 Card Details, add plus button in custom fields section 2021-10-25 12:44:03 +02:00
Martin Filser 6b26b5d62b Card Details, moving the custom field sort switch after the last custom field 2021-10-25 12:44:03 +02:00
Martin Filser 81e617a149 Card Details, hr line occured twice if any date or any user isn't displayed 2021-10-25 12:44:03 +02:00
Lauri Ojansivu 013620c862 Updated ChangeLog. 2021-10-25 13:42:46 +03:00
Lauri Ojansivu 086aa51c2e Merge pull request #4069 from mfilser/fix_boards_not_loading_missing_filter
Boards weren't loaded because of missing filter
2021-10-25 13:41:33 +03:00
Martin Filser 95719cbd24 Boards weren't loaded because of missing filter 2021-10-25 12:32:48 +02:00
Lauri Ojansivu a23c8c263c Updated ChangeLog. 2021-10-25 13:29:33 +03:00
Lauri Ojansivu dfd1155790 Merge pull request #4068 from mfilser/fix_long_textarea_editing
Fix long textarea editing
2021-10-25 13:28:09 +03:00
Martin Filser 3a92cabc3f updated meteor-autosize to version 5.0.1
updated this "git" version:
https://raw.githubusercontent.com/jackmoore/autosize/8fc6a6d6f934bdfa621eb3bac341d34ad9337882/dist/autosize.js
2021-10-25 09:00:36 +02:00
Martin Filser 47446315ad Adding verron:autosize (meteor-autoresize) 2021-10-25 09:00:36 +02:00
Lauri Ojansivu c586a9bb39 Updated translations. 2021-10-25 02:38:52 +03:00
Lauri Ojansivu 4df3416b46 Updated ChangeLog. 2021-10-25 01:39:06 +03:00
Lauri Ojansivu a42a3436cd Merge pull request #4067 from mfilser/add_card_cancel_button
Add card button has now a cancel button
2021-10-25 01:35:16 +03:00
Martin Filser 367823ea5e Add card button has now a cancel button 2021-10-24 15:42:51 +02:00
Lauri Ojansivu ccb5acbe70 Updated ChangeLog. 2021-10-24 14:40:58 +03:00
Lauri Ojansivu b8e0dfa07d Merge pull request #4066 from Ben0it-T/master
Fix : Filter List by Card Title #3594
2021-10-24 14:39:12 +03:00
Lauri Ojansivu a167a1b4f4 Updated ChangeLog. 2021-10-24 14:38:15 +03:00
Lauri Ojansivu c95ccaa5c9 Merge pull request #4065 from mfilser/fix_markdown_header_quick_access
Fix markdown header quick access
2021-10-24 14:37:09 +03:00
Ben0it-T 5b5b8fe427 Fix : Filter List by Card Title #3594 2021-10-23 13:16:33 +02:00
Lauri Ojansivu 31af30175b Updated translations. 2021-10-22 18:10:46 +03:00
Lauri Ojansivu a22aacf29b Updated ChangeLog. 2021-10-21 19:40:48 +03:00
Lauri Ojansivu 6a06522777 Try to fix orphanedAttachments.
Thanks to Madko and xet7 !

Related #2776
2021-10-21 19:39:11 +03:00
Lauri Ojansivu c47b04493a Updated translations. 2021-10-21 19:27:17 +03:00
Martin Filser 6d701cda2e Mobile View quick list access show markdown 2021-10-21 18:24:49 +02:00
Martin Filser 8bb27e2762 Starred boards show markdown at the top starred line (Mobile View)
- Fixes: #4058
2021-10-21 18:24:49 +02:00
Martin Filser 437b62eb97 Starred boards show markdown at the top starred line
- Fixes: #4058
2021-10-21 18:24:49 +02:00
Lauri Ojansivu 88fbdfbb6b Updated ChangeLog. 2021-10-21 19:22:53 +03:00
Lauri Ojansivu 92eb3afa6c Merge pull request #4063 from mfilser/fix_main_scrollbar
Fix main scrollbar
2021-10-21 19:21:37 +03:00
Martin Filser ababeebbf0 Fixed scrollbar, occured twice at home screen (mobile view) 2021-10-21 11:28:32 +02:00
Martin Filser fdb3f83d1f Fixed scrollbar, occured twice at admin panel 2021-10-21 11:28:32 +02:00
Martin Filser a0e6fc4611 Fixed scrollbar, occured twice when opening a card 2021-10-21 11:28:32 +02:00
Lauri Ojansivu 2b62b3aa90 Updated translations. 2021-10-21 12:11:31 +03:00
Lauri Ojansivu 910c0705f7 Updated ChangeLog. 2021-10-21 12:08:42 +03:00
Lauri Ojansivu 35469364b4 Merge pull request #4062 from mfilser/popup_card_details
Popup card details
2021-10-21 12:04:31 +03:00
Martin Filser 2af5e9c209 Card Details Popup, Checklist Drag/Drop works in mobile view again 2021-10-21 09:46:05 +02:00
Martin Filser 21a3749086 Card Details Popup, Checklistitem Drag/Drop works in mobile view again 2021-10-21 09:46:05 +02:00
Martin Filser bd2b8625fb Set popupCard to null in router.js if currentCard is set to null 2021-10-21 09:26:29 +02:00
Martin Filser 7ced602be4 More robust logic if isMiniScreen or isShowDesktopDragHandles 2021-10-20 22:28:49 +02:00
Martin Filser b59e4d8fc7 Swimlade, List drag/drop now works again
happened at commit:
b9178cfcb6 isMiniScreen and showDesktopDragHandles centralized in class Utils
2021-10-20 22:28:49 +02:00
Lauri Ojansivu 9809510782 Updated translations. 2021-10-20 19:43:33 +03:00
Martin Filser ea7136816d Card Details Popup, edit dates now closes not the Popup 2021-10-20 18:41:33 +02:00
Martin Filser 73872202ec Card Details mobile view, copy link contains now the URL/id to the current card 2021-10-20 18:41:33 +02:00
Martin Filser a72f1ae8de Card Details Popup close, list moved to top -> fixed 2021-10-20 18:41:33 +02:00
Martin Filser fdf40f4584 Use Utils#getCurrentCard() everywhere in the code 2021-10-20 18:41:33 +02:00
Martin Filser 7a6cfcb498 Card Details Popup, Labels assign now works 2021-10-20 18:41:33 +02:00
Martin Filser 4994f23134 textarea, remove every whitespace at line end
- whitespaces aren't needed at the end of the line, that's why
  String.trim() is already implemented at input fields
2021-10-20 18:41:33 +02:00
Martin Filser 8c3ce4bb73 Card Details Popup possible on desktop view
- until now a new form in the popup closed the popup itself
2021-10-20 18:41:33 +02:00
Martin Filser 48b2e3dd88 Card Details in the new on mobile view have now the normal view again 2021-10-20 18:41:33 +02:00
Martin Filser bcb5cfb235 Card Details can be opened in a new tab on mobile view 2021-10-20 18:41:33 +02:00
Martin Filser 27213245ef Card Details Popup, Session variable popupCard is deleted on popup close 2021-10-20 18:41:33 +02:00
Martin Filser c07a1412f7 Card Details Popup and Sub-Popup's same look as the desktop view 2021-10-20 18:41:33 +02:00
Martin Filser dae58d11c2 Card Details Popup only opened if not another popup is opened yet
e.g. this Popup's didn't opened:
- card sorting number
- edit received date
2021-10-20 18:41:33 +02:00
Martin Filser fb66b84b58 Card Details, description edit is now saved at popup 2021-10-20 18:41:33 +02:00
Martin Filser 125c84b6b5 Card Details, Ctrl+Enter at description editing raised an error
Console:
Uncaught TypeError: can't access property "click", this.find(...) is null
2021-10-20 18:41:33 +02:00
Martin Filser 5f58ede7e3 Card Details Popup, edit of Checklist, Checklistitems and Description now works
- problem is that if a inlined-form is opened within a popup, the popup
  is closed first
2021-10-20 18:41:30 +02:00
Martin Filser 0f69282eec Card Details Popup, Activities (comments) are now displayed 2021-10-20 18:40:41 +02:00
Martin Filser 24b0613bac Card Details Popup, Checklist is now displayed 2021-10-20 18:40:41 +02:00
Martin Filser 4a87d5f0f3 Card Details Popup, Labels and Checklistitems were too much displayed at the "bottom" 2021-10-20 18:40:41 +02:00
Martin Filser 09b127b648 Card Details as Popup 2021-10-20 18:40:41 +02:00
Martin Filser 4ab290928c minicard, div has no colorClass if not defined 2021-10-20 18:40:41 +02:00
Martin Filser b9178cfcb6 isMiniScreen and showDesktopDragHandles centralized in class Utils
- a lot of same code everywhere in many files, this is against the
  concept "don't repeat yourself"
2021-10-20 18:40:41 +02:00
Lauri Ojansivu cbc6463019 Updated ChangeLog. 2021-10-20 19:39:16 +03:00
Lauri Ojansivu a30fee95bf Merge pull request #4060 from mfilser/popup_sorting_number
Popup sorting number
2021-10-20 19:37:06 +03:00
Martin Filser b1b2d87045 Minicard sort popup, Enter button saves the new sort number 2021-10-20 14:36:21 +02:00
Martin Filser 02896e669a Minicard, sort number can be edited in a popup 2021-10-20 14:36:21 +02:00
Martin Filser df5b76aa87 Card Details sorting, Enter = Save Button press 2021-10-20 14:36:21 +02:00
Christian Hillebrand ea60d5a205 Re-enables custom schemes auto linking 2021-10-20 12:35:01 +02:00
Lauri Ojansivu 02f056851d Try to fix api.py adddcustomfieldtoboard.
Thanks to xet7 !
2021-10-19 08:27:28 +03:00
Lauri Ojansivu d4cbcf1a31 Updated translations. 2021-10-19 07:50:56 +03:00
Lauri Ojansivu 78190d0d7e Updated ChangeLog. 2021-10-18 22:13:18 +03:00
Lauri Ojansivu 05ae1ad56d Merge pull request #4057 from Emile840/master
add full name if exists in email-invite-subject or when tagging someone with '@' while commenting a card
2021-10-18 22:10:52 +03:00
Emile NDAGIJIMANA 5a5a01cf17 [point #3830] Display default weekan logo if there isn't a custom one 2021-10-18 16:58:54 +02:00
Emile NDAGIJIMANA d9329a9e15 add full name if exists in email-invite-subject or when tagging someone with '@' while commenting a card 2021-10-18 15:26:01 +02:00
Lauri Ojansivu 3ea285498f Updated ChangeLog. 2021-10-16 19:09:35 +03:00
Lauri Ojansivu 3921209c9f api.py: Add Custom Fields to Board. Does not work yet, error: Settings must be object.
Thanks to xet7 !
2021-10-16 19:07:36 +03:00
Lauri Ojansivu 05e0aa0304 Updated ChangeLog. 2021-10-16 17:53:12 +03:00
Lauri Ojansivu 5c571ca863 api.py: Info of one Custom Field.
Thanks to xet7 !
2021-10-16 17:51:59 +03:00
Lauri Ojansivu 721e889bee Updated ChangeLog. 2021-10-16 17:43:10 +03:00
Lauri Ojansivu bcf3573131 api.py: List Custom Fields of Board.
Thanks to xet7 !
2021-10-16 17:41:18 +03:00
Lauri Ojansivu 153ce880dd Updated ChangeLog. 2021-10-16 16:52:36 +03:00
Lauri Ojansivu eac102dbbf api.py: Added "List All Public Boards".
Thanks to xet7 !
2021-10-16 16:50:47 +03:00
Lauri Ojansivu d9efdb0b88 Updated translations. 2021-10-16 15:22:53 +03:00
Lauri Ojansivu 3a583a92f9 Updated translations. 2021-10-16 15:19:43 +03:00
Lauri Ojansivu 187e147352 Updated translations. 2021-10-16 14:51:00 +03:00
Lauri Ojansivu 2c9439fd7b Update translations. 2021-10-16 14:49:28 +03:00
Lauri Ojansivu 2cefc55865 Updated translations. 2021-10-15 23:00:25 +03:00
Lauri Ojansivu 74d1e032f2 Updated ChangeLog. 2021-10-15 22:57:01 +03:00
Lauri Ojansivu eb2ec18add Merge pull request #4056 from Ben0it-T/master
Fix : Setting overtime not working #1893
2021-10-15 22:54:14 +03:00
Ben0it-T 3c6915e217 Fix : Setting overtime not working #1893 2021-10-15 21:40:20 +02:00
Lauri Ojansivu 629fa91fa0 Updated ChangeLog. 2021-10-13 19:09:18 +03:00
Lauri Ojansivu 516044f3c7 Merge pull request #4053 from mfilser/fix_infinite_loading_of_public_boards
Fix infinite loading of public boards
2021-10-13 19:06:22 +03:00
Martin Filser a47c0dd512 Infinite cards loading on public boards
Fixes: #4024
2021-10-13 13:44:17 +02:00
Martin Filser 1b06997001 Public boards loaded incompletly
seen at: #4024

Console:
Meteor.user().isBoardAdmin() is undefined
2021-10-13 13:44:17 +02:00
Martin Filser 458ec4c9a5 devcontainer, added cleanup files 2021-10-13 13:44:01 +02:00
Martin Filser f76b466fc4 docker-compose build failed of .devcontainer, folder tests is missing
output of docker-compose build before this change:

+ /home/wekan/.meteor/meteor build --directory /home/wekan/app_build
Errors prevented bundling:
While building the application:
error: Could not resolve meteor.mainModule "tests/main.js" in package.json (os)
error: Could not resolve meteor.mainModule "tests/main.js" in package.json
(web.browser)
error: Could not resolve meteor.mainModule "tests/main.js" in package.json
(web.browser.legacy)

The command '/bin/sh -c set -o xtrace &&     cd /home/wekan/app &&     /home/wekan/.meteor/meteor add standard-minifier-js &&     /home/wekan/.meteor/meteor npm install &&     /home/wekan/.meteor/meteor build --directory /home/wekan/app_build' returned a non-zero code: 1
2021-10-13 13:43:08 +02:00
Martin Filser d7479c742f docker-compose, set localization in docker containers
/etc/localtime and /etc/timezone are used for localization
2021-10-13 13:43:08 +02:00
Lauri Ojansivu b12312f998 Create release.yml 2021-10-12 23:58:35 +03:00
174 changed files with 11852 additions and 2690 deletions

No files matched your search

+17
View File
@@ -195,6 +195,10 @@ COPY \
settings.json \
/home/wekan/app/
COPY \
tests \
/home/wekan/app/tests/
COPY \
packages \
/home/wekan/app/packages/
@@ -226,6 +230,19 @@ RUN \
chmod u+w package.json npm-shrinkwrap.json && \
npm install
USER root
# Cleanup
RUN \
set -o xtrace && \
apt-get clean -y && \
apt-get autoremove -y && \
rm -Rf /tmp* && \
rm -Rf /home/wekan/app_build && \
rm -Rf /var/cache/apt /var/lib/apt/lists && \
rm -Rf /var/lib/apt/lists/*
USER wekan
ENV PORT=3000
EXPOSE $PORT
WORKDIR /home/wekan/app
+8 -3
View File
@@ -12,9 +12,10 @@ services:
expose:
- 27017
volumes:
- ./volumes/wekan-db:/data/db
- ./volumes/wekan-db-dump:/dump
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- wekan-db:/data/db
- wekan-db-dump:/dump
wekan-dev:
container_name: wekan-dev-app
@@ -36,19 +37,23 @@ services:
depends_on:
- wekandb-dev
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ../client:/home/wekan/app/client
- ../models:/home/wekan/app/models
- ../config:/home/wekan/app/config
- ../i18n:/home/wekan/app/i18n
- ../server:/home/wekan/app/server
- ../public:/home/wekan/app/public
- /etc/localtime:/etc/localtime:ro
- wekan-tmp:/tmp
volumes:
wekan-dev-db:
driver: local
wekan-dev-db-dump:
driver: local
wekan-tmp:
driver: local
networks:
wekan-dev-tier:
+7 -8
View File
@@ -1,12 +1,13 @@
## Issue
Note: With Docker, please don't use latest tag. Only use release tags.
See https://github.com/wekan/wekan/issues/3874
**[PLEASE UPGRADE](https://github.com/wekan/wekan/wiki/Backup)** to newest WeKan ® before adding new issue !!
- We get too many duplicate reports of already fixed bugs. Newest WeKan ® has newest bugfixes and security fixes.
- Please search existing Open and Closed issues, most questions have already been answered many times.
If you can not login for any reason:
- https://github.com/wekan/wekan/wiki/Forgot-Password
Email settings:
Email settings, only SMTP MAIL_URL and MAIL_FROM are in use:
- https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
Add these issues to elsewhere:
@@ -20,14 +21,12 @@ Other Wekan issues can be added here.
* Note: Please anonymize info, and do not add to this public issue any of your Wekan board URLs, passwords, API tokens etc, do you understand?:
* Did you test in newest Wekan?:
* For new Wekan install, did you configure root-url correctly so Wekan cards open correctly https://github.com/wekan/wekan/wiki/Settings ?
* Wekan version:
* If this is about old version of Wekan, what upgrade problem you have?:
* Operating System:
* Deployment Method(snap/docker/sandstorm/mongodb bundle/source):
* Deployment Method(Snap/Docker/Sandstorm/bundle/source):
* Http frontend if any (Caddy, Nginx, Apache, see config examples from Wekan GitHub wiki first):
* Node Version:
* Node.js Version:
* MongoDB Version:
* Wekan only works on newest desktop Firefox/Chromium/Chrome/Edge/Chromium Edge and mobile Chrome. What webbrowser version are you using?
* Wekan works on newest desktop and mobile webbrowsers that support Javascript. What webbrowser version are you using?
**Problem description**:
- *REQUIRED: Add recorded animated gif about how it works currently, and screenshot mockups how it should work. Use peek to record animgif in Linux https://github.com/phw/peek*
+25
View File
@@ -0,0 +1,25 @@
name: Release Charts
on:
push:
branches:
- master
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.1.0
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+1 -1
View File
@@ -64,7 +64,7 @@ mquandalle:jquery-ui-drag-drop-sort
mquandalle:mousetrap-bindglobal
peerlibrary:blaze-components@=0.15.1
templates:tabs
verron:autosize
meteor-autosize
simple:json-routes
rajit:bootstrap3-datepicker
shell-server@0.5.0
+1 -1
View File
@@ -219,7 +219,7 @@ url@1.3.2
useraccounts:core@1.14.2
useraccounts:flow-routing@1.14.2
useraccounts:unstyled@1.14.2
verron:autosize@3.0.8
meteor-autosize@5.0.1
webapp@1.10.1
webapp-hashing@1.1.0
wekan-accounts-cas@0.1.0
+148 -1
View File
@@ -1,6 +1,153 @@
[Mac ChangeLog](https://github.com/wekan/wekan/wiki/Mac)
# v5.65 2021-10-12 Wekan release
# v5.71 2021-10-29 WeKan ® release
This release adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/commit/df2a2aae1d44ba22563cc28bc8d9baac71b2ced7).
Thanks to developers of dependencies.
and fixes the following bugs:
- [Fix: Filter List by Card Title](https://github.com/wekan/wekan/pull/4105).
Thanks to Ben0it-T.
- Add info about upgrades to GitHub issue template.
[Part 1](https://github.com/wekan/wekan/commit/46a5eec7d21b66eb1aacac4fec84a0d0a0f4d16b),
[Part 2](https://github.com/wekan/wekan/commit/7cc35970a849c19d35b89cf0a5fb91216a66fcb3).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.70 2021-10-28 WeKan ® release
This release fixes the following bugs:
- [Fix bug related to Admin Panel teams management](https://github.com/wekan/wekan/pull/4103).
Thanks to Emile840.
- Docker: Try to fix "Failed export and unexpected container restart". Added timezone and localtime.
[Part 1](https://github.com/wekan/wekan/commit/ec33d0b34f3abe5634be0b87f03314c738c771d1),
[Part 2](https://github.com/wekan/wekan/commit/e3292dd5627f95d59d130a8c1b9a62df317ae6bd).
Thanks to akitzing, mfilser and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.69 2021-10-28 WeKan ® release
This release adds the following updates:
- [Updated Docker base image to Ubuntu 21.10 Impish](https://github.com/wekan/wekan/commit/5411113544f040cab2df86234745e4846029660f).
Thanks to Ubuntu developers.
and fixes the following bugs:
- [Fix Docs: Only MAIL_URL and MAIL_FROM for email settings. Not Admin Panel anymore](https://github.com/wekan/wekan/commit/d9adce7b676b705da786eb44cd2c2c4dba120d30).
Thanks to niklasdahlheimer.
- [Popup fixes: Archive cards, upload attachements etc](https://github.com/wekan/wekan/pull/4101).
Thanks to mfilser.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.68 2021-10-27 WeKan ® release
This release adds the following new features:
- [Labels are now drag/drop/sortable](https://github.com/wekan/wekan/pull/4084).
Thanks to mfilser.
and fixes the following bugs:
- [Fix labels desktop view add and delete](https://github.com/wekan/wekan/pull/4087).
Thanks to mfilser.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.67 2021-10-27 WeKan ® release
This release fixes the following bugs:
- [Fix typo](https://github.com/wekan/wekan/commit/cb9b8d4f2b8e24475a2aafd6f9653f28f305eefb).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.66 2021-10-27 WeKan ® release
This release adds the following new features:
- [api.py: List All Public Boards](https://github.com/wekan/wekan/commit/eac102dbbf302ccc121bbf1e4e8faf115e1f9da8).
Thanks to xet7.
- [api.py: List Custom Fields of Board](https://github.com/wekan/wekan/commit/bcf35731316c327090a8513a4c4094e32e301e3f).
Thanks to xet7.
- [api.py: Info of one Custom Field](https://github.com/wekan/wekan/commit/5c571ca8638c29e558f3a196daf5458274eb715e).
Thanks to xet7.
- [api.py: Add Custom Fields to Board. Does not work yet, error: Settings must be object](https://github.com/wekan/wekan/commit/3921209c9fbf1d908f2ef3e97dade5863a000309).
Thanks to xet7.
- [Add full name if exists in email-invite-subject or when tagging someone with `@` while commenting a card](https://github.com/wekan/wekan/pull/4057).
Thanks to Emile840.
- [Popup sorting number](https://github.com/wekan/wekan/pull/4060).
Thanks to mfilser.
- [At mobile view the card details are opened as Popup](https://github.com/wekan/wekan/pull/4062).
Thanks to mfilser.
- [Add card button has now a cancel button](https://github.com/wekan/wekan/pull/4067).
Thanks to mfilser.
- [Global search checklistitems and custom fields boolean](https://github.com/wekan/wekan/pull/4074).
Thanks to mfilser.
- [Board View, sort cards button also in mobile view](https://github.com/wekan/wekan/pull/4076).
Thanks to mfilser.
- [Minicard label popup](https://github.com/wekan/wekan/pull/4079).
Thanks to mfilser.
- [Re-enables custom schemes auto linking](https://github.com/wekan/wekan/commit/f67a174c4a7706a2d419ba3dd43d696104f90696).
Thanks to chrisi51.
- [Board search remove limit](https://github.com/wekan/wekan/pull/4082).
Thanks to mfilser.
- [Add a possibility of selecting displayed users in Admin Panel](https://github.com/wekan/wekan/pull/4083).
Thanks to Emile840.
and adds the following updates:
- Updated dependencies.
[Part 1](https://github.com/wekan/wekan/commit/f14e710ac0d5381ec092c9f383b9b68f446cab4d),
[Part 2](https://github.com/wekan/wekan/commit/156c0b5d4d91dae2ee9b12ed8c312dc19a3c3075).
Thanks to developers of dependencies.
- [Added npm publish script for releases](https://github.com/wekan/wekan/commit/2666b30ba911da8502153be5827f277b81354f8b).
Thanks to xet7.
and fixes the following bugs:
- [Fix infinite loading of public boards](https://github.com/wekan/wekan/pull/4053).
Thanks to mfilser.
- [Fix: Setting overtime not working](https://github.com/wekan/wekan/pull/4056).
Thanks to Ben0it-T.
- [Fix main scrollbar](https://github.com/wekan/wekan/pull/4063).
Thanks to mfilser.
- [Try to fix orphanedAttachments](https://github.com/wekan/wekan/commit/6a06522777a0bfa2f758e96c2d25e1237a7b43dc).
Thanks to Madko and xet7.
- [Fix markdown header quick access](https://github.com/wekan/wekan/pull/4065).
Thanks to mfilser.
- [Fix Filter List by Card Title](https://github.com/wekan/wekan/pull/4066).
Thanks to Ben0it-T.
- [Fix long textarea editing](https://github.com/wekan/wekan/pull/4068).
Thanks to mfilser.
- [Boards weren't loaded because of missing filter](https://github.com/wekan/wekan/pull/4069).
Thanks to mfilser.
- [Fix Card details Custom Fields popup empty hr sections and plus icon](https://github.com/wekan/wekan/pull/4070).
Thanks to mfilser.
- [Card popup search and global search improvements](https://github.com/wekan/wekan/pull/4071).
Thanks to mfilser.
- [Comment out showing Search All Boards logs in console](https://github.com/wekan/wekan/commit/a62a177fb1cdf8b823b5c32380a81e803e0049e7).
Thanks to mfilser and xet7.
- [Long labels on card and minicard are wrapped if too long](https://github.com/wekan/wekan/pull/4073).
Thanks to mfilser.
- [Card dates, if deleted rules didn't apply on "unset date fields"](https://github.com/wekan/wekan/pull/4075).
Thanks to mfilser.
- [Comment, added confirm delete popup](https://github.com/wekan/wekan/pull/4077).
Thanks to mfilser.
- [Fix: Filter List by Card Title](https://github.com/wekan/wekan/pull/4078).
Thanks to Ben0it-T.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.65 2021-10-12 WeKan ® release
This release adds to following CRITICAL SECURITY UPDATES:
+1 -1
View File
@@ -1,4 +1,4 @@
FROM quay.io/wekan/ubuntu:hirsute-20210825
FROM quay.io/wekan/ubuntu:impish-20211015
LABEL maintainer="wekan"
# 2021-09-18:
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v5.65.0"
appVersion: "v5.71.0"
files:
userUploads:
- README.md
+95 -18
View File
@@ -5,6 +5,9 @@
# Wekan API Python CLI, originally from here, where is more details:
# https://github.com/wekan/wekan/wiki/New-card-with-Python3-and-REST-API
# TODO:
# addcustomfieldtoboard: There is error: Settings must be object. So adding does not work yet.
try:
# python 3
from urllib.parse import urlencode
@@ -23,12 +26,16 @@ if arguments == 0:
print("AUTHORID is USERID that writes card.")
print("If *nix: chmod +x api.py => ./api.py users")
print("Syntax:")
print(" python3 api.py users # All users")
print(" python3 api.py boards USERID # Boards of USERID")
print(" python3 api.py board BOARDID # Info of BOARDID")
print(" python3 api.py swimlanes BOARDID # Swimlanes of BOARDID")
print(" python3 api.py lists BOARDID # Lists of BOARDID")
print(" python3 api.py list BOARDID LISTID # Info of LISTID")
print(" python3 api.py users # All users")
print(" python3 api.py boards # All Public Boards")
print(" python3 api.py boards USERID # Boards of USERID")
print(" python3 api.py board BOARDID # Info of BOARDID")
print(" python3 api.py customfields BOARDID # Custom Fields of BOARDID")
print(" python3 api.py customfield BOARDID CUSTOMFIELDID # Info of CUSTOMFIELDID")
print(" python3 api.py addcustomfieldtoboard AUTHORID BOARDID NAME TYPE SETTINGS SHOWONCARD AUTOMATICALLYONCARD SHOWLABELONMINICARD SHOWSUMATTOPOFLIST # Add Custom Field to Board")
print(" python3 api.py swimlanes BOARDID # Swimlanes of BOARDID")
print(" python3 api.py lists BOARDID # Lists of BOARDID")
print(" python3 api.py list BOARDID LISTID # Info of LISTID")
print(" python3 api.py createlist BOARDID LISTTITLE # Create list")
print(" python3 api.py addcard AUTHORID BOARDID SWIMLANEID LISTID CARDTITLE CARDDESCRIPTION")
print(" python3 api.py editcard BOARDID LISTID CARDID NEWCARDTITLE NEWCARDDESCRIPTION")
@@ -65,12 +72,15 @@ chmod +x api.py
=== Wekan API Python CLI: Shows IDs for addcard ===
AUTHORID is USERID that writes card.
Syntax:
python3 api.py users # All users
python3 api.py boards USERID # Boards of USERID
python3 api.py board BOARDID # Info of BOARDID
python3 api.py swimlanes BOARDID # Swimlanes of BOARDID
python3 api.py lists BOARDID # Lists of BOARDID
python3 api.py list BOARDID LISTID # Info of LISTID
python3 api.py users # All users
python3 api.py boards USERID # Boards of USERID
python3 api.py board BOARDID # Info of BOARDID
python3 api.py customfields BOARDID # Custom Fields of BOARDID
python3 api.py customfield BOARDID CUSTOMFIELDID # Info of CUSTOMFIELDID
python3 api.py addcustomfieldtoboard AUTHORID BOARDID NAME TYPE SETTINGS SHOWONCARD AUTOMATICALLYONCARD SHOWLABELONMINICARD SHOWSUMATTOPOFLIST # Add Custom Field to Board
python3 api.py swimlanes BOARDID # Swimlanes of BOARDID
python3 api.py lists BOARDID # Lists of BOARDID
python3 api.py list BOARDID LISTID # Info of LISTID
python3 api.py createlist BOARDID LISTTITLE # Create list
python3 api.py addcard AUTHORID BOARDID SWIMLANEID LISTID CARDTITLE CARDDESCRIPTION
python3 api.py editcard BOARDID LISTID CARDID NEWCARDTITLE NEWCARDDESCRIPTION
@@ -78,6 +88,13 @@ Syntax:
python3 api.py attachmentjson BOARDID ATTACHMENTID # One attachment as JSON base64
python3 api.py attachmentbinary BOARDID ATTACHMENTID # One attachment as binary file
=== ADD CUSTOM FIELD TO BOARD ===
Type: text, number, date, dropdown, checkbox, currency, stringtemplate.
python3 api.py addcustomfieldtoboard cmx3gmHLKwAXLqjxz LcDW4QdooAx8hsZh8 "SomeField" "date" "" true true true true
=== USERS ===
python3 api.py users
@@ -133,6 +150,7 @@ l = 'lists'
sw = 'swimlane'
sws = 'swimlanes'
cs = 'cards'
cf = 'custom-fields'
bs = 'boards'
atl = 'attachmentslist'
at = 'attachment'
@@ -150,10 +168,34 @@ apikey = d['token']
# ------- LOGIN TOKEN END -----------
if arguments == 10:
if sys.argv[1] == 'addcustomfieldtoboard':
# ------- ADD CUSTOM FIELD TO BOARD START -----------
authorid = sys.argv[2]
boardid = sys.argv[3]
name = sys.argv[4]
type1 = sys.argv[5]
settings = str(json.loads(sys.argv[6]))
# There is error: Settings must be object. So this does not work yet.
#settings = {'currencyCode': 'EUR'}
print(type(settings))
showoncard = sys.argv[7]
automaticallyoncard = sys.argv[8]
showlabelonminicard = sys.argv[9]
showsumattopoflist = sys.argv[10]
customfieldtoboard = wekanurl + apiboards + boardid + s + cf
# Add Custom Field to Board
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
post_data = {'authorId': '{}'.format(authorid), 'name': '{}'.format(name), 'type': '{}'.format(type1), 'settings': '{}'.format(settings), 'showoncard': '{}'.format(showoncard), 'automaticallyoncard': '{}'.format(automaticallyoncard), 'showlabelonminicard': '{}'.format(showlabelonminicard), 'showsumattopoflist': '{}'.format(showsumattopoflist)}
body = requests.post(customfieldtoboard, data=post_data, headers=headers)
print(body.text)
# ------- ADD CUSTOM FIELD TO BOARD END -----------
if arguments == 7:
if sys.argv[1] == 'addcard':
# ------- WRITE TO CARD START -----------
# ------- ADD CARD START -----------
authorid = sys.argv[2]
boardid = sys.argv[3]
swimlaneid = sys.argv[4]
@@ -161,18 +203,18 @@ if arguments == 7:
cardtitle = sys.argv[6]
carddescription = sys.argv[7]
cardtolist = wekanurl + apiboards + boardid + s + l + s + listid + s + cs
# Write to card
# Add card
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
post_data = {'authorId': '{}'.format(authorid), 'title': '{}'.format(cardtitle), 'description': '{}'.format(carddescription), 'swimlaneId': '{}'.format(swimlaneid)}
body = requests.post(cardtolist, data=post_data, headers=headers)
print(body.text)
# ------- WRITE TO CARD END -----------
# ------- ADD CARD END -----------
if arguments == 6:
if sys.argv[1] == 'editcard':
# ------- LIST OF BOARD START -----------
# ------- EDIT CARD START -----------
boardid = sys.argv[2]
listid = sys.argv[3]
cardid = sys.argv[4]
@@ -187,7 +229,7 @@ if arguments == 6:
body = requests.get(edcard, headers=headers)
data2 = body.text.replace('}',"}\n")
print(data2)
# ------- LISTS OF BOARD END -----------
# ------- EDIT CARD END -----------
if arguments == 3:
@@ -217,6 +259,19 @@ if arguments == 3:
print(data2)
# ------- LISTS OF BOARD END -----------
if sys.argv[1] == 'customfield':
# ------- INFO OF CUSTOM FIELD START -----------
boardid = sys.argv[2]
customfieldid = sys.argv[3]
customfieldone = wekanurl + apiboards + boardid + s + cf + s + customfieldid
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
print("=== INFO OF ONE CUSTOM FIELD ===\n")
body = requests.get(customfieldone, headers=headers)
data2 = body.text.replace('}',"}\n")
print(data2)
# ------- INFO OF CUSTOM FIELD END -----------
if arguments == 2:
# ------- BOARDS LIST START -----------
@@ -230,8 +285,8 @@ if arguments == 2:
data2 = body.text.replace('}',"}\n")
print(data2)
# ------- BOARDS LIST END -----------
if sys.argv[1] == 'board':
if sys.argv[1] == 'board':
# ------- BOARD INFO START -----------
boardid = sys.argv[2]
board = wekanurl + apiboards + boardid
@@ -242,6 +297,17 @@ if arguments == 2:
print(data2)
# ------- BOARD INFO END -----------
if sys.argv[1] == 'customfields':
# ------- CUSTOM FIELDS OF BOARD START -----------
boardid = sys.argv[2]
boardcustomfields = wekanurl + apiboards + boardid + s + cf
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
body = requests.get(boardcustomfields, headers=headers)
print("=== CUSTOM FIELDS OF BOARD ===\n")
data2 = body.text.replace('}',"}\n")
print(data2)
# ------- CUSTOM FIELDS OF BOARD END -----------
if sys.argv[1] == 'swimlanes':
boardid = sys.argv[2]
swimlanes = wekanurl + apiboards + boardid + s + sws
@@ -289,3 +355,14 @@ if arguments == 1:
data2 = body.text.replace('}',"}\n")
print(data2)
# ------- LIST OF USERS END -----------
if sys.argv[1] == 'boards':
# ------- LIST OF PUBLIC BOARDS START -----------
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
print("=== PUBLIC BOARDS ===\n")
listpublicboards = wekanurl + apiboards
body = requests.get(listpublicboards, headers=headers)
data2 = body.text.replace('}',"}\n")
print(data2)
# ------- LIST OF PUBLIC BOARDS END -----------
+5 -1
View File
@@ -12,7 +12,7 @@ template(name="boardActivities")
+activity(activity=activityData card=card mode=mode)
template(name="cardActivities")
each activityData in currentCard.activities
each activityData in activities
+activity(activity=activityData card=card mode=mode)
template(name="editOrDeleteComment")
@@ -21,6 +21,10 @@ template(name="editOrDeleteComment")
= ' - '
a.js-delete-comment {{_ "delete"}}
template(name="deleteCommentPopup")
p {{_ "comment-delete"}}
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
template(name="commentReactions")
.reactions
each reaction in reactions
+13 -5
View File
@@ -15,7 +15,7 @@ BlazeComponent.extendComponent({
const capitalizedMode = Utils.capitalize(mode);
let thisId, searchId;
if (mode === 'linkedcard' || mode === 'linkedboard') {
thisId = Session.get('currentCard');
thisId = Utils.getCurrentCardId();
searchId = Cards.findOne({ _id: thisId }).linkedId;
mode = mode.replace('linked', '');
} else {
@@ -54,6 +54,13 @@ BlazeComponent.extendComponent({
},
}).register('activities');
Template.activities.helpers({
activities() {
const ret = this.card.activities();
return ret;
},
});
BlazeComponent.extendComponent({
checkItem() {
const checkItemId = this.currentData().activity.checklistItemId;
@@ -213,10 +220,11 @@ BlazeComponent.extendComponent({
return [
{
// XXX We should use Popup.afterConfirmation here
'click .js-delete-comment'() {
const commentId = this.currentData().activity.commentId;
'click .js-delete-comment': Popup.afterConfirm('deleteComment', () => {
const commentId = this.data().activity.commentId;
CardComments.remove(commentId);
},
Popup.back();
}),
'submit .js-edit-comment'(evt) {
evt.preventDefault();
const commentText = this.currentComponent()
@@ -262,7 +270,7 @@ Template.addReactionPopup.events({
const cardComment = CardComments.findOne({_id: commentId});
cardComment.toggleReaction(codepoint);
}
Popup.close();
Popup.back();
},
})
+2 -2
View File
@@ -64,7 +64,7 @@ function resetCommentInput(input) {
// Tracker.autorun to register the component dependencies, and re-run when these
// dependencies are invalidated. A better component API would remove this hack.
Tracker.autorun(() => {
Session.get('currentCard');
Utils.getCurrentCardId();
Tracker.afterFlush(() => {
autosize.update($('.js-new-comment-input'));
});
@@ -75,7 +75,7 @@ EscapeActions.register(
() => {
const draftKey = {
fieldName: 'cardComment',
docId: Session.get('currentCard'),
docId: Utils.getCurrentCardId(),
};
const commentInput = $('.js-new-comment-input');
const draft = commentInput.val().trim();
+1 -1
View File
@@ -34,7 +34,7 @@ BlazeComponent.extendComponent({
Utils.goBoardId(board._id);
},
'click .js-delete-board': Popup.afterConfirm('boardDelete', function() {
Popup.close();
Popup.back();
const isSandstorm =
Meteor.settings &&
Meteor.settings.public &&
+4 -14
View File
@@ -23,7 +23,7 @@ BlazeComponent.extendComponent({
},
onlyShowCurrentCard() {
return Utils.isMiniScreen() && Session.get('currentCard');
return Utils.isMiniScreen() && Utils.getCurrentCardId(true);
},
goHome() {
@@ -191,21 +191,11 @@ BlazeComponent.extendComponent({
});
this.autorun(() => {
let showDesktopDragHandles = false;
currentUser = Meteor.user();
if (currentUser) {
showDesktopDragHandles = (currentUser.profile || {})
.showDesktopDragHandles;
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
showDesktopDragHandles = true;
} else {
showDesktopDragHandles = false;
}
if (Utils.isMiniScreen() || showDesktopDragHandles) {
if (Utils.isMiniScreenOrShowDesktopDragHandles()) {
$swimlanesDom.sortable({
handle: '.js-swimlane-header-handle',
});
} else if (!Utils.isMiniScreen() && !showDesktopDragHandles) {
} else {
$swimlanesDom.sortable({
handle: '.swimlane-header',
});
@@ -216,7 +206,7 @@ BlazeComponent.extendComponent({
$swimlanesDom.sortable(
'option',
'disabled',
!Meteor.user().isBoardAdmin(),
!Meteor.user() || !Meteor.user().isBoardAdmin(),
);
});
@@ -80,6 +80,12 @@ template(name="boardHeaderBar")
if $eq watchLevel "muted"
i.fa.fa-bell-slash
span {{_ watchLevel}}
a.board-header-btn(title="{{_ 'sort-cards'}}" class="{{#if isSortActive }}emphasis{{else}} js-sort-cards {{/if}}")
i.fa.fa-sort
span {{#if isSortActive }}{{_ 'Sort is on'}}{{else}}{{_ 'sort-cards'}}{{/if}}
if isSortActive
a.board-header-btn-close.js-sort-reset(title="Remove Sort")
i.fa.fa-times-thin
else
a.board-header-btn.js-log-in(
+15 -15
View File
@@ -7,11 +7,11 @@ Template.boardMenuPopup.events({
'click .js-rename-board': Popup.open('boardChangeTitle'),
'click .js-custom-fields'() {
Sidebar.setView('customFields');
Popup.close();
Popup.back();
},
'click .js-open-archives'() {
Sidebar.setView('archives');
Popup.close();
Popup.back();
},
'click .js-change-board-color': Popup.open('boardChangeColor'),
'click .js-change-language': Popup.open('changeLanguage'),
@@ -24,7 +24,7 @@ Template.boardMenuPopup.events({
}),
'click .js-delete-board': Popup.afterConfirm('deleteBoard', function() {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
Popup.close();
Popup.back();
Boards.remove(currentBoard._id);
FlowRouter.go('home');
}),
@@ -47,7 +47,7 @@ Template.boardChangeTitlePopup.events({
if (newTitle) {
this.rename(newTitle);
this.setDescription(newDesc);
Popup.close();
Popup.back();
}
event.preventDefault();
},
@@ -136,7 +136,7 @@ BlazeComponent.extendComponent({
Sidebar.setView('search');
},
'click .js-multiselection-activate'() {
const currentCard = Session.get('currentCard');
const currentCard = Utils.getCurrentCardId();
MultiSelection.activate();
if (currentCard) {
MultiSelection.add(currentCard);
@@ -173,15 +173,15 @@ Template.boardHeaderBar.helpers({
Template.boardChangeViewPopup.events({
'click .js-open-lists-view'() {
Utils.setBoardView('board-view-lists');
Popup.close();
Popup.back();
},
'click .js-open-swimlanes-view'() {
Utils.setBoardView('board-view-swimlanes');
Popup.close();
Popup.back();
},
'click .js-open-cal-view'() {
Utils.setBoardView('board-view-cal');
Popup.close();
Popup.back();
},
});
@@ -327,7 +327,7 @@ BlazeComponent.extendComponent({
const currentBoard = Boards.findOne(Session.get('currentBoard'));
const visibility = this.currentData();
currentBoard.setVisibility(visibility);
Popup.close();
Popup.back();
},
events() {
@@ -360,7 +360,7 @@ BlazeComponent.extendComponent({
Session.get('currentBoard'),
level,
(err, ret) => {
if (!err && ret) Popup.close();
if (!err && ret) Popup.back();
},
);
},
@@ -432,7 +432,7 @@ BlazeComponent.extendComponent({
const direction = down ? -1 : 1;
this.setSortBy([sortby, direction]);
if (Utils.isMiniScreen) {
Popup.close();
Popup.back();
}
},
},
@@ -451,7 +451,7 @@ BlazeComponent.extendComponent({
};
Session.set('sortBy', sortBy);
sortCardsBy.set(TAPi18n.__('due-date'));
Popup.close();
Popup.back();
},
'click .js-sort-title'() {
const sortBy = {
@@ -459,7 +459,7 @@ BlazeComponent.extendComponent({
};
Session.set('sortBy', sortBy);
sortCardsBy.set(TAPi18n.__('title'));
Popup.close();
Popup.back();
},
'click .js-sort-created-asc'() {
const sortBy = {
@@ -467,7 +467,7 @@ BlazeComponent.extendComponent({
};
Session.set('sortBy', sortBy);
sortCardsBy.set(TAPi18n.__('date-created-newest-first'));
Popup.close();
Popup.back();
},
'click .js-sort-created-desc'() {
const sortBy = {
@@ -475,7 +475,7 @@ BlazeComponent.extendComponent({
};
Session.set('sortBy', sortBy);
sortCardsBy.set(TAPi18n.__('date-created-oldest-first'));
Popup.close();
Popup.back();
},
},
];
+4 -4
View File
@@ -4,7 +4,7 @@ Template.attachmentsGalery.events({
'attachmentDelete',
function() {
Attachments.remove(this._id);
Popup.close();
Popup.back();
},
),
// If we let this event bubble, FlowRouter will handle it and empty the page
@@ -53,7 +53,7 @@ Template.attachmentsGalery.helpers({
Template.previewAttachedImagePopup.events({
'click .js-large-image-clicked'() {
Popup.close();
Popup.back();
},
});
@@ -65,7 +65,7 @@ Template.cardAttachmentsPopup.events({
if (attachment && attachment._id && attachment.isImage()) {
card.setCover(attachment._id);
}
Popup.close();
Popup.back();
});
};
@@ -174,7 +174,7 @@ Template.previewClipboardImagePopup.events({
pastedResults = null;
$(document.body).pasteImageReader(() => {});
Popup.close();
Popup.back();
}
},
});
+4 -4
View File
@@ -3,7 +3,7 @@ import Cards from '/models/cards';
Template.cardCustomFieldsPopup.helpers({
hasCustomField() {
const card = Cards.findOne(Session.get('currentCard'));
const card = Utils.getCurrentCard();
const customFieldId = this._id;
return card.customFieldIndex(customFieldId) > -1;
},
@@ -11,7 +11,7 @@ Template.cardCustomFieldsPopup.helpers({
Template.cardCustomFieldsPopup.events({
'click .js-select-field'(event) {
const card = Cards.findOne(Session.get('currentCard'));
const card = Utils.getCurrentCard();
const customFieldId = this._id;
card.toggleCustomField(customFieldId);
event.preventDefault();
@@ -31,7 +31,7 @@ const CardCustomField = BlazeComponent.extendComponent({
onCreated() {
const self = this;
self.card = Cards.findOne(Session.get('currentCard'));
self.card = Utils.getCurrentCard();
self.customFieldId = this.data()._id;
},
@@ -194,7 +194,7 @@ CardCustomField.register('cardCustomField');
onCreated() {
super.onCreated();
const self = this;
self.card = Cards.findOne(Session.get('currentCard'));
self.card = Utils.getCurrentCard();
self.customFieldId = this.data()._id;
this.data().value && this.date.set(moment(this.data().value));
}
+4 -4
View File
@@ -24,7 +24,7 @@ Template.dateBadge.helpers({
}
_deleteDate() {
this.card.setReceived(null);
this.card.unsetReceived();
}
}.register('editCardReceivedDatePopup'));
@@ -50,7 +50,7 @@ Template.dateBadge.helpers({
}
_deleteDate() {
this.card.setStart(null);
this.card.unsetStart();
}
}.register('editCardStartDatePopup'));
@@ -73,7 +73,7 @@ Template.dateBadge.helpers({
}
_deleteDate() {
this.card.setDue(null);
this.card.unsetDue();
}
}.register('editCardDueDatePopup'));
@@ -96,7 +96,7 @@ Template.dateBadge.helpers({
}
_deleteDate() {
this.card.setEnd(null);
this.card.unsetEnd();
}
}.register('editCardEndDatePopup'));
+4 -1
View File
@@ -25,7 +25,10 @@ BlazeComponent.extendComponent({
// 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();
const submitButton = this.find('button[type=submit]');
if (submitButton) {
submitButton.click();
}
}
},
},
+48 -29
View File
@@ -1,27 +1,38 @@
template(name="cardDetailsPopup")
+cardDetails(popupCard)
template(name="cardDetails")
section.card-details.js-card-details(class='{{#if cardMaximized}}card-details-maximized{{/if}}'): .card-details-canvas
section.card-details.js-card-details(class='{{#if cardMaximized}}card-details-maximized{{/if}}' class='{{#if isPopup}}card-details-popup{{/if}}'): .card-details-canvas
.card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}')
+inlinedForm(classNames="js-card-details-title")
+editCardTitleForm
else
unless isMiniScreen
a.fa.fa-times-thin.close-card-details.js-close-card-details(title="{{_ 'close-card'}}")
unless cardMaximized
a.fa.fa-window-maximize.maximize-card-details.js-maximize-card-details(title="{{_ 'maximize-card'}}")
if cardMaximized
a.fa.fa-window-minimize.minimize-card-details.js-minimize-card-details(title="{{_ 'minimize-card'}}")
unless isPopup
a.fa.fa-times-thin.close-card-details.js-close-card-details(title="{{_ 'close-card'}}")
if cardMaximized
a.fa.fa-window-minimize.minimize-card-details.js-minimize-card-details(title="{{_ 'minimize-card'}}")
else
a.fa.fa-window-maximize.maximize-card-details.js-maximize-card-details(title="{{_ 'maximize-card'}}")
if currentUser.isBoardMember
a.fa.fa-navicon.card-details-menu.js-open-card-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
input.inline-input(type="text" id="cardURL_copy" value="{{ originRelativeUrl }}")
a.fa.fa-link.card-copy-button.js-copy-link(
id="cardURL_copy"
class="fa-link"
title="{{_ 'copy-card-link-to-clipboard'}}"
href="{{ originRelativeUrl }}"
)
if isMiniScreen
a.fa.fa-times-thin.close-card-details-mobile-web.js-close-card-details(title="{{_ 'close-card'}}")
else
unless isPopup
a.fa.fa-times-thin.close-card-details.js-close-card-details(title="{{_ 'close-card'}}")
if currentUser.isBoardMember
a.fa.fa-navicon.card-details-menu-mobile-web.js-open-card-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
a.fa.fa-link.card-copy-mobile-button
a.fa.fa-link.card-copy-mobile-button.js-copy-link(
id="cardURL_copy"
class="fa-link"
title="{{_ 'copy-card-link-to-clipboard'}}"
href="{{ originRelativeUrl }}"
)
h2.card-details-title.js-card-title(
class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}")
+viewer
@@ -66,8 +77,10 @@ template(name="cardDetails")
a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
i.fa.fa-plus
if currentBoard.allowsReceivedDate
if currentBoard.hasAnyAllowsDate
hr
if currentBoard.allowsReceivedDate
.card-details-item.card-details-item-received
h3.card-details-item-title
i.fa.fa-sign-out
@@ -119,7 +132,9 @@ template(name="cardDetails")
a.card-label.add-label.js-end-date
i.fa.fa-plus
hr
if currentBoard.hasAnyAllowsUser
hr
if currentBoard.allowsCreator
.card-details-item.card-details-item-creator
h3.card-details-item-title
@@ -160,17 +175,6 @@ template(name="cardDetails")
a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}")
i.fa.fa-plus
//.card-details-items
if getSpentTime
.card-details-item.card-details-item-spent
if getIsOvertime
h3.card-details-item-title
| {{_ 'overtime-hours'}}
else
h3.card-details-item-title
| {{_ 'spent-time-hours'}}
+cardSpentTime
//.card-details-items
if currentBoard.allowsRequestedBy
.card-details-item.card-details-item-name
@@ -212,6 +216,9 @@ template(name="cardDetails")
+viewer
= getAssignedBy
if $or currentBoard.allowsCardSortingByNumber getSpentTime
hr
if currentBoard.allowsCardSortingByNumber
.card-details-item.card-details-sort-order
h3.card-details-item-title
@@ -226,13 +233,18 @@ template(name="cardDetails")
= sort
//.card-details-items
if customFieldsWD
.material-toggle-switch(title="{{_ 'change'}} {{_ 'custom-fields'}} {{_ 'layout'}}")
if customFieldsGrid
input.toggle-switch(type="checkbox" id="toggleCustomFieldsGridButton" checked="checked")
if getSpentTime
.card-details-item.card-details-item-spent
if getIsOvertime
h3.card-details-item-title
| {{_ 'overtime-hours'}}
else
input.toggle-switch(type="checkbox" id="toggleCustomFieldsGridButton")
label.toggle-label(for="toggleCustomFieldsGridButton")
h3.card-details-item-title
| {{_ 'spent-time-hours'}}
+cardSpentTime
//.card-details-items
if customFieldsWD
unless customFieldsGrid
hr
each customFieldsWD
@@ -243,6 +255,13 @@ template(name="cardDetails")
i.fa.fa-list-alt
= definition.name
+cardCustomField
.material-toggle-switch(title="{{_ 'change'}} {{_ 'custom-fields'}} {{_ 'layout'}}")
if customFieldsGrid
input.toggle-switch(type="checkbox" id="toggleCustomFieldsGridButton" checked="checked")
else
input.toggle-switch(type="checkbox" id="toggleCustomFieldsGridButton")
label.toggle-label(for="toggleCustomFieldsGridButton")
a.fa.fa-plus.js-custom-fields.card-details-item.custom-fields(title="{{_ 'custom-fields'}}")
if getVoteQuestion
hr
+92 -84
View File
@@ -34,11 +34,14 @@ BlazeComponent.extendComponent({
onCreated() {
this.currentBoard = Boards.findOne(Session.get('currentBoard'));
this.isLoaded = new ReactiveVar(false);
const boardBody = this.parentComponent().parentComponent();
//in Miniview parent is Board, not BoardBody.
if (boardBody !== null) {
boardBody.showOverlay.set(true);
boardBody.mouseHasEnterCardDetails = false;
if (this.parentComponent() && this.parentComponent().parentComponent()) {
const boardBody = this.parentComponent().parentComponent();
//in Miniview parent is Board, not BoardBody.
if (boardBody !== null) {
boardBody.showOverlay.set(true);
boardBody.mouseHasEnterCardDetails = false;
}
}
this.calculateNextPeak();
@@ -215,7 +218,7 @@ BlazeComponent.extendComponent({
distance: 7,
start(evt, ui) {
ui.placeholder.height(ui.helper.height());
EscapeActions.executeUpTo('popup-close');
EscapeActions.clickExecute(evt.target, 'inlinedForm');
},
stop(evt, ui) {
let prevChecklist = ui.item.prev('.js-checklist').get(0);
@@ -297,6 +300,7 @@ BlazeComponent.extendComponent({
},
onDestroyed() {
if (this.parentComponent() === null) return;
const parentComponent = this.parentComponent().parentComponent();
//on mobile view parent is Board, not board body.
if (parentComponent === null) return;
@@ -319,7 +323,8 @@ BlazeComponent.extendComponent({
'click .js-close-card-details'() {
Utils.goBoardId(this.data().boardId);
},
'click .js-copy-link'() {
'click .js-copy-link'(event) {
event.preventDefault();
const StringToCopyElement = document.getElementById('cardURL_copy');
StringToCopyElement.value =
window.location.origin + window.location.pathname;
@@ -377,6 +382,12 @@ BlazeComponent.extendComponent({
this.data().setRequestedBy('');
}
},
'keydown input.js-edit-card-sort'(evt) {
// enter = save
if (evt.keyCode === 13) {
this.find('button[type=submit]').click();
}
},
'submit .js-card-details-sort'(event) {
event.preventDefault();
const sort = parseFloat(this.currentComponent()
@@ -401,7 +412,9 @@ BlazeComponent.extendComponent({
'click .js-end-date': Popup.open('editCardEndDate'),
'click .js-show-positive-votes': Popup.open('positiveVoteMembers'),
'click .js-show-negative-votes': Popup.open('negativeVoteMembers'),
'click .js-custom-fields': Popup.open('cardCustomFields'),
'mouseenter .js-card-details'() {
if (this.parentComponent() === null) return;
const parentComponent = this.parentComponent().parentComponent();
//on mobile view parent is Board, not BoardBody.
if (parentComponent === null) return;
@@ -526,6 +539,22 @@ BlazeComponent.extendComponent({
},
}).register('cardDetails');
Template.cardDetails.helpers({
isPopup() {
let ret = !!Utils.getPopupCardId();
return ret;
}
});
Template.cardDetailsPopup.onDestroyed(() => {
Session.delete('popupCard');
});
Template.cardDetailsPopup.helpers({
popupCard() {
const ret = Utils.getPopupCard();
return ret;
},
});
BlazeComponent.extendComponent({
template() {
return 'exportCard';
@@ -576,16 +605,15 @@ Template.editCardSortOrderForm.onRendered(function () {
// XXX Recovering the currentCard identifier form a session variable is
// fragile because this variable may change for instance if the route
// change. We should use some component props instead.
docId: Session.get('currentCard'),
docId: Utils.getCurrentCardId(),
};
}
close(isReset = false) {
if (this.isOpen.get() && !isReset) {
const draft = this.getValue().trim();
if (
draft !== Cards.findOne(Session.get('currentCard')).getDescription()
) {
let card = Utils.getCurrentCard();
if (card && draft !== card.getDescription()) {
UnsavedEdits.set(this._getUnsavedEditKey(), this.getValue());
}
}
@@ -630,7 +658,6 @@ Template.cardDetailsActionsPopup.events({
'click .js-export-card': Popup.open('exportCard'),
'click .js-members': Popup.open('cardMembers'),
'click .js-assignees': Popup.open('cardAssignees'),
'click .js-labels': Popup.open('cardLabels'),
'click .js-attachments': Popup.open('cardAttachments'),
'click .js-start-voting': Popup.open('cardStartVoting'),
'click .js-start-planning-poker': Popup.open('cardStartPlanningPoker'),
@@ -653,6 +680,7 @@ Template.cardDetailsActionsPopup.events({
.map((c) => c.sort),
);
this.move(this.boardId, this.swimlaneId, this.listId, minOrder - 1);
Popup.back();
},
'click .js-move-card-to-bottom'(event) {
event.preventDefault();
@@ -780,7 +808,7 @@ Template.moveCardPopup.events({
'click .js-done'() {
// XXX We should *not* get the currentCard from the global state, but
// instead from a “component” state.
const card = Cards.findOne(Session.get('currentCard'));
const card = Utils.getCurrentCard();
const bSelect = $('.js-select-boards')[0];
let boardId;
// if we are a worker, we won't have a board select so we just use the
@@ -792,7 +820,13 @@ Template.moveCardPopup.events({
const slSelect = $('.js-select-swimlanes')[0];
const swimlaneId = slSelect.options[slSelect.selectedIndex].value;
card.move(boardId, swimlaneId, listId, 0);
Popup.close();
// set new id's to card object in case the card is moved to top by the comment "moveCard" after this command (.js-move-card)
this.boardId = boardId;
this.swimlaneId = swimlaneId;
this.listId = listId;
Popup.back();
},
});
BlazeComponent.extendComponent({
@@ -838,7 +872,7 @@ BlazeComponent.extendComponent({
Template.copyCardPopup.events({
'click .js-done'() {
const card = Cards.findOne(Session.get('currentCard'));
const card = Utils.getCurrentCard();
const lSelect = $('.js-select-lists')[0];
const listId = lSelect.options[lSelect.selectedIndex].value;
const slSelect = $('.js-select-swimlanes')[0];
@@ -860,14 +894,14 @@ Template.copyCardPopup.events({
// See https://github.com/wekan/wekan/issues/80
Filter.addException(_id);
Popup.close();
Popup.back();
}
},
});
Template.convertChecklistItemToCardPopup.events({
'click .js-done'() {
const card = Cards.findOne(Session.get('currentCard'));
const card = Utils.getCurrentCard();
const lSelect = $('.js-select-lists')[0];
const listId = lSelect.options[lSelect.selectedIndex].value;
const slSelect = $('.js-select-swimlanes')[0];
@@ -887,7 +921,7 @@ Template.convertChecklistItemToCardPopup.events({
});
Filter.addException(_id);
Popup.close();
Popup.back();
}
},
@@ -895,7 +929,7 @@ Template.convertChecklistItemToCardPopup.events({
Template.copyChecklistToManyCardsPopup.events({
'click .js-done'() {
const card = Cards.findOne(Session.get('currentCard'));
const card = Utils.getCurrentCard();
const oldId = card._id;
card._id = null;
const lSelect = $('.js-select-lists')[0];
@@ -943,7 +977,7 @@ Template.copyChecklistToManyCardsPopup.events({
cmt.copy(_id);
});
}
Popup.close();
Popup.back();
}
},
});
@@ -977,7 +1011,7 @@ BlazeComponent.extendComponent({
},
'click .js-remove-color'() {
this.currentCard.setColor(null);
Popup.close();
Popup.back();
},
},
];
@@ -1014,7 +1048,7 @@ BlazeComponent.extendComponent({
},
cards() {
const currentId = Session.get('currentCard');
const currentId = Utils.getCurrentCardId();
if (this.parentBoard.get()) {
return Cards.find({
boardId: this.parentBoard.get(),
@@ -1079,7 +1113,7 @@ BlazeComponent.extendComponent({
}
},
'click .js-delete': Popup.afterConfirm('cardDelete', function () {
Popup.close();
Popup.back();
// verify that there are no linked cards
if (Cards.find({ linkedId: this._id }).count() === 0) {
Cards.remove(this._id);
@@ -1146,12 +1180,12 @@ BlazeComponent.extendComponent({
if (endString) {
this.currentCard.setVoteEnd(endString);
}
Popup.close();
Popup.back();
},
'click .js-remove-vote': Popup.afterConfirm('deleteVote', () => {
event.preventDefault();
this.currentCard.unsetVote();
Popup.close();
Popup.back();
}),
'click a.js-toggle-vote-public'(event) {
event.preventDefault();
@@ -1191,7 +1225,7 @@ BlazeComponent.extendComponent({
// if active vote - store it
if (this.currentData().getVoteQuestion()) {
this._storeDate(newDate.toDate());
Popup.close();
Popup.back();
} else {
this.currentData().vote = { end: newDate.toDate() }; // set vote end temp
Popup.back();
@@ -1225,86 +1259,77 @@ BlazeComponent.extendComponent({
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(usaDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: usaDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (euroAmDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(euroAmDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: euroAmDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (euro24hDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(euro24hDate.toDate());
this.card.setPokerEnd(euro24hDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: euro24hDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (eurodotDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(eurodotDate.toDate());
this.card.setPokerEnd(eurodotDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: eurodotDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (minusDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(minusDate.toDate());
this.card.setPokerEnd(minusDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: minusDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (slashDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(slashDate.toDate());
this.card.setPokerEnd(slashDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: slashDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (dotDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(dotDate.toDate());
this.card.setPokerEnd(dotDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: dotDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (brezhonegDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(brezhonegDate.toDate());
this.card.setPokerEnd(brezhonegDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: brezhonegDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (hrvatskiDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(hrvatskiDate.toDate());
this.card.setPokerEnd(hrvatskiDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: hrvatskiDate.toDate() }; // set poker end temp
Popup.back();
@@ -1314,41 +1339,37 @@ BlazeComponent.extendComponent({
if (this.currentData().getPokerQuestion()) {
this._storeDate(latviaDate.toDate());
this.card.setPokerEnd(latviaDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: latviaDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (nederlandsDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(nederlandsDate.toDate());
this.card.setPokerEnd(nederlandsDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: nederlandsDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (greekDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(greekDate.toDate());
this.card.setPokerEnd(greekDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: greekDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (macedonianDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(macedonianDate.toDate());
this.card.setPokerEnd(macedonianDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: macedonianDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else {
this.error.set('invalid-date');
evt.target.date.focus();
@@ -1357,7 +1378,7 @@ BlazeComponent.extendComponent({
'click .js-delete-date'(evt) {
evt.preventDefault();
this._deleteDate();
Popup.close();
Popup.back();
},
},
];
@@ -1395,11 +1416,11 @@ BlazeComponent.extendComponent({
if (endString) {
this.currentCard.setPokerEnd(endString);
}
Popup.close();
Popup.back();
},
'click .js-remove-poker': Popup.afterConfirm('deletePoker', (event) => {
this.currentCard.unsetPoker();
Popup.close();
Popup.back();
}),
'click a.js-toggle-poker-allow-non-members'(event) {
event.preventDefault();
@@ -1462,7 +1483,7 @@ BlazeComponent.extendComponent({
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(newDate.toDate());
Popup.close();
Popup.back();
} else {
this.currentData().poker = { end: newDate.toDate() }; // set poker end temp
Popup.back();
@@ -1494,130 +1515,117 @@ BlazeComponent.extendComponent({
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(usaDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: usaDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (euroAmDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(euroAmDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: euroAmDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (euro24hDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(euro24hDate.toDate());
this.card.setPokerEnd(euro24hDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: euro24hDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (eurodotDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(eurodotDate.toDate());
this.card.setPokerEnd(eurodotDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: eurodotDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (minusDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(minusDate.toDate());
this.card.setPokerEnd(minusDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: minusDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (slashDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(slashDate.toDate());
this.card.setPokerEnd(slashDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: slashDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (dotDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(dotDate.toDate());
this.card.setPokerEnd(dotDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: dotDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (brezhonegDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(brezhonegDate.toDate());
this.card.setPokerEnd(brezhonegDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: brezhonegDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (hrvatskiDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(hrvatskiDate.toDate());
this.card.setPokerEnd(hrvatskiDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: hrvatskiDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (latviaDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(latviaDate.toDate());
this.card.setPokerEnd(latviaDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: latviaDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (nederlandsDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(nederlandsDate.toDate());
this.card.setPokerEnd(nederlandsDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: nederlandsDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (greekDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(greekDate.toDate());
this.card.setPokerEnd(greekDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: greekDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else if (macedonianDate.isValid()) {
// if active poker - store it
if (this.currentData().getPokerQuestion()) {
this._storeDate(macedonianDate.toDate());
this.card.setPokerEnd(macedonianDate.toDate());
Popup.close();
} else {
this.currentData().poker = { end: macedonianDate.toDate() }; // set poker end temp
Popup.back();
}
Popup.back();
} else {
// this.error.set('invalid-date);
this.error.set('invalid-date' + ' ' + dateString);
@@ -1627,7 +1635,7 @@ BlazeComponent.extendComponent({
'click .js-delete-date'(evt) {
evt.preventDefault();
this._deleteDate();
Popup.close();
Popup.back();
},
},
];
@@ -1680,7 +1688,7 @@ Template.cardAssigneesPopup.onCreated(function () {
Template.cardAssigneesPopup.events({
'click .js-select-assignee'(event) {
const card = Cards.findOne(Session.get('currentCard'));
const card = Utils.getCurrentCard();
const assigneeId = this.userId;
card.toggleAssignee(assigneeId);
event.preventDefault();
@@ -1754,7 +1762,7 @@ Template.cardAssigneePopup.helpers({
Template.cardAssigneePopup.events({
'click .js-remove-assignee'() {
Cards.findOne(this.cardId).unassignAssignee(this.userId);
Popup.close();
Popup.back();
},
'click .js-edit-profile': Popup.open('editProfile'),
});
+18 -13
View File
@@ -4,15 +4,6 @@
avatar-radius = 50%
#cardURL_copy
// Have clipboard text not visible by moving it to far left
position: absolute
left: -2000px
top: 0px
#clipboard
white-space: normal
.assignee
border-radius: 3px
display: block
@@ -230,16 +221,15 @@ avatar-radius = 50%
word-wrap: break-word
max-width: 28%
flex-grow: 1
&.custom-fields
padding-left: 10px
.card-details-item-title
font-size: 16px
font-weight: bold
color: #4d4d4d
.card-label
padding-top: 5px
padding-bottom: 5px
.activities
padding-top: 10px
@@ -315,6 +305,21 @@ input[type="submit"].attachment-add-link-submit
.minimize-card-details
margin-right: 40px
.card-details-popup
padding: 0px 10px
.pop-over > .content-wrapper > .popup-container-depth-0
width: 100%
& > .content
width: calc(100% - 10px)
& > .content > .card-details-popup
overflow-y: auto
& hr
margin: 15px 0px
card-details-color(background, color...)
background: background !important
if color
+8 -5
View File
@@ -9,7 +9,6 @@ BlazeComponent.extendComponent({
toggleOvertime() {
this.card.setIsOvertime(!this.card.getIsOvertime());
$('#overtime .materialCheckBox').toggleClass('is-checked');
$('#overtime').toggleClass('is-checked');
},
storeTime(spentTime, isOvertime) {
@@ -18,6 +17,7 @@ BlazeComponent.extendComponent({
},
deleteTime() {
this.card.setSpentTime(null);
this.card.setIsOvertime(false);
},
events() {
return [
@@ -27,11 +27,14 @@ BlazeComponent.extendComponent({
evt.preventDefault();
const spentTime = parseFloat(evt.target.time.value);
const isOvertime = this.card.getIsOvertime();
//const isOvertime = this.card.getIsOvertime();
let isOvertime = false;
if ($('#overtime').attr('class').indexOf('is-checked') >= 0) {
isOvertime = true;
}
if (spentTime >= 0) {
this.storeTime(spentTime, isOvertime);
Popup.close();
Popup.back();
} else {
this.error.set('invalid-time');
evt.target.time.focus();
@@ -40,7 +43,7 @@ BlazeComponent.extendComponent({
'click .js-delete-time'(evt) {
evt.preventDefault();
this.deleteTime();
Popup.close();
Popup.back();
},
'click a.js-toggle-overtime': this.toggleOvertime,
},
+2 -2
View File
@@ -18,14 +18,14 @@ template(name="checklists")
.card-checklist-items
each checklist in currentCard.checklists
each checklist in checklists
+checklistDetail(checklist = checklist)
if canModifyCard
+inlinedForm(autoclose=false classNames="js-add-checklist" cardId = cardId)
+addChecklistItemForm
else
a.js-open-inlined-form(title="{{_ 'add-checklist'}}")
a.add-checklist.js-open-inlined-form(title="{{_ 'add-checklist'}}")
i.fa.fa-plus
template(name="checklistDetail")
+13 -4
View File
@@ -16,7 +16,7 @@ function initSorting(items) {
scroll: false,
start(evt, ui) {
ui.placeholder.height(ui.helper.height());
EscapeActions.executeUpTo('popup-close');
EscapeActions.clickExecute(evt.target, 'inlinedForm');
},
stop(evt, ui) {
const parent = ui.item.parents('.js-checklist-items');
@@ -94,16 +94,14 @@ BlazeComponent.extendComponent({
title,
sort: card.checklists().count(),
});
this.closeAllInlinedForms();
setTimeout(() => {
this.$('.add-checklist-item')
.last()
.click();
}, 100);
}
textarea.value = '';
textarea.focus();
},
addChecklistItem(event) {
event.preventDefault();
const textarea = this.find('textarea.js-add-checklist-item');
@@ -190,6 +188,10 @@ BlazeComponent.extendComponent({
}
},
closeAllInlinedForms() {
this.$('.js-close-inlined-form').click();
},
events() {
const events = {
'click .toggle-delete-checklist-dialog'(event) {
@@ -214,6 +216,8 @@ BlazeComponent.extendComponent({
'click .js-delete-checklist-item': this.deleteItem,
'click .confirm-checklist-delete': this.deleteChecklist,
'focus .js-add-checklist-item': this.focusChecklistItem,
'click .add-checklist-item.js-open-inlined-form': this.closeAllInlinedForms,
'click .add-checklist.js-open-inlined-form': this.closeAllInlinedForms,
keydown: this.pressKey,
},
];
@@ -262,6 +266,11 @@ BlazeComponent.extendComponent({
}).register('boardsSwimlanesAndLists');
Template.checklists.helpers({
checklists() {
const card = Cards.findOne(this.cardId);
const ret = card.checklists();
return ret;
},
hideCheckedItems() {
const currentUser = Meteor.user();
if (currentUser) return currentUser.hasHideCheckedItems();
+4 -2
View File
@@ -27,9 +27,11 @@ template(name="deleteLabelPopup")
template(name="cardLabelsPopup")
ul.edit-labels-pop-over
each board.labels
li
li.js-card-label-item
a.card-label-edit-button.fa.fa-pencil.js-edit-label
span.card-label.card-label-selectable.js-select-label(class="card-label-{{color}}"
if isMiniScreenOrShowDesktopDragHandles
span.fa.label-handle(class="fa-arrows" title="{{_ 'dragLabel'}}")
span.card-label.card-label-selectable.js-select-label.card-label-wrapper(class="card-label-{{color}}"
class="{{# if isLabelSelected ../_id }}active{{/if}}")
+viewer
= name
+51 -8
View File
@@ -39,15 +39,58 @@ Template.createLabelPopup.helpers({
},
});
Template.cardLabelsPopup.events({
'click .js-select-label'(event) {
const card = Cards.findOne(Session.get('currentCard'));
const labelId = this._id;
card.toggleLabel(labelId);
event.preventDefault();
BlazeComponent.extendComponent({
onRendered() {
const itemsSelector = 'li.js-card-label-item:not(.placeholder)';
const $labels = this.$('.edit-labels-pop-over');
$labels.sortable({
connectWith: '.edit-labels-pop-over',
tolerance: 'pointer',
appendTo: '.edit-labels-pop-over',
helper: 'clone',
distance: 7,
items: itemsSelector,
placeholder: 'card-label-wrapper placeholder',
start(evt, ui) {
ui.helper.css('z-index', 1000);
ui.placeholder.height(ui.helper.height());
EscapeActions.clickExecute(evt.target, 'inlinedForm');
},
stop(evt, ui) {
const newLabelOrderOnlyIds = ui.item.parent().children().toArray().map(_element => Blaze.getData(_element)._id)
const card = Blaze.getData(this);
card.board().setNewLabelOrder(newLabelOrderOnlyIds);
},
});
Utils.enableClickOnTouch(itemsSelector);
// Disable drag-dropping if the current user is not a board member or is comment only
this.autorun(() => {
if (Utils.isMiniScreenOrShowDesktopDragHandles()) {
$labels.sortable({
handle: '.label-handle',
});
}
});
},
'click .js-edit-label': Popup.open('editLabel'),
'click .js-add-label': Popup.open('createLabel'),
events() {
return [
{
'click .js-select-label'(event) {
const card = Utils.getCurrentCard();
const labelId = this.currentData()._id;
card.toggleLabel(labelId);
event.preventDefault();
},
'click .js-edit-label': Popup.open('editLabel'),
'click .js-add-label': Popup.open('createLabel'),
}
];
}
}).register('cardLabelsPopup');
Template.cardLabelsPopup.events({
});
Template.formLabel.events({
+14 -6
View File
@@ -2,6 +2,7 @@
// XXX Use .board-widget-labels as a flexbox container
.card-label
border: 1px solid #000000
border-radius: 4px
color: white //Default white text, in select cases, changed to black to improve contrast between label colour and text
display: inline-block
@@ -12,10 +13,11 @@
padding: 3px 8px
max-width: 210px
min-width: 8px
overflow: ellipsis
word-wrap: break-word
height: 18px
vertical-align: bottom
min-height: 18px
vertical-align: middle
white-space: initial
overflow: initial
&:hover
color: white
@@ -27,12 +29,13 @@
&.add-label
box-shadow: 0 0 0 2px darken(white, 25%) inset
border: initial
&:hover, &.is-active
box-shadow: 0 0 0 2px darken(white, 60%) inset
i.fa-plus
margin-top: 3px
p
margin: 0px
.palette-colors
display: flex
@@ -47,7 +50,6 @@
.card-label-white
background-color: #ffffff
color: #000000 //Black text for better visibility
border: 1px solid #c0c0c0
.card-label-white:hover
color: #aaaaaa //grey text for better visibility
@@ -220,3 +222,9 @@
&:hover
background: #dbdbdb
ul.edit-labels-pop-over
span.fa.label-handle
padding-right: 10px;
span.fa.label-handle + .card-label
max-width: 180px
+9 -8
View File
@@ -2,21 +2,17 @@ template(name="minicard")
.minicard(
class="{{#if isLinkedCard}}linked-card{{/if}}"
class="{{#if isLinkedBoard}}linked-board{{/if}}"
class="minicard-{{colorClass}}")
if isMiniScreen
class="{{#if colorClass}}minicard-{{colorClass}}{{/if}}")
if isMiniScreenOrShowDesktopDragHandles
.handle
.fa.fa-arrows
unless isMiniScreen
if showDesktopDragHandles
.handle
.fa.fa-arrows
if cover
.minicard-cover(style="background-image: url('{{cover.url}}');")
if labels
.minicard-labels
each labels
unless hiddenMinicardLabelText
span.card-label(class="card-label-{{color}}" title=name)
span.js-card-label.card-label(class="card-label-{{color}}" title=name)
+viewer
= name
if hiddenMinicardLabelText
@@ -145,4 +141,9 @@ template(name="minicard")
if currentBoard.allowsCardSortingByNumber
.badge
span.badge-icon.fa.fa-sort
span.badge-text {{ sort }}
span.badge-text.check-list-sort {{ sort }}
template(name="editCardSortOrderPopup")
input.js-edit-card-sort-popup(type='text' autofocus value=sort dir="auto")
.edit-controls.clearfix
button.primary.confirm.js-submit-edit-card-sort-popup(type="submit") {{_ 'save'}}
+40 -13
View File
@@ -49,6 +49,16 @@ BlazeComponent.extendComponent({
return false;
},
/** opens the card label popup only if clicked onto a label
* <li> this is necessary to have the data context of the minicard.
* if .js-card-label is used at click event, then only the data context of the label itself is available at this.currentData()
*/
cardLabelsPopup(event) {
if (this.find('.js-card-label:hover')) {
Popup.open("cardLabels")(event, {dataContextIfCurrentDataIsUndefined: this.currentData()});
}
},
events() {
return [
{
@@ -57,8 +67,6 @@ BlazeComponent.extendComponent({
else if (this.data().isLinkedBoard())
Utils.goBoardId(this.data().linkedId);
},
},
{
'click .js-toggle-minicard-label-text'() {
if (window.localStorage.getItem('hiddenMinicardLabelText')) {
window.localStorage.removeItem('hiddenMinicardLabelText'); //true
@@ -66,22 +74,14 @@ BlazeComponent.extendComponent({
window.localStorage.setItem('hiddenMinicardLabelText', 'true'); //true
}
},
},
'click span.badge-icon.fa.fa-sort, click span.badge-text.check-list-sort' : Popup.open("editCardSortOrder"),
'click .minicard-labels' : this.cardLabelsPopup,
}
];
},
}).register('minicard');
Template.minicard.helpers({
showDesktopDragHandles() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
return true;
} else {
return false;
}
},
hiddenMinicardLabelText() {
currentUser = Meteor.user();
if (currentUser) {
@@ -93,3 +93,30 @@ Template.minicard.helpers({
}
},
});
BlazeComponent.extendComponent({
events() {
return [
{
'keydown input.js-edit-card-sort-popup'(evt) {
// enter = save
if (evt.keyCode === 13) {
this.find('button[type=submit]').click();
}
},
'click button.js-submit-edit-card-sort-popup'(event) {
// save button pressed
event.preventDefault();
const sort = this.$('.js-edit-card-sort-popup')[0]
.value
.trim();
if (!Number.isNaN(sort)) {
let card = this.data();
card.move(card.boardId, card.swimlaneId, card.listId, sort);
Popup.back();
}
},
}
]
}
}).register('editCardSortOrderPopup');
-2
View File
@@ -80,8 +80,6 @@
.minicard-labels
float: none
display: flex
flex-wrap: wrap
.minicard-label
width: 11px
+1 -1
View File
@@ -1,6 +1,6 @@
template(name="resultCard")
.result-card-wrapper
a.minicard-wrapper.card-title(href=originRelativeUrl)
a.minicard-wrapper.js-minicard.card-title(href=originRelativeUrl)
+minicard(this)
//= card.title
ul.result-card-context-list
+17 -1
View File
@@ -5,7 +5,23 @@ Template.resultCard.helpers({
});
BlazeComponent.extendComponent({
clickOnMiniCard(evt) {
evt.preventDefault();
Session.set('popupCard', this.currentData()._id);
this.cardDetailsPopup(evt);
},
cardDetailsPopup(event) {
if (!Popup.isOpen()) {
Popup.open("cardDetails")(event);
}
},
events() {
return [{}];
return [
{
'click .js-minicard': this.clickOnMiniCard,
},
];
},
}).register('resultCard');
+1
View File
@@ -247,6 +247,7 @@ textarea
position: absolute
left: -9999px
visibility: hidden
display: none
.materialCheckBox
position: relative
+2 -26
View File
@@ -117,22 +117,11 @@ BlazeComponent.extendComponent({
});
this.autorun(() => {
let showDesktopDragHandles = false;
currentUser = Meteor.user();
if (currentUser) {
showDesktopDragHandles = (currentUser.profile || {})
.showDesktopDragHandles;
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
showDesktopDragHandles = true;
} else {
showDesktopDragHandles = false;
}
if (Utils.isMiniScreen() || showDesktopDragHandles) {
if (Utils.isMiniScreenOrShowDesktopDragHandles()) {
$cards.sortable({
handle: '.handle',
});
} else if (!Utils.isMiniScreen() && !showDesktopDragHandles) {
} else {
$cards.sortable({
handle: '.minicard',
});
@@ -178,19 +167,6 @@ BlazeComponent.extendComponent({
},
}).register('list');
Template.list.helpers({
showDesktopDragHandles() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
return true;
} else {
return false;
}
},
});
Template.miniList.events({
'click .js-select-list'() {
const listId = this._id;
+1
View File
@@ -53,6 +53,7 @@ template(name="addCardForm")
.add-controls.clearfix
button.primary.confirm(type="submit") {{_ 'add'}}
a.fa.fa-times-thin.js-close-inlined-form
unless currentBoard.isTemplatesBoard
unless currentBoard.isTemplateBoard
span.quiet
+19 -14
View File
@@ -148,6 +148,10 @@ BlazeComponent.extendComponent({
// If the card is already selected, we want to de-select it.
// XXX We should probably modify the minicard href attribute instead of
// overwriting the event in case the card is already selected.
} else if (Utils.isMiniScreen()) {
evt.preventDefault();
Session.set('popupCard', this.currentData()._id);
this.cardDetailsPopup(evt);
} else if (Session.equals('currentCard', this.currentData()._id)) {
evt.stopImmediatePropagation();
evt.preventDefault();
@@ -216,6 +220,12 @@ BlazeComponent.extendComponent({
);
},
cardDetailsPopup(event) {
if (!Popup.isOpen()) {
Popup.open("cardDetails")(event);
}
},
events() {
return [
{
@@ -486,7 +496,7 @@ BlazeComponent.extendComponent({
evt.preventDefault();
const linkedId = $('.js-select-cards option:selected').val();
if (!linkedId) {
Popup.close();
Popup.back();
return;
}
const _id = Cards.insert({
@@ -501,7 +511,7 @@ BlazeComponent.extendComponent({
linkedId,
});
Filter.addException(_id);
Popup.close();
Popup.back();
},
'click .js-link-board'(evt) {
//LINK BOARD
@@ -512,7 +522,7 @@ BlazeComponent.extendComponent({
!impBoardId ||
Cards.findOne({ linkedId: impBoardId, archived: false })
) {
Popup.close();
Popup.back();
return;
}
const _id = Cards.insert({
@@ -527,7 +537,7 @@ BlazeComponent.extendComponent({
linkedId: impBoardId,
});
Filter.addException(_id);
Popup.close();
Popup.back();
},
},
];
@@ -574,7 +584,7 @@ BlazeComponent.extendComponent({
});
}
if (!board) {
Popup.close();
Popup.back();
return;
}
const boardId = board._id;
@@ -701,7 +711,7 @@ BlazeComponent.extendComponent({
},
);
}
Popup.close();
Popup.back();
},
},
];
@@ -789,17 +799,12 @@ BlazeComponent.extendComponent({
return false;
}
const spinnerViewPosition = this.spinner.offsetTop - this.container.offsetTop + this.spinner.clientHeight;
const parentViewHeight = this.container.clientHeight;
const bottomViewPosition = this.container.scrollTop + parentViewHeight;
let spinnerOffsetTop = this.spinner.offsetTop;
const addCard = $(this.container).find("a.open-minicard-composer").first()[0];
if (addCard !== undefined) {
spinnerOffsetTop -= addCard.clientHeight;
}
return bottomViewPosition > spinnerOffsetTop;
return bottomViewPosition > spinnerViewPosition;
}
getSkSpinnerName() {
+1 -1
View File
@@ -44,7 +44,7 @@ template(name="listHeader")
a.js-add-card.fa.fa-plus.list-header-plus-icon(title="{{_ 'add-card-to-top-of-list'}}")
a.fa.fa-navicon.js-open-list-menu(title="{{_ 'listActionPopup-title'}}")
if currentUser.isBoardAdmin
if showDesktopDragHandles
if isShowDesktopDragHandles
a.list-header-handle.handle.fa.fa-arrows.js-list-handle
template(name="editListTitleForm")
+7 -18
View File
@@ -122,18 +122,7 @@ BlazeComponent.extendComponent({
Template.listHeader.helpers({
isBoardAdmin() {
return Meteor.user().isBoardAdmin();
},
showDesktopDragHandles() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
return true;
} else {
return false;
}
},
}
});
Template.listActionPopup.helpers({
@@ -156,19 +145,19 @@ Template.listActionPopup.events({
'click .js-select-cards'() {
const cardIds = this.allCards().map(card => card._id);
MultiSelection.add(cardIds);
Popup.close();
Popup.back();
},
'click .js-toggle-watch-list'() {
const currentList = this;
const level = currentList.findWatcher(Meteor.userId()) ? null : 'watching';
Meteor.call('watch', 'list', currentList._id, level, (err, ret) => {
if (!err && ret) Popup.close();
if (!err && ret) Popup.back();
});
},
'click .js-close-list'(event) {
event.preventDefault();
this.archive();
Popup.close();
Popup.back();
},
'click .js-set-wip-limit': Popup.open('setWipLimit'),
'click .js-more': Popup.open('listMore'),
@@ -244,7 +233,7 @@ BlazeComponent.extendComponent({
Template.listMorePopup.events({
'click .js-delete': Popup.afterConfirm('listDelete', function() {
Popup.close();
Popup.back();
// TODO how can we avoid the fetch call?
const allCards = this.allCards().fetch();
const allCardIds = _.pluck(allCards, '_id');
@@ -310,11 +299,11 @@ BlazeComponent.extendComponent({
},
'click .js-submit'() {
this.currentList.setColor(this.currentColor.get());
Popup.close();
Popup.back();
},
'click .js-remove-color'() {
this.currentList.setColor(null);
Popup.close();
Popup.back();
},
},
];
+2 -2
View File
@@ -38,12 +38,12 @@ BlazeComponent.extendComponent({
{
'click .js-due-cards-view-me'() {
Utils.setDueCardsView('me');
Popup.close();
Popup.back();
},
'click .js-due-cards-view-all'() {
Utils.setDueCardsView('all');
Popup.close();
Popup.back();
},
},
];
+5 -3
View File
@@ -17,8 +17,10 @@ Template.editor.onRendered(() => {
currentBoard
.activeMembers()
.map(member => {
const username = Users.findOne(member.userId).username;
return username.includes(term) ? username : null;
const user = Users.findOne(member.userId);
const username = user.username;
const fullName = user.profile && user.profile !== undefined ? user.profile.fullname : "";
return username.includes(term) || fullName.includes(term) ? fullName + "(" + username + ")" : null;
})
.filter(Boolean), [...specialHandleNames])
);
@@ -148,7 +150,7 @@ Template.editor.onRendered(() => {
const $summernote = getSummernote(this);
if (files && files.length > 0) {
const image = files[0];
const currentCard = Cards.findOne(Session.get('currentCard'));
const currentCard = Utils.getCurrentCard();
const MAX_IMAGE_PIXEL = Utils.MAX_IMAGE_PIXEL;
const COMPRESS_RATIO = Utils.IMAGE_COMPRESS_RATIO;
const insertImage = src => {
+6 -3
View File
@@ -16,12 +16,14 @@ template(name="header")
each currentBoard.lists
li(class="{{#if $.Session.equals 'currentList' _id}}current{{/if}}")
a.js-select-list
= title
+viewer
= title
else
each currentUser.starredBoards
li(class="{{#if $.Session.equals 'currentBoard' _id}}current{{/if}}")
a(href="{{pathFor 'board' id=_id slug=slug}}")
= title
+viewer
= title
#header-new-board-icon
else
//-
@@ -49,7 +51,8 @@ template(name="header")
each currentUser.starredBoards
li(class="{{#if $.Session.equals 'currentBoard' _id}}current{{/if}}")
a(href="{{pathFor 'board' id=_id slug=slug}}")
= title
+viewer
= title
else
li.current.empty {{_ 'quick-access-description'}}
+8
View File
@@ -135,6 +135,14 @@
padding: 12px 10px
margin: -10px 0px
.viewer
display: inline
white-space: nowrap
p
display: inline
white-space: nowrap
&.current
color: darken(white, 5%)
+3 -2
View File
@@ -34,8 +34,9 @@ template(name="userFormsLayout")
img(src="{{currentSetting.customLoginLogoImageUrl}}" width="300" height="auto")
br
unless currentSetting.customLoginLogoImageUrl
img(src="{{pathFor '/wekan-logo.svg'}}" alt="" width="300" height="auto")
br
div#isSettingDatabaseCallDone
img(src="{{pathFor '/wekan-logo.svg'}}" alt="" width="300" height="auto")
br
if currentSetting.textBelowCustomLoginLogo
+viewer
| {{currentSetting.textBelowCustomLoginLogo}}
+12
View File
@@ -23,6 +23,8 @@ const validator = {
},
};
// let isSettingDatabaseFctCallDone = false;
Template.userFormsLayout.onCreated(function() {
const templateInstance = this;
templateInstance.currentSetting = new ReactiveVar();
@@ -37,6 +39,12 @@ Template.userFormsLayout.onCreated(function() {
let htmlvalue = "<i class='fa fa-oidc'></i>" + currSetting.oidcBtnText;
oidcBtnElt.html(htmlvalue);
}
// isSettingDatabaseFctCallDone = true;
if(currSetting && currSetting !== undefined && currSetting.customLoginLogoImageUrl !== undefined)
document.getElementById("isSettingDatabaseCallDone").style.display = 'none';
else
document.getElementById("isSettingDatabaseCallDone").style.display = 'block';
return this.stop();
},
});
@@ -65,6 +73,10 @@ Template.userFormsLayout.helpers({
return Template.instance().currentSetting.get();
},
// isSettingDatabaseCallDone(){
// return isSettingDatabaseFctCallDone;
// },
isLoading() {
return Template.instance().isLoading.get();
},
+4 -1
View File
@@ -433,7 +433,7 @@ a
margin-top: 0px
.wrapper
height: 100%
height: calc(100% - 31px)
margin: 0px
.panel-default
@@ -542,3 +542,6 @@ a
100%
transform: rotate(360deg)
#isSettingDatabaseCallDone
display: none;
+1 -12
View File
@@ -14,8 +14,7 @@ $popupWidth = 300px
margin-top: 5px
hr
margin: 4px -10px
width: $popupWidth
margin: 4px 0px
p,
textarea,
@@ -23,7 +22,6 @@ $popupWidth = 300px
input[type="email"],
input[type="password"],
input[type="file"]
margin: 4px 0 12px
width: 100%
select
@@ -313,22 +311,13 @@ $popupWidth = 300px
input[type="email"],
input[type="password"],
input[type="file"]
margin: 4px 0 12px
width: 100%
box-sizing: border-box
.pop-over-list
li > a
width: calc(100% - 20px)
padding: 10px 10px
margin: 0px 0px
border-bottom: 1px solid #eee
hr
width: 100%
height: 20px
margin: 0px 0px
color: #eee
for depth in (1..6)
.popup-container-depth-{depth}
@@ -232,7 +232,7 @@ BlazeComponent.extendComponent({
},
'click .js-submit'() {
this.colorButtonValue.set(this.currentColor.get());
Popup.close();
Popup.back();
},
},
];
@@ -116,6 +116,6 @@ Template.boardCardTitlePopup.events({
.trim();
Popup.getOpenerComponent().setNameFilter(title);
event.preventDefault();
Popup.close();
Popup.back();
},
});
@@ -108,6 +108,7 @@ template(name="peopleGeneral")
tbody
tr
th
+selectAllUser
th {{_ 'username'}}
th {{_ 'fullname'}}
th {{_ 'initials'}}
@@ -125,6 +126,10 @@ template(name="peopleGeneral")
each user in peopleList
+peopleRow(userId=user._id)
template(name="selectAllUser")
| {{_ 'dueCardsViewChange-choice-all'}}
input.allUserChkBox(type="checkbox", id="chkSelectAll")
template(name="newOrgRow")
a.new-org
i.fa.fa-plus-square
+49 -15
View File
@@ -524,6 +524,41 @@ BlazeComponent.extendComponent({
},
}).register('newUserRow');
BlazeComponent.extendComponent({
events() {
return [
{
'click .allUserChkBox': function(ev){
selectedUserChkBoxUserIds = [];
const checkboxes = document.getElementsByClassName("selectUserChkBox");
if(ev.currentTarget){
if(ev.currentTarget.checked){
for (let i=0; i<checkboxes.length; i++) {
if (!checkboxes[i].disabled) {
selectedUserChkBoxUserIds.push(checkboxes[i].id);
checkboxes[i].checked = true;
}
}
}
else{
for (let i=0; i<checkboxes.length; i++) {
if (!checkboxes[i].disabled) {
checkboxes[i].checked = false;
}
}
}
}
if(selectedUserChkBoxUserIds.length > 0)
document.getElementById("divAddOrRemoveTeam").style.display = 'block';
else
document.getElementById("divAddOrRemoveTeam").style.display = 'none';
},
},
];
},
}).register('selectAllUser');
Template.editOrgPopup.events({
submit(event, templateInstance) {
event.preventDefault();
@@ -535,8 +570,7 @@ Template.editOrgPopup.events({
const orgDesc = templateInstance.find('.js-orgDesc').value.trim();
const orgShortName = templateInstance.find('.js-orgShortName').value.trim();
const orgWebsite = templateInstance.find('.js-orgWebsite').value.trim();
const orgIsActive =
templateInstance.find('.js-org-isactive').value.trim() == 'true';
const orgIsActive = templateInstance.find('.js-org-isactive').value.trim() == 'true';
const isChangeOrgDisplayName = orgDisplayName !== org.orgDisplayName;
const isChangeOrgDesc = orgDesc !== org.orgDesc;
@@ -562,7 +596,7 @@ Template.editOrgPopup.events({
);
}
Popup.close();
Popup.back();
},
});
@@ -606,7 +640,7 @@ Template.editTeamPopup.events({
);
}
Popup.close();
Popup.back();
},
});
@@ -721,7 +755,7 @@ Template.editUserPopup.events({
} else {
usernameMessageElement.hide();
emailMessageElement.hide();
Popup.close();
Popup.back();
}
},
);
@@ -735,7 +769,7 @@ Template.editUserPopup.events({
}
} else {
usernameMessageElement.hide();
Popup.close();
Popup.back();
}
});
} else if (isChangeEmail) {
@@ -752,11 +786,11 @@ Template.editUserPopup.events({
}
} else {
emailMessageElement.hide();
Popup.close();
Popup.back();
}
},
);
} else Popup.close();
} else Popup.back();
},
'click #addUserOrg'(event) {
event.preventDefault();
@@ -891,7 +925,7 @@ Template.newOrgPopup.events({
orgWebsite,
orgIsActive,
);
Popup.close();
Popup.back();
},
});
@@ -917,7 +951,7 @@ Template.newTeamPopup.events({
teamWebsite,
teamIsActive,
);
Popup.close();
Popup.back();
},
});
@@ -990,11 +1024,11 @@ Template.newUserPopup.events({
} else {
usernameMessageElement.hide();
emailMessageElement.hide();
Popup.close();
Popup.back();
}
},
);
Popup.close();
Popup.back();
},
'click #addUserOrgNewUser'(event) {
event.preventDefault();
@@ -1048,7 +1082,7 @@ Template.settingsOrgPopup.events({
return;
}
Org.remove(this.orgId);
Popup.close();
Popup.back();
}
});
@@ -1066,7 +1100,7 @@ Template.settingsTeamPopup.events({
return;
}
Team.remove(this.teamId);
Popup.close();
Popup.back();
}
});
@@ -1099,7 +1133,7 @@ Template.settingsUserPopup.events({
//
//
*/
Popup.close();
Popup.back();
},
});
+2 -1
View File
@@ -56,10 +56,11 @@ table
.js-teams,.js-teamsNewUser
display: none;
.selectUserChkBox
.selectUserChkBox,.allUserChkBox
position: static !important;
visibility: visible !important;
left: 0 !important;
display: block !important;
#divAddOrRemoveTeam
background: green;
+1 -1
View File
@@ -11,7 +11,7 @@
color: #727479
background: #dedede
width 100%
height 100%
height calc(100% - 80px)
position: absolute;
.content-title
+15 -6
View File
@@ -95,7 +95,9 @@ template(name="boardOrgGeneral")
th
if currentUser.isBoardAdmin
a.member.orgOrTeamMember.add-member.js-manage-board-addOrg(title="{{_ 'add-members'}}")
i.fa.fa-plus
i.addTeamFaPlus.fa.fa-plus
.divaddfaplusminus
| {{_ 'add'}}
each org in currentBoard.activeOrgs
+boardOrgRow(orgId=org.orgId)
@@ -103,11 +105,18 @@ template(name="boardTeamGeneral")
table
tbody
tr
th {{_ 'displayName'}}
th
b
| {{_ 'add-teams'}}
br
i.addTeamsLabelcss
| {{_ 'add-teams-label'}}
th
if currentUser.isBoardAdmin
a.member.orgOrTeamMember.add-member.js-manage-board-addTeam(title="{{_ 'add-members'}}")
i.fa.fa-plus
i.addTeamFaPlus.fa.fa-plus
.divaddfaplusminus
| {{_ 'add'}}
each currentBoard.activeTeams
+boardTeamRow(teamId=this.teamId)
@@ -493,12 +502,12 @@ template(name="removeBoardTeamPopup")
form
input.hide#hideTeamId(type="text" value=team._id)
label
| {{_ 'leave-board'}} ?
| {{_ 'remove-team-from-table'}}
br
hr
div.buttonsContainer
input.primary.wide.leaveBoardBtn#leaveBoardTeamBtn(type="submit" value="{{_ 'leave-board'}}")
input.primary.wide.cancelLeaveBoardBtn#cancelLeaveBoardTeamBtn(type="submit" value="{{_ 'Cancel'}}")
input.primary.wide.leaveBoardBtn#leaveBoardTeamBtn(type="submit" value="{{_ 'confirm-btn'}}")
input.primary.wide.cancelLeaveBoardBtn#cancelLeaveBoardTeamBtn(type="submit" value="{{_ 'cancel'}}")
template(name="addMemberPopup")
.js-search-member
+15 -15
View File
@@ -188,15 +188,15 @@ Template.boardMenuPopup.events({
'click .js-rename-board': Popup.open('boardChangeTitle'),
'click .js-open-rules-view'() {
Modal.openWide('rulesMain');
Popup.close();
Popup.back();
},
'click .js-custom-fields'() {
Sidebar.setView('customFields');
Popup.close();
Popup.back();
},
'click .js-open-archives'() {
Sidebar.setView('archives');
Popup.close();
Popup.back();
},
'click .js-change-board-color': Popup.open('boardChangeColor'),
'click .js-change-language': Popup.open('changeLanguage'),
@@ -209,7 +209,7 @@ Template.boardMenuPopup.events({
}),
'click .js-delete-board': Popup.afterConfirm('deleteBoard', function() {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
Popup.close();
Popup.back();
Boards.remove(currentBoard._id);
FlowRouter.go('home');
}),
@@ -252,7 +252,7 @@ Template.boardMenuPopup.helpers({
Template.memberPopup.events({
'click .js-filter-member'() {
Filter.members.toggle(this.userId);
Popup.close();
Popup.back();
},
'click .js-change-role': Popup.open('changePermissions'),
'click .js-remove-member': Popup.afterConfirm('removeMember', function() {
@@ -266,12 +266,12 @@ Template.memberPopup.events({
card.unassignAssignee(memberId);
});
Boards.findOne(boardId).removeMember(memberId);
Popup.close();
Popup.back();
}),
'click .js-leave-member': Popup.afterConfirm('leaveBoard', () => {
const boardId = Session.get('currentBoard');
Meteor.call('quitBoard', boardId, () => {
Popup.close();
Popup.back();
FlowRouter.go('home');
});
}),
@@ -460,7 +460,7 @@ BlazeComponent.extendComponent({
activities: ['all'],
});
}
Popup.close();
Popup.back();
},
},
];
@@ -1229,7 +1229,7 @@ BlazeComponent.extendComponent({
self.setLoading(false);
if (err) self.setError(err.error);
else if (ret.email) self.setError('email-sent');
else Popup.close();
else Popup.back();
});
},
@@ -1316,7 +1316,7 @@ BlazeComponent.extendComponent({
}
}
Popup.close();
Popup.back();
},
},
];
@@ -1380,10 +1380,10 @@ BlazeComponent.extendComponent({
Meteor.call('setBoardOrgs', boardOrganizations, currentBoard._id);
Popup.close();
Popup.back();
},
'click #cancelLeaveBoardBtn'(){
Popup.close();
Popup.back();
},
},
];
@@ -1490,7 +1490,7 @@ BlazeComponent.extendComponent({
}
}
Popup.close();
Popup.back();
},
},
];
@@ -1581,10 +1581,10 @@ BlazeComponent.extendComponent({
Meteor.call('setBoardTeams', boardTeams, members, currentBoard._id);
Popup.close();
Popup.back();
},
'click #cancelLeaveBoardTeamBtn'(){
Popup.close();
Popup.back();
},
},
];
+19
View File
@@ -224,3 +224,22 @@
.cancelLeaveBoardBtn
margin-left: 5% !important
background-color: red !important
.addTeamsLabelcss
font-weight: normal;
.js-manage-board-removeTeam
box-shadow: 0 0 0 2px #e23210 inset !important
.js-manage-board-addTeam
box-shadow: 0 0 0 2px #73ea10 inset !important
.addTeamFaPlus
color: green !important
.removeTeamFaMinus
color: red !important
.divaddfaplusminus
padding-top: 5px;
margin-left: 40px;
+6 -6
View File
@@ -94,13 +94,13 @@ BlazeComponent.extendComponent({
'click .js-delete-card': Popup.afterConfirm('cardDelete', function() {
const cardId = this._id;
Cards.remove(cardId);
Popup.close();
Popup.back();
}),
'click .js-delete-all-cards': Popup.afterConfirm('cardDelete', () => {
this.archivedCards().forEach(card => {
Cards.remove(card._id);
});
Popup.close();
Popup.back();
}),
'click .js-restore-list'() {
@@ -115,13 +115,13 @@ BlazeComponent.extendComponent({
'click .js-delete-list': Popup.afterConfirm('listDelete', function() {
this.remove();
Popup.close();
Popup.back();
}),
'click .js-delete-all-lists': Popup.afterConfirm('listDelete', () => {
this.archivedLists().forEach(list => {
list.remove();
});
Popup.close();
Popup.back();
}),
'click .js-restore-swimlane'() {
@@ -138,7 +138,7 @@ BlazeComponent.extendComponent({
'swimlaneDelete',
function() {
this.remove();
Popup.close();
Popup.back();
},
),
'click .js-delete-all-swimlanes': Popup.afterConfirm(
@@ -147,7 +147,7 @@ BlazeComponent.extendComponent({
this.archivedSwimlanes().forEach(swimlane => {
swimlane.remove();
});
Popup.close();
Popup.back();
},
),
},
@@ -283,7 +283,7 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
} else {
CustomFields.remove(customField._id);
}
Popup.close();
Popup.back();
},
),
},
@@ -302,6 +302,6 @@ CreateCustomFieldPopup.register('createCustomFieldPopup');
'submit'(evt) {
const customFieldId = this._id;
CustomFields.remove(customFieldId);
Popup.close();
Popup.back();
}
});*/
@@ -9,6 +9,11 @@ template(name="filterSidebar")
form.js-list-filter
input(type="text")
hr
h3
i.fa.fa-list-alt
| {{_ 'filter-card-title-label'}}
input.js-field-card-filter(type="text")
hr
h3
i.fa.fa-tags
| {{_ 'filter-labels-label'}}
+9 -4
View File
@@ -8,6 +8,11 @@ BlazeComponent.extendComponent({
evt.preventDefault();
Filter.lists.set(this.find('.js-list-filter input').value.trim());
},
'change .js-field-card-filter'(evt) {
evt.preventDefault();
Filter.title.set(this.find('.js-field-card-filter').value.trim());
Filter.resetExceptions();
},
'click .js-toggle-label-filter'(evt) {
evt.preventDefault();
Filter.labelIds.toggle(this.currentData()._id);
@@ -171,22 +176,22 @@ Template.multiselectionSidebar.helpers({
Template.disambiguateMultiLabelPopup.events({
'click .js-remove-label'() {
mutateSelectedCards('removeLabel', this._id);
Popup.close();
Popup.back();
},
'click .js-add-label'() {
mutateSelectedCards('addLabel', this._id);
Popup.close();
Popup.back();
},
});
Template.disambiguateMultiMemberPopup.events({
'click .js-unassign-member'() {
mutateSelectedCards('assignMember', this._id);
Popup.close();
Popup.back();
},
'click .js-assign-member'() {
mutateSelectedCards('unassignMember', this._id);
Popup.close();
Popup.back();
},
});
@@ -3,10 +3,14 @@ template(name="searchSidebar")
input(type="text" name="searchTerm" placeholder="{{_ 'search-example'}}" autofocus dir="auto")
.list-body
.minilists.clearfix.js-minilists
hr
| {{_ 'lists' }}
each (lists)
a.minilist-wrapper.js-minilist(href=originRelativeUrl)
+minilist(this)
.minicards.clearfix.js-minicards
each (results)
hr
| {{_ 'cards' }}
each (cards)
a.minicard-wrapper.js-minicard(href=originRelativeUrl)
+minicard(this)
+14 -1
View File
@@ -3,7 +3,7 @@ BlazeComponent.extendComponent({
this.term = new ReactiveVar('');
},
results() {
cards() {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
return currentBoard.searchCards(this.term.get());
},
@@ -13,9 +13,22 @@ BlazeComponent.extendComponent({
return currentBoard.searchLists(this.term.get());
},
clickOnMiniCard(evt) {
evt.preventDefault();
Session.set('popupCard', this.currentData()._id);
this.cardDetailsPopup(evt);
},
cardDetailsPopup(event) {
if (!Popup.isOpen()) {
Popup.open("cardDetails")(event);
}
},
events() {
return [
{
'click .js-minicard': this.clickOnMiniCard,
'submit .js-search-term-form'(evt) {
evt.preventDefault();
this.term.set(evt.target.searchTerm.value);
@@ -26,7 +26,7 @@ template(name="swimlaneFixedHeader")
a.fa.fa-plus.js-open-add-swimlane-menu.swimlane-header-plus-icon(title="{{_ 'add-swimlane'}}")
a.fa.fa-navicon.js-open-swimlane-menu(title="{{_ 'swimlaneActionPopup-title'}}")
unless isMiniScreen
if showDesktopDragHandles
if isShowDesktopDragHandles
a.swimlane-header-handle.handle.fa.fa-arrows.js-swimlane-header-handle
if isMiniScreen
a.swimlane-header-miniscreen-handle.handle.fa.fa-arrows.js-swimlane-header-handle
+4 -17
View File
@@ -28,19 +28,6 @@ BlazeComponent.extendComponent({
},
}).register('swimlaneHeader');
Template.swimlaneHeader.helpers({
showDesktopDragHandles() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
return true;
} else {
return false;
}
},
});
Template.swimlaneFixedHeader.helpers({
isBoardAdmin() {
return Meteor.user().isBoardAdmin();
@@ -52,7 +39,7 @@ Template.swimlaneActionPopup.events({
'click .js-close-swimlane'(event) {
event.preventDefault();
this.archive();
Popup.close();
Popup.back();
},
'click .js-move-swimlane': Popup.open('moveSwimlane'),
'click .js-copy-swimlane': Popup.open('copySwimlane'),
@@ -101,7 +88,7 @@ BlazeComponent.extendComponent({
// XXX ideally, we should move the popup to the newly
// created swimlane so a user can add more than one swimlane
// with a minimum of interactions
Popup.close();
Popup.back();
},
'click .js-swimlane-template': Popup.open('searchElement'),
},
@@ -131,11 +118,11 @@ BlazeComponent.extendComponent({
},
'click .js-submit'() {
this.currentSwimlane.setColor(this.currentColor.get());
Popup.close();
Popup.back();
},
'click .js-remove-color'() {
this.currentSwimlane.setColor(null);
Popup.close();
Popup.back();
},
},
];
+8 -40
View File
@@ -9,7 +9,7 @@ function currentListIsInThisSwimlane(swimlaneId) {
}
function currentCardIsInThisList(listId, swimlaneId) {
const currentCard = Cards.findOne(Session.get('currentCard'));
const currentCard = Utils.getCurrentCard();
const currentUser = Meteor.user();
if (
currentUser &&
@@ -95,22 +95,11 @@ function initSortable(boardComponent, $listsDom) {
//}
boardComponent.autorun(() => {
let showDesktopDragHandles = false;
currentUser = Meteor.user();
if (currentUser) {
showDesktopDragHandles = (currentUser.profile || {})
.showDesktopDragHandles;
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
showDesktopDragHandles = true;
} else {
showDesktopDragHandles = false;
}
if (Utils.isMiniScreen() || showDesktopDragHandles) {
if (Utils.isMiniScreenOrShowDesktopDragHandles()) {
$listsDom.sortable({
handle: '.js-list-handle',
});
} else if (!Utils.isMiniScreen() && !showDesktopDragHandles) {
} else {
$listsDom.sortable({
handle: '.js-list-header',
});
@@ -123,7 +112,7 @@ function initSortable(boardComponent, $listsDom) {
'disabled',
// Disable drag-dropping when user is not member/is worker
//!userIsMember() || Meteor.user().isWorker(),
!Meteor.user().isBoardAdmin(),
!Meteor.user() || !Meteor.user().isBoardAdmin(),
// Not disable drag-dropping while in multi-selection mode
// MultiSelection.isActive() || !userIsMember(),
);
@@ -136,7 +125,7 @@ BlazeComponent.extendComponent({
const boardComponent = this.parentComponent();
const $listsDom = this.$('.js-lists');
if (!Session.get('currentCard')) {
if (!Utils.getCurrentCardId()) {
boardComponent.scrollLeft();
}
@@ -172,19 +161,8 @@ BlazeComponent.extendComponent({
// the user will legitimately expect to be able to select some text with
// his mouse.
let showDesktopDragHandles = false;
currentUser = Meteor.user();
if (currentUser) {
showDesktopDragHandles = (currentUser.profile || {})
.showDesktopDragHandles;
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
showDesktopDragHandles = true;
} else {
showDesktopDragHandles = false;
}
const noDragInside = ['a', 'input', 'textarea', 'p'].concat(
Utils.isMiniScreen() || showDesktopDragHandles
Utils.isMiniScreenOrShowDesktopDragHandles()
? ['.js-list-handle', '.js-swimlane-header-handle']
: ['.js-list-header'],
);
@@ -264,16 +242,6 @@ BlazeComponent.extendComponent({
}).register('addListForm');
Template.swimlane.helpers({
showDesktopDragHandles() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
return true;
} else {
return false;
}
},
canSeeAddList() {
return Meteor.user().isBoardAdmin();
/*
@@ -316,7 +284,7 @@ BlazeComponent.extendComponent({
const boardComponent = this.parentComponent();
const $listsDom = this.$('.js-lists');
if (!Session.get('currentCard')) {
if (!Utils.getCurrentCardId()) {
boardComponent.scrollLeft();
}
@@ -359,7 +327,7 @@ class MoveSwimlaneComponent extends BlazeComponent {
boardId = bSelect.options[bSelect.selectedIndex].value;
Meteor.call(this.serverMethod, this.currentSwimlane._id, boardId);
}
Popup.close();
Popup.back();
},
},
];
+6 -2
View File
@@ -32,7 +32,9 @@ template(name="boardOrgRow")
td
if currentUser.isBoardAdmin
a.member.orgOrTeamMember.add-member.js-manage-board-removeOrg(title="{{_ 'remove-from-board'}}")
i.fa.fa-minus
i.removeTeamFaMinus.fa.fa-minus
.divaddfaplusminus
| {{_ 'remove-btn'}}
template(name="boardTeamRow")
tr
@@ -43,7 +45,9 @@ template(name="boardTeamRow")
td
if currentUser.isBoardAdmin
a.member.orgOrTeamMember.add-member.js-manage-board-removeTeam(title="{{_ 'remove-from-board'}}")
i.fa.fa-minus
i.removeTeamFaMinus.fa.fa-minus
.divaddfaplusminus
| {{_ 'remove-btn'}}
template(name="boardOrgName")
svg.avatar.avatar-initials(viewBox="0 0 {{orgViewPortWidth}} 15")
+2 -2
View File
@@ -274,7 +274,7 @@ Template.cardMembersPopup.helpers({
Template.cardMembersPopup.events({
'click .js-select-member'(event) {
const card = Cards.findOne(Session.get('currentCard'));
const card = Utils.getCurrentCard();
const memberId = this.userId;
card.toggleMember(memberId);
event.preventDefault();
@@ -290,7 +290,7 @@ Template.cardMemberPopup.helpers({
Template.cardMemberPopup.events({
'click .js-remove-member'() {
Cards.findOne(this.cardId).unassignMember(this.userId);
Popup.close();
Popup.back();
},
'click .js-edit-profile': Popup.open('editProfile'),
});
+1 -1
View File
@@ -134,7 +134,7 @@ template(name="changeSettingsPopup")
a.js-toggle-desktop-drag-handles
i.fa.fa-arrows
| {{_ 'show-desktop-drag-handles'}}
if showDesktopDragHandles
if isShowDesktopDragHandles
i.fa.fa-check
unless currentUser.isWorker
li
+5 -15
View File
@@ -25,7 +25,7 @@ Template.memberMenuPopup.helpers({
isNotOAuth2AuthenticationMethod(){
currentUser = Meteor.user();
if (currentUser) {
return currentUser.authenticationMethod != 'OAuth2';
return currentUser.authenticationMethod.toLowerCase() != 'oauth2';
} else {
return true;
}
@@ -34,10 +34,10 @@ Template.memberMenuPopup.helpers({
Template.memberMenuPopup.events({
'click .js-my-cards'() {
Popup.close();
Popup.back();
},
'click .js-due-cards'() {
Popup.close();
Popup.back();
},
'click .js-open-archived-board'() {
Modal.open('archivedBoards');
@@ -53,7 +53,7 @@ Template.memberMenuPopup.events({
AccountsTemplates.logout();
},
'click .js-go-setting'() {
Popup.close();
Popup.back();
},
});
@@ -155,7 +155,7 @@ Template.editProfilePopup.events({
} else Popup.back();
},
'click #deleteButton': Popup.afterConfirm('userDelete', function() {
Popup.close();
Popup.back();
Users.remove(Meteor.userId());
AccountsTemplates.logout();
}),
@@ -259,16 +259,6 @@ Template.changeLanguagePopup.events({
});
Template.changeSettingsPopup.helpers({
showDesktopDragHandles() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
return true;
} else {
return false;
}
},
hiddenSystemMessages() {
currentUser = Meteor.user();
if (currentUser) {
+2 -6
View File
@@ -8,12 +8,8 @@ Blaze.registerHelper('currentBoard', () => {
});
Blaze.registerHelper('currentCard', () => {
const cardId = Session.get('currentCard');
if (cardId) {
return Cards.findOne(cardId);
} else {
return null;
}
const ret = Utils.getCurrentCard();
return ret;
});
Blaze.registerHelper('currentList', () => {
+2 -2
View File
@@ -120,7 +120,7 @@ export class DatePicker extends BlazeComponent {
}
if (newCompleteDate.isValid()) {
this._storeDate(newCompleteDate.toDate());
Popup.close();
Popup.back();
} else if (!this.error) {
this.error.set('invalid');
}
@@ -128,7 +128,7 @@ export class DatePicker extends BlazeComponent {
'click .js-delete-date'(evt) {
evt.preventDefault();
this._deleteDate();
Popup.close();
Popup.back();
},
},
];
+1 -1
View File
@@ -187,7 +187,7 @@ window.ExportHtml = Popup => {
const boardSlug = getBoardSlug();
await addJsonExportToZip(zip, boardSlug);
Popup.close();
Popup.back();
closeSidebar();
cleanBoardHtml();
+36 -1
View File
@@ -155,6 +155,39 @@ class DateFilter {
}
}
class StringFilter {
constructor() {
this._dep = new Tracker.Dependency();
this.subField = ''; // Prevent name mangling in Filter
this._filter = '';
}
set(str) {
this._filter = str;
this._dep.changed();
}
reset() {
this._filter = '';
this._dep.changed();
}
_isActive() {
this._dep.depend();
return this._filter !== '';
}
_getMongoSelector() {
this._dep.depend();
return {$regex : this._filter, $options: 'i'};
}
_getEmptySelector() {
this._dep.depend();
return {$regex : this._filter, $options: 'i'};
}
}
// Use a "set" filter for a field that is a set of documents uniquely
// identified. For instance `{ labels: ['labelA', 'labelC', 'labelD'] }`.
// use "subField" for searching inside object Fields.
@@ -611,6 +644,7 @@ Filter = {
archive: new SetFilter(),
hideEmpty: new SetFilter(),
dueAt: new DateFilter(),
title: new StringFilter(),
customFields: new SetFilter('_id'),
advanced: new AdvancedFilter(),
lists: new AdvancedFilter(), // we need the ability to filter list by name as well
@@ -622,6 +656,7 @@ Filter = {
'archive',
'hideEmpty',
'dueAt',
'title',
'customFields',
],
@@ -682,7 +717,7 @@ Filter = {
if (includeEmptySelectors) selectors.push(emptySelector);
if (this.advanced._isActive())
selectors.push(this.advanced._getMongoSelector());
return {
$or: selectors,
};
+9 -4
View File
@@ -29,10 +29,15 @@ InlinedForm = BlazeComponent.extendComponent({
},
open(evt) {
evt && evt.preventDefault();
if (evt) {
evt.preventDefault();
// Close currently opened form, if any
EscapeActions.clickExecute(evt.target, 'inlinedForm');
} else {
// Close currently opened form, if any
EscapeActions.executeUpTo('inlinedForm');
}
// Close currently opened form, if any
EscapeActions.executeUpTo('inlinedForm');
this.isOpen.set(true);
currentlyOpenedForm.set(this);
},
@@ -44,7 +49,7 @@ InlinedForm = BlazeComponent.extendComponent({
getValue() {
const input = this.find('textarea,input[type=text]');
return this.isOpen.get() && input && input.value;
return this.isOpen.get() && input && input.value.replaceAll(/\s +$/gm, '');
},
events() {
+1 -1
View File
@@ -54,7 +54,7 @@ Mousetrap.bind('/', () => {
});
Mousetrap.bind(['down', 'up'], (evt, key) => {
if (!Session.get('currentCard')) {
if (!Utils.getCurrentCardId()) {
return;
}
+7 -3
View File
@@ -30,7 +30,11 @@ window.Popup = new (class {
function clickFromPopup(evt) {
return $(evt.target).closest('.js-pop-over').length !== 0;
}
return function(evt) {
/** opens the popup
* @param evt the current event
* @param options options (dataContextIfCurrentDataIsUndefined use this dataContext if this.currentData() is undefined)
*/
return function(evt, options) {
// If a popup is already opened, clicking again on the opener element
// should close it -- and interrupt the current `open` function.
if (self.isOpen()) {
@@ -67,7 +71,7 @@ window.Popup = new (class {
title: self._getTitle(popupName),
depth: self._stack.length,
offset: self._getOffset(openerElement),
dataContext: (this && this.currentData && this.currentData()) || this,
dataContext: (this && this.currentData && this.currentData()) || (options && options.dataContextIfCurrentDataIsUndefined) || this,
});
// If there are no popup currently opened we use the Blaze API to render
@@ -201,7 +205,7 @@ escapeActions.forEach(actionName => {
() => Popup[actionName](),
() => Popup.isOpen(),
{
noClickEscapeOn: '.js-pop-over,.js-open-card-title-popup',
noClickEscapeOn: '.js-pop-over,.js-open-card-title-popup,.js-open-inlined-form',
enabledOnClick: actionName === 'close',
},
);
+23
View File
@@ -1,4 +1,25 @@
Utils = {
getCurrentCardId(ignorePopupCard) {
let ret = Session.get('currentCard');
if (!ret && !ignorePopupCard) {
ret = Utils.getPopupCardId();
}
return ret;
},
getPopupCardId() {
const ret = Session.get('popupCard');
return ret;
},
getCurrentCard(ignorePopupCard) {
const cardId = Utils.getCurrentCardId(ignorePopupCard);
const ret = Cards.findOne(cardId);
return ret;
},
getPopupCard() {
const cardId = Utils.getPopupCardId();
const ret = Cards.findOne(cardId);
return ret;
},
reload () {
// we move all window.location.reload calls into this function
// so we can disable it when running tests.
@@ -248,6 +269,8 @@ Utils = {
const currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
return true;
} else {
return false;
}
+9
View File
@@ -12,6 +12,7 @@ FlowRouter.route('/', {
Session.set('currentBoard', null);
Session.set('currentList', null);
Session.set('currentCard', null);
Session.set('popupCard', null);
Filter.reset();
Session.set('sortBy', '');
@@ -34,6 +35,7 @@ FlowRouter.route('/public', {
Session.set('currentBoard', null);
Session.set('currentList', null);
Session.set('currentCard', null);
Session.set('popupCard', null);
Filter.reset();
Session.set('sortBy', '');
@@ -56,6 +58,7 @@ FlowRouter.route('/b/:id/:slug', {
const previousBoard = Session.get('currentBoard');
Session.set('currentBoard', currentBoard);
Session.set('currentCard', null);
Session.set('popupCard', null);
// If we close a card, we'll execute again this route action but we don't
// want to excape every current actions (filters, etc.)
@@ -84,6 +87,7 @@ FlowRouter.route('/b/:boardId/:slug/:cardId', {
Session.set('currentBoard', params.boardId);
Session.set('currentCard', params.cardId);
Session.set('popupCard', null);
Utils.manageCustomUI();
Utils.manageMatomo();
@@ -212,6 +216,7 @@ FlowRouter.route('/import/:source', {
Session.set('currentBoard', null);
Session.set('currentList', null);
Session.set('currentCard', null);
Session.set('popupCard', null);
Session.set('importSource', params.source);
Filter.reset();
@@ -232,6 +237,7 @@ FlowRouter.route('/setting', {
Session.set('currentBoard', null);
Session.set('currentList', null);
Session.set('currentCard', null);
Session.set('popupCard', null);
Filter.reset();
Session.set('sortBy', '');
@@ -255,6 +261,7 @@ FlowRouter.route('/information', {
Session.set('currentBoard', null);
Session.set('currentList', null);
Session.set('currentCard', null);
Session.set('popupCard', null);
Filter.reset();
Session.set('sortBy', '');
@@ -277,6 +284,7 @@ FlowRouter.route('/people', {
Session.set('currentBoard', null);
Session.set('currentList', null);
Session.set('currentCard', null);
Session.set('popupCard', null);
Filter.reset();
Session.set('sortBy', '');
@@ -299,6 +307,7 @@ FlowRouter.route('/admin-reports', {
Session.set('currentBoard', null);
Session.set('currentList', null);
Session.set('currentCard', null);
Session.set('popupCard', null);
Filter.reset();
Session.set('sortBy', '');
+11 -1
View File
@@ -111,6 +111,8 @@ services:
expose:
- 27017
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- wekan-db:/data/db
- wekan-db-dump:/dump
@@ -158,7 +160,8 @@ services:
- ROOT_URL=http://localhost # <=== using only at same laptop/desktop where Wekan is installed
#---------------------------------------------------------------
# ==== EMAIL SETTINGS ====
# Email settings are required in both MAIL_URL and Admin Panel,
# Email settings are only at MAIL_URL and MAIL_FROM.
# Admin Panel has test button, but it's not used for settings.
# see https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
# For SSL in email, change smtp:// to smtps://
# NOTE: Special characters need to be url-encoded in MAIL_URL.
@@ -166,6 +169,7 @@ services:
#- MAIL_URL=smtp://user:pass@mailserver.example.com:25/
- MAIL_URL=smtp://<mail_url>:25/?ignoreTLS=true&tls={rejectUnauthorized:false}
- MAIL_FROM=Wekan Notifications <noreply.wekan@mydomain.com>
# Currently MAIL_SERVICE is not in use.
#- MAIL_SERVICE=Outlook365
#- MAIL_SERVICE_USER=firstname.lastname@hotmail.com
#- MAIL_SERVICE_PASSWORD=SecretPassword
@@ -657,6 +661,10 @@ services:
#---------------------------------------------------------------------
depends_on:
- wekandb
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- wekan-tmp:/tmp
#---------------------------------------------------------------------------------
# ==== OPTIONAL: SHARE DATABASE TO OFFICE LAN AND REMOTE VPN ====
@@ -712,6 +720,8 @@ volumes:
driver: local
wekan-db-dump:
driver: local
wekan-tmp:
driver: local
networks:
wekan-tier:
+1 -1
View File
@@ -1,5 +1,5 @@
apiVersion: v2
appVersion: "5.65"
appVersion: "5.71"
dependencies:
- condition: mongodb.enabled
name: mongodb
+1 -1
View File
@@ -14,7 +14,7 @@ serviceAccounts:
##
image:
repository: quay.io/wekan/wekan
tag: v5.65
tag: v5.71
pullPolicy: IfNotPresent
## Configuration for wekan component
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"comment-delete": "Are you sure you want to delete the comment?",
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "No comments",
"no-comments-desc": "Can not see comments and activities.",
"worker": "Worker",
@@ -1069,5 +1071,28 @@
"maximize-card": "Maximize Card",
"minimize-card": "Minimize Card",
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"subject": "Subject",
"details": "Details",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Remove",
"filter-card-title-label": "Filter by card title"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "أكتب تعليق",
"comment-only": "التعليق فقط",
"comment-only-desc": "يمكن التعليق على بطاقات فقط.",
"comment-delete": "Are you sure you want to delete the comment?",
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "لا يوجد تعليقات",
"no-comments-desc": "Can not see comments and activities.",
"worker": "Worker",
@@ -1069,5 +1071,28 @@
"maximize-card": "Maximize Card",
"minimize-card": "Minimize Card",
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"subject": "Subject",
"details": "Details",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Remove",
"filter-card-title-label": "Filter by card title"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Напиши коментар",
"comment-only": "Само коментар",
"comment-only-desc": "Може да коментира само в карти.",
"comment-delete": "Are you sure you want to delete the comment?",
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "Няма коментари",
"no-comments-desc": "Не може да вижда коментари и активност",
"worker": "Работник",
@@ -1069,5 +1071,28 @@
"maximize-card": "Maximize Card",
"minimize-card": "Minimize Card",
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"subject": "Subject",
"details": "Details",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Премахване",
"filter-card-title-label": "Filter by card title"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"comment-delete": "Are you sure you want to delete the comment?",
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "No comments",
"no-comments-desc": "Can not see comments and activities.",
"worker": "Worker",
@@ -1069,5 +1071,28 @@
"maximize-card": "Maximize Card",
"minimize-card": "Minimize Card",
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"subject": "Subject",
"details": "Details",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Remove",
"filter-card-title-label": "Filter by card title"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Escriu un comentari",
"comment-only": "Només comentaris",
"comment-only-desc": "Només pots fer comentaris a les fitxes",
"comment-delete": "Are you sure you want to delete the comment?",
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "Sense comentaris",
"no-comments-desc": "Can not see comments and activities.",
"worker": "Worker",
@@ -1069,5 +1071,28 @@
"maximize-card": "Maximize Card",
"minimize-card": "Minimize Card",
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"subject": "Subject",
"details": "Details",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Remove",
"filter-card-title-label": "Filter by card title"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Text komentáře",
"comment-only": "Pouze komentáře",
"comment-only-desc": "Může přidávat komentáře pouze do karet.",
"comment-delete": "Are you sure you want to delete the comment?",
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "Žádné komentáře",
"no-comments-desc": "Nemůže vidět komentáře a aktivity",
"worker": "Pracovník",
@@ -1069,5 +1071,28 @@
"maximize-card": "Maximalizovat kartu",
"minimize-card": "Minimalizovat kartu",
"delete-org-warning-message": "Tuto organizaci není možné smazat, protože do ní patří uživatel(é)",
"delete-team-warning-message": "Tento tým není možné smazat, protože do nej patří uživatel(é)"
"delete-team-warning-message": "Tento tým není možné smazat, protože do nej patří uživatel(é)",
"subject": "Subject",
"details": "Details",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Odstranit",
"filter-card-title-label": "Filter by card title"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Skriv kommentar",
"comment-only": "Kun kommentarer",
"comment-only-desc": "Kan kun kommentere på kort.",
"comment-delete": "Are you sure you want to delete the comment?",
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "Ingen kommentarer",
"no-comments-desc": "Kan ikke se kommentarer og aktiviteter.",
"worker": "Arbejder",
@@ -1069,5 +1071,28 @@
"maximize-card": "Maximize Card",
"minimize-card": "Minimize Card",
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"subject": "Subject",
"details": "Details",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Fjern",
"filter-card-title-label": "Filter by card title"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Kommentar schreiben",
"comment-only": "Nur Kommentare",
"comment-only-desc": "Kann Karten nur kommentieren.",
"comment-delete": "Sind Sie sicher, dass Sie den Kommentar löschen möchten?",
"deleteCommentPopup-title": "Kommentar löschen?",
"no-comments": "Keine Kommentare",
"no-comments-desc": "Kann keine Kommentare und Aktivitäten sehen.",
"worker": "Arbeiter",
@@ -1069,5 +1071,28 @@
"maximize-card": "Karte maximieren",
"minimize-card": "Karte minimieren",
"delete-org-warning-message": "Diese Organisation kann nicht gelöscht werden. Zumindest ein Benutzer ist ihr noch zugehörig.",
"delete-team-warning-message": "Dieses Team kann nicht gelöscht werden. Zumindest ein Benutzer ist ihm noch zugehörig."
"delete-team-warning-message": "Dieses Team kann nicht gelöscht werden. Zumindest ein Benutzer ist ihm noch zugehörig.",
"subject": "Betreff",
"details": "Details",
"carbon-copy": "Kopie (CC)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticketnummer",
"open": "Offen",
"pending": "Unerledigt",
"closed": "Geschlossen",
"resolved": "Gelöst",
"cancelled": "Abgebrochen",
"history": "Verlauf",
"request": "Anfrage",
"requests": "Anfragen",
"help-request": "Hilfegesuch",
"editCardSortOrderPopup-title": "Sortierung ändern",
"cardDetailsPopup-title": "Kartendetails",
"add-teams": "Teams hinzufügen",
"add-teams-label": "Hinzugefügte Teams werden nachfolgend angezeigt:",
"remove-team-from-table": "Sind Sie sicher, das Sie dieses Team vom Board entfernen möchten?",
"confirm-btn": "Bestätigen",
"remove-btn": "entfernen",
"filter-card-title-label": "nach Kartentitel filtern"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Kommentar schreiben",
"comment-only": "Nur Kommentare",
"comment-only-desc": "Kann Karten nur kommentieren.",
"comment-delete": "Sind Sie sicher, dass Sie den Kommentar löschen wollen?",
"deleteCommentPopup-title": "Kommentar löschen?",
"no-comments": "Keine Kommentare",
"no-comments-desc": "Kann keine Kommentare und Aktivitäten sehen.",
"worker": "Arbeiter",
@@ -1069,5 +1071,28 @@
"maximize-card": "Karte maximieren",
"minimize-card": "Karte minimieren",
"delete-org-warning-message": "Diese Organisation kann nicht gelöscht werden, da wenigstens ein Nutzer dazu gehört.",
"delete-team-warning-message": "Dieses Team kann nicht gelöscht werden, da wenigstens ein Nutzer dazu gehört."
"delete-team-warning-message": "Dieses Team kann nicht gelöscht werden, da wenigstens ein Nutzer dazu gehört.",
"subject": "Betreff",
"details": "Details",
"carbon-copy": "Kopie (CC:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticketnummer",
"open": "Offen",
"pending": "Unerledigt",
"closed": "Geschlossen",
"resolved": "Gelöst",
"cancelled": "Gestrichen",
"history": "Verlauf",
"request": "Anfrage",
"requests": "Anfragen",
"help-request": "Hilfsgesuch",
"editCardSortOrderPopup-title": "Sortierung ändern",
"cardDetailsPopup-title": "Kartendetails",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "entfernen",
"filter-card-title-label": "Filter by card title"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Συγγραφή Σχολίου",
"comment-only": "Μόνο σχόλιο",
"comment-only-desc": "Μπορεί μόνο να σχολιάζει σε κάρτες.",
"comment-delete": "Are you sure you want to delete the comment?",
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "Χωρίς σχόλια",
"no-comments-desc": "Δε μπορεί να δει σχόλια και δραστηριότητες.",
"worker": "Worker",
@@ -1069,5 +1071,28 @@
"maximize-card": "Maximize Card",
"minimize-card": "Minimize Card",
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"subject": "Subject",
"details": "Details",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Remove",
"filter-card-title-label": "Filter by card title"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"comment-delete": "Are you sure you want to delete the comment?",
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "No comments",
"no-comments-desc": "Can not see comments and activities.",
"worker": "Worker",
@@ -1069,5 +1071,28 @@
"maximize-card": "Maximize Card",
"minimize-card": "Minimize Card",
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"subject": "Subject",
"details": "Details",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Remove",
"filter-card-title-label": "Filter by card title"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"comment-delete": "Are you sure you want to delete the comment?",
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "No comments",
"no-comments-desc": "Can not see comments and activities.",
"worker": "Worker",
@@ -1069,5 +1071,28 @@
"maximize-card": "Maximize Card",
"minimize-card": "Minimize Card",
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"subject": "Subject",
"details": "Details",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Remove",
"filter-card-title-label": "Filter by card title"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"comment-delete": "Are you sure you want to delete the comment?",
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "No comments",
"no-comments-desc": "Can not see comments and activities.",
"worker": "Worker",
@@ -1070,5 +1072,28 @@
"maximize-card": "Maximize Card",
"minimize-card": "Minimize Card",
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"subject": "Subject",
"details": "Details",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Remove",
"filter-card-title-label": "Filter by card title"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"comment-delete": "Are you sure you want to delete the comment?",
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "No comments",
"no-comments-desc": "Can not see comments and activities.",
"worker": "Worker",
@@ -1069,5 +1071,28 @@
"maximize-card": "Maximize Card",
"minimize-card": "Minimize Card",
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"subject": "Subject",
"details": "Details",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Forigi",
"filter-card-title-label": "Filter by card title"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Comentar",
"comment-only": "Comentar solamente",
"comment-only-desc": "Puede comentar en tarjetas solamente.",
"comment-delete": "Are you sure you want to delete the comment?",
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "Sin comentarios",
"no-comments-desc": "Can not see comments and activities.",
"worker": "Worker",
@@ -1069,5 +1071,28 @@
"maximize-card": "Maximize Card",
"minimize-card": "Minimize Card",
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"subject": "Subject",
"details": "Details",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Remove",
"filter-card-title-label": "Filter by card title"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Escribir comentario",
"comment-only": "Sólo comentarios",
"comment-only-desc": "Solo puedes comentar en las tarjetas.",
"comment-delete": "Are you sure you want to delete the comment?",
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "No hay comentarios",
"no-comments-desc": "No se pueden mostrar comentarios ni actividades.",
"worker": "Trabajador",
@@ -1069,5 +1071,28 @@
"maximize-card": "Maximize Card",
"minimize-card": "Minimize Card",
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"subject": "Subject",
"details": "Details",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Eliminar",
"filter-card-title-label": "Filter by card title"
}
+26 -1
View File
@@ -271,6 +271,8 @@
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"comment-delete": "Are you sure you want to delete the comment?",
"deleteCommentPopup-title": "Delete comment?",
"no-comments": "No comments",
"no-comments-desc": "Can not see comments and activities.",
"worker": "Worker",
@@ -1069,5 +1071,28 @@
"maximize-card": "Maximize Card",
"minimize-card": "Minimize Card",
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it",
"subject": "Subject",
"details": "Details",
"carbon-copy": "Carbon Copy (Cc:)",
"ticket": "Ticket",
"tickets": "Tickets",
"ticket-number": "Ticket Number",
"open": "Open",
"pending": "Pending",
"closed": "Closed",
"resolved": "Resolved",
"cancelled": "Cancelled",
"history": "History",
"request": "Request",
"requests": "Requests",
"help-request": "Help Request",
"editCardSortOrderPopup-title": "Change Sorting",
"cardDetailsPopup-title": "Card Details",
"add-teams": "Add teams",
"add-teams-label": "Added teams are displayed below:",
"remove-team-from-table": "Are you sure you want to remove this team from the board ?",
"confirm-btn": "Confirm",
"remove-btn": "Remove",
"filter-card-title-label": "Filter by card title"
}
Loaded 100 of 174 files, more files were not shown because too many files have changed in this diff. Show more