FEATURE: user card shows staff if a user is staged and lets them check the email address

This commit is contained in:
Neil Lalonde 2017-11-23 16:38:11 -05:00
parent e0dc4ea4fc
commit 3f58b18dab
5 changed files with 36 additions and 3 deletions

View File

@ -7,12 +7,13 @@ import DiscourseURL from 'discourse/lib/url';
import User from 'discourse/models/user';
import { userPath } from 'discourse/lib/url';
import { durationTiny } from 'discourse/lib/formatter';
import CanCheckEmails from 'discourse/mixins/can-check-emails';
const clickOutsideEventName = "mousedown.outside-user-card";
const clickDataExpand = "click.discourse-user-card";
const clickMention = "click.discourse-user-mention";
export default Ember.Component.extend(CleansUp, {
export default Ember.Component.extend(CleansUp, CanCheckEmails, {
elementId: 'user-card',
classNameBindings: ['visible:show', 'showBadges', 'hasCardBadgeImage', 'user.card_background::no-bg'],
allowBackgrounds: setting('allow_profile_backgrounds'),
@ -30,6 +31,7 @@ export default Ember.Component.extend(CleansUp, {
showDelete: Ember.computed.and("viewingAdmin", "showName", "user.canBeDeleted"),
linkWebsite: Ember.computed.not('user.isBasic'),
hasLocationOrWebsite: Ember.computed.or('user.location', 'user.website_name'),
showCheckEmail: Ember.computed.and('user.staged', 'canCheckEmails'),
visible: false,
user: null,
@ -291,6 +293,10 @@ export default Ember.Component.extend(CleansUp, {
showUser() {
this.sendAction('showUser', this.get('user'));
this._close();
},
checkEmail(user) {
user.checkEmail();
}
}
});

View File

@ -31,6 +31,10 @@
<h2>{{user.title}}</h2>
{{/if}}
{{#if showCheckEmail}}
<h2 class="staged">{{i18n 'user.staged'}}</h2>
{{/if}}
{{plugin-outlet name="user-card-post-names" args=(hash user=user) tagName='div'}}
</span>
</div>
@ -125,6 +129,16 @@
<span>({{i18n 'time_read_recently' time_read=recentTimeRead}})</span>
{{/if}}
</h3>
{{#if showCheckEmail}}
<h3 class="email">
{{i18n 'user.email.title'}}:
{{#if user.email}}
{{user.email}}
{{else}}
{{d-button action="checkEmail" actionParam=user icon="envelope-o" label="admin.users.check_email.text" class="btn-primary"}}
{{/if}}
</h3>
{{/if}}
{{plugin-outlet name="user-card-metadata" args=(hash user=user)}}
</div>
{{/if}}

View File

@ -41,6 +41,9 @@ $user_card_background: $secondary;
a.card-huge-avatar {
outline: none;
}
.staged {
font-style: italic;
}
}
&.no-bg {
@ -255,4 +258,8 @@ $user_card_background: $secondary;
font-size: 2.143em;
i {color: $user_card_primary;}
}
.metadata .email .btn {
padding: 2px 12px;
}
}

View File

@ -71,7 +71,8 @@ class UserSerializer < BasicUserSerializer
:primary_group_name,
:primary_group_flair_url,
:primary_group_flair_bg_color,
:primary_group_flair_color
:primary_group_flair_color,
:staged
has_one :invited_by, embed: :object, serializer: BasicUserSerializer
has_many :groups, embed: :object, serializer: BasicGroupSerializer
@ -411,4 +412,8 @@ class UserSerializer < BasicUserSerializer
time = object.recent_time_read
end
def include_staged?
scope.is_staff?
end
end

View File

@ -665,6 +665,7 @@ en:
api_approved: "Approved:"
theme: "Theme"
home: "Default Home Page"
staged: "Staged"
staff_counters:
flags_given: "helpful flags"