diff --git a/app/assets/javascripts/discourse/lib/click_track.js b/app/assets/javascripts/discourse/lib/click_track.js index 0628b080e06..50611cf5374 100644 --- a/app/assets/javascripts/discourse/lib/click_track.js +++ b/app/assets/javascripts/discourse/lib/click_track.js @@ -38,10 +38,9 @@ Discourse.ClickTrack = { userId = $link.data('user-id'); if (!userId) userId = $article.data('user-id'); - var ownLink = userId && (userId === Discourse.User.currentProp('id')); - // Build a Redirect URL - var trackingUrl = Discourse.getURL("/clicks/track?url=" + encodeURIComponent(href)); + var ownLink = userId && (userId === Discourse.User.currentProp('id')), + trackingUrl = Discourse.getURL("/clicks/track?url=" + encodeURIComponent(href)); if (postId && (!$link.data('ignore-post-id'))) { trackingUrl += "&post_id=" + encodeURI(postId); } diff --git a/app/models/topic_link_click.rb b/app/models/topic_link_click.rb index 68a03d8835e..5fa832a8420 100644 --- a/app/models/topic_link_click.rb +++ b/app/models/topic_link_click.rb @@ -22,7 +22,11 @@ class TopicLinkClick < ActiveRecord::Base # If no link is found, return the url for relative links unless link.present? return args[:url] if args[:url] =~ /^\// - return nil + + # If we have it somewhere else on the site, just allow the redirect. This is + # likely due to a onebox of another topic. + link = TopicLink.where(url: args[:url]).first + return link.present? ? link.url : nil end return args[:url] if (args[:user_id] && (link.user_id == args[:user_id]))