[Git][noosfero/noosfero][master] 2 commits: display_content plugin: Filter content by locale
Bráulio Bhavamitra
gitlab at mg.gitlab.com
Fri Apr 1 20:31:36 BRT 2016
Bráulio Bhavamitra pushed to branch master at Noosfero / noosfero
Commits:
64857084 by Larissa Reis at 2016-04-01T17:47:35-03:00
display_content plugin: Filter content by locale
Show posts and content based on locale and replaces post with its
translation.
- - - - -
251e6e43 by Bráulio Bhavamitra at 2016-04-01T23:31:01+00:00
Merge branch 'display-content-translation' into 'master'
display_content plugin: Filter content by locale
Show posts and content based on locale and replaces post with its translation.
See merge request !835
- - - - -
3 changed files:
- plugins/display_content/lib/display_content_block.rb
- plugins/display_content/test/unit/display_content_block_test.rb
- plugins/display_content/views/box_organizer/_display_content_block.html.erb
Changes:
=====================================
plugins/display_content/lib/display_content_block.rb
=====================================
--- a/plugins/display_content/lib/display_content_block.rb
+++ b/plugins/display_content/lib/display_content_block.rb
@@ -26,9 +26,10 @@ class DisplayContentBlock < Block
settings_items :display_folder_children, :type => :boolean, :default => true
settings_items :types, :type => Array, :default => ['TextileArticle', 'TinyMceArticle', 'RawHTMLArticle']
settings_items :order_by_recent, :type => :boolean, :default => :true
+ settings_items :content_with_translations, :type => :boolean, :default => :true
settings_items :limit_to_show, :type => :integer, :default => 6
- attr_accessible :sections, :checked_nodes, :display_folder_children, :types, :order_by_recent, :limit_to_show
+ attr_accessible :sections, :checked_nodes, :display_folder_children, :types, :order_by_recent, :limit_to_show, :content_with_translations
def self.description
_('Display your contents')
@@ -129,8 +130,14 @@ class DisplayContentBlock < Block
limit_final = [limit_to_show, 0].max
docs = owner.articles.order(order_string).where(["articles.type IN(:types) #{nodes.blank? ? '' : nodes_conditions}", {:nodes => self.nodes, :types => self.types}]).includes(:profile, :image, :tags)
+
docs = docs.limit(limit_final) if display_folder_children
+ if content_with_translations
+ docs = docs.native_translations
+ docs.replace docs.map{ |p| p.get_translation_to(FastGettext.locale) }.compact
+ end
+
proc do
block.block_title(block.title) +
content_tag('ul', docs.map {|item|
=====================================
plugins/display_content/test/unit/display_content_block_test.rb
=====================================
--- a/plugins/display_content/test/unit/display_content_block_test.rb
+++ b/plugins/display_content/test/unit/display_content_block_test.rb
@@ -711,4 +711,59 @@ class DisplayContentBlockTest < ActiveSupport::TestCase
assert a1_index.nil?
end
+ should 'show only articles with current locale translation' do
+ FastGettext.stubs(:locale).returns('pt')
+ profile = create_user('testuser').person
+ Article.delete_all
+
+ en_article = fast_create(TextileArticle, :profile_id => profile.id, :name => 'en_article', :language => 'en')
+ en_article2 = fast_create(TextileArticle, :profile_id => profile.id, :name => 'en_article 2', :language => 'en')
+
+ pt_article = fast_create(TextileArticle, :profile_id => profile.id, :name => 'pt_article', :language => 'pt')
+
+ block = DisplayContentBlock.new
+ block.sections = [{:value => 'title', :checked => true}]
+ block.content_with_translations = true
+ block.limit_to_show = 2
+
+ box = mock()
+ block.stubs(:box).returns(box)
+ box.stubs(:owner).returns(profile)
+
+ assert_nil instance_eval(&block.content).index(en_article.name)
+ assert_nil instance_eval(&block.content).index(en_article2.name)
+ assert instance_eval(&block.content).index(pt_article.name).present?
+
+ FastGettext.stubs(:locale).returns('en')
+
+ assert instance_eval(&block.content).index(en_article.name).present?
+ assert instance_eval(&block.content).index(en_article2.name).present?
+ assert_nil instance_eval(&block.content).index(pt_article.name)
+ end
+
+ should 'replace article with its translation' do
+ FastGettext.stubs(:locale).returns('pt')
+ profile = create_user('testuser').person
+ Article.delete_all
+
+ en_article = fast_create(TextileArticle, :profile_id => profile.id, :name => 'en_article', :language => 'en')
+ pt_article = fast_create(TextileArticle, :profile_id => profile.id, :name => 'pt_article', :language => 'pt', :translation_of_id => en_article)
+
+ block = DisplayContentBlock.new
+ block.sections = [{:value => 'title', :checked => true}]
+ block.content_with_translations = true
+ block.limit_to_show = 2
+
+ box = mock()
+ block.stubs(:box).returns(box)
+ box.stubs(:owner).returns(profile)
+
+ assert_nil instance_eval(&block.content).index(en_article.name)
+ assert instance_eval(&block.content).index(pt_article.name).present?
+
+ FastGettext.stubs(:locale).returns('en')
+
+ assert instance_eval(&block.content).index(en_article.name).present?
+ assert_nil instance_eval(&block.content).index(pt_article.name)
+ end
end
=====================================
plugins/display_content/views/box_organizer/_display_content_block.html.erb
=====================================
--- a/plugins/display_content/views/box_organizer/_display_content_block.html.erb
+++ b/plugins/display_content/views/box_organizer/_display_content_block.html.erb
@@ -28,5 +28,8 @@
<h3> <%= _('Order by:')%> </h3>
<%= labelled_radio_button(_("Most recent"), "block[order_by_recent]", true, @block.order_by_recent)%>
<%= labelled_radio_button(_("Most oldest"), "block[order_by_recent]", false, !@block.order_by_recent)%>
-</div>
+<h3> <%= _('Translations:')%> </h3>
+<%= labelled_check_box(_('List only translated content'), 'block[content_with_translations]', true) %>
+
+</div>
View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/10ca96273e76289c4516ae8a4d8f24879524395f...251e6e4367119941bcec2eb845ae99809b6c8b45
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20160401/687644e0/attachment-0001.html>
More information about the Noosfero-dev
mailing list