Commit aaccd5c489b4d25ef8e5bad05b0e05afa5bc2b9d

Authored by Aurélio A. Heckert
1 parent 76ea3016

makes Article::to_html finally configurable

app/helpers/content_viewer_helper.rb
... ... @@ -2,6 +2,7 @@ module ContentViewerHelper
2 2  
3 3 include BlogHelper
4 4 include ForumHelper
  5 + include ActionView::Helpers::TagHelper
5 6  
6 7 def number_of_comments(article)
7 8 n = article.comments.without_spam.count
... ... @@ -36,7 +37,7 @@ module ContentViewerHelper
36 37  
37 38 def link_to_comments(article, args = {})
38 39 return '' unless article.accept_comments?
39   - link_to(number_of_comments(article), article.url.merge(:anchor => 'comments_list') )
  40 + link_to_article number_of_comments(article), article, 'comments_list'
40 41 end
41 42  
42 43 def article_translations(article)
... ...
app/models/article.rb
... ... @@ -236,8 +236,13 @@ class Article < ActiveRecord::Base
236 236 # The implementation in this class just provides the +body+ attribute as the
237 237 # HTML. Other article types can override this method to provide customized
238 238 # views of themselves.
  239 + # (To override short format representation, override the lead method)
239 240 def to_html(options = {})
240   - body || ''
  241 + if options[:format] == 'short'
  242 + display_short_format(self)
  243 + else
  244 + body || ''
  245 + end
241 246 end
242 247  
243 248 include ApplicationHelper
... ...
test/unit/article_test.rb
... ... @@ -97,6 +97,21 @@ class ArticleTest < ActiveSupport::TestCase
97 97 assert_equal '', a.to_html
98 98 end
99 99  
  100 + should 'provide short html version' do
  101 + a = fast_create(Article, :body => 'full body', :abstract => 'lead')
  102 + a.stubs(:url).returns({:x=>'none'})
  103 + a.stubs(:link_to).returns('<link>')
  104 + def a.content_tag (tag, content, c=nil)
  105 + "<#{tag}>#{content}</#{tag}>"
  106 + end
  107 + assert_match /<div>lead.*/, a.to_html(:format=>'short')
  108 + end
  109 +
  110 + should 'provide full html version' do
  111 + a = fast_create(Article, :body => 'full body', :abstract => 'lead')
  112 + assert_equal 'full body', a.to_html(:format=>'full body')
  113 + end
  114 +
100 115 should 'provide first paragraph of HTML version' do
101 116 profile = create_user('testinguser').person
102 117 a = fast_create(Article, :name => 'my article', :profile_id => profile.id)
... ...