Commit fc586dbf6ed64a9db0be9c0fec0f41fb30232c48

Authored by Evandro Junior
1 parent 3c633e98
Exists in master

changing from hpricot to nokogiri

controllers/email_article_plugin_myprofile_controller.rb
  1 +require 'nokogiri'
  2 +require 'open-uri'
  3 +
1 class EmailArticlePluginMyprofileController < MyProfileController 4 class EmailArticlePluginMyprofileController < MyProfileController
2 5
3 needs_profile 6 needs_profile
  7 +
  8 + class Webpage < Nokogiri::HTML::Document
  9 + attr_accessor :url
  10 +
  11 + class << self
  12 +
  13 + def new(url)
  14 + html = open(url)
  15 + self.parse(html).tap do |d|
  16 + d.url = url
  17 + end
  18 + end
  19 + end
  20 + end
4 21
5 def send_email 22 def send_email
6 if user.is_admin?(profile) 23 if user.is_admin?(profile)
7 - article = Article.find(params[:id]) 24 + article = profile.articles.find(params[:id])
  25 +# article = Article.find(params[:id])
8 EmailArticlePluginMyprofileController::Sender.content(article).deliver 26 EmailArticlePluginMyprofileController::Sender.content(article).deliver
9 render :text => "Email sent to queue" 27 render :text => "Email sent to queue"
10 else 28 else
@@ -14,6 +32,27 @@ class EmailArticlePluginMyprofileController &lt; MyProfileController @@ -14,6 +32,27 @@ class EmailArticlePluginMyprofileController &lt; MyProfileController
14 32
15 class Sender < ActionMailer::Base 33 class Sender < ActionMailer::Base
16 def content(article) 34 def content(article)
  35 + doc = Nokogiri::HTML(article.body)
  36 + doc.css("a").each do |link|
  37 + unless link.attribute("href").nil?
  38 + relative_path = link.attribute("href").value
  39 + link.attribute("href").value = "http://#{article.environment.default_hostname}/#{relative_path}"
  40 + end
  41 + end
  42 +
  43 + doc.css("img").each do |link|
  44 + unless link.attribute("src").nil?
  45 + relative_path = link.attribute("src").value
  46 + link.attribute("src").value = "http://#{article.environment.default_hostname}/#{relative_path}"
  47 + end
  48 + end
  49 +
  50 +
  51 +# link.attributes["href"].value = "http://myproxy.com/?url=#{CGI.escape link.attributes["href"].value}"
  52 +# http://#{environment.default_hostname}/#{relative_path[1]}
  53 +
  54 +
  55 + body = doc.to_s
17 sender = Person.find(article.author_id) 56 sender = Person.find(article.author_id)
18 members = article.profile.members 57 members = article.profile.members
19 emails = [] 58 emails = []
@@ -26,7 +65,8 @@ class EmailArticlePluginMyprofileController &lt; MyProfileController @@ -26,7 +65,8 @@ class EmailArticlePluginMyprofileController &lt; MyProfileController
26 from: "#{article.author_name} <#{sender.contact_email}>", 65 from: "#{article.author_name} <#{sender.contact_email}>",
27 reply_to: article.author.user.email, 66 reply_to: article.author.user.email,
28 subject: "[Artigo] " + article.title, 67 subject: "[Artigo] " + article.title,
29 - body: set_absolute_path(article.body, article.environment) 68 + body: body
  69 +# body: set_absolute_path(article.body, article.environment)
30 ) 70 )
31 end 71 end
32 72
lib/email_article_plugin.rb
@@ -8,16 +8,12 @@ class EmailArticlePlugin &lt; Noosfero::Plugin @@ -8,16 +8,12 @@ class EmailArticlePlugin &lt; Noosfero::Plugin
8 _("A plugin that emails an article to the members of the community") 8 _("A plugin that emails an article to the members of the community")
9 end 9 end
10 10
11 - def page  
12 - @page  
13 - end  
14 -  
15 def article_toolbar_extra_buttons 11 def article_toolbar_extra_buttons
16 label = _("Send article to members") 12 label = _("Send article to members")
17 htmlclass = _("button with-text icon-menu-mail") 13 htmlclass = _("button with-text icon-menu-mail")
18 title = _("Email article to all community members") 14 title = _("Email article to all community members")
19 proc do 15 proc do
20 - if !profile.blank? and !user.blank? and user.is_admin?(profile) and page.kind_of?(TextArticle) 16 + if !profile.blank? and !user.blank? and user.is_admin?(profile) and @page.kind_of?(TextArticle)
21 link_to_remote( 17 link_to_remote(
22 label, 18 label,
23 { 19 {
test/functional/email_article_plugin_myprofile_controller_test.rb
@@ -46,9 +46,10 @@ class EmailArticlePluginMyprofileControllerTest &lt; ActionController::TestCase @@ -46,9 +46,10 @@ class EmailArticlePluginMyprofileControllerTest &lt; ActionController::TestCase
46 send_mail_button = @plugin.article_toolbar_extra_buttons 46 send_mail_button = @plugin.article_toolbar_extra_buttons
47 self.stubs(:profile).returns(@profile) 47 self.stubs(:profile).returns(@profile)
48 self.stubs(:user).returns(@user) 48 self.stubs(:user).returns(@user)
49 - self.stubs(:page).returns(@article) 49 +# self.stubs(:page).returns(@article)
50 @user.stubs(:is_admin?).returns(true) 50 @user.stubs(:is_admin?).returns(true)
51 self.stubs(:link_to_remote).returns("send mail button") 51 self.stubs(:link_to_remote).returns("send mail button")
  52 +# @plugin.class_eval{@page=2}
52 html = self.instance_eval(&send_mail_button) 53 html = self.instance_eval(&send_mail_button)
53 assert_equal html, "send mail button" 54 assert_equal html, "send mail button"
54 end 55 end