Commit 16b6f59fb1b90726b62623090bf6c9d2d4321e71

Authored by Victor Costa
1 parent 03e838f1

Allow article types to define when media panel should be displayed

app/models/article.rb
... ... @@ -635,6 +635,14 @@ class Article < ActiveRecord::Base
635 635 can_display_hits? && display_hits
636 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 646 def image?
639 647 false
640 648 end
... ...
app/models/enterprise_homepage.rb
... ... @@ -35,4 +35,8 @@ class EnterpriseHomepage < Article
35 35 false
36 36 end
37 37  
  38 + def can_display_media_panel?
  39 + true
  40 + end
  41 +
38 42 end
... ...
app/models/event.rb
... ... @@ -134,6 +134,10 @@ class Event < Article
134 134 true
135 135 end
136 136  
  137 + def can_display_media_panel?
  138 + true
  139 + end
  140 +
137 141 include Noosfero::TranslatableContent
138 142 include MaybeAddHttp
139 143  
... ...
app/models/textile_article.rb
... ... @@ -24,6 +24,10 @@ class TextileArticle < TextArticle
24 24 true
25 25 end
26 26  
  27 + def can_display_media_panel?
  28 + true
  29 + end
  30 +
27 31 protected
28 32  
29 33 def convert_to_html(textile)
... ...
app/models/tiny_mce_article.rb
... ... @@ -28,4 +28,8 @@ class TinyMceArticle < TextArticle
28 28 true
29 29 end
30 30  
  31 + def can_display_media_panel?
  32 + true
  33 + end
  34 +
31 35 end
... ...
app/views/cms/edit.html.erb
1 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 4 <%= labelled_form_for 'article', :html => { :multipart => true, :class => @type } do |f| %>
7 5  
8 6 <%= hidden_field_tag("type", @type) if @type %>
... ... @@ -68,7 +66,7 @@
68 66 <% end %>
69 67 </div>
70 68  
71   -<% if show_media_panel %>
  69 +<% if @article.display_media_panel? %>
72 70 <%= render :partial => 'text_editor_sidebar' %>
73 71 <% end %>
74 72  
... ...
test/unit/article_test.rb
... ... @@ -2191,4 +2191,27 @@ class ArticleTest &lt; ActiveSupport::TestCase
2191 2191 article.destroy
2192 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 2217 end
... ...
test/unit/enterprise_homepage_test.rb
... ... @@ -26,4 +26,9 @@ class EnterpriseHomepageTest &lt; ActiveSupport::TestCase
26 26 assert_equal false, a.can_display_hits?
27 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 34 end
... ...
test/unit/event_test.rb
... ... @@ -346,4 +346,9 @@ class EventTest &lt; ActiveSupport::TestCase
346 346 assert event.translatable?
347 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 354 end
... ...
test/unit/textile_article_test.rb
... ... @@ -174,6 +174,11 @@ class TextileArticleTest &lt; ActiveSupport::TestCase
174 174 assert_equal "<p>one\nparagraph</p>", build_article("one\nparagraph").to_html
175 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 182 protected
178 183  
179 184 def build_article(input = nil, options = {})
... ...
test/unit/tiny_mce_article_test.rb
... ... @@ -235,4 +235,9 @@ end
235 235 :attributes => { :colspan => 2, :rowspan => 3 }
236 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 243 end
... ...