Merge pull request #2212 from vikhyat/badge-system

Show badges in the poster expansion card
This commit is contained in:
Sam
2014-04-14 10:54:43 +10:00
9 changed files with 169 additions and 11 deletions

View File

@@ -57,7 +57,10 @@ Discourse.AdminUserBadgesController = Ember.ArrayController.extend({
self.pushObject(userBadge);
Ember.run.next(function() {
// Update the selected badge ID after the combobox has re-rendered.
self.set('selectedBadgeId', self.get('grantableBadges')[0].get('id'));
var newSelectedBadge = self.get('grantableBadges')[0];
if (newSelectedBadge) {
self.set('selectedBadgeId', newSelectedBadge.get('id'));
}
});
}, function() {
// Failure

View File

@@ -20,6 +20,16 @@ Discourse.PosterExpansionController = Discourse.ObjectController.extend({
hasUserFilters: Em.computed.gt('postStream.userFilters.length', 0),
showBadges: function() {
return Discourse.SiteSettings.enable_badges;
}.property(),
moreBadgesCount: function() {
return this.get('user.badge_count') - this.get('user.featured_user_badges.length');
}.property('user.badge_count', 'user.featured_user_badges.@each'),
showMoreBadges: Em.computed.gt('moreBadgesCount', 0),
show: function(post) {
// Don't show on mobile

View File

@@ -312,10 +312,21 @@ Discourse.User = Discourse.Model.extend({
return Discourse.Group.create(g);
});
}
if (json.user.invited_by) {
json.user.invited_by = Discourse.User.create(json.user.invited_by);
}
if (!Em.isEmpty(json.user.featured_user_badge_ids)) {
var userBadgesMap = {};
Discourse.UserBadge.createFromJson(json).forEach(function(userBadge) {
userBadgesMap[ userBadge.get('id') ] = userBadge;
});
json.user.featured_user_badges = json.user.featured_user_badge_ids.map(function(id) {
return userBadgesMap[id];
});
}
user.setProperties(json.user);
return user;
});

View File

@@ -1,16 +1,31 @@
{{#if model}}
{{#link-to 'user' user}}{{boundAvatar model imageSize="huge"}}{{/link-to}}
<h1 {{bind-attr class="staff new_user"}}><a {{bind-attr href="usernameUrl"}}>{{username}}</a></h1>
{{#if showName}}
<h2><a {{bind-attr href="usernameUrl"}}>{{name}}</a></h2>
{{/if}}
<div class="names">
<h1 {{bind-attr class="staff new_user"}}><a {{bind-attr href="usernameUrl"}}>{{username}}</a></h1>
{{#if showName}}
<h2><a {{bind-attr href="usernameUrl"}}>{{name}}</a></h2>
{{/if}}
</div>
{{#if user}}
<h3>{{i18n last_post}} {{unboundDate path="user.last_posted_at" leaveAgo="true"}}</h3>
<h3>{{i18n joined}} {{unboundDate path="user.created_at" leaveAgo="true"}}</h3>
<div class="metadata">
<h3>{{i18n last_post}} {{unboundDate path="user.last_posted_at" leaveAgo="true"}}</h3>
<h3>{{i18n joined}} {{unboundDate path="user.created_at" leaveAgo="true"}}</h3>
{{groups-list groups=user.custom_groups}}
</div>
{{groups-list groups=user.custom_groups}}
{{#if showBadges}}
<div class="badge-section">
<h3>{{i18n badges.badge_count count=user.badge_count}}</h3>
{{#each user.featured_user_badges}}
<span class="badge">{{badge.name}}</span>
{{/each}}
{{#if showMoreBadges}}
<span class="btn more-badges">{{i18n badges.more_badges count=moreBadgesCount}}</span>
{{/if}}
</div>
{{/if}}
<div class='bottom'>
{{#if user.bio_cooked}}<div class='bio'>{{{user.bio_cooked}}}</div>{{/if}}

View File

@@ -10,7 +10,7 @@ var clickOutsideEventName = "mousedown.outside-poster-expansion";
Discourse.PosterExpansionView = Discourse.View.extend({
elementId: 'poster-expansion',
classNameBindings: ['controller.visible::hidden'],
classNameBindings: ['controller.visible::hidden', 'controller.showBadges'],
// Position the expansion when the post changes
_visibleChanged: function() {