mirror of
https://github.com/wekan/wekan.git
synced 2025-04-22 04:57:07 -04:00
Merge branch 'devel'
This commit is contained in:
commit
7b9aaddb5b
60 changed files with 214 additions and 37 deletions
|
@ -77,10 +77,11 @@ email@1.2.3
|
|||
horka:swipebox
|
||||
dynamic-import@0.2.0
|
||||
staringatlights:fast-render
|
||||
staringatlights:flow-router
|
||||
|
||||
mixmax:smart-disconnect
|
||||
accounts-password@1.5.0
|
||||
cfs:gridfs
|
||||
browser-policy
|
||||
eluck:accounts-lockout
|
||||
rzymek:fullcalendar
|
||||
momentjs:moment@2.22.2
|
||||
|
|
|
@ -103,6 +103,7 @@ mixmax:smart-disconnect@0.0.4
|
|||
mobile-status-bar@1.0.14
|
||||
modules@0.11.0
|
||||
modules-runtime@0.9.1
|
||||
momentjs:moment@2.22.2
|
||||
mongo@1.3.1
|
||||
mongo-dev-server@1.1.0
|
||||
mongo-id@1.0.6
|
||||
|
@ -139,6 +140,7 @@ reactive-var@1.0.11
|
|||
reload@1.1.11
|
||||
retry@1.0.9
|
||||
routepolicy@1.0.12
|
||||
rzymek:fullcalendar@3.8.0
|
||||
service-configuration@1.0.11
|
||||
session@1.1.7
|
||||
sha@1.0.9
|
||||
|
@ -155,7 +157,6 @@ srp@1.0.10
|
|||
standard-minifier-css@1.3.5
|
||||
standard-minifier-js@2.2.3
|
||||
staringatlights:fast-render@2.16.5
|
||||
staringatlights:flow-router@2.12.2
|
||||
staringatlights:inject-data@2.0.5
|
||||
stylus@2.513.13
|
||||
tap:i18n@1.8.2
|
||||
|
|
15
CHANGELOG.md
15
CHANGELOG.md
|
@ -1,3 +1,18 @@
|
|||
# v1.09 2018-06-28 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [Calendar](https://github.com/wekan/wekan/pull/1728). Click Lists / Swimlanes / Calendar.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
* To fix ["title is required"](https://github.com/wekan/wekan/issues/1576) fix only
|
||||
add-checklist-items and revert all other migration changes](https://github.com/wekan/wekan/issues/1734);
|
||||
* [Restore invitation code logic](https://github.com/wekan/wekan/pull/1732). Please test and add comment
|
||||
to those invitation code issues that this fixes.
|
||||
|
||||
Thanks to GitHub users TNick and xet7 for their contributions.
|
||||
|
||||
# v1.08 2018-06-27 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
|
|
@ -25,3 +25,5 @@ template(name="boardBody")
|
|||
+swimlane(this)
|
||||
if isViewLists
|
||||
+listsGroup
|
||||
if isViewCalendar
|
||||
+fullcalendar(calendarOptions)
|
||||
|
|
|
@ -98,6 +98,12 @@ BlazeComponent.extendComponent({
|
|||
return (currentUser.profile.boardView === 'board-view-lists');
|
||||
},
|
||||
|
||||
isViewCalendar() {
|
||||
const currentUser = Meteor.user();
|
||||
if (!currentUser) return true;
|
||||
return (currentUser.profile.boardView === 'board-view-cal');
|
||||
},
|
||||
|
||||
openNewListForm() {
|
||||
if (this.isViewSwimlanes()) {
|
||||
this.childComponents('swimlane')[0]
|
||||
|
@ -108,6 +114,62 @@ BlazeComponent.extendComponent({
|
|||
}
|
||||
},
|
||||
|
||||
calendarOptions() {
|
||||
return {
|
||||
id: 'calendar-view',
|
||||
defaultView: 'basicWeek',
|
||||
header: {
|
||||
left: 'title',
|
||||
center: 'agendaDay,listDay,timelineDay agendaWeek,listWeek,timelineWeek month,timelineMonth timelineYear',
|
||||
right: 'today prev,next',
|
||||
},
|
||||
views: {
|
||||
basic: {
|
||||
// options apply to basicWeek and basicDay views
|
||||
},
|
||||
agenda: {
|
||||
// options apply to agendaWeek and agendaDay views
|
||||
},
|
||||
week: {
|
||||
// options apply to basicWeek and agendaWeek views
|
||||
},
|
||||
day: {
|
||||
// options apply to basicDay and agendaDay views
|
||||
},
|
||||
},
|
||||
themeSystem: 'jquery-ui',
|
||||
height: 'parent',
|
||||
/* TODO: lists as resources: https://fullcalendar.io/docs/vertical-resource-view */
|
||||
navLinks: true,
|
||||
nowIndicator: true,
|
||||
businessHours: {
|
||||
// days of week. an array of zero-based day of week integers (0=Sunday)
|
||||
dow: [ 1, 2, 3, 4, 5 ], // Monday - Thursday
|
||||
start: '8:00',
|
||||
end: '18:00',
|
||||
},
|
||||
locale: TAPi18n.getLanguage(),
|
||||
events(start, end, timezone, callback) {
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
const events = [];
|
||||
currentBoard.cardsInInterval(start.toDate(), end.toDate()).forEach(function(card){
|
||||
events.push({
|
||||
id: card.id,
|
||||
title: card.title,
|
||||
start: card.startAt,
|
||||
end: card.endAt,
|
||||
url: FlowRouter.url('card', {
|
||||
boardId: currentBoard._id,
|
||||
slug: currentBoard.slug,
|
||||
cardId: card._id,
|
||||
}),
|
||||
});
|
||||
});
|
||||
callback(events);
|
||||
},
|
||||
};
|
||||
},
|
||||
|
||||
events() {
|
||||
return [{
|
||||
// XXX The board-overlay div should probably be moved to the parent
|
||||
|
|
|
@ -89,9 +89,11 @@ BlazeComponent.extendComponent({
|
|||
'click .js-toggle-board-view'() {
|
||||
const currentUser = Meteor.user();
|
||||
if (currentUser.profile.boardView === 'board-view-swimlanes') {
|
||||
currentUser.setBoardView('board-view-lists');
|
||||
currentUser.setBoardView('board-view-cal');
|
||||
} else if (currentUser.profile.boardView === 'board-view-lists') {
|
||||
currentUser.setBoardView('board-view-swimlanes');
|
||||
} else if (currentUser.profile.boardView === 'board-view-cal') {
|
||||
currentUser.setBoardView('board-view-lists');
|
||||
}
|
||||
},
|
||||
'click .js-open-filter-view'() {
|
||||
|
|
|
@ -218,10 +218,13 @@ class CardReceivedDate extends CardDate {
|
|||
}
|
||||
|
||||
classes() {
|
||||
let classes = 'received-date' + ' ';
|
||||
if (this.date.get().isBefore(this.now.get(), 'minute') &&
|
||||
this.now.get().isBefore(this.data().dueAt)) {
|
||||
classes += 'current';
|
||||
let classes = 'received-date ';
|
||||
const dueAt = this.data().dueAt;
|
||||
if (dueAt) {
|
||||
if (this.date.get().isBefore(this.now.get(), 'minute') &&
|
||||
this.now.get().isBefore(dueAt)) {
|
||||
classes += 'current';
|
||||
}
|
||||
}
|
||||
return classes;
|
||||
}
|
||||
|
@ -249,9 +252,12 @@ class CardStartDate extends CardDate {
|
|||
|
||||
classes() {
|
||||
let classes = 'start-date' + ' ';
|
||||
if (this.date.get().isBefore(this.now.get(), 'minute') &&
|
||||
this.now.get().isBefore(this.data().dueAt)) {
|
||||
classes += 'current';
|
||||
const dueAt = this.data().dueAt;
|
||||
if (dueAt) {
|
||||
if (this.date.get().isBefore(this.now.get(), 'minute') &&
|
||||
this.now.get().isBefore(dueAt)) {
|
||||
classes += 'current';
|
||||
}
|
||||
}
|
||||
return classes;
|
||||
}
|
||||
|
@ -279,18 +285,23 @@ class CardDueDate extends CardDate {
|
|||
|
||||
classes() {
|
||||
let classes = 'due-date' + ' ';
|
||||
|
||||
// if endAt exists & is < dueAt, dueAt doesn't need to be flagged
|
||||
if ((this.data().endAt !== 0) &&
|
||||
(this.data().endAt !== null) &&
|
||||
(this.data().endAt !== '') &&
|
||||
(this.data().endAt !== undefined) &&
|
||||
(this.date.get().isBefore(this.data().endAt)))
|
||||
const endAt = this.data().endAt;
|
||||
const theDate = this.date.get();
|
||||
const now = this.now.get();
|
||||
|
||||
if ((endAt !== 0) &&
|
||||
(endAt !== null) &&
|
||||
(endAt !== '') &&
|
||||
(endAt !== undefined) &&
|
||||
(theDate.isBefore(endAt)))
|
||||
classes += 'current';
|
||||
else if (this.now.get().diff(this.date.get(), 'days') >= 2)
|
||||
else if (now.diff(theDate, 'days') >= 2)
|
||||
classes += 'long-overdue';
|
||||
else if (this.now.get().diff(this.date.get(), 'minute') >= 0)
|
||||
else if (now.diff(theDate, 'minute') >= 0)
|
||||
classes += 'due';
|
||||
else if (this.now.get().diff(this.date.get(), 'days') >= -1)
|
||||
else if (now.diff(theDate, 'days') >= -1)
|
||||
classes += 'almost-due';
|
||||
return classes;
|
||||
}
|
||||
|
@ -318,12 +329,16 @@ class CardEndDate extends CardDate {
|
|||
|
||||
classes() {
|
||||
let classes = 'end-date' + ' ';
|
||||
if (this.data.dueAt.diff(this.date.get(), 'days') >= 2)
|
||||
classes += 'long-overdue';
|
||||
else if (this.data.dueAt.diff(this.date.get(), 'days') > 0)
|
||||
classes += 'due';
|
||||
else if (this.data.dueAt.diff(this.date.get(), 'days') <= 0)
|
||||
classes += 'current';
|
||||
const dueAt = this.data.dueAt;
|
||||
if (dueAt) {
|
||||
const diff = dueAt.diff(this.date.get(), 'days');
|
||||
if (diff >= 2)
|
||||
classes += 'long-overdue';
|
||||
else if (diff > 0)
|
||||
classes += 'due';
|
||||
else if (diff <= 0)
|
||||
classes += 'current';
|
||||
}
|
||||
return classes;
|
||||
}
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ BlazeComponent.extendComponent({
|
|||
const boardView = Meteor.user().profile.boardView;
|
||||
if (boardView === 'board-view-swimlanes')
|
||||
swimlaneId = this.parentComponent().parentComponent().data()._id;
|
||||
else if (boardView === 'board-view-lists')
|
||||
else if ((boardView === 'board-view-lists') || (boardView === 'board-view-cal'))
|
||||
swimlaneId = Swimlanes.findOne({boardId})._id;
|
||||
|
||||
if (title) {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Template.invitationCode.onRendered(() => {
|
||||
const setting = Settings.findOne();
|
||||
if (setting || setting.disableRegistration) {
|
||||
if (!setting || !setting.disableRegistration) {
|
||||
$('#invitationcode').hide();
|
||||
}
|
||||
});
|
||||
|
|
|
@ -7,6 +7,8 @@ function currentCardIsInThisList(listId, swimlaneId) {
|
|||
return currentCard && currentCard.listId === listId;
|
||||
else if (currentUser.profile.boardView === 'board-view-swimlanes')
|
||||
return currentCard && currentCard.listId === listId && currentCard.swimlaneId === swimlaneId;
|
||||
else if (currentUser.profile.boardView === 'board-view-cal')
|
||||
return currentCard;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "قائمة اللوحة",
|
||||
"boards": "لوحات",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "القائمات",
|
||||
"bucket-example": "مثل « todo list » على سبيل المثال",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Меню на Таблото",
|
||||
"boards": "Табла",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Коридори",
|
||||
"board-view-lists": "Списъци",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Menú del tauler",
|
||||
"boards": "Taulers",
|
||||
"board-view": "Visió del tauler",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Carrils de Natació",
|
||||
"board-view-lists": "Llistes",
|
||||
"bucket-example": "Igual que “Bucket List”, per exemple",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Menu tabla",
|
||||
"boards": "Tabla",
|
||||
"board-view": "Náhled tabla",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Seznamy",
|
||||
"bucket-example": "Například \"Než mě odvedou\"",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Boardmenü",
|
||||
"boards": "Boards",
|
||||
"board-view": "Boardansicht",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Listen",
|
||||
"bucket-example": "z.B. \"Löffelliste\"",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Λίστες",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Listoj",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Menú del Tablero",
|
||||
"boards": "Tableros",
|
||||
"board-view": "Vista de Tablero",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Calles",
|
||||
"board-view-lists": "Listas",
|
||||
"bucket-example": "Como \"Lista de Contenedores\" por ejemplo",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Menú del tablero",
|
||||
"boards": "Tableros",
|
||||
"board-view": "Vista del tablero",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Carriles",
|
||||
"board-view-lists": "Listas",
|
||||
"bucket-example": "Como “Cosas por hacer” por ejemplo",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Arbelaren menua",
|
||||
"boards": "Arbelak",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Zerrendak",
|
||||
"bucket-example": "Esaterako \"Pertz zerrenda\"",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "منوی تخته",
|
||||
"boards": "تختهها",
|
||||
"board-view": "نمایش تخته",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "فهرستها",
|
||||
"bucket-example": "برای مثال چیزی شبیه \"لیست سبدها\"",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Taulu valikko",
|
||||
"boards": "Taulut",
|
||||
"board-view": "Taulu näkymä",
|
||||
"board-view-cal": "Kalenteri",
|
||||
"board-view-swimlanes": "Swimlanet",
|
||||
"board-view-lists": "Listat",
|
||||
"bucket-example": "Kuten “Laatikko lista” esimerkiksi",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Menu du tableau",
|
||||
"boards": "Tableaux",
|
||||
"board-view": "Vue du tableau",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Couloirs",
|
||||
"board-view-lists": "Listes",
|
||||
"bucket-example": "Comme « todo list » par exemple",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Taboleiros",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Listas",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "תפריט לוח",
|
||||
"boards": "לוחות",
|
||||
"board-view": "תצוגת לוח",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "מסלולים",
|
||||
"board-view-lists": "רשימות",
|
||||
"bucket-example": "כמו למשל „רשימת המשימות“",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Tábla menü",
|
||||
"boards": "Táblák",
|
||||
"board-view": "Tábla nézet",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Listák",
|
||||
"bucket-example": "Mint például „Bakancslista”",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Menu Panel",
|
||||
"boards": "Panel",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Daftar",
|
||||
"bucket-example": "Contohnya seperti “Bucket List” ",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Menu bacheca",
|
||||
"boards": "Bacheche",
|
||||
"board-view": "Visualizza bacheca",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Corsie",
|
||||
"board-view-lists": "Liste",
|
||||
"bucket-example": "Per esempio come \"una lista di cose da fare\"",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "ボードメニュー",
|
||||
"boards": "ボード",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "スイムレーン",
|
||||
"board-view-lists": "リスト",
|
||||
"bucket-example": "例:バケットリスト",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "보드 메뉴",
|
||||
"boards": "보드",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "목록들",
|
||||
"bucket-example": "예: “프로젝트 이름“ 입력",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Tavlemeny",
|
||||
"boards": "Tavler",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Som \"Bucket List\" for eksempel",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Bord menu",
|
||||
"boards": "Borden",
|
||||
"board-view": "Bord overzicht",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lijsten",
|
||||
"bucket-example": "Zoals \"Bucket List\" bijvoorbeeld",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Menu tablicy",
|
||||
"boards": "Tablice",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Listy",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Menu do Quadro",
|
||||
"boards": "Quadros",
|
||||
"board-view": "Visão de quadro",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Listas",
|
||||
"bucket-example": "\"Bucket List\", por exemplo",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Liste",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Меню доски",
|
||||
"boards": "Доски",
|
||||
"board-view": "Вид доски",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Дорожки",
|
||||
"board-view-lists": "Списки",
|
||||
"bucket-example": "Например “Список дел”",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Meni table",
|
||||
"boards": "Table",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Na primer \"Lista zadataka\"",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Anslagstavla meny",
|
||||
"boards": "Anslagstavlor",
|
||||
"board-view": "Anslagstavelsvy",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Simbanor",
|
||||
"board-view-lists": "Listor",
|
||||
"bucket-example": "Gilla \"att-göra-innan-jag-dör-lista\" till exempel",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "เมนูบอร์ด",
|
||||
"boards": "บอร์ด",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "รายการ",
|
||||
"bucket-example": "ตัวอย่างเช่น “ระบบที่ต้องทำ”",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Pano menüsü",
|
||||
"boards": "Panolar",
|
||||
"board-view": "Pano Görünümü",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Kulvarlar",
|
||||
"board-view-lists": "Listeler",
|
||||
"bucket-example": "Örn: \"Marketten Alacaklarım\"",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Дошки",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Bảng",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "看板菜单",
|
||||
"boards": "看板",
|
||||
"board-view": "看板视图",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "泳道图",
|
||||
"board-view-lists": "列表",
|
||||
"bucket-example": "例如 “目标清单”",
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
"boardMenuPopup-title": "看板選單",
|
||||
"boards": "看板",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "清單",
|
||||
"bucket-example": "例如 “目標清單”",
|
||||
|
|
|
@ -284,6 +284,33 @@ Boards.helpers({
|
|||
|
||||
return Cards.find(query, projection);
|
||||
},
|
||||
|
||||
cardsInInterval(start, end) {
|
||||
return Cards.find({
|
||||
$or: [
|
||||
{
|
||||
startAt: {
|
||||
$lte: start,
|
||||
}, endAt: {
|
||||
$gte: start,
|
||||
},
|
||||
}, {
|
||||
startAt: {
|
||||
$lte: end,
|
||||
}, endAt: {
|
||||
$gte: end,
|
||||
},
|
||||
}, {
|
||||
startAt: {
|
||||
$gte: start,
|
||||
}, endAt: {
|
||||
$lte: end,
|
||||
},
|
||||
},
|
||||
],
|
||||
});
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
Boards.mutations({
|
||||
|
|
|
@ -100,6 +100,11 @@ Users.attachSchema(new SimpleSchema({
|
|||
'profile.boardView': {
|
||||
type: String,
|
||||
optional: true,
|
||||
allowedValues: [
|
||||
'board-view-lists',
|
||||
'board-view-swimlanes',
|
||||
'board-view-cal',
|
||||
],
|
||||
},
|
||||
services: {
|
||||
type: Object,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "wekan",
|
||||
"version": "1.08.0",
|
||||
"version": "1.09.0",
|
||||
"description": "The open-source Trello-like kanban",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
|
|
@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
|
|||
appTitle = (defaultText = "Wekan"),
|
||||
# The name of the app as it is displayed to the user.
|
||||
|
||||
appVersion = 93,
|
||||
appVersion = 94,
|
||||
# Increment this for every release.
|
||||
|
||||
appMarketingVersion = (defaultText = "1.07.0~2018-06-27"),
|
||||
appMarketingVersion = (defaultText = "1.09.0~2018-06-28"),
|
||||
# Human-readable presentation of the app version.
|
||||
|
||||
minUpgradableAppVersion = 0,
|
||||
|
|
|
@ -55,7 +55,7 @@ Migrations.add('lowercase-board-permission', () => {
|
|||
// Security migration: see https://github.com/wekan/wekan/issues/99
|
||||
Migrations.add('change-attachments-type-for-non-images', () => {
|
||||
const newTypeForNonImage = 'application/octet-stream';
|
||||
Attachments.forEach((file) => {
|
||||
Attachments.find().forEach((file) => {
|
||||
if (!file.isImage()) {
|
||||
Attachments.update(file._id, {
|
||||
$set: {
|
||||
|
@ -68,7 +68,7 @@ Migrations.add('change-attachments-type-for-non-images', () => {
|
|||
});
|
||||
|
||||
Migrations.add('card-covers', () => {
|
||||
Cards.forEach((card) => {
|
||||
Cards.find().forEach((card) => {
|
||||
const cover = Attachments.findOne({ cardId: card._id, cover: true });
|
||||
if (cover) {
|
||||
Cards.update(card._id, {$set: {coverId: cover._id}}, noValidate);
|
||||
|
@ -86,7 +86,7 @@ Migrations.add('use-css-class-for-boards-colors', () => {
|
|||
'#2C3E50': 'midnight',
|
||||
'#E67E22': 'pumpkin',
|
||||
};
|
||||
Boards.forEach((board) => {
|
||||
Boards.find().forEach((board) => {
|
||||
const oldBoardColor = board.background.color;
|
||||
const newBoardColor = associationTable[oldBoardColor];
|
||||
Boards.update(board._id, {
|
||||
|
@ -97,7 +97,7 @@ Migrations.add('use-css-class-for-boards-colors', () => {
|
|||
});
|
||||
|
||||
Migrations.add('denormalize-star-number-per-board', () => {
|
||||
Boards.forEach((board) => {
|
||||
Boards.find().forEach((board) => {
|
||||
const nStars = Users.find({'profile.starredBoards': board._id}).count();
|
||||
Boards.update(board._id, {$set: {stars: nStars}}, noValidate);
|
||||
});
|
||||
|
@ -132,7 +132,7 @@ Migrations.add('add-member-isactive-field', () => {
|
|||
});
|
||||
|
||||
Migrations.add('add-sort-checklists', () => {
|
||||
Checklists.forEach((checklist, index) => {
|
||||
Checklists.find().forEach((checklist, index) => {
|
||||
if (!checklist.hasOwnProperty('sort')) {
|
||||
Checklists.direct.update(
|
||||
checklist._id,
|
||||
|
@ -153,7 +153,7 @@ Migrations.add('add-sort-checklists', () => {
|
|||
});
|
||||
|
||||
Migrations.add('add-swimlanes', () => {
|
||||
Boards.forEach((board) => {
|
||||
Boards.find().forEach((board) => {
|
||||
const swimlane = Swimlanes.findOne({ boardId: board._id });
|
||||
let swimlaneId = '';
|
||||
if (swimlane)
|
||||
|
@ -177,7 +177,7 @@ Migrations.add('add-swimlanes', () => {
|
|||
});
|
||||
|
||||
Migrations.add('add-views', () => {
|
||||
Boards.forEach((board) => {
|
||||
Boards.find().forEach((board) => {
|
||||
if (!board.hasOwnProperty('view')) {
|
||||
Boards.direct.update(
|
||||
{ _id: board._id },
|
||||
|
@ -210,7 +210,7 @@ Migrations.add('add-checklist-items', () => {
|
|||
});
|
||||
|
||||
Migrations.add('add-profile-view', () => {
|
||||
Users.forEach((user) => {
|
||||
Users.find().forEach((user) => {
|
||||
if (!user.hasOwnProperty('profile.boardView')) {
|
||||
// Set default view
|
||||
Users.direct.update(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue