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
This release adds the following new features:

View file

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

View file

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

View file

@ -874,15 +874,15 @@
"one-card-found": "Eine Karte gefunden",
"n-cards-found": "%s Karten gefunden",
"n-n-of-n-cards-found": "%s%s von %s Karten gefunden",
"operator-board": "board",
"operator-board": "Board",
"operator-board-abbrev": "b",
"operator-swimlane": "swimlane",
"operator-swimlane": "Swimlane",
"operator-swimlane-abbrev": "s",
"operator-list": "Liste",
"operator-list-abbrev": "l",
"operator-label": "Label",
"operator-label-abbrev": "#",
"operator-user": "user",
"operator-user": "Nutzer",
"operator-user-abbrev": "@",
"operator-is": "wird"
}

View file

@ -865,24 +865,24 @@
"dueCardsViewChange-choice-all": "כל המשתמשים",
"dueCardsViewChange-choice-all-description": "מציג את כל הכרטיסים שלא הושלמו ושיש להם *תוקף* מלוחות שלמשתמש יש הרשאה לגשת אליהם.",
"broken-cards": "כרטיסים פגומים",
"board-title-not-found": "Board '%s' not found.",
"swimlane-title-not-found": "Swimlane '%s' not found.",
"list-title-not-found": "List '%s' not found.",
"user-username-not-found": "Username '%s' not found.",
"globalSearch-title": "Search All Boards",
"no-cards-found": "No Cards Found",
"one-card-found": "One Card Found",
"n-cards-found": "%s Cards Found",
"n-n-of-n-cards-found": "%s-%s of %s Cards Found",
"operator-board": "board",
"operator-board-abbrev": "b",
"operator-swimlane": "swimlane",
"operator-swimlane-abbrev": "s",
"board-title-not-found": "הלוח %s לא נמצא.",
"swimlane-title-not-found": "המסלול %s לא נמצא.",
"list-title-not-found": "הרשימה %s לא נמצאה.",
"user-username-not-found": "שם המשתמש %s לא נמצא.",
"globalSearch-title": "חיפוש בכל הלוחות",
"no-cards-found": "לא נמצאו כרטיסים",
"one-card-found": "נמצא כרטיס אחד",
"n-cards-found": "נמצאו %s כרטיסים",
"n-n-of-n-cards-found": "נמצאו %s-%s מתוך %s כרטיסים",
"operator-board": "לוח",
"operator-board-abbrev": "ל",
"operator-swimlane": "מסלול",
"operator-swimlane-abbrev": "מ",
"operator-list": "רשימה",
"operator-list-abbrev": "l",
"operator-list-abbrev": "ר",
"operator-label": "תווית",
"operator-label-abbrev": "#",
"operator-user": "user",
"operator-user": "משתמש",
"operator-user-abbrev": "@",
"operator-is": "הוא"
}

View file

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

2
package-lock.json generated
View file

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

View file

@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v4.78.0",
"version": "v4.79.0",
"description": "Open-Source kanban",
"private": true,
"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">
<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>
@ -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="dark-box"></div>
<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>
<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>

View file

@ -1,7 +1,7 @@
swagger: '2.0'
info:
title: Wekan REST API
version: v4.78
version: v4.79
description: |
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"),
# The name of the app as it is displayed to the user.
appVersion = 478,
appVersion = 479,
# 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.
minUpgradableAppVersion = 0,