[Git][noosfero/noosfero][master] should not parse html of body and abstract display content plugin
Leandro Nunes
gitlab at mg.gitlab.com
Thu May 19 16:55:51 BRT 2016
Leandro Nunes pushed to branch master at Noosfero / noosfero
Commits:
68660d32 by Leandro Nunes dos Santos at 2016-05-19T16:55:22-03:00
should not parse html of body and abstract display content plugin
- - - - -
3 changed files:
- plugins/display_content/test/unit/display_content_block_test.rb
- plugins/display_content/views/blocks/display_content/_document.slim
- plugins/display_content/views/blocks/display_content/_section.slim
Changes:
=====================================
plugins/display_content/test/unit/display_content_block_test.rb
=====================================
--- a/plugins/display_content/test/unit/display_content_block_test.rb
+++ b/plugins/display_content/test/unit/display_content_block_test.rb
@@ -774,4 +774,63 @@ class DisplayContentBlockViewTest < ActionView::TestCase
assert render_block_content(block).index(en_article.name).present?
assert_nil render_block_content(block).index(pt_article.name)
end
+
+ should 'not escape abstract html of articles' do
+ profile = create_user('testuser').person
+ a1 = fast_create(TextileArticle, abstract: "<p class='test-article-abstract'>Test</p>", name: 'test article 1', profile_id: profile.id, published_at: DateTime.current)
+
+ block = DisplayContentBlock.new
+ block.sections = [{:value => 'abstract', :checked => true}]
+ block.nodes = [a1.id]
+ box = mock()
+ block.stubs(:box).returns(box)
+ box.stubs(:owner).returns(profile)
+ assert_tag_in_string render_block_content(block), tag: 'p', attributes: { class: 'test-article-abstract' }
+ end
+
+ should 'not raise if abstract of article is nil' do
+ profile = create_user('testuser').person
+ a1 = fast_create(TextileArticle, name: 'test article 1', profile_id: profile.id, published_at: DateTime.current)
+
+ block = DisplayContentBlock.new
+ block.sections = [{:value => 'abstract', :checked => true}]
+ block.nodes = [a1.id]
+ box = mock()
+ block.stubs(:box).returns(box)
+ box.stubs(:owner).returns(profile)
+ assert_nil a1.abstract
+ assert_nothing_raised do
+ render_block_content(block)
+ end
+ end
+
+ should 'not escape body html of articles' do
+ profile = create_user('testuser').person
+ a1 = fast_create(TextileArticle, body: "<p class='test-article-body'>Test</p>", name: 'test article 1', profile_id: profile.id, published_at: DateTime.current)
+
+ block = DisplayContentBlock.new
+ block.sections = [{:value => 'body', :checked => true}]
+ block.nodes = [a1.id]
+ box = mock()
+ block.stubs(:box).returns(box)
+ box.stubs(:owner).returns(profile)
+ assert_tag_in_string render_block_content(block), tag: 'p', attributes: { class: 'test-article-body' }
+ end
+
+ should 'not raise if body of article is nil' do
+ profile = create_user('testuser').person
+ a1 = fast_create(TextileArticle, name: 'test article 1', profile_id: profile.id, published_at: DateTime.current)
+
+ block = DisplayContentBlock.new
+ block.sections = [{:value => 'abstract', :checked => true}]
+ block.nodes = [a1.id]
+ box = mock()
+ block.stubs(:box).returns(box)
+ box.stubs(:owner).returns(profile)
+ assert_nil a1.body
+ assert_nothing_raised do
+ render_block_content(block)
+ end
+ end
+
end
=====================================
plugins/display_content/views/blocks/display_content/_document.slim
=====================================
--- a/plugins/display_content/views/blocks/display_content/_document.slim
+++ b/plugins/display_content/views/blocks/display_content/_document.slim
@@ -1,4 +1,4 @@
li
- unless item.folder? || item.class == RssFeed
= render partial: 'blocks/display_content/section', collection: block.sections, locals: { block: block, item: item }
- = render partial: 'blocks/display_content/read_more', locals: { item: item, abstract_section: block.sections.bsearch { |section| section[:value] == 'abstract' }, block: block }
\ No newline at end of file
+ = render partial: 'blocks/display_content/read_more', locals: { item: item, abstract_section: block.sections.bsearch { |section| section[:value] == 'abstract' }, block: block }
=====================================
plugins/display_content/views/blocks/display_content/_section.slim
=====================================
--- a/plugins/display_content/views/blocks/display_content/_section.slim
+++ b/plugins/display_content/views/blocks/display_content/_section.slim
@@ -8,10 +8,10 @@
= link_to(h(item.title), item.url)
- when 'abstract'
div class='lead'
- = item.abstract
+ = (item.abstract || '').html_safe
- when 'body'
div class='body'
- = item.body
+ = (item.body || '').html_safe
- when 'image'
- unless item.image || item.image.public_filename
div class='image'
View it on GitLab: https://gitlab.com/noosfero/noosfero/commit/68660d326afa1550ee5659c8edc49bf2faa9932e
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20160519/e150948c/attachment-0001.html>
More information about the Noosfero-dev
mailing list