Merge branch 'master' of https://github.com/wekan/wekan into search

This commit is contained in:
John R. Supplee 2021-01-17 16:07:43 +02:00
commit 409b8559d7
11 changed files with 1977 additions and 1823 deletions

View file

@ -1,3 +1,26 @@
# Upcoming Wekan release
This release adds the following improvements:
- [Use table-cell instead of inline-block in my-cards-list-wrapper CSS](https://github.com/wekan/wekan/commit/3866ed31965eb5b722e88c4d3e7628d516375088).
Thanks to johappel and xet7 !
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.79 2021-01-17 Wekan release
This release adds the following new features:
- [At Search All Cards, now it's possible to click found card to open it](https://github.com/wekan/wekan/commit/10f74f5152117358e9c6b9bb0e81b8c284841aff).
Thanks to xet7.
and fixes the following bugs:
- [Fixed: Linked card makes board not load](https://github.com/wekan/wekan/commit/be03d2ae9aa708119992548145cbaf82e1f87419).
Thanks to akitzing, galletl, pdonias, olivierlambert and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.78 2021-01-16 Wekan release # v4.78 2021-01-16 Wekan release
This release adds the following new features: This release adds the following new features:

View file

@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v4.78.0" appVersion: "v4.79.0"
files: files:
userUploads: userUploads:
- README.md - README.md

View file

@ -43,7 +43,7 @@
border-radius: 5px border-radius: 5px
padding: 1.5rem padding: 1.5rem
padding-top: 0.75rem padding-top: 0.75rem
display: inline-block display: table-cell
min-width: 250px min-width: 250px
max-width: 350px max-width: 350px

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -858,12 +858,20 @@ Cards.helpers({
getMembers() { getMembers() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
return card.members; if (card === undefined) {
return null;
} else {
return card.members;
}
} else if (this.isLinkedBoard()) { } else if (this.isLinkedBoard()) {
const board = Boards.findOne({ _id: this.linkedId }); const board = Boards.findOne({ _id: this.linkedId });
return board.activeMembers().map(member => { if (board === undefined) {
return member.userId; return null;
}); } else {
return board.activeMembers().map(member => {
return member.userId;
});
}
} else { } else {
return this.members; return this.members;
} }
@ -872,12 +880,20 @@ Cards.helpers({
getAssignees() { getAssignees() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
return card.assignees; if (card === undefined) {
return null;
} else {
return card.assignees;
}
} else if (this.isLinkedBoard()) { } else if (this.isLinkedBoard()) {
const board = Boards.findOne({ _id: this.linkedId }); const board = Boards.findOne({ _id: this.linkedId });
return board.activeMembers().map(assignee => { if (board === undefined) {
return assignee.userId; return null;
}); } else {
return board.activeMembers().map(assignee => {
return assignee.userId;
});
}
} else { } else {
return this.assignees; return this.assignees;
} }
@ -967,7 +983,11 @@ Cards.helpers({
getReceived() { getReceived() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
return card.receivedAt; if (card === undefined) {
return null;
} else {
return card.receivedAt;
}
} else { } else {
return this.receivedAt; return this.receivedAt;
} }
@ -984,10 +1004,18 @@ Cards.helpers({
getStart() { getStart() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
return card.startAt; if (card === undefined) {
return null;
} else {
return card.startAt;
}
} else if (this.isLinkedBoard()) { } else if (this.isLinkedBoard()) {
const board = Boards.findOne({ _id: this.linkedId }); const board = Boards.findOne({ _id: this.linkedId });
return board.startAt; if (board === undefined) {
return null;
} else {
return board.startAt;
}
} else { } else {
return this.startAt; return this.startAt;
} }
@ -1006,10 +1034,18 @@ Cards.helpers({
getDue() { getDue() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
return card.dueAt; if (card === undefined) {
return null;
} else {
return card.dueAt;
}
} else if (this.isLinkedBoard()) { } else if (this.isLinkedBoard()) {
const board = Boards.findOne({ _id: this.linkedId }); const board = Boards.findOne({ _id: this.linkedId });
return board.dueAt; if (board === undefined) {
return null;
} else {
return board.dueAt;
}
} else { } else {
return this.dueAt; return this.dueAt;
} }
@ -1028,10 +1064,18 @@ Cards.helpers({
getEnd() { getEnd() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
return card.endAt; if (card === undefined) {
return null;
} else {
return card.endAt;
}
} else if (this.isLinkedBoard()) { } else if (this.isLinkedBoard()) {
const board = Boards.findOne({ _id: this.linkedId }); const board = Boards.findOne({ _id: this.linkedId });
return board.endAt; if (board === undefined) {
return null;
} else {
return board.endAt;
}
} else { } else {
return this.endAt; return this.endAt;
} }
@ -1050,10 +1094,18 @@ Cards.helpers({
getIsOvertime() { getIsOvertime() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
return card.isOvertime; if (card === undefined) {
return null;
} else {
return card.isOvertime;
}
} else if (this.isLinkedBoard()) { } else if (this.isLinkedBoard()) {
const board = Boards.findOne({ _id: this.linkedId }); const board = Boards.findOne({ _id: this.linkedId });
return board.isOvertime; if (board === undefined) {
return null;
} else {
return board.isOvertime;
}
} else { } else {
return this.isOvertime; return this.isOvertime;
} }
@ -1072,10 +1124,18 @@ Cards.helpers({
getSpentTime() { getSpentTime() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
return card.spentTime; if (card === undefined) {
return null;
} else {
return card.spentTime;
}
} else if (this.isLinkedBoard()) { } else if (this.isLinkedBoard()) {
const board = Boards.findOne({ _id: this.linkedId }); const board = Boards.findOne({ _id: this.linkedId });
return board.spentTime; if (board === undefined) {
return null;
} else {
return board.spentTime;
}
} else { } else {
return this.spentTime; return this.spentTime;
} }
@ -1094,12 +1154,22 @@ Cards.helpers({
getVoteQuestion() { getVoteQuestion() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
if (card && card.vote) return card.vote.question; if (card === undefined) {
else return null; return null;
} else if (card && card.vote) {
return card.vote.question;
} else {
return null;
}
} else if (this.isLinkedBoard()) { } else if (this.isLinkedBoard()) {
const board = Boards.findOne({ _id: this.linkedId }); const board = Boards.findOne({ _id: this.linkedId });
if (board && board.vote) return board.vote.question; if (board === undefined) {
else return null; return null;
} else if (board && board.vote) {
return board.vote.question;
} else {
return null;
}
} else if (this.vote) { } else if (this.vote) {
return this.vote.question; return this.vote.question;
} else { } else {
@ -1110,12 +1180,22 @@ Cards.helpers({
getVotePublic() { getVotePublic() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
if (card && card.vote) return card.vote.public; if (card === undefined) {
else return null; return null;
} else if (card && card.vote) {
return card.vote.public;
} else {
return null;
}
} else if (this.isLinkedBoard()) { } else if (this.isLinkedBoard()) {
const board = Boards.findOne({ _id: this.linkedId }); const board = Boards.findOne({ _id: this.linkedId });
if (board && board.vote) return board.vote.public; if (board === undefined) {
else return null; return null;
} else if (board && board.vote) {
return board.vote.public;
} else {
return null;
}
} else if (this.vote) { } else if (this.vote) {
return this.vote.public; return this.vote.public;
} else { } else {
@ -1126,12 +1206,22 @@ Cards.helpers({
getVoteEnd() { getVoteEnd() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
if (card && card.vote) return card.vote.end; if (card === undefined) {
else return null; return null;
} else if (card && card.vote) {
return card.vote.end;
} else {
return null;
}
} else if (this.isLinkedBoard()) { } else if (this.isLinkedBoard()) {
const board = Boards.findOne({ _id: this.linkedId }); const board = Boards.findOne({ _id: this.linkedId });
if (board && board.vote) return board.vote.end; if (board === undefined) {
else return null; return null;
} else if (board && board.vote) {
return board.vote.end;
} else {
return null;
}
} else if (this.vote) { } else if (this.vote) {
return this.vote.end; return this.vote.end;
} else { } else {
@ -1184,10 +1274,20 @@ Cards.helpers({
getTitle() { getTitle() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
return card.title; if (card === undefined) {
return null;
} else {
return card.title;
}
} else if (this.isLinkedBoard()) { } else if (this.isLinkedBoard()) {
const board = Boards.findOne({ _id: this.linkedId }); const board = Boards.findOne({ _id: this.linkedId });
return board.title; if (board === undefined) {
return null;
} else {
return board.title;
}
} else if (this.title === undefined) {
return null;
} else { } else {
return this.title; return this.title;
} }
@ -1196,14 +1296,29 @@ Cards.helpers({
getBoardTitle() { getBoardTitle() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
if (card === undefined) {
return null;
}
const board = Boards.findOne({ _id: card.boardId }); const board = Boards.findOne({ _id: card.boardId });
return board.title; if (board === undefined) {
return null;
} else {
return board.title;
}
} else if (this.isLinkedBoard()) { } else if (this.isLinkedBoard()) {
const board = Boards.findOne({ _id: this.linkedId }); const board = Boards.findOne({ _id: this.linkedId });
return board.title; if (board === undefined) {
return null;
} else {
return board.title;
}
} else { } else {
const board = Boards.findOne({ _id: this.boardId }); const board = Boards.findOne({ _id: this.boardId });
return board.title; if (board === undefined) {
return null;
} else {
return board.title;
}
} }
}, },
@ -1220,10 +1335,18 @@ Cards.helpers({
getArchived() { getArchived() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
return card.archived; if (card === undefined) {
return null;
} else {
return card.archived;
}
} else if (this.isLinkedBoard()) { } else if (this.isLinkedBoard()) {
const board = Boards.findOne({ _id: this.linkedId }); const board = Boards.findOne({ _id: this.linkedId });
return board.archived; if (board === undefined) {
return null;
} else {
return board.archived;
}
} else { } else {
return this.archived; return this.archived;
} }
@ -1240,7 +1363,11 @@ Cards.helpers({
getRequestedBy() { getRequestedBy() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
return card.requestedBy; if (card === undefined) {
return null;
} else {
return card.requestedBy;
}
} else { } else {
return this.requestedBy; return this.requestedBy;
} }
@ -1257,7 +1384,11 @@ Cards.helpers({
getAssignedBy() { getAssignedBy() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });
return card.assignedBy; if (card === undefined) {
return null;
} else {
return card.assignedBy;
}
} else { } else {
return this.assignedBy; return this.assignedBy;
} }

2
package-lock.json generated
View file

@ -1,6 +1,6 @@
{ {
"name": "wekan", "name": "wekan",
"version": "v4.78.0", "version": "v4.79.0",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View file

@ -1,6 +1,6 @@
{ {
"name": "wekan", "name": "wekan",
"version": "v4.78.0", "version": "v4.79.0",
"description": "Open-Source kanban", "description": "Open-Source kanban",
"private": true, "private": true,
"scripts": { "scripts": {

View file

@ -1524,7 +1524,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
<ul class="toc-list-h1"> <ul class="toc-list-h1">
<li> <li>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v4.78">Wekan REST API v4.78</a> <a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v4.79">Wekan REST API v4.79</a>
</li> </li>
@ -2037,7 +2037,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
<div class="page-wrapper"> <div class="page-wrapper">
<div class="dark-box"></div> <div class="dark-box"></div>
<div class="content"> <div class="content">
<h1 id="wekan-rest-api">Wekan REST API v4.78</h1> <h1 id="wekan-rest-api">Wekan REST API v4.79</h1>
<blockquote> <blockquote>
<p>Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.</p> <p>Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.</p>
</blockquote> </blockquote>

View file

@ -1,7 +1,7 @@
swagger: '2.0' swagger: '2.0'
info: info:
title: Wekan REST API title: Wekan REST API
version: v4.78 version: v4.79
description: | description: |
The REST API allows you to control and extend Wekan with ease. The REST API allows you to control and extend Wekan with ease.

View file

@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"), appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user. # The name of the app as it is displayed to the user.
appVersion = 478, appVersion = 479,
# Increment this for every release. # Increment this for every release.
appMarketingVersion = (defaultText = "4.78.0~2021-01-16"), appMarketingVersion = (defaultText = "4.79.0~2021-01-17"),
# Human-readable presentation of the app version. # Human-readable presentation of the app version.
minUpgradableAppVersion = 0, minUpgradableAppVersion = 0,