From 6bb97dcabba0c80c33f89ae40f133b80f7ede55e Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 29 Mar 2016 16:21:39 +1100 Subject: [PATCH] FIX: external hyperlinks broken in badge cards also, we were allowing nesting of A tags which is not really allowed --- .../discourse/components/badge-card.js.es6 | 21 ++++++++++++++++++- .../discourse/templates/badges/index.hbs | 4 +--- .../discourse/templates/user/badges.hbs | 4 +--- .../stylesheets/common/base/user-badges.scss | 3 +++ 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/discourse/components/badge-card.js.es6 b/app/assets/javascripts/discourse/components/badge-card.js.es6 index 89a3209359d..7366d05ef80 100644 --- a/app/assets/javascripts/discourse/components/badge-card.js.es6 +++ b/app/assets/javascripts/discourse/components/badge-card.js.es6 @@ -1,8 +1,27 @@ import computed from 'ember-addons/ember-computed-decorators'; +import DiscourseURL from 'discourse/lib/url'; export default Ember.Component.extend({ size: 'medium', - classNameBindings: [':badge-card', 'size'], + classNameBindings: [':badge-card', 'size', 'navigateOnClick:hyperlink'], + + click(e){ + if (e.target && e.target.nodeName === "A") { + return true; + } + + if (!this.get('navigateOnClick')) { + return false; + } + + var url = this.get('badge.url'); + const username = this.get('username'); + if (username) { + url = url + "?username=" + encodeURIComponent(username); + } + DiscourseURL.routeTo(url); + return true; + }, @computed('count', 'badge.grant_count') displayCount(count, grantCount) { diff --git a/app/assets/javascripts/discourse/templates/badges/index.hbs b/app/assets/javascripts/discourse/templates/badges/index.hbs index 0ad5dc88dd8..71964b0e6df 100644 --- a/app/assets/javascripts/discourse/templates/badges/index.hbs +++ b/app/assets/javascripts/discourse/templates/badges/index.hbs @@ -9,9 +9,7 @@ {{#each bg.badges as |b|}} - {{#link-to 'badges.show' b.id b.slug (query-params username=null)}} - {{badge-card badge=b}} - {{/link-to}} + {{badge-card badge=b navigateOnClick="true"}} {{/each}} {{/each}} diff --git a/app/assets/javascripts/discourse/templates/user/badges.hbs b/app/assets/javascripts/discourse/templates/user/badges.hbs index 1c7c660be00..042b08fbfa0 100644 --- a/app/assets/javascripts/discourse/templates/user/badges.hbs +++ b/app/assets/javascripts/discourse/templates/user/badges.hbs @@ -1,7 +1,5 @@
{{#each controller as |ub|}} - {{#link-to 'badges.show' ub.badge.id ub.badge.slug (query-params username=user.username_lower)}} - {{badge-card badge=ub.badge count=ub.count}} - {{/link-to}} + {{badge-card badge=ub.badge count=ub.count navigateOnClick="true" username=user.username_lower}} {{/each}}
diff --git a/app/assets/stylesheets/common/base/user-badges.scss b/app/assets/stylesheets/common/base/user-badges.scss index 1986cc5a454..3add206d1a8 100644 --- a/app/assets/stylesheets/common/base/user-badges.scss +++ b/app/assets/stylesheets/common/base/user-badges.scss @@ -246,3 +246,6 @@ background-color: $danger; } +.hyperlink { + cursor: pointer; +}