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