Commit 40c1e5e71897fa6f32b1233b7462784ccd757164
1 parent
2015618d
Exists in
master
and in
29 other branches
Display only translated posts on blog if configured
(ActionItem1961)
Showing
5 changed files
with
29 additions
and
7 deletions
Show diff stats
app/controllers/public/content_viewer_controller.rb
| ... | ... | @@ -87,11 +87,11 @@ class ContentViewerController < ApplicationController |
| 87 | 87 | @page.posts |
| 88 | 88 | end |
| 89 | 89 | |
| 90 | - posts = posts.native_translations if @page.blog? && @page.display_posts_in_current_language? | |
| 90 | + if @page.blog? && @page.display_posts_in_current_language? | |
| 91 | + posts = posts.native_translations.all(Article.display_filter(user, profile)).map{ |p| p.get_translation_to(FastGettext.locale) }.compact | |
| 92 | + end | |
| 91 | 93 | |
| 92 | 94 | @posts = posts.paginate({ :page => params[:npage], :per_page => @page.posts_per_page }.merge(Article.display_filter(user, profile))) |
| 93 | - | |
| 94 | - @posts.map!{ |p| p.get_translation_to(FastGettext.locale) } if @page.blog? && @page.display_posts_in_current_language? | |
| 95 | 95 | end |
| 96 | 96 | |
| 97 | 97 | if @page.folder? && @page.gallery? | ... | ... |
app/models/article.rb
| ... | ... | @@ -319,12 +319,12 @@ class Article < ActiveRecord::Base |
| 319 | 319 | end |
| 320 | 320 | |
| 321 | 321 | def get_translation_to(locale) |
| 322 | - if self.language.nil? || self.language == locale | |
| 322 | + if self.language.nil? || self.language.blank? || self.language == locale | |
| 323 | 323 | self |
| 324 | 324 | elsif self.native_translation.language == locale |
| 325 | 325 | self.native_translation |
| 326 | 326 | else |
| 327 | - self.native_translation.translations.first(:conditions => { :language => locale }) || self | |
| 327 | + self.native_translation.translations.first(:conditions => { :language => locale }) | |
| 328 | 328 | end |
| 329 | 329 | end |
| 330 | 330 | ... | ... |
app/views/cms/_blog.rhtml
| ... | ... | @@ -56,7 +56,7 @@ |
| 56 | 56 | |
| 57 | 57 | <%= labelled_form_field(_('Posts per page:'), f.select(:posts_per_page, [5, 10, 20, 50, 100])) %> |
| 58 | 58 | |
| 59 | -<%= labelled_check_box(_("Try listing only translated posts"), 'article[display_posts_in_current_language]', '1', @article.display_posts_in_current_language?) %> | |
| 59 | +<%= labelled_check_box(_("List only translated posts"), 'article[display_posts_in_current_language]', '1', @article.display_posts_in_current_language?) %> | |
| 60 | 60 | |
| 61 | 61 | <% f.fields_for 'feed', @article.feed do |feed| %> |
| 62 | 62 | <%= labelled_form_field(_('Limit of posts in RSS Feed'), feed.select(:limit, [5, 10, 20, 50])) %> | ... | ... |
test/functional/content_viewer_controller_test.rb
| ... | ... | @@ -1223,6 +1223,23 @@ class ContentViewerControllerTest < Test::Unit::TestCase |
| 1223 | 1223 | assert_no_tag :div, :attributes => { :id => "post-#{en_article.id}" } |
| 1224 | 1224 | end |
| 1225 | 1225 | |
| 1226 | + should 'not display article at blog listing if blog option is enabled and there is no translation for the language' do | |
| 1227 | + FastGettext.stubs(:locale).returns('pt') | |
| 1228 | + blog = fast_create(Blog, :profile_id => profile.id, :path => 'blog') | |
| 1229 | + blog.stubs(:display_posts_in_current_language).returns(true) | |
| 1230 | + en_article = fast_create(TextileArticle, :profile_id => @profile.id, :path => 'en_article', :language => 'en', :parent_id => blog.id) | |
| 1231 | + es_article = fast_create(TextileArticle, :profile_id => @profile.id, :path => 'es_article', :language => 'es', :parent_id => blog.id, :translation_of_id => en_article) | |
| 1232 | + pt_article = fast_create(TextileArticle, :profile_id => @profile.id, :path => 'es_article', :language => 'pt', :parent_id => blog.id, :translation_of_id => en_article) | |
| 1233 | + | |
| 1234 | + en_article2 = fast_create(TextileArticle, :profile_id => @profile.id, :path => 'en_article', :language => 'en', :parent_id => blog.id) | |
| 1235 | + es_article2 = fast_create(TextileArticle, :profile_id => @profile.id, :path => 'es_article', :language => 'es', :parent_id => blog.id, :translation_of_id => en_article2) | |
| 1236 | + | |
| 1237 | + | |
| 1238 | + get :view_page, :profile => @profile.identifier, :page => blog.explode_path | |
| 1239 | + | |
| 1240 | + assert_equal [pt_article], assigns(:posts) | |
| 1241 | + end | |
| 1242 | + | |
| 1226 | 1243 | should 'list all posts at blog listing if blog option is disabled' do |
| 1227 | 1244 | FastGettext.stubs(:locale).returns('es') |
| 1228 | 1245 | blog = Blog.create!(:name => 'A blog test', :profile => profile, :display_posts_in_current_language => false) | ... | ... |
test/unit/article_test.rb
| ... | ... | @@ -1367,6 +1367,11 @@ class ArticleTest < Test::Unit::TestCase |
| 1367 | 1367 | assert_equal article, article.get_translation_to('en') |
| 1368 | 1368 | end |
| 1369 | 1369 | |
| 1370 | + should 'get self if language article is blank' do | |
| 1371 | + article = fast_create(Article, :language => '', :profile_id => @profile.id) | |
| 1372 | + assert_equal article, article.get_translation_to('en') | |
| 1373 | + end | |
| 1374 | + | |
| 1370 | 1375 | should 'get self if article is the translation' do |
| 1371 | 1376 | article = fast_create(Article, :language => 'pt', :profile_id => @profile.id) |
| 1372 | 1377 | assert_equal article, article.get_translation_to('pt') |
| ... | ... | @@ -1386,7 +1391,7 @@ class ArticleTest < Test::Unit::TestCase |
| 1386 | 1391 | |
| 1387 | 1392 | should 'get self if article does not has a translation' do |
| 1388 | 1393 | native_article = fast_create(Article, :language => 'pt', :profile_id => @profile.id) |
| 1389 | - assert_equal native_article, native_article.get_translation_to('en') | |
| 1394 | + assert_nil native_article.get_translation_to('en') | |
| 1390 | 1395 | end |
| 1391 | 1396 | |
| 1392 | 1397 | should 'get only non translated articles' do | ... | ... |