FIX: don't track clicks on links in quotes

This commit is contained in:
Régis Hanol 2016-05-03 18:47:01 +02:00
parent c069488560
commit ad15049ef0
4 changed files with 26 additions and 5 deletions

View File

@ -12,7 +12,15 @@ export default {
if (Discourse.Utilities.selectedText() !== "") { return false; }
var $link = $(e.currentTarget);
if ($link.hasClass('lightbox') || $link.hasClass('mention-group') || $link.hasClass('no-track-link')) { return true; }
// don't track lightboxes, group mentions or links with disabled tracking
if ($link.hasClass('lightbox') || $link.hasClass('mention-group') ||
$link.hasClass('no-track-link') || $link.hasClass('hashtag')) {
return true;
}
// don't track links in quotes or in elided part
if ($link.parents('aside.quote,.elided').length) { return true; }
var href = $link.attr('href') || $link.data('href'),
$article = $link.closest('article,.excerpt,#revisions'),
@ -20,7 +28,8 @@ export default {
topicId = $('#topic').data('topic-id') || $article.data('topic-id'),
userId = $link.data('user-id');
if (!href || href.trim().length === 0 || href.indexOf("mailto:") === 0) { return; }
if (!href || href.trim().length === 0) { return false; }
if (href.indexOf("mailto:") === 0) { return true; }
if (!userId) userId = $article.data('user-id');

View File

@ -85,7 +85,7 @@ test("does not track clicks on quote buttons", function() {
});
test("does not track clicks on category badges", () => {
ok(!track(generateClickEventOn('.hashtag')));
ok(track(generateClickEventOn('.hashtag')));
});
test("removes the href and put it as a data attribute", function() {

View File

@ -79,7 +79,7 @@ test("does not track clicks on quote buttons", function() {
});
test("does not track clicks on category badges", () => {
ok(!track(generateClickEventOn('.hashtag')));
ok(track(generateClickEventOn('.hashtag')));
});
test("removes the href and put it as a data attribute", function() {

View File

@ -31,6 +31,10 @@ module("lib:click-track", {
<a id="same-site" href="http://discuss.domain.com">forum</a>
<a class="attachment" href="http://discuss.domain.com/uploads/default/1234/1532357280.txt">log.txt</a>
<a class="hashtag" href="http://discuss.domain.com">#hashtag</a>
<a class="mailto" href="mailto:foo@bar.com">email-me</a>
<aside class="quote">
<a class="inside-quote" href="http://discuss.domain.com">foobar</a>
</aside>
</article>
</div>`);
}
@ -66,12 +70,20 @@ test("does not track clicks on back buttons", function() {
ok(track(generateClickEventOn('.back')));
});
test("does not track clicks in quotes", function() {
ok(track(generateClickEventOn('.inside-quote')));
});
test("does not track clicks on quote buttons", function() {
ok(track(generateClickEventOn('.quote-other-topic')));
});
test("does not track clicks on category badges", () => {
ok(!track(generateClickEventOn('.hashtag')));
ok(track(generateClickEventOn('.hashtag')));
});
test("does not track clicks on mailto", function() {
ok(track(generateClickEventOn('.mailto')));
});
test("removes the href and put it as a data attribute", function() {