Displays wiki source on parsing error
| 69 | end | end | 69 |
|---|---|---|---|
| 70 | 70 | ||
| 71 | def render_wiki(text) | def render_wiki(text) | 71 |
| 72 | @renderer.render_wiki_text(text) | begin | 72 |
@renderer.render_wiki_text(text) | 73 | ||
rescue | 74 | ||
content_tag(:div, ('The following wiki code contains an error that ' + | 75 | ||
'prevents it from being correctly formatted.').t, | 76 | ||
:class => 'wikierror') + | 77 | ||
content_tag(:pre, h(text), :class => 'wikisource') | 78 | ||
end | 79 | ||
| 73 | end | end | 80 |
| 74 | 81 | ||
| 75 | def render_diff_table(chunks) | def render_diff_table(chunks) | 82 |
| 139 | 139 | ||
|---|---|---|---|
| 140 | def update_references(input) | def update_references(input) | 140 |
| 141 | self.references.clear | self.references.clear | 141 |
| 142 | MediaCloth::wiki_to_html(input, :link_handler => reference_collector) | MediaCloth::wiki_to_html(input, :link_handler => reference_collector) rescue RuntimeError | 142 |
| 143 | self.refered_pages.reset | self.refered_pages.reset | 143 |
| 144 | end | end | 144 |
| 145 | 145 |
| 37 | 'Events' => 'Eventos', | 'Events' => 'Eventos', | 37 |
|---|---|---|---|
| 38 | '(Raw wiki text)' => '(Texto original)', | '(Raw wiki text)' => '(Texto original)', | 38 |
| 39 | '(Raw wiki text from revision %s)' => '(Texto original da revisão %s)', | '(Raw wiki text from revision %s)' => '(Texto original da revisão %s)', | 39 |
'The following wiki code contains an error that prevents it from being correctly formatted.' => 'Há um erro no código wiki abaixo impedindo que ele seja formatado corretamente.', | 40 | ||
| 40 | 41 | ||
| 41 | # Source revision details page | # Source revision details page | 42 |
| 42 | 'Revision details' => 'Detalhes de revisão', | 'Revision details' => 'Detalhes de revisão', | 43 |
| 523 | assert_xml_element %{//div[@class="toolbar bottombar")]/a[text() = "View wiki output" and @href="#{@controller.url_for(:only_path => true, :action => 'show', :page_name => page_name)}"]} | assert_xml_element %{//div[@class="toolbar bottombar")]/a[text() = "View wiki output" and @href="#{@controller.url_for(:only_path => true, :action => 'show', :page_name => page_name)}"]} | 523 |
|---|---|---|---|
| 524 | end | end | 524 |
| 525 | 525 | ||
def test_shows_wiki_source_for_pages_with_parsing_errors | 526 | ||
name = 'ParsingError' | 527 | ||
log_as :bob | 528 | ||
post :save, :page_name => name, :btnSave => true, | 529 | ||
:page => { :title => 'Parsing error', | 530 | ||
:text => '', | 531 | ||
:done => '0', | 532 | ||
:kind => 'common', :editors => '' } | 533 | ||
follow_redirect | 534 | ||
assert_tag :div, :attributes => { :class => "wikierror" } | 535 | ||
assert_tag :pre, :content => '' | 536 | ||
end | 537 | ||
| 538 | |||
| 526 | private | private | 539 |
| 527 | 540 | ||
| 528 | def log_as(user_name) | def log_as(user_name) | 541 |
| 373 | assert_equal test_page, page.refered_pages.first | assert_equal test_page, page.refered_pages.first | 373 |
|---|---|---|---|
| 374 | end | end | 374 |
| 375 | 375 | ||
def test_parsing_error_removes_all_outbound_references | 376 | ||
page = pages('refering_page') | 377 | ||
assert 0 < page.references.size | 378 | ||
page.revise(users('bob'), Time.local(2008, 3, 27, 18, 28, 17), | 379 | ||
:title => page.title, | 380 | ||
:kind => 'common', | 381 | ||
:text => "") | 382 | ||
assert_equal 0, page.references.size | 383 | ||
end | 384 | ||
| 385 | |||
| 376 | def test_referencing_an_empty_page_creates_it | def test_referencing_an_empty_page_creates_it | 386 |
| 377 | page = revise_brand_new_page(:title => 'Referencing page', | page = revise_brand_new_page(:title => 'Referencing page', | 387 |
| 378 | :kind => 'common', | :kind => 'common', | 388 |