diff --git a/app/models/external_feed.rb b/app/models/external_feed.rb index 15ead62..dab7caf 100644 --- a/app/models/external_feed.rb +++ b/app/models/external_feed.rb @@ -11,6 +11,15 @@ class ExternalFeed < ActiveRecord::Base } def add_item(title, link, date, content) + doc = Hpricot(content) + doc.search('*').each do |p| + if p.instance_of? Hpricot::Elem + p.remove_attribute 'style' + p.remove_attribute 'class' + end + end + content = doc.to_s + article = TinyMceArticle.new(:name => title, :profile => blog.profile, :body => content, :published_at => date, :source => link, :profile => blog.profile, :parent => blog) unless blog.children.exists?(:slug => article.slug) article.save! diff --git a/test/unit/external_feed_test.rb b/test/unit/external_feed_test.rb index 61efe42..5462ea8 100644 --- a/test/unit/external_feed_test.rb +++ b/test/unit/external_feed_test.rb @@ -152,4 +152,18 @@ class ExternalFeedTest < ActiveSupport::TestCase assert_equal 35, external_feed.fetched_at.min end + should 'strip content of style and class attributes' do + blog = create_blog + e = build(:external_feed, :blog => blog) + e.add_item('Article title', 'http://orig.link.invalid', Time.now, '

Html content 1.

') + e.add_item('Article title 2', 'http://orig.link.invalid', Time.now, '

Html content 2.

') + e.add_item('Article title 3', 'http://orig.link.invalid', Time.now, '') + + dd = [] + Article.where(['parent_id = ?', blog.id]).all.each do |a| + dd << a.body.to_s.strip.gsub(/\s+/, ' ') + end + assert_equal '

Html content 1.

Html content 2.

', dd.sort.join + end + end -- libgit2 0.21.2