wansoon 2013-07-25
change a project name to yobi
@e91857d57e837e3a59471a94a259eff72114d855
LICENSE
--- LICENSE
+++ LICENSE
@@ -1,4 +1,4 @@
-HIVE is under GPL v2. (We are checking if we can change its license to MIT license.)
+Yobi is under GPL v2. (We are checking if we can change its license to MIT license.)
 
 ---
 
README.md
--- README.md
+++ README.md
@@ -1,21 +1,21 @@
 <a name="english"></a>
 [[한국어]](#korean)
-HIVE
+Yobi
 =======
-[![Build Status](https://travis-ci.org/nforge/hive.png?branch=master)](https://travis-ci.org/nforge/hive)
+[![Build Status](https://travis-ci.org/nforge/yobi.png?branch=master)](https://travis-ci.org/nforge/yobi)
 
 
 
-HIVE, collaborative SW development platform.<br/>(Currently, unversioned - work in progress)
+Yobi, collaborative SW development platform.<br/>(Currently, unversioned - work in progress)
 
 
-What is HIVE?
+What is Yobi?
 --
 
-HIVE, a brand new version of nFORGE, is a web-based collaborative platform for software development.
-HIVE offers many features to increase productivity and quality of your software: a bug tracker to manage bugs and issues, a wiki to share documents, a configuration management tool to control software version and so on.
+Yobi, a brand new version of nFORGE, is a web-based collaborative platform for software development.
+Yobi offers many features to increase productivity and quality of your software: a bug tracker to manage bugs and issues, a wiki to share documents, a configuration management tool to control software version and so on.
 
-<img src="https://raw.github.com/nforge/hive/master/docs/hive_front.png">
+<img src="https://raw.github.com/nforge/yobi/master/docs/yobi_front.png">
 
 
 ## Installation
@@ -42,16 +42,16 @@
 
     cd play-2.1.0
 
-### download hive
+### download yobi
 
-    git clone https://github.com/nforge/hive.git
+    git clone https://github.com/nforge/yobi.git
 
-You can also make your own hive directory in any other place. But in that case, you should add playframework home path to $PATH environment.
+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.
 
 
-### cd to cloned hive directory
+### cd to cloned yobi directory
 
-    cd hive
+    cd yobi
 
 
 ### run play framework
@@ -67,7 +67,7 @@
 
 It will downloaded addtional files and compile sources.
 
-If you want to run hive in production mode, use **start** , not **run**.
+If you want to run yobi in production mode, use **start** , not **run**.
 
 ### connect by browser
 
@@ -85,22 +85,22 @@
 # for korean
 [[English]](#english)
 
-HIVE
+Yobi
 ===========
 
 협업 개발 플랫폼 (현재 개발중이며 아직 공식 버전 넘버링이 안 된 상태입니다.)
 
 
-HIVE 소개
+Yobi 소개
 --
-HIVE (구 nFORGE)는 소프트웨어 개발에 필요한 기능들을 사용하기 편리하게 웹으로 묶은 협업 개발 플랫폼입니다. 버그나 이슈을 관리할 수 있는 버그 트래커, 각종 문서와 정보를 간편하게 공유할 수 있는 위키, 소스코드의 변경내역을 편리하게 관리할 수 있는 형상관리 툴, 일반적인 용도의 게시판, 그리고 최종 작업 결과물을 공유하기 위한 파일 릴리즈 기능 등을 포함하고 있습니다.
+Yobi (구 nFORGE)는 소프트웨어 개발에 필요한 기능들을 사용하기 편리하게 웹으로 묶은 협업 개발 플랫폼입니다. 버그나 이슈을 관리할 수 있는 버그 트래커, 각종 문서와 정보를 간편하게 공유할 수 있는 위키, 소스코드의 변경내역을 편리하게 관리할 수 있는 형상관리 툴, 일반적인 용도의 게시판, 그리고 최종 작업 결과물을 공유하기 위한 파일 릴리즈 기능 등을 포함하고 있습니다.
 
-<img src="https://raw.github.com/nforge/hive/master/docs/hive_front.png">
+<img src="https://raw.github.com/nforge/yobi/master/docs/yobi_front.png">
 *개발중인 화면입니다*
 
 라이센스
 --
-HIVE는 GNU GPL v2로 배포되는 오픈소스입니다. (MIT 라이센스로 변경될 예정입니다)
+Yobi는 GNU GPL v2로 배포되는 오픈소스입니다. (MIT 라이센스로 변경될 예정입니다)
 
 ## 설치하기
 
@@ -126,13 +126,13 @@
 
     cd play-2.1.0
 
-### hive 소스 내려 받기
+### yobi 소스 내려 받기
 
-    git clone https://github.com/nforge/hive.git
+    git clone https://github.com/nforge/yobi.git
 
-### clone 받은 hive 디렉터리로 이동
+### clone 받은 yobi 디렉터리로 이동
 
-    cd hive
+    cd yobi
 
 ### 상단에 있는 play 실행파일 실행
 
app/assets/stylesheets/less/_yobiUI.less (Renamed from app/assets/stylesheets/less/_hiveUI.less)
--- app/assets/stylesheets/less/_hiveUI.less
+++ app/assets/stylesheets/less/_yobiUI.less
@@ -1,5 +1,5 @@
 /**
- * Bootstrap theme: HIVE UI
+ * Bootstrap theme: Yobi UI
  *
  * Override bootstrap::
  * 기본 글자 크기 12px로 설정
@@ -40,7 +40,7 @@
     .box-shadow(-2px 2px 1px rgba(0,0,0,0.1));
 }
 
-/** hive.ui.Dropdown **/
+/** yobi.ui.Dropdown **/
 .dropdown-toggle {
     background:@white; text-align:left;
     padding:0; padding-left:12px;
@@ -362,7 +362,7 @@
 }
 
 /** alert **/
-.hiveDialog {
+.yobiDialog {
     .border-radius(none);
     border:10px solid #bebebe;
     padding:16px 20px; width:500px;
@@ -386,7 +386,7 @@
     }
 }
 
-.hiveToasts {
+.yobiToasts {
     position: fixed;
     overflow: hidden;
     right: 0 !important;
app/assets/stylesheets/yobi.less (Renamed from app/assets/stylesheets/hive.less)
--- app/assets/stylesheets/hive.less
+++ app/assets/stylesheets/yobi.less
@@ -4,5 +4,5 @@
 @import "less/_sprites.less";
 @import "less/_page.less";
 @import "less/_reponsive.less";
-@import "less/_hiveUI.less";
+@import "less/_yobiUI.less";
 @import "less/_temporary.less";
(No newline at end of file)
app/controllers/AbstractPostingApp.java
--- app/controllers/AbstractPostingApp.java
+++ app/controllers/AbstractPostingApp.java
@@ -82,7 +82,7 @@
         public String getHtmlMessage() {
             return String.format(
                     "<pre>%s</pre><hr><a href=\"%s\">%s</a>",
-                    getMessage(), getUrlToView(), "View it on HIVE");
+                    getMessage(), getUrlToView(), "View it on Yobi");
         }
         public String getPlainMessage() {
             return String.format(
@@ -171,7 +171,7 @@
      * 어떤 게시물이 등록되었을 때, 그 프로젝트를 지켜보는 사용자들에게 알림 메일을 발송한다.
      *
      * @param noti
-     * @see <a href="https://github.com/nforge/hive/blob/master/docs/technical/watch.md>watch.md</a>
+     * @see <a href="https://github.com/nforge/yobi/blob/master/docs/technical/watch.md>watch.md</a>
      */
     public static void sendNotification(Notification noti) {
         Set<User> receivers = noti.getReceivers();
app/controllers/LabelApp.java
--- app/controllers/LabelApp.java
+++ app/controllers/LabelApp.java
@@ -38,7 +38,7 @@
      * @param query 태그에 대한 검색어 질의
      * @param limit 가져올 태그의 최대 갯수
      * @return 태그 목록 요청에 대한 응답
-     * @see <a href="https://github.com/nforge/hive/blob/master/docs/technical/label-typeahead
+     * @see <a href="https://github.com/nforge/yobi/blob/master/docs/technical/label-typeahead
      * .md>label-typeahead.md</a>
      */
     public static Result labels(String query, String category, Integer limit) {
app/controllers/SiteApp.java
--- app/controllers/SiteApp.java
+++ app/controllers/SiteApp.java
@@ -221,7 +221,7 @@
      *
      * 세션 {@code loginId} 가 사이트 관리자이고 삭제할 {@code loginId}가 {@code anonymous}가 아니면 계정 장금 또는 해제한후 사용자 관리페이지로 리다이렉트한다.
      * 세션 {@code loginId} 가 사이트 관리자이고 삭제할 {@code loginId}가 익명사용자이면 경고메세지와 함께사용자 관리페이지로 리다이렉트한다.
-     * 세션 {@code loginId} 가 사이트 관리자가 아니면 경고메세지와 함께 Hive 첫페이지로 리다이렉트한다.
+     * 세션 {@code loginId} 가 사이트 관리자가 아니면 경고메세지와 함께 Yobi 첫페이지로 리다이렉트한다.
      *
      * @param loginId the login id
      * @return the result
app/models/AbstractPosting.java
--- app/models/AbstractPosting.java
+++ app/models/AbstractPosting.java
@@ -250,7 +250,7 @@
      *
      * @return 이 이슈를 지켜보고 있는 모든 사용자들의 집합
      * @see {@link #getWatchers()}
-     * @see <a href="https://github.com/nforge/hive/blob/master/docs/technical/watch.md>watch.md</a>
+     * @see <a href="https://github.com/nforge/yobi/blob/master/docs/technical/watch.md>watch.md</a>
      */
     @Transient
     public Set<User> getWatchers() {
@@ -263,7 +263,7 @@
      * @param baseWatchers 지켜보고 있는 사용자들이 더 있다면 이 파라메터를 통해 넘겨받는다. e.g. 이슈 담당자
      * @return
      * @see {@link #getWatchers()}
-     * @see <a href="https://github.com/nforge/hive/blob/master/docs/technical/watch.md>watch.md</a>
+     * @see <a href="https://github.com/nforge/yobi/blob/master/docs/technical/watch.md>watch.md</a>
      */
     @Transient
     public Set<User> getWatchers(Set<User> baseWatchers) {
app/models/Issue.java
--- app/models/Issue.java
+++ app/models/Issue.java
@@ -35,7 +35,7 @@
      * @param assigneeId      이슈에 배정된 담당자 Id
      * @param milestone       이슈가 등록된 마일스톤
      * @param importance      이슈 상세정보의 중요도
-     * @author HIVE TEAM
+     * @author Yobi TEAM
      */
     private static final long serialVersionUID = -2409072006294045262L;
 
app/views/UIKit.scala.html
--- app/views/UIKit.scala.html
+++ app/views/UIKit.scala.html
@@ -3,14 +3,14 @@
 <html lang="ko">
 <head>
 <meta charset="utf-8">
-<title>HIVE UI</title>
+<title>Yobi UI</title>
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.ico")">
 <link rel="stylesheet" type="text/css" media="screen" href="@getCSSLink("bootstrap")">
-<link rel="stylesheet" type="text/css" media="screen" href="@getCSSLink("hive")">
+<link rel="stylesheet" type="text/css" media="screen" href="@getCSSLink("yobi")">
 <script type="text/javascript" src="@getJSLink("lib/jquery/jquery-1.9.0")"></script>
 <script type="text/javascript" src="@getJSLink("lib/bootstrap")"></script>
-<script type="text/javascript" src="@getJSLink("common/hive.Common")"></script>
+<script type="text/javascript" src="@getJSLink("common/yobi.Common")"></script>
 <style type="text/css">
 body { color:#ccc; }
 dl { display:inline-block; margin:18px; }
@@ -24,7 +24,7 @@
 <body>
 
 <header class="gnb-outer">
-	<span class="gnb-logo orange">HIVE</span>
+	<span class="gnb-logo orange">Yobi</span>
 	<span class="subtitle">User Interface Kit</span>
 </header>
 
app/views/alert.scala.html
--- app/views/alert.scala.html
+++ app/views/alert.scala.html
@@ -1,13 +1,13 @@
 <script type="text/javascript">
 $(document).ready(function(){
 	@if(flash.containsKey("warning")) {
-		$hive.notify("@Messages(flash.get("warning"))", 3000);
+		$yobi.notify("@Messages(flash.get("warning"))", 3000);
 	}
 	@if(flash.containsKey("success")) {
-		$hive.notify("@Messages(flash.get("success"))", 3000);
+		$yobi.notify("@Messages(flash.get("success"))", 3000);
 	}
 	@if(flash.containsKey("info")) {
-		$hive.notify("@Messages(flash.get("info"))", 3000);
+		$yobi.notify("@Messages(flash.get("info"))", 3000);
 	}
 });
 </script>
(No newline at end of file)
app/views/board/create.scala.html
--- app/views/board/create.scala.html
+++ app/views/board/create.scala.html
@@ -50,7 +50,7 @@
 
 <script type="text/javascript">
 $(document).ready(function(){
-	$hive.loadModule("board.Write", {
+	$yobi.loadModule("board.Write", {
 		"sMode"			 : "new",
 		"elTextarea"	 : $("#body"),
 		"sUploaderAction": "@routes.AttachmentApp.uploadFile"
app/views/board/edit.scala.html
--- app/views/board/edit.scala.html
+++ app/views/board/edit.scala.html
@@ -52,7 +52,7 @@
 
 <script type="text/javascript">
 $(document).ready(function(){
-	$hive.loadModule("board.Write", {
+	$yobi.loadModule("board.Write", {
 		"sMode"			 : "edit",
 		"elTextarea"	 : $("#body"),
 		"sUploaderAction": "@routes.AttachmentApp.uploadFile"
app/views/board/list.scala.html
--- app/views/board/list.scala.html
+++ app/views/board/list.scala.html
@@ -83,12 +83,12 @@
 
 <script type="text/javascript">
 	$(document).ready(function() {
-		$hive.loadModule("board.List", {
+		$yobi.loadModule("board.List", {
 			"elPagination": $('#pagination'),
 			"nTotalPages" : @page.getTotalPageCount
 		});
 		
-		hive.ShortcutKey.setKeymapLink({
+		yobi.ShortcutKey.setKeymapLink({
 		   "N": "@routes.BoardApp.newPostForm(project.owner, project.name)"
 		   @if(page.getPageIndex > 0){
            ,"A": "@getPageListUrl(page.getPageIndex - 1)"
app/views/board/view.scala.html
--- app/views/board/view.scala.html
+++ app/views/board/view.scala.html
@@ -118,14 +118,14 @@
 
 <script type="text/javascript">
 	$(document).ready(function(){
-		$hive.loadModule("board.View", {
+		$yobi.loadModule("board.View", {
 			"sAction": "@routes.AttachmentApp.uploadFile",
             "sWatchUrl"     : "@routes.BoardApp.watch(project.owner, project.name, post.getNumber)",
             "sUnwatchUrl"   : "@routes.BoardApp.unwatch(project.owner, project.name, post.getNumber)"
 		});
 		
-        // hive.ShortcutKey
-        hive.ShortcutKey.setKeymapLink({
+        // yobi.ShortcutKey
+        yobi.ShortcutKey.setKeymapLink({
             "N": "@routes.BoardApp.newPostForm(project.owner, project.name)",
             "L": "@routes.BoardApp.posts(project.owner, project.name)"
             @if(isAllowed(UserApp.currentUser(), post.asResource(), Operation.UPDATE)){
app/views/code/diff.scala.html
--- app/views/code/diff.scala.html
+++ app/views/code/diff.scala.html
@@ -138,7 +138,7 @@
         } else {
         var bCommentable = false;
         }
-        $hive.loadModule("code.Diff", {
+        $yobi.loadModule("code.Diff", {
             "sAttachmentAction": "@routes.AttachmentApp.uploadFile",
             "bCommentable": bCommentable
         });
app/views/code/nohead.scala.html
--- app/views/code/nohead.scala.html
+++ app/views/code/nohead.scala.html
@@ -26,7 +26,7 @@
 cd @project.name/
 touch readme.md
 git add readme.md
-git commit -m "Hello @Messages("hive.name")"
+git commit -m "Hello @Messages("yobi.name")"
 git push origin master</code></pre>
 		</div>
 	</div>
@@ -35,7 +35,7 @@
 
 <script type="text/javascript">
     $(document).ready(function(){
-        $hive.loadModule("code.Nohead", {
+        $yobi.loadModule("code.Nohead", {
             "sProjectName": "@project.name"
         });
     });
app/views/code/view.scala.html
--- app/views/code/view.scala.html
+++ app/views/code/view.scala.html
@@ -125,7 +125,7 @@
 
 <script type="text/javascript">
 	$(document).ready(function(){
-		$hive.loadModule("code.Browser", {
+		$yobi.loadModule("code.Browser", {
 			"sProjectName": "@project.name"
 		});
 	});
app/views/git/clone.scala.html
--- app/views/git/clone.scala.html
+++ app/views/git/clone.scala.html
@@ -47,7 +47,7 @@
             var cloneUrl = "@routes.PullRequestApp.doClone(project.originalProject.owner, project.originalProject.name, project.name, project.isPublic)";
             $.post(cloneUrl, function(data){
                 if(data.status === "failed") {
-                    $hive.showAlert('@Messages("fork.failed")', function () {
+                    $yobi.showAlert('@Messages("fork.failed")', function () {
                         location.replace(data.url);
                     });
                 } else {
app/views/git/view.scala.html
--- app/views/git/view.scala.html
+++ app/views/git/view.scala.html
@@ -50,7 +50,7 @@
             </div>
         </div>
 
-        <ul class="nav nav-tabs hive-tabs">
+        <ul class="nav nav-tabs yobi-tabs">
             <li class="active">
                 <a href="#info" data-toggle="tab">개요</a>
             </li>
app/views/git/viewCommits.scala.html
--- app/views/git/viewCommits.scala.html
+++ app/views/git/viewCommits.scala.html
@@ -23,7 +23,7 @@
             <a href="@routes.CodeApp.codeBrowserWithBranch(pull.toProject.owner, pull.toProject.name, pull.toBranch)" class="label label-success">@pull.toBranch</a>
         </p>
 
-        <ul class="nav nav-tabs hive-tabs">
+        <ul class="nav nav-tabs yobi-tabs">
             <li>
                 <a href="@routes.PullRequestApp.pullRequest(project.owner, project.name, pull.id)">
                     @Messages("pullRequest.menu.overview")
app/views/help/toc.scala.html
--- app/views/help/toc.scala.html
+++ app/views/help/toc.scala.html
@@ -18,21 +18,21 @@
             <li class="qa">
                 <div class="question-wrap">
                     <i class="ico ico-q"></i>
-                    <a href="#!/toggle" class="question">HIVE를 설치하고 싶어요.</a>
+                    <a href="#!/toggle" class="question">Yobi를 설치하고 싶어요.</a>
                     <i class="ico icor"></i>
                 </div>
                 <div class="answer-wrap">
                     <i class="ico ico-a"></i>
                     <div class="answer" style="width:100%">
-                        HIVE를 설치하기 전에 준비해야 할것은 다음과 같습니다.
+                        Yobi를 설치하기 전에 준비해야 할것은 다음과 같습니다.
                         <ul>
                             <li><a href="http://www.oracle.com/technetwork/java/javase">JDK 1.6이상</a></li>
                             <li><a href="http://www.playframework.org/">Play Framework</a></li>
                             <li><a href="http://git-scm.com/">Git Client</a></li>
                         </ul>
                         위의 프로그램을 모두 인스톨 하신후 소스코드를 받습니다.
-                        <pre><code># git clone https://github.com/nforge/hive.git</code></pre>
-                        인스톨된 폴더로 가서 HIVE를 실행시키면 됩니다.
+                        <pre><code># git clone https://github.com/nforge/yobi.git</code></pre>
+                        인스톨된 폴더로 가서 Yobi를 실행시키면 됩니다.
                         <pre><code># play run</code></pre>
                     </div>
                 </div>
@@ -121,14 +121,14 @@
             <li class="qa">
                 <div class="question-wrap">
                     <i class="ico ico-q"></i>
-                    <a href="#!/toggle" class="question">HIVE의 버그를 발견했어요.</a>
+                    <a href="#!/toggle" class="question">Yobi의 버그를 발견했어요.</a>
                     <i class="ico icor"></i>
                 </div>
                 <div class="answer-wrap">
                     <i class="ico ico-a"></i>
                     <div class="answer" style="width:100%">
-                        HIVE는 현재 Open Source로 진행되고 있습니다. 버그를 발견하셨다면 
-                        <a href="https://github.com/nforge/hive/issues">HIVE 이슈트래커에 등록</a>해 주시거나
+                        Yobi는 현재 Open Source로 진행되고 있습니다. 버그를 발견하셨다면 
+                        <a href="https://github.com/nforge/yobi/issues">Yobi 이슈트래커에 등록</a>해 주시거나
                         패치를 만들어 보내주시면 됩니다. 
                     </div>
                 </div>
app/views/home.scala.html
--- app/views/home.scala.html
+++ app/views/home.scala.html
@@ -9,7 +9,7 @@
     </div>
     <footer class="page-footer-outer">
         <div class="page-footer">
-            <span class="provider">Powered by <strong>HIVE</strong></span>
+            <span class="provider">Powered by <strong>Yobi</strong></span>
         </div>
     </footer>
 }
app/views/index.scala.html
--- app/views/index.scala.html
+++ app/views/index.scala.html
@@ -3,7 +3,7 @@
 @import utils.TemplateHelper._
 @import utils.JodaDateUtil
 
-@home("hive.name", utils.MenuType.SITE_HOME) {
+@home("yobi.name", utils.MenuType.SITE_HOME) {
     <div class="page on-fold-intro">
         <div class="fn-intro-wrap">
 	        <div class="tag-line-wrap tag-line-wrap-index">
@@ -103,10 +103,10 @@
         $(document).ready(function(){
             $("#toggleIntro").click(function(){
                 $(".page").toggleClass("on-fold-intro");
-                localStorage.setItem("hive-intro", !$(".page").hasClass("on-fold-intro"));
+                localStorage.setItem("yobi-intro", !$(".page").hasClass("on-fold-intro"));
             });
             
-            if(localStorage.getItem("hive-intro") != "false"){
+            if(localStorage.getItem("yobi-intro") != "false"){
                 $(".page").removeClass("on-fold-intro");
             }
         });
app/views/issue/create.scala.html
--- app/views/issue/create.scala.html
+++ app/views/issue/create.scala.html
@@ -115,7 +115,7 @@
 			"sURLPost"     : "@routes.IssueLabelApp.newLabel(project.owner, project.name)"
 		};
 
-		$hive.loadModule("issue.Write", {
+		$yobi.loadModule("issue.Write", {
 			"sMode"			 : "new",
 			"elTextarea"	 : $("#body"),
             "elMilestoneRefresh": $("#milestoneOption .icon-refresh"),
app/views/issue/edit.scala.html
--- app/views/issue/edit.scala.html
+++ app/views/issue/edit.scala.html
@@ -132,15 +132,15 @@
 
 <script type="text/javascript">
 	$(document).ready(function(){
-		// hive.Label
+		// yobi.Label
 		var htOptLabel = {
 			"sURLLabels"   : "@routes.IssueLabelApp.labels(project.owner, project.name)",
 			"sURLPost"     : "@routes.IssueLabelApp.newLabel(project.owner, project.name)",
 			"htActive"     : {@for(label <- issue.labels) { "@label.id":"@label.color", }"":""}
 		};
 
-		// hive.issue.Write
-		$hive.loadModule("issue.Write", {
+		// yobi.issue.Write
+		$yobi.loadModule("issue.Write", {
 			"sMode"			    : "edit",
 			"elTextarea"	    : $("#body"),
             "elMilestoneRefresh": $("#milestoneOption .icon-refresh"),
app/views/issue/list.scala.html
--- app/views/issue/list.scala.html
+++ app/views/issue/list.scala.html
@@ -176,11 +176,11 @@
 
 <script type="text/javascript">
     $(document).ready(function(){
-        hive.Label.init({
+        yobi.Label.init({
             "sURLLabels"   : "@routes.IssueLabelApp.labels(project.owner, project.name)",
             "sURLPost"     : "@routes.IssueLabelApp.newLabel(project.owner, project.name)"
         });
-        hive.ShortcutKey.setKeymapLink({
+        yobi.ShortcutKey.setKeymapLink({
            "N": "@routes.IssueApp.newIssueForm(project.owner, project.name)"
            @if(currentPage.getPageIndex > 0){
           ,"A": "@getPageListUrl(currentPage.getPageIndex - 1)"
app/views/issue/partial_list.scala.html
--- app/views/issue/partial_list.scala.html
+++ app/views/issue/partial_list.scala.html
@@ -67,7 +67,7 @@
 
 <script type="text/javascript">
     $(document).ready(function(){
-	    $hive.loadModule("issue.List", {
+	    $yobi.loadModule("issue.List", {
 		    "elPagination": $("#pagination"),
 		    "welMassUpdateForm": $('#mass-update-form'),
 		    "welMassUpdateButtons": $('#mass-update-form button'),
app/views/issue/view.scala.html
--- app/views/issue/view.scala.html
+++ app/views/issue/view.scala.html
@@ -176,23 +176,23 @@
 
 <script type="text/javascript">
 	$(document).ready(function(){
-		// hive.Label
+		// yobi.Label
 		var htOptLabel = {
 			"bEditable"    : false,
 			"sURLLabels"   : "@routes.IssueLabelApp.labels(project.owner, project.name)",
 			"sURLPost"     : "@routes.IssueLabelApp.newLabel(project.owner, project.name)"
 		};
 
-		// hive.issue.View
-		$hive.loadModule("issue.View", {
+		// yobi.issue.View
+		$yobi.loadModule("issue.View", {
 			"sAction"       : "@routes.AttachmentApp.uploadFile",
 			"htOptLabel"    : htOptLabel,
             "sWatchUrl"     : "@routes.IssueApp.watch(project.owner, project.name, issue.getNumber)",
             "sUnwatchUrl"   : "@routes.IssueApp.unwatch(project.owner, project.name, issue.getNumber)"
 		});
 
-	    // hive.ShortcutKey
-        hive.ShortcutKey.setKeymapLink({
+	    // yobi.ShortcutKey
+        yobi.ShortcutKey.setKeymapLink({
             "N": "@routes.IssueApp.newIssueForm(project.owner, project.name)",
             "L": "@routes.IssueApp.issues(project.owner, project.name,"open")"
             @if(isAllowed(UserApp.currentUser(), issue.asResource(), Operation.UPDATE)) {
app/views/layout.scala.html
--- app/views/layout.scala.html
+++ app/views/layout.scala.html
@@ -10,21 +10,21 @@
 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.ico")">
 <link rel="stylesheet" type="text/css" media="screen" href="@getCSSLink("bootstrap")">
-<link rel="stylesheet" type="text/css" media="screen" href="@getCSSLink("hive")">
+<link rel="stylesheet" type="text/css" media="screen" href="@getCSSLink("yobi")">
 <link rel="stylesheet" type="text/css" media="screen" href="/assets/javascripts/lib/zenform/zen-form.css">
 <link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("stylesheets/fontawesome/css/font-awesome.min.css")">
 
 <script type="text/javascript" src="@getJSLink("lib/jquery/jquery-1.9.0")"></script>
-<script type="text/javascript" src="@getJSLink("common/hive.Common")"></script>
+<script type="text/javascript" src="@getJSLink("common/yobi.Common")"></script>
 <script type="text/javascript" src="@getJSLink("lib/zenform/zen-form")"></script>
-<!-- HIVE : Software development platform -->
+<!-- Yobi : Software development platform -->
 </head>
 
 <body class="@theme">
 @content
 @scripts()
 
-<!-- HIVE -->
+<!-- Yobi -->
 @uservoice("196721")
 @googleAnalytics("UA-40528193-1")
 
app/views/login.scala.html
--- app/views/login.scala.html
+++ app/views/login.scala.html
@@ -3,7 +3,7 @@
 <div class="page full">
 	<div class="center-wrap tag-line-wrap login">
 		<h1 class="title">
-			<span class="high-light">Log In for</span> HIVE
+			<span class="high-light">Log In for</span> Yobi
 		</h1>
 		<p class="tag-line">Software development platform for Open Source project.</p>
 	</div>
app/views/main.scala.html
--- app/views/main.scala.html
+++ app/views/main.scala.html
@@ -13,7 +13,7 @@
 
 <footer class="page-footer-outer">
 	<div class="page-footer">
-		<span class="provider">Powered by <strong>HIVE</strong></span>
+		<span class="provider">Powered by <strong>Yobi</strong></span>
 	</div>
 </footer>
 @alert()
app/views/markdown.scala.html
--- app/views/markdown.scala.html
+++ app/views/markdown.scala.html
@@ -21,7 +21,7 @@
     htOptions.sProjectUrl = "@routes.ProjectApp.project(project.owner, project.name)";
     }
 
-	hive.Markdown(htOptions);
+    yobi.Markdown(htOptions);
 });
 </script>
 
app/views/milestone/create.scala.html
--- app/views/milestone/create.scala.html
+++ app/views/milestone/create.scala.html
@@ -58,7 +58,7 @@
 <script type="text/javascript" src="@getJSLink("lib/pikaday")"></script>
 <script type="text/javascript">
 	$(document).ready(function() {
-		$hive.loadModule("milestone.Write", {
+		$yobi.loadModule("milestone.Write", {
 			"elDueDate"   : $("#dueDate"),
 			"elDatePicker": $("#datepicker")
 		});
app/views/milestone/edit.scala.html
--- app/views/milestone/edit.scala.html
+++ app/views/milestone/edit.scala.html
@@ -63,7 +63,7 @@
 <script type="text/javascript" src="@getJSLink("lib/pikaday")"></script>
 <script type="text/javascript">
 	$(document).ready(function() {
-		$hive.loadModule("milestone.Write", {
+		$yobi.loadModule("milestone.Write", {
 			"elDueDate"   : $("#dueDate"),
 			"elDatePicker": $("#datepicker")
 		});
app/views/milestone/list.scala.html
--- app/views/milestone/list.scala.html
+++ app/views/milestone/list.scala.html
@@ -137,7 +137,7 @@
     
 <script type="text/javascript">
     $(document).ready(function() {
-        hive.ShortcutKey.setKeymapLink({
+        yobi.ShortcutKey.setKeymapLink({
            "N": "@routes.MilestoneApp.newMilestoneForm(project.owner, project.name)"
         });
     });
app/views/navbar.scala.html
--- app/views/navbar.scala.html
+++ app/views/navbar.scala.html
@@ -10,7 +10,7 @@
 <header class="gnb-outer">
     <div class="gnb-inner">
         <div class="gnb-menu-wrap">
-            <a href="@routes.Application.index()" class="logo"><span>@Messages("hive.name")</span></a>
+            <a href="@routes.Application.index()" class="logo"><span>@Messages("yobi.name")</span></a>
             <ul class="gnb-menus unstyled">
                 <li class="menu @isActiveMenu(MenuType.NEW_PROJECT)">
                     <a href="@routes.ProjectApp.newProjectForm()">@Messages("title.newProject")</a>
app/views/prjmenu.scala.html
--- app/views/prjmenu.scala.html
+++ app/views/prjmenu.scala.html
@@ -198,7 +198,7 @@
 
 <script type="text/javascript">
 $(document).ready(function(){
-	// 프로젝트 전역 단축키: hive.ShortcutKey
+	// 프로젝트 전역 단축키: yobi.ShortcutKey
     var htKeyMap = {
         "H": "@routes.ProjectApp.project(project.owner, project.name)",
         "B": "@routes.BoardApp.posts(project.owner, project.name)",
@@ -213,7 +213,7 @@
         }
     };
 
-    $hive.loadModule("project.Global", {
+    $yobi.loadModule("project.Global", {
         "htKeyMap": htKeyMap,
         "sRepoURL": "@CodeApp.getURLWithLoginId(project)"
     });
app/views/project/create.scala.html
--- app/views/project/create.scala.html
+++ app/views/project/create.scala.html
@@ -98,7 +98,7 @@
 
 <script type="text/javascript">
     $(document).ready(function(){
-    	$hive.loadModule("project.New", {
+    	$yobi.loadModule("project.New", {
     		"sFormName": "newproject"
     	});
     });
app/views/project/delete.scala.html
--- app/views/project/delete.scala.html
+++ app/views/project/delete.scala.html
@@ -42,7 +42,7 @@
 	
 <script type="text/javascript">
 	$(document).ready(function(){
-        $hive.loadModule("project.Delete");
+        $yobi.loadModule("project.Delete");
 	});
 </script>
 }
(No newline at end of file)
app/views/project/list.scala.html
--- app/views/project/list.scala.html
+++ app/views/project/list.scala.html
@@ -91,7 +91,7 @@
 
 <script type="text/javascript">
 $(document).ready(function(){
-    hive.Pagination.update($("#pagination"), @currentPage.getTotalPageCount);
+    yobi.Pagination.update($("#pagination"), @currentPage.getTotalPageCount);
 
     /*
 	$(".btn-advanced").click(function(){
app/views/project/members.scala.html
--- app/views/project/members.scala.html
+++ app/views/project/members.scala.html
@@ -110,7 +110,7 @@
 
 <script type="text/javascript">
    	$(document).ready(function(){
-   		$hive.loadModule("project.Member");
+   		$yobi.loadModule("project.Member");
    	});
 </script>
 
app/views/project/navbar.scala.html
--- app/views/project/navbar.scala.html
+++ app/views/project/navbar.scala.html
@@ -6,7 +6,7 @@
 
 <div class="gnb-inner">
 	<div class="gnb-menu-wrap">
-		<a href="@routes.Application.index()" class="logo"><span>@Messages("hive.name")</span></a>
+		<a href="@routes.Application.index()" class="logo"><span>@Messages("yobi.name")</span></a>
 
 		<h1 class="page-title">
 			<span class="gray">/ <a href="@routes.UserApp.userInfo(project.owner)">@project.owner</a> /</span><!--
app/views/project/overview.scala.html
--- app/views/project/overview.scala.html
+++ app/views/project/overview.scala.html
@@ -123,7 +123,7 @@
 		                }
 		            </header>
 		            <ul class="infos" id="label-board">
-		                <!-- labels are added here by hive.project.Home.js -->
+		                <!-- labels are added here by yobi.project.Home.js -->
 		            </ul>
 
 		            <script id="label-delete-button-template" type="text/x-jquery-tmpl">
@@ -184,7 +184,7 @@
 
 <script type="text/javascript">
 $(document).ready(function(){
-	$hive.loadModule("project.Home", {
+	$yobi.loadModule("project.Home", {
         "sURLProjectLabels": "@routes.ProjectApp.labels(project.owner, project.name)",
         "sURLLabels"       : "@routes.LabelApp.labels()",
         "sURLLabelCategories": "@routes.LabelApp.categories()",
app/views/project/setting.scala.html
--- app/views/project/setting.scala.html
+++ app/views/project/setting.scala.html
@@ -83,7 +83,7 @@
 
 <script type="text/javascript">
 	$(document).ready(function(){
-        $hive.loadModule("project.Setting");
+        $yobi.loadModule("project.Setting");
 	});
 </script>
 
app/views/scripts.scala.html
--- app/views/scripts.scala.html
+++ app/views/scripts.scala.html
@@ -1,8 +1,8 @@
 @()(implicit lang:Lang)
 @import utils.TemplateHelper._
 
-@**<!-- hive.ui.Dialog -->**@
-<div id="hiveDialog" class="modal hide fade hiveDialog" tabindex="-1" role="dialog" aria-hidden="true">
+@**<!-- yobi.ui.Dialog -->**@
+<div id="yobiDialog" class="modal hide fade yobiDialog" tabindex="-1" role="dialog" aria-hidden="true">
 	<div class="btn-dismiss"><button type="button" class="btn-transparent" data-dismiss="modal">&times;</button></div>
 	<div class="message">
 		<p class="center-text msg"></p>
@@ -11,11 +11,11 @@
 		</p>
 	</div>
 </div>
-@**<!-- //hive.ui.Dialog -->**@
+@**<!-- //yobi.ui.Dialog -->**@
 
-@**<!-- hive.ui.Toast -->**@
-<div id="hiveToasts" class="hiveToasts"></div>
-<script type="text/x-jquery-tmpl" id="tplHiveToast">
+@**<!-- yobi.ui.Toast -->**@
+<div id="yobiToasts" class="yobiToasts"></div>
+<script type="text/x-jquery-tmpl" id="tplYobiToast">
 <div class="toast" tabindex="-1">
 	<div class="btn-dismiss"><button type="button" class="btn-transparent">&times;</button></div>
 	<div class="center-text">
@@ -24,7 +24,7 @@
     </div>
 </div>
 </script>
-@**<!-- //hive.ui.Toast -->**@
+@**<!-- //yobi.ui.Toast -->**@
 
 <script type="text/javascript" src="@routes.Application.jsMessages()"></script>
 <script type="text/javascript" src="@getJSLink("lib/jquery/jquery.tmpl")"></script>
@@ -37,19 +37,19 @@
 <script type="text/javascript" src="@getJSLink("lib/rgbcolor")"></script>
 <script type="text/javascript" src="@getJSLink("lib/humanize")"></script>
 <script type="text/javascript" src="@getJSLink("lib/validate")"></script>
-<script type="text/javascript" src="@getJSLink("common/hive.Pagination")"></script>
-<script type="text/javascript" src="@getJSLink("common/hive.Markdown")"></script>
-<script type="text/javascript" src="@getJSLink("common/hive.FileUploader")"></script>
-<script type="text/javascript" src="@getJSLink("common/hive.FileDownloader")"></script>
-<script type="text/javascript" src="@getJSLink("common/hive.Label")"></script>
-<script type="text/javascript" src="@getJSLink("common/hive.ShortcutKey")"></script>
-<script type="text/javascript" src="@getJSLink("common/hive.ui.Dropdown")"></script>
-<script type="text/javascript" src="@getJSLink("common/hive.ui.Typeahead")"></script>
-<script type="text/javascript" src="@getJSLink("common/hive.ui.Dialog")"></script>
-<script type="text/javascript" src="@getJSLink("common/hive.ui.Toast")"></script>
-<script type="text/javascript" src="@getJSLink("common/hive.ui.Tabs")"></script>
+<script type="text/javascript" src="@getJSLink("common/yobi.Pagination")"></script>
+<script type="text/javascript" src="@getJSLink("common/yobi.Markdown")"></script>
+<script type="text/javascript" src="@getJSLink("common/yobi.FileUploader")"></script>
+<script type="text/javascript" src="@getJSLink("common/yobi.FileDownloader")"></script>
+<script type="text/javascript" src="@getJSLink("common/yobi.Label")"></script>
+<script type="text/javascript" src="@getJSLink("common/yobi.ShortcutKey")"></script>
+<script type="text/javascript" src="@getJSLink("common/yobi.ui.Dropdown")"></script>
+<script type="text/javascript" src="@getJSLink("common/yobi.ui.Typeahead")"></script>
+<script type="text/javascript" src="@getJSLink("common/yobi.ui.Dialog")"></script>
+<script type="text/javascript" src="@getJSLink("common/yobi.ui.Toast")"></script>
+<script type="text/javascript" src="@getJSLink("common/yobi.ui.Tabs")"></script>
 <script type="text/javascript">
-	$hive.setScriptPath("@getJSPath()");
+	$yobi.setScriptPath("@getJSPath()");
 	
 	$(document).ready(function(){
 		// tooltip
@@ -58,24 +58,24 @@
     	// jquery.placeholder plugin initiator
         $('input[type=text], textarea').placeholder();
 
-     	// hive.Dropdown
+     	// yobi.Dropdown
      	var sActivation;
         $(".btn-group[data-name]").each(function(i, el){
         	sActivation = $(el).attr("data-activate");
         	if(typeof sActivation == "undefined" || sActivation != "manual"){
-        		(new hive.ui.Dropdown({"elContainer":el}));
+        		(new yobi.ui.Dropdown({"elContainer":el}));
         	}
         });
         
-        // hive.ShortcutKey
+        // yobi.ShortcutKey
         // Set CTRL+ENTER as submit form on INPUT/TEXTAREA
-        hive.ShortcutKey.attach("CTRL+ENTER", function(htInfo){
+        yobi.ShortcutKey.attach("CTRL+ENTER", function(htInfo){
             if(htInfo.bFormInput){
                 $(htInfo.welTarget.parents("form").get(0)).submit();
             }
         });
         @if(session.contains("loginId")){
-        hive.ShortcutKey.setKeymapLink({
+            yobi.ShortcutKey.setKeymapLink({
             "P": "@routes.UserApp.userInfo(session.get("loginId"))"
         });
         }
app/views/search/contentsSearch.scala.html
--- app/views/search/contentsSearch.scala.html
+++ app/views/search/contentsSearch.scala.html
@@ -65,7 +65,7 @@
     </div>
     <div id="pagination-post"></div>
 </div>
-<script type="text/javascript" src="@getJSLink("common/hive.Pagination")"></script>
+<script type="text/javascript" src="@getJSLink("common/yobi.Pagination")"></script>
 <script type="text/javascript">
   var createUpdater = function(type, targetBody, paginationDiv) {
     var update = function(pageNum) {
app/views/site/massMail.scala.html
--- app/views/site/massMail.scala.html
+++ app/views/site/massMail.scala.html
@@ -13,7 +13,7 @@
     <p>
         <input id="mailtoPrj" type="radio" name="mailingType" value="projects" checked>@Messages("site.massMail.toProjects"):
         <label for="mailtoPrj" class="radio">
-            <span id="selected-projects"><!-- project names are added here by hive.site.MassMail.js --></span>
+            <span id="selected-projects"><!-- project names are added here by yobi.site.MassMail.js --></span>
             <input id="input-project" type="text" class="text uname" data-provider="typeahead" autocomplete="off" placeholder="@Messages("project.name")"/>
             <button id="select-project" type="submit" class="btn btn-primary" data-loading-text="@Messages("site.massMail.loading")">
                 <strong>@Messages("button.add")</strong>
@@ -28,7 +28,7 @@
 
 <script type="text/javascript">
   $(document).ready(function(){
-    $hive.loadModule("site.MassMail", {
+    $yobi.loadModule("site.MassMail", {
         "sURLMailList": "@routes.SiteApp.mailList()",
         "sURLProjects": "@routes.ProjectApp.projects()"
     });
app/views/topmenu.scala.html
--- app/views/topmenu.scala.html
+++ app/views/topmenu.scala.html
@@ -7,7 +7,7 @@
 
     <div class="gnb-inner">
         <div class="gnb-menu-wrap">
-            <a href="@routes.Application.index()" class="logo"><span>HIVE</span></a>
+            <a href="@routes.Application.index()" class="logo"><span>Yobi</span></a>
 
 			<h1 class="page-title">
 				<span class="gray">/ <a href="@routes.UserApp.userInfo(project.owner)">@project.owner</a> / </span>
app/views/user/edit.scala.html
--- app/views/user/edit.scala.html
+++ app/views/user/edit.scala.html
@@ -7,7 +7,7 @@
 
 <div class="page">
     <h1 class="page-title">
-        <span class="gray">@Messages("hive.name")/</span>@user.loginId
+        <span class="gray">@Messages("yobi.name")/</span>@user.loginId
     </h1>
 
     <div class="profile-frmwrap">
@@ -59,7 +59,7 @@
 
 <script type="text/javascript">
     $(document).ready(function(){
-        $hive.loadModule("user.Setting", {
+        $yobi.loadModule("user.Setting", {
             "sURLUpload": "@routes.AttachmentApp.uploadFile",
             "sURLFiles" : "@routes.AttachmentApp.getFileList()"
         });
app/views/user/info.scala.html
--- app/views/user/info.scala.html
+++ app/views/user/info.scala.html
@@ -146,7 +146,7 @@
             return false;
         }
     });
-    $hive.loadModule("project.Global");
+    $yobi.loadModule("project.Global");
 
     var selectedTab = '@selected';
     //daysAgo input enter
app/views/user/resetPassword.scala.html
--- app/views/user/resetPassword.scala.html
+++ app/views/user/resetPassword.scala.html
@@ -35,7 +35,7 @@
     <script type="text/javascript" src="@getJSLink("lib/validate")"></script>
     <script type="text/javascript">
             $(document).ready(function(){
-                $hive.loadModule("resetPassword");
+                $yobi.loadModule("resetPassword");
             });
     </script>
 }
app/views/user/signup.scala.html
--- app/views/user/signup.scala.html
+++ app/views/user/signup.scala.html
@@ -5,7 +5,7 @@
 <div class="page full">
 	<div class="center-wrap tag-line-wrap signup">
 		<h1 class="title">
-			<span class="high-light">Sign Up for</span> @Messages("hive.name")
+			<span class="high-light">Sign Up for</span> @Messages("yobi.name")
 		</h1>
 		<p class="tag-line">Software development platform for Open Source
 			project.</p>
@@ -63,7 +63,7 @@
 <script type="text/javascript" src="@getJSLink("lib/validate")"></script>
 <script type="text/javascript">
    	$(document).ready(function(){
-		$hive.loadModule("user.SignUp");
+		$yobi.loadModule("user.SignUp");
    	});
 </script>
 }
(No newline at end of file)
conf/application.conf.default
--- conf/application.conf.default
+++ conf/application.conf.default
@@ -33,7 +33,7 @@
 # MySQL Configuration
 # db.default.driver=com.mysql.jdbc.Driver
 # db.default.url="jdbc:mysql://127.0.0.1:3306/nforge?characterEncoding=utf-8"
-# db.default.user=hive
+# db.default.user=yobi
 # db.default.password=""
 
 # Local
@@ -78,7 +78,7 @@
 smtp.port = 465
 smtp.ssl = true
 #smtp.user = yourGmailId
-smtp.user = hiveproject.mail
+smtp.user = yobiproject.mail
 # Be careful!!!
 smtp.password = yourGmailPassword
 smtp.domain = gmail.com
conf/messages.en
--- conf/messages.en
+++ conf/messages.en
@@ -33,9 +33,9 @@
 title.boardDetail = Post View
 title.zenmode = zen mode
 
-hive.name = HIVE
-hive.title = Collaborative Software Development Platform
-hive.description = Make it better and simpler!
+yobi.name = Yobi
+yobi.title = Collaborative Software Development Platform
+yobi.description = Make it better and simpler!
 
 menu.home = Home
 menu.board = Board
@@ -388,7 +388,7 @@
 user.notExists.name = User Doesn't Exists
 user.locked = User account is locked
 user.isLocked = is locked?
-user.signup.requested = Sign-up for hive is requested. Site admin will review your request. Thanks
+user.signup.requested = Sign-up for yobi is requested. Site admin will review your request. Thanks
 user.avatar.onlyImage = Only an image is allowed.
 
 #Role
@@ -509,7 +509,7 @@
 userinfo.leaveProject.confirm = Are you sure to leave {0}?
 
 #Admin
-admin.resetPasswordEmail.title = [HIVE] Password reset mail request
+admin.resetPasswordEmail.title = [Yobi] Password reset mail request
 admin.resetPasswordEmail.mailcontents = copy the below url and paste it to browser url bar
 admin.resetPasswordEmail.invalidRequest = Invalid Password Reset Request
 
conf/messages.ko
--- conf/messages.ko
+++ conf/messages.ko
@@ -33,9 +33,9 @@
 title.boardDetail = 글 읽기
 title.zenmode = 집중 모드
 
-hive.name = HIVE
-hive.title = 협업개발 플랫폼
-hive.description = Make it better and simpler!
+yobi.name = Yobi
+yobi.title = 협업개발 플랫폼
+yobi.description = Make it better and simpler!
 
 menu.home = 홈
 menu.board = 게시판
@@ -388,7 +388,7 @@
 user.notExists.name = 존재하지 않는 사용자입니다.
 user.locked = 잠긴 사용자 계정입니다.
 user.isLocked = 잠김여부
-user.signup.requested = HIVE 가입이 요청되었습니다. 사이트 관리자가 검토/승인 후 사용가능합니다. 감사합니다.
+user.signup.requested = Yobi 가입이 요청되었습니다. 사이트 관리자가 검토/승인 후 사용가능합니다. 감사합니다.
 user.avatar.onlyImage = 이미지 파일만 올리실 수 있습니다.
 
 #Role
@@ -509,7 +509,7 @@
 userinfo.leaveProject.confirm = 정말 {0} 프로젝트에서 탈퇴하시겠습니까?
 
 #Admin
-admin.resetPasswordEmail.title = [HIVE] 비밀번호 재 설정
+admin.resetPasswordEmail.title = [Yobi] 비밀번호 재 설정
 admin.resetPasswordEmail.mailcontents = 아래 URL을 브라우저 주소창에 붙여 넣으세요
 admin.resetPasswordEmail.invalidRequest = 잘못된 비밀번호 재 설정 요청입니다.
 
docs/logging.md
--- docs/logging.md
+++ docs/logging.md
@@ -1,4 +1,4 @@
-HIVE는 사이트 운영자와 HIVE 개발자를 위해 운영중에 발생한 상황에 대한 로그를 남긴다. 로그는 logs 디렉토리에 있는 로그 파일 및 표준출력을 통해 남겨지게 된다.
+Yobi는 사이트 운영자와 Yobi 개발자를 위해 운영중에 발생한 상황에 대한 로그를 남긴다. 로그는 logs 디렉토리에 있는 로그 파일 및 표준출력을 통해 남겨지게 된다.
 
 로그 파일
 ---------
@@ -18,7 +18,7 @@
 
 로그의 설정에 대해서는 [LOGBack 문서](http://logback.qos.ch/documentation.html)를 참조한다.
 
-주의: PlayFramework는 `conf/application.conf`를 통해서도 로그에 대한 설정을 할 수 있도록 허용한다. 그러나 HIVE에서는 보다 정교한 설정을 위해 `conf/application-logger.xml`에 설정을 남기도록 하고 있다. 두 파일의 설정이 각각 다른 경우 의도하지 않은 동작을 하게 될 수 있으므로, 로그 관련 설정은 `conf/application-logger.xml`에서만 하도록 한다.
+주의: PlayFramework는 `conf/application.conf`를 통해서도 로그에 대한 설정을 할 수 있도록 허용한다. 그러나 Yobi에서는 보다 정교한 설정을 위해 `conf/application-logger.xml`에 설정을 남기도록 하고 있다. 두 파일의 설정이 각각 다른 경우 의도하지 않은 동작을 하게 될 수 있으므로, 로그 관련 설정은 `conf/application-logger.xml`에서만 하도록 한다.
 
 로그 레벨
 ---------
@@ -51,4 +51,4 @@
 
     127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif" 200 - "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)" 70ms
 
-또한 현재는 HIVE 기능상의 한계로 ident와 요청의 길이는 항상 "-" 으로 로그가 남게 된다. 응답이 정상적으로 처리되지 못해 에러가 발생한 경우에는 처리시간도 "-" 으로 기록된다.
+또한 현재는 Yobi 기능상의 한계로 ident와 요청의 길이는 항상 "-" 으로 로그가 남게 된다. 응답이 정상적으로 처리되지 못해 에러가 발생한 경우에는 처리시간도 "-" 으로 기록된다.
docs/technical/javascript-module-guide.md
--- docs/technical/javascript-module-guide.md
+++ docs/technical/javascript-module-guide.md
@@ -25,7 +25,7 @@
     사용되지 않는 파일이지만 개발 과정에서 참조하기 위해 임시로 보존하는 코드
 
 ## 코드 구조
-* hive.CodeTemplate.js 참조
+* yobi.CodeTemplate.js 참조
 
 >    * 초기화 함수는 \_init() 으로 통일하고, 이 함수 내에서 \_initVar, \_initElement, \_attachEvent 를 호출한다.
 >        각 함수의 순서는 필요에 따라 배치할 수 있고 굳이 해당 함수가 필요치 않는 경우 작성하지 않아도 무방하다.
@@ -36,25 +36,25 @@
 * UI 컴포넌트 등 공통 코드는 함수, 객체 등 명명 규칙을 준수한다는 전제하에 코드 구조는 자유롭게 구성해도 무방하다
 
 
-## $hive.loadModule 사용법
-* 만약 hive.module.Name 이라는 이름의 모듈을 정의한 경우 아래와 같다
-* 첫번째 인자: hive. 을 제외한 모듈 이름
+## $yobi.loadModule 사용법
+* 만약 yobi.module.Name 이라는 이름의 모듈을 정의한 경우 아래와 같다
+* 첫번째 인자: yobi. 을 제외한 모듈 이름
 * 두번째 인자: 해당 모듈 초기화 함수에 제공될 옵션 객체(Object)
 
->       $hive.loadModule("module.Name", {
+>       $yobi.loadModule("module.Name", {
 >            "sOption": "Option Value"
 >        });
 
 * 현재 페이지 내에서 해당 모듈을 찾을 수 없는 경우, 즉 명시적으로 <script> 태그를 통해 포함하지 않은 경우
     자동으로 javascripts/service 에서 동적으로 자바스크립트 파일을 로딩하려 시도한다.
     이미 페이지 내에 <script> 태그를 이용해 포함한 경우에는 동적 로딩은 시도되지 않는다.
-    동적 로딩을 시도하는 파일 경로는 javascripts/service/hive.(module.Name).js 이다.
+    동적 로딩을 시도하는 파일 경로는 javascripts/service/yobi.(module.Name).js 이다.
 * 자바스크립트 파일 로딩이 완료되어 모듈 코드를 사용할 수 있을 때 자동으로 초기화를 시도하며 내부적으로 수행되는 코드는 아래와 같다.
-    이 중 htOption 변수는 $hive.loadModule() 의 두번째 인자와 동일하다
+    이 중 htOption 변수는 $yobi.loadModule() 의 두번째 인자와 동일하다
 
->        new hive.module.Name(htOption)
+>        new yobi.module.Name(htOption)
 
-* $hive.loadModule()는 모듈 함수를 실행하는 역할만 한다. 별도의 인터페이스가 필요한 것은 아니기 때문에
+* $yobi.loadModule()는 모듈 함수를 실행하는 역할만 한다. 별도의 인터페이스가 필요한 것은 아니기 때문에
     모듈 내부의 함수 구조가 모듈 로딩 자체에 영향을 주지는 않는다.
 
 ## 기타
@@ -64,7 +64,7 @@
 * HTML 템플릿은 되도록 자바스크립트 파일 내에 포함하지 않는다
 * HTML 템플릿은 정적 페이지내에 <script type="text/x-jquery-tmpl"> 형태로 위치시키고 자바스크립트는 그 내용을 활용하는 형태로 작성한다
 * HTML 템플릿 문법($.tmpl)은 https://github.com/BorisMoore/jquery-tmpl 참조
-* 단순하게 문자열 치환 기능만을 사용할 때는 $.tmpl 대신 $hive.tmpl 함수를 사용한다
+* 단순하게 문자열 치환 기능만을 사용할 때는 $.tmpl 대신 $yobi.tmpl 함수를 사용한다
 
 >    <script type="text/x-jquery-tmpl" id="tplItem">
 >        <div>${name} ${email}</div>
@@ -74,4 +74,4 @@
 >    var htData = {"name": "John Doe", "email":"foo@bar.com"};
 >
 >    var welDiv = $.tmpl(sTpl, htData); // returns wrapped element
->    var sHTML = $hive.tmpl(sTpl, htData); // returns plain string
+>    var sHTML = $yobi.tmpl(sTpl, htData); // returns plain string
docs/technical/javascript-naming-convention.md
--- docs/technical/javascript-naming-convention.md
+++ docs/technical/javascript-naming-convention.md
@@ -20,18 +20,18 @@
 
 * 네임스페이스 이름은 소문자를 사용한다
 
-        hive.namespace.Module = {};
+        yobi.namespace.Module = {};
 
-* 네임스페이스 이름은 hive 형식으로 시작한다. $hive 를 사용하는 경우에는 이미 hive 네임스페이스가 정의되어 있다.
+* 네임스페이스 이름은 yobi 형식으로 시작한다. $yobi 를 사용하는 경우에는 이미 yobi 네임스페이스가 정의되어 있다.
 
-        var oNS = $hive.createNamespace("hive.namespace.Module");
+        var oNS = $yobi.createNamespace("yobi.namespace.Module");
         oNS.container[oNS.name] = function() { };
 
 * 네임스페이스의 이름을 정의할 때에는 언더스코어 표기법을 적용한다. 
 
-        hive.project = {};
-        hive.project.todo_list = {};
-        hive.project.todo_list.Controller = function(){ };
+        yobi.project = {};
+        yobi.project.todo_list = {};
+        yobi.project.todo_list.Controller = function(){ };
 
 ## 모듈 이름
 
@@ -140,9 +140,9 @@
 * JavaScript 파일은 네임스페이스를 포함하여 모듈 단위로 구성한다. 파일 이름 규칙은 각각 네임스페이스 + 모듈 이름 규칙을 따른다
 
         js/lib/jquery/jquery-1.9.0.js
-        js/common/hive.Label.js
-        js/service/hive.project.New.js
-        js/service/hive.board.List.js
+        js/common/yobi.Label.js
+        js/service/yobi.project.New.js
+        js/service/yobi.board.List.js
 
 
 ----
docs/technical/label-typeahead.md
--- docs/technical/label-typeahead.md
+++ docs/technical/label-typeahead.md
@@ -1,7 +1,7 @@
 소개
 ----
 
-HIVE는 태그에 대한 자동완성 API를 제공한다. URL `/tags`로 요청하면 json 포맷으로 된 태그들의 목록을 돌려받는다.
+Yobi는 태그에 대한 자동완성 API를 제공한다. URL `/tags`로 요청하면 json 포맷으로 된 태그들의 목록을 돌려받는다.
 
 요청
 ----
docs/technical/name-validation.md
--- docs/technical/name-validation.md
+++ docs/technical/name-validation.md
@@ -56,7 +56,7 @@
 예외
 ----
 
-MS-DOS나 Windows 3.1, Windows 95 등에서 사용하는, "FILENAME.TXT"와 같은 식의 8.3 filename(short filename)은 지원하지 않는 것으로 한다. Hive는 Oracle JRE의 [Certified System Configurations]((http://www.oracle.com/technetwork/java/javase/config-417990.html) 이외의 구성에서는 정상 동작하는 것을 보장하지 않는다.
+MS-DOS나 Windows 3.1, Windows 95 등에서 사용하는, "FILENAME.TXT"와 같은 식의 8.3 filename(short filename)은 지원하지 않는 것으로 한다. Yobi는 Oracle JRE의 [Certified System Configurations]((http://www.oracle.com/technetwork/java/javase/config-417990.html) 이외의 구성에서는 정상 동작하는 것을 보장하지 않는다.
 
 기타 주의사항
 -------------
@@ -82,4 +82,4 @@
 
 반면 저장소 이름에 대한 규칙은 명확히 알려주지 않으므로 실험을 통해서 알아낼 수 밖에 없다. 확인해 본 결과 alphanumeric과 `-`, `_`, `.`를 사용할 수 있으며 그 이외의 문자는 `-`로 자동 변환된다. 또한 예외적으로 예약된 이름들이 있다. 예를 들어 저장소 이름을 `.`나 `..`라고 지을 수는 없다.
 
-Hive가 Github의 저장소를 import하거나 혹은 반대의 상황이 가능하도록 하려면 가급적 서로의 이름규칙이 호환되도록 하는 것이 편하다.
+Yobi가 Github의 저장소를 import하거나 혹은 반대의 상황이 가능하도록 하려면 가급적 서로의 이름규칙이 호환되도록 하는 것이 편하다.
docs/technical/pagination.md
--- docs/technical/pagination.md
+++ docs/technical/pagination.md
@@ -1,12 +1,12 @@
 Introduction
 ============
 
-게시물의 목록과 같이 컬렉션인 리소스의 경우, 그 리소스의 전체가 아닌 일부만 보고 싶은 경우가 있다. 이러한 요구를 만족시키기 위해 HIVE는 pagination을 지원한다. pagination을 지원하는 리소스는 페이지들의 list로 간주되며, 페이지는 1개 이상의 element의 list이다. 클라이언트는 리소스의 특정 페이지만을 요청할 수 있으며, 서버 역시 특정 페이지만을 돌려줄 수 있다.
+게시물의 목록과 같이 컬렉션인 리소스의 경우, 그 리소스의 전체가 아닌 일부만 보고 싶은 경우가 있다. 이러한 요구를 만족시키기 위해 Yobi는 pagination을 지원한다. pagination을 지원하는 리소스는 페이지들의 list로 간주되며, 페이지는 1개 이상의 element의 list이다. 클라이언트는 리소스의 특정 페이지만을 요청할 수 있으며, 서버 역시 특정 페이지만을 돌려줄 수 있다.
 
 pagination.js
 =============
 
-HIVE는 pagination 레이아웃을 그려주는 자바스크립트 라이브러리인 pagination.js를 제공한다. 이 파일은 public/javascript/paginatin.js 에 위치한다.
+Yobi는 pagination 레이아웃을 그려주는 자바스크립트 라이브러리인 pagination.js를 제공한다. 이 파일은 public/javascript/paginatin.js 에 위치한다.
 
 Pagination.update(target, totalPages, options)
 ----------------------------------------------
docs/technical/uploader-server-internal.md
--- docs/technical/uploader-server-internal.md
+++ docs/technical/uploader-server-internal.md
@@ -3,7 +3,7 @@
 개요
 ----
 
-Hive의 파일 업로드 및 다운로드 기능은 HTTP 요청과 응답을 통해 이루어진다. 요청은 `controller.AttachmentApp`이 `models.Attachment`를 이용하여 처리한다.
+Yobi의 파일 업로드 및 다운로드 기능은 HTTP 요청과 응답을 통해 이루어진다. 요청은 `controller.AttachmentApp`이 `models.Attachment`를 이용하여 처리한다.
 
 파일을 업로드하거나 다운로드하는 요청은 conf/routes 파일에 다음과 같이 정의되어 있다.
 
docs/technical/yobi-ui.html (Renamed from docs/technical/hive-ui.html)
--- docs/technical/hive-ui.html
+++ docs/technical/yobi-ui.html
@@ -2,14 +2,14 @@
 <html lang="ko">
 <head>
 	<meta charset="utf-8">
-	<title>HIVE UI</title>
+	<title>Yobi UI</title>
 	<base href="http://localhost:9000">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<link rel="shortcut icon" type="image/png" href="/assets/images/favicon.ico">
 	<link rel="stylesheet" type="text/css" media="screen" href="/assets/stylesheets/bootstrap.css">
-	<link rel="stylesheet" type="text/css" media="screen" href="/assets/stylesheets/hive.css">
+	<link rel="stylesheet" type="text/css" media="screen" href="/assets/stylesheets/yobi.css">
 	<script type="text/javascript" src="/assets/javascripts/lib/jquery/jquery-1.9.0.js"></script>
-	<script type="text/javascript" src="/assets/javascripts/common/hive.Common.js"></script>
+	<script type="text/javascript" src="/assets/javascripts/common/yobi.Common.js"></script>
 	<script type="text/javascript" src="/assets/javascripts/lib/bootstrap.js"></script>
 	<style type="text/css">
 		body { color:#ccc; }
@@ -24,7 +24,7 @@
 <body>
 
 <header class="gnb-outer">
-	<span class="gnb-logo orange">HIVE</span>
+	<span class="gnb-logo orange">Yobi</span>
 	<span class="subtitle">User Interface Kit</span>
 </header>
 
@@ -211,7 +211,7 @@
 		<hr/>
 		<h3>Tabs</h3>
 		<div>
-			<ul class="nav nav-tabs hive-tabs">
+			<ul class="nav nav-tabs yobi-tabs">
 				<li class="active">
 					<a href="#">파일</a>
 				</li>
docs/yobi_front.png (Binary) (Renamed from docs/hive_front.png (Binary))
--- docs/hive_front.png
+++ docs/yobi_front.png
Binary file is not shown
docs/yobi_front.png.png (Binary) (Renamed from docs/hive_front.png.png (Binary))
--- docs/hive_front.png.png
+++ docs/yobi_front.png.png
Binary file is not shown
project/Build.scala
--- project/Build.scala
+++ project/Build.scala
@@ -50,7 +50,7 @@
       resolvers += "scm-manager release repository" at "http://maven.scm-manager.org/nexus/content/groups/public",
       resolvers += "julienrf.github.com" at "http://julienrf.github.com/repo/",
       templatesImport += "models.enumeration._",
-      lessEntryPoints <<= baseDirectory(_ / "app" / "assets" / "stylesheets" ** "hive.less"),
+      lessEntryPoints <<= baseDirectory(_ / "app" / "assets" / "stylesheets" ** "yobi.less"),
         //      jacoco.settings:_*,
       javaOptions in test ++= Seq("-Xmx512m", "-XX:MaxPermSize=512m"),
       javacOptions ++= Seq("-Xlint:all", "-Xlint:-path"),
public/javascripts/common/yobi.Common.js (Renamed from public/javascripts/common/hive.Common.js)
--- public/javascripts/common/hive.Common.js
+++ public/javascripts/common/yobi.Common.js
@@ -1,14 +1,14 @@
 /**
- * @(#)hive.Common.js 2013.03.11
+ * @(#)yobi.Common.js 2013.03.11
  *
  * Copyright NHN Corporation.
  * Released under the MIT license
  * 
- * http://hive.dev.naver.com/license
+ * http://yobi.dev.naver.com/license
  */
-window.hive = (typeof hive == "undefined") ? {} : hive;
+window.yobi = (typeof yobi == "undefined") ? {} : yobi;
 
-$hive = hive.Common = (function(){
+$yobi = yobi.Common = (function(){
 	
 	var htVar = {
 		"sScriptPath":"",
@@ -26,12 +26,12 @@
 
 	/**
 	 * Create namespace object from String
-	 * @param {String} sName namespace string like 'hive.module.Name'
+	 * @param {String} sName namespace string like 'yobi.module.Name'
 	 * @returns {Hash Table} container object and last name of argument
 	 * @example 
-	 * var oNS = createNamespace("hive.module.Name");
+	 * var oNS = createNamespace("yobi.module.Name");
 	 * oNS.container[oNS.name] = { ... };
-	 * // oNS.container === hive.module
+	 * // oNS.container === yobi.module
 	 * // oNS.name === "Name"
 	 */
 	function createNamespace(sNamespace) {
@@ -72,11 +72,11 @@
 			htVar.htTryLoad[sName] = (typeof htVar.htTryLoad[sName] == "undefined") ? 1 : (++htVar.htTryLoad[sName]);
 			
 			if(htVar.htTryLoad[sName] > 3){
-				console.log("[HIVE] fail to load module " + sName);
+				console.log("[Yobi] fail to load module " + sName);
 				return false;
 			}
 			
-			var sURL = htVar.sScriptPath + "service/hive." + sName + ".js";
+			var sURL = htVar.sScriptPath + "service/yobi." + sName + ".js";
 			var fOnLoad = function(){
 				loadModule(sName, htOptions, fCallback);
 			};
@@ -96,7 +96,7 @@
 	function registerModule(sName, htOptions){
 		var aNames = sName.split(".");
 		var sDepth = aNames.shift();
-		var oModule = hive[sDepth];
+		var oModule = yobi[sDepth];
 		
 		while(aNames.length && oModule){
 			sDepth = aNames.shift();
@@ -105,7 +105,7 @@
 		
 		/*
 		if(typeof oModule != "function"){
-			console.log("[HIVE] " + sName + " is not loaded or invalid module");
+			console.log("[Yobi] " + sName + " is not loaded or invalid module");
 			return false;
 		}
 		
@@ -249,7 +249,7 @@
 	 */
 	function showAlert(sMessage, fOnAfterHide){
 		if(!htVar.oAlertDialog){
-			htVar.oAlertDialog = new hive.ui.Dialog("#hiveDialog");
+			htVar.oAlertDialog = new yobi.ui.Dialog("#yobiDialog");
 		}
 		
 		htVar.oAlertDialog.show(sMessage, {
@@ -264,8 +264,8 @@
 	 */
 	function notify(sMessage, nDuration){
 		if(!htVar.oToast){
-			htVar.oToast = new hive.ui.Toast("#hiveToasts", {
-				"sTplToast": $("#tplHiveToast").text()
+			htVar.oToast = new yobi.ui.Toast("#yobiToasts", {
+				"sTplToast": $("#tplYobiToast").text()
 			});
 		}
 		
public/javascripts/common/yobi.FileDownloader.js (Renamed from public/javascripts/common/hive.FileDownloader.js)
--- public/javascripts/common/hive.FileDownloader.js
+++ public/javascripts/common/yobi.FileDownloader.js
@@ -1,12 +1,12 @@
 /**
- * @(#)hive.FileDownloader 2013.04.09
+ * @(#)yobi.FileDownloader 2013.04.09
  *
  * Copyright NHN Corporation.
  * Released under the MIT license
  * 
- * http://hive.dev.naver.com/license
+ * http://yobi.dev.naver.com/license
  */
-hive.FileDownloader = function(htOptions) {
+yobi.FileDownloader = function(htOptions) {
 
 	var htVar = {};
 	var htElement = {};
@@ -50,7 +50,7 @@
 	function _requestList(){
 		var htData = _getRequestData();
 
-		$hive.sendForm({
+		$yobi.sendForm({
 			"sURL"     : htVar.sAction,
 			"htData"   : htData,
 			"htOptForm": {"method":"get"},
@@ -115,7 +115,7 @@
 
 // legacy compatibility
 var fileDownloader = function(welTarget, sAction){
-	new hive.FileDownloader({
+	new yobi.FileDownloader({
 		"elTarget": $(welTarget),
 		"sAction" : sAction
 	});
public/javascripts/common/yobi.FileUploader.js (Renamed from public/javascripts/common/hive.FileUploader.js)
--- public/javascripts/common/hive.FileUploader.js
+++ public/javascripts/common/yobi.FileUploader.js
@@ -1,506 +1,506 @@
-/**
- * @(#)hive.FileUploader 2013.03.21
- *
- * Copyright NHN Corporation.
- * Released under the MIT license
- * 
- * http://hive.dev.naver.com/license
- */
-hive.FileUploader = (function() {
-	
-	var htVar = {};
-	var htElements = {};
-	
-	/**
-	 * initialize fileUploader
-	 * 파일 업로더 초기화 함수. fileUploader.init(htOptions) 으로 사용한다.
-	 * 
-	 * @param {Hash Table} htOptions
-	 * @param {Variant} htOptions.elTarget     첨부파일 
-	 * @param {Variant} htOptions.elTextarea   이미지 첨부파일의 경우 클릭시 이 영역에 태그를 삽입한다   
-	 * @param {String}  htOptions.sTplFileItem 첨부한 파일명을 표시할 HTML 템플릿   
-	 */
-	function _init(htOptions){
-		htOptions = htOptions || {};
-		
-		_initElement(htOptions);
-		_initVar(htOptions);
-		_initDroppable();
-		
-		_attachEvent();
+/**
+ * @(#)yobi.FileUploader 2013.03.21
+ *
+ * Copyright NHN Corporation.
+ * Released under the MIT license
+ * 
+ * http://yobi.dev.naver.com/license
+ */
+yobi.FileUploader = (function() {
+	
+	var htVar = {};
+	var htElements = {};
+	
+	/**
+	 * initialize fileUploader
+	 * 파일 업로더 초기화 함수. fileUploader.init(htOptions) 으로 사용한다.
+	 * 
+	 * @param {Hash Table} htOptions
+	 * @param {Variant} htOptions.elTarget     첨부파일 
+	 * @param {Variant} htOptions.elTextarea   이미지 첨부파일의 경우 클릭시 이 영역에 태그를 삽입한다   
+	 * @param {String}  htOptions.sTplFileItem 첨부한 파일명을 표시할 HTML 템플릿   
+	 */
+	function _init(htOptions){
+		htOptions = htOptions || {};
+		
+		_initElement(htOptions);
+		_initVar(htOptions);
+		_initDroppable();
+		
+		_attachEvent();
         _requestList();
-	}
-
-	/**
-	 * 변수 초기화
-	 * initialize variables
-	 * 
-	 * @param {Hash Table} htOptions 초기화 옵션
-	 */
-	function _initVar(htOptions){
-		htVar.sAction      = htOptions.sAction;
-		htVar.sTplFileItem = htOptions.sTplFileItem;
-		htVar.htUploadOpts = {"dataType": "json"};
-		
-		htVar.sMode = htOptions.sMode;
-		htVar.sResourceId = htElements.welContainer.attr('data-resourceId');
-		htVar.sResourceType = htElements.welContainer.attr('data-resourceType');
-		
-		htVar.bDroppable = false;
-	}
-
-	/**
-	 * 엘리먼트 초기화
-	 * initialize elements
-	 * 
-	 * @param {Hash Table} htOptions 초기화 옵션
-	 */
-	function _initElement(htOptions){
-		htElements.welContainer = $(htOptions.elContainer);
-		htElements.welTextarea  = $(htOptions.elTextarea);
-		
-		htElements.welInputFile = htElements.welContainer.find("input.file");
-		htElements.welFileList  = htElements.welContainer.find("ul.attached-files");
-		htElements.welFileListHelp = htElements.welContainer.find("p.help");
-		htElements.welHelpDroppable = htElements.welContainer.find(".help-droppable");
-	}
-	
-	/**
-	 * 드래그앤드롭 설정
-	 * initialize drag&drop upload 
-	 */
-	function _initDroppable(){
-	    if(window.File && window.FileList){
-	        htVar.bDroppable = true;
-	        htElements.welHelpDroppable.show();
-	    }
-	}
-	
-	/**
-	 * 이벤트 핸들러 설정
-	 * attach event handlers
-	 */
-	function _attachEvent(){
-		htElements.welInputFile.change(_onChangeFile);
-		
-		if(htVar.bDroppable){
-		    htElements.welContainer.bind("dragover", function(weEvt){
-		        weEvt.preventDefault(); 
-		    });
-		    htElements.welContainer.bind("drop", _onDropFile);
-		}
-	}
-	
-	/**
-	 * 파일을 드래그앤드롭해서 가져왔을 때 이벤트 핸들러
-	 * @param {Wrapped Event} weEvt
-	 */
-	function _onDropFile(weEvt){
-	    var oFiles = weEvt.originalEvent.dataTransfer.files;
-	    if(!oFiles || oFiles.length === 0){
-	        return;
-	    }
-	    
-	    var welForm = _getAjaxForm(oFiles);
-        var oFile = welForm.data("file");
-        _appendFileItem(oFile, true);
-	    
-        try {
-            welForm.submit();
-        } finally {
-            welForm.remove();
-            welForm = null;
-        }
-        
-        // TODO: 여러 파일 전송 지원
-        if(oFiles.length > 1){
-            $hive.notify(Messages("attach.multipleNotYet"));
-        }
-        
-	    weEvt.stopPropagation();
-	    weEvt.preventDefault();
-	    return false;
-	}
-	
-	/**
-	 * 서버에 첨부파일 목록 요청
-	 * request attached file list
-	 */
-	function _requestList(){
-        var htData = {};
-        
-        if(typeof htVar.sResourceType !== "undefined"){
-            htData.containerType = htVar.sResourceType;
-        }
-        
-        if(typeof htVar.sResourceId !== "undefined"){
-            htData.containerId = htVar.sResourceId;
-        }
-
-		$hive.sendForm({
-			"sURL"     : htVar.sAction,
-			"htData"   : htData,
-			"htOptForm": {"method":"get"},
-			"fOnLoad"  : _onLoadRequest
-		});		
-	}
-	
-    /**
-     * 서버에서 수신한 첨부파일 목록 처리함수
-     * 
-     * @param {Object} oRes
-     */
-	function _onLoadRequest(oRes) {
-        _appendFileItem(oRes.attachments, false); // 이미 첨부되어 있는 파일
-        _appendFileItem(oRes.tempFiles, true);    // 임시 파일 (저장하면 첨부됨)
-	}
-
-	/**
-	 * 파일 선택시 이벤트 핸들러
-	 * change event handler on <input type="file">
-	 */
-	function _onChangeFile(){
-		var sFileName = _getBasename(htElements.welInputFile.val());
-		if(!sFileName || sFileName === ""){
-			return;
-		}
-		
-		// AjaxForm 생성하고 파일 첨부 목록에 항목 추가
-        var welForm = _getAjaxForm();
-        var oFile = welForm.data("file");
-		_appendFileItem(oFile, true);
-
-		try {
-			welForm.submit();
-		} finally {
-			welForm.remove();
-			welForm = null;
-		}
-	}
-
-	/**
-	 * 파일 전송을 위한 ajaxForm 객체를 반환하는 함수
-     * 전송 상태 표시를 위한 이벤트 핸들러를 설정하고
-     * 선택한 파일 정보는 welForm.data("files") 로 제공한다 
-	 * 
-	 * - _onChangeFile 에서 호출하는 경우:
-	 *    파일을 선택한 <input type="file">을 복제하여 사용한다
-	 * 
-	 * - _onDropFile 에서 호출하는 경우:
-	 *    파일 목록(FileList) 객체를 인자로 받아 사용한다
-	 * 
-	 * @param {FileList} oFiles FileList 객체 (Optional)
-	 * @return {Wrapped Element}
-	 */
-	function _getAjaxForm(oFiles){
-	    var nSubmitId = parseInt(Math.random() * new Date().getTime());
-        var welInputFile = htElements.welInputFile.clone();
-        var welForm = $('<form method="post" enctype="multipart/form-data" style="display:none">');    
-        welInputFile[0].files = oFiles || htElements.welInputFile[0].files;
-        
-        // TODO: 여러 파일 전송
-        
-        // 전송 상태 표시를 위한 submitId 값
-        var oFile = welInputFile[0].files[0];
-        oFile.nSubmitId = nSubmitId;
-        
-        welForm.attr('action', htVar.sAction);
-        welForm.data('file', oFile);
-        welForm.append(welInputFile).appendTo(document.body);
-        
-        // 폼 이벤트 핸들러 설정: nSubmitId 가 필요한 부분만
-        var htUploadOpts = htVar.htUploadOpts;
-        htUploadOpts.success = function(oRes){
-            _onSuccessSubmit(nSubmitId, oRes);
-        };
-        htUploadOpts.uploadProgress = function(oEvent, nPos, nTotal, nPercentComplete){
-            _onUploadProgress(nSubmitId, oEvent, nPos, nTotal, nPercentComplete);
-        };
-        htUploadOpts.error = function(oRes){
-            _onErrorSubmit(nSubmitId, oRes);
-        };
-
-        welForm.ajaxForm(htUploadOpts);
-        
-        return welForm;
-	}
-	
-	/**
-	 * 파일 항목을 첨부 파일 목록에 추가한다
-	 * 이미 전송된 파일 목록은 _onLoadRequest 에서 호출하고
-	 * 아직 전송전 임시 파일은 _onChangeFile  에서 호출한다
-	 *  
-	 * oFile.id 가 존재하는 경우는 이미 전송된 파일 항목이고
-	 * oFile.id 가 없는 경우는 전송대기 상태의 임시 항목이다
-	 *  
-	 * @param {Variant} vFile 하나의 파일 항목 객체(Object) 또는 여러 파일 항목을 담고 있는 배열(Array)
-	 * @param {Boolean} bTemp 임시 저장 여부
-	 * @return {Number} 이번에 목록에 추가된 파일들의 크기 합계
-	 */
-	function _appendFileItem(vFile, bTemp){
-	    if(typeof vFile === "undefined"){
-	        return 0;
-	    }
-	    
-        var welItem;
-        var nFileSize = 0;
-	    var aFiles = (vFile instanceof Array) ? vFile : [vFile]; // 배열 변수로 단일화
-	    var aWelItems = [];
-	    
-        aFiles.forEach(function(oFile) {
-            welItem = _getFileItem(oFile, bTemp);
-            
-            if(typeof oFile.id !== "undefined"){ // 서버의 첨부 목록에서 가져온 경우
-                welItem.addClass("complete");
-                welItem.click(_onClickListItem);
-            } else {                            // 전송하기 전의 임시 항목
-                welItem.attr("id", oFile.nSubmitId);
-                welItem.css("opacity", "0.2");
-                welItem.data("progressBar", welItem.find(".progress > .bar"));                
-            }
-            
-            aWelItems.push(welItem);
-            nFileSize += parseInt(oFile.size, 10);
-        });
-
-        if(aWelItems.length > 0){
-            htElements.welFileList.show();
-            htElements.welFileListHelp.show();
-        }
-
-        // DOM 변형 작업은 한번에 하는게 성능향상
-        htElements.welFileList.append(aWelItems);
-        return nFileSize;
-	}
-	
-    /**
-     * 파일 목록에 추가할 수 있는 LI 엘리먼트를 반환하는 함수
-     * Create uploaded file item HTML element using template string
-     * 
-     * @param {Hash Table} htFile 파일 정보
-     * @param {Boolean} bTemp 임시 파일 여부
-     * @return {Wrapped Element} 
-     */
-    function _getFileItem(htFile, bTemp) {
-        var welItem = $.tmpl(htVar.sTplFileItem, {
-            "fileId"  : htFile.id,
-            "fileName": htFile.name,
-            "fileHref": htFile.url,
-            "fileSize": htFile.size,
-            "fileSizeReadable": humanize.filesize(htFile.size),
-            "mimeType": htFile.mimeType
-        });
-        
-        // 임시 파일 표시
-        if(bTemp){
-            welItem.addClass("temporary");
-        }
-        return welItem;
-    }
-    
-    /**
-     * 파일 목록에 임시 추가 상태의 항목을 업데이트 하는 함수
-     * _onChangeFile    에서 _appendFileItem 을 할 때는 파일 이름만 있는 상태 (oFile.id 없음)
-     * _onSuccessSubmit 에서 _updateFileItem 을 호출해서 나머지 정보 마저 업데이트 하는 구조
-     * 
-     * @param {Number} nSubmitId
-     * @param {Object} oRes
-     */
-    function _updateFileItem(nSubmitId, oRes){
-        var welItem = $("#" + nSubmitId);
-        welItem.attr({
-            "data-id"  : oRes.id,
-            "data-href": oRes.url,
-            "data-name": oRes.name,
-            "data-mime": oRes.mimeType
-        });
-        welItem.click(_onClickListItem);
-    }
-
-    /**
-     * 파일 업로드 진행상태 처리 함수
-     * uploadProgress event handler 
-     * 
-     * @param {Object} oEvent
-     * @param {Number} nPos
-     * @param {Number} nTotal
-     * @param {Number} nPercentComplete
-     */
-    function _onUploadProgress(nSubmitId, oEvent, nPos, nTotal, nPercentComplete){
-        _setProgressBar(nSubmitId, nPercentComplete);
-    }
+	}
 
-	/**
-	 * 첨부 파일 전송에 성공시 이벤트 핸들러
-	 * On success to submit temporary form created in onChangeFile()
-	 * 
-	 * @param {Hash Table} htData
-	 * @return
-	 */
-	function _onSuccessSubmit(nSubmitId, oRes){
-		htElements.welInputFile.val("");
-		
-		// Validate server response
-		if(!(oRes instanceof Object) || !oRes.name || !oRes.url){
-		    return _onErrorSubmit(nSubmitId, oRes);
-		}
-
-        // 업로드 완료된 뒤 항목 업데이트
-		_updateFileItem(nSubmitId, oRes);
-		_setProgressBar(nSubmitId, 100);
-	}
-
-    /**
-     * 업로드 진행상태 표시
-     * Set Progress Bar status 
-     * 
-     * @param {Number} nSubmitId
-     * @param {Number} nProgress
-     */
-    function _setProgressBar(nSubmitId, nProgress) {
-        var welItem = $("#" + nSubmitId);
-        welItem.data("progressBar").css("width", nProgress + "%");
-
-        // 완료 상태로 표시
-        if(nProgress*1 === 100){
-            welItem.css("opacity", "1");
-            setTimeout(function(){
-                welItem.addClass("complete");
-            }, 1000);
-        }
-    }
-
-    /**
-	 * 파일 전송에 실패한 경우
-	 * On error to submit temporary form created in onChangeFile().
-	 * 
-	 * @param {Number} nSubmitId
-	 * @param {Object} oRes
-	 */
-	function _onErrorSubmit(nSubmitId, oRes){
-	    var welItem = $("#" + nSubmitId);
-	        welItem.remove();
-	    $hive.notify(Messages("attach.error"));
-	}
-
-	/**
-	 * 첨부파일 목록에서 항목을 클릭할 때 이벤트 핸들러
-	 * On Click attached files list
-	 * 
-	 * @param {Wrapped Event} weEvt
-	 */
-	function _onClickListItem(weEvt){
-		var welTarget = $(weEvt.target);
-		var welItem = $(weEvt.currentTarget);
-		
-		// 파일 아이템 전체에 이벤트 핸들러가 설정되어 있으므로
-		// 클릭이벤트 발생한 위치를 삭제버튼과 나머지 영역으로 구분하여 처리
-		if(welTarget.hasClass("btn-delete")){
-			_deleteAttachedFile(welItem);    // 첨부파일 삭제
-		} else {
-			_insertLinkToTextarea(welItem);  // <textarea>에 링크 텍스트 추가
-		}
-	}
-	
-	/**
-	 * 선택한 파일 아이템의 링크 텍스트를 textarea에 추가하는 함수
-	 * 
-     * @param {Wrapped Element} welItem
-	 */
-	function _insertLinkToTextarea(welItem){
-		var welTextarea = htElements.welTextarea;
-		if(!welTextarea){
-			return false;
-		}
-		
-		var nPos  = welTextarea.prop('selectionStart');
-		var sText = welTextarea.val();
-		var sLink = _getLinkText(welItem);
-		
-		welTextarea.val(sText.substring(0, nPos) + sLink + sText.substring(nPos));
-	}
-	
-	/**
-	 * 선택한 파일 아이템을 첨부 파일에서 삭제
-	 * textarea에서 해당 파일의 링크 텍스트도 제거함 (_clearLinkInTextarea)
-	 * 
-	 * @param {Wrapped Element} welItem
-	 */
-	function _deleteAttachedFile(welItem){			
-		$hive.sendForm({
-			"sURL": welItem.attr("data-href"),
-			"htOptForm": {
-				"method" :"post",
-				"enctype":"multipart/form-data"
-			},
-			"htData" : {"_method":"delete"},
-			"fOnLoad": function(){
-				_clearLinkInTextarea(welItem);
-				welItem.remove();
-				
-				// 남은 항목이 없으면 목록 감춤
-				if(htElements.welFileList.children().length === 0){
-				    htElements.welFileList.hide();
-				    htElements.welFileListHelp.hide();
-				}
-			}
-		});
-	}
-	
-	/**
-	 * 파일 아이템으로부터 링크 텍스트를 생성하여 반환하는 함수
-	 * 
-	 * @param {Wrapped Element} welItem 템플릿 htVar.sTplFileItem 에 의해 생성된 첨부 파일 아이템
-	 * @return {String}
-	 */
-	function _getLinkText(welItem){
-		var sMimeType = welItem.attr("data-mime");
-		var sFileName = welItem.attr("data-name");
-		var sFilePath = welItem.attr("data-href");
-		
-		var sLinkText = '';
-		if (sMimeType.substr(0,5) === "image"){
-			sLinkText = '<img src="' + sFilePath + '">';
-		} else {
-			sLinkText = '[' + sFileName +'](' + sFilePath + ')';
-		}
-		
-		return sLinkText;
-	}
-	
-	/**
-	 * textarea에서 해당 파일 아이템의 링크 텍스트를 제거하는 함수
-	 * _deleteAttachedFile 에서 호출한다
-	 * 
-	 * @param {Wrapped Element} welItem
-	 */
-	function _clearLinkInTextarea(welItem){
-		var welTextarea = htElements.welTextarea;
-		if(!welTextarea){
-			return false;
-		}
-		
-		var sLink = _getLinkText(welItem);		
-		welTextarea.val(welTextarea.val().split(sLink).join(