triggers.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. Triggers = new Mongo.Collection('triggers');
  2. Triggers.mutations({
  3. rename(description) {
  4. return {
  5. $set: {
  6. description,
  7. },
  8. };
  9. },
  10. });
  11. Triggers.before.insert((userId, doc) => {
  12. doc.createdAt = new Date();
  13. doc.updatedAt = doc.createdAt;
  14. });
  15. Triggers.before.update((userId, doc, fieldNames, modifier) => {
  16. modifier.$set = modifier.$set || {};
  17. modifier.$set.updatedAt = new Date();
  18. });
  19. Triggers.allow({
  20. insert(userId, doc) {
  21. return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
  22. },
  23. update(userId, doc) {
  24. return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
  25. },
  26. remove(userId, doc) {
  27. return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
  28. },
  29. });
  30. Triggers.helpers({
  31. description() {
  32. return this.desc;
  33. },
  34. getRule() {
  35. return Rules.findOne({
  36. triggerId: this._id,
  37. });
  38. },
  39. fromList() {
  40. return Lists.findOne(this.fromId);
  41. },
  42. toList() {
  43. return Lists.findOne(this.toId);
  44. },
  45. findList(title) {
  46. return Lists.findOne({
  47. title,
  48. });
  49. },
  50. labels() {
  51. const boardLabels = this.board().labels;
  52. const cardLabels = _.filter(boardLabels, label => {
  53. return _.contains(this.labelIds, label._id);
  54. });
  55. return cardLabels;
  56. },
  57. });
  58. if (Meteor.isServer) {
  59. Meteor.startup(() => {
  60. Triggers._collection._ensureIndex({ modifiedAt: -1 });
  61. });
  62. }
  63. export default Triggers;