From: Andy Allan Date: Wed, 27 Sep 2023 14:47:44 +0000 (+0100) Subject: Merge pull request #4201 from AntonKhorev/issues-limit-settings X-Git-Tag: live~1540 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/0a046673d630a4618c27559875ce613465d85d3c?hp=a569343e0158ccb23e9329b9a2c856da6beb729b Merge pull request #4201 from AntonKhorev/issues-limit-settings Move max value of issues counter to settings --- diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index 7bc64cb83..55bd0952f 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -26,9 +26,9 @@ module IssuesHelper end def open_issues_count - count = Issue.visible_to(current_user).open.limit(100).size - if count > 99 - tag.span("99+", :class => "badge count-number") + count = Issue.visible_to(current_user).open.limit(Settings.max_issues_count).size + if count >= Settings.max_issues_count + tag.span(I18n.t("count.at_least_pattern", :count => Settings.max_issues_count), :class => "badge count-number") elsif count.positive? tag.span(count, :class => "badge count-number") end diff --git a/config/initializers/config.rb b/config/initializers/config.rb index 983f02266..c1cc522a5 100644 --- a/config/initializers/config.rb +++ b/config/initializers/config.rb @@ -77,6 +77,7 @@ Config.setup do |config| required(:tracepoints_per_page).filled(:int?) required(:max_number_of_way_nodes).filled(:int?) required(:max_number_of_relation_members).filled(:int?) + required(:max_issues_count).filled(:int?) required(:api_timeout).filled(:int?) required(:imagery_blacklist).maybe(:array?) required(:status).filled(:str?, :included_in? => ALLOWED_STATUS) diff --git a/config/locales/en.yml b/config/locales/en.yml index 530dad207..da346e8e8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -5,6 +5,8 @@ en: formats: friendly: "%e %B %Y at %H:%M" blog: "%e %B %Y" + count: + at_least_pattern: "%{count}+" helpers: file: prompt: Choose file diff --git a/config/settings.yml b/config/settings.yml index e228247e0..214f8a284 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -43,6 +43,8 @@ max_note_request_area: 25 default_note_query_limit: 100 # Maximum limit on the number of notes returned by the note search api method max_note_query_limit: 10000 +# Maximum value of open issues counter for moderators, anything equal or greater to this value "n" is shown as "n+" +max_issues_count: 99 # Zoom level to use for postcode results from the geocoder postcode_zoom: 15 # Timeout for API calls in seconds diff --git a/test/helpers/issues_helper_test.rb b/test/helpers/issues_helper_test.rb new file mode 100644 index 000000000..f0b7c884a --- /dev/null +++ b/test/helpers/issues_helper_test.rb @@ -0,0 +1,30 @@ +require "test_helper" + +class IssuesHelperTest < ActionView::TestCase + attr_accessor :current_user + + def test_issues_count + target_user = create(:user) + self.current_user = create(:moderator_user) + + n = (Settings.max_issues_count - 1) + n.times do + create(:note_with_comments) do |note| + create(:issue, :reportable => note, :reported_user => target_user, :assigned_role => "moderator") + end + end + expected = <<~HTML.delete("\n") + #{n} + HTML + assert_dom_equal expected, open_issues_count + + n += 1 + create(:note_with_comments) do |note| + create(:issue, :reportable => note, :reported_user => target_user, :assigned_role => "moderator") + end + expected = <<~HTML.delete("\n") + #{n}+ + HTML + assert_dom_equal expected, open_issues_count + end +end