Commit c0a1a0bdb8d2c8d024767d59a604a7ae6f6a9396
Committed by
Daniela Feitosa
1 parent
1e450b5b
Exists in
master
and in
17 other branches
Add option to context_content to use parent folder name instead of block title
Also: Improve ContextContent plugin's view text See merge request !713
Showing
6 changed files
with
63 additions
and
20 deletions
Show diff stats
plugins/context_content/lib/context_content_plugin/context_content_block.rb
... | ... | @@ -2,11 +2,12 @@ class ContextContentPlugin::ContextContentBlock < Block |
2 | 2 | |
3 | 3 | settings_items :show_name, :type => :boolean, :default => true |
4 | 4 | settings_items :show_image, :type => :boolean, :default => true |
5 | + settings_items :use_parent_title, :type => :boolean, :default => false | |
5 | 6 | settings_items :show_parent_content, :type => :boolean, :default => true |
6 | 7 | settings_items :types, :type => Array, :default => ['UploadedFile'] |
7 | 8 | settings_items :limit, :type => :integer, :default => 6 |
8 | 9 | |
9 | - attr_accessible :show_image, :show_name, :show_parent_content, :types | |
10 | + attr_accessible :show_image, :show_name, :use_parent_title, :show_parent_content, :types | |
10 | 11 | |
11 | 12 | alias :profile :owner |
12 | 13 | |
... | ... | @@ -65,6 +66,11 @@ class ContextContentPlugin::ContextContentBlock < Block |
65 | 66 | end |
66 | 67 | end |
67 | 68 | |
69 | + def parent_title(contents) | |
70 | + return nil if contents.blank? | |
71 | + contents.first.parent.name | |
72 | + end | |
73 | + | |
68 | 74 | def footer |
69 | 75 | block = self |
70 | 76 | proc do |
... | ... | @@ -82,9 +88,9 @@ class ContextContentPlugin::ContextContentBlock < Block |
82 | 88 | block = self |
83 | 89 | proc do |
84 | 90 | contents = block.contents(@page) |
91 | + parent_title = block.parent_title(contents) | |
85 | 92 | if !contents.blank? |
86 | - block_title(block.title) + content_tag('div', | |
87 | - render(:file => 'blocks/context_content', :locals => {:block => block, :contents => contents}), :class => 'contents', :id => "context_content_#{block.id}") | |
93 | + render(:file => 'blocks/context_content', :locals => {:block => block, :contents => contents, :parent_title => parent_title}) | |
88 | 94 | else |
89 | 95 | '' |
90 | 96 | end | ... | ... |
plugins/context_content/test/functional/content_viewer_controller_test.rb
... | ... | @@ -4,12 +4,13 @@ class ContentViewerControllerTest < ActionController::TestCase |
4 | 4 | |
5 | 5 | def setup |
6 | 6 | @profile = fast_create(Community) |
7 | - @page = fast_create(Folder, :profile_id => @profile.id) | |
7 | + @page = fast_create(Folder, :profile_id => @profile.id, :name => "New Folder") | |
8 | 8 | |
9 | 9 | box = Box.create!(:owner => @profile) |
10 | 10 | @block = ContextContentPlugin::ContextContentBlock.new(:box_id => box.id) |
11 | 11 | @block.types = ['TinyMceArticle'] |
12 | 12 | @block.limit = 1 |
13 | + @block.title = "New Context Block" | |
13 | 14 | @block.save! |
14 | 15 | end |
15 | 16 | |
... | ... | @@ -27,6 +28,24 @@ class ContentViewerControllerTest < ActionController::TestCase |
27 | 28 | assert_match /article1/, @response.body |
28 | 29 | end |
29 | 30 | |
31 | + should 'display context content block title if it is not configured to use_parent_title' do | |
32 | + @block.use_parent_title = false | |
33 | + @block.save | |
34 | + article = fast_create(TinyMceArticle, :parent_id => @page.id, :profile_id => @profile.id, :name => 'article1') | |
35 | + get :view_page, @page.url | |
36 | + assert_tag 'h3', :attributes => {:class => 'block-title'}, :content => @block.title | |
37 | + assert_no_tag 'h3', :attributes => {:class => 'block-title'}, :content => @page.name | |
38 | + end | |
39 | + | |
40 | + should 'display context content with folder title if it is configured to use_parent_title' do | |
41 | + @block.use_parent_title = true | |
42 | + @block.save | |
43 | + article = fast_create(TinyMceArticle, :parent_id => @page.id, :profile_id => @profile.id, :name => 'article1') | |
44 | + get :view_page, @page.url | |
45 | + assert_tag 'h3', :attributes => {:class => 'block-title'}, :content => @page.name | |
46 | + assert_no_tag 'h3', :attributes => {:class => 'block-title'}, :content => @block.title | |
47 | + end | |
48 | + | |
30 | 49 | should 'display context content block with pagination' do |
31 | 50 | article1 = fast_create(TinyMceArticle, :parent_id => @page.id, :profile_id => @profile.id) |
32 | 51 | article2 = fast_create(TinyMceArticle, :parent_id => @page.id, :profile_id => @profile.id) | ... | ... |
plugins/context_content/test/functional/profile_design_controller_test.rb
... | ... | @@ -27,6 +27,7 @@ class ProfileDesignControllerTest < ActionController::TestCase |
27 | 27 | assert_tag :tag => 'input', :attributes => { :id => 'block_title' } |
28 | 28 | assert_tag :tag => 'input', :attributes => { :id => 'block_show_image' } |
29 | 29 | assert_tag :tag => 'input', :attributes => { :id => 'block_show_name' } |
30 | + assert_tag :tag => 'input', :attributes => { :id => 'block_use_parent_title' } | |
30 | 31 | assert_tag :tag => 'input', :attributes => { :id => 'block_show_parent_content' } |
31 | 32 | assert_tag :tag => 'input', :attributes => { :name => 'block[types][]' } |
32 | 33 | end | ... | ... |
plugins/context_content/test/unit/context_content_block_test.rb
... | ... | @@ -27,9 +27,7 @@ class ContextContentBlockTest < ActiveSupport::TestCase |
27 | 27 | should 'render context content block view' do |
28 | 28 | @page = fast_create(Folder) |
29 | 29 | article = fast_create(TinyMceArticle, :parent_id => @page.id) |
30 | - expects(:block_title).with(@block.title).returns('').once | |
31 | - expects(:content_tag).returns('').once | |
32 | - expects(:render).with(:file => 'blocks/context_content', :locals => {:block => @block, :contents => [article]}) | |
30 | + expects(:render).with(:file => 'blocks/context_content', :locals => {:block => @block, :contents => [article], :parent_title => @page.name}) | |
33 | 31 | instance_eval(&@block.content) |
34 | 32 | end |
35 | 33 | |
... | ... | @@ -39,6 +37,16 @@ class ContextContentBlockTest < ActiveSupport::TestCase |
39 | 37 | assert_equal [article], @block.contents(folder) |
40 | 38 | end |
41 | 39 | |
40 | + should 'return parent name of the contents' do | |
41 | + folder = fast_create(Folder, :name => " New Folder") | |
42 | + article = fast_create(TinyMceArticle, :parent_id => folder.id) | |
43 | + assert_equal folder.name, @block.parent_title([article]) | |
44 | + end | |
45 | + | |
46 | + should 'return no parent name if there is no content' do | |
47 | + assert_nil @block.parent_title([]) | |
48 | + end | |
49 | + | |
42 | 50 | should 'limit number of children to display' do |
43 | 51 | @block.limit = 2 |
44 | 52 | folder = fast_create(Folder) | ... | ... |
plugins/context_content/views/blocks/context_content.html.erb
1 | -<% contents.each do |content| %> | |
2 | - <% content = FilePresenter.for(content) %> | |
3 | - <span class="item"> | |
4 | - <a href="<%= url_for(content.view_url) %>"> | |
5 | - <div class="image"> | |
6 | - <%= instance_eval(&block.content_image(content)) if block.show_image %> | |
7 | - </div> | |
8 | - <% if block.show_name %> | |
9 | - <div class="name"><%= content.name %></div> | |
10 | - <% end %> | |
11 | - </a> | |
12 | - </span> | |
1 | +<% if block.use_parent_title %> | |
2 | + <%= block_title(parent_title) %> | |
3 | +<% else %> | |
4 | + <%= block_title(block.title) %> | |
13 | 5 | <% end %> |
6 | + | |
7 | +<div class='contents' id='<%="context_content_#{block.id}"%>'> | |
8 | + <% contents.each do |content| %> | |
9 | + <% content = FilePresenter.for(content) %> | |
10 | + <span class="item"> | |
11 | + <a href="<%= url_for(content.view_url) %>"> | |
12 | + <div class="image"> | |
13 | + <%= instance_eval(&block.content_image(content)) if block.show_image %> | |
14 | + </div> | |
15 | + <% if block.show_name %> | |
16 | + <div class="name"><%= content.name %></div> | |
17 | + <% end %> | |
18 | + </a> | |
19 | + </span> | |
20 | + <% end %> | |
21 | +</div> | |
14 | 22 | \ No newline at end of file | ... | ... |
plugins/context_content/views/box_organizer/context_content_plugin/_context_content_block.html.erb
... | ... | @@ -2,7 +2,8 @@ |
2 | 2 | <%= labelled_form_field c_('Limit of items'), text_field(:block, :limit, :size => 3) %> |
3 | 3 | <%= labelled_form_field check_box(:block, :show_name) + _('Show content name'), '' %> |
4 | 4 | <%= labelled_form_field check_box(:block, :show_image) + _('Show content image'), '' %> |
5 | - <%= labelled_form_field check_box(:block, :show_parent_content) + _('Show parent content when children is empty'), '' %> | |
5 | + <%= labelled_form_field check_box(:block, :use_parent_title) + _('Use the name of the source folder as block title'), '' %> | |
6 | + <%= labelled_form_field check_box(:block, :show_parent_content) + _('Show block on all existing pages in the source folder'), '' %> | |
6 | 7 | |
7 | 8 | <br/> |
8 | 9 | <%= label :block, :types, _('Display content types:'), :class => 'formlabel' %> | ... | ... |