summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/components/sidebar/sidebarCustomFields.js5
-rw-r--r--models/cards.js2
-rw-r--r--models/customFields.js10
-rw-r--r--models/export.js2
-rw-r--r--server/migrations.js13
-rw-r--r--server/publications/boards.js2
6 files changed, 24 insertions, 10 deletions
diff --git a/client/components/sidebar/sidebarCustomFields.js b/client/components/sidebar/sidebarCustomFields.js
index ccc8ffb9..bdd8e7a0 100644
--- a/client/components/sidebar/sidebarCustomFields.js
+++ b/client/components/sidebar/sidebarCustomFields.js
@@ -2,7 +2,7 @@ BlazeComponent.extendComponent({
customFields() {
return CustomFields.find({
- boardId: Session.get('currentBoard'),
+ boardIds: {$in: [Session.get('currentBoard')]},
});
},
@@ -103,7 +103,6 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
evt.preventDefault();
const data = {
- boardId: Session.get('currentBoard'),
name: this.find('.js-field-name').value.trim(),
type: this.type.get(),
settings: this.getSettings(),
@@ -114,8 +113,10 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
// insert or update
if (!this.data()._id) {
+ data.boardIds = [Session.get('currentBoard')];
CustomFields.insert(data);
} else {
+ data.boardIds = {$in: [Session.get('currentBoard')]};
CustomFields.update(this.data()._id, {$set: data});
}
diff --git a/models/cards.js b/models/cards.js
index c3bae400..2caecb46 100644
--- a/models/cards.js
+++ b/models/cards.js
@@ -476,7 +476,7 @@ Cards.helpers({
// get all definitions
const definitions = CustomFields.find({
- boardId: this.boardId,
+ boardIds: {$in: [this.boardId]},
}).fetch();
// match right definition to each field
diff --git a/models/customFields.js b/models/customFields.js
index b7ad5467..79f96708 100644
--- a/models/customFields.js
+++ b/models/customFields.js
@@ -4,11 +4,11 @@ CustomFields = new Mongo.Collection('customFields');
* A custom field on a card in the board
*/
CustomFields.attachSchema(new SimpleSchema({
- boardId: {
+ boardIds: {
/**
* the ID of the board
*/
- type: String,
+ type: [String],
},
name: {
/**
@@ -135,7 +135,7 @@ if (Meteor.isServer) {
const paramBoardId = req.params.boardId;
JsonRoutes.sendResult(res, {
code: 200,
- data: CustomFields.find({ boardId: paramBoardId }).map(function (cf) {
+ data: CustomFields.find({ boardIds: {$in: [paramBoardId]} }).map(function (cf) {
return {
_id: cf._id,
name: cf.name,
@@ -159,7 +159,7 @@ if (Meteor.isServer) {
const paramCustomFieldId = req.params.customFieldId;
JsonRoutes.sendResult(res, {
code: 200,
- data: CustomFields.findOne({ _id: paramCustomFieldId, boardId: paramBoardId }),
+ data: CustomFields.findOne({ _id: paramCustomFieldId, boardIds: {$in: [paramBoardId]} }),
});
});
@@ -189,7 +189,7 @@ if (Meteor.isServer) {
boardId: paramBoardId,
});
- const customField = CustomFields.findOne({_id: id, boardId: paramBoardId });
+ const customField = CustomFields.findOne({_id: id, boardIds: {$in: [paramBoardId]} });
customFieldCreation(req.body.authorId, customField);
JsonRoutes.sendResult(res, {
diff --git a/models/export.js b/models/export.js
index 76f2da06..f281b34a 100644
--- a/models/export.js
+++ b/models/export.js
@@ -75,7 +75,7 @@ class Exporter {
result.lists = Lists.find(byBoard, noBoardId).fetch();
result.cards = Cards.find(byBoardNoLinked, noBoardId).fetch();
result.swimlanes = Swimlanes.find(byBoard, noBoardId).fetch();
- result.customFields = CustomFields.find(byBoard, noBoardId).fetch();
+ result.customFields = CustomFields.find({boardIds: {$in: [this.boardId]}}, {fields: {boardId: 0}}).fetch();
result.comments = CardComments.find(byBoard, noBoardId).fetch();
result.activities = Activities.find(byBoard, noBoardId).fetch();
result.rules = Rules.find(byBoard, noBoardId).fetch();
diff --git a/server/migrations.js b/server/migrations.js
index b8915fe9..ced67218 100644
--- a/server/migrations.js
+++ b/server/migrations.js
@@ -525,3 +525,16 @@ Migrations.add('fix-circular-reference_', () => {
}
});
});
+
+Migrations.add('mutate-boardIds-in-customfields', () => {
+ CustomFields.find().forEach((cf) => {
+ CustomFields.update(cf, {
+ $set: {
+ boardIds: [cf.boardId],
+ },
+ $unset: {
+ boardId: "",
+ },
+ }, noValidateMulti);
+ });
+});
diff --git a/server/publications/boards.js b/server/publications/boards.js
index 18c44d2b..6d9d2b9e 100644
--- a/server/publications/boards.js
+++ b/server/publications/boards.js
@@ -78,7 +78,7 @@ Meteor.publishRelations('board', function(boardId) {
this.cursor(Lists.find({ boardId }));
this.cursor(Swimlanes.find({ boardId }));
this.cursor(Integrations.find({ boardId }));
- this.cursor(CustomFields.find({ boardId }, { sort: { name: 1 } }));
+ this.cursor(CustomFields.find({ boardIds: {$in: [boardId]} }, { sort: { name: 1 } }));
// Cards and cards comments
// XXX Originally we were publishing the card documents as a child of the