Browse Source

Fixed: right-aligned table of contents (TOC) not working with markdown (#16236).

git-svn-id: http://svn.redmine.org/redmine/trunk@12989 e93f8b46-1217-0410-a6f0-8f06a7374b81
tags/2.6.0
Jean-Philippe Lang 10 years ago
parent
commit
273aa42900
2 changed files with 20 additions and 3 deletions
  1. 4
    3
      app/helpers/application_helper.rb
  2. 16
    0
      test/unit/helpers/application_helper_test.rb

+ 4
- 3
app/helpers/application_helper.rb View File

@@ -978,19 +978,20 @@ module ApplicationHelper
end
end

TOC_RE = /<p>\{\{([<>]?)toc\}\}<\/p>/i unless const_defined?(:TOC_RE)
TOC_RE = /<p>\{\{((<|&lt;)|(>|&gt;))?toc\}\}<\/p>/i unless const_defined?(:TOC_RE)

# Renders the TOC with given headings
def replace_toc(text, headings)
text.gsub!(TOC_RE) do
left_align, right_align = $2, $3
# Keep only the 4 first levels
headings = headings.select{|level, anchor, item| level <= 4}
if headings.empty?
''
else
div_class = 'toc'
div_class << ' right' if $1 == '>'
div_class << ' left' if $1 == '<'
div_class << ' right' if right_align
div_class << ' left' if left_align
out = "<ul class=\"#{div_class}\"><li>"
root = headings.map(&:first).min
current = root

+ 16
- 0
test/unit/helpers/application_helper_test.rb View File

@@ -1167,6 +1167,22 @@ RAW
assert textilizable(raw).gsub("\n", "").include?(expected)
end

def test_toc_with_textile_formatting_should_be_parsed
with_settings :text_formatting => 'textile' do
assert_select_in textilizable("{{toc}}\n\nh1. Heading"), 'ul.toc li', :text => 'Heading'
assert_select_in textilizable("{{<toc}}\n\nh1. Heading"), 'ul.toc.left li', :text => 'Heading'
assert_select_in textilizable("{{>toc}}\n\nh1. Heading"), 'ul.toc.right li', :text => 'Heading'
end
end

def test_toc_with_markdown_formatting_should_be_parsed
with_settings :text_formatting => 'markdown' do
assert_select_in textilizable("{{toc}}\n\n# Heading"), 'ul.toc li', :text => 'Heading'
assert_select_in textilizable("{{<toc}}\n\n# Heading"), 'ul.toc.left li', :text => 'Heading'
assert_select_in textilizable("{{>toc}}\n\n# Heading"), 'ul.toc.right li', :text => 'Heading'
end
end

def test_section_edit_links
raw = <<-RAW
h1. Title

Loading…
Cancel
Save