Commit aaccd5c489b4d25ef8e5bad05b0e05afa5bc2b9d
1 parent
76ea3016
Exists in
master
and in
28 other branches
makes Article::to_html finally configurable
Showing
3 changed files
with
23 additions
and
2 deletions
Show diff stats
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) | ... | ... |