[#69599] Do not show News widget when module deactivated

https://community.openproject.org/work_packages/69599
This commit is contained in:
Alexander Brandon Coles
2025-12-19 12:39:03 -03:00
parent bb20008ed1
commit db52cdb048
3 changed files with 14 additions and 10 deletions
@@ -28,13 +28,13 @@ See COPYRIGHT and LICENSE files for more details.
++#%>
<%=
widget_wrapper do |container|
if no_news?
if newest.empty?
render(Primer::Beta::Blankslate.new(test_selector: "news-widget-empty")) do |component|
component.with_visual_icon(icon: :megaphone)
component.with_heading(tag: :h3).with_content(title)
component.with_description { t("grids.widgets.empty") }
if project.present? && can_manage_news?
if project_scoped? && can_manage_news?
component.with_primary_action(
tag: :a,
href: new_project_news_path(project),
@@ -38,17 +38,13 @@ module Grids
option :limit, default: -> { NEWS_LIMIT }
def no_news?
news_module_disabled? || newest.empty?
end
def newest
@newest ||= news.limit(limit).to_a
end
def news
@news ||=
if project
if project_scoped?
project.news.visible(current_user).newest_first
else
::News
@@ -62,10 +58,16 @@ module Grids
Project.human_attribute_name(:news)
end
def news_module_disabled?
project.present? && !project.module_enabled?("news")
def render?
global_scoped? || project.module_enabled?("news")
end
private
def project_scoped? = project.present?
def global_scoped? = !project_scoped?
def can_manage_news?
current_user.allowed_in_project?(:manage_news, project)
end
@@ -121,7 +121,9 @@ RSpec.describe Grids::Widgets::News, type: :component do
project.enabled_module_names -= %w[news]
end
it_behaves_like "empty-state with action"
it "renders nothing" do
expect(rendered_component.to_s).to be_empty
end
end
context "when the user does not have permission to manage news" do