REFACTOR: Extract navigation into a component
This commit is contained in:
parent
d753adab84
commit
422f990615
|
@ -0,0 +1,22 @@
|
|||
import computed from "ember-addons/ember-computed-decorators";
|
||||
|
||||
export default Ember.Component.extend({
|
||||
tagName: '',
|
||||
|
||||
@computed('category')
|
||||
showCategoryNotifications(category) {
|
||||
return category && this.currentUser;
|
||||
},
|
||||
|
||||
@computed()
|
||||
categories() {
|
||||
return Discourse.Category.list();
|
||||
},
|
||||
|
||||
@computed("filterMode")
|
||||
navItems(filterMode) {
|
||||
// we don't want to show the period in the navigation bar since it's in a dropdown
|
||||
if (filterMode.indexOf("top/") === 0) { filterMode = filterMode.replace("top/", ""); }
|
||||
return Discourse.NavItem.buildList(null, { filterMode });
|
||||
}
|
||||
});
|
|
@ -3,17 +3,4 @@ import computed from "ember-addons/ember-computed-decorators";
|
|||
export default Ember.Controller.extend({
|
||||
discovery: Ember.inject.controller(),
|
||||
discoveryTopics: Ember.inject.controller('discovery/topics'),
|
||||
|
||||
@computed()
|
||||
categories() {
|
||||
return Discourse.Category.list();
|
||||
},
|
||||
|
||||
@computed("filterMode")
|
||||
navItems(filterMode) {
|
||||
// we don't want to show the period in the navigation bar since it's in a dropdown
|
||||
if (filterMode.indexOf("top/") === 0) { filterMode = filterMode.replace("top/", ""); }
|
||||
return Discourse.NavItem.buildList(null, { filterMode });
|
||||
}
|
||||
|
||||
});
|
||||
|
|
|
@ -49,7 +49,6 @@ export default (filterArg, params) => {
|
|||
category,
|
||||
filterMode: filterMode,
|
||||
noSubcategories: params && params.no_subcategories,
|
||||
canEditCategory: category.get('can_edit')
|
||||
});
|
||||
},
|
||||
|
||||
|
|
|
@ -12,10 +12,6 @@ const DiscoveryCategoriesRoute = Discourse.Route.extend(OpenComposer, {
|
|||
this.render("discovery/categories", { outlet: "list-container" });
|
||||
},
|
||||
|
||||
beforeModel() {
|
||||
this.controllerFor("navigation/categories").set("filterMode", "categories");
|
||||
},
|
||||
|
||||
model() {
|
||||
const style = !this.site.mobileView && this.siteSettings.desktop_category_page_style;
|
||||
const parentCategory = this.get("model.parentCategory");
|
||||
|
@ -81,7 +77,7 @@ const DiscoveryCategoriesRoute = Discourse.Route.extend(OpenComposer, {
|
|||
controller.set("model", model);
|
||||
|
||||
this.controllerFor("navigation/categories").setProperties({
|
||||
canCreateCategory: model.get("can_create_category"),
|
||||
showCategoryAdmin: model.get("can_create_category"),
|
||||
canCreateTopic: model.get("can_create_topic"),
|
||||
});
|
||||
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
{{bread-crumbs categories=categories category=category noSubcategories=noSubcategories}}
|
||||
|
||||
{{#if showCategoryAdmin}}
|
||||
{{categories-admin-dropdown
|
||||
create=createCategory
|
||||
reorder=reorderCategories}}
|
||||
{{/if}}
|
||||
|
||||
{{navigation-bar navItems=navItems filterMode=filterMode category=category}}
|
||||
|
||||
{{#if showCategoryNotifications}}
|
||||
{{category-notifications-button category=category}}
|
||||
{{/if}}
|
||||
|
||||
{{create-topic-button
|
||||
canCreateTopic=canCreateTopic
|
||||
action=createTopic
|
||||
disabled=createTopicDisabled}}
|
||||
|
||||
{{#if category.can_edit}}
|
||||
{{d-button
|
||||
class="btn-default edit-category"
|
||||
action=editCategory
|
||||
icon="wrench"
|
||||
label="category.edit_long"}}
|
||||
{{/if}}
|
|
@ -1,10 +1,9 @@
|
|||
{{#d-section bodyClass="navigation-categories" class="navigation-container"}}
|
||||
{{bread-crumbs categories=categories}}
|
||||
|
||||
{{navigation-bar navItems=navItems filterMode=filterMode}}
|
||||
|
||||
{{#if canCreateCategory}}
|
||||
{{categories-admin-dropdown}}
|
||||
{{/if}}
|
||||
{{create-topic-button canCreateTopic=canCreateTopic action=(route-action "createTopic")}}
|
||||
{{d-navigation
|
||||
filterMode="categories"
|
||||
showCategoryAdmin=showCategoryAdmin
|
||||
createCategory=(route-action "createCategory")
|
||||
reorderCategories=(route-action "reorderCategories")
|
||||
canCreateTopic=canCreateTopic
|
||||
createTopic=(route-action "createTopic")}}
|
||||
{{/d-section}}
|
||||
|
|
|
@ -11,24 +11,14 @@
|
|||
</section>
|
||||
|
||||
<div class='category-navigation'>
|
||||
{{bread-crumbs categories=categories
|
||||
{{d-navigation
|
||||
category=category
|
||||
noSubcategories=noSubcategories}}
|
||||
|
||||
{{navigation-bar navItems=navItems filterMode=filterMode category=category}}
|
||||
|
||||
{{#if currentUser}}
|
||||
{{category-notifications-button category=category}}
|
||||
{{/if}}
|
||||
|
||||
{{create-topic-button
|
||||
filterMode=filterMode
|
||||
noSubcategories=noSubcategories
|
||||
canCreateTopic=canCreateTopic
|
||||
disabled=cannotCreateTopicOnCategory
|
||||
action=(route-action "createTopic")}}
|
||||
|
||||
{{#if canEditCategory}}
|
||||
{{d-button class="btn-default edit-category" action="editCategory" actionParam=category icon="wrench" label="category.edit_long"}}
|
||||
{{/if}}
|
||||
createTopic=(route-action "createTopic")
|
||||
createTopicDisabled=cannotCreateTopicOnCategory
|
||||
editCategory=(route-action "editCategory" category)}}
|
||||
|
||||
{{plugin-outlet name="category-navigation" args=(hash category=category)}}
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
{{#d-section bodyClass="navigation-topics" class="navigation-container" scrollTop="false"}}
|
||||
{{bread-crumbs categories=categories}}
|
||||
|
||||
{{navigation-bar navItems=navItems filterMode=filterMode}}
|
||||
|
||||
{{create-topic-button canCreateTopic=canCreateTopic action=(route-action "createTopic")}}
|
||||
{{d-navigation
|
||||
filterMode=filterMode
|
||||
canCreateTopic=canCreateTopic
|
||||
createTopic=(route-action "createTopic")}}
|
||||
{{/d-section}}
|
||||
|
|
|
@ -5,7 +5,6 @@ import { on } from "ember-addons/ember-computed-decorators";
|
|||
|
||||
export default DropdownSelectBoxComponent.extend({
|
||||
classNames: "categories-admin-dropdown",
|
||||
actionNames: { create: "createCategory", reorder: "reorderCategories" },
|
||||
|
||||
@on("didReceiveAttrs")
|
||||
_setComponentOptions() {
|
||||
|
@ -42,8 +41,7 @@ export default DropdownSelectBoxComponent.extend({
|
|||
actions: {
|
||||
onSelect(value) {
|
||||
value = this.defaultOnSelect(value);
|
||||
|
||||
this.sendAction(`actionNames.${value}`);
|
||||
this.get(value)();
|
||||
this.set("value", null);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue