@@ -682,7 +682,7 module ApplicationHelper | |||
|
682 | 682 | def parse_headings(text, project, obj, attr, only_path, options) |
|
683 | 683 | headings = [] |
|
684 | 684 | text.gsub!(HEADING_RE) do |
|
685 | level, attrs, content = $1, $2, $3 | |
|
685 | level, attrs, content = $1.to_i, $2, $3 | |
|
686 | 686 | item = strip_tags(content).strip |
|
687 | 687 | anchor = item.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-') |
|
688 | 688 | headings << [level, anchor, item] |
@@ -696,12 +696,24 module ApplicationHelper | |||
|
696 | 696 | div_class = 'toc' |
|
697 | 697 | div_class << ' right' if $1 == '>' |
|
698 | 698 | div_class << ' left' if $1 == '<' |
|
699 | out = "<ul class=\"#{div_class}\">" | |
|
699 | out = "<ul class=\"#{div_class}\"><li>" | |
|
700 | root = headings.map(&:first).min | |
|
701 | current = root | |
|
702 | started = false | |
|
700 | 703 | headings.each do |level, anchor, item| |
|
701 | out << "<li class=\"heading#{level}\"><a href=\"##{anchor}\">#{item}</a></li>\n" | |
|
702 | end | |
|
703 | out << '</ul>' | |
|
704 | out | |
|
704 | if level > current | |
|
705 | out << '<ul><li>' * (level - current) | |
|
706 | elsif level < current | |
|
707 | out << "</li></ul>\n" * (current - level) + "</li><li>" | |
|
708 | elsif started | |
|
709 | out << '</li><li>' | |
|
710 | end | |
|
711 | out << "<a href=\"##{anchor}\">#{item}</a>" | |
|
712 | current = level | |
|
713 | started = true | |
|
714 | end | |
|
715 | out << '</li></ul>' * (current - root) | |
|
716 | out << '</li></ul>' | |
|
705 | 717 | end |
|
706 | 718 | end |
|
707 | 719 | end |
@@ -715,9 +715,10 div.wiki ul.toc { | |||
|
715 | 715 | |
|
716 | 716 | div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; } |
|
717 | 717 | div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; } |
|
718 | div.wiki ul.toc li { list-style-type:none;} | |
|
719 |
div.wiki ul.toc li |
|
|
720 |
div.wiki ul.toc li |
|
|
718 | div.wiki ul.toc ul { margin: 0; padding: 0; } | |
|
719 | div.wiki ul.toc li { list-style-type:none; margin: 0;} | |
|
720 | div.wiki ul.toc li li { margin-left: 1.5em; } | |
|
721 | div.wiki ul.toc li li li { font-size: 0.8em; } | |
|
721 | 722 | |
|
722 | 723 | div.wiki ul.toc a { |
|
723 | 724 | font-size: 0.9em; |
@@ -423,25 +423,38 h2. Subtitle with [[Wiki|another Wiki]] link | |||
|
423 | 423 | |
|
424 | 424 | h2. Subtitle with %{color:red}red text% |
|
425 | 425 | |
|
426 |
h |
|
|
426 | h3. Subtitle with *some* _modifiers_ | |
|
427 | 427 | |
|
428 | 428 | h1. Another title |
|
429 | 429 | |
|
430 |
h |
|
|
430 | h3. An "Internet link":http://www.redmine.org/ inside subtitle | |
|
431 | 431 | |
|
432 | 432 | h2. "Project Name !/attachments/1234/logo_small.gif! !/attachments/5678/logo_2.png!":/projects/projectname/issues |
|
433 | 433 | |
|
434 | 434 | RAW |
|
435 | 435 | |
|
436 | 436 | expected = '<ul class="toc">' + |
|
437 |
'<li |
|
|
438 | '<li class="heading2"><a href="#Subtitle-with-a-Wiki-link">Subtitle with a Wiki link</a></li>' + | |
|
439 |
'<li |
|
|
440 |
'<li |
|
|
441 |
'<li |
|
|
442 | '<li class="heading1"><a href="#Another-title">Another title</a></li>' + | |
|
443 | '<li class="heading2"><a href="#An-Internet-link-inside-subtitle">An Internet link inside subtitle</a></li>' + | |
|
444 | '<li class="heading2"><a href="#Project-Name">Project Name</a></li>' + | |
|
437 | '<li><a href="#Title">Title</a>' + | |
|
438 | '<ul>' + | |
|
439 | '<li><a href="#Subtitle-with-a-Wiki-link">Subtitle with a Wiki link</a></li>' + | |
|
440 | '<li><a href="#Subtitle-with-another-Wiki-link">Subtitle with another Wiki link</a></li>' + | |
|
441 | '<li><a href="#Subtitle-with-red-text">Subtitle with red text</a>' + | |
|
442 | '<ul>' + | |
|
443 | '<li><a href="#Subtitle-with-some-modifiers">Subtitle with some modifiers</a></li>' + | |
|
444 | '</ul>' + | |
|
445 | '</li>' + | |
|
446 | '</ul>' + | |
|
447 | '</li>' + | |
|
448 | '<li><a href="#Another-title">Another title</a>' + | |
|
449 | '<ul>' + | |
|
450 | '<li>' + | |
|
451 | '<ul>' + | |
|
452 | '<li><a href="#An-Internet-link-inside-subtitle">An Internet link inside subtitle</a></li>' + | |
|
453 | '</ul>' + | |
|
454 | '</li>' + | |
|
455 | '<li><a href="#Project-Name">Project Name</a></li>' + | |
|
456 | '</ul>' + | |
|
457 | '</li>' + | |
|
445 | 458 | '</ul>' |
|
446 | 459 | |
|
447 | 460 | @project = Project.find(1) |
@@ -458,8 +471,8 h1. Included | |||
|
458 | 471 | RAW |
|
459 | 472 | |
|
460 | 473 | expected = '<ul class="toc">' + |
|
461 |
'<li |
|
|
462 |
'<li |
|
|
474 | '<li><a href="#Included">Included</a></li>' + | |
|
475 | '<li><a href="#Child-page-1">Child page 1</a></li>' + | |
|
463 | 476 | '</ul>' |
|
464 | 477 | |
|
465 | 478 | @project = Project.find(1) |
General Comments 0
You need to be logged in to leave comments.
Login now