Commit c511a9f9298d2a3aa79e0bc7780e8401ea061477

Authored by Victor Costa
1 parent 5ead2c2f

Add plugin namespace in context_content_block

plugins/context_content/lib/context_content_block.rb
@@ -1,96 +0,0 @@ @@ -1,96 +0,0 @@
1 -class ContextContentBlock < Block  
2 -  
3 - settings_items :show_name, :type => :boolean, :default => true  
4 - settings_items :show_image, :type => :boolean, :default => true  
5 - settings_items :show_parent_content, :type => :boolean, :default => true  
6 - settings_items :types, :type => Array, :default => ['UploadedFile']  
7 - settings_items :limit, :type => :integer, :default => 6  
8 -  
9 - alias :profile :owner  
10 -  
11 - include Noosfero::Plugin::HotSpot  
12 -  
13 - def self.description  
14 - _('Display context content')  
15 - end  
16 -  
17 - def help  
18 - _('This block displays content based on context.')  
19 - end  
20 -  
21 - def available_content_types  
22 - @available_content_types ||= [UploadedFile, Event, TinyMceArticle, TextileArticle, RawHTMLArticle, Folder, Blog, Forum, Gallery, RssFeed] + plugins.dispatch(:content_types)  
23 - checked_types = types.map {|t| t.constantize}  
24 - checked_types + (@available_content_types - checked_types)  
25 - end  
26 -  
27 - def first_content_types  
28 - available_content_types.first(first_types_count)  
29 - end  
30 -  
31 - def more_content_types  
32 - available_content_types.drop(first_types_count)  
33 - end  
34 -  
35 - def first_types_count  
36 - [2, types.length].max  
37 - end  
38 -  
39 - def types=(new_types)  
40 - settings[:types] = new_types.reject(&:blank?)  
41 - end  
42 -  
43 - def content_image(content)  
44 - block = self  
45 - lambda do  
46 - if content.image?  
47 - image_tag(content.public_filename(:thumb))  
48 - else  
49 - extra_class = content.uploaded_file? ? "extension-#{content.extension}" : ''  
50 - klasses = [content.icon_name].flatten.map{|name| 'icon-'+name}.join(' ')  
51 - content_tag 'div', '', :class => "context-icon #{klasses} #{extra_class}"  
52 - end  
53 - end  
54 - end  
55 -  
56 - def contents(page, p=1)  
57 - return @children unless @children.blank?  
58 - if page  
59 - @children = page.children.with_types(types).paginate(:per_page => limit, :page => p)  
60 - (@children.blank? && show_parent_content) ? contents(page.parent, p) : @children  
61 - else  
62 - nil  
63 - end  
64 - end  
65 -  
66 - def footer  
67 - block = self  
68 - lambda do  
69 - contents = block.contents(@page)  
70 - if contents  
71 - content_tag('div',  
72 - render(:partial => 'blocks/more', :locals => {:block => block, :contents => contents, :article_id => @page.id}), :id => "context_content_more_#{block.id}", :class => "more_button")  
73 - else  
74 - ''  
75 - end  
76 - end  
77 - end  
78 -  
79 - def content(args={})  
80 - block = self  
81 - lambda do  
82 - contents = block.contents(@page)  
83 - if !contents.blank?  
84 - block_title(block.title) + content_tag('div',  
85 - render(:file => 'blocks/context_content', :locals => {:block => block, :contents => contents}), :class => 'contents', :id => "context_content_#{block.id}")  
86 - else  
87 - ''  
88 - end  
89 - end  
90 - end  
91 -  
92 - def cacheable?  
93 - false  
94 - end  
95 -  
96 -end  
plugins/context_content/lib/context_content_plugin.rb
@@ -9,8 +9,8 @@ class ContextContentPlugin &lt; Noosfero::Plugin @@ -9,8 +9,8 @@ class ContextContentPlugin &lt; Noosfero::Plugin
9 end 9 end
10 10
11 def self.extra_blocks 11 def self.extra_blocks
12 - {  
13 - ContextContentBlock => { :type => [Person, Community, Enterprise] } 12 + {
  13 + ContextContentPlugin::ContextContentBlock => { :type => [Person, Community, Enterprise] }
14 } 14 }
15 end 15 end
16 16
plugins/context_content/lib/context_content_plugin/context_content_block.rb 0 → 100644
@@ -0,0 +1,96 @@ @@ -0,0 +1,96 @@
  1 +class ContextContentPlugin::ContextContentBlock < Block
  2 +
  3 + settings_items :show_name, :type => :boolean, :default => true
  4 + settings_items :show_image, :type => :boolean, :default => true
  5 + settings_items :show_parent_content, :type => :boolean, :default => true
  6 + settings_items :types, :type => Array, :default => ['UploadedFile']
  7 + settings_items :limit, :type => :integer, :default => 6
  8 +
  9 + alias :profile :owner
  10 +
  11 + include Noosfero::Plugin::HotSpot
  12 +
  13 + def self.description
  14 + _('Display context content')
  15 + end
  16 +
  17 + def help
  18 + _('This block displays content based on context.')
  19 + end
  20 +
  21 + def available_content_types
  22 + @available_content_types ||= [UploadedFile, Event, TinyMceArticle, TextileArticle, RawHTMLArticle, Folder, Blog, Forum, Gallery, RssFeed] + plugins.dispatch(:content_types)
  23 + checked_types = types.map {|t| t.constantize}
  24 + checked_types + (@available_content_types - checked_types)
  25 + end
  26 +
  27 + def first_content_types
  28 + available_content_types.first(first_types_count)
  29 + end
  30 +
  31 + def more_content_types
  32 + available_content_types.drop(first_types_count)
  33 + end
  34 +
  35 + def first_types_count
  36 + [2, types.length].max
  37 + end
  38 +
  39 + def types=(new_types)
  40 + settings[:types] = new_types.reject(&:blank?)
  41 + end
  42 +
  43 + def content_image(content)
  44 + block = self
  45 + lambda do
  46 + if content.image?
  47 + image_tag(content.public_filename(:thumb))
  48 + else
  49 + extra_class = content.uploaded_file? ? "extension-#{content.extension}" : ''
  50 + klasses = [content.icon_name].flatten.map{|name| 'icon-'+name}.join(' ')
  51 + content_tag 'div', '', :class => "context-icon #{klasses} #{extra_class}"
  52 + end
  53 + end
  54 + end
  55 +
  56 + def contents(page, p=1)
  57 + return @children unless @children.blank?
  58 + if page
  59 + @children = page.children.with_types(types).paginate(:per_page => limit, :page => p)
  60 + (@children.blank? && show_parent_content) ? contents(page.parent, p) : @children
  61 + else
  62 + nil
  63 + end
  64 + end
  65 +
  66 + def footer
  67 + block = self
  68 + lambda do
  69 + contents = block.contents(@page)
  70 + if contents
  71 + content_tag('div',
  72 + render(:partial => 'blocks/more', :locals => {:block => block, :contents => contents, :article_id => @page.id}), :id => "context_content_more_#{block.id}", :class => "more_button")
  73 + else
  74 + ''
  75 + end
  76 + end
  77 + end
  78 +
  79 + def content(args={})
  80 + block = self
  81 + lambda do
  82 + contents = block.contents(@page)
  83 + if !contents.blank?
  84 + block_title(block.title) + content_tag('div',
  85 + render(:file => 'blocks/context_content', :locals => {:block => block, :contents => contents}), :class => 'contents', :id => "context_content_#{block.id}")
  86 + else
  87 + ''
  88 + end
  89 + end
  90 + end
  91 +
  92 + def cacheable?
  93 + false
  94 + end
  95 +
  96 +end
