|
|
|
@ -370,6 +370,180 @@ if (Meteor.isServer) { |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @operation edit_custom_field |
|
|
|
|
* @summary Update a Custom Field |
|
|
|
|
* |
|
|
|
|
* @param {string} name the name of the custom field |
|
|
|
|
* @param {string} type the type of the custom field |
|
|
|
|
* @param {string} settings the settings object of the custom field |
|
|
|
|
* @param {boolean} showOnCard should we show the custom field on cards? |
|
|
|
|
* @param {boolean} automaticallyOnCard should the custom fields automatically be added on cards? |
|
|
|
|
* @param {boolean} showLabelOnMiniCard should the label of the custom field be shown on minicards? |
|
|
|
|
* @return_type {_id: string} |
|
|
|
|
*/ |
|
|
|
|
JsonRoutes.add( |
|
|
|
|
'PUT', |
|
|
|
|
'/api/boards/:boardId/custom-fields/:customFieldId', |
|
|
|
|
(req, res) => { |
|
|
|
|
Authentication.checkUserId(req.userId); |
|
|
|
|
|
|
|
|
|
const paramFieldId = req.params.customFieldId; |
|
|
|
|
|
|
|
|
|
if (req.body.hasOwnProperty('name')) { |
|
|
|
|
CustomFields.direct.update( |
|
|
|
|
{ _id: paramFieldId }, |
|
|
|
|
{ $set: { name: req.body.name } }, |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
if (req.body.hasOwnProperty('type')) { |
|
|
|
|
CustomFields.direct.update( |
|
|
|
|
{ _id: paramFieldId }, |
|
|
|
|
{ $set: { type: req.body.type } }, |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
if (req.body.hasOwnProperty('settings')) { |
|
|
|
|
CustomFields.direct.update( |
|
|
|
|
{ _id: paramFieldId }, |
|
|
|
|
{ $set: { settings: req.body.settings } }, |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
if (req.body.hasOwnProperty('showOnCard')) { |
|
|
|
|
CustomFields.direct.update( |
|
|
|
|
{ _id: paramFieldId }, |
|
|
|
|
{ $set: { showOnCard: req.body.showOnCard } }, |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
if (req.body.hasOwnProperty('automaticallyOnCard')) { |
|
|
|
|
CustomFields.direct.update( |
|
|
|
|
{ _id: paramFieldId }, |
|
|
|
|
{ $set: { automaticallyOnCard: req.body.automaticallyOnCard } }, |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
if (req.body.hasOwnProperty('alwaysOnCard')) { |
|
|
|
|
CustomFields.direct.update( |
|
|
|
|
{ _id: paramFieldId }, |
|
|
|
|
{ $set: { alwaysOnCard: req.body.alwaysOnCard } }, |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
if (req.body.hasOwnProperty('showLabelOnMiniCard')) { |
|
|
|
|
CustomFields.direct.update( |
|
|
|
|
{ _id: paramFieldId }, |
|
|
|
|
{ $set: { showLabelOnMiniCard: req.body.showLabelOnMiniCard } }, |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
JsonRoutes.sendResult(res, { |
|
|
|
|
code: 200, |
|
|
|
|
data: { _id: paramFieldId }, |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @operation add_custom_field_dropdown_items |
|
|
|
|
* @summary Update a Custom Field's dropdown items |
|
|
|
|
* |
|
|
|
|
* @param {string[]} items names of the custom field |
|
|
|
|
* @return_type {_id: string} |
|
|
|
|
*/ |
|
|
|
|
JsonRoutes.add( |
|
|
|
|
'POST', |
|
|
|
|
'/api/boards/:boardId/custom-fields/:customFieldId/dropdown-items', |
|
|
|
|
(req, res) => { |
|
|
|
|
Authentication.checkUserId(req.userId); |
|
|
|
|
|
|
|
|
|
if (req.body.hasOwnProperty('items') && Array.isArray(req.body.items)) { |
|
|
|
|
CustomFields.direct.update( |
|
|
|
|
{ _id: req.params.customFieldId }, |
|
|
|
|
{ |
|
|
|
|
$push: { |
|
|
|
|
'settings.dropdownItems': { |
|
|
|
|
$each: req.body.items |
|
|
|
|
.filter(name => typeof name === 'string') |
|
|
|
|
.map(name => ({ |
|
|
|
|
_id: Random.id(6), |
|
|
|
|
name, |
|
|
|
|
})), |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
JsonRoutes.sendResult(res, { |
|
|
|
|
code: 200, |
|
|
|
|
data: { _id: req.params.customFieldId }, |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @operation edit_custom_field_dropdown_item |
|
|
|
|
* @summary Update a Custom Field's dropdown item |
|
|
|
|
* |
|
|
|
|
* @param {string} name names of the custom field |
|
|
|
|
* @return_type {_id: string} |
|
|
|
|
*/ |
|
|
|
|
JsonRoutes.add( |
|
|
|
|
'PUT', |
|
|
|
|
'/api/boards/:boardId/custom-fields/:customFieldId/dropdown-items/:dropdownItemId', |
|
|
|
|
(req, res) => { |
|
|
|
|
Authentication.checkUserId(req.userId); |
|
|
|
|
|
|
|
|
|
if (req.body.hasOwnProperty('name')) { |
|
|
|
|
CustomFields.direct.update( |
|
|
|
|
{ |
|
|
|
|
_id: req.params.customFieldId, |
|
|
|
|
'settings.dropdownItems._id': req.params.dropdownItemId, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
$set: { |
|
|
|
|
'settings.dropdownItems.$': { |
|
|
|
|
_id: req.params.dropdownItemId, |
|
|
|
|
name: req.body.name, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
JsonRoutes.sendResult(res, { |
|
|
|
|
code: 200, |
|
|
|
|
data: { _id: req.params.customFieldId }, |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @operation delete_custom_field_dropdown_item |
|
|
|
|
* @summary Update a Custom Field's dropdown items |
|
|
|
|
* |
|
|
|
|
* @param {string} itemId ID of the dropdown item |
|
|
|
|
* @return_type {_id: string} |
|
|
|
|
*/ |
|
|
|
|
JsonRoutes.add( |
|
|
|
|
'DELETE', |
|
|
|
|
'/api/boards/:boardId/custom-fields/:customFieldId/dropdown-items/:dropdownItemId', |
|
|
|
|
(req, res) => { |
|
|
|
|
Authentication.checkUserId(req.userId); |
|
|
|
|
|
|
|
|
|
CustomFields.direct.update( |
|
|
|
|
{ _id: req.params.customFieldId }, |
|
|
|
|
{ |
|
|
|
|
$pull: { |
|
|
|
|
'settings.dropdownItems': { _id: req.params.dropdownItemId }, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
JsonRoutes.sendResult(res, { |
|
|
|
|
code: 200, |
|
|
|
|
data: { _id: req.params.customFieldId }, |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @operation delete_custom_field |
|
|
|
|
* @summary Delete a Custom Fields attached to a board |
|
|
|
|