diff --git a/app/assets/javascripts/discourse/controllers/user-card.js.es6 b/app/assets/javascripts/discourse/controllers/user-card.js.es6 index 90cfd460139..1557cc195b5 100644 --- a/app/assets/javascripts/discourse/controllers/user-card.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user-card.js.es6 @@ -13,23 +13,20 @@ export default ObjectController.extend({ postStream: Em.computed.alias('controllers.topic.postStream'), enoughPostsForFiltering: Em.computed.gte('participant.post_count', 2), viewingTopic: Em.computed.match('controllers.application.currentPath', /^topic\./), + viewingAdmin: Em.computed.match('controllers.application.currentPath', /^admin\./), showFilter: Em.computed.and('viewingTopic', 'postStream.hasNoFilters', 'enoughPostsForFiltering'), - - // showFilter: Em.computed.and('postStream.hasNoFilters', 'enoughPostsForFiltering'), showName: Discourse.computed.propertyNotEqual('user.name', 'user.username'), - hasUserFilters: Em.computed.gt('postStream.userFilters.length', 0), - isSuspended: Em.computed.notEmpty('user.suspend_reason'), - showBadges: Discourse.computed.setting('enable_badges'), + showMoreBadges: Em.computed.gt('moreBadgesCount', 0), + canDelete: Em.computed.not("user.deleteForbidden"), + showDelete: Em.computed.and("viewingAdmin", "showName", "canDelete"), 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), - hasCardBadgeImage: function() { var img = this.get('user.card_badge.image'); return img && img.indexOf('fa-') !== 0; @@ -77,7 +74,7 @@ export default ObjectController.extend({ self.set('cardTarget', target); Discourse.User.findByUsername(username).then(function (user) { - self.setProperties({ user: user, avatar: user, visible: true}); + self.setProperties({ user: Discourse.AdminUser.create(user), avatar: user, visible: true}); self.appEvents.trigger('usercard:shown'); }).finally(function(){ self.set('userLoading', null); @@ -101,6 +98,10 @@ export default ObjectController.extend({ postStream.cancelFilter(); postStream.refresh(); this.close(); + }, + + deleteUser: function(user) { + user.destroy({ deletePosts: true }); } } diff --git a/app/assets/javascripts/discourse/templates/user-card.hbs b/app/assets/javascripts/discourse/templates/user-card.hbs index b5dc6f39c5b..c4326652fa8 100644 --- a/app/assets/javascripts/discourse/templates/user-card.hbs +++ b/app/assets/javascripts/discourse/templates/user-card.hbs @@ -27,11 +27,15 @@ {{/if}} {{#if showFilter}} -
  • {{fa-icon "filter"}}{{i18n topic.filter_to username="username" post_count="participant.post_count"}}
  • +
  • {{fa-icon "filter"}}{{i18n topic.filter_to username="username" post_count="participant.post_count"}}
  • {{/if}} {{#if hasUserFilters}} -
  • {{fa-icon "times"}}{{i18n topic.filters.cancel}}
  • +
  • {{fa-icon "times"}}{{i18n topic.filters.cancel}}
  • + {{/if}} + + {{#if showDelete}} +
  • {{fa-icon "exclamation-triangle"}}{{i18n admin.user.delete}}
  • {{/if}} @@ -52,10 +56,10 @@ {{/if}} {{#if user}} -
    -

    {{i18n last_post}} {{format-date path="user.last_posted_at" leaveAgo="true"}}

    -

    {{i18n joined}} {{format-date path="user.created_at" leaveAgo="true"}}

    -
    +
    +

    {{i18n last_post}} {{format-date path="user.last_posted_at" leaveAgo="true"}}

    +

    {{i18n joined}} {{format-date path="user.created_at" leaveAgo="true"}}

    +
    {{/if}} {{#if showBadges}} diff --git a/app/serializers/user_serializer.rb b/app/serializers/user_serializer.rb index 1313db0b76b..0e1badaba93 100644 --- a/app/serializers/user_serializer.rb +++ b/app/serializers/user_serializer.rb @@ -66,7 +66,8 @@ class UserSerializer < BasicUserSerializer has_many :featured_user_badges, embed: :ids, serializer: UserBadgeSerializer, root: :user_badges has_one :card_badge, embed: :object, serializer: BadgeSerializer - staff_attributes :number_of_deleted_posts, + staff_attributes :post_count, + :number_of_deleted_posts, :number_of_flagged_posts, :number_of_flags_given, :number_of_suspensions, @@ -207,6 +208,10 @@ class UserSerializer < BasicUserSerializer ### STAFF ATTRIBUTES ### + def post_count + object.user_stat.try(:post_count) + end + def number_of_deleted_posts Post.with_deleted .where(user_id: object.id)