From e8312038974f30df82da080f8c7acfc4d2a1c4e6 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 11 May 2016 12:02:10 -0400 Subject: [PATCH] FIX: Widgets should support links to foreign hosts --- app/assets/javascripts/discourse/lib/url.js.es6 | 9 +++++++++ .../javascripts/discourse/widgets/home-logo.js.es6 | 8 +------- app/assets/javascripts/discourse/widgets/link.js.es6 | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/discourse/lib/url.js.es6 b/app/assets/javascripts/discourse/lib/url.js.es6 index 93e1ca7315..8fbd12d7d9 100644 --- a/app/assets/javascripts/discourse/lib/url.js.es6 +++ b/app/assets/javascripts/discourse/lib/url.js.es6 @@ -90,6 +90,15 @@ const DiscourseURL = Ember.Object.extend({ }); }, + routeToTag(a) { + if (a && a.host !== document.location.host) { + document.location = a.href; + return false; + } + + return this.routeTo(a.href); + }, + /** Our custom routeTo method is used to intelligently overwrite default routing behavior. diff --git a/app/assets/javascripts/discourse/widgets/home-logo.js.es6 b/app/assets/javascripts/discourse/widgets/home-logo.js.es6 index dc52db7cba..4684901aee 100644 --- a/app/assets/javascripts/discourse/widgets/home-logo.js.es6 +++ b/app/assets/javascripts/discourse/widgets/home-logo.js.es6 @@ -48,15 +48,9 @@ export default createWidget('home-logo', { click(e) { if (wantsNewWindow(e)) { return false; } - e.preventDefault(); - const a = $(e.target).closest('a')[0]; - if (a && a.host !== document.location.host) { - document.location = a.href; - } - DiscourseURL.routeTo(this.href()); + DiscourseURL.routeToTag($(e.target).closest('a')[0]); return false; } - }); diff --git a/app/assets/javascripts/discourse/widgets/link.js.es6 b/app/assets/javascripts/discourse/widgets/link.js.es6 index 5f1782fd05..1ccc535368 100644 --- a/app/assets/javascripts/discourse/widgets/link.js.es6 +++ b/app/assets/javascripts/discourse/widgets/link.js.es6 @@ -81,6 +81,6 @@ export default createWidget('link', { this.sendWidgetEvent('linkClicked'); } - return DiscourseURL.routeTo(this.href(this.attrs)); + return DiscourseURL.routeToTag($(e.target).closest('a')[0]); } });