From 83b79a4e1e01b02fa48ef377bfb509473115f6f3 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 25 Mar 2016 16:10:21 -0400 Subject: [PATCH] UX: Show a user's badges as cards --- .../discourse/components/badge-card.js.es6 | 8 ++++ .../discourse/templates/badges/index.hbs | 4 +- .../templates/components/badge-card.hbs | 32 +++++++-------- .../discourse/templates/user/badges.hbs | 6 ++- .../stylesheets/common/base/user-badges.scss | 39 +------------------ 5 files changed, 31 insertions(+), 58 deletions(-) diff --git a/app/assets/javascripts/discourse/components/badge-card.js.es6 b/app/assets/javascripts/discourse/components/badge-card.js.es6 index bb694471cb9..396577968b3 100644 --- a/app/assets/javascripts/discourse/components/badge-card.js.es6 +++ b/app/assets/javascripts/discourse/components/badge-card.js.es6 @@ -4,6 +4,14 @@ export default Ember.Component.extend({ size: 'medium', classNameBindings: [':badge-card', 'size'], + @computed('count', 'badge.grant_count') + displayCount(count, grantCount) { + const c = parseInt(count || grantCount || 0); + if (count > 1) { + return count; + } + }, + @computed('size') summary(size) { if (size === 'large') { diff --git a/app/assets/javascripts/discourse/templates/badges/index.hbs b/app/assets/javascripts/discourse/templates/badges/index.hbs index 093c258ee6d..3eb249eda99 100644 --- a/app/assets/javascripts/discourse/templates/badges/index.hbs +++ b/app/assets/javascripts/discourse/templates/badges/index.hbs @@ -9,7 +9,9 @@ {{#each bg.badges as |b|}} - {{badge-card badge=b}} + {{#link-to 'badges.show' badge.id badge.slug}} + {{badge-card badge=b}} + {{/link-to}} {{/each}} {{/each}} diff --git a/app/assets/javascripts/discourse/templates/components/badge-card.hbs b/app/assets/javascripts/discourse/templates/components/badge-card.hbs index 6ba8ac189a9..1ce23006e2f 100644 --- a/app/assets/javascripts/discourse/templates/components/badge-card.hbs +++ b/app/assets/javascripts/discourse/templates/components/badge-card.hbs @@ -1,19 +1,17 @@ -{{#link-to 'badges.show' badge}} - {{#if badge.grant_count}} - {{badge.grant_count}} - {{/if}} - {{#if badge.has_badge}} - {{fa-icon "check"}} - {{/if}} -
-
- {{icon-or-image badge.icon}} -
-
-
-

{{badge.displayName}}

-
{{{summary}}}
-
+{{#if displayCount}} + {{displayCount}} +{{/if}} +{{#if badge.has_badge}} + {{fa-icon "check"}} +{{/if}} +
+
+ {{icon-or-image badge.icon}} +
+
+
+

{{badge.displayName}}

+
{{{summary}}}
-{{/link-to}} +
diff --git a/app/assets/javascripts/discourse/templates/user/badges.hbs b/app/assets/javascripts/discourse/templates/user/badges.hbs index 7cfc318ba1b..1c7c660be00 100644 --- a/app/assets/javascripts/discourse/templates/user/badges.hbs +++ b/app/assets/javascripts/discourse/templates/user/badges.hbs @@ -1,5 +1,7 @@
- {{#each ub in controller}} - {{user-badge badge=ub.badge count=ub.count user=user}} + {{#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}} {{/each}}
diff --git a/app/assets/stylesheets/common/base/user-badges.scss b/app/assets/stylesheets/common/base/user-badges.scss index c18c6ac3636..c781f323583 100644 --- a/app/assets/stylesheets/common/base/user-badges.scss +++ b/app/assets/stylesheets/common/base/user-badges.scss @@ -32,39 +32,6 @@ } } - -/* User badge listing. */ -.user-badges-list { - text-align: center; - - .user-badge { - max-width: 80px; - text-align: center; - vertical-align: top; - margin: 10px; - border: none; - - .fa { - display: block; - font-size: 3.571em; - margin-bottom: 5px; - } - - img { - display: block; - margin: auto auto 4px; - width: 55px; - height: 55px; - } - - .count { - display: block; - font-size: 0.8em; - color: dark-light-choose(scale-color($primary, $lightness: 50%), scale-color($secondary, $lightness: 50%)); - } - } -} - @media all and (max-width: 750px) { .show-badge .user-badge-with-posts .badge-user a.post-link { width: auto; @@ -219,17 +186,13 @@ } .badge-card.medium { - width: 360px; + width: 350px; } .badge-card.large { width: 750px; - a { - cursor: default; - } } - .badge-groups { margin: 20px 0; color: dark-light-choose(scale-color($primary, $lightness: 40%), scale-color($secondary, $lightness: 60%));