Commit bccf7c4265edfe8fc3b309359bcc396ab1d6aeae
1 parent
f13dcf68
Exists in
master
and in
28 other branches
ActionItem690: recent content block do not lists private articles. finaly.
Showing
2 changed files
with
49 additions
and
1 deletions
Show diff stats
app/models/article.rb
| ... | ... | @@ -77,7 +77,23 @@ class Article < ActiveRecord::Base |
| 77 | 77 | # |
| 78 | 78 | # Only includes articles where advertise == true |
| 79 | 79 | def self.recent(limit) |
| 80 | - options = { :limit => limit, :conditions => { :advertise => true, :public_article => true }, :order => 'created_at desc, articles.id desc' } | |
| 80 | + # FIXME this method is a horrible hack | |
| 81 | + options = { :limit => limit, | |
| 82 | + :conditions => { | |
| 83 | + :advertise => true, | |
| 84 | + :public_article => true, | |
| 85 | + :published => true, | |
| 86 | + 'profiles.public_profile' => true | |
| 87 | + }, | |
| 88 | + :include => 'profile', | |
| 89 | + :order => 'articles.created_at desc, articles.id desc' | |
| 90 | + } | |
| 91 | + if ( scoped_methods && scoped_methods.last && | |
| 92 | + scoped_methods.last[:find] && | |
| 93 | + scoped_methods.last[:find][:joins] && | |
| 94 | + scoped_methods.last[:find][:joins].index('profiles') ) | |
| 95 | + options.delete(:include) | |
| 96 | + end | |
| 81 | 97 | self.find(:all, options) |
| 82 | 98 | end |
| 83 | 99 | ... | ... |
test/unit/article_test.rb
| ... | ... | @@ -137,6 +137,38 @@ class ArticleTest < Test::Unit::TestCase |
| 137 | 137 | assert_equal [other_first, fifth, fourth, third, second, first], Article.recent(6) |
| 138 | 138 | end |
| 139 | 139 | |
| 140 | + should 'not show private documents as recent' do | |
| 141 | + p = create_user('usr1').person | |
| 142 | + Article.destroy_all | |
| 143 | + | |
| 144 | + first = p.articles.build(:name => 'first', :public_article => true); first.save! | |
| 145 | + second = p.articles.build(:name => 'second', :public_article => false); second.save! | |
| 146 | + | |
| 147 | + assert_equal [ first ], Article.recent(nil) | |
| 148 | + end | |
| 149 | + | |
| 150 | + should 'not show unpublished documents as recent' do | |
| 151 | + p = create_user('usr1').person | |
| 152 | + Article.destroy_all | |
| 153 | + | |
| 154 | + first = p.articles.build(:name => 'first', :published => true); first.save! | |
| 155 | + second = p.articles.build(:name => 'second', :published => false); second.save! | |
| 156 | + | |
| 157 | + assert_equal [ first ], Article.recent(nil) | |
| 158 | + end | |
| 159 | + | |
| 160 | + should 'not show documents from a private profile as recent' do | |
| 161 | + p = create_user('usr1').person | |
| 162 | + p.public_profile = false | |
| 163 | + p.save! | |
| 164 | + Article.destroy_all | |
| 165 | + | |
| 166 | + first = p.articles.build(:name => 'first', :published => true); first.save! | |
| 167 | + second = p.articles.build(:name => 'second', :published => false); second.save! | |
| 168 | + | |
| 169 | + assert_equal [ ], Article.recent(nil) | |
| 170 | + end | |
| 171 | + | |
| 140 | 172 | should 'require that subclasses define description' do |
| 141 | 173 | assert_raise NotImplementedError do |
| 142 | 174 | Article.description | ... | ... |