diff --git a/plugins/display_content/lib/display_content_block.rb b/plugins/display_content/lib/display_content_block.rb index 1d6e929..2f66d50 100644 --- a/plugins/display_content/lib/display_content_block.rb +++ b/plugins/display_content/lib/display_content_block.rb @@ -2,6 +2,7 @@ class DisplayContentBlock < Block settings_items :nodes, :type => Array, :default => [] settings_items :parent_nodes, :type => Array, :default => [] + settings_items :chosen_attributes, :type => Array, :default => ['title'] def self.description _('Display your contents') @@ -41,8 +42,9 @@ class DisplayContentBlock < Block block_title(title) + content_tag('ul', docs.map {|item| content_tag('li', - link_to(h(item.title), item.url) + "
" + - content_tag('div', item.abstract ,:class => 'lead') + (display_attribute?('title') ? content_tag('div', link_to(h(item.title), item.url), :class => 'title') : '') + + (display_attribute?('abstract') ? content_tag('div', item.abstract ,:class => 'lead') : '') + + (display_attribute?('body') ? content_tag('div', item.body ,:class => 'body') : '') ) }.join("\n")) @@ -59,6 +61,10 @@ class DisplayContentBlock < Block params end + def display_attribute?(attr) + chosen_attributes.include?(attr) + end + protected def holder diff --git a/plugins/display_content/lib/display_content_plugin.rb b/plugins/display_content/lib/display_content_plugin.rb index 41a6d93..9a21d00 100644 --- a/plugins/display_content/lib/display_content_plugin.rb +++ b/plugins/display_content/lib/display_content_plugin.rb @@ -20,6 +20,11 @@ class DisplayContentPlugin < Noosfero::Plugin false end + #FIXME make this test + def stylesheet? + true + end + def js_files ['/javascripts/jstree/_lib/jquery-1.8.3.js', '/javascripts/jstree/jquery.jstree.js'] end diff --git a/plugins/display_content/public/style.css b/plugins/display_content/public/style.css new file mode 100644 index 0000000..5884349 --- /dev/null +++ b/plugins/display_content/public/style.css @@ -0,0 +1,7 @@ +#display_content_plugin ul { + list-style: none; +} + +#display_content_plugin .display_attributes li{ + display: inline; +} diff --git a/plugins/display_content/test/unit/display_content_block_test.rb b/plugins/display_content/test/unit/display_content_block_test.rb index 4c996cc..cb4d66a 100644 --- a/plugins/display_content/test/unit/display_content_block_test.rb +++ b/plugins/display_content/test/unit/display_content_block_test.rb @@ -559,13 +559,14 @@ class DisplayContentBlockTest < ActiveSupport::TestCase assert_match /.*#{a2.title}<\/a>/, block.content end - should 'list links for all articles lead defined in nodes' do + should 'list content for all articles lead defined in nodes' do profile = create_user('testuser').person Article.delete_all a1 = fast_create(TextArticle, :name => 'test article 1', :profile_id => profile.id, :abstract => 'abstract article 1') a2 = fast_create(TextArticle, :name => 'test article 2', :profile_id => profile.id, :abstract => 'abstract article 2') block = DisplayContentBlock.new + block.chosen_attributes = ['abstract'] block.nodes = [a1.id, a2.id] box = mock() block.stubs(:box).returns(box) @@ -612,4 +613,63 @@ class DisplayContentBlockTest < ActiveSupport::TestCase assert_equal params, block.url_params end + should 'show title if defined by user' do + profile = create_user('testuser').person + a = fast_create(TextArticle, :name => 'test article 1', :profile_id => profile.id) + + block = DisplayContentBlock.new + block.nodes = [a.id] + block.chosen_attributes = ['title'] + box = mock() + block.stubs(:box).returns(box) + box.stubs(:owner).returns(profile) + + assert_match /.*#{a.title}<\/a>/, block.content + end + + should 'show abstract if defined by user' do + profile = create_user('testuser').person + a = fast_create(TextArticle, :name => 'test article 1', :profile_id => profile.id, :abstract => 'some abstract') + + block = DisplayContentBlock.new + block.nodes = [a.id] + block.chosen_attributes = ['abstract'] + box = mock() + block.stubs(:box).returns(box) + box.stubs(:owner).returns(profile) + + assert_match /#{a.abstract}/, block.content + end + + should 'show body if defined by user' do + profile = create_user('testuser').person + a = fast_create(TextArticle, :name => 'test article 1', :profile_id => profile.id, :body => 'some body') + + block = DisplayContentBlock.new + block.nodes = [a.id] + block.chosen_attributes = ['body'] + box = mock() + block.stubs(:box).returns(box) + box.stubs(:owner).returns(profile) + + assert_match /#{a.body}/, block.content + end + + should 'display_attribute be true for title by default' do + profile = create_user('testuser').person + + block = DisplayContentBlock.new + + assert block.display_attribute?('title') + end + + should 'display_attribute be true if the attribute was chosen' do + profile = create_user('testuser').person + + block = DisplayContentBlock.new + block.chosen_attributes = ['body'] + + assert block.display_attribute?('body') + end + end diff --git a/plugins/display_content/views/box_organizer/_display_content_block.rhtml b/plugins/display_content/views/box_organizer/_display_content_block.rhtml index 9beb1be..b1f417e 100644 --- a/plugins/display_content/views/box_organizer/_display_content_block.rhtml +++ b/plugins/display_content/views/box_organizer/_display_content_block.rhtml @@ -1,3 +1,13 @@ +
+ +

<%= _('Choose which attributes should be displayed:') %>

+
    +
  • <%= _('Title: ')%> <%= check_box_tag "block[chosen_attributes][]", 'title', @block.display_attribute?('title') %>
  • +
  • <%= _('Abstract: ')%> <%= check_box_tag "block[chosen_attributes][]", 'abstract', @block.display_attribute?('abstract') %>
  • +
  • <%= _('Body: ')%> <%= check_box_tag "block[chosen_attributes][]", 'body', @block.display_attribute?('body') %>
  • +
+ +

<%= _('Choose which content should be displayed:') %>

@@ -22,3 +32,4 @@ jQuery_1_8_3("#display_content").jstree({ }); +
-- libgit2 0.21.2