
Sync 'next' with v0.5.6
Reviewed-by: Suwon Chae
@f1fd23605669fee35ca74cb55f4574172966661f
--- README.md
+++ README.md
... | ... | @@ -2,31 +2,35 @@ |
2 | 2 |
[[한국어]](#korean) |
3 | 3 |
Yobi |
4 | 4 |
======= |
5 |
-[](https://travis-ci.org/nforge/yobi) |
|
5 |
+[](https://travis-ci.org/naver/yobi) |
|
6 | 6 |
|
7 |
- |
|
8 |
-Yobi, collaborative SW development platform.<br/> |
|
7 |
+Yobi is a web-based project hosting software. |
|
9 | 8 |
|
10 | 9 |
|
11 | 10 |
What is Yobi? |
12 | 11 |
-- |
13 | 12 |
|
14 |
-Yobi, a brand new version of nFORGE, is a web-based collaborative platform for software development. |
|
15 |
-Yobi offers many features to increase productivity and quality of your software: a issue tracker to manage bugs and issue, a wiki style board to share documents, a configuration management tool to control software version and so on. |
|
13 |
+Yobi is a web-based project hosting software. |
|
14 |
+To increase productivity and quality of your software Yobi offers many features including |
|
15 |
+ |
|
16 |
+- Issue tracker to manage bugs and issues |
|
17 |
+- Bulletin board to share documents |
|
18 |
+- Git/SVN support embedded |
|
19 |
+- Pull-request for collaborative coding |
|
16 | 20 |
|
17 | 21 |
License |
18 | 22 |
-- |
19 |
-Copyright 2014 NAVER Corp, under the Apache 2.0 license. |
|
23 |
+Copyright 2014 NAVER Corp. under the Apache License, Version 2.0 |
|
20 | 24 |
|
21 |
-## Installation |
|
25 |
+## How to install |
|
22 | 26 |
|
23 |
-### check java version |
|
27 |
+### Check java version |
|
24 | 28 |
|
25 | 29 |
java -version |
26 | 30 |
|
27 |
-Required minimum java version is 7(1.7) |
|
31 |
+Java version 7(1.7) or above is required. |
|
28 | 32 |
|
29 |
-### download playframework |
|
33 |
+### Download playframework |
|
30 | 34 |
|
31 | 35 |
curl -O http://downloads.typesafe.com/play/2.1.0/play-2.1.0.zip |
32 | 36 |
|
... | ... | @@ -38,30 +42,36 @@ |
38 | 42 |
|
39 | 43 |
http://downloads.typesafe.com/play/2.1.0/play-2.1.0.zip |
40 | 44 |
|
41 |
-### unzip |
|
45 |
+### Unzip |
|
42 | 46 |
|
43 | 47 |
unzip play-2.1.0.zip |
44 | 48 |
|
45 |
-### cd to unzipped directory |
|
49 |
+### Change directory to unzipped directory |
|
46 | 50 |
|
47 | 51 |
cd play-2.1.0 |
48 | 52 |
|
49 |
-### download yobi |
|
53 |
+### Download Yobi |
|
50 | 54 |
|
51 |
- git clone https://github.com/nforge/yobi.git -b maint yobi |
|
55 |
+Case1. using [git client](http://git-scm.com/) (recommended) |
|
56 |
+ |
|
57 |
+ git clone https://github.com/naver/yobi.git |
|
52 | 58 |
|
53 |
-**You can change branch to master or an other branch. But never install master or an other branch a production server.** |
|
59 |
+or |
|
54 | 60 |
|
61 |
+Case2. Just download latest stable release |
|
62 |
+If you want to download one of the stable releases, you can download a compressed file by clicking the URL below. And then name it a yobi and unzip it. |
|
55 | 63 |
|
56 |
-You can also make your own yobi directory in any other place. But in that case, you should add playframework home path to $PATH environment. |
|
64 |
+ https://github.com/naver/yobi/archive/master.zip |
|
65 |
+ |
|
66 |
+**Caution! in case2, You might come across troubles when you try to upgrade Yobi.** |
|
57 | 67 |
|
68 |
+> You can locate your own Yobi directory in any other place. Please note that you must add playframework home path to $PATH environment in that case. |
|
58 | 69 |
|
59 |
-### cd to cloned yobi directory |
|
70 |
+### Change directory to cloned Yobi directory (or cd to your unzipped file directory) |
|
60 | 71 |
|
61 | 72 |
cd yobi |
62 | 73 |
|
63 |
- |
|
64 |
-### run play framework |
|
74 |
+### Run play framework |
|
65 | 75 |
|
66 | 76 |
../play |
67 | 77 |
|
... | ... | @@ -72,28 +82,48 @@ |
72 | 82 |
Required files will be download automatically. In the first time, it may take about 10 min or more. |
73 | 83 |
|
74 | 84 |
|
75 |
-### type start command in console |
|
85 |
+### Type start command in console |
|
76 | 86 |
|
77 | 87 |
start -DapplyEvolutions.default=true -Dhttp.port=9000 |
78 | 88 |
|
79 | 89 |
It will downloaded addtional files and compile sources. |
80 | 90 |
|
81 |
-If you want to run yobi in development mode, use **run**. You can see more detailed errors and can use dynamic compilation. |
|
91 |
+If you want to run Yobi in development mode, use **run**. You can see more detailed errors and can use dynamic compilation. |
|
82 | 92 |
|
83 | 93 |
Also, you can configure start options. |
84 | 94 |
If your system's memory is over than 4G, we recommend to use follow options. |
85 | 95 |
|
86 |
- |
|
87 | 96 |
_JAVA_OPTIONS="-Xmx2048m -Xms1024m" play "start -DapplyEvolutions.default=true -Dhttp.port=9000" |
88 | 97 |
|
89 |
- |
|
90 |
-### connect with browser |
|
98 |
+### Connect with browser |
|
91 | 99 |
|
92 | 100 |
http://127.0.0.1:9000 |
93 | 101 |
|
94 | 102 |
If you want to change port, check your permission to use 80 port |
95 | 103 |
|
96 |
-see [http://www.playframework.com/documentation/2.1.1/Production](http://www.playframework.com/documentation/2.1.1/Production) |
|
104 |
+See [http://www.playframework.com/documentation/2.1.1/Production](http://www.playframework.com/documentation/2.1.1/Production) |
|
105 |
+ |
|
106 |
+### Upgrade Yobi |
|
107 |
+ |
|
108 |
+Case1. using git client (recommended) |
|
109 |
+In installed directory, just type git update command. |
|
110 |
+ |
|
111 |
+ git pull https://github.com/naver/yobi.git master |
|
112 |
+ |
|
113 |
+Case2. download zip file |
|
114 |
+ |
|
115 |
+In installed directory, download latest release file and unzip it. |
|
116 |
+ |
|
117 |
+ https://github.com/naver/yobi/archive/master.zip |
|
118 |
+ |
|
119 |
+** Be careful! Don't overwrite or delete `yobi.h2.db` file, `repo` & `uploads` directory! ** |
|
120 |
+ |
|
121 |
+### Backup |
|
122 |
+ |
|
123 |
+Copy the below file and directories to another place. |
|
124 |
+ |
|
125 |
+ file: yobi.h2.db |
|
126 |
+ directory: repo, uploads |
|
97 | 127 |
|
98 | 128 |
<br/> |
99 | 129 |
<br/> |
... | ... | @@ -112,10 +142,17 @@ |
112 | 142 |
|
113 | 143 |
Yobi 소개 |
114 | 144 |
-- |
115 |
-Yobi (구 nFORGE)는 소프트웨어 개발에 필요한 기능들을 사용하기 편리하게 웹으로 묶은 협업 개발 플랫폼입니다. 버그나 이슈을 관리할 수 있는 이슈 트래커, 각종 문서와 정보를 간편하게 공유할 수 있는 게시판, 소스코드의 변경내역을 편리하게 관리할 수 있는 형상관리 툴을 비롯하여 팀 개발을 위한 다양한 기능을 포함하고 있습니다. |
|
145 |
+Yobi (구 nFORGE)는 협업 개발을 위한 프로젝트 호스팅 SW입니다. |
|
146 |
+ |
|
147 |
+- 버그나 이슈을 관리할 수 있는 이슈 트래커 |
|
148 |
+- 각종 문서와 정보를 간편하게 공유할 수 있는 게시판 |
|
149 |
+- 소스코드의 변경내역을 편리하게 관리할 수 있는 형상관리 도구 git/svn 기본 내장 |
|
150 |
+- 협업개발을 위한 코드 주고받기 |
|
151 |
+ |
|
152 |
+등을 비롯하여 팀 개발을 위한 다양한 기능을 포함하고 있습니다. |
|
116 | 153 |
|
117 | 154 |
|
118 |
-라이센스 |
|
155 |
+라이선스 |
|
119 | 156 |
-- |
120 | 157 |
Yobi는 Apache 2.0 라이선스로 제공됩니다. |
121 | 158 |
|
... | ... | @@ -148,13 +185,22 @@ |
148 | 185 |
|
149 | 186 |
cd play-2.1.0 |
150 | 187 |
|
151 |
-### yobi 소스 내려 받기 |
|
188 |
+### Yobi 소스 내려 받기 |
|
152 | 189 |
|
153 |
- git clone https://github.com/nforge/yobi.git -b maint yobi |
|
190 |
+case1. [git 클라이언트](http://git-scm.com)를 이용한 다운로드 (추천) |
|
191 |
+ |
|
192 |
+ git clone https://github.com/naver/yobi.git |
|
193 |
+ |
|
194 |
+case2. 단순히 최신 안정버전을 내려받고자 할 때는 아래 링크를 이용해서 압축파일을 내려받은 다음 yobi를 폴더이름으로해서 해제합니다. |
|
154 | 195 |
|
155 |
-**Production Server 에 설치하시는 경우 반드시 `maint` branch 를 사용하거나 최신 realese 버전을 사용하시기 바랍니다.** |
|
196 |
+ https://github.com/naver/yobi/archive/master.zip |
|
197 |
+ |
|
198 |
+주의! case2의 경우, 업그레이드를 할 때 문제가 생길 수 있습니다. |
|
156 | 199 |
|
157 |
-### clone 받은 yobi 디렉터리로 이동 |
|
200 |
+> 임의의 장소에 Yobi 디렉터리를 위치시킬 경우에는 play 실행파일이 있는 playframework 디렉터리를 $PATH 환경변수에 추가해 주세요. |
|
201 |
+ |
|
202 |
+### clone 받은 Yobi 디렉터리로 이동 |
|
203 |
+(혹은 압축을 해제한 디렉터리로 이동) |
|
158 | 204 |
|
159 | 205 |
cd yobi |
160 | 206 |
|
... | ... | @@ -178,9 +224,8 @@ |
178 | 224 |
시작 옵션은 조정가능합니다. 만약 시스템 메모리가 4기가 이상이라면 |
179 | 225 |
아래 옵션으로 실행하는걸 권장합니다. |
180 | 226 |
|
181 |
- |
|
182 | 227 |
_JAVA_OPTIONS="-Xmx2048m -Xms1024m" play "start -DapplyEvolutions.default=true -Dhttp.port=9000" |
183 |
- |
|
228 |
+ |
|
184 | 229 |
|
185 | 230 |
### 브라우저로 접속 |
186 | 231 |
|
... | ... | @@ -188,3 +233,26 @@ |
188 | 233 |
|
189 | 234 |
80 포트 등으로 포트를 변경하고 싶을 경우에는 해당 포트가 사용가능한지 확인 한 다음 80 포트를 사용할 수 있는 계정으로 실행합니다. |
190 | 235 |
관련해서는 [http://www.playframework.com/documentation/2.1.1/Production](http://www.playframework.com/documentation/2.1.1/Production) 부분을 확인해 주세요. |
236 |
+ |
|
237 |
+### 업그레이드 하기 |
|
238 |
+ |
|
239 |
+case1. git 클라이언트를 이용 (추천) |
|
240 |
+설치된 디렉터리에서, 아래와 같은 git 명령어를 이용합니다 |
|
241 |
+ |
|
242 |
+ git pull https://github.com/naver/yobi.git master |
|
243 |
+ |
|
244 |
+case2. 압축파일을 내려받을 경우 |
|
245 |
+ |
|
246 |
+설치된 디렉터리에서, 최신 릴리즈의 압축파일을 내려받아 Yobi가 설치된 디렉터리에 압축파일을 풉니다. |
|
247 |
+ |
|
248 |
+ https://github.com/naver/yobi/archive/master.zip |
|
249 |
+ |
|
250 |
+**주의사항! `yobi.h2.db` 파일, `repo`와 `uploads` 디렉터리를 삭제하거나 덮어쓰지 않도록 주의하세요!** |
|
251 |
+ |
|
252 |
+ |
|
253 |
+### 백업하기 |
|
254 |
+ |
|
255 |
+특별히 외부 DB를 사용하지 않는다면 아래 내용을 잘 백업해서 보관해 주시면 됩니다. |
|
256 |
+ |
|
257 |
+ file: yobi.h2.db |
|
258 |
+ directory: repo, uploads |
--- app/models/CodeCommentThread.java
+++ app/models/CodeCommentThread.java
... | ... | @@ -30,6 +30,7 @@ |
30 | 30 |
|
31 | 31 |
import java.io.IOException; |
32 | 32 |
import org.eclipse.jgit.api.errors.GitAPIException; |
33 |
+import org.eclipse.jgit.errors.MissingObjectException; |
|
33 | 34 |
import org.eclipse.jgit.lib.Repository; |
34 | 35 |
|
35 | 36 |
import static models.CodeRange.Side; |
... | ... | @@ -103,17 +104,22 @@ |
103 | 104 |
|
104 | 105 |
Repository mergedRepository = pullRequest.getMergedRepository(); |
105 | 106 |
|
106 |
- if (StringUtils.isNotEmpty(prevCommitId)) { |
|
107 |
+ try { |
|
108 |
+ if (StringUtils.isNotEmpty(prevCommitId)) { |
|
109 |
+ _isOutdated = !PullRequest.noChangesBetween(mergedRepository, |
|
110 |
+ pullRequest.mergedCommitIdFrom, mergedRepository, prevCommitId, path); |
|
111 |
+ } |
|
112 |
+ |
|
113 |
+ if (_isOutdated) { |
|
114 |
+ return _isOutdated; |
|
115 |
+ } |
|
116 |
+ |
|
107 | 117 |
_isOutdated = !PullRequest.noChangesBetween(mergedRepository, |
108 |
- pullRequest.mergedCommitIdFrom, mergedRepository, prevCommitId, path); |
|
118 |
+ pullRequest.mergedCommitIdTo, mergedRepository, commitId, path); |
|
119 |
+ } catch (MissingObjectException e) { |
|
120 |
+ play.Logger.warn("Possible false positive of outdated detection because of missing git object: " + e.getMessage()); |
|
121 |
+ return true; |
|
109 | 122 |
} |
110 |
- |
|
111 |
- if (_isOutdated) { |
|
112 |
- return _isOutdated; |
|
113 |
- } |
|
114 |
- |
|
115 |
- _isOutdated = !PullRequest.noChangesBetween(mergedRepository, |
|
116 |
- pullRequest.mergedCommitIdTo, mergedRepository, commitId, path); |
|
117 | 123 |
|
118 | 124 |
return _isOutdated; |
119 | 125 |
} |
--- app/playRepository/RepositoryService.java
+++ app/playRepository/RepositoryService.java
... | ... | @@ -200,13 +200,13 @@ |
200 | 200 |
packetLineOut.end(); |
201 | 201 |
PacketLineOutRefAdvertiser packetLineOutRefAdvertiser = new PacketLineOutRefAdvertiser(packetLineOut); |
202 | 202 |
|
203 |
- Repository repository = GitRepository.buildGitRepository(project); |
|
204 |
- |
|
205 | 203 |
if (service.equals("git-upload-pack")) { |
204 |
+ Repository repository = GitRepository.buildGitRepository(project); |
|
206 | 205 |
UploadPack uploadPack = new UploadPack(repository); |
207 | 206 |
uploadPack.setBiDirectionalPipe(false); |
208 | 207 |
uploadPack.sendAdvertisedRefs(packetLineOutRefAdvertiser); |
209 | 208 |
} else if (service.equals("git-receive-pack")) { |
209 |
+ Repository repository = GitRepository.buildGitRepository(project, false); |
|
210 | 210 |
ReceivePack receivePack = new ReceivePack(repository); |
211 | 211 |
receivePack.sendAdvertisedRefs(packetLineOutRefAdvertiser); |
212 | 212 |
} |
--- conf/application.conf.default
+++ conf/application.conf.default
... | ... | @@ -84,7 +84,7 @@ |
84 | 84 |
# application.port="8080" |
85 | 85 |
|
86 | 86 |
# Application feedback url at top layout menu. You can remove feedback menu by commenting it. |
87 |
-application.feedback.url="https://github.com/nforge/yobi/issues" |
|
87 |
+application.feedback.url="https://github.com/naver/yobi/issues" |
|
88 | 88 |
|
89 | 89 |
# Mailer |
90 | 90 |
# ~~~~~~ |
+++ conf/evolutions/default/80.sql
... | ... | @@ -0,0 +1,32 @@ |
1 | +# --- !Ups | |
2 | + | |
3 | +UPDATE user_project_notification | |
4 | +SET notification_type = 'PULL_REQUEST_REVIEW_STATE_CHANGED', allowed = 'TRUE' | |
5 | +WHERE notification_type IN ('PULL_REQUEST_REVIEWED', 'PULL_REQUEST_UNREVIEWED'); | |
6 | + | |
7 | +DELETE | |
8 | +FROM user_project_notification | |
9 | +WHERE id NOT IN | |
10 | +( | |
11 | + SELECT MIN(id) | |
12 | + FROM user_project_notification | |
13 | + GROUP BY user_id, project_id, notification_type | |
14 | +); | |
15 | + | |
16 | + | |
17 | +# --- !Downs | |
18 | + | |
19 | +INSERT INTO user_project_notification(id, user_id, project_id, notification_type, allowed) | |
20 | +SELECT nextval('user_project_notification_seq'), user_id, project_id, 'PULL_REQUEST_REVIEWED', 'TRUE' | |
21 | +FROM (SELECT user_id, project_id | |
22 | + FROM user_project_notification | |
23 | + WHERE notification_type = 'PULL_REQUEST_REVIEW_STATE_CHANGED'); | |
24 | + | |
25 | +INSERT INTO user_project_notification(id, user_id, project_id, notification_type, allowed) | |
26 | +SELECT nextval('user_project_notification_seq'), user_id, project_id, 'PULL_REQUEST_UNREVIEWED', 'TRUE' | |
27 | +FROM (SELECT user_id, project_id | |
28 | + FROM user_project_notification | |
29 | + WHERE notification_type = 'PULL_REQUEST_REVIEW_STATE_CHANGED'); | |
30 | + | |
31 | +DELETE FROM user_project_notification | |
32 | +WHERE notification_type = 'PULL_REQUEST_REVIEW_STATE_CHANGED'; |
--- conf/messages
+++ conf/messages
... | ... | @@ -130,6 +130,7 @@ |
130 | 130 |
common.attach.pastehere = Paste the clipboard image |
131 | 131 |
common.attachment= Attachment |
132 | 132 |
common.comment = Comment |
133 |
+common.comment.beforeunload.confirm = Would you like to exit this page without submitting comment? |
|
133 | 134 |
common.comment.delete = Delete comment |
134 | 135 |
common.comment.delete.confirm = Once you delete this comment, you won''t be able to recover it. Are you sure you want to delete this comment? |
135 | 136 |
common.comment.edit = Edit comment |
--- conf/messages.ja
+++ conf/messages.ja
... | ... | @@ -109,6 +109,7 @@ |
109 | 109 |
common.attach.pastehere = . クリップボードからの画像を貼り付けることもできます。 |
110 | 110 |
common.attachment= 添付ファイル |
111 | 111 |
common.comment = コメント |
112 |
+common.comment.beforeunload.confirm = コメントを投稿しないままこのページから脱しますか? |
|
112 | 113 |
common.experimental = 実験的な機能 |
113 | 114 |
common.experimental.description = それは機能の変更、開発の中断などの可能性がいつもあるという意味です。<br>温かい目で見守ってください。 |
114 | 115 |
common.experimental.title = 実験的な機能:この機能は開発中です |
--- conf/messages.ko
+++ conf/messages.ko
... | ... | @@ -130,6 +130,7 @@ |
130 | 130 |
common.attach.pastehere = . 클립보드 이미지를 붙여 넣을 수도 있습니다 |
131 | 131 |
common.attachment = 첨부파일 |
132 | 132 |
common.comment = 댓글 |
133 |
+common.comment.beforeunload.confirm = 입력 중인 댓글이 있습니다. 저장하지 않은 채로 다른 페이지로 이동하시겠습니까? |
|
133 | 134 |
common.comment.delete = 댓글 삭제 |
134 | 135 |
common.comment.delete.confirm = 해당 댓글이 삭제되면 영원히 복구할 수 없습니다. 그래도 삭제하시겠습니까? |
135 | 136 |
common.comment.edit = 댓글 수정 |
... | ... | @@ -215,7 +216,7 @@ |
215 | 216 |
issue.createdDate = 작성일 |
216 | 217 |
issue.delete = 이슈 삭제 |
217 | 218 |
issue.downloadAsExcel = 엑셀파일로 다운받기 |
218 |
-issue.error.beforeunload = 아직 이슈를 저장하지 않았습니다. 저장하지 않은 채로 다른 페이지로 가시겠어요? |
|
219 |
+issue.error.beforeunload = 아직 이슈를 저장하지 않았습니다. 저장하지 않은 채로 다른 페이지로 이동하시겠습니까? |
|
219 | 220 |
issue.error.emptyBody = 이슈 내용을 입력해주세요 |
220 | 221 |
issue.error.emptyTitle = 이슈 제목을 입력해주세요 |
221 | 222 |
issue.event.assigned = {0}님이 {1}님을 이 이슈의 담당자로 지정하였습니다. |
... | ... | @@ -386,7 +387,7 @@ |
386 | 387 |
post.comment.empty = 댓글 내용은 반드시 입력해야 합니다. |
387 | 388 |
post.createdDate = 작성일 |
388 | 389 |
post.delete.confirm = 해당 게시물이 삭제되면 영원히 복구할 수 없습니다. 그래도 삭제하시겠습니까? |
389 |
-post.error.beforeunload = 아직 글을 저장하지 않았습니다. 저장하지 않은 채로 다른 페이지로 가시겠어요? |
|
390 |
+post.error.beforeunload = 아직 글을 저장하지 않았습니다. 저장하지 않은 채로 다른 페이지로 이동하시겠습니까? |
|
390 | 391 |
post.error.emptyBody = 글 내용을 입력해주세요 |
391 | 392 |
post.error.emptyTitle = 글 제목을 입력해주세요 |
392 | 393 |
post.is.empty = 등록된 게시물이 없습니다. |
--- conf/version.conf
+++ conf/version.conf
... | ... | @@ -1,1 +1,1 @@ |
1 |
-app.version="0.5.5" |
|
1 |
+app.version="0.5.6" |
+++ docs/ko/relnotes/0.5.6.txt
... | ... | @@ -0,0 +1,38 @@ |
1 | +Yobi v0.5.6 릴리즈 노트 | |
2 | +======================= | |
3 | + | |
4 | +v0.5.5 이후 변경점 | |
5 | +------------------ | |
6 | + | |
7 | +UI/UX | |
8 | + | |
9 | +* 프로젝트 멤버 추가 UI 변경 | |
10 | +* 프로젝트 멤버 목록에서 프로젝트 멤버 탈퇴 위치를 하단으로 | |
11 | +* 로그인 폼 변경 (AJAX 적용) | |
12 | +* 지켜보기 버튼에서 눌림 효과 제거 | |
13 | +* 프로젝트나 멤버를 추가하는 폼에서 로그인 아이디를 반드시 입력하도록 요구 | |
14 | +* 403 Forbidden 화면을 보여줄때 로그인 버튼을 표시하도록 변경 | |
15 | +* 로그인 하지 않은 사용자가 댓글이나 공감 버튼을 누를때 로그인 창을 표시하도록 변경 | |
16 | +* 댓글 입력도중 화면이동을 하게 되면 경고 메시지를 보여줌 | |
17 | + | |
18 | +기타 | |
19 | + | |
20 | +* Ace 에디터 버전업 (v1.1.3) | |
21 | +* 사이트 메인이 좀 더 빨라짐 | |
22 | +* 첨부파일 삭제가 실패하면 로그에 남기도록 변경 | |
23 | +* README에 설명이 추가되었습니다. | |
24 | + | |
25 | +v0.5.5 이후 버그수정 | |
26 | +-------------------- | |
27 | + | |
28 | +* 리뷰 테이블에서 일부 컬럼이 존재하지 않아서 발생하던 SqlException 문제 | |
29 | +* 요청에 Accept 헤더가 없는 경우 NPE(Null Pointer Exception)가 발생하는 문제 | |
30 | +* 이슈 화면에서 닫기 버튼이 정상동작하지 않았던 문제 | |
31 | +* 억세스로그에 응답시간이 비정상적으로 기록되던 문제 | |
32 | +* 코드주고받기: 같은 브랜치에서 코드를 주고 받을때 잘못된 요약 메시지가 출력되던 문제 | |
33 | +* 코멘트 수정시 멘션 기능이 동작 하지 않던 문제 | |
34 | +* 코드 주고받기 수정화면에서 불필요한 도움말이 표시되던 문제 | |
35 | +* 코드 메뉴에서 커밋 날짜 표시가 영역을 벗어나서 줄바꿈이 일어나는 문제 | |
36 | +* 사용자 설정 페이지에서 IllegalArgumentException이 발생할 수 있는 문제 | |
37 | +* Git 저장소에 push 할 때 몇몇 object를 빠뜨릴 수 있는 문제 (08420e5에서 고쳤어야 했는데 빠뜨림) | |
38 | +* 리뷰 목록을 볼 때 MissingObjectException이 발생할 수 있는 문제 |
+++ docs/relnotes/0.5.6.txt
... | ... | @@ -0,0 +1,42 @@ |
1 | +Yobi v0.5.6 Release Notes | |
2 | +========================= | |
3 | + | |
4 | +Updates since v0.5.5 | |
5 | +-------------------- | |
6 | + | |
7 | +UI/UX | |
8 | + | |
9 | +* Adding new project member works with AJAX. | |
10 | +* Leave Project is on the bottom layer of Project Members. | |
11 | +* Login Form works with AJAX. | |
12 | +* Pressed effect is removed from Watching button. | |
13 | +* The forms to add project or organization member requires loginId. | |
14 | +* 403 Forbidden Error Page shows login button. | |
15 | +* Show Login dialog if anonymous clicks comment or vote button. | |
16 | +* Warn user of possible loss of a comment in progress by leaving the editing | |
17 | + page. | |
18 | + | |
19 | +Etc | |
20 | + | |
21 | +* Ace has been upgraded to v1.1.3. | |
22 | +* Listing events in site main is faster. | |
23 | +* Log if deleting of attachment is failed. | |
24 | +* README describes better about Yobi. | |
25 | + | |
26 | +Fixes since v0.5.5 | |
27 | +------------------ | |
28 | + | |
29 | +* SqlException occurred because the 'review_comment' table doesn't have columns | |
30 | + like 'commitId', 'project.id' and 'pullRequest.id'. | |
31 | +* NPE may occur when `Accept` header doesn't exists. | |
32 | +* On issue view, Close Button didn't work. | |
33 | +* In access log, time to taken process a request was incorrect. | |
34 | +* PullRequest: When the sending and receiving branch are same, the summary | |
35 | + message showed wrong messages. 'Safe to Merge' showed "Conflict" even if not | |
36 | + and 'Commits' showed -1 for 0. | |
37 | +* Mention didn't work correctly for comment editing. | |
38 | +* PullRequest Edit form showed unnecessary help. | |
39 | +* The contents of Commit Date column in Code menu might overflow. | |
40 | +* Account Setting page might throw IllegalArgumentException. | |
41 | +* While git pushing, git objects might be omitted. (08420e5 has defect) | |
42 | +* Review List page might throw MissingObjectException. |
--- public/javascripts/common/yobi.CommentForm.js
+++ public/javascripts/common/yobi.CommentForm.js
... | ... | @@ -47,6 +47,7 @@ |
47 | 47 |
function _attachEvent(){ |
48 | 48 |
elements.commentForm.on("submit", onSubmitCommentForm); |
49 | 49 |
$(window).on("keydown", onKeydownWindow); |
50 |
+ $(window).on("beforeunload", onBeforeUnloadWindow); |
|
50 | 51 |
} |
51 | 52 |
|
52 | 53 |
/** |
... | ... | @@ -103,6 +104,17 @@ |
103 | 104 |
} |
104 | 105 |
|
105 | 106 |
/** |
107 |
+ * Handles beforeunload event of window |
|
108 |
+ * In case of commentBody is not empty, show confirm to exit page. |
|
109 |
+ * Browser will shows confirm dialog with returned message string. |
|
110 |
+ */ |
|
111 |
+ function onBeforeUnloadWindow(){ |
|
112 |
+ if(!isCommentBodyEmpty() && !isOnSubmit()){ |
|
113 |
+ return Messages("common.comment.beforeunload.confirm"); |
|
114 |
+ } |
|
115 |
+ } |
|
116 |
+ |
|
117 |
+ /** |
|
106 | 118 |
* Returns whether ESC(keyCode: 27) has pressed from event |
107 | 119 |
* |
108 | 120 |
* @param weEvt |
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?