From 736a1d7f0159989635d3d5a2f5cccf233d6caa71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Wed, 7 Feb 2024 13:01:39 +0100 Subject: [PATCH] Show error if gantt module enabled as default without work packages https://community.openproject.org/work_packages/52660 --- .../settings/projects_settings_controller.rb | 24 +++++++++++++++++++ config/locales/en.yml | 1 + 2 files changed, 25 insertions(+) diff --git a/app/controllers/admin/settings/projects_settings_controller.rb b/app/controllers/admin/settings/projects_settings_controller.rb index aa90d96147dc..84a4d34c8e94 100644 --- a/app/controllers/admin/settings/projects_settings_controller.rb +++ b/app/controllers/admin/settings/projects_settings_controller.rb @@ -30,8 +30,32 @@ module Admin::Settings class ProjectsSettingsController < ::Admin::SettingsController menu_item :settings_projects + before_action :validate_enabled_modules, only: :update + def default_breadcrumb t(:label_project_plural) end + + private + + def validate_enabled_modules + return if settings_params[:default_projects_modules].blank? + + enabled_modules = settings_params[:default_projects_modules].map(&:to_sym) + + module_missing_deps = OpenProject::AccessControl + .modules + .detect { |m| m[:dependencies] && enabled_modules.include?(m[:name]) && (m[:dependencies] & enabled_modules) != m[:dependencies] } + + if module_missing_deps + flash[:error] = I18n.t( + 'settings.projects.missing_dependencies', + module: I18n.t("project_module_#{module_missing_deps[:name]}"), + dependencies: module_missing_deps[:dependencies].map { |dep| I18n.t("project_module_#{dep}") }.join(', ') + ) + + redirect_to action: :show + end + end end end diff --git a/config/locales/en.yml b/config/locales/en.yml index 8e8f58bbc011..6da24c970d70 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -3011,6 +3011,7 @@ en: other: "Other" passwords: "Passwords" projects: + missing_dependencies: "Project module %{module} was checked which depends on %{dependencies}. You need to check these dependencies as well." section_new_projects: "Settings for new projects" section_project_overview: "Settings for project overview list" session: "Session"