module MailSpy
module EmailHelper
# Support for link clicks.
def track_link(*args, &block)
@_track_count ||= 0
if block_given?
options = args.first || {}
html_options = args.second
track_link(capture(&block), options, html_options)
else
@_track_count += 1
name = args[0]
options = args[1] || {}
html_options = args[2]
html_options = convert_options_to_data_attributes(options, html_options)
url = url_for(options)
href = html_options['href']
tag_options = tag_options(html_options)
# Inject our tracking url, and pass in the redirect_url
hash = {
:controller => "mail_spy/tracking",
:action => :link,
:url => url,
:only_path => false,
:host => MailSpy.tracker_host,
:n => @_track_count,
:eid => @_email.id
}
# Add in the GA tokens if present
hash[:utm_source] = @_email.utm_source if @_email.utm_source.present?
hash[:utm_medium] = @_email.utm_medium if @_email.utm_medium.present?
hash[:utm_campaign] = @_email.utm_campaign if @_email.utm_campaign.present?
hash[:utm_term] = @_email.utm_term if @_email.utm_term.present?
hash[:utm_content] = @_email.utm_content if @_email.utm_content.present?
url = url_for(hash)
href_attr = "href=\"#{ERB::Util.html_escape(url)}\"" unless href
"#{ERB::Util.html_escape(name || url)}".html_safe
end
end
# Support for open tracking, client support, etc
def tracking_bug
url = url_for(
:controller => "mail_spy/tracking",
:action => :bug,
:eid => @_email.id,
:only_path => false,
:host => MailSpy.tracker_host
)
"".html_safe
end
end
end