Compare commits

...
27 Commits
Author SHA1 Message Date
Lauri Ojansivu a4564bed3a v2.35 2019-03-01 15:42:23 +02:00
Lauri Ojansivu 4ef3e587cb [Add Filter fix back](https://github.com/wekan/wekan/issues/2213),
because there was no bug in filter fix.
2019-03-01 14:48:25 +02:00
Lauri Ojansivu d6259836e0 - [Add Filter fix back](https://github.com/wekan/wekan/issues/2213),
because there was no bug in filter fix.

Thanks to xet7 !

Closes #2213,
related #2209
2019-03-01 14:41:09 +02:00
Lauri Ojansivu ef246cfef3 v2.34 2019-03-01 07:10:50 +02:00
Lauri Ojansivu 90dd0ddb94 Revert [Filter fix](https://github.com/wekan/wekan/issues/2213) because of
[mongodb data tampered](https://github.com/wekan/wekan-snap/issues/83).

Thanks to xet7 !
2019-03-01 07:05:49 +02:00
Lauri Ojansivu bd2c54398b v2.33 2019-02-28 23:31:39 +02:00
Lauri Ojansivu e65776f9f0 [Upgrade Node.js to v8.15.1](https://github.com/wekan/wekan/commit/5cafdd9878ab4b6123024ec33279ccdae75f554f).
Thanks to Node.js developers and xet7 !
2019-02-28 23:29:13 +02:00
Lauri Ojansivu 5cafdd9878 Upgrade node to v8.15.1
Thanks to xet7 !
2019-02-28 23:25:03 +02:00
Lauri Ojansivu 49882a05d1 v2.32 2019-02-28 23:01:56 +02:00
Lauri Ojansivu 8e36a2bc83 [Fix filtering in swimlane view](https://github.com/wekan/wekan/commit/49229e1723de14cdc66dc6480624bba426d35e36)
that was [broken since v2.29](https://github.com/wekan/wekan/issues/2213).

Thanks to andresmanelli !

Closes #2213,
Related #2209
2019-02-28 22:57:40 +02:00
Lauri Ojansivu 24e47195e5 - [Fix](https://github.com/wekan/wekan/commit/49229e1723de14cdc66dc6480624bba426d35e36)
[Filtering in swimlane view is broken since v2.29](https://github.com/wekan/wekan/issues/2213).

Thanks to andresmanelli !

Related #2209
2019-02-28 22:45:37 +02:00
Lauri Ojansivu 4b37958140 Merge branch 'devel' into edge 2019-02-28 22:39:02 +02:00
Lauri Ojansivu 3edff32bde [Performance improvements](https://github.com/wekan/wekan/pull/2214), thanks to justinr1234:
- New indexes for queries that were missing an index;
- Bulk querying documents to reduce the number of mongo queries when loading a board;
- Ensure oplog is being used to query the database by providing a `sort` key when `limit` is used querying the `boards` collection.
2019-02-28 22:37:28 +02:00
Lauri Ojansivu 78c5e0f7ef Merge branch 'justinr1234-wekan-perf-improvements' into devel 2019-02-28 22:32:33 +02:00
Andrés Manelli 49229e1723 Fix filter in swimlanes view 2019-02-28 20:46:50 +01:00
Lauri Ojansivu 14e2bfd1bf Merge branch 'wekan-perf-improvements' of https://github.com/justinr1234/wekan into justinr1234-wekan-perf-improvements 2019-02-28 21:19:50 +02:00
Justin Reynolds 3c49e2d0ed Performance Enhancements 2019-02-28 11:44:29 -06:00
Lauri Ojansivu d5bc66c9a4 v2.31 2019-02-28 12:41:07 +02:00
Lauri Ojansivu 4f6977668b Update translations. 2019-02-28 12:37:36 +02:00
Lauri Ojansivu 17826c28e5 - [Fix copy card](https://github.com/wekan/wekan/issues/2210).
Thanks to andresmanelli !

Closes #2210,
Related #2209
2019-02-28 12:34:48 +02:00
Lauri Ojansivu a3d71dd694 Merge remote-tracking branch 'andresmanelli/edge' into edge 2019-02-28 12:29:14 +02:00
Andrés Manelli a5c39342ba Fix card copy 2019-02-28 08:10:33 +01:00
Lauri Ojansivu ad75c541cf v2.30 2019-02-28 00:52:36 +02:00
Lauri Ojansivu cd46cbeb8f Add new [Template features](https://github.com/wekan/wekan/issues/2209):
- [Fix popup title. Add element title modification](https://github.com/wekan/wekan/commit/888e1ad5d3e32be53283aa32198057f669f3d706);
- [Copy template attachments](https://github.com/wekan/wekan/commit/abb71083215462d91b084c4de13af0b130638e4d);
- [Standarize copy functions. Match labels by name](https://github.com/wekan/wekan/commit/da21a2a410c9b905de89d66236748e0c8f5357ea).

Thanks to andresmanelli !

Related #2209
2019-02-28 00:44:13 +02:00
Andrés Manelli 888e1ad5d3 Fix popup title
Add element title modification
2019-02-27 21:50:08 +01:00
Andrés Manelli abb7108321 Copy template attachments 2019-02-27 21:50:08 +01:00
Andrés Manelli da21a2a410 Standarize copy functions. Match labels by name 2019-02-27 21:50:08 +01:00
70 changed files with 226 additions and 102 deletions

No files matched your search

+1
View File
@@ -91,3 +91,4 @@ wekan:accounts-cas
wekan-scrollbar
mquandalle:perfect-scrollbar
mdg:meteor-apm-agent
meteorhacks:unblock
+1
View File
@@ -94,6 +94,7 @@ meteorhacks:collection-utils@1.2.0
meteorhacks:meteorx@1.4.1
meteorhacks:picker@1.0.3
meteorhacks:subs-manager@1.6.4
meteorhacks:unblock@1.1.0
meteorspark:util@0.2.0
minifier-css@1.2.16
minifier-js@2.2.2
+55
View File
@@ -1,3 +1,58 @@
# v2.35 2019-03-01 Wekan release
This release fixes the following bugs:
- [Add Filter fix back](https://github.com/wekan/wekan/issues/2213),
because there was no bug in filter fix.
Thanks to GitHub user xet7 for contributions.
# v2.34 2019-03-01 Wekan release
This release tried to fix following bugs, but did not fix anything:
- Revert [Filter fix](https://github.com/wekan/wekan/issues/2213) because of
[mongodb data tampered](https://github.com/wekan/wekan-snap/issues/83).
This was added back at Wekan v2.35.
Thanks to GitHub user xet7 for contributions.
# v2.33 2019-02-28 Wekan release
This release adds the following upgrades:
- [Upgrade Node.js to v8.15.1](https://github.com/wekan/wekan/commit/5cafdd9878ab4b6123024ec33279ccdae75f554f).
Thanks to Node.js developers and GitHub user xet7 for contributions.
# v2.32 2019-02-28 Wekan release
This release adds the following [performance improvements](https://github.com/wekan/wekan/pull/2214), thanks to justinr1234:
- New indexes for queries that were missing an index;
- Bulk querying documents to reduce the number of mongo queries when loading a board;
- Ensure oplog is being used to query the database by providing a `sort` key when `limit` is used querying the `boards` collection.
and fixes the following bugs related to [Template features](https://github.com/wekan/wekan/issues/2209), thanks to andresmanelli:
- [Fix filtering in swimlane view](https://github.com/wekan/wekan/commit/49229e1723de14cdc66dc6480624bba426d35e36) that was [broken since v2.29](https://github.com/wekan/wekan/issues/2213).
Thanks to above GitHub users for their contributions.
# v2.31 2019-02-28 Wekan release
This release fixes the following bugs related to [Template features](https://github.com/wekan/wekan/issues/2209), thanks to GitHub user andresmanelli:
- [Fix copy card](https://github.com/wekan/wekan/issues/2210).
# v2.30 2019-02-28 Wekan release
This release adds the following new [Template features](https://github.com/wekan/wekan/issues/2209), thanks to GitHub user andresmanelli:
- [Fix popup title. Add element title modification](https://github.com/wekan/wekan/commit/888e1ad5d3e32be53283aa32198057f669f3d706);
- [Copy template attachments](https://github.com/wekan/wekan/commit/abb71083215462d91b084c4de13af0b130638e4d);
- [Standarize copy functions. Match labels by name](https://github.com/wekan/wekan/commit/da21a2a410c9b905de89d66236748e0c8f5357ea).
# v2.29 2019-02-27 Wekan release
This release adds the following new features:
+1 -1
View File
@@ -87,7 +87,7 @@ ARG DEFAULT_AUTHENTICATION_METHOD
# ENV BUILD_DEPS="paxctl"
ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential python python3 python3-distutils git ca-certificates gcc-7" \
DEBUG=false \
NODE_VERSION=v8.15.0 \
NODE_VERSION=v8.15.1 \
METEOR_RELEASE=1.6.0.1 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v2.29.0"
appVersion: "v2.35.0"
files:
userUploads:
- README.md
+4 -4
View File
@@ -460,11 +460,11 @@ Template.copyCardPopup.events({
'click .js-done'() {
const card = Cards.findOne(Session.get('currentCard'));
const lSelect = $('.js-select-lists')[0];
card.listId = lSelect.options[lSelect.selectedIndex].value;
listId = lSelect.options[lSelect.selectedIndex].value;
const slSelect = $('.js-select-swimlanes')[0];
card.swimlaneId = slSelect.options[slSelect.selectedIndex].value;
const swimlaneId = slSelect.options[slSelect.selectedIndex].value;
const bSelect = $('.js-select-boards')[0];
card.boardId = bSelect.options[bSelect.selectedIndex].value;
const boardId = bSelect.options[bSelect.selectedIndex].value;
const textarea = $('#copy-card-title');
const title = textarea.val().trim();
// insert new card to the bottom of new list
@@ -473,7 +473,7 @@ Template.copyCardPopup.events({
if (title) {
card.title = title;
card.coverId = '';
const _id = card.copy();
const _id = card.copy(boardId, swimlaneId, listId);
// In case the filter is active we need to add the newly inserted card in
// the list of exceptions -- cards that are not filtered. Otherwise the
// card will disappear instantly.
+4
View File
@@ -90,6 +90,10 @@ template(name="linkCardPopup")
input.primary.confirm.js-done(type="button" value="{{_ 'link'}}")
template(name="searchElementPopup")
form
label
| {{_ 'title'}}
input.js-element-title(type="text" placeholder="{{_ 'title'}}" autofocus required)
unless isTemplateSearch
label {{_ 'boards'}}:
.link-board-wrapper
+8 -9
View File
@@ -616,20 +616,21 @@ BlazeComponent.extendComponent({
},
'click .js-minicard'(evt) {
// 0. Common
const title = $('.js-element-title').val().trim();
if (!title)
return;
const element = Blaze.getData(evt.currentTarget);
element.title = title;
let _id = '';
if (!this.isTemplateSearch || this.isCardTemplateSearch) {
// Card insertion
// 1. Common
element.boardId = this.boardId;
element.listId = this.listId;
element.swimlaneId = this.swimlaneId;
element.sort = Lists.findOne(this.listId).cards().count();
// 1.A From template
if (this.isTemplateSearch) {
element.type = 'cardType-card';
element.linkedId = '';
_id = element.copy();
_id = element.copy(this.boardId, this.swimlaneId, this.listId);
// 1.B Linked card
} else {
delete element._id;
@@ -640,21 +641,19 @@ BlazeComponent.extendComponent({
Filter.addException(_id);
// List insertion
} else if (this.isListTemplateSearch) {
element.boardId = this.boardId;
element.sort = Swimlanes.findOne(this.swimlaneId).lists().count();
element.type = 'list';
_id = element.copy(this.swimlaneId);
_id = element.copy(this.boardId, this.swimlaneId);
} else if (this.isSwimlaneTemplateSearch) {
element.boardId = this.boardId;
element.sort = Boards.findOne(this.boardId).swimlanes().count();
element.type = 'swimlalne';
_id = element.copy();
_id = element.copy(this.boardId);
} else if (this.isBoardTemplateSearch) {
board = Boards.findOne(element.linkedId);
board.sort = Boards.find({archived: false}).count();
board.type = 'board';
board.title = element.title;
delete board.slug;
delete board.members;
_id = board.copy();
}
Popup.close();
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "نسخ رابط البطاقة إلى الحافظة",
"linkCardPopup-title": "ربط البطاقة",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "بحث",
"copyCardPopup-title": "نسخ البطاقة",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Сигурни ли сте, че искате да изтриете този чеклист?",
"copy-card-link-to-clipboard": "Копирай връзката на картата в клипборда",
"linkCardPopup-title": "Свържи картата",
"searchCardPopup-title": "Търсене на карта",
"searchElementPopup-title": "Търсене",
"copyCardPopup-title": "Копирай картата",
"copyChecklistToManyCardsPopup-title": "Копирай чеклисти в други карти",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copia l'enllaç de la ftixa al porta-retalls",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Buscar Fitxa",
"searchElementPopup-title": "Cerca",
"copyCardPopup-title": "Copia la fitxa",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Títols de fitxa i Descripcions de destí en aquest format JSON",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Opravdu chcete smazat tento checklist?",
"copy-card-link-to-clipboard": "Kopírovat adresu karty do mezipaměti",
"linkCardPopup-title": "Propojit kartu",
"searchCardPopup-title": "Hledat Kartu",
"searchElementPopup-title": "Hledat",
"copyCardPopup-title": "Kopírovat kartu",
"copyChecklistToManyCardsPopup-title": "Kopírovat checklist do více karet",
"copyChecklistToManyCardsPopup-instructions": "Názvy a popisy cílové karty v tomto formátu JSON",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Wollen Sie die Checkliste wirklich löschen?",
"copy-card-link-to-clipboard": "Kopiere Link zur Karte in die Zwischenablage",
"linkCardPopup-title": "Karte verknüpfen",
"searchCardPopup-title": "Karte suchen",
"searchElementPopup-title": "Suche",
"copyCardPopup-title": "Karte kopieren",
"copyChecklistToManyCardsPopup-title": "Checklistenvorlage in mehrere Karten kopieren",
"copyChecklistToManyCardsPopup-instructions": "Titel und Beschreibungen der Zielkarten im folgenden JSON-Format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Αναζήτηση",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Serĉi",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copiar enlace a tarjeta en el portapapeles",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Buscar",
"copyCardPopup-title": "Copiar Tarjeta",
"copyChecklistToManyCardsPopup-title": "Copiar Plantilla Checklist a Muchas Tarjetas",
"copyChecklistToManyCardsPopup-instructions": "Títulos y Descripciones de la Tarjeta Destino en este formato JSON",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "¿Seguro que quieres eliminar la lista de verificación?",
"copy-card-link-to-clipboard": "Copiar el enlace de la tarjeta al portapapeles",
"linkCardPopup-title": "Enlazar tarjeta",
"searchCardPopup-title": "Buscar tarjeta",
"searchElementPopup-title": "Buscar",
"copyCardPopup-title": "Copiar la tarjeta",
"copyChecklistToManyCardsPopup-title": "Copiar la plantilla de la lista de verificación en varias tarjetas",
"copyChecklistToManyCardsPopup-instructions": "Títulos y descripciones de las tarjetas de destino en formato JSON",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Kopiatu txartela arbelera",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Bilatu",
"copyCardPopup-title": "Kopiatu txartela",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "مطمئنا چک لیست پاک شود؟",
"copy-card-link-to-clipboard": "درج پیوند کارت در حافظه",
"linkCardPopup-title": "ارتباط دادن کارت",
"searchCardPopup-title": "جستجوی کارت",
"searchElementPopup-title": "جستجو",
"copyCardPopup-title": "کپی کارت",
"copyChecklistToManyCardsPopup-title": "کپی قالب کارت به کارت‌های متعدد",
"copyChecklistToManyCardsPopup-instructions": "عنوان و توضیحات کارت مقصد در این قالب JSON",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Oletko varma että haluat poistaa tarkistuslistan?",
"copy-card-link-to-clipboard": "Kopioi kortin linkki leikepöydälle",
"linkCardPopup-title": "Linkitä kortti",
"searchCardPopup-title": "Etsi kortti",
"searchElementPopup-title": "Etsi",
"copyCardPopup-title": "Kopioi kortti",
"copyChecklistToManyCardsPopup-title": "Kopioi tarkistuslistan malli monille korteille",
"copyChecklistToManyCardsPopup-instructions": "Kohde korttien otsikot ja kuvaukset JSON muodossa",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Êtes-vous sûr de vouloir supprimer la checklist ?",
"copy-card-link-to-clipboard": "Copier le lien vers la carte dans le presse-papier",
"linkCardPopup-title": "Lier une Carte",
"searchCardPopup-title": "Chercher une Carte",
"searchElementPopup-title": "Chercher",
"copyCardPopup-title": "Copier la carte",
"copyChecklistToManyCardsPopup-title": "Copier le modèle de checklist vers plusieurs cartes",
"copyChecklistToManyCardsPopup-instructions": "Titres et descriptions des cartes de destination dans ce format JSON",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "למחוק את רשימת המשימות?",
"copy-card-link-to-clipboard": "העתקת קישור הכרטיס ללוח הגזירים",
"linkCardPopup-title": "קישור כרטיס",
"searchCardPopup-title": "חיפוש כרטיס",
"searchElementPopup-title": "חיפוש",
"copyCardPopup-title": "העתק כרטיס",
"copyChecklistToManyCardsPopup-title": "העתקת תבנית רשימת מטלות למגוון כרטיסים",
"copyChecklistToManyCardsPopup-instructions": "כותרות ותיאורים של כרטיסי יעד בתצורת JSON זו",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "क्या आप वाकई जांचसूची हटाना चाहते हैं?",
"copy-card-link-to-clipboard": "कॉपी कार्ड क्लिपबोर्ड करने के लिए लिंक",
"linkCardPopup-title": "कार्ड कड़ी",
"searchCardPopup-title": "कार्ड खोज",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "कार्ड प्रतिलिपि",
"copyChecklistToManyCardsPopup-title": "कई कार्ड के लिए जांचसूची खाके की प्रतिलिपि बनाएँ",
"copyChecklistToManyCardsPopup-instructions": "इस JSON प्रारूप में गंतव्य कार्ड शीर्षक और विवरण",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Kártya hivatkozásának másolása a vágólapra",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Keresés",
"copyCardPopup-title": "Kártya másolása",
"copyChecklistToManyCardsPopup-title": "Ellenőrzőlista sablon másolása több kártyára",
"copyChecklistToManyCardsPopup-instructions": "A célkártyák címe és a leírások ebben a JSON formátumban",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Cari",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Sei sicuro di voler eliminare la checklist?",
"copy-card-link-to-clipboard": "Copia link della scheda sulla clipboard",
"linkCardPopup-title": "Collega scheda",
"searchCardPopup-title": "Cerca scheda",
"searchElementPopup-title": "Cerca",
"copyCardPopup-title": "Copia Scheda",
"copyChecklistToManyCardsPopup-title": "Copia template checklist su più schede",
"copyChecklistToManyCardsPopup-instructions": "Titolo e la descrizione della scheda di destinazione in questo formato JSON",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "カードへのリンクをクリップボードにコピー",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "検索",
"copyCardPopup-title": "カードをコピー",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "დარწმუნებული ხართ, რომ გსურთ კატალოგის წაშლა ? ",
"copy-card-link-to-clipboard": "დააკოპირეთ ბარათის ბმული clipboard-ზე",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "ძებნა",
"copyCardPopup-title": "ბარათის ასლი",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "클립보드에 카드의 링크가 복사되었습니다.",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "검색",
"copyCardPopup-title": "카드 복사",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Сигурни ли сте, че искате да изтриете този чеклист?",
"copy-card-link-to-clipboard": "Копирай връзката на картата в клипборда",
"linkCardPopup-title": "Свържи картата",
"searchCardPopup-title": "Търсене на карта",
"searchElementPopup-title": "Търсене",
"copyCardPopup-title": "Копирай картата",
"copyChecklistToManyCardsPopup-title": "Копирай чеклисти в други карти",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Kopieer kaart link naar klembord",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Zoek",
"copyCardPopup-title": "Kopieer kaart",
"copyChecklistToManyCardsPopup-title": "Checklist sjabloon kopiëren naar meerdere kaarten",
"copyChecklistToManyCardsPopup-instructions": "Doel kaart titels en omschrijvingen in dit JSON formaat",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Czy jesteś pewien, że chcesz usunąć listę zadań?",
"copy-card-link-to-clipboard": "Skopiuj łącze karty do schowka",
"linkCardPopup-title": "Podepnij kartę",
"searchCardPopup-title": "Znajdź kartę",
"searchElementPopup-title": "Wyszukaj",
"copyCardPopup-title": "Skopiuj kartę",
"copyChecklistToManyCardsPopup-title": "Kopiuj szablon listy zadań do wielu kart",
"copyChecklistToManyCardsPopup-instructions": "Docelowe tytuły i opisy kart są w formacie JSON",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Tem certeza que quer excluir a lista de verificação?",
"copy-card-link-to-clipboard": "Copiar link do cartão para a área de transferência",
"linkCardPopup-title": "Ligar Cartão",
"searchCardPopup-title": "Procurar Cartão",
"searchElementPopup-title": "Buscar",
"copyCardPopup-title": "Copiar o cartão",
"copyChecklistToManyCardsPopup-title": "Copiar modelo de lista de verificação para vários cartões",
"copyChecklistToManyCardsPopup-instructions": "Títulos e descrições do cartão de destino neste formato JSON",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Caută",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Вы уверены, что хотите удалить контрольный список?",
"copy-card-link-to-clipboard": "Копировать ссылку на карточку в буфер обмена",
"linkCardPopup-title": "Карточка-ссылка",
"searchCardPopup-title": "Найти карточку",
"searchElementPopup-title": "Поиск",
"copyCardPopup-title": "Копировать карточку",
"copyChecklistToManyCardsPopup-title": "Копировать шаблон контрольного списка в несколько карточек",
"copyChecklistToManyCardsPopup-instructions": "Названия и описания целевых карт в формате JSON",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Pretraga",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Är du säker på att du vill radera checklista?",
"copy-card-link-to-clipboard": "Kopiera kortlänk till urklipp",
"linkCardPopup-title": "Länka kort",
"searchCardPopup-title": "Sök kort",
"searchElementPopup-title": "Sök",
"copyCardPopup-title": "Kopiera kort",
"copyChecklistToManyCardsPopup-title": "Kopiera checklist-mallen till flera kort",
"copyChecklistToManyCardsPopup-instructions": "Destinationskorttitlar och beskrivningar i detta JSON-format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "தேடு ",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "ค้นหา",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Kontrol listesini silmek istediğinden emin misin?",
"copy-card-link-to-clipboard": "Kartın linkini kopyala",
"linkCardPopup-title": "Bağlantı kartı",
"searchCardPopup-title": "Kart Ara",
"searchElementPopup-title": "Arama",
"copyCardPopup-title": "Kartı Kopyala",
"copyChecklistToManyCardsPopup-title": "Yapılacaklar Listesi şemasını birden çok karta kopyala",
"copyChecklistToManyCardsPopup-instructions": "Hedef Kart Başlıkları ve Açıklamaları bu JSON formatında",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Скопіювати посилання на картку в буфер обміну",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchElementPopup-title": "Search",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "确定要删除清单吗?",
"copy-card-link-to-clipboard": "复制卡片链接到剪贴板",
"linkCardPopup-title": "链接卡片",
"searchCardPopup-title": "搜索卡片",
"searchElementPopup-title": "搜索",
"copyCardPopup-title": "复制卡片",
"copyChecklistToManyCardsPopup-title": "复制清单模板至多个卡片",
"copyChecklistToManyCardsPopup-instructions": "以JSON格式表示目标卡片的标题和描述",
+1 -1
View File
@@ -207,7 +207,7 @@
"confirm-checklist-delete-dialog": "你確定要刪除待辦清單嗎?",
"copy-card-link-to-clipboard": "將卡片連結複製到剪貼簿",
"linkCardPopup-title": "連結卡片",
"searchCardPopup-title": "搜尋卡片",
"searchElementPopup-title": "搜尋",
"copyCardPopup-title": "複製卡片",
"copyChecklistToManyCardsPopup-title": "複製待辦清單的樣板到多個卡片",
"copyChecklistToManyCardsPopup-instructions": "使用此 JSON 格式來表示目標卡片的標題和描述",
+4
View File
@@ -27,6 +27,10 @@ Attachments = new FS.Collection('attachments', {
if (Meteor.isServer) {
Meteor.startup(() => {
Attachments.files._ensureIndex({ cardId: 1 });
});
Attachments.allow({
insert(userId, doc) {
return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
+1 -2
View File
@@ -326,8 +326,7 @@ Boards.helpers({
archived: false,
}).forEach((swimlane) => {
swimlane.type = 'swimlane';
swimlane.boardId = _id;
swimlane.copy(oldId);
swimlane.copy(_id);
});
},
/**
+31 -1
View File
@@ -272,13 +272,41 @@ Cards.allow({
});
Cards.helpers({
copy() {
copy(boardId, swimlaneId, listId) {
const oldBoard = Boards.findOne(this.boardId);
const oldBoardLabels = oldBoard.labels;
// Get old label names
const oldCardLabels = _.pluck(_.filter(oldBoardLabels, (label) => {
return _.contains(this.labelIds, label._id);
}), 'name');
const newBoard = Boards.findOne(boardId);
const newBoardLabels = newBoard.labels;
const newCardLabels = _.pluck(_.filter(newBoardLabels, (label) => {
return _.contains(oldCardLabels, label.name);
}), '_id');
const oldId = this._id;
const oldCard = Cards.findOne(oldId);
delete this._id;
delete this.labelIds;
this.labelIds= newCardLabels;
this.boardId = boardId;
this.swimlaneId = swimlaneId;
this.listId = listId;
const _id = Cards.insert(this);
// Copy attachments
oldCard.attachments().forEach((att) => {
att.cardId = _id;
delete att._id;
return Attachments.insert(att);
});
// copy checklists
Checklists.find({cardId: oldId}).forEach((ch) => {
// REMOVE verify copy with arguments
ch.copy(_id);
});
@@ -286,11 +314,13 @@ Cards.helpers({
Cards.find({parentId: oldId}).forEach((subtask) => {
subtask.parentId = _id;
subtask._id = null;
// REMOVE verify copy with arguments instead of insert?
Cards.insert(subtask);
});
// copy card comments
CardComments.find({cardId: oldId}).forEach((cmt) => {
// REMOVE verify copy with arguments
cmt.copy(_id);
});
+1
View File
@@ -189,6 +189,7 @@ function publishChekListUncompleted(userId, doc){
if (Meteor.isServer) {
Meteor.startup(() => {
ChecklistItems._collection._ensureIndex({ checklistId: 1 });
ChecklistItems._collection._ensureIndex({ cardId: 1 });
});
ChecklistItems.after.update((userId, doc, fieldNames) => {
+3 -3
View File
@@ -98,9 +98,9 @@ function customFieldCreation(userId, doc){
}
if (Meteor.isServer) {
/*Meteor.startup(() => {
CustomFields._collection._ensureIndex({ boardId: 1});
});*/
Meteor.startup(() => {
CustomFields._collection._ensureIndex({ boardId: 1 });
});
CustomFields.after.insert((userId, doc) => {
customFieldCreation(userId, doc);
+4
View File
@@ -88,6 +88,10 @@ Integrations.allow({
//INTEGRATIONS REST API
if (Meteor.isServer) {
Meteor.startup(() => {
Integrations._collection._ensureIndex({ boardId: 1 });
});
/**
* @operation get_all_integrations
* @summary Get all integrations in board
+6 -7
View File
@@ -137,12 +137,15 @@ Lists.allow({
});
Lists.helpers({
copy(swimlaneId) {
copy(boardId, swimlaneId) {
const oldId = this._id;
const oldSwimlaneId = this.swimlaneId || null;
this.boardId = boardId;
this.swimlaneId = swimlaneId;
let _id = null;
existingListWithSameName = Lists.findOne({
boardId: this.boardId,
boardId,
title: this.title,
archived: false,
});
@@ -160,11 +163,7 @@ Lists.helpers({
listId: oldId,
archived: false,
}).forEach((card) => {
card.type = 'cardType-card';
card.listId = _id;
card.boardId = this.boardId;
card.swimlaneId = swimlaneId;
card.copy();
card.copy(boardId, swimlaneId, _id);
});
},
+10 -8
View File
@@ -101,8 +101,10 @@ Swimlanes.allow({
});
Swimlanes.helpers({
copy(oldBoardId) {
copy(boardId) {
const oldId = this._id;
const oldBoardId = this.boardId;
this.boardId = boardId;
delete this._id;
const _id = Swimlanes.insert(this);
@@ -118,8 +120,8 @@ Swimlanes.helpers({
Lists.find(query).forEach((list) => {
list.type = 'list';
list.swimlaneId = oldId;
list.boardId = this.boardId;
list.copy(_id);
list.boardId = boardId;
list.copy(boardId, _id);
});
},
@@ -131,14 +133,14 @@ Swimlanes.helpers({
},
lists() {
return Lists.find(Filter.mongoSelector({
return Lists.find({
boardId: this.boardId,
swimlaneId: {$in: [this._id, '']},
archived: false,
}), { sort: ['sort'] });
}, { sort: ['sort'] });
},
allLists() {
myLists() {
return Lists.find({ swimlaneId: this._id });
},
@@ -187,7 +189,7 @@ Swimlanes.mutations({
archive() {
if (this.isTemplateSwimlane()) {
this.lists().forEach((list) => {
this.myLists().forEach((list) => {
return list.archive();
});
}
@@ -196,7 +198,7 @@ Swimlanes.mutations({
restore() {
if (this.isTemplateSwimlane()) {
this.allLists().forEach((list) => {
this.myLists().forEach((list) => {
return list.restore();
});
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v2.29.0",
"version": "v2.35.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
+2 -2
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 = 231,
appVersion = 237,
# Increment this for every release.
appMarketingVersion = (defaultText = "2.29.0~2019-02-27"),
appMarketingVersion = (defaultText = "2.35.0~2019-03-01"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
+37 -12
View File
@@ -60,6 +60,7 @@ Meteor.publish('archivedBoards', function() {
});
Meteor.publishRelations('board', function(boardId) {
this.unblock();
check(boardId, String);
const thisUserId = this.userId;
@@ -72,7 +73,8 @@ Meteor.publishRelations('board', function(boardId) {
{ permission: 'public' },
{ members: { $elemMatch: { userId: this.userId, isActive: true }}},
],
}, { limit: 1 }), function(boardId, board) {
// Sort required to ensure oplog usage
}, { limit: 1, sort: { _id: 1 } }), function(boardId, board) {
this.cursor(Lists.find({ boardId }));
this.cursor(Swimlanes.find({ boardId }));
this.cursor(Integrations.find({ boardId }));
@@ -99,24 +101,47 @@ Meteor.publishRelations('board', function(boardId) {
//
// And in the meantime our code below works pretty well -- it's not even a
// hack!
// Gather queries and send in bulk
const cardComments = this.join(CardComments);
cardComments.selector = (_ids) => ({ cardId: _ids });
const attachments = this.join(Attachments);
attachments.selector = (_ids) => ({ cardId: _ids });
const checklists = this.join(Checklists);
checklists.selector = (_ids) => ({ cardId: _ids });
const checklistItems = this.join(ChecklistItems);
checklistItems.selector = (_ids) => ({ cardId: _ids });
const parentCards = this.join(Cards);
parentCards.selector = (_ids) => ({ parentId: _ids });
const boards = this.join(Boards);
const subCards = this.join(Cards);
this.cursor(Cards.find({ boardId }), function(cardId, card) {
if (card.type === 'cardType-linkedCard') {
const impCardId = card.linkedId;
this.cursor(Cards.find({ _id: impCardId }));
this.cursor(CardComments.find({ cardId: impCardId }));
this.cursor(Attachments.find({ cardId: impCardId }));
this.cursor(Checklists.find({ cardId: impCardId }));
this.cursor(ChecklistItems.find({ cardId: impCardId }));
subCards.push(impCardId);
cardComments.push(impCardId);
attachments.push(impCardId);
checklists.push(impCardId);
checklistItems.push(impCardId);
} else if (card.type === 'cardType-linkedBoard') {
this.cursor(Boards.find({ _id: card.linkedId}));
boards.push(card.linkedId);
}
this.cursor(CardComments.find({ cardId }));
this.cursor(Attachments.find({ cardId }));
this.cursor(Checklists.find({ cardId }));
this.cursor(ChecklistItems.find({ cardId }));
this.cursor(Cards.find({ parentId: cardId }));
cardComments.push(cardId);
attachments.push(cardId);
checklists.push(cardId);
checklistItems.push(cardId);
parentCards.push(cardId);
});
// Send bulk queries for all found ids
subCards.send();
cardComments.send();
attachments.send();
checklists.send();
checklistItems.send();
boards.send();
if (board.members) {
// Board members. This publication also includes former board members that
// aren't members anymore but may have some activities attached to them in
+1 -1
View File
@@ -81,7 +81,7 @@ parts:
wekan:
source: .
plugin: nodejs
node-engine: 8.15.0
node-engine: 8.15.1
node-packages:
- node-gyp
- node-pre-gyp
+1 -1
View File
@@ -2,7 +2,7 @@
set -euxo pipefail
BUILD_DEPS="bsdtar gnupg wget curl bzip2 python git ca-certificates perl-Digest-SHA"
NODE_VERSION=v8.15.0
NODE_VERSION=v8.15.1
#METEOR_RELEASE=1.6.0.1 - for Stacksmith, meteor-1.8 branch that could have METEOR@1.8.1-beta.8 or newer
USE_EDGE=false
METEOR_EDGE=1.5-beta.17