diff options
Diffstat (limited to 'client/components/boards')
-rw-r--r-- | client/components/boards/boardBody.jade | 44 | ||||
-rw-r--r-- | client/components/boards/boardBody.js | 15 | ||||
-rw-r--r-- | client/components/boards/boardHeader.jade | 12 | ||||
-rw-r--r-- | client/components/boards/boardList.jade | 9 | ||||
-rw-r--r-- | client/components/boards/router.js | 58 |
5 files changed, 38 insertions, 100 deletions
diff --git a/client/components/boards/boardBody.jade b/client/components/boards/boardBody.jade index 12fc0e36..3d6667ae 100644 --- a/client/components/boards/boardBody.jade +++ b/client/components/boards/boardBody.jade @@ -1,29 +1,25 @@ -//- - XXX This template can't be transformed into a component because it is - included by iron-router. That's a bug. - See https://github.com/peerlibrary/meteor-blaze-components/issues/44 template(name="board") - +boardComponent - -template(name="boardComponent") - if this - .board-wrapper(class=colorClass) - .board-canvas( - class=sidebarSize - class="{{#if MultiSelection.isActive}}is-multiselection-active{{/if}}" - class="{{#if draggingActive.get}}is-dragging-active{{/if}}") - if showOverlay.get - .board-overlay - .lists.js-lists - each lists - +list(this) - if currentCardIsInThisList - +cardDetails(currentCard) - if currentUser.isBoardMember - +addListForm - +sidebar + if Template.subscriptionsReady + if currentBoard + .board-wrapper(class=currentBoard.colorClass) + .board-canvas( + class=currentBoard.sidebarSize + class="{{#if MultiSelection.isActive}}is-multiselection-active{{/if}}" + class="{{#if draggingActive.get}}is-dragging-active{{/if}}") + if showOverlay.get + .board-overlay + .lists.js-lists + each currentBoard.lists + +list(this) + if currentCardIsInThisList + +cardDetails(currentCard) + if currentUser.isBoardMember + +addListForm + +sidebar + else + +message(label="board-no-found") else - +message(label="board-no-found") + +spinner template(name="addListForm") .list.js-list.list-composer.js-list-composer diff --git a/client/components/boards/boardBody.js b/client/components/boards/boardBody.js index 876f2cd0..3757eff9 100644 --- a/client/components/boards/boardBody.js +++ b/client/components/boards/boardBody.js @@ -1,11 +1,17 @@ +var boardSubsManager = new SubsManager(); + BlazeComponent.extendComponent({ template: function() { - return 'boardComponent'; + return 'board'; }, onCreated: function() { this.draggingActive = new ReactiveVar(false); this.showOverlay = new ReactiveVar(false); + + // XXX The boardId should be readed from some sort the component "props", + // unfortunatly, Blaze doesn't have this notion. + boardSubsManager.subscribe('board', Session.get('currentBoard')); }, openNewListForm: function() { @@ -67,7 +73,7 @@ BlazeComponent.extendComponent({ } }; - if (! Meteor.userId() || ! Meteor.user().isBoardMember()) + if (! Meteor.user() || ! Meteor.user().isBoardMember()) return; self.$(lists).sortable({ @@ -101,7 +107,8 @@ BlazeComponent.extendComponent({ // If there is no data in the board (ie, no lists) we autofocus the list // creation form by clicking on the corresponding element. - if (self.data().lists().count() === 0) { + var currentBoard = Boards.findOne(Session.get('currentBoard')); + if (currentBoard.lists().count() === 0) { this.openNewListForm(); } }, @@ -121,7 +128,7 @@ BlazeComponent.extendComponent({ } }]; } -}).register('boardComponent'); +}).register('board'); BlazeComponent.extendComponent({ template: function() { diff --git a/client/components/boards/boardHeader.jade b/client/components/boards/boardHeader.jade index 3847cd93..9ec79227 100644 --- a/client/components/boards/boardHeader.jade +++ b/client/components/boards/boardHeader.jade @@ -1,20 +1,20 @@ template(name="headerBoard") h1.header-board-menu a(class="{{#if currentUser.isBoardAdmin}}js-edit-board-title{{else}}is-disabled{{/if}}") - = title + = currentBoard.title .board-header-btns.left unless isSandstorm if currentUser a.board-header-btn.js-star-board(class="{{#if isStarred}}is-active{{/if}}" - title="{{#if isStarred}}{{_ 'click-to-unstar'}}{{else}}{{_ 'click-to-star'}}{{/if}} {{_ 'starred-boards-description'}}") - i.fa(class="fa-star{{#unless isStarred}}-o{{/unless}}") + title="{{#if currentBoard.isStarred}}{{_ 'click-to-unstar'}}{{else}}{{_ 'click-to-star'}}{{/if}} {{_ 'starred-boards-description'}}") + i.fa(class="fa-star{{#unless currentBoard.isStarred}}-o{{/unless}}") if showStarCounter - span {{_ 'board-nb-stars' stars}} + span {{_ 'board-nb-stars' currentBoard.stars}} a.board-header-btn(class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}") - i.fa(class="{{#if isPublic}}fa-globe{{else}}fa-lock{{/if}}") - span {{_ permission}} + i.fa(class="{{#if currentBoard.isPublic}}fa-globe{{else}}fa-lock{{/if}}") + span {{_ currentBoard.permission}} .board-header-btns.right a.board-header-btn.js-open-filter-view( diff --git a/client/components/boards/boardList.jade b/client/components/boards/boardList.jade index e92cad2d..f0dc808f 100644 --- a/client/components/boards/boardList.jade +++ b/client/components/boards/boardList.jade @@ -1,16 +1,9 @@ -//- - XXX This template can't be transformed into a component because it is - included by iron-router. That's a bug. - See https://github.com/peerlibrary/meteor-blaze-components/issues/44 -template(name="boards") - +boardList - template(name="boardList") if boards.count ul.board-list.clearfix each boards li(class="{{#if isStarred}}starred{{/if}}" class=colorClass) - a.js-open-board(href="{{ pathFor route='Board' boardId=_id }}") + a.js-open-board(href="{{pathFor 'board' id=_id slug=slug}}") span.details span.board-list-item-name= title i.fa.fa-star-o.js-star-board( diff --git a/client/components/boards/router.js b/client/components/boards/router.js deleted file mode 100644 index 1c485225..00000000 --- a/client/components/boards/router.js +++ /dev/null @@ -1,58 +0,0 @@ -Meteor.subscribe('boards'); - -var boardSubsManager = new SubsManager(); - -Router.route('/boards', { - name: 'Boards', - template: 'boards', - authenticated: true, - onBeforeAction: function() { - Session.set('currentBoard', ''); - Filter.reset(); - this.next(); - } -}); - -Router.route('/boards/:_id/:slug', { - name: 'Board', - template: 'board', - onAfterAction: function() { - // XXX We probably shouldn't rely on Session - Session.set('sidebarIsOpen', true); - Session.set('menuWidgetIsOpen', false); - }, - waitOn: function() { - var params = this.params; - Session.set('currentBoard', params._id); - Session.set('currentCard', null); - - return boardSubsManager.subscribe('board', params._id, params.slug); - }, - data: function() { - return Boards.findOne(this.params._id); - } -}); - -Router.route('/boards/:boardId/:slug/:cardId', { - name: 'Card', - template: 'board', - noEscapeActions: true, - onAfterAction: function() { - Tracker.nonreactive(function() { - if (! Session.get('currentCard') && Sidebar) { - Sidebar.hide(); - } - }); - EscapeActions.executeUpTo('popup'); - var params = this.params; - Session.set('currentBoard', params.boardId); - Session.set('currentCard', params.cardId); - }, - waitOn: function() { - var params = this.params; - return boardSubsManager.subscribe('board', params.boardId, params.slug); - }, - data: function() { - return Boards.findOne(this.params.boardId); - } -}); |