From 72a28aeb7c56dee8d2497f7a64f6659c538912ed Mon Sep 17 00:00:00 2001 From: Sam Date: Thu, 2 Oct 2014 15:55:33 +1000 Subject: [PATCH] FEATURE: always show highest trust level badge in card FEATURE: fa-user icon for trust level badges --- app/models/badge.rb | 4 ++++ app/models/user.rb | 3 +++ db/fixtures/006_badges.rb | 1 + 3 files changed, 8 insertions(+) diff --git a/app/models/badge.rb b/app/models/badge.rb index 739ff69c386..882c07a6c1e 100644 --- a/app/models/badge.rb +++ b/app/models/badge.rb @@ -252,6 +252,10 @@ SQL !self.multiple_grant? end + def default_icon=(val) + self.icon ||= val + end + def default_name=(val) self.name ||= val end diff --git a/app/models/user.rb b/app/models/user.rb index 8ddbbd3344e..4db9f08b107 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -511,6 +511,9 @@ class User < ActiveRecord::Base def featured_user_badges user_badges .joins(:badge) + .order("CASE WHEN badges.id = (SELECT MAX(ub2.badge_id) FROM user_badges ub2 + WHERE ub2.badge_id IN (#{Badge.trust_level_badge_ids.join(",")}) AND + ub2.user_id = #{self.id}) THEN 1 ELSE 0 END DESC") .order('badges.badge_type_id ASC, badges.grant_count ASC') .includes(:user, :granted_by, badge: :badge_type) .where("user_badges.id in (select min(u2.id) diff --git a/db/fixtures/006_badges.rb b/db/fixtures/006_badges.rb index 3832d638dde..08c61684d57 100644 --- a/db/fixtures/006_badges.rb +++ b/db/fixtures/006_badges.rb @@ -56,6 +56,7 @@ trust_level_badges.each do |spec| # allow title for tl3 and above b.default_allow_title = spec[:id] > 2 + b.default_icon = "fa-user" b.system = true end end