
user: Fix avatarUrl to support application.context
application.context should be taken into account while computing the url to user's avatar.
@52708aa292e41138835f9b03b3175f338ba4cd58
--- app/controllers/ProjectApp.java
+++ app/controllers/ProjectApp.java
... | ... | @@ -645,7 +645,7 @@ |
645 | 645 |
if(!user.loginId.equals(Constants.ADMIN_LOGIN_ID) && user != null){ |
646 | 646 |
projectUserMap.put("username", user.loginId); |
647 | 647 |
projectUserMap.put("name", user.name); |
648 |
- projectUserMap.put("image", user.avatarUrl); |
|
648 |
+ projectUserMap.put("image", user.avatarUrl()); |
|
649 | 649 |
users.add(projectUserMap); |
650 | 650 |
} |
651 | 651 |
} |
--- app/controllers/UserApp.java
+++ app/controllers/UserApp.java
... | ... | @@ -57,7 +57,8 @@ |
57 | 57 |
public static final String SESSION_USERNAME = "userName"; |
58 | 58 |
public static final String TOKEN = "yobi.token"; |
59 | 59 |
public static final int MAX_AGE = 30*24*60*60; |
60 |
- public static final String DEFAULT_AVATAR_URL = "/assets/images/default-avatar-128.png"; |
|
60 |
+ public static final String DEFAULT_AVATAR_URL |
|
61 |
+ = routes.Assets.at("images/default-avatar-128.png").url(); |
|
61 | 62 |
public static final int MAX_FETCH_USERS = 1000; |
62 | 63 |
private static final int HASH_ITERATIONS = 1024; |
63 | 64 |
public static final int DAYS_AGO = 7; |
... | ... | @@ -509,7 +510,6 @@ |
509 | 510 |
if (primary.equals("image")) { |
510 | 511 |
Attachment.deleteAll(currentUser().avatarAsResource()); |
511 | 512 |
attachment.moveTo(currentUser().avatarAsResource()); |
512 |
- user.avatarUrl = routes.AttachmentApp.getFile(attachment.id).url(); |
|
513 | 513 |
} |
514 | 514 |
} |
515 | 515 |
} catch (NumberFormatException e) { |
... | ... | @@ -795,7 +795,6 @@ |
795 | 795 |
RandomNumberGenerator rng = new SecureRandomNumberGenerator(); |
796 | 796 |
user.passwordSalt = rng.nextBytes().getBytes().toString(); |
797 | 797 |
user.password = hashedPassword(user.password, user.passwordSalt); |
798 |
- user.avatarUrl = DEFAULT_AVATAR_URL; |
|
799 | 798 |
User.create(user); |
800 | 799 |
if (isUseSignUpConfirm()) { |
801 | 800 |
user.changeState(UserState.LOCKED); |
--- app/models/History.java
+++ app/models/History.java
... | ... | @@ -213,6 +213,6 @@ |
213 | 213 |
private static void setUserPageUrl(History history, User user) { |
214 | 214 |
history.setWho(user.name); |
215 | 215 |
history.setUserPageUrl("/" + user.loginId); |
216 |
- history.setUserAvatarUrl(user.avatarUrl); |
|
216 |
+ history.setUserAvatarUrl(user.avatarUrl()); |
|
217 | 217 |
} |
218 | 218 |
} |
--- app/models/NullUser.java
+++ app/models/NullUser.java
... | ... | @@ -19,7 +19,6 @@ |
19 | 19 |
this.loginId = ""; |
20 | 20 |
this.email = ""; |
21 | 21 |
this.createdDate = new Date(); |
22 |
- this.avatarUrl = UserApp.DEFAULT_AVATAR_URL; |
|
23 | 22 |
} |
24 | 23 |
|
25 | 24 |
public List<Project> myProjects(){ |
--- app/models/User.java
+++ app/models/User.java
... | ... | @@ -92,10 +92,7 @@ |
92 | 92 |
*/ |
93 | 93 |
@Constraints.Email(message = "user.wrongEmail.alert") |
94 | 94 |
public String email; |
95 |
- /** |
|
96 |
- * 아바타 URL |
|
97 |
- */ |
|
98 |
- public String avatarUrl; |
|
95 |
+ |
|
99 | 96 |
/** |
100 | 97 |
* 로그인 정보를 기억할지 나타내는 값 |
101 | 98 |
*/ |
... | ... | @@ -289,7 +286,11 @@ |
289 | 286 |
@Transient |
290 | 287 |
public Long avatarId(){ |
291 | 288 |
List<Attachment> attachments = Attachment.findByContainer(avatarAsResource()); |
292 |
- return attachments.get(attachments.size()-1).id; |
|
289 |
+ if (attachments.size() > 0) { |
|
290 |
+ return attachments.get(attachments.size()-1).id; |
|
291 |
+ } else { |
|
292 |
+ return null; |
|
293 |
+ } |
|
293 | 294 |
} |
294 | 295 |
|
295 | 296 |
/** |
... | ... | @@ -463,7 +464,6 @@ |
463 | 464 |
password = ""; |
464 | 465 |
passwordSalt = ""; |
465 | 466 |
email = "deleted-" + loginId + "@noreply.yobi.io"; |
466 |
- avatarUrl = UserApp.DEFAULT_AVATAR_URL; |
|
467 | 467 |
rememberMe = false; |
468 | 468 |
projectUser.clear(); |
469 | 469 |
enrolledProjects.clear(); |
... | ... | @@ -476,10 +476,18 @@ |
476 | 476 |
update(); |
477 | 477 |
} |
478 | 478 |
|
479 |
+ public String avatarUrl() { |
|
480 |
+ Long avatarId = avatarId(); |
|
481 |
+ if (avatarId == null) { |
|
482 |
+ return UserApp.DEFAULT_AVATAR_URL; |
|
483 |
+ } else { |
|
484 |
+ return controllers.routes.AttachmentApp.getFile(avatarId).url(); |
|
485 |
+ } |
|
486 |
+ } |
|
487 |
+ |
|
479 | 488 |
public static List<User> findIssueAuthorsByProjectId(long projectId) { |
480 |
- String sql = "select user.id, user.avatar_url, user.name, user.login_id from issue issue, n4user user where issue.author_id = user.id group by issue.author_id"; |
|
489 |
+ String sql = "select user.id, user.name, user.login_id from issue issue, n4user user where issue.author_id = user.id group by issue.author_id"; |
|
481 | 490 |
RawSql rawSql = RawSqlBuilder.parse(sql) |
482 |
- .columnMapping("user.avatar_url", "avatarUrl") |
|
483 | 491 |
.columnMapping("user.login_id", "loginId") |
484 | 492 |
.create(); |
485 | 493 |
|
--- app/playRepository/GitRepository.java
+++ app/playRepository/GitRepository.java
... | ... | @@ -323,10 +323,10 @@ |
323 | 323 |
} |
324 | 324 |
|
325 | 325 |
private String getAvatar(User user) { |
326 |
- if(user.isAnonymous() || user.avatarUrl.equals(UserApp.DEFAULT_AVATAR_URL)) { |
|
326 |
+ if(user.isAnonymous() || user.avatarUrl().equals(UserApp.DEFAULT_AVATAR_URL)) { |
|
327 | 327 |
return GravatarUtil.getAvatar(user.email, 34); |
328 | 328 |
} else { |
329 |
- return user.avatarUrl; |
|
329 |
+ return user.avatarUrl(); |
|
330 | 330 |
} |
331 | 331 |
} |
332 | 332 |
|
--- app/playRepository/SVNRepository.java
+++ app/playRepository/SVNRepository.java
... | ... | @@ -114,11 +114,11 @@ |
114 | 114 |
} |
115 | 115 |
|
116 | 116 |
private static String getAvatar(User user) { |
117 |
- if(user.isAnonymous() || user.avatarUrl.equals(UserApp.DEFAULT_AVATAR_URL)) { |
|
117 |
+ if(user.isAnonymous() || user.avatarUrl().equals(UserApp.DEFAULT_AVATAR_URL)) { |
|
118 | 118 |
String defaultImageUrl = "http://ko.gravatar.com/userimage/53495145/0eaeeb47c620542ad089f17377298af6.png"; |
119 | 119 |
return GravatarUtil.getAvatar(user.email, 34, defaultImageUrl); |
120 | 120 |
} else { |
121 |
- return user.avatarUrl; |
|
121 |
+ return user.avatarUrl(); |
|
122 | 122 |
} |
123 | 123 |
} |
124 | 124 |
|
--- app/utils/TemplateHelper.scala
+++ app/utils/TemplateHelper.scala
... | ... | @@ -174,7 +174,7 @@ |
174 | 174 |
def getUserAvatar(user: models.User, avatarSize:String = "small") = { |
175 | 175 |
var userInfoURL = routes.UserApp.userInfo(user.loginId).toString(); |
176 | 176 |
|
177 |
- "<a href=\"" + userInfoURL + "\" class=\"usf-group\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"" + user.name + "\"><img src=\"" + user.avatarUrl + "\" class=\"avatar-wrap " + avatarSize + "\"></a>" |
|
177 |
+ "<a href=\"" + userInfoURL + "\" class=\"usf-group\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"" + user.name + "\"><img src=\"" + user.avatarUrl + "\" class=\"avatar-wrap " + avatarSize + "\"></a>" |
|
178 | 178 |
} |
179 | 179 |
|
180 | 180 |
object DiffRenderer { |
+++ conf/evolutions/default/51.sql
... | ... | @@ -0,0 +1,7 @@ |
1 | +# --- !Ups | |
2 | + | |
3 | +ALTER TABLE pull_request_comment DROP COLUMN IF EXISTS avatar_url; | |
4 | + | |
5 | +# --- !Downs | |
6 | + | |
7 | +ALTER TABLE pull_request_comment ADD COLUMN avatar_url varchar(255); |
--- conf/initial-data.yml
+++ conf/initial-data.yml
... | ... | @@ -6,7 +6,6 @@ |
6 | 6 |
password: 5v4TVjzLo1bqullT1CU4/bENUNOUfX97WpdunGLvJvw= |
7 | 7 |
passwordSalt: '[B@1032a4' |
8 | 8 |
email: admin@nhn.com |
9 |
- avatarUrl: /assets/images/default-avatar-128.png |
|
10 | 9 |
createdDate: 2012-11-01 08:00:00 |
11 | 10 |
|
12 | 11 |
siteAdmins: |
--- conf/test-data.yml
+++ conf/test-data.yml
... | ... | @@ -6,7 +6,6 @@ |
6 | 6 |
password: ys9gr1Xet/DL9RpmgczOlJg+txPvqnZCaw/z55gb0KU= |
7 | 7 |
passwordSalt: '[B@1032a4' |
8 | 8 |
email: yobi@yobi.io |
9 |
- avatarUrl: /assets/images/default-avatar-128.png |
|
10 | 9 |
createdDate: 2012-12-01 08:00:00 |
11 | 10 |
- !!models.User |
12 | 11 |
name: Jihan |
... | ... | @@ -14,7 +13,6 @@ |
14 | 13 |
password: v1O5ggs2TqM0prM1pLUD/zC+g7cavbWMXayVA9pvGHY= |
15 | 14 |
passwordSalt: '[B@1032a4' |
16 | 15 |
email: laziel@naver.com |
17 |
- avatarUrl: /assets/images/default-avatar-128.png |
|
18 | 16 |
createdDate: 2012-01-01 08:00:00 |
19 | 17 |
- !!models.User |
20 | 18 |
name: suwon |
... | ... | @@ -22,7 +20,6 @@ |
22 | 20 |
password: rB5DBMe0hxMWs5FlQOJi5GmK+wj2Txx09MdgFqH83+k= |
23 | 21 |
passwordSalt: '[B@1032a4' |
24 | 22 |
email: doortts@gmail.com |
25 |
- avatarUrl: /assets/images/default-avatar-128.png |
|
26 | 23 |
createdDate: 2012-07-01 08:00:00 |
27 | 24 |
- !!models.User |
28 | 25 |
name: eungjun |
... | ... | @@ -30,7 +27,6 @@ |
30 | 27 |
password: yOF0X0iKA1MVkaAJESNcdGE1n/3SWM8vDOKRYCXV2E0= |
31 | 28 |
passwordSalt: '[B@1032a4' |
32 | 29 |
email: ejlee@nhn.com |
33 |
- avatarUrl: /assets/images/default-avatar-128.png |
|
34 | 30 |
createdDate: 2012-05-01 08:00:00 |
35 | 31 |
- !!models.User |
36 | 32 |
name: wansoon |
... | ... | @@ -38,7 +34,6 @@ |
38 | 34 |
password: 2OZ+qhPn9UJ7GffhbfO5gctuUMWI8jUf2YFdAMH73G8= |
39 | 35 |
passwordSalt: '[B@737aa47f' |
40 | 36 |
email: alecsiel@nhn.com |
41 |
- avatarUrl: /assets/images/default-avatar-128.png |
|
42 | 37 |
createdDate: 2013-11-18 13:30:00 |
43 | 38 |
|
44 | 39 |
# Projects |
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?