post process attachments

This commit is contained in:
Régis Hanol 2013-07-10 22:55:37 +02:00
parent 1f8eaa6ca3
commit da614597fe
1 changed files with 33 additions and 1 deletions

View File

@ -16,10 +16,26 @@ class CookedPostProcessor
end
def post_process
post_process_attachments
post_process_images
post_process_oneboxes
end
def post_process_attachments
attachments.each do |attachment|
href = attachment['href']
attachment['href'] = relative_to_absolute(href)
if upload = Upload.get_from_url(href)
# update reverse index
associate_to_post(upload)
# append the size
append_human_size!(attachment, upload)
end
# mark as dirty
@dirty = true
end
end
def post_process_images
images = extract_images
return if images.blank?
@ -33,7 +49,7 @@ class CookedPostProcessor
# make sure the img has proper width and height attributes
update_dimensions!(img)
# retrieve the associated upload, if any
if upload = Upload.get_from_url(img['src'])
if upload = Upload.get_from_url(src)
# update reverse index
associate_to_post(upload)
end
@ -209,6 +225,22 @@ class CookedPostProcessor
rescue URI::InvalidURIError
end
def attachments
if SiteSetting.enable_s3_uploads?
@doc.css("a[href^=\"#{S3.base_url}\"]")
else
# local uploads are identified using a relative uri
@doc.css("a[href^=\"#{LocalStore.directory}\"]")
end
end
def append_human_size!(attachment, upload)
size = Nokogiri::XML::Node.new("span", @doc)
size["class"] = "size"
size.content = "(#{number_to_human_size(upload.filesize)})"
attachment.add_next_sibling(size)
end
def dirty?
@dirty
end