triggers.js 1.2 KB

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