Resorts to source diff when unable to render wiki diff
| 68 | concat(xml, block.binding) | concat(xml, block.binding) | 68 |
|---|---|---|---|
| 69 | end | end | 69 |
| 70 | 70 | ||
| 71 | def render_wiki(text) | def parsing_error_box | 71 |
| 72 | begin | ||
| 73 | @renderer.render_wiki_text(text) | ||
| 74 | rescue | ||
| 75 | content_tag(:div, | content_tag(:div, | 72 |
| 76 | image_tag('error.png') + | image_tag('error.png') + | 73 |
| 77 | content_tag(:p, ('The following wiki code contains an ' + | content_tag(:p, ('The following wiki code contains an ' + | 74 |
| 78 | 'error that prevents it from being ' + | 'error that prevents it from being ' + | 75 |
| 79 | 'correctly formatted.').t), | 'correctly formatted.').t), | 76 |
| 80 | :class => 'message wikierror') + | :class => 'message wikierror') | 77 |
| 81 | content_tag(:pre, h(text), :class => 'wikisource') | end | 78 |
| 79 | |||
def render_wiki(text) | 80 | ||
begin | 81 | ||
@renderer.render_wiki_text(text) | 82 | ||
rescue | 83 | ||
parsing_error_box + content_tag(:pre, h(text), :class => 'wikisource') | 84 | ||
| 82 | end | end | 85 |
| 83 | end | end | 86 |
| 84 | 87 |
| 30 | end | end | 30 |
|---|---|---|---|
| 31 | end | end | 31 |
| 32 | 32 | ||
def render_wiki_diff(old_revision, new_revision) | 33 | ||
begin | 34 | ||
@renderer.render_wiki_diff(old_revision.text, new_revision.text) | 35 | ||
rescue | 36 | ||
parsing_error_box + render_wiki_sourcediff(old_revision, new_revision) | 37 | ||
end | 38 | ||
end | 39 | ||
| 40 | |||
def render_wiki_sourcediff(old_revision, new_revision) | 41 | ||
render_diff_table(old_revision.diff(new_revision)) | 42 | ||
end | 43 | ||
| 44 | |||
| 33 | end | end | 45 |
| 1 | <% pagetext(@page.title, '(Comparing revisions %s and %s)' / @old_revision_num / @new_revision_num) do %> | <% pagetext(@page.title, '(Comparing revisions %s and %s)' / @old_revision_num / @new_revision_num) do %> | 1 |
|---|---|---|---|
| 2 | <%= @renderer.render_wiki_diff(@old_revision.text, @new_revision.text) %> | <%= render_wiki_diff(@old_revision, @new_revision) %> | 2 |
| 3 | <%= render :partial => 'diffbar' %> | <%= render :partial => 'diffbar' %> | 3 |
| 4 | <% end %> | <% end %> | 4 |
| 1 | <% pagetext(@page.title, '(Comparing revisions %s and %s)' / @old_revision_num / @new_revision_num) do %> | <% pagetext(@page.title, '(Comparing revisions %s and %s)' / @old_revision_num / @new_revision_num) do %> | 1 |
|---|---|---|---|
| 2 | <%= render_diff_table(@old_revision.diff(@new_revision))%> | <%= render_wiki_sourcediff(@old_revision, @new_revision) %> | 2 |
| 3 | <%= render :partial => 'diffbar' %> | <%= render :partial => 'diffbar' %> | 3 |
| 4 | <% end %> | <% end %> | 4 |
| 54 | border: 1px solid #ff6330; | border: 1px solid #ff6330; | 54 |
|---|---|---|---|
| 55 | background-color: #eeeeb0; | background-color: #eeeeb0; | 55 |
| 56 | width: 28em; | width: 28em; | 56 |
margin: 0 0 1em 0; | 57 | ||
| 57 | } | } | 58 |
| 58 | 59 | ||
| 59 | div.message img { | div.message img { | 60 |
| 530 | assert_tag :pre, :content => page.text | assert_tag :pre, :content => page.text | 530 |
|---|---|---|---|
| 531 | end | end | 531 |
| 532 | 532 | ||
def test_diffs_sources_when_there_is_a_parsing_error_in_one_of_the_revisions | 533 | ||
page = pages('page_with_syntax_error') | 534 | ||
get :diff, :page_name => page.name, :old_revision => page.revisions.size - 1, | 535 | ||
:new_revision => page.revisions.size | 536 | ||
assert_tag :div, :attributes => { :class => "message wikierror" } | 537 | ||
end | 538 | ||
| 539 | |||
| 533 | private | private | 540 |
| 534 | 541 | ||
| 535 | def log_as(user_name) | def log_as(user_name) | 542 |