[Notice] Announcing the End of Demo Server [Read me]
i18n: Fix name rendering bug in mail contents
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.
@11d3f5e94aef3e0e022f2ac95d9ba0728e9858b4
--- app/models/NotificationMail.java
+++ app/models/NotificationMail.java
... | ... | @@ -612,7 +612,7 @@ |
612 | 612 |
String renderred = null; |
613 | 613 |
|
614 | 614 |
if( resource != null) { |
615 |
- renderred = Markdown.render(message, resource.getProject()); |
|
615 |
+ renderred = Markdown.render(message, resource.getProject(), lang.code()); |
|
616 | 616 |
} else { |
617 | 617 |
renderred = Markdown.render(message); |
618 | 618 |
} |
--- app/models/User.java
+++ app/models/User.java
... | ... | @@ -1011,6 +1011,22 @@ |
1011 | 1011 |
return pureName; |
1012 | 1012 |
} |
1013 | 1013 |
|
1014 |
+ public String getPureNameOnly(String targetLang){ |
|
1015 |
+ if (StringUtils.isNotBlank(englishName) && lang != null |
|
1016 |
+ && StringUtils.isNotBlank(targetLang) && targetLang.startsWith("en")) { |
|
1017 |
+ return englishName; |
|
1018 |
+ } |
|
1019 |
+ String pureName = this.name; |
|
1020 |
+ String [] spliters = { "[", "(" }; |
|
1021 |
+ for(String spliter: spliters) { |
|
1022 |
+ if(pureName.contains(spliter)){ |
|
1023 |
+ pureName = this.name.substring(0, this.name.indexOf(spliter)); |
|
1024 |
+ } |
|
1025 |
+ } |
|
1026 |
+ |
|
1027 |
+ return pureName; |
|
1028 |
+ } |
|
1029 |
+ |
|
1014 | 1030 |
public String extractDepartmentPart(){ |
1015 | 1031 |
String departmentName = this.name; |
1016 | 1032 |
String [] spliters = { "[", "(" }; |
--- app/utils/AutoLinkRenderer.java
+++ app/utils/AutoLinkRenderer.java
... | ... | @@ -124,7 +124,7 @@ |
124 | 124 |
this.project = project; |
125 | 125 |
} |
126 | 126 |
|
127 |
- public String render() { |
|
127 |
+ public String render(String lang) { |
|
128 | 128 |
this.parse(PATH_WITH_ISSUE_PATTERN, new ToLink() { |
129 | 129 |
@Override |
130 | 130 |
public Link toLink(Matcher matcher) { |
... | ... | @@ -171,7 +171,7 @@ |
171 | 171 |
if (slashIndex > -1) { |
172 | 172 |
return toValidProjectLink(path.substring(0, slashIndex), path.substring(slashIndex + 1)); |
173 | 173 |
} else { |
174 |
- return toValidUserLink(path); |
|
174 |
+ return toValidUserLink(path, lang); |
|
175 | 175 |
} |
176 | 176 |
} |
177 | 177 |
}); |
... | ... | @@ -313,7 +313,7 @@ |
313 | 313 |
return Link.EMPTY_LINK; |
314 | 314 |
} |
315 | 315 |
|
316 |
- private static Link toValidUserLink(String userId) { |
|
316 |
+ private static Link toValidUserLink(String userId, String lang) { |
|
317 | 317 |
User user = User.findByLoginId(userId); |
318 | 318 |
Organization org = Organization.findByName(userId); |
319 | 319 |
|
... | ... | @@ -330,7 +330,15 @@ |
330 | 330 |
} else { |
331 | 331 |
avatarImage = "<img src='" + user.avatarUrl() + "' class='avatar-wrap smaller no-margin-no-padding vertical-top' alt='@" + user.name + " " + user.loginId + "'> "; |
332 | 332 |
} |
333 |
- 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>"); |
|
333 |
+ |
|
334 |
+ String userName = null; |
|
335 |
+ if( StringUtils.isBlank(lang)) { |
|
336 |
+ userName = user.getPureNameOnly(); |
|
337 |
+ } else { |
|
338 |
+ userName = user.getPureNameOnly(lang); |
|
339 |
+ } |
|
340 |
+ |
|
341 |
+ 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>"); |
|
334 | 342 |
} |
335 | 343 |
} |
336 | 344 |
|
--- app/utils/Markdown.java
+++ app/utils/Markdown.java
... | ... | @@ -207,23 +207,32 @@ |
207 | 207 |
|
208 | 208 |
public static String render(@Nonnull String source, Project project, boolean breaks) { |
209 | 209 |
AutoLinkRenderer autoLinkRenderer = new AutoLinkRenderer(renderWithHighlight(source, breaks), project); |
210 |
- return autoLinkRenderer.render(); |
|
210 |
+ return autoLinkRenderer.render(null); |
|
211 |
+ } |
|
212 |
+ |
|
213 |
+ public static String render(@Nonnull String source, Project project, boolean breaks, String lang) { |
|
214 |
+ AutoLinkRenderer autoLinkRenderer = new AutoLinkRenderer(renderWithHighlight(source, breaks), project); |
|
215 |
+ return autoLinkRenderer.render(lang); |
|
211 | 216 |
} |
212 | 217 |
|
213 | 218 |
public static String render(@Nonnull String source, Project project) { |
214 | 219 |
return render(source, project, true); |
215 | 220 |
} |
216 | 221 |
|
222 |
+ public static String render(@Nonnull String source, Project project, String lang) { |
|
223 |
+ return render(source, project, true, lang); |
|
224 |
+ } |
|
225 |
+ |
|
217 | 226 |
public static String renderFileInCodeBrowser(@Nonnull String source, Project project) { |
218 | 227 |
String imageLinkFilter = replaceImageLinkPath(project, source); |
219 | 228 |
AutoLinkRenderer autoLinkRenderer = new AutoLinkRenderer(renderWithHighlight(imageLinkFilter, true), project); |
220 |
- return autoLinkRenderer.render(); |
|
229 |
+ return autoLinkRenderer.render(null); |
|
221 | 230 |
} |
222 | 231 |
|
223 | 232 |
public static String renderFileInReadme(@Nonnull String source, Project project) { |
224 | 233 |
String relativeLinksToCodeBrowserPath = replaceContentsLinkToCodeBrowerPath(project, source); |
225 | 234 |
AutoLinkRenderer autoLinkRenderer = new AutoLinkRenderer(renderWithHighlight(relativeLinksToCodeBrowserPath, true), project); |
226 |
- return autoLinkRenderer.render(); |
|
235 |
+ return autoLinkRenderer.render(null); |
|
227 | 236 |
} |
228 | 237 |
|
229 | 238 |
private static String replaceImageLinkPath(Project project, String text){ |
--- app/views/code/diff.scala.html
+++ app/views/code/diff.scala.html
... | ... | @@ -19,7 +19,7 @@ |
19 | 19 |
|
20 | 20 |
@autoLinkedMsg(msg:String) = @{ |
21 | 21 |
val autoLinkRenderer = new AutoLinkRenderer(msg, project) |
22 |
- autoLinkRenderer.render() |
|
22 |
+ autoLinkRenderer.render(null) |
|
23 | 23 |
} |
24 | 24 |
|
25 | 25 |
@projectLayout(Messages("code.commits") + " @" + commit.getId, project, utils.MenuType.CODE) { |
--- app/views/code/history.scala.html
+++ app/views/code/history.scala.html
... | ... | @@ -18,7 +18,7 @@ |
18 | 18 |
|
19 | 19 |
@autoLinkedMsg(msg:String) = @{ |
20 | 20 |
val autoLinkRenderer = new AutoLinkRenderer(msg, project) |
21 |
- autoLinkRenderer.render() |
|
21 |
+ autoLinkRenderer.render(null) |
|
22 | 22 |
} |
23 | 23 |
|
24 | 24 |
@getFilesURL = @{ |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?