From 0f4a4651a9fa0ccf8d09d92587b14eaa8aaa5533 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Wed, 1 Apr 2015 18:23:27 +0200 Subject: [PATCH] FIX: youtube preview video title link doesn't work --- .../{click_track.js => click-track.js.es6} | 27 +++++-------------- .../javascripts/discourse/views/topic.js.es6 | 3 ++- app/models/topic_link_click.rb | 2 +- spec/models/directory_item_spec.rb | 2 +- spec/models/topic_link_click_spec.rb | 4 +-- test/javascripts/lib/click-track-test.js.es6 | 6 +++-- 6 files changed, 16 insertions(+), 28 deletions(-) rename app/assets/javascripts/discourse/lib/{click_track.js => click-track.js.es6} (86%) diff --git a/app/assets/javascripts/discourse/lib/click_track.js b/app/assets/javascripts/discourse/lib/click-track.js.es6 similarity index 86% rename from app/assets/javascripts/discourse/lib/click_track.js rename to app/assets/javascripts/discourse/lib/click-track.js.es6 index 9672c860e89..5360bc4c37a 100644 --- a/app/assets/javascripts/discourse/lib/click_track.js +++ b/app/assets/javascripts/discourse/lib/click-track.js.es6 @@ -1,23 +1,10 @@ -/** - Used for tracking when the user clicks on a link +export default { + trackClick(e) { + // cancel click if triggered as part of selection. + if (Discourse.Utilities.selectedText() !== "") { return false; } - @class ClickTrack - @namespace Discourse - @module Discourse -**/ - -Discourse.ClickTrack = { - - /** - Track a click on a link - - @method trackClick - @param {jQuery.Event} e The click event that occurred - **/ - trackClick: function(e) { - if (Discourse.Utilities.selectedText()!=="") return false; //cancle click if triggered as part of selection. var $link = $(e.currentTarget); - if ($link.hasClass('lightbox')) return true; + if ($link.hasClass('lightbox')) { return true; } var href = $link.attr('href') || $link.data('href'), $article = $link.closest('article'), @@ -25,9 +12,7 @@ Discourse.ClickTrack = { topicId = $('#topic').data('topic-id'), userId = $link.data('user-id'); - if (!href || href.trim().length === 0){ - return; - } + if (!href || href.trim().length === 0) { return; } if (!userId) userId = $article.data('user-id'); diff --git a/app/assets/javascripts/discourse/views/topic.js.es6 b/app/assets/javascripts/discourse/views/topic.js.es6 index fca59cf4f99..c649d896ffd 100644 --- a/app/assets/javascripts/discourse/views/topic.js.es6 +++ b/app/assets/javascripts/discourse/views/topic.js.es6 @@ -1,5 +1,6 @@ import AddCategoryClass from 'discourse/mixins/add-category-class'; import AddArchetypeClass from 'discourse/mixins/add-archetype-class'; +import ClickTrack from 'discourse/lib/click-track'; import { listenForViewEvent } from 'discourse/lib/app-events'; import { categoryBadgeHTML } from 'discourse/helpers/category-link'; @@ -55,7 +56,7 @@ var TopicView = Discourse.View.extend(AddCategoryClass, AddArchetypeClass, Disco var $target = $(e.target); if ($target.hasClass('mention') || $target.parents('.expanded-embed').length) { return false; } - return Discourse.ClickTrack.trackClick(e); + return ClickTrack.trackClick(e); }); }.on('didInsertElement'), diff --git a/app/models/topic_link_click.rb b/app/models/topic_link_click.rb index 00826356708..1cbf444fce5 100644 --- a/app/models/topic_link_click.rb +++ b/app/models/topic_link_click.rb @@ -52,7 +52,7 @@ class TopicLinkClick < ActiveRecord::Base # 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.find_by(url: url) - return link.present? ? link.url : nil + return link.present? ? link.url : url end return url if args[:user_id] && link.user_id == args[:user_id] diff --git a/spec/models/directory_item_spec.rb b/spec/models/directory_item_spec.rb index f6008fddc0e..a21211d68bd 100644 --- a/spec/models/directory_item_spec.rb +++ b/spec/models/directory_item_spec.rb @@ -8,7 +8,7 @@ describe DirectoryItem do DirectoryItem.refresh! expect(DirectoryItem.where(period_type: DirectoryItem.period_types[:all]) .where(user_id: post.user.id) - .exists?).to be_true + .exists?).to be_truthy end end diff --git a/spec/models/topic_link_click_spec.rb b/spec/models/topic_link_click_spec.rb index 2fd11c063e8..c698e5f2f38 100644 --- a/spec/models/topic_link_click_spec.rb +++ b/spec/models/topic_link_click_spec.rb @@ -47,8 +47,8 @@ describe TopicLinkClick do context 'without a url' do let(:click) { TopicLinkClick.create_from(url: "url that doesn't exist", post_id: @post.id, ip: '127.0.0.1') } - it "returns nil" do - expect(click).to eq(nil) + it "returns the url" do + expect(click).to eq("url that doesn't exist") end end diff --git a/test/javascripts/lib/click-track-test.js.es6 b/test/javascripts/lib/click-track-test.js.es6 index dff00e93689..f79b87cdaa5 100644 --- a/test/javascripts/lib/click-track-test.js.es6 +++ b/test/javascripts/lib/click-track-test.js.es6 @@ -1,8 +1,10 @@ +import ClickTrack from "discourse/lib/click-track"; + var windowOpen, win, redirectTo; -module("Discourse.ClickTrack", { +module("ClickTrack", { setup: function() { // Prevent any of these tests from navigating away @@ -30,7 +32,7 @@ module("Discourse.ClickTrack", { } }); -var track = Discourse.ClickTrack.trackClick; +var track = ClickTrack.trackClick; // test var generateClickEventOn = function(selector) {