Skip to content

Commit

Permalink
i18n: Fix name rendering bug in mail contents
Browse files Browse the repository at this point in the history
It was little bit difficult to modify existed codes to support
proper name renderin for each users whose have their own lang.

I don't want to be a prayer, but I hope it will work properly.

If it isn't, mail sending will stop.
  • Loading branch information
doortts committed Sep 25, 2017
1 parent da0f6c3 commit 11d3f5e
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 10 deletions.
2 changes: 1 addition & 1 deletion app/models/NotificationMail.java
Original file line number Diff line number Diff line change
Expand Up @@ -612,7 +612,7 @@ private static String getHtmlMessage(Lang lang, String message, String urlToView
String renderred = null;

if( resource != null) {
renderred = Markdown.render(message, resource.getProject());
renderred = Markdown.render(message, resource.getProject(), lang.code());
} else {
renderred = Markdown.render(message);
}
Expand Down
16 changes: 16 additions & 0 deletions app/models/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -1011,6 +1011,22 @@ public String getPureNameOnly(){
return pureName;
}

public String getPureNameOnly(String targetLang){
if (StringUtils.isNotBlank(englishName) && lang != null
&& StringUtils.isNotBlank(targetLang) && targetLang.startsWith("en")) {
return englishName;
}
String pureName = this.name;
String [] spliters = { "[", "(" };
for(String spliter: spliters) {
if(pureName.contains(spliter)){
pureName = this.name.substring(0, this.name.indexOf(spliter));
}
}

return pureName;
}

public String extractDepartmentPart(){
String departmentName = this.name;
String [] spliters = { "[", "(" };
Expand Down
16 changes: 12 additions & 4 deletions app/utils/AutoLinkRenderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ public AutoLinkRenderer(String body, Project project) {
this.project = project;
}

public String render() {
public String render(String lang) {
this.parse(PATH_WITH_ISSUE_PATTERN, new ToLink() {
@Override
public Link toLink(Matcher matcher) {
Expand Down Expand Up @@ -171,7 +171,7 @@ public Link toLink(Matcher matcher) {
if (slashIndex > -1) {
return toValidProjectLink(path.substring(0, slashIndex), path.substring(slashIndex + 1));
} else {
return toValidUserLink(path);
return toValidUserLink(path, lang);
}
}
});
Expand Down Expand Up @@ -313,7 +313,7 @@ private Link toValidSHALink(String prefix, Project project, String sha) {
return Link.EMPTY_LINK;
}

private static Link toValidUserLink(String userId) {
private static Link toValidUserLink(String userId, String lang) {
User user = User.findByLoginId(userId);
Organization org = Organization.findByName(userId);

Expand All @@ -330,7 +330,15 @@ private static Link toValidUserLink(String userId) {
} else {
avatarImage = "<img src='" + user.avatarUrl() + "' class='avatar-wrap smaller no-margin-no-padding vertical-top' alt='@" + user.name + " " + user.loginId + "'> ";
}
return new Link(RouteUtil.getUrl(user), "no-text-decoration", "<span data-toggle='popover' data-placement='top' data-trigger='hover' data-html='true' data-content=\"" + StringEscapeUtils.escapeHtml4(avatarImage + user.name + " " + user.loginId) + "\">@" + user.getPureNameOnly() + "</span>");

String userName = null;
if( StringUtils.isBlank(lang)) {
userName = user.getPureNameOnly();
} else {
userName = user.getPureNameOnly(lang);
}

return new Link(RouteUtil.getUrl(user), "no-text-decoration", "<span data-toggle='popover' data-placement='top' data-trigger='hover' data-html='true' data-content=\"" + StringEscapeUtils.escapeHtml4(avatarImage + user.name + " " + user.loginId) + "\">@" + userName + "</span>");
}
}

Expand Down
15 changes: 12 additions & 3 deletions app/utils/Markdown.java
Original file line number Diff line number Diff line change
Expand Up @@ -207,23 +207,32 @@ public static String render(@Nonnull String source) {

public static String render(@Nonnull String source, Project project, boolean breaks) {
AutoLinkRenderer autoLinkRenderer = new AutoLinkRenderer(renderWithHighlight(source, breaks), project);
return autoLinkRenderer.render();
return autoLinkRenderer.render(null);
}

public static String render(@Nonnull String source, Project project, boolean breaks, String lang) {
AutoLinkRenderer autoLinkRenderer = new AutoLinkRenderer(renderWithHighlight(source, breaks), project);
return autoLinkRenderer.render(lang);
}

public static String render(@Nonnull String source, Project project) {
return render(source, project, true);
}

public static String render(@Nonnull String source, Project project, String lang) {
return render(source, project, true, lang);
}

public static String renderFileInCodeBrowser(@Nonnull String source, Project project) {
String imageLinkFilter = replaceImageLinkPath(project, source);
AutoLinkRenderer autoLinkRenderer = new AutoLinkRenderer(renderWithHighlight(imageLinkFilter, true), project);
return autoLinkRenderer.render();
return autoLinkRenderer.render(null);
}

public static String renderFileInReadme(@Nonnull String source, Project project) {
String relativeLinksToCodeBrowserPath = replaceContentsLinkToCodeBrowerPath(project, source);
AutoLinkRenderer autoLinkRenderer = new AutoLinkRenderer(renderWithHighlight(relativeLinksToCodeBrowserPath, true), project);
return autoLinkRenderer.render();
return autoLinkRenderer.render(null);
}

private static String replaceImageLinkPath(Project project, String text){
Expand Down
2 changes: 1 addition & 1 deletion app/views/code/diff.scala.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

@autoLinkedMsg(msg:String) = @{
val autoLinkRenderer = new AutoLinkRenderer(msg, project)
autoLinkRenderer.render()
autoLinkRenderer.render(null)
}

@projectLayout(Messages("code.commits") + " @" + commit.getId, project, utils.MenuType.CODE) {
Expand Down
2 changes: 1 addition & 1 deletion app/views/code/history.scala.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

@autoLinkedMsg(msg:String) = @{
val autoLinkRenderer = new AutoLinkRenderer(msg, project)
autoLinkRenderer.render()
autoLinkRenderer.render(null)
}

@getFilesURL = @{
Expand Down

0 comments on commit 11d3f5e

Please sign in to comment.