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,11 +87,11 @@ class ContentViewerController < ApplicationController | ||
| 87 | @page.posts | 87 | @page.posts |
| 88 | end | 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 | @posts = posts.paginate({ :page => params[:npage], :per_page => @page.posts_per_page }.merge(Article.display_filter(user, profile))) | 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 | end | 95 | end |
| 96 | 96 | ||
| 97 | if @page.folder? && @page.gallery? | 97 | if @page.folder? && @page.gallery? |
app/models/article.rb
| @@ -319,12 +319,12 @@ class Article < ActiveRecord::Base | @@ -319,12 +319,12 @@ class Article < ActiveRecord::Base | ||
| 319 | end | 319 | end |
| 320 | 320 | ||
| 321 | def get_translation_to(locale) | 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 | self | 323 | self |
| 324 | elsif self.native_translation.language == locale | 324 | elsif self.native_translation.language == locale |
| 325 | self.native_translation | 325 | self.native_translation |
| 326 | else | 326 | else |
| 327 | - self.native_translation.translations.first(:conditions => { :language => locale }) || self | 327 | + self.native_translation.translations.first(:conditions => { :language => locale }) |
| 328 | end | 328 | end |
| 329 | end | 329 | end |
| 330 | 330 |
app/views/cms/_blog.rhtml
| @@ -56,7 +56,7 @@ | @@ -56,7 +56,7 @@ | ||
| 56 | 56 | ||
| 57 | <%= labelled_form_field(_('Posts per page:'), f.select(:posts_per_page, [5, 10, 20, 50, 100])) %> | 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 | <% f.fields_for 'feed', @article.feed do |feed| %> | 61 | <% f.fields_for 'feed', @article.feed do |feed| %> |
| 62 | <%= labelled_form_field(_('Limit of posts in RSS Feed'), feed.select(:limit, [5, 10, 20, 50])) %> | 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,6 +1223,23 @@ class ContentViewerControllerTest < Test::Unit::TestCase | ||
| 1223 | assert_no_tag :div, :attributes => { :id => "post-#{en_article.id}" } | 1223 | assert_no_tag :div, :attributes => { :id => "post-#{en_article.id}" } |
| 1224 | end | 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 | should 'list all posts at blog listing if blog option is disabled' do | 1243 | should 'list all posts at blog listing if blog option is disabled' do |
| 1227 | FastGettext.stubs(:locale).returns('es') | 1244 | FastGettext.stubs(:locale).returns('es') |
| 1228 | blog = Blog.create!(:name => 'A blog test', :profile => profile, :display_posts_in_current_language => false) | 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,6 +1367,11 @@ class ArticleTest < Test::Unit::TestCase | ||
| 1367 | assert_equal article, article.get_translation_to('en') | 1367 | assert_equal article, article.get_translation_to('en') |
| 1368 | end | 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 | should 'get self if article is the translation' do | 1375 | should 'get self if article is the translation' do |
| 1371 | article = fast_create(Article, :language => 'pt', :profile_id => @profile.id) | 1376 | article = fast_create(Article, :language => 'pt', :profile_id => @profile.id) |
| 1372 | assert_equal article, article.get_translation_to('pt') | 1377 | assert_equal article, article.get_translation_to('pt') |
| @@ -1386,7 +1391,7 @@ class ArticleTest < Test::Unit::TestCase | @@ -1386,7 +1391,7 @@ class ArticleTest < Test::Unit::TestCase | ||
| 1386 | 1391 | ||
| 1387 | should 'get self if article does not has a translation' do | 1392 | should 'get self if article does not has a translation' do |
| 1388 | native_article = fast_create(Article, :language => 'pt', :profile_id => @profile.id) | 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 | end | 1395 | end |
| 1391 | 1396 | ||
| 1392 | should 'get only non translated articles' do | 1397 | should 'get only non translated articles' do |