mirror of
https://github.com/vale981/Vulcan
synced 2025-03-10 04:26:41 -04:00

* [eslint] update eslint rules & add .eslintignore to ignore non-ready nova packages * [clean-up] nova-voting * [clean-up] [bug] nova-users: missing user parameter * [clean-up] nova-users * [clean-up] nova-subscribe * [clean-up] nova-settings * [clean-up] nova-rss * [clean-up] [bug] nova-posts: correct UsersRemoveDeletePosts * [clean-up] nova-posts * [clean-up] nova-notifications * [clean-up] [bug] nova-newsletter: no error.message on throw error * [clean-up] nova-newsletter * [clean-up] nova-lib * [clean-up] nova-kadira * [clean-up] nova-inject-data * [clean-up] nova-getting-started * [clean-up] nova-forms * [clean-up] nova-events * [clean-up] [bug] nova-embedly: no FlowRouter * [clean-up] nova-embedly * [clean-up] nova-email-templates * [clean-up] nova-email * [clean-up] nova-debug * [clean-up] nova-core * [clean-up] [bug] nova-comments: correct UsersRemoveDeleteComments * [clean-up] nova-comments * [clean-up] [bug] nova-cloudinary: use Telescope.settings.collection instand * [clean-up] nova-cloudinary * [clean-up] nova-categories * [clean-up] nova-base-components * [clean-up] nova-api * [eslint] extends react recommended * [clean-up] for jsx files * [eslint] extends meteor recommended * i forgot this one little change
76 lines
2.3 KiB
JavaScript
76 lines
2.3 KiB
JavaScript
import Telescope from 'meteor/nova:lib';
|
|
import Posts from "meteor/nova:posts";
|
|
import Categories from "./collection.js";
|
|
|
|
Categories.helpers({getCollection: () => Categories});
|
|
Categories.helpers({getCollectionName: () => "categories"});
|
|
|
|
/**
|
|
* @summary Get all of a category's parents
|
|
* @param {Object} category
|
|
*/
|
|
Categories.getParents = function (category) {
|
|
const categoriesArray = [];
|
|
|
|
const getParents = function recurse (category) {
|
|
const parent = Categories.findOne(category.parentId);
|
|
if (parent) {
|
|
categoriesArray.push(parent);
|
|
recurse(parent);
|
|
}
|
|
};
|
|
getParents(category);
|
|
|
|
return categoriesArray;
|
|
};
|
|
Categories.helpers({getParents: function () {return Categories.getParents(this);}});
|
|
|
|
/**
|
|
* @summary Get all of a category's children
|
|
* @param {Object} category
|
|
*/
|
|
Categories.getChildren = function (category) {
|
|
var categoriesArray = [];
|
|
|
|
var getChildren = function recurse (categories) {
|
|
var children = Categories.find({parentId: {$in: _.pluck(categories, "_id")}}).fetch()
|
|
if (children.length > 0) {
|
|
categoriesArray = categoriesArray.concat(children);
|
|
recurse(children);
|
|
}
|
|
};
|
|
getChildren([category]);
|
|
|
|
return categoriesArray;
|
|
};
|
|
Categories.helpers({getChildren: function () {return Categories.getChildren(this);}});
|
|
|
|
/**
|
|
* @summary Get all of a post's categories
|
|
* @param {Object} post
|
|
*/
|
|
Posts.getCategories = function (post) {
|
|
return !!post.categories ? Categories.find({_id: {$in: post.categories}}).fetch() : [];
|
|
};
|
|
Posts.helpers({getCategories: function () {return Posts.getCategories(this);}});
|
|
|
|
/**
|
|
* @summary Get a category's URL
|
|
* @param {Object} category
|
|
*/
|
|
Categories.getUrl = function (category, isAbsolute) {
|
|
isAbsolute = typeof isAbsolute === "undefined" ? false : isAbsolute; // default to false
|
|
const prefix = isAbsolute ? Telescope.utils.getSiteUrl().slice(0,-1) : "";
|
|
// return prefix + FlowRouter.path("postsCategory", category);
|
|
return `${prefix}/?cat=${category.slug}`;
|
|
};
|
|
Categories.helpers({getUrl: function () {return Categories.getUrl(this);}});
|
|
|
|
/**
|
|
* @summary Get a category's counter name
|
|
* @param {Object} category
|
|
*/
|
|
Categories.getCounterName = function (category) {
|
|
return category._id + "-postsCount";
|
|
}
|
|
Categories.helpers({getCounterName: function () {return Categories.getCounterName(this);}});
|