From 7e2447a876d2472569d54c9919fc96ec57d818f2 Mon Sep 17 00:00:00 2001 From: David Battersby Date: Thu, 14 Aug 2025 20:44:46 +0400 Subject: [PATCH] Revert "FEATURE: enable topic creation button for read only categories (#34211)" This reverts commit 44bf488acd959983d6f4a13520748a62635cb0d6. --- .../app/components/composer-container.gjs | 1 - .../app/components/create-topic-button.gjs | 38 ++++++++++++++---- .../discourse/app/components/d-navigation.gjs | 39 ++++++++++++++++++- .../app/controllers/discovery/list.js | 5 --- .../discourse/app/helpers/category-link.js | 5 --- .../discourse/app/models/composer.js | 10 ++--- .../discourse/app/services/composer.js | 17 +------- .../tests/acceptance/category-banner-test.js | 8 ++-- .../discourse/tests/acceptance/tags-test.js | 4 +- .../addon/components/category-chooser.js | 19 +-------- .../addon/components/category-row.gjs | 25 +----------- .../common/select-kit/category-row.scss | 9 ----- config/locales/client.en.yml | 3 +- .../composer/default_to_subcategory_spec.rb | 33 ++++------------ spec/system/drafts_dropdown_spec.rb | 5 +-- .../components/sidebar-new-topic-button.gjs | 30 +++++++++++++- .../spec/system/sidebar_topic_button_spec.rb | 4 +- 17 files changed, 123 insertions(+), 132 deletions(-) diff --git a/app/assets/javascripts/discourse/app/components/composer-container.gjs b/app/assets/javascripts/discourse/app/components/composer-container.gjs index a206ba502cd75..118b8db9834de 100644 --- a/app/assets/javascripts/discourse/app/components/composer-container.gjs +++ b/app/assets/javascripts/discourse/app/components/composer-container.gjs @@ -254,7 +254,6 @@ export default class ComposerContainer extends Component { disabled=this.composer.disableCategoryChooser scopedCategoryId=this.composer.scopedCategoryId prioritizedCategoryId=this.composer.prioritizedCategoryId - readOnlyCategoryId=this.composer.readOnlyCategoryId }} /> {{#if this.canCreateTopic}} - + + <:button> + + + <:tooltip> + {{#if @disabled}} + + {{/if}} + + {{#if @showDrafts}} diff --git a/app/assets/javascripts/discourse/app/components/d-navigation.gjs b/app/assets/javascripts/discourse/app/components/d-navigation.gjs index 2257c9bdd0b7f..d1a785a599ce1 100644 --- a/app/assets/javascripts/discourse/app/components/d-navigation.gjs +++ b/app/assets/javascripts/discourse/app/components/d-navigation.gjs @@ -5,6 +5,7 @@ import { hash } from "@ember/helper"; import { action } from "@ember/object"; import { dependentKeyCompat } from "@ember/object/compat"; import { service } from "@ember/service"; +import { htmlSafe } from "@ember/template"; import { tagName } from "@ember-decorators/component"; import { and, gt } from "truth-helpers"; import BreadCrumbs from "discourse/components/bread-crumbs"; @@ -117,6 +118,35 @@ export default class DNavigation extends Component { } } + @discourseComputed( + "createTopicDisabled", + "categoryReadOnlyBanner", + "canCreateTopicOnTag", + "tag.id" + ) + createTopicButtonDisabled( + createTopicDisabled, + categoryReadOnlyBanner, + canCreateTopicOnTag, + tagId + ) { + if (tagId && !canCreateTopicOnTag) { + return true; + } else if (categoryReadOnlyBanner) { + return false; + } + return createTopicDisabled; + } + + @discourseComputed("categoryReadOnlyBanner") + createTopicClass(categoryReadOnlyBanner) { + let classNames = ["btn-default"]; + if (categoryReadOnlyBanner) { + classNames.push("disabled"); + } + return classNames.join(" "); + } + @discourseComputed("category.can_edit") showCategoryEdit(canEdit) { return canEdit; @@ -196,7 +226,11 @@ export default class DNavigation extends Component { @action clickCreateTopicButton() { - this.createTopic(); + if (this.categoryReadOnlyBanner) { + this.dialog.alert({ message: htmlSafe(this.categoryReadOnlyBanner) }); + } else { + this.createTopic(); + } }