"Edit this section" button is missing for headings rendered as multiline HTML (#42332).

Patch by Abe Tomoaki (user:abetomo).


git-svn-id: https://svn.redmine.org/redmine/trunk@23802 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA
2025-05-27 01:55:37 +00:00
parent 2c9699ece1
commit 9beb9d9c5c
2 changed files with 41 additions and 1 deletions

View File

@@ -1386,7 +1386,7 @@ module ApplicationHelper
<|
$)
}x
HEADING_RE = /(<h(\d)( [^>]+)?>(.+?)<\/h(\d)>)/i unless const_defined?(:HEADING_RE)
HEADING_RE = /(<h(\d)( [^>]+)?>(.+?)<\/h(\d)>)/im unless const_defined?(:HEADING_RE)
def parse_sections(text, project, obj, attr, only_path, options)
return unless options[:edit_section_links]

View File

@@ -1732,6 +1732,46 @@ class ApplicationHelperTest < Redmine::HelperTest
end
end
def test_section_edit_links_with_multiline_heading
raw = <<~RAW
# Wiki
## `Foo` Bar
The heading above generates multiline HTML.
Don't assume heading tags are always single-line.
```
<h2>
<code>Foo</code> Bar</h2>
```
RAW
@project = Project.find(1)
set_language_if_valid 'en'
with_settings :text_formatting => 'common_mark' do
result =
textilizable(
raw,
:edit_section_links =>
{:controller => 'wiki', :action => 'edit',
:project_id => '1', :id => 'Test'}
).delete("\n")
assert_match(
Regexp.new(
'<div class="contextual heading-2" title="Edit this section" id="section-2">' \
'<a class="icon-only icon-edit" href="/projects/1/wiki/Test/edit\?section=2">' \
'<svg class="s18 icon-svg" aria-hidden="true"><use href="/assets/icons-.*\.svg#icon--edit"></use></svg>' \
'<span class="icon-label">Edit this section</span>' \
'</a></div>' \
'<a name="Foo-Bar"></a>' \
'<h2 ><code>Foo</code> Bar<a href="#Foo-Bar" class="wiki-anchor">&para;</a></h2>'
),
result
)
end
end
def test_default_formatter
with_settings :text_formatting => 'unknown' do
text = 'a *link*: http://www.example.net/'