doortts doortts 2017-09-19
i18n: Support english name if exist in LDAP
@730a4b7a6f1c0d73d17f46355c0947fc07e4dc4d
app/controllers/ProjectApp.java
--- app/controllers/ProjectApp.java
+++ app/controllers/ProjectApp.java
@@ -176,7 +176,7 @@
 
         if ((!AccessControl.isGlobalResourceCreatable(user))
                 || (Organization.isNameExist(owner) && !OrganizationUser.isAdmin(organization.id, user.id))) {
-            return forbidden(ErrorViews.Forbidden.render("'" + user.name + "' has no permission"));
+            return forbidden(ErrorViews.Forbidden.render("'" + user.getDisplayName() + "' has no permission"));
         }
 
         if (validateWhenNew(filledNewProjectForm)) {
@@ -841,8 +841,8 @@
             Map<String, String> projectUserMap = new HashMap<>();
             if (user != null && StringUtils.isNotEmpty(user.loginId) && !user.loginId.equals(Constants.ADMIN_LOGIN_ID)) {
                 projectUserMap.put("loginid", user.loginId);
-                projectUserMap.put("searchText", user.name + user.loginId);
-                projectUserMap.put("name", user.name);
+                projectUserMap.put("searchText", user.getDisplayName() + user.loginId);
+                projectUserMap.put("name", user.getDisplayName());
                 projectUserMap.put("image", user.avatarUrl());
                 users.add(projectUserMap);
             }
app/controllers/UserApp.java
--- app/controllers/UserApp.java
+++ app/controllers/UserApp.java
@@ -1166,6 +1166,9 @@
 
                 localUserFoundByLdapLogin.refresh();
                 localUserFoundByLdapLogin.name = ldapUser.getDisplayName();
+                if(StringUtils.isNotBlank(ldapUser.getEnglishName())){
+                    localUserFoundByLdapLogin.englishName = ldapUser.getEnglishName();
+                }
                 localUserFoundByLdapLogin.isGuest = ldapUser.isGuestUser();
                 localUserFoundByLdapLogin.update();
                 return localUserFoundByLdapLogin;
app/controllers/api/IssueApi.java
--- app/controllers/api/IssueApi.java
+++ app/controllers/api/IssueApi.java
@@ -387,7 +387,7 @@
     private static void addUserToUsers(User user, List<ObjectNode> users) {
         ObjectNode userNode = Json.newObject();
         userNode.put("loginId", user.loginId);
-        userNode.put("name", user.name);
+        userNode.put("name", user.getDisplayName());
         userNode.put("avatarUrl", user.avatarUrl());
 
         if(!users.contains(userNode)) {
@@ -460,7 +460,7 @@
         if(assigneeUser.isAnonymous()){
             node.put("name", Messages.get("common.none"));
         } else {
-            node.put("name", assigneeUser.name);
+            node.put("name", assigneeUser.getDisplayName());
         }
         result.put("assignee", node);
     }
app/models/User.java
--- app/models/User.java
+++ app/models/User.java
@@ -74,6 +74,7 @@
      * name to show at web pages
      */
     public String name;
+    public String englishName;
 
     @Pattern(value = "^" + LOGIN_ID_PATTERN + "$", message = "user.wrongloginId.alert")
     @Required
@@ -993,6 +994,9 @@
     }
 
     public String getPureNameOnly(){
+        if (StringUtils.isNotBlank(englishName) && lang != null && UserApp.currentUser().lang.startsWith("en")) {
+            return englishName;
+        }
         String pureName = this.name;
         String [] spliters = { "[", "(" };
         for(String spliter: spliters) {
@@ -1003,4 +1007,25 @@
 
         return pureName;
     }
+
+    public String extractDepartmentPart(){
+        String departmentName = this.name;
+        String [] spliters = { "[", "(" };
+        for(String spliter: spliters) {
+            if(departmentName.contains(spliter)){
+                departmentName = this.name.substring(this.name.indexOf(spliter));
+            }
+        }
+
+        return departmentName;
+
+    }
+
+    public String getDisplayName(){
+        if (StringUtils.isNotBlank(englishName) && lang != null && UserApp.currentUser().lang.startsWith("en")) {
+            return englishName + " " + extractDepartmentPart();
+        } else {
+            return name;
+        }
+    }
 }
app/models/support/LdapUser.java
--- app/models/support/LdapUser.java
+++ app/models/support/LdapUser.java
@@ -24,8 +24,10 @@
     private Attribute email;
     private Attribute userLoginId;
     private Attribute department;
+    private Attribute englishName;
 
-    public LdapUser(Attribute displayName, Attribute email, Attribute userLoginId, Attribute department) {
+    public LdapUser(Attribute displayName, Attribute email, Attribute userLoginId,
+                    Attribute department) {
         this.displayName = displayName;
         this.email = email;
         this.userLoginId = userLoginId;
@@ -88,14 +90,22 @@
         return getString(department);
     }
 
+    public void setEnglishName(Attribute englishName) {
+        this.englishName = englishName;
+    }
+
+    public String getEnglishName() {
+        return getString(englishName);
+    }
+
     @Override
     public String toString() {
         return "LdapUser{" +
-                "displayName='" + getDisplayName() + '\'' +
-                ", email='" + getEmail() + '\'' +
-                ", userId='" + getUserLoginId() + '\'' +
-                ", department='" + getDepartment() + '\'' +
-                ", isGuest='" + isGuestUser() + '\'' +
+                "displayName=" + displayName +
+                ", email=" + email +
+                ", userLoginId=" + userLoginId +
+                ", department=" + department +
+                ", englishName=" + englishName +
                 '}';
     }
 }
app/utils/LdapService.java
--- app/utils/LdapService.java
+++ app/utils/LdapService.java
@@ -8,6 +8,7 @@
 
 import models.User;
 import models.support.LdapUser;
+import org.apache.commons.lang3.StringUtils;
 import play.Play;
 
 import javax.annotation.Nonnull;
@@ -33,6 +34,8 @@
             ".options.fallbackToLocalLogin", false);
     private static final String EMAIL_PROPERTY = Play.application().configuration().getString("ldap" +
             ".emailProperty", "mail");
+    private static final String ENGLISH_NAME_PROPERTY = Play.application().configuration()
+            .getString("ldap.options.englishNameAttributeName", "");
     private static final int TIMEOUT = 5000; //ms
 
     public LdapUser authenticate(String username, String password) throws NamingException {
@@ -74,10 +77,16 @@
 
     private LdapUser getLdapUser(SearchResult searchResult) throws NamingException {
         Attributes attr = searchResult.getAttributes();
-        return new LdapUser(attr.get(DISPLAY_NAME_PROPERTY),
+        LdapUser ldapUser = new LdapUser(attr.get(DISPLAY_NAME_PROPERTY),
                 attr.get(EMAIL_PROPERTY),
                 attr.get(LOGIN_PROPERTY),
                 attr.get("department"));
+
+        if(StringUtils.isNotBlank(ENGLISH_NAME_PROPERTY)){
+            ldapUser.setEnglishName(attr.get(ENGLISH_NAME_PROPERTY));
+        }
+
+        return ldapUser;
     }
 
     private String searchFilter(@Nonnull String username) {
app/views/board/partial_list.scala.html
--- app/views/board/partial_list.scala.html
+++ app/views/board/partial_list.scala.html
@@ -30,7 +30,7 @@
     <div class="infos">
         @if(user.name){
             <a href="@routes.UserApp.userInfo(user.loginId)" class="infos-item infos-link-item" data-toggle="tooltip" data-placement="bottom" title="@user.loginId">
-                @user.name
+                @user.getDisplayName
             </a>
         } else {
             <span class="infos-item">@Messages("issue.noAuthor")</span>
app/views/git/partial_list.scala.html
--- app/views/git/partial_list.scala.html
+++ app/views/git/partial_list.scala.html
@@ -33,7 +33,7 @@
                 <div class="infos">
                     @if(user.name){
                         <a href="@routes.UserApp.userInfo(user.loginId)" class="infos-item infos-link-item" data-toggle="tooltip" data-placement="top" title="@user.loginId">
-                            @user.name
+                            @user.getDisplayName
                         </a>
                     } else {
                         <span class="infos-item">@Messages("issue.noAuthor")</span>
app/views/git/partial_pull_request_event.scala.html
--- app/views/git/partial_pull_request_event.scala.html
+++ app/views/git/partial_pull_request_event.scala.html
@@ -55,7 +55,7 @@
             @if(event.getNewValue == PullRequestReviewAction.DONE.name) {
             <li class="event" id="comment-@event.id">
                 <span class="state changed">@Messages("pullRequest.review")</span>
-                @Html(Messages("notification.pullrequest.reviewed",linkToUser(user.loginId, user.name)))
+                @Html(Messages("notification.pullrequest.reviewed",linkToUser(user.loginId, user.getDisplayName)))
                 <span class="date">
                     <a href="#event-@event.id" title="@getDateString(event.getDate())">@agoOrDateString(event.getDate())</a>
                 </span>
@@ -63,7 +63,7 @@
             } else {
             <li class="event" id="comment-@event.id">
                 <span class="state changed">@Messages("pullRequest.unreview")</span>
-                @Html(Messages("notification.pullrequest.unreviewed", linkToUser(user.loginId, user.name)))
+                @Html(Messages("notification.pullrequest.unreviewed", linkToUser(user.loginId, user.getDisplayName)))
                 <span class="date">
                     <a href="#event-@event.id" title="@getDateString(event.getDate())">@agoOrDateString(event.getDate())</a>
                 </span>
@@ -75,11 +75,11 @@
             <span class="state @event.getNewValue">@Messages("pullRequest.event." + event.getNewValue)</span>
             @State.getValue(event.getNewValue) match {
                 case State.MERGED => {
-                    @Html(Messages("pullRequest.event.message." + event.getNewValue, linkToUser(user.loginId, user.name),
+                    @Html(Messages("pullRequest.event.message." + event.getNewValue, linkToUser(user.loginId, user.getDisplayName),
                         linkToCommit(event.pullRequest.toProject, event.pullRequest.mergedCommitIdTo)))
                 }
                 case _ => {
-                    @Html(Messages("pullRequest.event.message." + event.getNewValue, linkToUser(user.loginId, user.name)))
+                    @Html(Messages("pullRequest.event.message." + event.getNewValue, linkToUser(user.loginId, user.getDisplayName)))
                 }
             }
             <span class="date">
@@ -91,7 +91,7 @@
         case EventType.PULL_REQUEST_MERGED => {
         <li class="event" id="comment-@event.id">
             <span class="state @event.getNewValue">@Messages("pullRequest.event." + event.getNewValue)</span>
-            @Html(Messages("pullRequest.event.message." + event.getNewValue, linkToUser(user.loginId, user.name)))
+            @Html(Messages("pullRequest.event.message." + event.getNewValue, linkToUser(user.loginId, user.getDisplayName)))
             <span class="date">
                 <a href="#event-@event.id" title="@getDateString(event.getDate())">@agoOrDateString(event.getDate())</a>
             </span>
@@ -101,7 +101,7 @@
         case EventType.PULL_REQUEST_COMMIT_CHANGED => {
         <li class="event" id="comment-@event.id">
             <span class="state changed">@Messages("pullRequest.event.commit")</span>
-            @Html(Messages("pullRequest.event.message.commit", linkToUser(user.loginId, user.name)))
+            @Html(Messages("pullRequest.event.message.commit", linkToUser(user.loginId, user.getDisplayName)))
             <span class="date">
                 <a href="#event-@event.id" title="@getDateString(event.getDate())">@agoOrDateString(event.getDate())</a>
             </span>
app/views/index/partial_notifications.scala.html
--- app/views/index/partial_notifications.scala.html
+++ app/views/index/partial_notifications.scala.html
@@ -80,7 +80,7 @@
                         </div>
                     }
                     @if(user != null) {
-                        <a href="@routes.UserApp.userInfo(user.loginId)" class="author">@user.name</a>@@@user.loginId
+                        <a href="@routes.UserApp.userInfo(user.loginId)" class="author">@user.getDisplayName</a>@@@user.loginId
                     }
                     <span class="ago pull-right" title="@JodaDateUtil.getDateString(noti.created)">
                         @agoOrDateString(noti.created)
app/views/issue/my_partial_list.scala.html
--- app/views/issue/my_partial_list.scala.html
+++ app/views/issue/my_partial_list.scala.html
@@ -41,7 +41,7 @@
                 @if(!isAuthoredMeTab) {
                     @if(user.name) {
                         <a href="@routes.UserApp.userInfo(user.loginId)" class="infos-item infos-link-item" data-toggle="tooltip" data-placement="bottom" title="@user.loginId">
-                        @user.name
+                        @user.getDisplayName
                         </a>
                     } else {
                         <span class="infos-item">@Messages("issue.noAuthor")</span>
app/views/issue/partial_assignee.scala.html
--- app/views/issue/partial_assignee.scala.html
+++ app/views/issue/partial_assignee.scala.html
@@ -13,7 +13,7 @@
             data-login-id="@user.loginId"
             @if(!users.contains(user)) { data-non-member="true" }
             @flag>
-        @user.name
+        @user.getDisplayName
     </option>
 }
 
app/views/issue/partial_comments.scala.html
--- app/views/issue/partial_comments.scala.html
+++ app/views/issue/partial_comments.scala.html
@@ -80,7 +80,7 @@
                             <img src="@User.findByLoginId(comment.authorLoginId).avatarUrl(64)" width="32" height="32" alt="@comment.authorLoginId">
                         </a>
                     </span>
-                    <a href="@userInfo(comment.authorLoginId)" data-toggle="tooltip" data-placement="top" title="@comment.authorLoginId"><strong>@comment.authorName</strong></a>
+                    <a href="@userInfo(comment.authorLoginId)" data-toggle="tooltip" data-placement="top" title="@comment.authorLoginId"><strong>@User.findByLoginId(comment.authorLoginId).getDisplayName</strong></a>
                 </span>
                 <span class="ago-date">
                     <a href="#comment-@comment.id" class="ago" title="@JodaDateUtil.getDateString(comment.createdDate)">@utils.TemplateHelper.agoOrDateString(comment.createdDate)</a>
@@ -158,28 +158,28 @@
                 @defining(User.findByLoginId(event.senderLoginId)) { user =>
                     @event.eventType match {
                         case EventType.ISSUE_STATE_CHANGED => {
-                            <span class="state @event.newValue">@Messages("issue.state." + event.newValue)</span> @Html(Messages("issue.event." + event.newValue, linkToUser(user.loginId, user.name)))
+                            <span class="state @event.newValue">@Messages("issue.state." + event.newValue)</span> @Html(Messages("issue.event." + event.newValue, linkToUser(user.loginId, user.getDisplayName)))
                         }
                         case EventType.ISSUE_ASSIGNEE_CHANGED => {
                             <span class="state changed">@Messages("issue.state.assigned")</span>
-                            @Html(Messages(assginedMesssage(event.newValue, user), linkToUser(user.loginId, user.name), linkToUser(event.newValue,User.findByLoginId(event.newValue).name, true)))
+                            @Html(Messages(assginedMesssage(event.newValue, user), linkToUser(user.loginId, user.getDisplayName), linkToUser(event.newValue,User.findByLoginId(event.newValue).getDisplayName, true)))
                         }
                         case EventType.ISSUE_REFERRED_FROM_COMMIT => {
                             <span class="state changed">@Messages("issue.event.referred.title")</span>
-                            @Html(Messages("issue.event.referred",linkToUser(user.loginId, user.name),linkToCommit(event.newValue)))
+                            @Html(Messages("issue.event.referred",linkToUser(user.loginId, user.getDisplayName),linkToCommit(event.newValue)))
                         }
                         case EventType.ISSUE_MOVED => {
                             <span class="state changed">@Messages("issue.event.moved.title")</span>
-                            @Html(Messages("issue.event.moved", linkToUser(user.loginId, user.name), linkToProject(event.oldValue.split("/")(0), event.oldValue.split("/")(1))))
+                            @Html(Messages("issue.event.moved", linkToUser(user.loginId, user.getDisplayName), linkToProject(event.oldValue.split("/")(0), event.oldValue.split("/")(1))))
                         }
                         case EventType.ISSUE_REFERRED_FROM_PULL_REQUEST => {
                             <span class="state changed">@Messages("issue.event.referred.title")</span>
                             @defining(PullRequest.findById(Long.valueOf(event.newValue))) { pull =>
-                                @Html(Messages("issue.event.referred",linkToUser(user.loginId, user.name),linkToPullRequest(pull)))
+                                @Html(Messages("issue.event.referred",linkToUser(user.loginId, user.getDisplayName),linkToPullRequest(pull)))
                             }
                         }
                         case _ => {
-                            @event.newValue by @linkToUser(user.loginId, user.name)
+                            @event.newValue by @linkToUser(user.loginId, user.getDisplayName)
                         }
                     }
                 }
app/views/issue/partial_list.scala.html
--- app/views/issue/partial_list.scala.html
+++ app/views/issue/partial_list.scala.html
@@ -28,7 +28,7 @@
             }
             <div for="issue-@issue.id" class="issue-item-row">
                 <a href="@routes.UserApp.userInfo(user.loginId)" class="avatar-wrap mlarge hide-in-mobile" data-toggle="tooltip" data-placement="top" title="@user.loginId">
-                        <img src="@User.findByLoginId(issue.authorLoginId).avatarUrl(64)" alt="@user.name" width="32" height="32"/>
+                        <img src="@User.findByLoginId(issue.authorLoginId).avatarUrl(64)" alt="@user.getDisplayName" width="32" height="32"/>
                 </a>
                 <div class="title-wrap">
                     <a href="@routes.IssueApp.issue(project.owner, project.name, issue.getNumber)" class="title">
@@ -42,7 +42,7 @@
                 <div class="infos">
                     @if(user.name){
                         <a href="@routes.UserApp.userInfo(user.loginId)" class="infos-item infos-link-item" data-toggle="tooltip" data-placement="bottom" title="@user.loginId">
-                            @user.name
+                            @user.getDisplayName
                         </a>
                     } else {
                         <span class="infos-item">@Messages("issue.noAuthor")</span>
app/views/issue/partial_massupdate.scala.html
--- app/views/issue/partial_massupdate.scala.html
+++ app/views/issue/partial_massupdate.scala.html
@@ -75,7 +75,7 @@
                             <span class="avatar-wrap smaller">
                                 <img src="@user.avatarUrl(32)" width="20" height="20">
                             </span>
-                            <strong class="name">@user.name</strong>
+                            <strong class="name">@user.getDisplayName</strong>
                             <span class="loginid"> <strong>@{"@"}</strong>@user.loginId</span>
                         </a>
                     </li>
app/views/issue/partial_searchform.scala.html
--- app/views/issue/partial_searchform.scala.html
+++ app/views/issue/partial_searchform.scala.html
@@ -63,7 +63,7 @@
                         }
                         data-avatar-url="@user.avatarUrl"
                         data-login-id="@user.loginId">
-                            @user.name
+                            @user.getDisplayName
                         </option>
                     }
                 </select>
app/views/issue/view.scala.html
--- app/views/issue/view.scala.html
+++ app/views/issue/view.scala.html
@@ -136,7 +136,7 @@
                                 <img src="@User.findByLoginId(issue.authorLoginId).avatarUrl(32)" width="20" height="20">
                             </span>
                             @if(issue.authorLoginId != null){
-                                <strong class="name">@issue.getAuthor.name</strong>
+                                <strong class="name">@issue.getAuthor.getDisplayName</strong>
                                 <span class="loginid"> <strong>@{"@"}</strong>@issue.authorLoginId</span>
                             } else {
                                 <strong class="name">@Messages("issue.noAuthor")</strong>
@@ -257,7 +257,7 @@
                                         <span class="avatar-wrap smaller">
                                             <img src="@User.findByLoginId(issue.assignee.user.loginId).avatarUrl" width="20" height="20">
                                         </span>
-                                        <strong class="name">@issue.assigneeName</strong>
+                                        <strong class="name">@issue.assignee.user.getDisplayName</strong>
                                         <span class="loginid"> <strong>@{"@"}</strong>@issue.assignee.user.loginId</span>
                                     </a>
                                     } else {
app/views/organization/group_board_list_partial.scala.html
--- app/views/organization/group_board_list_partial.scala.html
+++ app/views/organization/group_board_list_partial.scala.html
@@ -39,7 +39,7 @@
     <div class="infos">
         @if(user.name){
             <a href="@routes.UserApp.userInfo(user.loginId)" class="infos-item infos-link-item" data-toggle="tooltip" data-placement="top" title="@user.loginId">
-                @user.name
+                @user.getDisplayName
             </a>
         } else {
             <span class="infos-item">@Messages("issue.noAuthor")</span>
app/views/organization/group_issue_list_partial.scala.html
--- app/views/organization/group_issue_list_partial.scala.html
+++ app/views/organization/group_issue_list_partial.scala.html
@@ -48,7 +48,7 @@
             <div class="infos">
                 @if(user.name){
                     <a href="@routes.UserApp.userInfo(user.loginId)" class="infos-item infos-link-item" data-toggle="tooltip" data-placement="top" title="@user.loginId">
-                        @user.name
+                        @user.getDisplayName
                     </a>
                 } else {
                     <span class="infos-item">@Messages("issue.noAuthor")</span>
app/views/organization/members.scala.html
--- app/views/organization/members.scala.html
+++ app/views/organization/members.scala.html
@@ -51,7 +51,7 @@
                     <a href="@routes.UserApp.userInfo(member.user.loginId)" class="avatar-wrap mlarge pull-left mr10">
                         <img src="@User.findByLoginId(member.user.loginId).avatarUrl" width="64" height="64">
                     </a>
-                    <div class="member-name">@member.user.name</div>
+                    <div class="member-name">@member.user.getDisplayName</div>
                     <div class="member-id">@{"@"}@member.user.loginId</div>
                     <div class="member-setting">
                         <div class="btn-group" data-name="roleof-@member.user.loginId">
@@ -99,7 +99,7 @@
                     </a>
                 </div>
                 <div class="pull-left" style="width: 60px;">
-                    <span><a href="@routes.UserApp.userInfo(user.loginId)"><strong>@user.name</strong></a></span>
+                    <span><a href="@routes.UserApp.userInfo(user.loginId)"><strong>@user.getDisplayName</strong></a></span>
                     <span>(@user.loginId)</span>
                     <button type="button" class="ybtn ybtn-info ybtn-mini blue enrollAcceptBtn" data-loginId="@user.loginId"><i class="yobicon-addfriend"></i>@Messages("button.add")</button>
                 </div>
app/views/organization/view.scala.html
--- app/views/organization/view.scala.html
+++ app/views/organization/view.scala.html
@@ -38,7 +38,7 @@
         <img src="@organizationUser.user.avatarUrl" height="45" width="45" />
     </a>
     <a href="@routes.UserApp.userInfo(organizationUser.user.loginId)" data-toggle="tooltip" data-placement="top" title="@organizationUser.user.loginId">
-        @organizationUser.user.name
+        @organizationUser.user.getDisplayName
     </a>
 </li>
 }
app/views/project/home.scala.html
--- app/views/project/home.scala.html
+++ app/views/project/home.scala.html
@@ -132,7 +132,7 @@
                                         <img src="@member.avatarUrl" alt="@member.loginId" width="24" height="24">
                                     </a>
                                     <a href="@routes.UserApp.userInfo(member.loginId)" class="name">
-                                        <strong>@member.name (@member.loginId)</strong>
+                                        <strong>@member.getDisplayName (@member.loginId)</strong>
                                     </a>
                                 </li>
                                 }
app/views/project/members.scala.html
--- app/views/project/members.scala.html
+++ app/views/project/members.scala.html
@@ -51,7 +51,7 @@
                 <a href="@routes.UserApp.userInfo(member.user.loginId)" class="avatar-wrap mlarge pull-left mr10">
                     <img src="@User.findByLoginId(member.user.loginId).avatarUrl" width="64" height="64">
                 </a>
-                <div class="member-name">@member.user.name</div>
+                <div class="member-name">@member.user.getDisplayName</div>
                 <div class="member-id">@{"@"}@member.user.loginId @if(member.user.isGuest){<span class="guest">GUEST</span>}</div>
                 <div class="member-setting">
                 @if(!project.isOwner(member.user)) {
@@ -88,7 +88,7 @@
                     </a>
                 </div>
                 <div class="pull-left" style="width: 60px;">
-                    <span><a href="@routes.UserApp.userInfo(user.loginId)"><strong>@user.name</strong></a></span>
+                    <span><a href="@routes.UserApp.userInfo(user.loginId)"><strong>@user.getDisplayName</strong></a></span>
                     <span>(@user.loginId)</span>
                     <button type="button" class="ybtn ybtn-info ybtn-mini blue enrollAcceptBtn" data-loginId="@user.loginId"><i class="yobicon-addfriend"></i> @Messages("button.add")</button>
                 </div>
app/views/project/watchers.scala.html
--- app/views/project/watchers.scala.html
+++ app/views/project/watchers.scala.html
@@ -19,7 +19,7 @@
                     <a href="@routes.UserApp.userInfo(member.loginId)" class="avatar-wrap mlarge pull-left mr10">
                         <img src="@User.findByLoginId(member.loginId).avatarUrl" width="64" height="64">
                     </a>
-                    <div class="member-name">@member.name</div>
+                    <div class="member-name">@member.getDisplayName</div>
                     <div class="member-id">@{"@"}@member.loginId</div>
                 </li>
                     }
app/views/reviewthread/partial_list.scala.html
--- app/views/reviewthread/partial_list.scala.html
+++ app/views/reviewthread/partial_list.scala.html
@@ -46,7 +46,7 @@
            <div class="infos">
                 @if(user.name){
                     <a href="@routes.UserApp.userInfo(user.loginId)" class="infos-item infos-link-item" data-toggle="tooltip" data-placement="top" title="@user.loginId">
-                        @user.name
+                        @user.getDisplayName
                     </a>
                 } else {
                     <span class="infos-item">@Messages("issue.noAuthor")</span>
app/views/search/partial_issue_comments.scala.html
--- app/views/search/partial_issue_comments.scala.html
+++ app/views/search/partial_issue_comments.scala.html
@@ -53,7 +53,7 @@
                     }
                     @if(user.name){
                         <a href="@routes.UserApp.userInfo(user.loginId)" class="meta-item" data-toggle="tooltip" data-placement="top" title="@user.loginId">
-                            @user.name
+                            @user.getDisplayName
                         </a>
                     } else {
                         <span class="meta-item">@Messages("issue.noAuthor")</span>
app/views/search/partial_issues.scala.html
--- app/views/search/partial_issues.scala.html
+++ app/views/search/partial_issues.scala.html
@@ -55,7 +55,7 @@
                     }
                     @if(user.name){
                         <a href="@routes.UserApp.userInfo(user.loginId)" class="meta-item" data-toggle="tooltip" data-placement="top" title="@user.loginId">
-                            @user.name
+                            @user.getDisplayName
                         </a>
                     } else {
                         <span class="meta-item">@Messages("issue.noAuthor")</span>
app/views/search/partial_post_comments.scala.html
--- app/views/search/partial_post_comments.scala.html
+++ app/views/search/partial_post_comments.scala.html
@@ -39,7 +39,7 @@
                     }
                     @if(user.name){
                         <a href="@routes.UserApp.userInfo(user.loginId)" class="meta-item" data-toggle="tooltip" data-placement="top" title="@user.loginId">
-                            @user.name
+                            @user.getDisplayName
                         </a>
                     } else {
                         <span class="meta-item">@Messages("posting.noAuthor")</span>
app/views/search/partial_posts.scala.html
--- app/views/search/partial_posts.scala.html
+++ app/views/search/partial_posts.scala.html
@@ -53,7 +53,7 @@
                     }
                     @if(user.name){
                         <a href="@routes.UserApp.userInfo(user.loginId)" class="meta-item" data-toggle="tooltip" data-placement="top" title="@user.loginId">
-                            @user.name
+                            @user.getDisplayName
                         </a>
                     } else {
                         <span class="meta-item">@Messages("issue.noAuthor")</span>
app/views/search/partial_reviews.scala.html
--- app/views/search/partial_reviews.scala.html
+++ app/views/search/partial_reviews.scala.html
@@ -67,7 +67,7 @@
                     }
                     @if(user.name){
                         <a href="@routes.UserApp.userInfo(user.loginId)" class="meta-item" data-toggle="tooltip" data-placement="top" title="@user.loginId">
-                            @user.name
+                            @user.getDisplayName
                         </a>
                     } else {
                         <span class="meta-item">@Messages("issue.noAuthor")</span>
app/views/site/issueList.scala.html
--- app/views/site/issueList.scala.html
+++ app/views/site/issueList.scala.html
@@ -60,7 +60,7 @@
                     }
                 </a>
                 <a href="@routes.UserApp.userInfo(user.loginId)" class="post-meta-item">
-                    @user.name
+                    @user.getDisplayName
                 </a>
                 <span class="post-meta-item" title="@JodaDateUtil.getDateString(issue.createdDate)">
                     @agoOrDateString(issue.createdDate)
app/views/user/partial_issues.scala.html
--- app/views/user/partial_issues.scala.html
+++ app/views/user/partial_issues.scala.html
@@ -46,7 +46,7 @@
         <div class="infos">
             @if(user.name){
                 <a href="@routes.UserApp.userInfo(user.loginId)" class="infos-item infos-link-item" data-toggle="tooltip" data-placement="top" title="@user.loginId">
-                    @user.name
+                    @user.getDisplayName
                 </a>
             } else {
                 <span class="infos-item">@Messages("issue.noAuthor")</span>
app/views/user/partial_postings.scala.html
--- app/views/user/partial_postings.scala.html
+++ app/views/user/partial_postings.scala.html
@@ -40,7 +40,7 @@
     <div class="infos">
         @if(user.name){
             <a href="@routes.UserApp.userInfo(user.loginId)" class="infos-item infos-link-item" data-toggle="tooltip" data-placement="top" title="@user.loginId">
-                @user.name
+                @user.getDisplayName
             </a>
         } else {
             <span class="infos-item">@Messages("post.noAuthor")</span>
app/views/user/partial_pullRequests.scala.html
--- app/views/user/partial_pullRequests.scala.html
+++ app/views/user/partial_pullRequests.scala.html
@@ -45,7 +45,7 @@
         <div class="infos">
             @if(user.name){
                 <a href="@routes.UserApp.userInfo(user.loginId)" class="infos-item infos-link-item" data-toggle="tooltip" data-placement="top" title="@user.loginId">
-                    @user.name
+                    @user.getDisplayName
                 </a>
             } else {
                 <span class="infos-item">@Messages("issue.noAuthor")</span>
app/views/user/view.scala.html
--- app/views/user/view.scala.html
+++ app/views/user/view.scala.html
@@ -53,6 +53,7 @@
                 </div>
                 <div class="whoami usf-group">
                     <span class="name">@user.name</span>
+                    <span class="name">@user.englishName</span>
                     <span class="loginid">@{"@"}@user.loginId</span>
                     @if(Application.SHOW_USER_EMAIL){
                         <span class="email">@user.email</span>
 
conf/evolutions/default/18.sql (added)
+++ conf/evolutions/default/18.sql
@@ -0,0 +1,5 @@
+# --- !Ups
+ALTER TABLE n4user ADD COLUMN english_name VARCHAR(255);
+
+# --- !Downs
+ALTER TABLE n4user DROP COLUMN english_name;(No newline at end of file)
Add a comment
List