1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-01-31 11:37:14 +00:00

Abbreviate quoted text in descriptions in Activity view (#42043).

Patch by Go MAEDA (user:maeda).


git-svn-id: https://svn.redmine.org/redmine/trunk@23428 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA 2025-01-02 02:44:39 +00:00
parent 254e8353be
commit 9e80ee95e1
2 changed files with 39 additions and 2 deletions

View File

@ -414,8 +414,16 @@ module ApplicationHelper
end
def format_activity_description(text)
h(text.to_s.truncate(240).gsub(%r{[\r\n]*<(pre|code)>.*$}m, '...')).
gsub(/[\r\n]+/, "<br />").html_safe
h(
# Limit input to avoid regex performance issues
text.to_s.slice(0, 10240)
# Abbreviate consecutive quoted lines as '> ...', keeping the first line
.gsub(%r{(^>.*?(?:\r?\n))(?:>.*?(?:\r?\n)+)+}m, "\\1> ...\n")
# Remove all content following the first <pre> or <code> tag
.sub(%r{[\r\n]*<(pre|code)>.*$}m, '')
# Truncate the description to a specified length and append '...'
.truncate(240)
).gsub(/[\r\n]+/, "<br>").html_safe
end
def format_version_name(version)

View File

@ -2329,6 +2329,35 @@ class ApplicationHelperTest < Redmine::HelperTest
end
end
def test_format_activity_description_should_strip_quoted_text
text = <<~TEXT
John Smith wrote in #note-1:
> The quick brown fox
> jumps over the lazy dog.
Brick quiz whangs jumpy veldt fox.
> The five
> boxing wizards
> jump quickly.
The quick onyx goblin jumps over the lazy dwarf.
TEXT
expected =
'John Smith wrote in #note-1:<br>' \
'&gt; The quick brown fox<br>' \
'&gt; ...<br>' \
'Brick quiz whangs jumpy veldt fox.<br>' \
'&gt; The five<br>' \
'&gt; ...<br>' \
'The quick onyx goblin jumps over the lazy dwarf.<br>'
assert_equal expected, format_activity_description(text)
end
private
def wiki_links_with_special_characters