UX: Display translated group name for automatic groups.

This commit is contained in:
Guo Xiang Tan 2017-05-05 14:34:47 +08:00
parent 441e0059af
commit 2b21e5ea7e
7 changed files with 56 additions and 5 deletions

View File

@ -33,9 +33,9 @@ export default Ember.Controller.extend({
return !automatic && isGroupOwner; return !automatic && isGroupOwner;
}, },
@computed('model.name', 'model.full_name') @computed('model.displayName', 'model.full_name')
groupName(name, fullName) { groupName(displayName, fullName) {
return (fullName || name).capitalize(); return (fullName || displayName).capitalize();
}, },
@computed('model.name', 'model.flair_url', 'model.flair_bg_color', 'model.flair_color') @computed('model.name', 'model.flair_url', 'model.flair_bg_color', 'model.flair_color')

View File

@ -94,6 +94,10 @@ const Group = RestModel.extend({
}); });
}, },
@computed("display_name", "name")
displayName(groupDisplayName, name) {
return groupDisplayName || name;
},
@computed('flair_bg_color') @computed('flair_bg_color')
flairBackgroundHexColor() { flairBackgroundHexColor() {

View File

@ -26,7 +26,7 @@
{{/if}} {{/if}}
<span> <span>
<span class='groups-info-name'>{{group.name}}</span> <span class='groups-info-name'>{{group.displayName}}</span>
{{#if group.full_name}} {{#if group.full_name}}
<span class='groups-info-full-name'>{{group.full_name}}</span> <span class='groups-info-full-name'>{{group.full_name}}</span>

View File

@ -114,8 +114,8 @@ class Group < ActiveRecord::Base
incoming_email.split("|").each do |email| incoming_email.split("|").each do |email|
escaped = Rack::Utils.escape_html(email) escaped = Rack::Utils.escape_html(email)
if !Email.is_valid?(email)
self.errors.add(:base, I18n.t('groups.errors.invalid_incoming_email', email: escaped)) self.errors.add(:base, I18n.t('groups.errors.invalid_incoming_email', email: escaped))
if !Email.is_valid?(email)
elsif group = Group.where.not(id: self.id).find_by_email(email) elsif group = Group.where.not(id: self.id).find_by_email(email)
self.errors.add(:base, I18n.t('groups.errors.email_already_used_in_group', email: escaped, group_name: Rack::Utils.escape_html(group.name))) self.errors.add(:base, I18n.t('groups.errors.email_already_used_in_group', email: escaped, group_name: Rack::Utils.escape_html(group.name)))
elsif category = Category.find_by_email(email) elsif category = Category.find_by_email(email)

View File

@ -2,6 +2,7 @@ class BasicGroupSerializer < ApplicationSerializer
attributes :id, attributes :id,
:automatic, :automatic,
:name, :name,
:display_name,
:user_count, :user_count,
:alias_level, :alias_level,
:visible, :visible,
@ -22,6 +23,16 @@ class BasicGroupSerializer < ApplicationSerializer
:full_name, :full_name,
:default_notification_level :default_notification_level
def include_display_name?
object.automatic
end
def display_name
if auto_group_name = Group::AUTO_GROUP_IDS[object.id]
I18n.t("groups.default_names.#{auto_group_name}")
end
end
def include_incoming_email? def include_incoming_email?
staff? staff?
end end

View File

@ -0,0 +1,23 @@
require 'rails_helper'
describe BasicGroupSerializer do
subject { described_class.new(group, scope: Guardian.new, root: false) }
describe '#display_name' do
describe 'automatic group' do
let(:group) { Group.find(1) }
it 'should include the display name' do
expect(subject.display_name).to eq(I18n.t('groups.default_names.admins'))
end
end
describe 'normal group' do
let(:group) { Fabricate(:group) }
it 'should not include the display name' do
expect(subject.display_name).to eq(nil)
end
end
end
end

View File

@ -0,0 +1,13 @@
import Group from 'discourse/models/group';
module("model:group");
test('displayName', function() {
const group = Group.create({ name: "test", display_name: 'donkey' });
ok(group.get('displayName'), "donkey", 'it should return the display name');
group.set('display_name', null);
ok(group.get('displayName'), "test", "it should return the group's name");
});