From 67b99a88fce72fb2e7a350d2e461e5633bd0d152 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Thu, 9 Nov 2023 17:43:16 +0200 Subject: [PATCH 001/904] Updated translations. --- imports/i18n/data/de.i18n.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/i18n/data/de.i18n.json b/imports/i18n/data/de.i18n.json index 5accee4c2..aef777616 100644 --- a/imports/i18n/data/de.i18n.json +++ b/imports/i18n/data/de.i18n.json @@ -143,7 +143,7 @@ "attachmentDeletePopup-title": "Anhang löschen?", "attachments": "Anhänge", "auto-watch": "Neue Boards nach Erstellung automatisch beobachten", - "avatar-too-big": "Das Profilbild ist zu groß (__Größe__ max)", + "avatar-too-big": "Das Profilbild ist zu groß (__size__ max)", "back": "Zurück", "board-change-color": "Farbe ändern", "board-change-background-image": "Hintergrundbild ändern", From a9932823c4f453cd7f3d39989333f0b59e5b4f1c Mon Sep 17 00:00:00 2001 From: Martin Filser Date: Tue, 7 Nov 2023 22:52:19 +0100 Subject: [PATCH 002/904] ReactiveMiniMongoIndex for Server-Side - fixes: #5069 (move card rule on checklist complete doesn't work) --- imports/reactiveCache.js | 126 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 120 insertions(+), 6 deletions(-) diff --git a/imports/reactiveCache.js b/imports/reactiveCache.js index 0ac95c92f..11e63b238 100644 --- a/imports/reactiveCache.js +++ b/imports/reactiveCache.js @@ -1321,9 +1321,63 @@ ReactiveCache = { }, } +// Server isn't reactive, so search for the data always. +ReactiveMiniMongoIndexServer = { + getSubTasksWithParentId(parentId, addSelect = {}, options = {}) { + let ret = [] + if (parentId) { + ret = ReactiveCache.getCards( + { parentId, + ...addSelect, + }, options); + } + return ret; + }, + getChecklistsWithCardId(cardId, addSelect = {}, options = {}) { + let ret = [] + if (cardId) { + ret = ReactiveCache.getChecklists( + { cardId, + ...addSelect, + }, options); + } + return ret; + }, + getChecklistItemsWithChecklistId(checklistId, addSelect = {}, options = {}) { + let ret = [] + if (checklistId) { + ret = ReactiveCache.getChecklistItems( + { checklistId, + ...addSelect, + }, options); + } + return ret; + }, + getCardCommentsWithCardId(cardId, addSelect = {}, options = {}) { + let ret = [] + if (cardId) { + ret = ReactiveCache.getCardComments( + { cardId, + ...addSelect, + }, options); + } + return ret; + }, + getActivityWithId(activityId, addSelect = {}, options = {}) { + let ret = [] + if (activityId) { + ret = ReactiveCache.getActivities( + { _id: activityId, + ...addSelect, + }, options); + } + return ret; + } +} + // Client side little MiniMongo DB "Index" -ReactiveMiniMongoIndex = { - getSubTasksWithParentId(parentId, addSelect = {}, options) { +ReactiveMiniMongoIndexClient = { + getSubTasksWithParentId(parentId, addSelect = {}, options = {}) { let ret = [] if (parentId) { const select = {addSelect, options} @@ -1345,7 +1399,7 @@ ReactiveMiniMongoIndex = { } return ret; }, - getChecklistsWithCardId(cardId, addSelect = {}, options) { + getChecklistsWithCardId(cardId, addSelect = {}, options = {}) { let ret = [] if (cardId) { const select = {addSelect, options} @@ -1367,7 +1421,7 @@ ReactiveMiniMongoIndex = { } return ret; }, - getChecklistItemsWithChecklistId(checklistId, addSelect = {}, options) { + getChecklistItemsWithChecklistId(checklistId, addSelect = {}, options = {}) { let ret = [] if (checklistId) { const select = {addSelect, options} @@ -1384,12 +1438,18 @@ ReactiveMiniMongoIndex = { } ret = this.__checklistItemsWithId.get(EJSON.stringify(select)); if (ret) { + if (Meteor.isServer) { + ret[checklistId] = ReactiveCache.getChecklistItems( + {checklistId: checklistId, + ...addSelect + }, options); + } ret = ret[checklistId] || []; } } return ret; }, - getCardCommentsWithCardId(cardId, addSelect = {}, options) { + getCardCommentsWithCardId(cardId, addSelect = {}, options = {}) { let ret = [] if (cardId) { const select = {addSelect, options} @@ -1411,7 +1471,7 @@ ReactiveMiniMongoIndex = { } return ret; }, - getActivityWithId(activityId, addSelect = {}, options) { + getActivityWithId(activityId, addSelect = {}, options = {}) { let ret = [] if (activityId) { const select = {addSelect, options} @@ -1435,4 +1495,58 @@ ReactiveMiniMongoIndex = { } } +// global Reactive MiniMongo Index Cache class to avoid big overhead while searching for the same data often again +// This class calls 2 implementation, for server and client code +// +// having this class here has several advantages: +// - The Programmer hasn't to care about in which context he call's this class +// - having all queries together in 1 class to make it possible to see which queries in Wekan happens, e.g. with console.log +ReactiveMiniMongoIndex = { + getSubTasksWithParentId(parentId, addSelect = {}, options = {}) { + let ret; + if (Meteor.isServer) { + ret = ReactiveMiniMongoIndexServer.getSubTasksWithParentId(parentId, addSelect, options); + } else { + ret = ReactiveMiniMongoIndexClient.getSubTasksWithParentId(parentId, addSelect, options); + } + return ret; + }, + getChecklistsWithCardId(cardId, addSelect = {}, options = {}) { + let ret; + if (Meteor.isServer) { + ret = ReactiveMiniMongoIndexServer.getChecklistsWithCardId(cardId, addSelect, options); + } else { + ret = ReactiveMiniMongoIndexClient.getChecklistsWithCardId(cardId, addSelect, options); + } + return ret; + }, + getChecklistItemsWithChecklistId(checklistId, addSelect = {}, options = {}) { + let ret; + if (Meteor.isServer) { + ret = ReactiveMiniMongoIndexServer.getChecklistItemsWithChecklistId(checklistId, addSelect, options); + } else { + ret = ReactiveMiniMongoIndexClient.getChecklistItemsWithChecklistId(checklistId, addSelect, options); + } + return ret; + }, + getCardCommentsWithCardId(cardId, addSelect = {}, options = {}) { + let ret; + if (Meteor.isServer) { + ret = ReactiveMiniMongoIndexServer.getCardCommentsWithCardId(cardId, addSelect, options); + } else { + ret = ReactiveMiniMongoIndexClient.getCardCommentsWithCardId(cardId, addSelect, options); + } + return ret; + }, + getActivityWithId(activityId, addSelect = {}, options = {}) { + let ret; + if (Meteor.isServer) { + ret = ReactiveMiniMongoIndexServer.getActivityWithId(activityId, addSelect, options); + } else { + ret = ReactiveMiniMongoIndexClient.getActivityWithId(activityId, addSelect, options); + } + return ret; + } +} + export { ReactiveCache, ReactiveMiniMongoIndex }; From 86fbfd3c50d8dccd493f93c55c5e4c7b1ebb42ea Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Thu, 9 Nov 2023 21:09:54 +0200 Subject: [PATCH 003/904] Updated ChangeLog. --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 09434db92..b69f63c83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,15 @@ Note: [How to upgrade WeKan](https://github.com/wekan/wekan/issues/4585) +# Upcoming WeKan ® release + +This release fixes the following bugs: + +- [Fix move card rule on checklist complete doesn't work, with ReactiveMiniMongoIndex for Server-Side](https://github.com/wekan/wekan/pull/5194). + Thanks to mfilser. + +Thanks to above GitHub users for their contributions and translators for their translations. + # v7.16 2023-11-09 WeKan ® release This release fixes the following bugs: From f7d5d65c0cb9e99fc1832a94c40afa080d0f3a53 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Thu, 9 Nov 2023 21:23:01 +0200 Subject: [PATCH 004/904] v7.17 --- CHANGELOG.md | 2 +- Stackerfile.yml | 2 +- package-lock.json | 2 +- package.json | 2 +- public/api/wekan.html | 6 +++--- public/api/wekan.yml | 2 +- sandstorm-pkgdef.capnp | 4 ++-- snapcraft.yaml | 8 ++++---- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b69f63c83..4565feb98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,7 @@ Note: [How to upgrade WeKan](https://github.com/wekan/wekan/issues/4585) -# Upcoming WeKan ® release +# v7.17 2023-11-09 WeKan ® release This release fixes the following bugs: diff --git a/Stackerfile.yml b/Stackerfile.yml index 62a52b1cd..8f8869017 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v7.16.0" +appVersion: "v7.17.0" files: userUploads: - README.md diff --git a/package-lock.json b/package-lock.json index 06532b3d2..fbeff2679 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v7.16.0", + "version": "v7.17.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 661f8a669..f60e4c4b8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v7.16.0", + "version": "v7.17.0", "description": "Open-Source kanban", "private": true, "repository": { diff --git a/public/api/wekan.html b/public/api/wekan.html index dcde1f45e..84e784122 100644 --- a/public/api/wekan.html +++ b/public/api/wekan.html @@ -7,7 +7,7 @@ - Wekan REST API v7.16 + Wekan REST API v7.17 @@ -1548,7 +1548,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc