Jihan Kim 2014-02-04
Show proper error messages
@229c87dcbf5bb4bed3111583309804a33285e1cc
conf/messages
--- conf/messages
+++ conf/messages
@@ -110,7 +110,8 @@
 common.attach.clickToPost = Click to post
 common.attach.clickbutton = click Upload button
 common.attach.drophere = Drop files here or
-common.attach.error = Upload failed as<br>{1} ({0})
+common.attach.error.upload = Upload failed as<br>{1} ({0})
+common.attach.error.delete = Failed to delete file.<br>{1} ({0})
 common.attach.pastehere = , or pasting from the clipboard.
 common.attachment= Attachment
 common.comment = Comment
@@ -170,6 +171,7 @@
 error.unauthorized = Login required
 error.validation = Input validation check error
 error.wrong.format = Wrong format
+error.failedTo = Failed to {0}<br>({1} {2})
 fork = Fork
 fork.already.exist = There is already forked the same project.
 fork.failed = Failed to fork the project.
@@ -439,6 +441,7 @@
 pullRequest.delete.frombranch.message = can be deleted.
 pullRequest.diff.noChanges = There are no changes.
 pullRequest.duplicated = There is already duplicated pull request.
+pullRequest.error.newPullRequestForm = Invalid project or branch<br>({0} {1})
 pullRequest.event.closed = Closed
 pullRequest.event.commit = commited
 pullRequest.event.conflict = Conflicts
conf/messages.ja
--- conf/messages.ja
+++ conf/messages.ja
@@ -109,7 +109,8 @@
 common.attach.clickToPost = 本文に入れる
 common.attach.clickbutton = ボタンで選んでください
 common.attach.drophere = アップロードするファイルをドラッグしたり
-common.attach.error = アップロードに失敗しました。<br>{1} ({0})
+common.attach.error.upload = アップロードに失敗しました。<br>{1} ({0})
+common.attach.error.delete = 削除に失敗しました。<br>{1} ({0})
 common.attach.pastehere = . クリップボードからの画像を貼り付けることもできます。
 common.attachment= 添付ファイル
 common.comment = コメント
conf/messages.ko
--- conf/messages.ko
+++ conf/messages.ko
@@ -110,7 +110,8 @@
 common.attach.clickToPost = 본문에 넣기
 common.attach.clickbutton = 버튼을 클릭해서 선택하세요
 common.attach.drophere = 첨부할 파일을 끌어다 놓거나
-common.attach.error = 파일 첨부에 실패했습니다.<br>{1} ({0})
+common.attach.error.upload = 파일 첨부에 실패했습니다.<br>{1} ({0})
+common.attach.error.delete = 파일 삭제에 실패했습니다.<br>{1} ({0})
 common.attach.pastehere = . 클립보드 이미지를 붙여 넣을 수도 있습니다
 common.attachment = 첨부파일
 common.comment = 댓글
@@ -170,6 +171,7 @@
 error.unauthorized = 로그인 해야 합니다
 error.validation = 입력값 유효성검사 오류
 error.wrong.format = 잘못된 형식의 값 입니다.
+error.failedTo = {0}에 실패했습니다.<br>({1} {2})
 fork = 프로젝트 복사
 fork.already.exist = 동일한 원본 프로젝트를 복사한 프로젝트가 있습니다.
 fork.failed = 프로젝트를 복사하지 못했습니다.
@@ -440,6 +442,7 @@
 pullRequest.delete.frombranch.message = 브랜치를 삭제할 수 있습니다.
 pullRequest.diff.noChanges = 변경 내역이 없습니다.
 pullRequest.duplicated = 코드를 주고받는 브랜치가 현재 열려있는 코드 요청과 같습니다. 다른 브랜치를 선택하세요.
+pullRequest.error.newPullRequestForm = 코드를 보낼 수 없는 프로젝트 또는 브랜치입니다<br>({0} {1})
 pullRequest.event.closed = 닫힘
 pullRequest.event.commit = 커밋
 pullRequest.event.conflict = 충돌
public/javascripts/common/yobi.Attachments.js
--- public/javascripts/common/yobi.Attachments.js
+++ public/javascripts/common/yobi.Attachments.js
@@ -345,7 +345,7 @@
             htElements.welFileListHelp.hide();
         }
 
-        $yobi.notify(Messages("common.attach.error", htData.oRes.status, htData.oRes.statusText));
+        $yobi.notify(Messages("common.attach.error.upload", htData.oRes.status, htData.oRes.statusText));
         _clearLinkInTextarea(_getTempLinkText(htData.nSubmitId + ".png"));
     }
 
@@ -389,8 +389,8 @@
                     htElements.welFileListHelp.hide();
                 }
             },
-            "fOnError": function(){
-                $yobi.alert(Messages("error.internalServerError"));
+            "fOnError": function(oRes){
+                $yobi.notify(Messages("common.attach.error.delete", oRes.status, oRes.statusText));
             }
        });
     }
public/javascripts/service/yobi.git.Write.js
--- public/javascripts/service/yobi.git.Write.js
+++ public/javascripts/service/yobi.git.Write.js
@@ -97,14 +97,20 @@
             htVar.htUserInput[sInputId] = true;
         }
 
-        function _refreshNewPullRequestForm() {
+        /**
+         * 프로젝트 선택이 바뀌면 페이지를 새로고침
+         *
+         * @private
+         */
+        function _refreshNewPullRequestForm(){
             var htData = {};
 
             htData.fromProjectId = htVar.oFromProject.getValue();
             htData.toProjectId = htVar.oToProject.getValue();
 
-            location.href = htVar.sFormURL + "?fromProjectId=" + htData.fromProjectId + "&toProjectId=" + htData.toProjectId;
+            document.location.href = htVar.sFormURL + "?fromProjectId=" + htData.fromProjectId + "&toProjectId=" + htData.toProjectId;
         }
+
         /**
          * 브랜치 선택이 바뀌면 폼 내용을 변경한다
          * request to reload pullRequestForm
@@ -168,9 +174,9 @@
         /**
          * onFailed to reloadForm
          */
-        function _onErrorReloadForm(){
+        function _onErrorReloadForm(oRes){
             _stopSpinner();
-            $yobi.showAlert(Messages("error.internalServerError"));
+            $yobi.alert(Messages("pullRequest.error.newPullRequestForm", oRes.status, oRes.statusText));
         }
 
         /**
public/javascripts/service/yobi.issue.View.js
--- public/javascripts/service/yobi.issue.View.js
+++ public/javascripts/service/yobi.issue.View.js
@@ -117,9 +117,9 @@
                     welTarget.prop("checked", bChecked);
                     _updateTimeline();
                 },
-               "fOnError": function(){
+               "fOnError": function(oRes){
                     welTarget.prop("checked", !bChecked);
-                    _onErrorRequest();
+                    _onErrorRequest(Messages("issue.update.state"), oRes);
                }
             });
         }
@@ -137,7 +137,9 @@
                    htVar.oAssignee.selectItem("li[data-id=" + sValue + "]");
                    _updateTimeline();
                },
-               "fOnError": _onErrorRequest
+               "fOnError": function(oRes){
+                   _onErrorRequest(Messages("issue.update.assignee"), oRes);
+               }
             });
         }
         
@@ -152,7 +154,9 @@
                "fOnLoad" : function(){
                    $yobi.notify(Messages("issue.update.milestone"), 3000);
                },
-               "fOnError": _onErrorRequest
+               "fOnError": function(oRes){
+                   _onErrorRequest(Messages("issue.update.milestone"), oRes);
+               }
             });
         }
         
@@ -178,9 +182,13 @@
         
         /**
          * 이슈 정보 업데이트 호출 실패시
+         *
+         * @param sMessage
+         * @param oRes
+         * @private
          */
-        function _onErrorRequest(){
-            $yobi.alert(Messages("error.internalServerError"));
+        function _onErrorRequest(sMessage, oRes){
+            $yobi.notify(Messages("error.failedTo", sMessage, oRes.status, oRes.statusText));
         }
         
         /**
public/javascripts/service/yobi.user.Setting.js
--- public/javascripts/service/yobi.user.Setting.js
+++ public/javascripts/service/yobi.user.Setting.js
@@ -106,9 +106,11 @@
                 "success": function(data){
                     welTarget.prop("checked", bChecked);
                 },
-                "error"  : function(){
+                "error"  : function(oRes){
                     welTarget.prop("checked", !bChecked);
-                    $yobi.alert(Messages("error.internalServerError"));
+                    $yobi.alert(Messages("error.failedTo",
+                                Messages("userinfo.changeNotifications"),
+                                oRes.status, oRes.statusText));
                 }
             })
         }
public/javascripts/service/yobi.user.View.js
--- public/javascripts/service/yobi.user.View.js
+++ public/javascripts/service/yobi.user.View.js
@@ -79,13 +79,19 @@
          * @param {Wrapped Event} weEvt
          */
         function _onClickBtnWatch(weEvt){
-            $.ajax($(this).attr('href'), {
+            var welTarget = $(this);
+            var sURL = welTarget.attr("href");
+
+            $.ajax(sURL, {
                 "method" : "post",
                 "success": function(){
                     document.location.reload();
                 },
-                "error": function(){
-                    $yobi.notify(Messages("error.internalServerError"));
+                "error"  : function(oRes){
+                    var bOnWatching = welTarget.hasClass("blue"); // 지켜보는 중이었나
+                    var sActionMsg = Messages(bOnWatching ? "project.unwatch" : "project.watch"); // 무엇을 하려 했나
+
+                    $yobi.notify(Messages("error.failedTo", sActionMsg, oRes.status, oRes.statusText));
                 }
             });
 
Add a comment
List