From 36b5965dd07e3f0fd90069353310739c394c220f Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 8 Nov 2019 00:21:04 +0200 Subject: Close card button now visible on mobile. Closes #2261 --- client/components/cards/cardDetails.jade | 11 ++++++++--- client/components/cards/cardDetails.styl | 14 +++++++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index 53a264ec..2b4f44b9 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -4,9 +4,14 @@ template(name="cardDetails") +inlinedForm(classNames="js-card-details-title") +editCardTitleForm else - a.fa.fa-times-thin.close-card-details.js-close-card-details - if currentUser.isBoardMember - a.fa.fa-navicon.card-details-menu.js-open-card-details-menu + unless isMiniScreen + a.fa.fa-times-thin.close-card-details.js-close-card-details + if currentUser.isBoardMember + a.fa.fa-navicon.card-details-menu.js-open-card-details-menu + if isMiniScreen + a.fa.fa-times-thin.close-card-details-mobile-web.js-close-card-details + if currentUser.isBoardMember + a.fa.fa-navicon.card-details-menu-mobile-web.js-open-card-details-menu h2.card-details-title.js-card-title( class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}") +viewer diff --git a/client/components/cards/cardDetails.styl b/client/components/cards/cardDetails.styl index e4549e44..3fc4d047 100644 --- a/client/components/cards/cardDetails.styl +++ b/client/components/cards/cardDetails.styl @@ -107,7 +107,9 @@ avatar-radius = 50% border-bottom: 1px solid darken(white, 14%) .close-card-details, - .card-details-menu + .card-details-menu, + .close-card-details-mobile-web, + .card-details-menu-mobile-web float: right .close-card-details @@ -115,10 +117,20 @@ avatar-radius = 50% padding: 5px margin-right: -8px + .close-card-details-mobile-web + font-size: 24px + padding: 5px + margin-right: 40px + .card-details-menu font-size: 17px padding: 10px + .card-details-menu-mobile-web + font-size: 17px + padding: 10px + margin-right: 30px + .card-details-watch font-size: 17px padding-left: 7px -- cgit v1.2.3-1-g7c22 From 96abe3c6914ce37d9fb44da8fda375e40ad65c9e Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 18 Nov 2019 22:23:49 +0200 Subject: New feature: Now there is popup selection of Lists/Swimlanes/Calendar/Roles. New feature, not set visible yet, because switching to it does not work properly yet: Collapsible Swimlanes #2804 Fix: Public board now loads correctly. When you select one of Lists/Swimlanes/Calendar view and reload webbrowser page, it can change view. Closes #2311 Fix: List sorting commented out. Closes #2800 Fix: Errors hasHiddenMinicardText, hasShowDragHandles, showSort, hasSortBy, profile, FirefoxAndroid/IE11/Vivaldi/Chromium browsers not working by using cookies instead of database. More details at https://github.com/wekan/wekan/issues/2643#issuecomment-554907955 Note: Cookie changes are not always immediate, if there is no effect, you may need to reload webbrowser page. Closes #2643 . Thanks to xet7 ! --- client/components/cards/minicard.js | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/minicard.js b/client/components/cards/minicard.js index 4c76db46..5caea709 100644 --- a/client/components/cards/minicard.js +++ b/client/components/cards/minicard.js @@ -18,7 +18,13 @@ BlazeComponent.extendComponent({ }, { 'click .js-toggle-minicard-label-text'() { - Meteor.call('toggleMinicardLabelText'); + import { Cookies } from 'meteor/ostrio:cookies'; + const cookies = new Cookies(); + if (cookies.has('hiddenMinicardLabelText')) { + cookies.remove('hiddenMinicardLabelText'); //true + } else { + cookies.set('hiddenMinicardLabelText', 'true'); //true + } }, }, ]; @@ -27,9 +33,21 @@ BlazeComponent.extendComponent({ Template.minicard.helpers({ showDesktopDragHandles() { - return Meteor.user().hasShowDesktopDragHandles(); + import { Cookies } from 'meteor/ostrio:cookies'; + const cookies = new Cookies(); + if (cookies.has('showDesktopDragHandles')) { + return true; + } else { + return false; + } }, hiddenMinicardLabelText() { - return Meteor.user().hasHiddenMinicardLabelText(); + import { Cookies } from 'meteor/ostrio:cookies'; + const cookies = new Cookies(); + if (cookies.has('hiddenMinicardLabelText')) { + return true; + } else { + return false; + } }, }); -- cgit v1.2.3-1-g7c22 From 351d4767d7e93c90ac798769d6071da8730d834f Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 19 Nov 2019 14:09:36 +0200 Subject: When logged in, use database for setting, so that changes are immediate. Only on public board use cookies. Comment out Collapse CSS that is not in use. Thanks to xet7 ! --- client/components/cards/minicard.js | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/minicard.js b/client/components/cards/minicard.js index 5caea709..a9f92dec 100644 --- a/client/components/cards/minicard.js +++ b/client/components/cards/minicard.js @@ -33,21 +33,31 @@ BlazeComponent.extendComponent({ Template.minicard.helpers({ showDesktopDragHandles() { - import { Cookies } from 'meteor/ostrio:cookies'; - const cookies = new Cookies(); - if (cookies.has('showDesktopDragHandles')) { - return true; + currentUser = Meteor.user(); + if (currentUser) { + return (currentUser.profile || {}).showDesktopDragHandles; } else { - return false; + import { Cookies } from 'meteor/ostrio:cookies'; + const cookies = new Cookies(); + if (cookies.has('showDesktopDragHandles')) { + return true; + } else { + return false; + } } }, hiddenMinicardLabelText() { - import { Cookies } from 'meteor/ostrio:cookies'; - const cookies = new Cookies(); - if (cookies.has('hiddenMinicardLabelText')) { - return true; + currentUser = Meteor.user(); + if (currentUser) { + return (currentUser.profile || {}).hiddenMinicardLabelText; } else { - return false; + import { Cookies } from 'meteor/ostrio:cookies'; + const cookies = new Cookies(); + if (cookies.has('hiddenMinicardLabelText')) { + return true; + } else { + return false; + } } }, }); -- cgit v1.2.3-1-g7c22 From 8898862d36b1f0fe8e7d7bdc80064e5106894d29 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 26 Nov 2019 02:29:36 +0200 Subject: Fix lint errors. --- client/components/cards/minicard.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/minicard.js b/client/components/cards/minicard.js index a9f92dec..1ea608f5 100644 --- a/client/components/cards/minicard.js +++ b/client/components/cards/minicard.js @@ -1,3 +1,5 @@ +import { Cookies } from 'meteor/ostrio:cookies'; +const cookies = new Cookies(); // Template.cards.events({ // 'click .member': Popup.open('cardMember') // }); @@ -18,8 +20,6 @@ BlazeComponent.extendComponent({ }, { 'click .js-toggle-minicard-label-text'() { - import { Cookies } from 'meteor/ostrio:cookies'; - const cookies = new Cookies(); if (cookies.has('hiddenMinicardLabelText')) { cookies.remove('hiddenMinicardLabelText'); //true } else { @@ -37,8 +37,6 @@ Template.minicard.helpers({ if (currentUser) { return (currentUser.profile || {}).showDesktopDragHandles; } else { - import { Cookies } from 'meteor/ostrio:cookies'; - const cookies = new Cookies(); if (cookies.has('showDesktopDragHandles')) { return true; } else { @@ -51,8 +49,6 @@ Template.minicard.helpers({ if (currentUser) { return (currentUser.profile || {}).hiddenMinicardLabelText; } else { - import { Cookies } from 'meteor/ostrio:cookies'; - const cookies = new Cookies(); if (cookies.has('hiddenMinicardLabelText')) { return true; } else { -- cgit v1.2.3-1-g7c22 From e2a374f0aad8489a84d6de9966c281a812b5eca3 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Thu, 12 Dec 2019 18:41:22 +0200 Subject: Fix: Don't add a blank space for empty custom fields on minicards. Thanks to roobre and xet7 ! Closes #2850 --- client/components/cards/minicard.jade | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/minicard.jade b/client/components/cards/minicard.jade index 79672f8c..7dd220ee 100644 --- a/client/components/cards/minicard.jade +++ b/client/components/cards/minicard.jade @@ -67,14 +67,15 @@ template(name="minicard") .minicard-custom-fields each customFieldsWD if definition.showOnCard - .minicard-custom-field - if definition.showLabelOnMiniCard + if trueValue + .minicard-custom-field + if definition.showLabelOnMiniCard + .minicard-custom-field-item + +viewer + = definition.name .minicard-custom-field-item +viewer - = definition.name - .minicard-custom-field-item - +viewer - = trueValue + = trueValue if getAssignees .minicard-assignees.js-minicard-assignees -- cgit v1.2.3-1-g7c22 From 25561946edf37351f67cf7500902dde7d9114d2f Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 13 Dec 2019 00:37:21 +0200 Subject: Fix: Allow to set empty card title, AssignedBy and RequestedBy. Thanks to xet7 ! --- client/components/cards/cardDetails.js | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'client/components/cards') diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 7bb54223..67120043 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -291,6 +291,8 @@ BlazeComponent.extendComponent({ .trim(); if (title) { this.data().setTitle(title); + } else { + this.data().setTitle(''); } }, 'submit .js-card-details-assigner'(event) { @@ -300,6 +302,8 @@ BlazeComponent.extendComponent({ .trim(); if (assigner) { this.data().setAssignedBy(assigner); + } else { + this.data().setAssignedBy(''); } }, 'submit .js-card-details-requester'(event) { @@ -309,6 +313,8 @@ BlazeComponent.extendComponent({ .trim(); if (requester) { this.data().setRequestedBy(requester); + } else { + this.data().setRequestedBy(''); } }, 'click .js-member': Popup.open('cardMember'), -- cgit v1.2.3-1-g7c22 From 2bf004120d5a43cd3c3c060fc7c0c30d1b01f220 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 3 Jan 2020 06:49:35 +0200 Subject: Add Worker role. Add more Font Awesome icons. Fix browser console errors when editing user profile name etc. Thanks to xet7 ! Closes #2788 --- client/components/cards/attachments.jade | 26 +-- client/components/cards/cardDate.js | 3 +- client/components/cards/cardDetails.jade | 283 ++++++++++++++++++++----------- client/components/cards/cardDetails.js | 46 ++++- client/components/cards/checklists.jade | 4 +- client/components/cards/checklists.js | 9 +- client/components/cards/minicard.js | 16 +- client/components/cards/subtasks.jade | 4 +- client/components/cards/subtasks.js | 9 +- 9 files changed, 271 insertions(+), 129 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/attachments.jade b/client/components/cards/attachments.jade index 2a96f4f4..10b767f4 100644 --- a/client/components/cards/attachments.jade +++ b/client/components/cards/attachments.jade @@ -38,18 +38,20 @@ template(name="attachmentsGalery") | {{_ 'download'}} if currentUser.isBoardMember unless currentUser.isCommentOnly - if isImage - a(class="{{#if $eq ../coverId _id}}js-remove-cover{{else}}js-add-cover{{/if}}") - i.fa.fa-thumb-tack - if($eq ../coverId _id) - | {{_ 'remove-cover'}} - else - | {{_ 'add-cover'}} - a.js-confirm-delete - i.fa.fa-close - | {{_ 'delete'}} + unless currentUser.isWorker + if isImage + a(class="{{#if $eq ../coverId _id}}js-remove-cover{{else}}js-add-cover{{/if}}") + i.fa.fa-thumb-tack + if($eq ../coverId _id) + | {{_ 'remove-cover'}} + else + | {{_ 'add-cover'}} + a.js-confirm-delete + i.fa.fa-close + | {{_ 'delete'}} if currentUser.isBoardMember unless currentUser.isCommentOnly - li.attachment-item.add-attachment - a.js-add-attachment {{_ 'add-attachment' }} + unless currentUser.isWorker + li.attachment-item.add-attachment + a.js-add-attachment {{_ 'add-attachment' }} diff --git a/client/components/cards/cardDate.js b/client/components/cards/cardDate.js index cb54b033..c4b5c6d8 100644 --- a/client/components/cards/cardDate.js +++ b/client/components/cards/cardDate.js @@ -97,7 +97,8 @@ Template.dateBadge.helpers({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() ); }, }); diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index 2b4f44b9..a7aa64ce 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -1,7 +1,7 @@ template(name="cardDetails") section.card-details.js-card-details.js-perfect-scrollbar: .card-details-canvas .card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}') - +inlinedForm(classNames="js-card-details-title") + +inlinedForm(classNames="{{#if canModifyCardWorker}}js-card-details-title{{/if}}") +editCardTitleForm else unless isMiniScreen @@ -13,11 +13,11 @@ template(name="cardDetails") if currentUser.isBoardMember a.fa.fa-navicon.card-details-menu-mobile-web.js-open-card-details-menu h2.card-details-title.js-card-title( - class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}") + class="{{#if canModifyCardWorker}}js-open-inlined-form is-editable{{/if}}") +viewer = getTitle - if isWatching - i.fa.fa-eye.card-details-watch + if isWatching + i.card-details-watch.fa.fa-eye .card-details-path each parentList |   >   @@ -37,49 +37,66 @@ template(name="cardDetails") .card-details-items .card-details-item.card-details-item-received - h3.card-details-item-title {{_ 'card-received'}} + h3 + i.fa.fa-sign-out + card-details-item-title {{_ 'card-received'}} if getReceived +cardReceivedDate else if canModifyCard - a.js-received-date {{_ 'add'}} + unless currentUser.isWorker + a.js-received-date {{_ 'add'}} .card-details-item.card-details-item-start - h3.card-details-item-title {{_ 'card-start'}} + h3 + i.fa.fa-hourglass-start + card-details-item-title {{_ 'card-start'}} if getStart +cardStartDate else if canModifyCard - a.js-start-date {{_ 'add'}} + unless currentUser.isWorker + a.js-start-date {{_ 'add'}} .card-details-item.card-details-item-due - h3.card-details-item-title {{_ 'card-due'}} + h3 + i.fa.fa-sign-in + card-details-item-title {{_ 'card-due'}} if getDue +cardDueDate else if canModifyCard - a.js-due-date {{_ 'add'}} + unless currentUser.isWorker + a.js-due-date {{_ 'add'}} .card-details-item.card-details-item-end - h3.card-details-item-title {{_ 'card-end'}} + h3 + i.fa.fa-hourglass-end + card-details-item-title {{_ 'card-end'}} if getEnd +cardEndDate else if canModifyCard - a.js-end-date {{_ 'add'}} + unless currentUser.isWorker + a.js-end-date {{_ 'add'}} .card-details-items .card-details-item.card-details-item-members - h3.card-details-item-title {{_ 'members'}} + h3 + i.fa.fa-users + card-details-item-title {{_ 'members'}} each getMembers +userAvatar(userId=this cardId=../_id) | {{! XXX Hack to hide syntaxic coloration /// }} if canModifyCard - a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}") - i.fa.fa-plus + unless currentUser.isWorker + a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}") + i.fa.fa-plus .card-details-item.card-details-item-assignees - h3.card-details-item-title {{_ 'assignee'}} + h3 + i.fa.fa-user + card-details-item-title {{_ 'assignee'}} each getAssignees +userAvatarAssignee(userId=this cardId=../_id) | {{! XXX Hack to hide syntaxic coloration /// }} @@ -89,15 +106,18 @@ template(name="cardDetails") i.fa.fa-plus .card-details-item.card-details-item-labels - h3.card-details-item-title {{_ 'labels'}} + h3 + i.fa.fa-tags + card-details-item-title {{_ 'labels'}} a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}") each labels span.card-label(class="card-label-{{color}}" title=name) +viewer = name if canModifyCard - a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}") - i.fa.fa-plus + unless currentUser.isWorker + a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}") + i.fa.fa-plus .card-details-items each customFieldsWD @@ -118,26 +138,29 @@ template(name="cardDetails") //- XXX We should use "editable" to avoid repetiting ourselves if canModifyCard - h3.card-details-item-title {{_ 'description'}} - +inlinedCardDescription(classNames="card-description js-card-description") - +editor(autofocus=true) - | {{getUnsavedValue 'cardDescription' _id getDescription}} - .edit-controls.clearfix - button.primary(type="submit") {{_ 'save'}} - a.fa.fa-times-thin.js-close-inlined-form - else - a.js-open-inlined-form - if getDescription - +viewer - = getDescription - else - | {{_ 'edit'}} - if (hasUnsavedValue 'cardDescription' _id) - p.quiet - | {{_ 'unsaved-description'}} - a.js-open-inlined-form {{_ 'view-it'}} - = ' - ' - a.js-close-inlined-form {{_ 'discard'}} + unless currentUser.isWorker + h3 + i.fa.fa-align-left + card-details-item-title {{_ 'description'}} + +inlinedCardDescription(classNames="card-description js-card-description") + +editor(autofocus=true) + | {{getUnsavedValue 'cardDescription' _id getDescription}} + .edit-controls.clearfix + button.primary(type="submit") {{_ 'save'}} + a.fa.fa-times-thin.js-close-inlined-form + else + a.js-open-inlined-form + if getDescription + +viewer + = getDescription + else + | {{_ 'edit'}} + if (hasUnsavedValue 'cardDescription' _id) + p.quiet + | {{_ 'unsaved-description'}} + a.js-open-inlined-form {{_ 'view-it'}} + = ' - ' + a.js-close-inlined-form {{_ 'discard'}} else if getDescription h3.card-details-item-title {{_ 'description'}} +viewer @@ -145,33 +168,39 @@ template(name="cardDetails") .card-details-items .card-details-item.card-details-item-name - h3.card-details-item-title {{_ 'requested-by'}} + h3 + i.fa.fa-shopping-cart + card-details-item-title {{_ 'requested-by'}} if canModifyCard - +inlinedForm(classNames="js-card-details-requester") - +editCardRequesterForm - else - a.js-open-inlined-form - if getRequestedBy - +viewer - = getRequestedBy - else - | {{_ 'add'}} + unless currentUser.isWorker + +inlinedForm(classNames="js-card-details-requester") + +editCardRequesterForm + else + a.js-open-inlined-form + if getRequestedBy + +viewer + = getRequestedBy + else + | {{_ 'add'}} else if getRequestedBy +viewer = getRequestedBy .card-details-item.card-details-item-name - h3.card-details-item-title {{_ 'assigned-by'}} + h3 + i.fa.fa-user-plus + card-details-item-title {{_ 'assigned-by'}} if canModifyCard - +inlinedForm(classNames="js-card-details-assigner") - +editCardAssignerForm - else - a.js-open-inlined-form - if getAssignedBy - +viewer - = getAssignedBy - else - | {{_ 'add'}} + unless currentUser.isWorker + +inlinedForm(classNames="js-card-details-assigner") + +editCardAssignerForm + else + a.js-open-inlined-form + if getAssignedBy + +viewer + = getAssignedBy + else + | {{_ 'add'}} else if getRequestedBy +viewer = getAssignedBy @@ -193,7 +222,9 @@ template(name="cardDetails") hr unless currentUser.isNoComments .activity-title - h3 {{ _ 'activity'}} + h3 + i.fa.fa-history + | {{ _ 'activity'}} if currentUser.isBoardMember .material-toggle-switch span.toggle-switch-title {{_ 'hide-system-messages'}} @@ -235,32 +266,79 @@ template(name="editCardAssignerForm") template(name="cardDetailsActionsPopup") ul.pop-over-list - li: a.js-toggle-watch-card {{#if isWatching}}{{_ 'unwatch'}}{{else}}{{_ 'watch'}}{{/if}} + li + a.js-toggle-watch-card + if isWatching + i.fa.fa-eye + | {{_ 'unwatch'}} + else + i.fa.fa-eye-slash + | {{_ 'watch'}} if canModifyCard - hr - ul.pop-over-list - //li: a.js-members {{_ 'card-edit-members'}} - //li: a.js-labels {{_ 'card-edit-labels'}} - //li: a.js-attachments {{_ 'card-edit-attachments'}} - li: a.js-custom-fields {{_ 'card-edit-custom-fields'}} - //li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}} - //li: a.js-start-date {{_ 'editCardStartDatePopup-title'}} - //li: a.js-due-date {{_ 'editCardDueDatePopup-title'}} - //li: a.js-end-date {{_ 'editCardEndDatePopup-title'}} - li: a.js-spent-time {{_ 'editCardSpentTimePopup-title'}} - li: a.js-set-card-color {{_ 'setCardColorPopup-title'}} - hr - ul.pop-over-list - li: a.js-move-card-to-top {{_ 'moveCardToTop-title'}} - li: a.js-move-card-to-bottom {{_ 'moveCardToBottom-title'}} - hr + unless currentUser.isWorker + hr + ul.pop-over-list + //li: a.js-members {{_ 'card-edit-members'}} + //li: a.js-labels {{_ 'card-edit-labels'}} + //li: a.js-attachments {{_ 'card-edit-attachments'}} + li + a.js-custom-fields + i.fa.fa-list-alt + | {{_ 'card-edit-custom-fields'}} + //li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}} + //li: a.js-start-date {{_ 'editCardStartDatePopup-title'}} + //li: a.js-due-date {{_ 'editCardDueDatePopup-title'}} + //li: a.js-end-date {{_ 'editCardEndDatePopup-title'}} + li + a.js-spent-time + i.fa.fa-clock-o + | {{_ 'editCardSpentTimePopup-title'}} + li + a.js-set-card-color + i.fa.fa-paint-brush + | {{_ 'setCardColorPopup-title'}} + hr ul.pop-over-list - li: a.js-move-card {{_ 'moveCardPopup-title'}} - li: a.js-copy-card {{_ 'copyCardPopup-title'}} - li: a.js-copy-checklist-cards {{_ 'copyChecklistToManyCardsPopup-title'}} + li + a.js-move-card-to-top + i.fa.fa-arrow-up + | {{_ 'moveCardToTop-title'}} + li + a.js-move-card-to-bottom + i.fa.fa-arrow-down + | {{_ 'moveCardToBottom-title'}} + unless currentUser.isWorker + hr + ul.pop-over-list + li + a.js-move-card + i.fa.fa-arrow-right + | {{_ 'moveCardPopup-title'}} + li + a.js-copy-card + i.fa.fa-copy + | {{_ 'copyCardPopup-title'}} + hr + ul.pop-over-list + li + a.js-copy-checklist-cards + i.fa.fa-list + i.fa.fa-copy + | {{_ 'copyChecklistToManyCardsPopup-title'}} unless archived - li: a.js-archive {{_ 'archive-card'}} - li: a.js-more {{_ 'cardMorePopup-title'}} + hr + ul.pop-over-list + li + a.js-archive + i.fa.fa-arrow-right + i.fa.fa-archive + | {{_ 'archive-card'}} + hr + ul.pop-over-list + li + a.js-more + i.fa.fa-link + | {{_ 'cardMorePopup-title'}} template(name="moveCardPopup") +boardsAndLists @@ -312,16 +390,27 @@ template(name="cardMembersPopup") i.fa.fa-check template(name="cardAssigneesPopup") - ul.pop-over-list.js-card-assignee-list - each board.activeMembers - li.item(class="{{#if isCardAssignee}}active{{/if}}") - a.name.js-select-assignee(href="#") - +userAvatar(userId=user._id) - span.full-name - = user.profile.fullname - | ({{ user.username }}) - if isCardAssignee - i.fa.fa-check + unless currentUser.isWorker + ul.pop-over-list.js-card-assignee-list + each board.activeMembers + li.item(class="{{#if isCardAssignee}}active{{/if}}") + a.name.js-select-assignee(href="#") + +userAvatar(userId=user._id) + span.full-name + = user.profile.fullname + | ({{ user.username }}) + if isCardAssignee + i.fa.fa-check + if currentUser.isWorker + ul.pop-over-list.js-card-assignee-list + li.item(class="{{#if currentUser.isCardAssignee}}active{{/if}}") + a.name.js-select-assigneeWorker(href="#") + +userAvatar(userId=currentUser._id) + span.full-name + = currentUser.profile.fullname + | ({{ currentUser.username }}) + if currentUser.isCardAssignee + i.fa.fa-check template(name="userAvatarAssignee") a.assignee.js-assignee(title="{{userData.profile.fullname}} ({{userData.username}})") @@ -349,11 +438,13 @@ template(name="cardAssigneePopup") p.quiet @{{ user.username }} ul.pop-over-list if currentUser.isNotCommentOnly + unless currentUser.isWorker li: a.js-remove-assignee {{_ 'remove-member-from-card'}} - if $eq currentUser._id user._id - with currentUser - li: a.js-edit-profile {{_ 'edit-profile'}} + unless currentUser.isWorker + if $eq currentUser._id user._id + with currentUser + li: a.js-edit-profile {{_ 'edit-profile'}} template(name="userAvatarAssigneeInitials") svg.avatar.avatar-assignee-initials(viewBox="0 0 {{viewPortWidth}} 15") diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 67120043..f0317e6a 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -26,6 +26,7 @@ BlazeComponent.extendComponent({ onCreated() { this.currentBoard = Boards.findOne(Session.get('currentBoard')); + this.currentUser = Meteor.user(); this.isLoaded = new ReactiveVar(false); const boardBody = this.parentComponent().parentComponent(); //in Miniview parent is Board, not BoardBody. @@ -55,6 +56,15 @@ BlazeComponent.extendComponent({ ); }, + canModifyCardWorker() { + return ( + Meteor.user() && + Meteor.user().isBoardMember() && + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() + ); + }, + scrollParentContainer() { const cardPanelWidth = 510; const bodyBoardComponent = this.parentComponent().parentComponent(); @@ -322,7 +332,12 @@ BlazeComponent.extendComponent({ 'click .js-assignee': Popup.open('cardAssignee'), 'click .js-add-assignees': Popup.open('cardAssignees'), 'click .js-add-labels': Popup.open('cardLabels'), - 'click .js-received-date': Popup.open('editCardReceivedDate'), + 'click .js-received-date'(event) { + event.preventDefault(); + if (!Meteor.user().isWorker) { + Popup.open('editCardReceivedDate'); + } + }, 'click .js-start-date': Popup.open('editCardStartDate'), 'click .js-due-date': Popup.open('editCardDueDate'), 'click .js-end-date': Popup.open('editCardEndDate'), @@ -383,6 +398,13 @@ Template.cardDetails.helpers({ return user && user.isBoardAdmin() ? 'admin' : 'normal'; }, + isWorker() { + const currentBoard = Boards.findOne(Session.get('currentBoard')); + return ( + !currentBoard.hasAdmin(this.userId) && currentBoard.hasWorker(this.userId) + ); + }, + presenceStatusClassName() { const user = Users.findOne(this.userId); const userPresence = presences.findOne({ userId: this.userId }); @@ -459,6 +481,15 @@ Template.cardDetailsActionsPopup.helpers({ !Meteor.user().isCommentOnly() ); }, + + canModifyCardWorker() { + return ( + Meteor.user() && + Meteor.user().isBoardMember() && + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() + ); + }, }); Template.cardDetailsActionsPopup.events({ @@ -467,7 +498,12 @@ Template.cardDetailsActionsPopup.events({ 'click .js-labels': Popup.open('cardLabels'), 'click .js-attachments': Popup.open('cardAttachments'), 'click .js-custom-fields': Popup.open('cardCustomFields'), - 'click .js-received-date': Popup.open('editCardReceivedDate'), + 'click .js-received-date'(event) { + event.preventDefault(); + if (!Meteor.user().isWorker) { + Popup.open('editCardReceivedDate'); + } + }, 'click .js-start-date': Popup.open('editCardStartDate'), 'click .js-due-date': Popup.open('editCardDueDate'), 'click .js-end-date': Popup.open('editCardEndDate'), @@ -879,6 +915,12 @@ Template.cardAssigneesPopup.events({ card.toggleAssignee(assigneeId); event.preventDefault(); }, + 'click .js-select-assigneeWorker'(event) { + const card = Cards.findOne(Session.get('currentCard')); + const assigneeId = currentUser._id; + card.toggleAssignee(assigneeId); + event.preventDefault(); + }, }); Template.cardAssigneesPopup.helpers({ diff --git a/client/components/cards/checklists.jade b/client/components/cards/checklists.jade index 279d3671..391769e9 100644 --- a/client/components/cards/checklists.jade +++ b/client/components/cards/checklists.jade @@ -1,5 +1,7 @@ template(name="checklists") - h3 {{_ 'checklists'}} + h3 + i.fa.fa-check + | {{_ 'checklists'}} if toggleDeleteDialog.get .board-overlay#card-details-overlay +checklistDeleteDialog(checklist = checklistToDelete) diff --git a/client/components/cards/checklists.js b/client/components/cards/checklists.js index 57939eb8..27d1b1c9 100644 --- a/client/components/cards/checklists.js +++ b/client/components/cards/checklists.js @@ -67,7 +67,8 @@ BlazeComponent.extendComponent({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() ); }, }).register('checklistDetail'); @@ -120,7 +121,8 @@ BlazeComponent.extendComponent({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() ); }, @@ -228,7 +230,8 @@ Template.checklistItemDetail.helpers({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() ); }, }); diff --git a/client/components/cards/minicard.js b/client/components/cards/minicard.js index 1ea608f5..da36b87f 100644 --- a/client/components/cards/minicard.js +++ b/client/components/cards/minicard.js @@ -36,24 +36,20 @@ Template.minicard.helpers({ currentUser = Meteor.user(); if (currentUser) { return (currentUser.profile || {}).showDesktopDragHandles; + } else if (cookies.has('showDesktopDragHandles')) { + return true; } else { - if (cookies.has('showDesktopDragHandles')) { - return true; - } else { - return false; - } + return false; } }, hiddenMinicardLabelText() { currentUser = Meteor.user(); if (currentUser) { return (currentUser.profile || {}).hiddenMinicardLabelText; + } else if (cookies.has('hiddenMinicardLabelText')) { + return true; } else { - if (cookies.has('hiddenMinicardLabelText')) { - return true; - } else { - return false; - } + return false; } }, }); diff --git a/client/components/cards/subtasks.jade b/client/components/cards/subtasks.jade index 7e64e23f..df35bed3 100644 --- a/client/components/cards/subtasks.jade +++ b/client/components/cards/subtasks.jade @@ -1,5 +1,7 @@ template(name="subtasks") - h3 {{_ 'subtasks'}} + h3 + i.fa.fa-sitemap + | {{_ 'subtasks'}} if toggleDeleteDialog.get .board-overlay#card-details-overlay +subtaskDeleteDialog(subtask = subtaskToDelete) diff --git a/client/components/cards/subtasks.js b/client/components/cards/subtasks.js index fab860bb..34348fe1 100644 --- a/client/components/cards/subtasks.js +++ b/client/components/cards/subtasks.js @@ -3,7 +3,8 @@ BlazeComponent.extendComponent({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() ); }, }).register('subtaskDetail'); @@ -55,7 +56,8 @@ BlazeComponent.extendComponent({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() ); }, @@ -154,7 +156,8 @@ Template.subtaskItemDetail.helpers({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() ); }, }); -- cgit v1.2.3-1-g7c22 From 5376bc7b7905c0dd99fae1aeae3f63b4583a3e3f Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 3 Jan 2020 13:27:27 +0200 Subject: Fix not being able to edit received date. Thanks to xet7 ! --- client/components/cards/cardDetails.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index f0317e6a..f47b3824 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -332,12 +332,7 @@ BlazeComponent.extendComponent({ 'click .js-assignee': Popup.open('cardAssignee'), 'click .js-add-assignees': Popup.open('cardAssignees'), 'click .js-add-labels': Popup.open('cardLabels'), - 'click .js-received-date'(event) { - event.preventDefault(); - if (!Meteor.user().isWorker) { - Popup.open('editCardReceivedDate'); - } - }, + 'click .js-received-date': Popup.open('editCardReceivedDate'), 'click .js-start-date': Popup.open('editCardStartDate'), 'click .js-due-date': Popup.open('editCardDueDate'), 'click .js-end-date': Popup.open('editCardEndDate'), -- cgit v1.2.3-1-g7c22 From 27943796ade78ca3c503637a1340918bf06a1267 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 3 Jan 2020 16:02:31 +0200 Subject: Revert to Wekan v3.57 version of client and models directories, removing Worker role temporarily, because Worker role changes broke saving card. Thanks to xet7 ! --- client/components/cards/attachments.jade | 26 ++- client/components/cards/cardDate.js | 3 +- client/components/cards/cardDetails.jade | 283 +++++++++++-------------------- client/components/cards/cardDetails.js | 39 +---- client/components/cards/checklists.jade | 4 +- client/components/cards/checklists.js | 9 +- client/components/cards/subtasks.jade | 4 +- client/components/cards/subtasks.js | 9 +- 8 files changed, 118 insertions(+), 259 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/attachments.jade b/client/components/cards/attachments.jade index 10b767f4..2a96f4f4 100644 --- a/client/components/cards/attachments.jade +++ b/client/components/cards/attachments.jade @@ -38,20 +38,18 @@ template(name="attachmentsGalery") | {{_ 'download'}} if currentUser.isBoardMember unless currentUser.isCommentOnly - unless currentUser.isWorker - if isImage - a(class="{{#if $eq ../coverId _id}}js-remove-cover{{else}}js-add-cover{{/if}}") - i.fa.fa-thumb-tack - if($eq ../coverId _id) - | {{_ 'remove-cover'}} - else - | {{_ 'add-cover'}} - a.js-confirm-delete - i.fa.fa-close - | {{_ 'delete'}} + if isImage + a(class="{{#if $eq ../coverId _id}}js-remove-cover{{else}}js-add-cover{{/if}}") + i.fa.fa-thumb-tack + if($eq ../coverId _id) + | {{_ 'remove-cover'}} + else + | {{_ 'add-cover'}} + a.js-confirm-delete + i.fa.fa-close + | {{_ 'delete'}} if currentUser.isBoardMember unless currentUser.isCommentOnly - unless currentUser.isWorker - li.attachment-item.add-attachment - a.js-add-attachment {{_ 'add-attachment' }} + li.attachment-item.add-attachment + a.js-add-attachment {{_ 'add-attachment' }} diff --git a/client/components/cards/cardDate.js b/client/components/cards/cardDate.js index c4b5c6d8..cb54b033 100644 --- a/client/components/cards/cardDate.js +++ b/client/components/cards/cardDate.js @@ -97,8 +97,7 @@ Template.dateBadge.helpers({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() + !Meteor.user().isCommentOnly() ); }, }); diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index a7aa64ce..2b4f44b9 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -1,7 +1,7 @@ template(name="cardDetails") section.card-details.js-card-details.js-perfect-scrollbar: .card-details-canvas .card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}') - +inlinedForm(classNames="{{#if canModifyCardWorker}}js-card-details-title{{/if}}") + +inlinedForm(classNames="js-card-details-title") +editCardTitleForm else unless isMiniScreen @@ -13,11 +13,11 @@ template(name="cardDetails") if currentUser.isBoardMember a.fa.fa-navicon.card-details-menu-mobile-web.js-open-card-details-menu h2.card-details-title.js-card-title( - class="{{#if canModifyCardWorker}}js-open-inlined-form is-editable{{/if}}") + class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}") +viewer = getTitle - if isWatching - i.card-details-watch.fa.fa-eye + if isWatching + i.fa.fa-eye.card-details-watch .card-details-path each parentList |   >   @@ -37,66 +37,49 @@ template(name="cardDetails") .card-details-items .card-details-item.card-details-item-received - h3 - i.fa.fa-sign-out - card-details-item-title {{_ 'card-received'}} + h3.card-details-item-title {{_ 'card-received'}} if getReceived +cardReceivedDate else if canModifyCard - unless currentUser.isWorker - a.js-received-date {{_ 'add'}} + a.js-received-date {{_ 'add'}} .card-details-item.card-details-item-start - h3 - i.fa.fa-hourglass-start - card-details-item-title {{_ 'card-start'}} + h3.card-details-item-title {{_ 'card-start'}} if getStart +cardStartDate else if canModifyCard - unless currentUser.isWorker - a.js-start-date {{_ 'add'}} + a.js-start-date {{_ 'add'}} .card-details-item.card-details-item-due - h3 - i.fa.fa-sign-in - card-details-item-title {{_ 'card-due'}} + h3.card-details-item-title {{_ 'card-due'}} if getDue +cardDueDate else if canModifyCard - unless currentUser.isWorker - a.js-due-date {{_ 'add'}} + a.js-due-date {{_ 'add'}} .card-details-item.card-details-item-end - h3 - i.fa.fa-hourglass-end - card-details-item-title {{_ 'card-end'}} + h3.card-details-item-title {{_ 'card-end'}} if getEnd +cardEndDate else if canModifyCard - unless currentUser.isWorker - a.js-end-date {{_ 'add'}} + a.js-end-date {{_ 'add'}} .card-details-items .card-details-item.card-details-item-members - h3 - i.fa.fa-users - card-details-item-title {{_ 'members'}} + h3.card-details-item-title {{_ 'members'}} each getMembers +userAvatar(userId=this cardId=../_id) | {{! XXX Hack to hide syntaxic coloration /// }} if canModifyCard - unless currentUser.isWorker - a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}") - i.fa.fa-plus + a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}") + i.fa.fa-plus .card-details-item.card-details-item-assignees - h3 - i.fa.fa-user - card-details-item-title {{_ 'assignee'}} + h3.card-details-item-title {{_ 'assignee'}} each getAssignees +userAvatarAssignee(userId=this cardId=../_id) | {{! XXX Hack to hide syntaxic coloration /// }} @@ -106,18 +89,15 @@ template(name="cardDetails") i.fa.fa-plus .card-details-item.card-details-item-labels - h3 - i.fa.fa-tags - card-details-item-title {{_ 'labels'}} + h3.card-details-item-title {{_ 'labels'}} a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}") each labels span.card-label(class="card-label-{{color}}" title=name) +viewer = name if canModifyCard - unless currentUser.isWorker - a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}") - i.fa.fa-plus + a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}") + i.fa.fa-plus .card-details-items each customFieldsWD @@ -138,29 +118,26 @@ template(name="cardDetails") //- XXX We should use "editable" to avoid repetiting ourselves if canModifyCard - unless currentUser.isWorker - h3 - i.fa.fa-align-left - card-details-item-title {{_ 'description'}} - +inlinedCardDescription(classNames="card-description js-card-description") - +editor(autofocus=true) - | {{getUnsavedValue 'cardDescription' _id getDescription}} - .edit-controls.clearfix - button.primary(type="submit") {{_ 'save'}} - a.fa.fa-times-thin.js-close-inlined-form - else - a.js-open-inlined-form - if getDescription - +viewer - = getDescription - else - | {{_ 'edit'}} - if (hasUnsavedValue 'cardDescription' _id) - p.quiet - | {{_ 'unsaved-description'}} - a.js-open-inlined-form {{_ 'view-it'}} - = ' - ' - a.js-close-inlined-form {{_ 'discard'}} + h3.card-details-item-title {{_ 'description'}} + +inlinedCardDescription(classNames="card-description js-card-description") + +editor(autofocus=true) + | {{getUnsavedValue 'cardDescription' _id getDescription}} + .edit-controls.clearfix + button.primary(type="submit") {{_ 'save'}} + a.fa.fa-times-thin.js-close-inlined-form + else + a.js-open-inlined-form + if getDescription + +viewer + = getDescription + else + | {{_ 'edit'}} + if (hasUnsavedValue 'cardDescription' _id) + p.quiet + | {{_ 'unsaved-description'}} + a.js-open-inlined-form {{_ 'view-it'}} + = ' - ' + a.js-close-inlined-form {{_ 'discard'}} else if getDescription h3.card-details-item-title {{_ 'description'}} +viewer @@ -168,39 +145,33 @@ template(name="cardDetails") .card-details-items .card-details-item.card-details-item-name - h3 - i.fa.fa-shopping-cart - card-details-item-title {{_ 'requested-by'}} + h3.card-details-item-title {{_ 'requested-by'}} if canModifyCard - unless currentUser.isWorker - +inlinedForm(classNames="js-card-details-requester") - +editCardRequesterForm - else - a.js-open-inlined-form - if getRequestedBy - +viewer - = getRequestedBy - else - | {{_ 'add'}} + +inlinedForm(classNames="js-card-details-requester") + +editCardRequesterForm + else + a.js-open-inlined-form + if getRequestedBy + +viewer + = getRequestedBy + else + | {{_ 'add'}} else if getRequestedBy +viewer = getRequestedBy .card-details-item.card-details-item-name - h3 - i.fa.fa-user-plus - card-details-item-title {{_ 'assigned-by'}} + h3.card-details-item-title {{_ 'assigned-by'}} if canModifyCard - unless currentUser.isWorker - +inlinedForm(classNames="js-card-details-assigner") - +editCardAssignerForm - else - a.js-open-inlined-form - if getAssignedBy - +viewer - = getAssignedBy - else - | {{_ 'add'}} + +inlinedForm(classNames="js-card-details-assigner") + +editCardAssignerForm + else + a.js-open-inlined-form + if getAssignedBy + +viewer + = getAssignedBy + else + | {{_ 'add'}} else if getRequestedBy +viewer = getAssignedBy @@ -222,9 +193,7 @@ template(name="cardDetails") hr unless currentUser.isNoComments .activity-title - h3 - i.fa.fa-history - | {{ _ 'activity'}} + h3 {{ _ 'activity'}} if currentUser.isBoardMember .material-toggle-switch span.toggle-switch-title {{_ 'hide-system-messages'}} @@ -266,79 +235,32 @@ template(name="editCardAssignerForm") template(name="cardDetailsActionsPopup") ul.pop-over-list - li - a.js-toggle-watch-card - if isWatching - i.fa.fa-eye - | {{_ 'unwatch'}} - else - i.fa.fa-eye-slash - | {{_ 'watch'}} + li: a.js-toggle-watch-card {{#if isWatching}}{{_ 'unwatch'}}{{else}}{{_ 'watch'}}{{/if}} if canModifyCard - unless currentUser.isWorker - hr - ul.pop-over-list - //li: a.js-members {{_ 'card-edit-members'}} - //li: a.js-labels {{_ 'card-edit-labels'}} - //li: a.js-attachments {{_ 'card-edit-attachments'}} - li - a.js-custom-fields - i.fa.fa-list-alt - | {{_ 'card-edit-custom-fields'}} - //li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}} - //li: a.js-start-date {{_ 'editCardStartDatePopup-title'}} - //li: a.js-due-date {{_ 'editCardDueDatePopup-title'}} - //li: a.js-end-date {{_ 'editCardEndDatePopup-title'}} - li - a.js-spent-time - i.fa.fa-clock-o - | {{_ 'editCardSpentTimePopup-title'}} - li - a.js-set-card-color - i.fa.fa-paint-brush - | {{_ 'setCardColorPopup-title'}} - hr + hr ul.pop-over-list - li - a.js-move-card-to-top - i.fa.fa-arrow-up - | {{_ 'moveCardToTop-title'}} - li - a.js-move-card-to-bottom - i.fa.fa-arrow-down - | {{_ 'moveCardToBottom-title'}} - unless currentUser.isWorker - hr - ul.pop-over-list - li - a.js-move-card - i.fa.fa-arrow-right - | {{_ 'moveCardPopup-title'}} - li - a.js-copy-card - i.fa.fa-copy - | {{_ 'copyCardPopup-title'}} - hr - ul.pop-over-list - li - a.js-copy-checklist-cards - i.fa.fa-list - i.fa.fa-copy - | {{_ 'copyChecklistToManyCardsPopup-title'}} + //li: a.js-members {{_ 'card-edit-members'}} + //li: a.js-labels {{_ 'card-edit-labels'}} + //li: a.js-attachments {{_ 'card-edit-attachments'}} + li: a.js-custom-fields {{_ 'card-edit-custom-fields'}} + //li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}} + //li: a.js-start-date {{_ 'editCardStartDatePopup-title'}} + //li: a.js-due-date {{_ 'editCardDueDatePopup-title'}} + //li: a.js-end-date {{_ 'editCardEndDatePopup-title'}} + li: a.js-spent-time {{_ 'editCardSpentTimePopup-title'}} + li: a.js-set-card-color {{_ 'setCardColorPopup-title'}} + hr + ul.pop-over-list + li: a.js-move-card-to-top {{_ 'moveCardToTop-title'}} + li: a.js-move-card-to-bottom {{_ 'moveCardToBottom-title'}} + hr + ul.pop-over-list + li: a.js-move-card {{_ 'moveCardPopup-title'}} + li: a.js-copy-card {{_ 'copyCardPopup-title'}} + li: a.js-copy-checklist-cards {{_ 'copyChecklistToManyCardsPopup-title'}} unless archived - hr - ul.pop-over-list - li - a.js-archive - i.fa.fa-arrow-right - i.fa.fa-archive - | {{_ 'archive-card'}} - hr - ul.pop-over-list - li - a.js-more - i.fa.fa-link - | {{_ 'cardMorePopup-title'}} + li: a.js-archive {{_ 'archive-card'}} + li: a.js-more {{_ 'cardMorePopup-title'}} template(name="moveCardPopup") +boardsAndLists @@ -390,27 +312,16 @@ template(name="cardMembersPopup") i.fa.fa-check template(name="cardAssigneesPopup") - unless currentUser.isWorker - ul.pop-over-list.js-card-assignee-list - each board.activeMembers - li.item(class="{{#if isCardAssignee}}active{{/if}}") - a.name.js-select-assignee(href="#") - +userAvatar(userId=user._id) - span.full-name - = user.profile.fullname - | ({{ user.username }}) - if isCardAssignee - i.fa.fa-check - if currentUser.isWorker - ul.pop-over-list.js-card-assignee-list - li.item(class="{{#if currentUser.isCardAssignee}}active{{/if}}") - a.name.js-select-assigneeWorker(href="#") - +userAvatar(userId=currentUser._id) - span.full-name - = currentUser.profile.fullname - | ({{ currentUser.username }}) - if currentUser.isCardAssignee - i.fa.fa-check + ul.pop-over-list.js-card-assignee-list + each board.activeMembers + li.item(class="{{#if isCardAssignee}}active{{/if}}") + a.name.js-select-assignee(href="#") + +userAvatar(userId=user._id) + span.full-name + = user.profile.fullname + | ({{ user.username }}) + if isCardAssignee + i.fa.fa-check template(name="userAvatarAssignee") a.assignee.js-assignee(title="{{userData.profile.fullname}} ({{userData.username}})") @@ -438,13 +349,11 @@ template(name="cardAssigneePopup") p.quiet @{{ user.username }} ul.pop-over-list if currentUser.isNotCommentOnly - unless currentUser.isWorker li: a.js-remove-assignee {{_ 'remove-member-from-card'}} - unless currentUser.isWorker - if $eq currentUser._id user._id - with currentUser - li: a.js-edit-profile {{_ 'edit-profile'}} + if $eq currentUser._id user._id + with currentUser + li: a.js-edit-profile {{_ 'edit-profile'}} template(name="userAvatarAssigneeInitials") svg.avatar.avatar-assignee-initials(viewBox="0 0 {{viewPortWidth}} 15") diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index f47b3824..67120043 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -26,7 +26,6 @@ BlazeComponent.extendComponent({ onCreated() { this.currentBoard = Boards.findOne(Session.get('currentBoard')); - this.currentUser = Meteor.user(); this.isLoaded = new ReactiveVar(false); const boardBody = this.parentComponent().parentComponent(); //in Miniview parent is Board, not BoardBody. @@ -56,15 +55,6 @@ BlazeComponent.extendComponent({ ); }, - canModifyCardWorker() { - return ( - Meteor.user() && - Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() - ); - }, - scrollParentContainer() { const cardPanelWidth = 510; const bodyBoardComponent = this.parentComponent().parentComponent(); @@ -393,13 +383,6 @@ Template.cardDetails.helpers({ return user && user.isBoardAdmin() ? 'admin' : 'normal'; }, - isWorker() { - const currentBoard = Boards.findOne(Session.get('currentBoard')); - return ( - !currentBoard.hasAdmin(this.userId) && currentBoard.hasWorker(this.userId) - ); - }, - presenceStatusClassName() { const user = Users.findOne(this.userId); const userPresence = presences.findOne({ userId: this.userId }); @@ -476,15 +459,6 @@ Template.cardDetailsActionsPopup.helpers({ !Meteor.user().isCommentOnly() ); }, - - canModifyCardWorker() { - return ( - Meteor.user() && - Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() - ); - }, }); Template.cardDetailsActionsPopup.events({ @@ -493,12 +467,7 @@ Template.cardDetailsActionsPopup.events({ 'click .js-labels': Popup.open('cardLabels'), 'click .js-attachments': Popup.open('cardAttachments'), 'click .js-custom-fields': Popup.open('cardCustomFields'), - 'click .js-received-date'(event) { - event.preventDefault(); - if (!Meteor.user().isWorker) { - Popup.open('editCardReceivedDate'); - } - }, + 'click .js-received-date': Popup.open('editCardReceivedDate'), 'click .js-start-date': Popup.open('editCardStartDate'), 'click .js-due-date': Popup.open('editCardDueDate'), 'click .js-end-date': Popup.open('editCardEndDate'), @@ -910,12 +879,6 @@ Template.cardAssigneesPopup.events({ card.toggleAssignee(assigneeId); event.preventDefault(); }, - 'click .js-select-assigneeWorker'(event) { - const card = Cards.findOne(Session.get('currentCard')); - const assigneeId = currentUser._id; - card.toggleAssignee(assigneeId); - event.preventDefault(); - }, }); Template.cardAssigneesPopup.helpers({ diff --git a/client/components/cards/checklists.jade b/client/components/cards/checklists.jade index 391769e9..279d3671 100644 --- a/client/components/cards/checklists.jade +++ b/client/components/cards/checklists.jade @@ -1,7 +1,5 @@ template(name="checklists") - h3 - i.fa.fa-check - | {{_ 'checklists'}} + h3 {{_ 'checklists'}} if toggleDeleteDialog.get .board-overlay#card-details-overlay +checklistDeleteDialog(checklist = checklistToDelete) diff --git a/client/components/cards/checklists.js b/client/components/cards/checklists.js index 27d1b1c9..57939eb8 100644 --- a/client/components/cards/checklists.js +++ b/client/components/cards/checklists.js @@ -67,8 +67,7 @@ BlazeComponent.extendComponent({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() + !Meteor.user().isCommentOnly() ); }, }).register('checklistDetail'); @@ -121,8 +120,7 @@ BlazeComponent.extendComponent({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() + !Meteor.user().isCommentOnly() ); }, @@ -230,8 +228,7 @@ Template.checklistItemDetail.helpers({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() + !Meteor.user().isCommentOnly() ); }, }); diff --git a/client/components/cards/subtasks.jade b/client/components/cards/subtasks.jade index df35bed3..7e64e23f 100644 --- a/client/components/cards/subtasks.jade +++ b/client/components/cards/subtasks.jade @@ -1,7 +1,5 @@ template(name="subtasks") - h3 - i.fa.fa-sitemap - | {{_ 'subtasks'}} + h3 {{_ 'subtasks'}} if toggleDeleteDialog.get .board-overlay#card-details-overlay +subtaskDeleteDialog(subtask = subtaskToDelete) diff --git a/client/components/cards/subtasks.js b/client/components/cards/subtasks.js index 34348fe1..fab860bb 100644 --- a/client/components/cards/subtasks.js +++ b/client/components/cards/subtasks.js @@ -3,8 +3,7 @@ BlazeComponent.extendComponent({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() + !Meteor.user().isCommentOnly() ); }, }).register('subtaskDetail'); @@ -56,8 +55,7 @@ BlazeComponent.extendComponent({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() + !Meteor.user().isCommentOnly() ); }, @@ -156,8 +154,7 @@ Template.subtaskItemDetail.helpers({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() + !Meteor.user().isCommentOnly() ); }, }); -- cgit v1.2.3-1-g7c22 From cd253522a305523e3e36bb73313e8c4db500a717 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 3 Jan 2020 17:02:27 +0200 Subject: Add more Font Awesome icons. This was originally added at Wekan v3.58, removed at Wekan v3.60, and now added back at Wekan v3.61. Thanks to xet7 ! --- client/components/cards/cardDetails.jade | 117 ++++++++++++++++++++++++------- client/components/cards/checklists.jade | 4 +- client/components/cards/subtasks.jade | 4 +- 3 files changed, 98 insertions(+), 27 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index 2b4f44b9..d7c7ca59 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -16,8 +16,8 @@ template(name="cardDetails") class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}") +viewer = getTitle - if isWatching - i.fa.fa-eye.card-details-watch + if isWatching + i.card-details-watch.fa.fa-eye .card-details-path each parentList |   >   @@ -37,7 +37,9 @@ template(name="cardDetails") .card-details-items .card-details-item.card-details-item-received - h3.card-details-item-title {{_ 'card-received'}} + h3 + i.fa.fa-sign-out + card-details-item-title {{_ 'card-received'}} if getReceived +cardReceivedDate else @@ -45,7 +47,9 @@ template(name="cardDetails") a.js-received-date {{_ 'add'}} .card-details-item.card-details-item-start - h3.card-details-item-title {{_ 'card-start'}} + h3 + i.fa.fa-hourglass-start + card-details-item-title {{_ 'card-start'}} if getStart +cardStartDate else @@ -53,7 +57,9 @@ template(name="cardDetails") a.js-start-date {{_ 'add'}} .card-details-item.card-details-item-due - h3.card-details-item-title {{_ 'card-due'}} + h3 + i.fa.fa-sign-in + card-details-item-title {{_ 'card-due'}} if getDue +cardDueDate else @@ -61,7 +67,9 @@ template(name="cardDetails") a.js-due-date {{_ 'add'}} .card-details-item.card-details-item-end - h3.card-details-item-title {{_ 'card-end'}} + h3 + i.fa.fa-hourglass-end + card-details-item-title {{_ 'card-end'}} if getEnd +cardEndDate else @@ -70,7 +78,9 @@ template(name="cardDetails") .card-details-items .card-details-item.card-details-item-members - h3.card-details-item-title {{_ 'members'}} + h3 + i.fa.fa-users + card-details-item-title {{_ 'members'}} each getMembers +userAvatar(userId=this cardId=../_id) | {{! XXX Hack to hide syntaxic coloration /// }} @@ -79,7 +89,9 @@ template(name="cardDetails") i.fa.fa-plus .card-details-item.card-details-item-assignees - h3.card-details-item-title {{_ 'assignee'}} + h3 + i.fa.fa-user + card-details-item-title {{_ 'assignee'}} each getAssignees +userAvatarAssignee(userId=this cardId=../_id) | {{! XXX Hack to hide syntaxic coloration /// }} @@ -89,7 +101,9 @@ template(name="cardDetails") i.fa.fa-plus .card-details-item.card-details-item-labels - h3.card-details-item-title {{_ 'labels'}} + h3 + i.fa.fa-tags + card-details-item-title {{_ 'labels'}} a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}") each labels span.card-label(class="card-label-{{color}}" title=name) @@ -118,7 +132,9 @@ template(name="cardDetails") //- XXX We should use "editable" to avoid repetiting ourselves if canModifyCard - h3.card-details-item-title {{_ 'description'}} + h3 + i.fa.fa-align-left + card-details-item-title {{_ 'description'}} +inlinedCardDescription(classNames="card-description js-card-description") +editor(autofocus=true) | {{getUnsavedValue 'cardDescription' _id getDescription}} @@ -145,7 +161,9 @@ template(name="cardDetails") .card-details-items .card-details-item.card-details-item-name - h3.card-details-item-title {{_ 'requested-by'}} + h3 + i.fa.fa-shopping-cart + card-details-item-title {{_ 'requested-by'}} if canModifyCard +inlinedForm(classNames="js-card-details-requester") +editCardRequesterForm @@ -161,7 +179,9 @@ template(name="cardDetails") = getRequestedBy .card-details-item.card-details-item-name - h3.card-details-item-title {{_ 'assigned-by'}} + h3 + i.fa.fa-user-plus + card-details-item-title {{_ 'assigned-by'}} if canModifyCard +inlinedForm(classNames="js-card-details-assigner") +editCardAssignerForm @@ -193,7 +213,9 @@ template(name="cardDetails") hr unless currentUser.isNoComments .activity-title - h3 {{ _ 'activity'}} + h3 + i.fa.fa-history + | {{ _ 'activity'}} if currentUser.isBoardMember .material-toggle-switch span.toggle-switch-title {{_ 'hide-system-messages'}} @@ -235,32 +257,77 @@ template(name="editCardAssignerForm") template(name="cardDetailsActionsPopup") ul.pop-over-list - li: a.js-toggle-watch-card {{#if isWatching}}{{_ 'unwatch'}}{{else}}{{_ 'watch'}}{{/if}} + li + a.js-toggle-watch-card + if isWatching + i.fa.fa-eye + | {{_ 'unwatch'}} + else + i.fa.fa-eye-slash + | {{_ 'watch'}} if canModifyCard hr ul.pop-over-list //li: a.js-members {{_ 'card-edit-members'}} //li: a.js-labels {{_ 'card-edit-labels'}} //li: a.js-attachments {{_ 'card-edit-attachments'}} - li: a.js-custom-fields {{_ 'card-edit-custom-fields'}} + li + a.js-custom-fields + i.fa.fa-list-alt + | {{_ 'card-edit-custom-fields'}} //li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}} //li: a.js-start-date {{_ 'editCardStartDatePopup-title'}} //li: a.js-due-date {{_ 'editCardDueDatePopup-title'}} //li: a.js-end-date {{_ 'editCardEndDatePopup-title'}} - li: a.js-spent-time {{_ 'editCardSpentTimePopup-title'}} - li: a.js-set-card-color {{_ 'setCardColorPopup-title'}} + li + a.js-spent-time + i.fa.fa-clock-o + | {{_ 'editCardSpentTimePopup-title'}} + li + a.js-set-card-color + i.fa.fa-paint-brush + | {{_ 'setCardColorPopup-title'}} hr ul.pop-over-list - li: a.js-move-card-to-top {{_ 'moveCardToTop-title'}} - li: a.js-move-card-to-bottom {{_ 'moveCardToBottom-title'}} + li + a.js-move-card-to-top + i.fa.fa-arrow-up + | {{_ 'moveCardToTop-title'}} + li + a.js-move-card-to-bottom + i.fa.fa-arrow-down + | {{_ 'moveCardToBottom-title'}} hr ul.pop-over-list - li: a.js-move-card {{_ 'moveCardPopup-title'}} - li: a.js-copy-card {{_ 'copyCardPopup-title'}} - li: a.js-copy-checklist-cards {{_ 'copyChecklistToManyCardsPopup-title'}} + li + a.js-move-card + i.fa.fa-arrow-right + | {{_ 'moveCardPopup-title'}} + li + a.js-copy-card + i.fa.fa-copy + | {{_ 'copyCardPopup-title'}} + hr + ul.pop-over-list + li + a.js-copy-checklist-cards + i.fa.fa-list + i.fa.fa-copy + | {{_ 'copyChecklistToManyCardsPopup-title'}} unless archived - li: a.js-archive {{_ 'archive-card'}} - li: a.js-more {{_ 'cardMorePopup-title'}} + hr + ul.pop-over-list + li + a.js-archive + i.fa.fa-arrow-right + i.fa.fa-archive + | {{_ 'archive-card'}} + hr + ul.pop-over-list + li + a.js-more + i.fa.fa-link + | {{_ 'cardMorePopup-title'}} template(name="moveCardPopup") +boardsAndLists @@ -349,7 +416,7 @@ template(name="cardAssigneePopup") p.quiet @{{ user.username }} ul.pop-over-list if currentUser.isNotCommentOnly - li: a.js-remove-assignee {{_ 'remove-member-from-card'}} + li: a.js-remove-assignee {{_ 'remove-member-from-card'}} if $eq currentUser._id user._id with currentUser diff --git a/client/components/cards/checklists.jade b/client/components/cards/checklists.jade index 279d3671..391769e9 100644 --- a/client/components/cards/checklists.jade +++ b/client/components/cards/checklists.jade @@ -1,5 +1,7 @@ template(name="checklists") - h3 {{_ 'checklists'}} + h3 + i.fa.fa-check + | {{_ 'checklists'}} if toggleDeleteDialog.get .board-overlay#card-details-overlay +checklistDeleteDialog(checklist = checklistToDelete) diff --git a/client/components/cards/subtasks.jade b/client/components/cards/subtasks.jade index 7e64e23f..df35bed3 100644 --- a/client/components/cards/subtasks.jade +++ b/client/components/cards/subtasks.jade @@ -1,5 +1,7 @@ template(name="subtasks") - h3 {{_ 'subtasks'}} + h3 + i.fa.fa-sitemap + | {{_ 'subtasks'}} if toggleDeleteDialog.get .board-overlay#card-details-overlay +subtaskDeleteDialog(subtask = subtaskToDelete) -- cgit v1.2.3-1-g7c22 From f6f7705f23ea18d7f1b8f8736b762eb89e00a3cf Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sun, 5 Jan 2020 21:28:14 +0200 Subject: Add Worker role. This was originally added at Wekan v3.58, reverted at Wekan v3.60 because of bugs, and now after fixes added back. Thanks to xet7 ! Closes #2788 --- client/components/cards/attachments.jade | 26 ++-- client/components/cards/cardDate.js | 3 +- client/components/cards/cardDetails.jade | 216 +++++++++++++++++-------------- client/components/cards/cardDetails.js | 3 +- client/components/cards/checklists.js | 9 +- client/components/cards/subtasks.js | 9 +- 6 files changed, 152 insertions(+), 114 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/attachments.jade b/client/components/cards/attachments.jade index 2a96f4f4..10b767f4 100644 --- a/client/components/cards/attachments.jade +++ b/client/components/cards/attachments.jade @@ -38,18 +38,20 @@ template(name="attachmentsGalery") | {{_ 'download'}} if currentUser.isBoardMember unless currentUser.isCommentOnly - if isImage - a(class="{{#if $eq ../coverId _id}}js-remove-cover{{else}}js-add-cover{{/if}}") - i.fa.fa-thumb-tack - if($eq ../coverId _id) - | {{_ 'remove-cover'}} - else - | {{_ 'add-cover'}} - a.js-confirm-delete - i.fa.fa-close - | {{_ 'delete'}} + unless currentUser.isWorker + if isImage + a(class="{{#if $eq ../coverId _id}}js-remove-cover{{else}}js-add-cover{{/if}}") + i.fa.fa-thumb-tack + if($eq ../coverId _id) + | {{_ 'remove-cover'}} + else + | {{_ 'add-cover'}} + a.js-confirm-delete + i.fa.fa-close + | {{_ 'delete'}} if currentUser.isBoardMember unless currentUser.isCommentOnly - li.attachment-item.add-attachment - a.js-add-attachment {{_ 'add-attachment' }} + unless currentUser.isWorker + li.attachment-item.add-attachment + a.js-add-attachment {{_ 'add-attachment' }} diff --git a/client/components/cards/cardDate.js b/client/components/cards/cardDate.js index cb54b033..c4b5c6d8 100644 --- a/client/components/cards/cardDate.js +++ b/client/components/cards/cardDate.js @@ -97,7 +97,8 @@ Template.dateBadge.helpers({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() ); }, }); diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index d7c7ca59..de4e102a 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -44,7 +44,8 @@ template(name="cardDetails") +cardReceivedDate else if canModifyCard - a.js-received-date {{_ 'add'}} + unless currentUser.isWorker + a.js-received-date {{_ 'add'}} .card-details-item.card-details-item-start h3 @@ -54,7 +55,8 @@ template(name="cardDetails") +cardStartDate else if canModifyCard - a.js-start-date {{_ 'add'}} + unless currentUser.isWorker + a.js-start-date {{_ 'add'}} .card-details-item.card-details-item-due h3 @@ -64,7 +66,8 @@ template(name="cardDetails") +cardDueDate else if canModifyCard - a.js-due-date {{_ 'add'}} + unless currentUser.isWorker + a.js-due-date {{_ 'add'}} .card-details-item.card-details-item-end h3 @@ -74,7 +77,8 @@ template(name="cardDetails") +cardEndDate else if canModifyCard - a.js-end-date {{_ 'add'}} + unless currentUser.isWorker + a.js-end-date {{_ 'add'}} .card-details-items .card-details-item.card-details-item-members @@ -85,8 +89,9 @@ template(name="cardDetails") +userAvatar(userId=this cardId=../_id) | {{! XXX Hack to hide syntaxic coloration /// }} if canModifyCard - a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}") - i.fa.fa-plus + unless currentUser.isWorker + a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}") + i.fa.fa-plus .card-details-item.card-details-item-assignees h3 @@ -96,10 +101,14 @@ template(name="cardDetails") +userAvatarAssignee(userId=this cardId=../_id) | {{! XXX Hack to hide syntaxic coloration /// }} if canModifyCard + a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}") + i.fa.fa-plus + if currentUser.isWorker unless assigneeSelected a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}") i.fa.fa-plus + .card-details-item.card-details-item-labels h3 i.fa.fa-tags @@ -110,8 +119,9 @@ template(name="cardDetails") +viewer = name if canModifyCard - a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}") - i.fa.fa-plus + unless currentUser.isWorker + a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}") + i.fa.fa-plus .card-details-items each customFieldsWD @@ -132,28 +142,29 @@ template(name="cardDetails") //- XXX We should use "editable" to avoid repetiting ourselves if canModifyCard - h3 - i.fa.fa-align-left - card-details-item-title {{_ 'description'}} - +inlinedCardDescription(classNames="card-description js-card-description") - +editor(autofocus=true) - | {{getUnsavedValue 'cardDescription' _id getDescription}} - .edit-controls.clearfix - button.primary(type="submit") {{_ 'save'}} - a.fa.fa-times-thin.js-close-inlined-form - else - a.js-open-inlined-form - if getDescription - +viewer - = getDescription - else - | {{_ 'edit'}} - if (hasUnsavedValue 'cardDescription' _id) - p.quiet - | {{_ 'unsaved-description'}} - a.js-open-inlined-form {{_ 'view-it'}} - = ' - ' - a.js-close-inlined-form {{_ 'discard'}} + unless currentUser.isWorker + h3 + i.fa.fa-align-left + card-details-item-title {{_ 'description'}} + +inlinedCardDescription(classNames="card-description js-card-description") + +editor(autofocus=true) + | {{getUnsavedValue 'cardDescription' _id getDescription}} + .edit-controls.clearfix + button.primary(type="submit") {{_ 'save'}} + a.fa.fa-times-thin.js-close-inlined-form + else + a.js-open-inlined-form + if getDescription + +viewer + = getDescription + else + | {{_ 'edit'}} + if (hasUnsavedValue 'cardDescription' _id) + p.quiet + | {{_ 'unsaved-description'}} + a.js-open-inlined-form {{_ 'view-it'}} + = ' - ' + a.js-close-inlined-form {{_ 'discard'}} else if getDescription h3.card-details-item-title {{_ 'description'}} +viewer @@ -165,15 +176,16 @@ template(name="cardDetails") i.fa.fa-shopping-cart card-details-item-title {{_ 'requested-by'}} if canModifyCard - +inlinedForm(classNames="js-card-details-requester") - +editCardRequesterForm - else - a.js-open-inlined-form - if getRequestedBy - +viewer - = getRequestedBy - else - | {{_ 'add'}} + unless currentUser.isWorker + +inlinedForm(classNames="js-card-details-requester") + +editCardRequesterForm + else + a.js-open-inlined-form + if getRequestedBy + +viewer + = getRequestedBy + else + | {{_ 'add'}} else if getRequestedBy +viewer = getRequestedBy @@ -183,15 +195,16 @@ template(name="cardDetails") i.fa.fa-user-plus card-details-item-title {{_ 'assigned-by'}} if canModifyCard - +inlinedForm(classNames="js-card-details-assigner") - +editCardAssignerForm - else - a.js-open-inlined-form - if getAssignedBy - +viewer - = getAssignedBy - else - | {{_ 'add'}} + unless currentUser.isWorker + +inlinedForm(classNames="js-card-details-assigner") + +editCardAssignerForm + else + a.js-open-inlined-form + if getAssignedBy + +viewer + = getAssignedBy + else + | {{_ 'add'}} else if getRequestedBy +viewer = getAssignedBy @@ -266,28 +279,29 @@ template(name="cardDetailsActionsPopup") i.fa.fa-eye-slash | {{_ 'watch'}} if canModifyCard - hr - ul.pop-over-list - //li: a.js-members {{_ 'card-edit-members'}} - //li: a.js-labels {{_ 'card-edit-labels'}} - //li: a.js-attachments {{_ 'card-edit-attachments'}} - li - a.js-custom-fields - i.fa.fa-list-alt - | {{_ 'card-edit-custom-fields'}} - //li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}} - //li: a.js-start-date {{_ 'editCardStartDatePopup-title'}} - //li: a.js-due-date {{_ 'editCardDueDatePopup-title'}} - //li: a.js-end-date {{_ 'editCardEndDatePopup-title'}} - li - a.js-spent-time - i.fa.fa-clock-o - | {{_ 'editCardSpentTimePopup-title'}} - li - a.js-set-card-color - i.fa.fa-paint-brush - | {{_ 'setCardColorPopup-title'}} - hr + unless currentUser.isWorker + hr + ul.pop-over-list + //li: a.js-members {{_ 'card-edit-members'}} + //li: a.js-labels {{_ 'card-edit-labels'}} + //li: a.js-attachments {{_ 'card-edit-attachments'}} + li + a.js-custom-fields + i.fa.fa-list-alt + | {{_ 'card-edit-custom-fields'}} + //li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}} + //li: a.js-start-date {{_ 'editCardStartDatePopup-title'}} + //li: a.js-due-date {{_ 'editCardDueDatePopup-title'}} + //li: a.js-end-date {{_ 'editCardEndDatePopup-title'}} + li + a.js-spent-time + i.fa.fa-clock-o + | {{_ 'editCardSpentTimePopup-title'}} + li + a.js-set-card-color + i.fa.fa-paint-brush + | {{_ 'setCardColorPopup-title'}} + hr ul.pop-over-list li a.js-move-card-to-top @@ -297,16 +311,17 @@ template(name="cardDetailsActionsPopup") a.js-move-card-to-bottom i.fa.fa-arrow-down | {{_ 'moveCardToBottom-title'}} - hr - ul.pop-over-list - li - a.js-move-card - i.fa.fa-arrow-right - | {{_ 'moveCardPopup-title'}} - li - a.js-copy-card - i.fa.fa-copy - | {{_ 'copyCardPopup-title'}} + unless currentUser.isWorker + hr + ul.pop-over-list + li + a.js-move-card + i.fa.fa-arrow-right + | {{_ 'moveCardPopup-title'}} + li + a.js-copy-card + i.fa.fa-copy + | {{_ 'copyCardPopup-title'}} hr ul.pop-over-list li @@ -379,16 +394,27 @@ template(name="cardMembersPopup") i.fa.fa-check template(name="cardAssigneesPopup") - ul.pop-over-list.js-card-assignee-list - each board.activeMembers - li.item(class="{{#if isCardAssignee}}active{{/if}}") - a.name.js-select-assignee(href="#") - +userAvatar(userId=user._id) - span.full-name - = user.profile.fullname - | ({{ user.username }}) - if isCardAssignee - i.fa.fa-check + unless currentUser.isWorker + ul.pop-over-list.js-card-assignee-list + each board.activeMembers + li.item(class="{{#if isCardAssignee}}active{{/if}}") + a.name.js-select-assignee(href="#") + +userAvatar(userId=user._id) + span.full-name + = user.profile.fullname + | ({{ user.username }}) + if isCardAssignee + i.fa.fa-check + if currentUser.isWorker + ul.pop-over-list.js-card-assignee-list + li.item(class="{{#if currentUser.isCardAssignee}}active{{/if}}") + a.name.js-select-assignee(href="#") + +userAvatar(userId=currentUser._id) + span.full-name + = currentUser.profile.fullname + | ({{ currentUser.username }}) + if currentUser.isCardAssignee + i.fa.fa-check template(name="userAvatarAssignee") a.assignee.js-assignee(title="{{userData.profile.fullname}} ({{userData.username}})") @@ -416,11 +442,13 @@ template(name="cardAssigneePopup") p.quiet @{{ user.username }} ul.pop-over-list if currentUser.isNotCommentOnly - li: a.js-remove-assignee {{_ 'remove-member-from-card'}} + unless currentUser.isWorker + li: a.js-remove-assignee {{_ 'remove-member-from-card'}} - if $eq currentUser._id user._id - with currentUser - li: a.js-edit-profile {{_ 'edit-profile'}} + unless currentUser.isWorker + if $eq currentUser._id user._id + with currentUser + li: a.js-edit-profile {{_ 'edit-profile'}} template(name="userAvatarAssigneeInitials") svg.avatar.avatar-assignee-initials(viewBox="0 0 {{viewPortWidth}} 15") diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 67120043..07dcac44 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -51,7 +51,8 @@ BlazeComponent.extendComponent({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() ); }, diff --git a/client/components/cards/checklists.js b/client/components/cards/checklists.js index 57939eb8..27d1b1c9 100644 --- a/client/components/cards/checklists.js +++ b/client/components/cards/checklists.js @@ -67,7 +67,8 @@ BlazeComponent.extendComponent({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() ); }, }).register('checklistDetail'); @@ -120,7 +121,8 @@ BlazeComponent.extendComponent({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() ); }, @@ -228,7 +230,8 @@ Template.checklistItemDetail.helpers({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() ); }, }); diff --git a/client/components/cards/subtasks.js b/client/components/cards/subtasks.js index fab860bb..34348fe1 100644 --- a/client/components/cards/subtasks.js +++ b/client/components/cards/subtasks.js @@ -3,7 +3,8 @@ BlazeComponent.extendComponent({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() ); }, }).register('subtaskDetail'); @@ -55,7 +56,8 @@ BlazeComponent.extendComponent({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() ); }, @@ -154,7 +156,8 @@ Template.subtaskItemDetail.helpers({ return ( Meteor.user() && Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() + !Meteor.user().isCommentOnly() && + !Meteor.user().isWorker() ); }, }); -- cgit v1.2.3-1-g7c22 From 0b00a8095ce34c753e5edac86d4b62e8aaa1b1e0 Mon Sep 17 00:00:00 2001 From: dollybean Date: Tue, 4 Feb 2020 02:28:45 -0800 Subject: Customize of some card's functions --- client/components/cards/cardDetails.jade | 243 ++++++++++++++++--------------- client/components/cards/cardDetails.js | 87 +++++++++++ 2 files changed, 216 insertions(+), 114 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index de4e102a..aec95486 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -8,10 +8,13 @@ template(name="cardDetails") a.fa.fa-times-thin.close-card-details.js-close-card-details if currentUser.isBoardMember a.fa.fa-navicon.card-details-menu.js-open-card-details-menu + input.inline-input(type="text" id="cardURL_copy" value="{{ absoluteUrl }}" autofocus="autofocus") + a.fa.fa-link.card-copy-button.js-copy-link if isMiniScreen a.fa.fa-times-thin.close-card-details-mobile-web.js-close-card-details if currentUser.isBoardMember a.fa.fa-navicon.card-details-menu-mobile-web.js-open-card-details-menu + a.fa.fa-link.card-copy-mobile-button h2.card-details-title.js-card-title( class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}") +viewer @@ -36,49 +39,41 @@ template(name="cardDetails") p.warning {{_ 'card-archived'}} .card-details-items - .card-details-item.card-details-item-received - h3 - i.fa.fa-sign-out - card-details-item-title {{_ 'card-received'}} - if getReceived - +cardReceivedDate - else - if canModifyCard - unless currentUser.isWorker - a.js-received-date {{_ 'add'}} - - .card-details-item.card-details-item-start - h3 - i.fa.fa-hourglass-start - card-details-item-title {{_ 'card-start'}} - if getStart - +cardStartDate - else - if canModifyCard - unless currentUser.isWorker - a.js-start-date {{_ 'add'}} - - .card-details-item.card-details-item-due - h3 - i.fa.fa-sign-in - card-details-item-title {{_ 'card-due'}} - if getDue - +cardDueDate - else - if canModifyCard - unless currentUser.isWorker - a.js-due-date {{_ 'add'}} - - .card-details-item.card-details-item-end - h3 - i.fa.fa-hourglass-end - card-details-item-title {{_ 'card-end'}} - if getEnd - +cardEndDate - else - if canModifyCard - unless currentUser.isWorker - a.js-end-date {{_ 'add'}} + if currentBoard.allowsReceivedDate + .card-details-item.card-details-item-received + h3 + i.fa.fa-sign-out + card-details-item-title {{_ 'card-received'}} + if getReceived + +cardReceivedDate + else + if canModifyCard + unless currentUser.isWorker + a.js-received-date {{_ 'add'}} + + if currentBoard.allowsStartDate + .card-details-item.card-details-item-start + h3 + i.fa.fa-hourglass-start + card-details-item-title {{_ 'card-start'}} + if getStart + +cardStartDate + else + if canModifyCard + unless currentUser.isWorker + a.js-start-date {{_ 'add'}} + + if currentBoard.allowsEndDate + .card-details-item.card-details-item-end + h3 + i.fa.fa-hourglass-end + card-details-item-title {{_ 'card-end'}} + if getEnd + +cardEndDate + else + if canModifyCard + unless currentUser.isWorker + a.js-end-date {{_ 'add'}} .card-details-items .card-details-item.card-details-item-members @@ -92,22 +87,34 @@ template(name="cardDetails") unless currentUser.isWorker a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}") i.fa.fa-plus - - .card-details-item.card-details-item-assignees - h3 - i.fa.fa-user - card-details-item-title {{_ 'assignee'}} - each getAssignees - +userAvatarAssignee(userId=this cardId=../_id) - | {{! XXX Hack to hide syntaxic coloration /// }} - if canModifyCard - a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}") - i.fa.fa-plus - if currentUser.isWorker - unless assigneeSelected + if currentBoard.allowsDueDate + .card-details-item.card-details-item-due + h3 + i.fa.fa-sign-in + card-details-item-title {{_ 'card-due'}} + if getDue + +cardDueDate + else + if canModifyCard + unless currentUser.isWorker + a.card-label.add-label.js-due-date + i.fa.fa-plus + + if assigngeeSelected + .card-details-item.card-details-item-assignees + h3 + i.fa.fa-user + card-details-item-title {{_ 'assignee'}} + each getAssignees + +userAvatarAssignee(userId=this cardId=../_id) + | {{! XXX Hack to hide syntaxic coloration /// }} + if canModifyCard a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}") i.fa.fa-plus - + if currentUser.isWorker + unless assigneeSelected + a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}") + i.fa.fa-plus .card-details-item.card-details-item-labels h3 @@ -143,9 +150,9 @@ template(name="cardDetails") //- XXX We should use "editable" to avoid repetiting ourselves if canModifyCard unless currentUser.isWorker - h3 - i.fa.fa-align-left - card-details-item-title {{_ 'description'}} + //h3 + //- i.fa.fa-align-left + //- card-details-item-title {{_ 'description'}} +inlinedCardDescription(classNames="card-description js-card-description") +editor(autofocus=true) | {{getUnsavedValue 'cardDescription' _id getDescription}} @@ -153,16 +160,16 @@ template(name="cardDetails") button.primary(type="submit") {{_ 'save'}} a.fa.fa-times-thin.js-close-inlined-form else - a.js-open-inlined-form + a.description-item.add-description.js-open-inlined-form if getDescription +viewer = getDescription else - | {{_ 'edit'}} + | {{_ 'addmore-detail'}} if (hasUnsavedValue 'cardDescription' _id) p.quiet | {{_ 'unsaved-description'}} - a.js-open-inlined-form {{_ 'view-it'}} + a.description-item.add-description.js-open-inlined-form {{_ 'view-it'}} = ' - ' a.js-close-inlined-form {{_ 'discard'}} else if getDescription @@ -171,57 +178,59 @@ template(name="cardDetails") = getDescription .card-details-items - .card-details-item.card-details-item-name - h3 - i.fa.fa-shopping-cart - card-details-item-title {{_ 'requested-by'}} - if canModifyCard - unless currentUser.isWorker - +inlinedForm(classNames="js-card-details-requester") - +editCardRequesterForm - else - a.js-open-inlined-form - if getRequestedBy - +viewer - = getRequestedBy - else - | {{_ 'add'}} - else if getRequestedBy - +viewer - = getRequestedBy - - .card-details-item.card-details-item-name - h3 - i.fa.fa-user-plus - card-details-item-title {{_ 'assigned-by'}} - if canModifyCard - unless currentUser.isWorker - +inlinedForm(classNames="js-card-details-assigner") - +editCardAssignerForm - else - a.js-open-inlined-form - if getAssignedBy - +viewer - = getAssignedBy - else - | {{_ 'add'}} - else if getRequestedBy - +viewer - = getAssignedBy - - hr - +checklists(cardId = _id) - - if currentBoard.allowsSubtasks - hr - +subtasks(cardId = _id) - - hr - h3 - i.fa.fa-paperclip - | {{_ 'attachments'}} + if requestBySelected + .card-details-item.card-details-item-name + h3 + i.fa.fa-shopping-cart + card-details-item-title {{_ 'requested-by'}} + if canModifyCard + unless currentUser.isWorker + +inlinedForm(classNames="js-card-details-requester") + +editCardRequesterForm + else + a.js-open-inlined-form + if getRequestedBy + +viewer + = getRequestedBy + else + | {{_ 'add'}} + else if getRequestedBy + +viewer + = getRequestedBy - +attachmentsGalery + if assigneeBySelected + .card-details-item.card-details-item-name + h3 + i.fa.fa-user-plus + card-details-item-title {{_ 'assigned-by'}} + if canModifyCard + unless currentUser.isWorker + +inlinedForm(classNames="js-card-details-assigner") + +editCardAssignerForm + else + a.js-open-inlined-form + if getAssignedBy + +viewer + = getAssignedBy + else + | {{_ 'add'}} + else if getRequestedBy + +viewer + = getAssignedBy + + .card-checklist-attachmentGalerys + .card-checklist-attachmentGalery.card-checklists + +checklists(cardId = _id) + if currentBoard.allowsSubtasks + hr + +subtasks(cardId = _id) + + //- hr + //- h3 + //- i.fa.fa-paperclip + //- | {{_ 'attachments'}} + .card-checklist-attachmentGalery.card-attachmentGalery + +attachmentsGalery hr unless currentUser.isNoComments @@ -239,7 +248,13 @@ template(name="cardDetails") label.toggle-label(for="toggleButton") if currentUser.isBoardMember unless currentUser.isNoComments - +commentForm + if canModifyCard + +inlinedForm(autoclose=false classNames="js-new-comment-form") + +commentForm + else + +userAvatar(userId=currentUser._id) + a.comment-item.add-comment.js-open-inlined-form + | {{_ 'Write Comment'}} unless currentUser.isNoComments if isLoaded.get if isLinkedCard diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 07dcac44..231cbb10 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -279,6 +279,29 @@ BlazeComponent.extendComponent({ 'click .js-close-card-details'() { Utils.goBoardId(this.data().boardId); }, + 'click .js-copy-link'() { + StringToCopyElement = document.getElementById('cardURL_copy'); + StringToCopyElement.select(); + if (document.execCommand('copy')) { + StringToCopyElement.blur(); + } else { + document.getElementById('cardURL_copy').selectionStart = 0; + document.getElementById('cardURL_copy').selectionEnd = 999; + document.execCommand('copy'); + if (window.getSelection) { + if (window.getSelection().empty) { + // Chrome + window.getSelection().empty(); + } else if (window.getSelection().removeAllRanges) { + // Firefox + window.getSelection().removeAllRanges(); + } + } else if (document.selection) { + // IE? + document.selection.empty(); + } + } + }, 'click .js-open-card-details-menu': Popup.open('cardDetailsActions'), 'submit .js-card-description'(event) { event.preventDefault(); @@ -371,6 +394,54 @@ Template.cardDetails.helpers({ }); }, + receivedSelected() { + if (this.getReceived().length === 0) { + return false; + } else { + return true; + } + }, + + startSelected() { + if (this.getstart().length === 0) { + return false; + } else { + return true; + } + }, + + endSelected() { + if (this.getEnd().length === 0) { + return false; + } else { + return true; + } + }, + + dueSelected() { + if (this.getDue().length === 0) { + return false; + } else { + return true; + } + }, + + memberSelected() { + if (this.getMembers().length === 0) { + return false; + } else { + return true; + } + }, + + labelSelected() { + if (this.getLabels().length === 0) { + return false; + } else { + return true; + } + }, + assigneeSelected() { if (this.getAssignees().length === 0) { return false; @@ -379,6 +450,22 @@ Template.cardDetails.helpers({ } }, + requestBySelected() { + if (this.getRequestBy().length === 0) { + return false; + } else { + return true; + } + }, + + assigneeBySelected() { + if (this.getAssigneeBy().length === 0) { + return false; + } else { + return true; + } + }, + memberType() { const user = Users.findOne(this.userId); return user && user.isBoardAdmin() ? 'admin' : 'normal'; -- cgit v1.2.3-1-g7c22 From f22785dbcde42e425c9ead209ec224aef6e11c16 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 5 Feb 2020 19:47:08 +0200 Subject: - Fix adding comments. - Added some working layout changes from https://github.com/wekan/wekan/pull/2920. - Fixed Card Settings not working at Sandstorm. Thanks to 2020product xet7 ! Closes #2918, closes https://github.com/wekan/wekan/pull/2920 --- client/components/cards/cardDetails.jade | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index 41ab8ca2..7a6ca7cf 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -9,7 +9,10 @@ template(name="cardDetails") if currentUser.isBoardMember a.fa.fa-navicon.card-details-menu.js-open-card-details-menu input.inline-input(type="hidden" id="cardURL_copy" value="{{ absoluteUrl }}") - a.fa.fa-link.card-copy-button.js-copy-link + a.fa.card-copy-button.js-copy-link( + class="fa-link" + title="{{_ 'copy-card-link-to-clipboard'}}" + ) if isMiniScreen a.fa.fa-times-thin.close-card-details-mobile-web.js-close-card-details if currentUser.isBoardMember @@ -157,9 +160,9 @@ template(name="cardDetails") //- XXX We should use "editable" to avoid repetiting ourselves if canModifyCard unless currentUser.isWorker - //h3 - // i.fa.fa-align-left - // card-details-item-title {{_ 'description'}} + h3 + i.fa.fa-align-left + card-details-item-title {{_ 'description'}} +inlinedCardDescription(classNames="card-description js-card-description") +editor(autofocus=true) | {{getUnsavedValue 'cardDescription' _id getDescription}} @@ -167,16 +170,16 @@ template(name="cardDetails") button.primary(type="submit") {{_ 'save'}} a.fa.fa-times-thin.js-close-inlined-form else - a.description-item.add-description.js-open-inlined-form + a.js-open-inlined-form if getDescription +viewer = getDescription else - | {{_ 'addmore-detail'}} + | {{_ 'edit'}} if (hasUnsavedValue 'cardDescription' _id) p.quiet | {{_ 'unsaved-description'}} - a.description-item.add-description.js-open-inlined-form {{_ 'view-it'}} + a.js-open-inlined-form {{_ 'view-it'}} = ' - ' a.js-close-inlined-form {{_ 'discard'}} else if getDescription @@ -257,13 +260,7 @@ template(name="cardDetails") if currentBoard.allowsComments if currentUser.isBoardMember unless currentUser.isNoComments - if canModifyCard - +inlinedForm(autoclose=false classNames="js-new-comment-form") - +commentForm - else - +userAvatar(userId=currentUser._id) - a.comment-item.add-comment.js-open-inlined-form - | {{_ 'Write Comment'}} + +commentForm unless currentUser.isNoComments if isLoaded.get if isLinkedCard -- cgit v1.2.3-1-g7c22 From bf78b093bad7d463ee325ad96e8b485264d4a3be Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 7 Feb 2020 03:16:16 +0200 Subject: Try to disable dragging Swimlanes/Lists/Cards/Checklists/Subtasks on small mobile smartphones webbrowsers, and hide drag handles on mobile web. Thanks to xet7 ! --- client/components/cards/cardDetails.js | 6 ++++++ client/components/cards/checklists.js | 3 +++ client/components/cards/minicard.jade | 4 ++-- 3 files changed, 11 insertions(+), 2 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 92edec38..5fdc5579 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -253,6 +253,12 @@ BlazeComponent.extendComponent({ if ($subtasksDom.data('sortable')) { $subtasksDom.sortable('option', 'disabled', !userIsMember()); } + if ($checklistsDom.data('sortable')) { + $checklistsDom.sortable('option', 'disabled', Utils.isMiniScreen()); + } + if ($subtasksDom.data('sortable')) { + $subtasksDom.sortable('option', 'disabled', Utils.isMiniScreen()); + } }); }, diff --git a/client/components/cards/checklists.js b/client/components/cards/checklists.js index 27d1b1c9..c88fdd82 100644 --- a/client/components/cards/checklists.js +++ b/client/components/cards/checklists.js @@ -60,6 +60,9 @@ BlazeComponent.extendComponent({ if ($itemsDom.data('sortable')) { $(self.itemsDom).sortable('option', 'disabled', !userIsMember()); } + if ($itemsDom.data('sortable')) { + $(self.itemsDom).sortable('option', 'disabled', Utils.isMiniScreen()); + } }); }, diff --git a/client/components/cards/minicard.jade b/client/components/cards/minicard.jade index 7dd220ee..a895c0a3 100644 --- a/client/components/cards/minicard.jade +++ b/client/components/cards/minicard.jade @@ -4,8 +4,8 @@ template(name="minicard") class="{{#if isLinkedBoard}}linked-board{{/if}}" class="minicard-{{colorClass}}") if isMiniScreen - .handle - .fa.fa-arrows + //.handle + // .fa.fa-arrows unless isMiniScreen if showDesktopDragHandles .handle -- cgit v1.2.3-1-g7c22 From 2fce02afbced07c6ff2b05786f159701c8b559e9 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 7 Feb 2020 13:58:43 +0200 Subject: Add Feature: Card Settings/Show on card/Activities. Fix: When in Card Settings hiding Comments, only adding new comment is hidden, not old comments. Thanks to xet7 ! Closes #2925 --- client/components/cards/cardDetails.jade | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index 7a6ca7cf..cb1f375e 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -261,14 +261,15 @@ template(name="cardDetails") if currentUser.isBoardMember unless currentUser.isNoComments +commentForm - unless currentUser.isNoComments - if isLoaded.get - if isLinkedCard - +activities(card=this mode="linkedcard") - else if isLinkedBoard - +activities(card=this mode="linkedboard") - else - +activities(card=this mode="card") + if currentBoard.allowsActivities + unless currentUser.isNoComments + if isLoaded.get + if isLinkedCard + +activities(card=this mode="linkedcard") + else if isLinkedBoard + +activities(card=this mode="linkedboard") + else + +activities(card=this mode="card") template(name="editCardTitleForm") textarea.js-edit-card-title(rows='1' autofocus dir="auto") -- cgit v1.2.3-1-g7c22 From 2a54218f3f68547032bd53a04a968b233be21e15 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 10 Feb 2020 17:25:27 +0200 Subject: Remove hiding comments and activities. --- client/components/cards/cardDetails.jade | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index cb1f375e..7a6ca7cf 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -261,15 +261,14 @@ template(name="cardDetails") if currentUser.isBoardMember unless currentUser.isNoComments +commentForm - if currentBoard.allowsActivities - unless currentUser.isNoComments - if isLoaded.get - if isLinkedCard - +activities(card=this mode="linkedcard") - else if isLinkedBoard - +activities(card=this mode="linkedboard") - else - +activities(card=this mode="card") + unless currentUser.isNoComments + if isLoaded.get + if isLinkedCard + +activities(card=this mode="linkedcard") + else if isLinkedBoard + +activities(card=this mode="linkedboard") + else + +activities(card=this mode="card") template(name="editCardTitleForm") textarea.js-edit-card-title(rows='1' autofocus dir="auto") -- cgit v1.2.3-1-g7c22 From 9a21b0a1c933e7f778e4e57a8258e150ccea1620 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 10 Feb 2020 18:47:03 +0200 Subject: Fix Copy Card Link to Clipboard button at card title did not work. Thanks to 2020product and xet7 ! Related https://github.com/wekan/wekan/pull/2922 --- client/components/cards/cardDetails.jade | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'client/components/cards') diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index 7a6ca7cf..e238823f 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -9,9 +9,10 @@ template(name="cardDetails") if currentUser.isBoardMember a.fa.fa-navicon.card-details-menu.js-open-card-details-menu input.inline-input(type="hidden" id="cardURL_copy" value="{{ absoluteUrl }}") - a.fa.card-copy-button.js-copy-link( + a.fa.fa-link.card-copy-button.js-copy-link( class="fa-link" title="{{_ 'copy-card-link-to-clipboard'}}" + value="{{ absoluteUrl }}" ) if isMiniScreen a.fa.fa-times-thin.close-card-details-mobile-web.js-close-card-details -- cgit v1.2.3-1-g7c22 From 4467a68b97a3fbf0fbae7f05177d978f2aa80287 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 10 Feb 2020 19:37:25 +0200 Subject: Part 2: Fix Copy Card Link to Clipboard button at card title did not work. Thanks to 2020product and xet7 ! Related https://github.com/wekan/wekan/pull/2922 --- client/components/cards/cardDetails.jade | 2 +- client/components/cards/cardDetails.styl | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'client/components/cards') diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index e238823f..e8bb72a4 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -8,7 +8,7 @@ template(name="cardDetails") a.fa.fa-times-thin.close-card-details.js-close-card-details if currentUser.isBoardMember a.fa.fa-navicon.card-details-menu.js-open-card-details-menu - input.inline-input(type="hidden" id="cardURL_copy" value="{{ absoluteUrl }}") + input.inline-input(type="text" id="cardURL_copy" value="{{ absoluteUrl }}") a.fa.fa-link.card-copy-button.js-copy-link( class="fa-link" title="{{_ 'copy-card-link-to-clipboard'}}" diff --git a/client/components/cards/cardDetails.styl b/client/components/cards/cardDetails.styl index fd6122eb..80fa87c0 100644 --- a/client/components/cards/cardDetails.styl +++ b/client/components/cards/cardDetails.styl @@ -4,6 +4,12 @@ avatar-radius = 50% +#cardURL_copy + // Have clipboard text not visible by moving it to far left + position: absolute + left: -2000px + top: 0px + .assignee border-radius: 3px display: block -- cgit v1.2.3-1-g7c22 From e89965f6422fd95b4ad2112ae407b1dde4853510 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 12 Feb 2020 02:08:29 +0200 Subject: Remove card element grouping to create compact card layout. Card Settings / Show on Card: Description Title and Description Text. Thanks to e-stoniauk, 2020product and xet7 ! Fixes https://github.com/wekan/wekan/pull/2922 --- client/components/cards/attachments.jade | 6 ++- client/components/cards/cardDetails.jade | 73 +++++++++++++++++--------------- 2 files changed, 43 insertions(+), 36 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/attachments.jade b/client/components/cards/attachments.jade index 10b767f4..b695ea41 100644 --- a/client/components/cards/attachments.jade +++ b/client/components/cards/attachments.jade @@ -53,5 +53,7 @@ template(name="attachmentsGalery") if currentUser.isBoardMember unless currentUser.isCommentOnly unless currentUser.isWorker - li.attachment-item.add-attachment - a.js-add-attachment {{_ 'add-attachment' }} + //li.attachment-item.add-attachment + a.js-add-attachment + i.fa.fa-paperclip + | {{_ 'add-attachment' }} diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index e8bb72a4..615ae1d5 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -95,7 +95,7 @@ template(name="cardDetails") a.card-label.add-label.js-end-date i.fa.fa-plus - .card-details-items + //.card-details-items if currentBoard.allowsMembers .card-details-item.card-details-item-members h3 @@ -141,7 +141,7 @@ template(name="cardDetails") a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}") i.fa.fa-plus - .card-details-items + //.card-details-items each customFieldsWD .card-details-item.card-details-item-customfield h3.card-details-item-title @@ -149,7 +149,7 @@ template(name="cardDetails") = definition.name +cardCustomField - .card-details-items + //.card-details-items if getSpentTime .card-details-item.card-details-item-spent if getIsOvertime @@ -158,37 +158,7 @@ template(name="cardDetails") h3.card-details-item-title {{_ 'spent-time-hours'}} +cardSpentTime - //- XXX We should use "editable" to avoid repetiting ourselves - if canModifyCard - unless currentUser.isWorker - h3 - i.fa.fa-align-left - card-details-item-title {{_ 'description'}} - +inlinedCardDescription(classNames="card-description js-card-description") - +editor(autofocus=true) - | {{getUnsavedValue 'cardDescription' _id getDescription}} - .edit-controls.clearfix - button.primary(type="submit") {{_ 'save'}} - a.fa.fa-times-thin.js-close-inlined-form - else - a.js-open-inlined-form - if getDescription - +viewer - = getDescription - else - | {{_ 'edit'}} - if (hasUnsavedValue 'cardDescription' _id) - p.quiet - | {{_ 'unsaved-description'}} - a.js-open-inlined-form {{_ 'view-it'}} - = ' - ' - a.js-close-inlined-form {{_ 'discard'}} - else if getDescription - h3.card-details-item-title {{_ 'description'}} - +viewer - = getDescription - - .card-details-items + //.card-details-items if currentBoard.allowsRequestedBy .card-details-item.card-details-item-name h3 @@ -229,6 +199,41 @@ template(name="cardDetails") +viewer = getAssignedBy + //- XXX We should use "editable" to avoid repetiting ourselves + if canModifyCard + unless currentUser.isWorker + if currentBoard.allowsDescriptionTitle + h3 + i.fa.fa-align-left + card-details-item-title {{_ 'description'}} + if currentBoard.allowsDescriptionText + +inlinedCardDescription(classNames="card-description js-card-description") + +editor(autofocus=true) + | {{getUnsavedValue 'cardDescription' _id getDescription}} + .edit-controls.clearfix + button.primary(type="submit") {{_ 'save'}} + a.fa.fa-times-thin.js-close-inlined-form + else + if currentBoard.allowsDescriptionText + a.js-open-inlined-form + if getDescription + +viewer + = getDescription + else + | {{_ 'edit'}} + if (hasUnsavedValue 'cardDescription' _id) + p.quiet + | {{_ 'unsaved-description'}} + a.js-open-inlined-form {{_ 'view-it'}} + = ' - ' + a.js-close-inlined-form {{_ 'discard'}} + else if getDescription + if currentBoard.allowsDescriptionTitle + h3.card-details-item-title {{_ 'description'}} + if currentBoard.allowsDescriptionText + +viewer + = getDescription + .card-checklist-attachmentGalerys .card-checklist-attachmentGalery.card-checklists if currentBoard.allowsChecklists -- cgit v1.2.3-1-g7c22