diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index 2ca032efe..734fc7e37 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -92,6 +92,10 @@ template(name="cardDetailsActionsPopup") li: a.js-labels {{_ 'card-edit-labels'}} li: a.js-attachments {{_ 'card-edit-attachments'}} 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'}} unless archived diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 08a465bdb..299bbf34b 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -144,6 +144,16 @@ Template.cardDetailsActionsPopup.events({ 'click .js-labels': Popup.open('cardLabels'), 'click .js-attachments': Popup.open('cardAttachments'), 'click .js-move-card': Popup.open('moveCard'), + 'click .js-move-card-to-top'(evt) { + evt.preventDefault(); + const minOrder = _.min(this.list().cards().map((c) => c.sort)); + this.move(this.listId, minOrder / 2); + }, + 'click .js-move-card-to-bottom'(evt) { + evt.preventDefault(); + const maxOrder = _.max(this.list().cards().map((c) => c.sort)); + this.move(this.listId, Math.floor(maxOrder) + 1); + }, 'click .js-archive'(evt) { evt.preventDefault(); this.archive(); diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 0cfeeed29..f495c148b 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -215,6 +215,8 @@ "menu": "Menu", "move-selection": "Move selection", "moveCardPopup-title": "Move Card", + "moveCardToBottom-title": "Move to Bottom", + "moveCardToTop-title": "Move to Top", "moveSelectionPopup-title": "Move selection", "multi-selection": "Multi-Selection", "multi-selection-on": "Multi-Selection is on",