From 1e72177991e3fe11a1837e3e294e4de5d728aa30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Manelli?= Date: Sat, 23 Feb 2019 12:14:37 +0100 Subject: Avoid links on a template-board Allow creation of template boards with a linked card Avoid changing the name of the template-container swimlanes --- client/components/lists/listBody.jade | 15 +++++----- client/components/lists/listBody.js | 38 ++++++++++++++++++------- client/components/swimlanes/swimlaneHeader.jade | 24 ++++++++++------ client/components/swimlanes/swimlanes.js | 2 +- 4 files changed, 52 insertions(+), 27 deletions(-) (limited to 'client/components') diff --git a/client/components/lists/listBody.jade b/client/components/lists/listBody.jade index 10d39d15..bc1469a9 100644 --- a/client/components/lists/listBody.jade +++ b/client/components/lists/listBody.jade @@ -46,13 +46,14 @@ template(name="addCardForm") button.primary.confirm(type="submit") {{_ 'add'}} unless isSandstorm unless currentBoard.isTemplatesBoard - span.quiet - | {{_ 'or'}} - a.js-link {{_ 'link'}} - span.quiet - |   - | / - a.js-search {{_ 'search'}} + unless currentBoard.isTemplateBoard + span.quiet + | {{_ 'or'}} + a.js-link {{_ 'link'}} + span.quiet + |   + | / + a.js-search {{_ 'search'}} template(name="autocompleteLabelLine") .minicard-label(class="card-label-{{colorName}}" title=labelName) diff --git a/client/components/lists/listBody.js b/client/components/lists/listBody.js index 576bcd9f..eccef552 100644 --- a/client/components/lists/listBody.js +++ b/client/components/lists/listBody.js @@ -67,29 +67,47 @@ BlazeComponent.extendComponent({ const labelIds = formComponent.labels.get(); const customFields = formComponent.customFields.get(); - const boardId = this.data().board(); + const board = this.data().board(); + let linkedId = ''; let swimlaneId = ''; const boardView = Meteor.user().profile.boardView; let cardType = 'cardType-card'; - if (this.data().board().isTemplatesBoard()) { - swimlaneId = this.parentComponent().parentComponent().data()._id; // Always swimlanes view - cardType = (Swimlanes.findOne(swimlaneId).isCardTemplatesSwimlane())?'template-card':'cardType-card'; - } else if (boardView === 'board-view-swimlanes') - swimlaneId = this.parentComponent().parentComponent().data()._id; - else if ((boardView === 'board-view-lists') || (boardView === 'board-view-cal')) - swimlaneId = boardId.getDefaultSwimline()._id; - if (title) { + if (board.isTemplatesBoard()) { + swimlaneId = this.parentComponent().parentComponent().data()._id; // Always swimlanes view + const swimlane = Swimlanes.findOne(swimlaneId); + // If this is the card templates swimlane, insert a card template + if (swimlane.isCardTemplatesSwimlane()) + cardType = 'template-card'; + // If this is the board templates swimlane, insert a board template and a linked card + else if (swimlane.isBoardTemplatesSwimlane()) { + linkedId = Boards.insert({ + title, + permission: 'private', + type: 'template-board', + }); + Swimlanes.insert({ + title: TAPi18n.__('default'), + boardId: linkedId, + }); + cardType = 'cardType-linkedBoard'; + } + } else if (boardView === 'board-view-swimlanes') + swimlaneId = this.parentComponent().parentComponent().data()._id; + else if ((boardView === 'board-view-lists') || (boardView === 'board-view-cal')) + swimlaneId = board.getDefaultSwimline()._id; + const _id = Cards.insert({ title, members, labelIds, customFields, listId: this.data()._id, - boardId: boardId._id, + boardId: board._id, sort: sortIndex, swimlaneId, type: cardType, + linkedId, }); // if the displayed card count is less than the total cards in the list, diff --git a/client/components/swimlanes/swimlaneHeader.jade b/client/components/swimlanes/swimlaneHeader.jade index ac4a0327..810dd57f 100644 --- a/client/components/swimlanes/swimlaneHeader.jade +++ b/client/components/swimlanes/swimlaneHeader.jade @@ -1,15 +1,21 @@ template(name="swimlaneHeader") .swimlane-header-wrap.js-swimlane-header(class='{{#if colorClass}}swimlane-{{colorClass}}{{/if}}') - +inlinedForm - +editSwimlaneTitleForm + if this.isTemplateContainer + +swimlaneFixedHeader(this) else - .swimlane-header( - class="{{#if currentUser.isBoardMember}}js-open-inlined-form is-editable{{/if}}") - = title - .swimlane-header-menu - unless currentUser.isCommentOnly - a.fa.fa-plus.js-open-add-swimlane-menu.swimlane-header-plus-icon - a.fa.fa-navicon.js-open-swimlane-menu + +inlinedForm + +editSwimlaneTitleForm + else + +swimlaneFixedHeader(this) + +template(name="swimlaneFixedHeader") + .swimlane-header( + class="{{#if currentUser.isBoardMember}}js-open-inlined-form is-editable{{/if}}") + = title + .swimlane-header-menu + unless currentUser.isCommentOnly + a.fa.fa-plus.js-open-add-swimlane-menu.swimlane-header-plus-icon + a.fa.fa-navicon.js-open-swimlane-menu template(name="editSwimlaneTitleForm") .list-composer diff --git a/client/components/swimlanes/swimlanes.js b/client/components/swimlanes/swimlanes.js index 4dd84604..63266e5f 100644 --- a/client/components/swimlanes/swimlanes.js +++ b/client/components/swimlanes/swimlanes.js @@ -168,8 +168,8 @@ BlazeComponent.extendComponent({ evt.preventDefault(); const titleInput = this.find('.list-name-input'); const title = titleInput.value.trim(); - const listType = (this.currentSwimlane.isListTemplatesSwimlane())?'template-list':'list'; if (title) { + const listType = (this.currentSwimlane.isListTemplatesSwimlane())?'template-list':'list'; Lists.insert({ title, boardId: Session.get('currentBoard'), -- cgit v1.2.3-1-g7c22