plugins/context_content/test/functional/content_viewer_controller_test.rb
@@ -14,7 +14,7 @@ class ContentViewerControllerTest &lt; ActionController::TestCase @@ -14,7 +14,7 @@ class ContentViewerControllerTest &lt; ActionController::TestCase
14 @page = fast_create(Folder, :profile_id => @profile.id) 14 @page = fast_create(Folder, :profile_id => @profile.id)
15 15
16 box = Box.create!(:owner => @profile) 16 box = Box.create!(:owner => @profile)
17 - @block = ContextContentBlock.new(:box => box) 17 + @block = ContextContentPlugin::ContextContentBlock.new(:box => box)
18 @block.types = ['TinyMceArticle'] 18 @block.types = ['TinyMceArticle']
19 @block.limit = 1 19 @block.limit = 1
20 @block.save! 20 @block.save!
plugins/context_content/test/functional/context_content_plugin_profile_controller_test.rb
@@ -6,7 +6,7 @@ class ContextContentPluginProfileControllerTest &lt; ActionController::TestCase @@ -6,7 +6,7 @@ class ContextContentPluginProfileControllerTest &lt; ActionController::TestCase
6 6
7 def setup 7 def setup
8 @profile = fast_create(Community) 8 @profile = fast_create(Community)
9 - @block = ContextContentBlock.new 9 + @block = ContextContentPlugin::ContextContentBlock.new
10 @block.types = ['TinyMceArticle'] 10 @block.types = ['TinyMceArticle']
11 @block.limit = 1 11 @block.limit = 1
12 @block.save! 12 @block.save!
plugins/context_content/test/functional/profile_design_controller_test.rb
@@ -19,7 +19,7 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase @@ -19,7 +19,7 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase
19 @page = fast_create(Folder, :profile_id => @profile.id) 19 @page = fast_create(Folder, :profile_id => @profile.id)
20 20
21 box = Box.create!(:owner => @profile) 21 box = Box.create!(:owner => @profile)
22 - @block = ContextContentBlock.new(:box => box) 22 + @block = ContextContentPlugin::ContextContentBlock.new(:box => box)
23 @block.types = ['TinyMceArticle'] 23 @block.types = ['TinyMceArticle']
24 @block.limit = 1 24 @block.limit = 1
25 @block.save! 25 @block.save!
plugins/context_content/test/unit/context_content_block_test.rb
@@ -4,12 +4,12 @@ class ContextContentBlockTest &lt; ActiveSupport::TestCase @@ -4,12 +4,12 @@ class ContextContentBlockTest &lt; ActiveSupport::TestCase
4 4
5 def setup 5 def setup
6 Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([]) 6 Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([])
7 - @block = ContextContentBlock.create! 7 + @block = ContextContentPlugin::ContextContentBlock.create!
8 @block.types = ['TinyMceArticle'] 8 @block.types = ['TinyMceArticle']
9 end 9 end
10 10
11 should 'describe itself' do 11 should 'describe itself' do
12 - assert_not_equal Block.description, ContextContentBlock.description 12 + assert_not_equal Block.description, ContextContentPlugin::ContextContentBlock.description
13 end 13 end
14 14
15 should 'has a help' do 15 should 'has a help' do
@@ -170,7 +170,7 @@ class ContextContentBlockTest &lt; ActiveSupport::TestCase @@ -170,7 +170,7 @@ class ContextContentBlockTest &lt; ActiveSupport::TestCase
170 should 'return box owner on profile method call' do 170 should 'return box owner on profile method call' do
171 profile = fast_create(Community) 171 profile = fast_create(Community)
172 box = Box.create(:owner_type => 'Profile', :owner_id => profile.id) 172 box = Box.create(:owner_type => 'Profile', :owner_id => profile.id)
173 - block = ContextContentBlock.create!(:box => box) 173 + block = ContextContentPlugin::ContextContentBlock.create!(:box => box)
174 assert_equal profile, block.profile 174 assert_equal profile, block.profile
175 end 175 end
176 176
plugins/context_content/test/unit/context_content_plugin_test.rb
@@ -20,7 +20,7 @@ class ContextContentPluginTest &lt; ActiveSupport::TestCase @@ -20,7 +20,7 @@ class ContextContentPluginTest &lt; ActiveSupport::TestCase
20 end 20 end
21 21
22 should 'return ContextContentBlock in extra_blocks class method' do 22 should 'return ContextContentBlock in extra_blocks class method' do
23 - assert ContextContentPlugin.extra_blocks.keys.include?(ContextContentBlock) 23 + assert ContextContentPlugin.extra_blocks.keys.include?(ContextContentPlugin::ContextContentBlock)
24 end 24 end
25 25
26 should 'return false for class method has_admin_url?' do 26 should 'return false for class method has_admin_url?' do
@@ -28,11 +28,11 @@ class ContextContentPluginTest &lt; ActiveSupport::TestCase @@ -28,11 +28,11 @@ class ContextContentPluginTest &lt; ActiveSupport::TestCase
28 end 28 end
29 29
30 should 'ContextContentBlock not available for environment' do 30 should 'ContextContentBlock not available for environment' do
31 - assert_not_includes plugins.dispatch(:extra_blocks, :type => Environment), ContextContentBlock 31 + assert_not_includes plugins.dispatch(:extra_blocks, :type => Environment), ContextContentPlugin::ContextContentBlock
32 end 32 end
33 33
34 should 'ContextContentBlock available for community' do 34 should 'ContextContentBlock available for community' do
35 - assert_includes plugins.dispatch(:extra_blocks, :type => Community), ContextContentBlock 35 + assert_includes plugins.dispatch(:extra_blocks, :type => Community), ContextContentPlugin::ContextContentBlock
36 end 36 end
37 37
38 should 'has stylesheet' do 38 should 'has stylesheet' do
@@ -41,7 +41,7 @@ class ContextContentPluginTest &lt; ActiveSupport::TestCase @@ -41,7 +41,7 @@ class ContextContentPluginTest &lt; ActiveSupport::TestCase
41 41
42 [Person, Community, Enterprise].each do |klass| 42 [Person, Community, Enterprise].each do |klass|
43 should "ContextContentBlock be available for #{klass.name}" do 43 should "ContextContentBlock be available for #{klass.name}" do
44 - assert_includes plugins.dispatch(:extra_blocks, :type => klass), ContextContentBlock 44 + assert_includes plugins.dispatch(:extra_blocks, :type => klass), ContextContentPlugin::ContextContentBlock
45 end 45 end
46 end 46 end
47 47
plugins/context_content/views/box_organizer/_context_content_block.rhtml
@@ -1,23 +0,0 @@ @@ -1,23 +0,0 @@
1 -<div id='edit-context-content-block'>  
2 - <%= labelled_form_field _('Limit of items'), text_field(:block, :limit, :size => 3) %>  
3 - <%= labelled_form_field check_box(:block, :show_name) + _('Show content name'), '' %>  
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'), '' %>  
6 -  
7 - <br/>  
8 - <%= label :block, :types, _('Display content types:'), :class => 'formlabel' %>  
9 - <div class="content_types">  
10 - <% @block.first_content_types.each do |type| %>  
11 - <%= labelled_form_field check_box(:block, 'types', {:multiple => true}, type.name, nil) + _(type.short_description), '' %>  
12 - <% end %>  
13 - <% if !@block.more_content_types.empty? %>  
14 - <a href="#" onclick="jQuery('.content_types .more').toggle(); return false;"><%= _('more') %></a>  
15 - <% end %>  
16 - <div class="more" style="display: none">  
17 - <% @block.more_content_types.each do |type| %>  
18 - <%= labelled_form_field check_box(:block, 'types', {:multiple => true}, type.name, nil) + _(type.short_description), '' %>  
19 - <% end %>  
20 - </div>  
21 - </div>  
22 - <br/>  
23 -</div>  
plugins/context_content/views/box_organizer/context_content_plugin/_context_content_block.rhtml 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +<div id='edit-context-content-block'>
  2 + <%= labelled_form_field _('Limit of items'), text_field(:block, :limit, :size => 3) %>
  3 + <%= labelled_form_field check_box(:block, :show_name) + _('Show content name'), '' %>
  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'), '' %>
  6 +
  7 + <br/>
  8 + <%= label :block, :types, _('Display content types:'), :class => 'formlabel' %>
  9 + <div class="content_types">
  10 + <% @block.first_content_types.each do |type| %>
  11 + <%= labelled_form_field check_box(:block, 'types', {:multiple => true}, type.name, nil) + _(type.short_description), '' %>
  12 + <% end %>
  13 + <% if !@block.more_content_types.empty? %>
  14 + <a href="#" onclick="jQuery('.content_types .more').toggle(); return false;"><%= _('more') %></a>
  15 + <% end %>
  16 + <div class="more" style="display: none">
  17 + <% @block.more_content_types.each do |type| %>
  18 + <%= labelled_form_field check_box(:block, 'types', {:multiple => true}, type.name, nil) + _(type.short_description), '' %>
  19 + <% end %>
  20 + </div>
  21 + </div>
  22 + <br/>
  23 +</div>
plugins/context_content/views/profile_design
@@ -1 +0,0 @@ @@ -1 +0,0 @@
1 -box_organizer  
2 \ No newline at end of file 0 \ No newline at end of file
plugins/context_content/views/profile_design/context_content_plugin 0 → 120000
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +../box_organizer/context_content_plugin/
0 \ No newline at end of file 2 \ No newline at end of file