76 lines
2.4 KiB
JavaScript
76 lines
2.4 KiB
JavaScript
import DiscourseURL from 'discourse/lib/url';
|
|
import { buildCategoryPanel } from 'discourse/components/edit-category-panel';
|
|
import { categoryBadgeHTML } from 'discourse/helpers/category-link';
|
|
import Category from 'discourse/models/category';
|
|
import computed from 'ember-addons/ember-computed-decorators';
|
|
|
|
export default buildCategoryPanel('general', {
|
|
foregroundColors: ['FFFFFF', '000000'],
|
|
canSelectParentCategory: Em.computed.not('category.isUncategorizedCategory'),
|
|
|
|
// background colors are available as a pipe-separated string
|
|
@computed
|
|
backgroundColors() {
|
|
const categories = this.site.get('categoriesList');
|
|
return this.siteSettings.category_colors.split("|").map(function(i) { return i.toUpperCase(); }).concat(
|
|
categories.map(function(c) { return c.color.toUpperCase(); }) ).uniq();
|
|
},
|
|
|
|
@computed
|
|
noCategoryStyle() {
|
|
return this.siteSettings.category_style === 'none';
|
|
},
|
|
|
|
@computed('category.id', 'category.color')
|
|
usedBackgroundColors(categoryId, categoryColor) {
|
|
const categories = this.site.get('categoriesList');
|
|
|
|
// If editing a category, don't include its color:
|
|
return categories.map(function(c) {
|
|
return (categoryId && categoryColor.toUpperCase() === c.color.toUpperCase()) ? null : c.color.toUpperCase();
|
|
}, this).compact();
|
|
},
|
|
|
|
@computed
|
|
parentCategories() {
|
|
return this.site.get('categoriesList').filter(c => !c.get('parentCategory'));
|
|
},
|
|
|
|
@computed(
|
|
'category.parent_category_id',
|
|
'category.categoryName',
|
|
'category.color',
|
|
'category.text_color'
|
|
)
|
|
categoryBadgePreview(parentCategoryId, name, color, textColor) {
|
|
const category = this.get('category');
|
|
const c = Category.create({
|
|
name,
|
|
color,
|
|
text_color: textColor,
|
|
parent_category_id: parseInt(parentCategoryId),
|
|
read_restricted: category.get('read_restricted')
|
|
});
|
|
return categoryBadgeHTML(c, { link: false });
|
|
},
|
|
|
|
// We can change the parent if there are no children
|
|
@computed('category.id')
|
|
subCategories(categoryId) {
|
|
if (Ember.isEmpty(categoryId)) { return null; }
|
|
return Category.list().filterBy('parent_category_id', categoryId);
|
|
},
|
|
|
|
@computed('category.isUncategorizedCategory', 'category.id')
|
|
showDescription(isUncategorizedCategory, categoryId) {
|
|
return !isUncategorizedCategory && categoryId;
|
|
},
|
|
|
|
actions: {
|
|
showCategoryTopic() {
|
|
DiscourseURL.routeTo(this.get('category.topic_url'));
|
|
return false;
|
|
}
|
|
}
|
|
});
|