| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | 
							- CustomFields = new Mongo.Collection('customFields');
 
- CustomFields.attachSchema(new SimpleSchema({
 
-   boardId: {
 
-     type: String,
 
-   },
 
-   name: {
 
-     type: String,
 
-   },
 
-   type: {
 
-     type: String,
 
-     allowedValues: ['text', 'number', 'date', 'dropdown'],
 
-   },
 
-   settings: {
 
-     type: Object,
 
-   },
 
-   'settings.dropdownItems': {
 
-     type: [Object],
 
-     optional: true,
 
-   },
 
-   'settings.dropdownItems.$': {
 
-     type: new SimpleSchema({
 
-       _id: {
 
-         type: String,
 
-       },
 
-       name: {
 
-         type: String,
 
-       },
 
-     }),
 
-   },
 
-   showOnCard: {
 
-     type: Boolean,
 
-   },
 
- }));
 
- CustomFields.allow({
 
-   insert(userId, doc) {
 
-     return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
 
-   },
 
-   update(userId, doc) {
 
-     return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
 
-   },
 
-   remove(userId, doc) {
 
-     return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
 
-   },
 
-   fetch: ['userId', 'boardId'],
 
- });
 
- // not sure if we need this?
 
- //CustomFields.hookOptions.after.update = { fetchPrevious: false };
 
- function customFieldCreation(userId, doc){
 
-   Activities.insert({
 
-     userId,
 
-     activityType: 'createCustomField',
 
-     boardId: doc.boardId,
 
-     customFieldId: doc._id,
 
-   });
 
- }
 
- if (Meteor.isServer) {
 
-   /*Meteor.startup(() => {
 
-     CustomFields._collection._ensureIndex({ boardId: 1});
 
-   });*/
 
-   CustomFields.after.insert((userId, doc) => {
 
-     customFieldCreation(userId, doc);
 
-   });
 
-   CustomFields.after.remove((userId, doc) => {
 
-     Activities.remove({
 
-       customFieldId: doc._id,
 
-     });
 
-   });
 
- }
 
- //CUSTOM FIELD REST API
 
- if (Meteor.isServer) {
 
-   JsonRoutes.add('GET', '/api/boards/:boardId/custom-fields', function (req, res) {
 
-     Authentication.checkUserId( req.userId);
 
-     const paramBoardId = req.params.boardId;
 
-     JsonRoutes.sendResult(res, {
 
-       code: 200,
 
-       data: CustomFields.find({ boardId: paramBoardId }),
 
-     });
 
-   });
 
-   JsonRoutes.add('GET', '/api/boards/:boardId/custom-fields/:customFieldId', function (req, res) {
 
-     Authentication.checkUserId( req.userId);
 
-     const paramBoardId = req.params.boardId;
 
-     const paramCustomFieldId = req.params.customFieldId;
 
-     JsonRoutes.sendResult(res, {
 
-       code: 200,
 
-       data: CustomFields.findOne({ _id: paramCustomFieldId, boardId: paramBoardId }),
 
-     });
 
-   });
 
-   JsonRoutes.add('POST', '/api/boards/:boardId/custom-fields', function (req, res) {
 
-     Authentication.checkUserId( req.userId);
 
-     const paramBoardId = req.params.boardId;
 
-     const id = CustomFields.direct.insert({
 
-       name: req.body.name,
 
-       type: req.body.type,
 
-       settings: req.body.settings,
 
-       showOnCard: req.body.showOnCard,
 
-       boardId: paramBoardId,
 
-     });
 
-     const customField = CustomFields.findOne({_id: id, boardId: paramBoardId });
 
-     customFieldCreation(req.body.authorId, customField);
 
-     JsonRoutes.sendResult(res, {
 
-       code: 200,
 
-       data: {
 
-         _id: id,
 
-       },
 
-     });
 
-   });
 
-   JsonRoutes.add('DELETE', '/api/boards/:boardId/custom-fields/:customFieldId', function (req, res) {
 
-     Authentication.checkUserId( req.userId);
 
-     const paramBoardId = req.params.boardId;
 
-     const id = req.params.customFieldId;
 
-     CustomFields.remove({ _id: id, boardId: paramBoardId });
 
-     JsonRoutes.sendResult(res, {
 
-       code: 200,
 
-       data: {
 
-         _id: id,
 
-       },
 
-     });
 
-   });
 
- }
 
 
  |