Merge branch 'devel' into feature/import-board-members

This commit is contained in:
Xavier Priour 2015-10-23 03:38:38 +02:00
commit 658ef5ebe1
19 changed files with 61 additions and 32 deletions

View file

@ -62,7 +62,8 @@ BlazeComponent.extendComponent({
},
};
return [_.extend(events, {
return [{
...events,
'click .js-close-card-details'() {
Utils.goBoardId(this.data().boardId);
},
@ -86,7 +87,7 @@ BlazeComponent.extendComponent({
this.parentComponent().showOverlay.set(true);
this.parentComponent().mouseHasEnterCardDetails = true;
},
})];
}];
},
}).register('cardDetails');

View file

@ -13,7 +13,7 @@ BlazeComponent.extendComponent({
},
labels() {
return _.map(labelColors, (color) => {
return labelColors.map((color) => {
return { color, name: '' };
});
},

View file

@ -54,7 +54,7 @@ const at = HTML.CharRef({html: '@', str: '@'});
Blaze.Template.registerHelper('mentions', new Template('mentions', function() {
const view = this;
const currentBoard = Boards.findOne(Session.get('currentBoard'));
const knowedUsers = _.map(currentBoard.members, (member) => {
const knowedUsers = currentBoard.members.map((member) => {
member.username = Users.findOne(member.userId).username;
return member;
});

View file

@ -95,10 +95,10 @@ BlazeComponent.extendComponent({
events() {
// XXX Hacky, we need some kind of `super`
const mixinEvents = this.getMixin(Mixins.InfiniteScrolling).events();
return mixinEvents.concat([{
return [...mixinEvents, {
'click .js-toggle-sidebar': this.toggle,
'click .js-back-home': this.setView,
}]);
}];
},
}).register('sidebar');

View file

@ -41,7 +41,7 @@ Template.changePasswordPopup.onRendered(function() {
Template.changeLanguagePopup.helpers({
languages() {
return _.map(TAPi18n.getLanguages(), (lang, tag) => {
return TAPi18n.getLanguages().map((lang, tag) => {
const name = lang.name;
return { tag, name };
});

View file

@ -25,7 +25,7 @@ AccountsTemplates.configure({
},
});
_.each(['signIn', 'signUp', 'resetPwd', 'forgotPwd', 'enrollAccount'],
['signIn', 'signUp', 'resetPwd', 'forgotPwd', 'enrollAccount'].forEach(
(routeName) => AccountsTemplates.configureRoute(routeName));
// We display the form to change the password in a popup window that already

View file

@ -88,3 +88,26 @@ _.each(redirections, (newPath, oldPath) => {
}],
});
});
// As it is not possible to use template helpers in the page <head> we create a
// reactive function whose role is to set any page-specific tag in the <head>
// using the `kadira:dochead` package. Currently we only use it to display the
// board title if we are in a board page (see #364) but we may want to support
// some <meta> tags in the future.
const appTitle = 'Wekan';
// XXX The `Meteor.startup` should not be necessary -- we don't need to wait for
// the complete DOM to be ready to call `DocHead.setTitle`. But the problem is
// that the global variable `Boards` is undefined when this file loads so we
// wait a bit until hopefully all files are loaded. This will be fixed in a
// clean way once Meteor will support ES6 modules -- hopefully in Meteor 1.3.
Meteor.startup(() => {
Tracker.autorun(() => {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
const titleStack = [appTitle];
if (currentBoard) {
titleStack.push(currentBoard.title);
}
DocHead.setTitle(titleStack.reverse().join(' - '));
});
});

View file

@ -95,7 +95,7 @@ Filter = {
return {};
const filterSelector = {};
_.forEach(this._fields, (fieldName) => {
this._fields.forEach((fieldName) => {
const filter = this[fieldName];
if (filter._isActive())
filterSelector[fieldName] = filter._getMongoSelector();
@ -116,7 +116,7 @@ Filter = {
},
reset() {
_.forEach(this._fields, (fieldName) => {
this._fields.forEach((fieldName) => {
const filter = this[fieldName];
filter.reset();
});

View file

@ -21,9 +21,9 @@ window.Modal = new class {
}
}
open(modalName, options) {
open(modalName, { onCloseGoTo = ''}) {
this._currentModal.set(modalName);
this._onCloseGoTo = options && options.onCloseGoTo || '';
this._onCloseGoTo = onCloseGoTo;
}
};

View file

@ -119,12 +119,13 @@ MultiSelection = {
}
},
toggle(cardIds, options) {
toggle(cardIds, options = {}) {
cardIds = _.isString(cardIds) ? [cardIds] : cardIds;
options = _.extend({
options = {
add: true,
remove: true,
}, options || {});
...options,
};
if (!this.isActive()) {
this.reset();
@ -133,7 +134,7 @@ MultiSelection = {
const selectedCards = this._selectedCards.get();
_.each(cardIds, (cardId) => {
cardIds.forEach((cardId) => {
const indexOfCard = selectedCards.indexOf(cardId);
if (options.remove && indexOfCard > -1)

View file

@ -91,7 +91,7 @@ window.Popup = new class {
if (!self.isOpen()) {
self.current = Blaze.renderWithData(self.template, () => {
self._dep.depend();
return _.extend(self._getTopStack(), { stack: self._stack });
return { ...self._getTopStack(), stack: self._stack };
}, document.body);
} else {
@ -191,7 +191,7 @@ window.Popup = new class {
// We close a potential opened popup on any left click on the document, or go
// one step back by pressing escape.
const escapeActions = ['back', 'close'];
_.each(escapeActions, (actionName) => {
escapeActions.forEach((actionName) => {
EscapeActions.register(`popup-${actionName}`,
() => Popup[actionName](),
() => Popup.isOpen(),