UX: Show user fields when reviewing a user
This commit is contained in:
parent
64ec4a6a1b
commit
9c8cc73c39
|
@ -66,16 +66,7 @@ export default Ember.Controller.extend(CanCheckEmails, {
|
|||
|
||||
@computed("model.user_fields.[]")
|
||||
userFields(userFields) {
|
||||
const siteUserFields = this.site.get("user_fields");
|
||||
|
||||
if (!Ember.isEmpty(siteUserFields)) {
|
||||
return siteUserFields.map(uf => {
|
||||
const value = userFields ? userFields[uf.get("id").toString()] : null;
|
||||
return { name: uf.get("name"), value };
|
||||
});
|
||||
}
|
||||
|
||||
return [];
|
||||
return this.site.collectUserFields(userFields);
|
||||
},
|
||||
|
||||
preferencesPath: fmt("model.username_lower", userPath("%@/preferences")),
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
import { default as computed } from "ember-addons/ember-computed-decorators";
|
||||
|
||||
export default Ember.Component.extend({
|
||||
@computed("reviewable.user_fields")
|
||||
userFields(fields) {
|
||||
return this.site.collectUserFields(fields);
|
||||
}
|
||||
});
|
|
@ -27,6 +27,21 @@ const Site = RestModel.extend({
|
|||
topicCountDesc: ["topic_count:desc"],
|
||||
categoriesByCount: Ember.computed.sort("categories", "topicCountDesc"),
|
||||
|
||||
collectUserFields(fields) {
|
||||
fields = fields || {};
|
||||
|
||||
let siteFields = this.get("user_fields");
|
||||
|
||||
if (!Ember.isEmpty(siteFields)) {
|
||||
return siteFields.map(f => {
|
||||
let value = fields ? fields[f.id.toString()] : null;
|
||||
value = value || "—".htmlSafe();
|
||||
return { name: f.name, value };
|
||||
});
|
||||
}
|
||||
return [];
|
||||
},
|
||||
|
||||
// Sort subcategories under parents
|
||||
@computed("categoriesByCount", "categories.[]")
|
||||
sortedCategories(cats) {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<div class='reviewable-user-info'>
|
||||
<div class='reviewable-user-fields'>
|
||||
<div class='reviewable-user-details username'>
|
||||
<div class='name'>{{i18n "review.user.username"}}</div>
|
||||
<div class='value'>
|
||||
|
@ -21,6 +22,13 @@
|
|||
<div class='name'>{{i18n "review.user.email"}}</div>
|
||||
<div class='value'>{{reviewable.payload.email}}</div>
|
||||
</div>
|
||||
{{#each userFields as |f|}}
|
||||
<div class='reviewable-user-details user-field'>
|
||||
<div class='name'>{{f.name}}</div>
|
||||
<div class='value'>{{f.value}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
{{yield}}
|
||||
</div>
|
||||
|
|
|
@ -46,8 +46,14 @@
|
|||
|
||||
.reviewable-user-info {
|
||||
margin: 0.5em 0;
|
||||
.reviewable-user-fields {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
.reviewable-user-details {
|
||||
border-bottom: 1px solid $primary-low;
|
||||
padding-bottom: 0.25em;
|
||||
|
||||
display: flex;
|
||||
.name {
|
||||
width: 8em;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
class ReviewableUserSerializer < ReviewableSerializer
|
||||
|
||||
attributes :link_admin
|
||||
attributes :link_admin, :user_fields
|
||||
|
||||
payload_attributes(
|
||||
:username,
|
||||
|
@ -12,4 +12,12 @@ class ReviewableUserSerializer < ReviewableSerializer
|
|||
scope.is_staff? && object.target.present?
|
||||
end
|
||||
|
||||
def user_fields
|
||||
object.target.user_fields
|
||||
end
|
||||
|
||||
def include_user_fields?
|
||||
object.target.present? && object.target.user_fields.present?
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -385,6 +385,7 @@ en:
|
|||
username: "Username"
|
||||
email: "Email"
|
||||
name: "Name"
|
||||
fields: "Fields"
|
||||
|
||||
user_percentage:
|
||||
summary:
|
||||
|
|
Loading…
Reference in New Issue