From e73556f48fecc0114fcf2bd9b7a7f59756f87841 Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Fri, 15 Dec 2017 13:42:23 -0500 Subject: [PATCH] FIX: disable New Topic button if filtered to a tag and a category that you don't have permission to post in --- .../discourse/controllers/tags-show.js.es6 | 6 ++++++ .../discourse/routes/tags-show.js.es6 | 18 ++++++++++++------ .../discourse/templates/tags/show.hbs | 5 ++++- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/tags-show.js.es6 b/app/assets/javascripts/discourse/controllers/tags-show.js.es6 index 4658b09f384..d1a292c2e88 100644 --- a/app/assets/javascripts/discourse/controllers/tags-show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/tags-show.js.es6 @@ -1,3 +1,4 @@ +import { default as computed } from 'ember-addons/ember-computed-decorators'; import BulkTopicSelection from "discourse/mixins/bulk-topic-selection"; import { default as NavItem, extraNavItemProperties, customNavItemHref } from 'discourse/models/nav-item'; @@ -60,6 +61,11 @@ export default Ember.Controller.extend(BulkTopicSelection, { categories: Ember.computed.alias('site.categoriesList'), + @computed('canCreateTopic', 'category', 'canCreateTopicOnCategory') + createTopicDisabled(canCreateTopic, category, canCreateTopicOnCategory) { + return !canCreateTopic || (category && !canCreateTopicOnCategory); + }, + queryParams: ['order', 'ascending', 'status', 'state', 'search', 'max_posts', 'q'], navItems: function() { diff --git a/app/assets/javascripts/discourse/routes/tags-show.js.es6 b/app/assets/javascripts/discourse/routes/tags-show.js.es6 index db344ef8840..eec3a6b3623 100644 --- a/app/assets/javascripts/discourse/routes/tags-show.js.es6 +++ b/app/assets/javascripts/discourse/routes/tags-show.js.es6 @@ -1,6 +1,7 @@ import Composer from 'discourse/models/composer'; import showModal from "discourse/lib/show-modal"; import { findTopicList } from 'discourse/routes/build-topic-route'; +import PermissionType from 'discourse/models/permission-type'; export default Discourse.Route.extend({ navMode: 'latest', @@ -62,8 +63,10 @@ export default Discourse.Route.extend({ } else { params.filter = `tags/c/${categorySlug}/${tag_id}/l/${filter}`; } - - this.set('category', category); + if (category) { + category.setupGroupsAndPermissions(); + this.set('category', category); + } } else if (this.get("additionalTags")) { params.filter = `tags/intersection/${tag_id}/${this.get('additionalTags').join('/')}`; this.set('category', null); @@ -72,10 +75,13 @@ export default Discourse.Route.extend({ this.set('category', null); } - return findTopicList(this.store, this.topicTrackingState, params.filter, params, {}).then(function(list) { - controller.set('list', list); - controller.set('canCreateTopic', list.get('can_create_topic')); - controller.set('loading', false); + return findTopicList(this.store, this.topicTrackingState, params.filter, params, {}).then((list) => { + controller.setProperties({ + list: list, + canCreateTopic: list.get('can_create_topic'), + loading: false, + canCreateTopicOnCategory: this.get('category.permission') === PermissionType.FULL + }); }); }, diff --git a/app/assets/javascripts/discourse/templates/tags/show.hbs b/app/assets/javascripts/discourse/templates/tags/show.hbs index acdacad94b0..3504bacd987 100644 --- a/app/assets/javascripts/discourse/templates/tags/show.hbs +++ b/app/assets/javascripts/discourse/templates/tags/show.hbs @@ -15,7 +15,10 @@ {{d-button action="deleteTag" icon="trash-o" class="admin-tag btn-danger"}} {{d-button action="renameTag" actionParam=tag icon="pencil" class="admin-tag"}} {{else}} - {{create-topic-button canCreateTopic=canCreateTopic action=(route-action "createTopic")}} + {{create-topic-button + canCreateTopic=canCreateTopic + disabled=createTopicDisabled + action=(route-action "createTopic")}} {{/if}} {{#if showTagFilter}}