mirror of
https://github.com/discourse/discourse.git
synced 2024-11-27 03:10:46 -06:00
FIX: Don't include image meta data when embedded in an email
This commit is contained in:
parent
b3ed8b6a32
commit
87682f7539
@ -64,4 +64,8 @@ module UserNotificationsHelper
|
|||||||
raw Sanitize.clean(para.to_s, UserNotificationsHelper.sanitize_options)
|
raw Sanitize.clean(para.to_s, UserNotificationsHelper.sanitize_options)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def cooked_post_for_email(post)
|
||||||
|
PrettyText.format_for_email(post.cooked).html_safe
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class='body'><%= PrettyText.make_all_links_absolute(post.cooked).html_safe %></td>
|
<td class='body'><%= cooked_post_for_email(post) %></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@ -237,9 +237,9 @@ module PrettyText
|
|||||||
fragment.to_html
|
fragment.to_html
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.make_all_links_absolute(html)
|
# Given a Nokogiri doc, convert all links to absolute
|
||||||
|
def self.make_all_links_absolute(doc)
|
||||||
site_uri = nil
|
site_uri = nil
|
||||||
doc = Nokogiri::HTML.fragment(html)
|
|
||||||
doc.css("a").each do |link|
|
doc.css("a").each do |link|
|
||||||
href = link["href"].to_s
|
href = link["href"].to_s
|
||||||
begin
|
begin
|
||||||
@ -250,6 +250,16 @@ module PrettyText
|
|||||||
# leave it
|
# leave it
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.strip_image_wrapping(doc)
|
||||||
|
doc.css(".lightbox-wrapper .meta").remove
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.format_for_email(html)
|
||||||
|
doc = Nokogiri::HTML.fragment(html)
|
||||||
|
make_all_links_absolute(doc)
|
||||||
|
strip_image_wrapping(doc)
|
||||||
doc.to_html
|
doc.to_html
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -185,29 +185,54 @@ describe PrettyText do
|
|||||||
describe "make_all_links_absolute" do
|
describe "make_all_links_absolute" do
|
||||||
let(:base_url) { "http://baseurl.net" }
|
let(:base_url) { "http://baseurl.net" }
|
||||||
|
|
||||||
|
def make_abs_string(html)
|
||||||
|
doc = Nokogiri::HTML.fragment(html)
|
||||||
|
described_class.make_all_links_absolute(doc)
|
||||||
|
doc.to_html
|
||||||
|
end
|
||||||
|
|
||||||
before do
|
before do
|
||||||
Discourse.stubs(:base_url).returns(base_url)
|
Discourse.stubs(:base_url).returns(base_url)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "adds base url to relative links" do
|
it "adds base url to relative links" do
|
||||||
html = "<p><a class=\"mention\" href=\"/users/wiseguy\">@wiseguy</a>, <a class=\"mention\" href=\"/users/trollol\">@trollol</a> what do you guys think? </p>"
|
html = "<p><a class=\"mention\" href=\"/users/wiseguy\">@wiseguy</a>, <a class=\"mention\" href=\"/users/trollol\">@trollol</a> what do you guys think? </p>"
|
||||||
output = described_class.make_all_links_absolute(html)
|
output = make_abs_string(html)
|
||||||
output.should == "<p><a class=\"mention\" href=\"#{base_url}/users/wiseguy\">@wiseguy</a>, <a class=\"mention\" href=\"#{base_url}/users/trollol\">@trollol</a> what do you guys think? </p>"
|
output.should == "<p><a class=\"mention\" href=\"#{base_url}/users/wiseguy\">@wiseguy</a>, <a class=\"mention\" href=\"#{base_url}/users/trollol\">@trollol</a> what do you guys think? </p>"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "doesn't change external absolute links" do
|
it "doesn't change external absolute links" do
|
||||||
html = "<p>Check out <a href=\"http://mywebsite.com/users/boss\">this guy</a>.</p>"
|
html = "<p>Check out <a href=\"http://mywebsite.com/users/boss\">this guy</a>.</p>"
|
||||||
described_class.make_all_links_absolute(html).should == html
|
make_abs_string(html).should == html
|
||||||
end
|
end
|
||||||
|
|
||||||
it "doesn't change internal absolute links" do
|
it "doesn't change internal absolute links" do
|
||||||
html = "<p>Check out <a href=\"#{base_url}/users/boss\">this guy</a>.</p>"
|
html = "<p>Check out <a href=\"#{base_url}/users/boss\">this guy</a>.</p>"
|
||||||
described_class.make_all_links_absolute(html).should == html
|
make_abs_string(html).should == html
|
||||||
end
|
end
|
||||||
|
|
||||||
it "can tolerate invalid URLs" do
|
it "can tolerate invalid URLs" do
|
||||||
html = "<p>Check out <a href=\"not a real url\">this guy</a>.</p>"
|
html = "<p>Check out <a href=\"not a real url\">this guy</a>.</p>"
|
||||||
expect { described_class.make_all_links_absolute(html) }.to_not raise_error
|
expect { make_abs_string(html) }.to_not raise_error
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "strip_image_wrapping" do
|
||||||
|
def strip_image_wrapping(html)
|
||||||
|
doc = Nokogiri::HTML.fragment(html)
|
||||||
|
described_class.strip_image_wrapping(doc)
|
||||||
|
doc.to_html
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't change HTML when there's no wrapped image" do
|
||||||
|
html = "<img src=\"wat.png\">"
|
||||||
|
strip_image_wrapping(html).should == html
|
||||||
|
end
|
||||||
|
|
||||||
|
let(:wrapped_image) { "<div class=\"lightbox-wrapper\"><a href=\"//localhost:3000/uploads/default/4399/33691397e78b4d75.png\" class=\"lightbox\" title=\"Screen Shot 2014-04-14 at 9.47.10 PM.png\"><img src=\"//localhost:3000/uploads/default/_optimized/bd9/b20/bbbcd6a0c0_655x500.png\" width=\"655\" height=\"500\"><div class=\"meta\">\n<span class=\"filename\">Screen Shot 2014-04-14 at 9.47.10 PM.png</span><span class=\"informations\">966x737 1.47 MB</span><span class=\"expand\"></span>\n</div></a></div>" }
|
||||||
|
|
||||||
|
it "strips the metadata" do
|
||||||
|
strip_image_wrapping(wrapped_image).should == "<div class=\"lightbox-wrapper\"><a href=\"//localhost:3000/uploads/default/4399/33691397e78b4d75.png\" class=\"lightbox\" title=\"Screen Shot 2014-04-14 at 9.47.10 PM.png\"><img src=\"//localhost:3000/uploads/default/_optimized/bd9/b20/bbbcd6a0c0_655x500.png\" width=\"655\" height=\"500\"></a></div>"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user