Commit 950a07082d85808991b63c99f0c30386af945a86

Authored by Victor Costa
2 parents 03e838f1 16b6f59f

Merge branch 'article_display_media_panel' into 'master'

Allow article types to define when media panel should be displayed

See merge request !633
app/models/article.rb
@@ -635,6 +635,14 @@ class Article < ActiveRecord::Base @@ -635,6 +635,14 @@ class Article < ActiveRecord::Base
635 can_display_hits? && display_hits 635 can_display_hits? && display_hits
636 end 636 end
637 637
  638 + def display_media_panel?
  639 + can_display_media_panel? && environment.enabled?('media_panel')
  640 + end
  641 +
  642 + def can_display_media_panel?
  643 + false
  644 + end
  645 +
638 def image? 646 def image?
639 false 647 false
640 end 648 end
app/models/enterprise_homepage.rb
@@ -35,4 +35,8 @@ class EnterpriseHomepage < Article @@ -35,4 +35,8 @@ class EnterpriseHomepage < Article
35 false 35 false
36 end 36 end
37 37
  38 + def can_display_media_panel?
  39 + true
  40 + end
  41 +
38 end 42 end
app/models/event.rb
@@ -134,6 +134,10 @@ class Event < Article @@ -134,6 +134,10 @@ class Event < Article
134 true 134 true
135 end 135 end
136 136
  137 + def can_display_media_panel?
  138 + true
  139 + end
  140 +
137 include Noosfero::TranslatableContent 141 include Noosfero::TranslatableContent
138 include MaybeAddHttp 142 include MaybeAddHttp
139 143
app/models/textile_article.rb
@@ -24,6 +24,10 @@ class TextileArticle < TextArticle @@ -24,6 +24,10 @@ class TextileArticle < TextArticle
24 true 24 true
25 end 25 end
26 26
  27 + def can_display_media_panel?
  28 + true
  29 + end
  30 +
27 protected 31 protected
28 32
29 def convert_to_html(textile) 33 def convert_to_html(textile)
app/models/tiny_mce_article.rb
@@ -28,4 +28,8 @@ class TinyMceArticle < TextArticle @@ -28,4 +28,8 @@ class TinyMceArticle < TextArticle
28 true 28 true
29 end 29 end
30 30
  31 + def can_display_media_panel?
  32 + true
  33 + end
  34 +
31 end 35 end
app/views/cms/edit.html.erb
1 <%= error_messages_for 'article' %> 1 <%= error_messages_for 'article' %>
2 2
3 -<% show_media_panel = environment.enabled?('media_panel') && [TinyMceArticle, TextileArticle, Event, EnterpriseHomepage].any?{|klass| @article.kind_of?(klass)} %>  
4 -  
5 -<div class='<%= (show_media_panel ? 'with_media_panel' : 'no_media_panel') %>'> 3 +<div class='<%= (@article.display_media_panel? ? 'with_media_panel' : 'no_media_panel') %>'>
6 <%= labelled_form_for 'article', :html => { :multipart => true, :class => @type } do |f| %> 4 <%= labelled_form_for 'article', :html => { :multipart => true, :class => @type } do |f| %>
7 5
8 <%= hidden_field_tag("type", @type) if @type %> 6 <%= hidden_field_tag("type", @type) if @type %>
@@ -68,7 +66,7 @@ @@ -68,7 +66,7 @@
68 <% end %> 66 <% end %>
69 </div> 67 </div>
70 68
71 -<% if show_media_panel %> 69 +<% if @article.display_media_panel? %>
72 <%= render :partial => 'text_editor_sidebar' %> 70 <%= render :partial => 'text_editor_sidebar' %>
73 <% end %> 71 <% end %>
74 72
test/unit/article_test.rb
@@ -2191,4 +2191,27 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -2191,4 +2191,27 @@ class ArticleTest &lt; ActiveSupport::TestCase
2191 article.destroy 2191 article.destroy
2192 end 2192 end
2193 2193
  2194 + should 'have can_display_media_panel with default false' do
  2195 + a = Article.new
  2196 + assert !a.can_display_media_panel?
  2197 + end
  2198 +
  2199 + should 'display media panel when allowed by the environment' do
  2200 + a = Article.new
  2201 + a.expects(:can_display_media_panel?).returns(true)
  2202 + environment = mock
  2203 + a.expects(:environment).returns(environment)
  2204 + environment.expects(:enabled?).with('media_panel').returns(true)
  2205 + assert a.display_media_panel?
  2206 + end
  2207 +
  2208 + should 'not display media panel when not allowed by the environment' do
  2209 + a = Article.new
  2210 + a.expects(:can_display_media_panel?).returns(true)
  2211 + environment = mock
  2212 + a.expects(:environment).returns(environment)
  2213 + environment.expects(:enabled?).with('media_panel').returns(false)
  2214 + assert !a.display_media_panel?
  2215 + end
  2216 +
2194 end 2217 end
test/unit/enterprise_homepage_test.rb
@@ -26,4 +26,9 @@ class EnterpriseHomepageTest &lt; ActiveSupport::TestCase @@ -26,4 +26,9 @@ class EnterpriseHomepageTest &lt; ActiveSupport::TestCase
26 assert_equal false, a.can_display_hits? 26 assert_equal false, a.can_display_hits?
27 end 27 end
28 28
  29 + should 'have can_display_media_panel with default true' do
  30 + a = EnterpriseHomepage.new
  31 + assert a.can_display_media_panel?
  32 + end
  33 +
29 end 34 end
test/unit/event_test.rb
@@ -346,4 +346,9 @@ class EventTest &lt; ActiveSupport::TestCase @@ -346,4 +346,9 @@ class EventTest &lt; ActiveSupport::TestCase
346 assert event.translatable? 346 assert event.translatable?
347 end 347 end
348 348
  349 + should 'have can_display_media_panel with default true' do
  350 + a = Event.new
  351 + assert a.can_display_media_panel?
  352 + end
  353 +
349 end 354 end
test/unit/textile_article_test.rb
@@ -174,6 +174,11 @@ class TextileArticleTest &lt; ActiveSupport::TestCase @@ -174,6 +174,11 @@ class TextileArticleTest &lt; ActiveSupport::TestCase
174 assert_equal "<p>one\nparagraph</p>", build_article("one\nparagraph").to_html 174 assert_equal "<p>one\nparagraph</p>", build_article("one\nparagraph").to_html
175 end 175 end
176 176
  177 + should 'have can_display_media_panel with default true' do
  178 + a = TextileArticle.new
  179 + assert a.can_display_media_panel?
  180 + end
  181 +
177 protected 182 protected
178 183
179 def build_article(input = nil, options = {}) 184 def build_article(input = nil, options = {})
test/unit/tiny_mce_article_test.rb
@@ -235,4 +235,9 @@ end @@ -235,4 +235,9 @@ end
235 :attributes => { :colspan => 2, :rowspan => 3 } 235 :attributes => { :colspan => 2, :rowspan => 3 }
236 end 236 end
237 237
  238 + should 'have can_display_media_panel with default true' do
  239 + a = TinyMceArticle.new
  240 + assert a.can_display_media_panel?
  241 + end
  242 +
238 end 243 end