mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-16 07:10:12 +01:00
Extract rendering to helper method. Shift filename sanitization to controller.
This commit is contained in:
parent
7801364662
commit
ccf13418f4
12 changed files with 105 additions and 78 deletions
|
|
@ -1,58 +0,0 @@
|
|||
require 'redcloth'
|
||||
|
||||
module Tracks
|
||||
|
||||
class Utils
|
||||
AUTO_LINK_MESSAGE_RE = %r{message://<[^>]+>} unless const_defined?(:AUTO_LINK_MESSAGE_RE)
|
||||
|
||||
# Converts message:// links to href. This URL scheme is used on Mac OS X
|
||||
# to link to a mail message in Mail.app.
|
||||
def self.auto_link_message(text)
|
||||
text.gsub(AUTO_LINK_MESSAGE_RE) do
|
||||
href = $&
|
||||
left = $`
|
||||
right = $'
|
||||
# detect already linked URLs and URLs in the middle of a tag
|
||||
if left =~ /<[^>]+$/ && right =~ /^[^>]*>/
|
||||
# do not change string; URL is alreay linked
|
||||
href
|
||||
else
|
||||
content = helpers.content_tag(:a, h(href), :href => h(href))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.render_text(text)
|
||||
rendered = auto_link_message(text)
|
||||
rendered = textile(rendered)
|
||||
rendered = helpers.auto_link(rendered, :link => :urls, :html => {:target => '_blank'})
|
||||
|
||||
relaxed_config = Sanitize::Config::RELAXED
|
||||
config = relaxed_config
|
||||
|
||||
# add onenote and message protocols, allow a target
|
||||
a_href_config = relaxed_config[:protocols]['a']['href'] + %w(onenote message)
|
||||
a_attributes = relaxed_config[:attributes]['a'] + ['target']
|
||||
config = Sanitize::Config.merge(config, :protocols => {'a' => {'href' => a_href_config}}, :attributes => {'a' => a_attributes})
|
||||
|
||||
rendered = Sanitize.fragment(rendered, config)
|
||||
return rendered.html_safe
|
||||
end
|
||||
|
||||
def self.textile(text)
|
||||
RedCloth.new(text).to_html
|
||||
end
|
||||
|
||||
def self.sanitize_filename(filename)
|
||||
filename.gsub(/[^0-9A-z.\-]/, '_')
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def self.helpers
|
||||
ActionController::Base.helpers
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue