From 16b6f59fb1b90726b62623090bf6c9d2d4321e71 Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Wed, 22 Jul 2015 18:20:28 -0300 Subject: [PATCH] Allow article types to define when media panel should be displayed --- app/models/article.rb | 8 ++++++++ app/models/enterprise_homepage.rb | 4 ++++ app/models/event.rb | 4 ++++ app/models/textile_article.rb | 4 ++++ app/models/tiny_mce_article.rb | 4 ++++ app/views/cms/edit.html.erb | 6 ++---- test/unit/article_test.rb | 23 +++++++++++++++++++++++ test/unit/enterprise_homepage_test.rb | 5 +++++ test/unit/event_test.rb | 5 +++++ test/unit/textile_article_test.rb | 5 +++++ test/unit/tiny_mce_article_test.rb | 5 +++++ 11 files changed, 69 insertions(+), 4 deletions(-) diff --git a/app/models/article.rb b/app/models/article.rb index 9a6b691..44bc601 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -635,6 +635,14 @@ class Article < ActiveRecord::Base can_display_hits? && display_hits end + def display_media_panel? + can_display_media_panel? && environment.enabled?('media_panel') + end + + def can_display_media_panel? + false + end + def image? false end diff --git a/app/models/enterprise_homepage.rb b/app/models/enterprise_homepage.rb index 47355a8..15f5abf 100644 --- a/app/models/enterprise_homepage.rb +++ b/app/models/enterprise_homepage.rb @@ -35,4 +35,8 @@ class EnterpriseHomepage < Article false end + def can_display_media_panel? + true + end + end diff --git a/app/models/event.rb b/app/models/event.rb index 0714a95..611bda8 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -134,6 +134,10 @@ class Event < Article true end + def can_display_media_panel? + true + end + include Noosfero::TranslatableContent include MaybeAddHttp diff --git a/app/models/textile_article.rb b/app/models/textile_article.rb index f6773c5..3dd9be8 100644 --- a/app/models/textile_article.rb +++ b/app/models/textile_article.rb @@ -24,6 +24,10 @@ class TextileArticle < TextArticle true end + def can_display_media_panel? + true + end + protected def convert_to_html(textile) diff --git a/app/models/tiny_mce_article.rb b/app/models/tiny_mce_article.rb index 63a1e08..c14a0cd 100644 --- a/app/models/tiny_mce_article.rb +++ b/app/models/tiny_mce_article.rb @@ -28,4 +28,8 @@ class TinyMceArticle < TextArticle true end + def can_display_media_panel? + true + end + end diff --git a/app/views/cms/edit.html.erb b/app/views/cms/edit.html.erb index 7c41265..c234788 100644 --- a/app/views/cms/edit.html.erb +++ b/app/views/cms/edit.html.erb @@ -1,8 +1,6 @@ <%= error_messages_for 'article' %> -<% show_media_panel = environment.enabled?('media_panel') && [TinyMceArticle, TextileArticle, Event, EnterpriseHomepage].any?{|klass| @article.kind_of?(klass)} %> - -
'> +
'> <%= labelled_form_for 'article', :html => { :multipart => true, :class => @type } do |f| %> <%= hidden_field_tag("type", @type) if @type %> @@ -68,7 +66,7 @@ <% end %>
-<% if show_media_panel %> +<% if @article.display_media_panel? %> <%= render :partial => 'text_editor_sidebar' %> <% end %> diff --git a/test/unit/article_test.rb b/test/unit/article_test.rb index bb31ed0..937517e 100644 --- a/test/unit/article_test.rb +++ b/test/unit/article_test.rb @@ -2191,4 +2191,27 @@ class ArticleTest < ActiveSupport::TestCase article.destroy end + should 'have can_display_media_panel with default false' do + a = Article.new + assert !a.can_display_media_panel? + end + + should 'display media panel when allowed by the environment' do + a = Article.new + a.expects(:can_display_media_panel?).returns(true) + environment = mock + a.expects(:environment).returns(environment) + environment.expects(:enabled?).with('media_panel').returns(true) + assert a.display_media_panel? + end + + should 'not display media panel when not allowed by the environment' do + a = Article.new + a.expects(:can_display_media_panel?).returns(true) + environment = mock + a.expects(:environment).returns(environment) + environment.expects(:enabled?).with('media_panel').returns(false) + assert !a.display_media_panel? + end + end diff --git a/test/unit/enterprise_homepage_test.rb b/test/unit/enterprise_homepage_test.rb index 3d5dd6a..3494c19 100644 --- a/test/unit/enterprise_homepage_test.rb +++ b/test/unit/enterprise_homepage_test.rb @@ -26,4 +26,9 @@ class EnterpriseHomepageTest < ActiveSupport::TestCase assert_equal false, a.can_display_hits? end + should 'have can_display_media_panel with default true' do + a = EnterpriseHomepage.new + assert a.can_display_media_panel? + end + end diff --git a/test/unit/event_test.rb b/test/unit/event_test.rb index 54b4214..04ae82b 100644 --- a/test/unit/event_test.rb +++ b/test/unit/event_test.rb @@ -346,4 +346,9 @@ class EventTest < ActiveSupport::TestCase assert event.translatable? end + should 'have can_display_media_panel with default true' do + a = Event.new + assert a.can_display_media_panel? + end + end diff --git a/test/unit/textile_article_test.rb b/test/unit/textile_article_test.rb index 6dd6c2a..cb3ac15 100644 --- a/test/unit/textile_article_test.rb +++ b/test/unit/textile_article_test.rb @@ -174,6 +174,11 @@ class TextileArticleTest < ActiveSupport::TestCase assert_equal "

one\nparagraph

", build_article("one\nparagraph").to_html end + should 'have can_display_media_panel with default true' do + a = TextileArticle.new + assert a.can_display_media_panel? + end + protected def build_article(input = nil, options = {}) diff --git a/test/unit/tiny_mce_article_test.rb b/test/unit/tiny_mce_article_test.rb index ea1a475..3ee7404 100644 --- a/test/unit/tiny_mce_article_test.rb +++ b/test/unit/tiny_mce_article_test.rb @@ -235,4 +235,9 @@ end :attributes => { :colspan => 2, :rowspan => 3 } end + should 'have can_display_media_panel with default true' do + a = TinyMceArticle.new + assert a.can_display_media_panel? + end + end -- libgit2 0.21.2