Vulcan/packages/nova-categories/lib/methods.js

38 lines
1.2 KiB
JavaScript
Raw Normal View History

import { Meteor } from 'meteor/meteor';
2016-06-23 11:40:35 +09:00
import Posts from "meteor/nova:posts";
2016-06-23 15:00:58 +09:00
import Users from 'meteor/nova:users';
2016-06-23 15:11:56 +09:00
import Categories from "./collection.js";
2016-06-23 11:40:35 +09:00
Meteor.methods({
"categories.deleteById": function (categoryId) {
2015-10-04 12:17:51 +09:00
check(categoryId, String);
const currentUser = this.userId && Users.findOne(this.userId);
2015-10-04 12:17:51 +09:00
if (Users.canDo(currentUser, "categories.remove.all")) {
// delete category
Categories.remove(categoryId);
// find any direct children of this category and make them root categories
Categories.find({parentId: categoryId}).forEach(function (category) {
Categories.update(category._id, {$unset: {parentId: ""}});
});
// find any posts with this category and remove it
var postsUpdated = Posts.update({categories: {$in: [categoryId]}}, {$pull: {categories: categoryId}}, {multi: true});
2015-10-04 12:17:51 +09:00
return postsUpdated;
}
}
});
// assign smart methods on startup so the method code generated takes care of categories' custom fields (extended schema) -> prevent bug on create/edit categories with custom fields
Meteor.startup(() => {
Categories.smartMethods({
createName: "categories.new",
editName: "categories.edit"
});
});