summaryrefslogtreecommitdiffstats
path: root/client/components/boards
diff options
context:
space:
mode:
Diffstat (limited to 'client/components/boards')
-rw-r--r--client/components/boards/boardBody.jade44
-rw-r--r--client/components/boards/boardBody.js15
-rw-r--r--client/components/boards/boardHeader.jade12
-rw-r--r--client/components/boards/boardList.jade9
-rw-r--r--client/components/boards/router.js58
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);
- }
-});