You are here: Home > Latest news from Darcs > Resorts to source diff when unable to render wiki diff

Revision 20080402031919-49d33-158289...

Resorts to source diff when unable to render wiki diff

app/helpers/application_helper.rb
app/helpers/wiki_helper.rb
app/views/wiki/diff.rhtml
app/views/wiki/sourcediff.rhtml
public/stylesheets/motiro.css
test/functional/wiki_controller_test.rb

Changes to application_helper.rb

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

Changes to wiki_helper.rb

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

Changes to diff.rhtml

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

Changes to sourcediff.rhtml

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

Changes to motiro.css

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

Changes to wiki_controller_test.rb

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