Jihan Kim 2013-05-09
change view filename(HIVE-211), adjust project logo size(HIVE-213), remove unused files, fix filter markup on milestone list
@8b6acc821e97007a512a656f6d3da0d1f103847b
app/assets/stylesheets/less/_common.less
--- app/assets/stylesheets/less/_common.less
+++ app/assets/stylesheets/less/_common.less
@@ -14,7 +14,7 @@
     text-decoration: none;
     outline: none;
     &:hover { outline: none !important; color: @link-hover-color; text-decoration: underline; }
-    &:focus { outline: none !important; }
+    &:focus { outline: none !important; color: @link-hover-color; text-decoration: underline; }
 }
 
 .btn-transparent { border: 0; padding: 0; background: transparent; }
@@ -24,19 +24,6 @@
     display: none !important;
     visibility: hidden !important;
 }
-/*
-.btns {
-    font-size: 0;
-    .n-btn:first-child { margin-right: 5px; }
-}
-*/
-
-/*
-.btn {
-    margin-right:5px;
-    &:last-of-type { margin-right:0; }
-}
-*/
 
 /** pagination **/
 .page-navigation-wrap {
app/assets/stylesheets/less/_mixins.less
--- app/assets/stylesheets/less/_mixins.less
+++ app/assets/stylesheets/less/_mixins.less
@@ -91,6 +91,14 @@
     filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='@{startColor}', endColorstr='@{endColor}',GradientType=0 ); /* IE6-9 */    
 }
 
+// BackgroundSize
+.background-size(@param:cover){
+  -webkit-background-size: @param;
+  -moz-background-size: @param;
+  -o-background-size: @param;
+  background-size: @param;    
+}
+
 // Text overflow
 // -------------------------
 // Requires inline-block or block for proper styling
app/assets/stylesheets/less/_page.less
--- app/assets/stylesheets/less/_page.less
+++ app/assets/stylesheets/less/_page.less
@@ -39,22 +39,33 @@
             .gnb-menus {
                 float: left;
                 /*overflow: hidden;*/
-                margin: 23px 10px 22px 34px;
-                
+                margin: 0px 10px 22px 34px;
+                /*margin: 23px 10px 22px 34px;*/
+               
                 .menu {
                     float: left;
-                    height: 24px;
-                    line-height: 24px;
                     margin-left: 35px;
                     color: @gnb-link-color;
+                    
                     a {
+                        display: block;
+                        min-width:100px;
+                        height: 24px;
+                        line-height: 24px;
+                        padding-top:23px; 
+                        text-align:center;
                         font-size: 13px;
-                        &:hover, &.selected {
-                            color: @gnb-link-hover-color;
-                        }
+                        &:hover { color: @gnb-link-hover-color; }
                     }
-                    &.highlight {
-                        a { color: @gnb-link-highlight-color; }
+                    
+                    &.active {
+                        border-top:3px solid @gnb-link-active-color;
+                        
+                        a { 
+                            padding-top:20px; 
+                            color: @gnb-link-active-color;
+                            font-weight:bold; text-shadow:0px 0px 2px #fff;
+                        }
                     }
                 }
 
@@ -1426,31 +1437,43 @@
         border-bottom: 0 none;
         text-align: center;
     }
+    
+    /* 프로젝트 설정 */
     .setting-box {
         float: left;
         width: 399px;
+        
         &.left {
             padding-right: 20px;
             border-right: 1px solid @white;
             .logo-wrap {
-                vertical-align: top;
+                width:260px; height:188px;
+                background-repeat:no-repeat;
+                background-size:cover;
+                .border-radius(10px);
                 .inline-block;
-                width: 234px;
-                margin-right: 20px;
-                img { .border-radius(2px); }
             }
             .logo-desc {
-                width: 140px;
+                width: 120px;
+                font-size: 12px;
+                margin-left:10px; 
+                vertical-align:top;
+                
                 .inline-block;
-                font-size: 11px;
                 .point {
-                    color: #51AACC;
+                    color: @secondary;
+                    font-weight:bold;
+                    text-transform:uppercase;
+                    display:block; clear:both;
                 }
-                &:first-child {
-                    margin-bottom: 17px;
+                
+                .descs li { 
+                    margin-top:10px;
+                    &:last-of-type { margin-top:25px; } 
                 }
             }
         }
+        
         &.right {
             padding-left: 20px;
             border-left: 1px solid @gray-d4;
@@ -1458,7 +1481,7 @@
                 width: 380px;
             }
             .textarea {
-                height: 70px; /*111px;*/
+                height: 80px; /*111px;*/
                 margin-bottom: 0;
                 resize:vertical;
             }
@@ -1510,7 +1533,7 @@
             &:hover { color:@primary; text-decoration:underline; }
         }
         
-        .highlight a { 
+        .active a { 
             color:@primary !important;            
             &:after {
                 content:'';
@@ -1536,7 +1559,7 @@
         }
         
         a { font-weight:bold; color:#959595; padding:0 25px; font-size:11px; }
-        .highlight a { color:#000 !important; }
+        .active a { color:#000 !important; }
     }
     
     .sp-line { 
@@ -1635,7 +1658,7 @@
         float: right;
         .filter {
             margin-right:10px;
-            &.active { font-weight:bold; }
+            &.active { font-weight:bold; color:@primary; }
             &:last-of-type { margin:0; }
         }
         i { margin-right: 5px; }
@@ -1819,17 +1842,10 @@
         }
         
         &.logo {
-            width: 234px;
-            height: 168px; 
-            padding: 10px 13px;
-            line-height:168px; 
-            text-align:center;
-            
-            .logo-wrap {
-                .inline-block;
-                /*width:230px; 
-                height:160px;*/
-            }
+            width:260px; height:188px;
+            background-repeat:no-repeat;
+            background-position:center;
+            .background-size(cover);
         }
         
         &.project-info {
app/assets/stylesheets/less/_variables.less
--- app/assets/stylesheets/less/_variables.less
+++ app/assets/stylesheets/less/_variables.less
@@ -65,12 +65,11 @@
 
 @gnb-logo-bg-color:@orange;
 @gnb-bg-color     :#f3f4f6;
-@gnb-active-color :#2C4E55;
 @gnb-border-bottom:1px solid #c7c9ca;
 
-@gnb-link-color          : @gray-11;
+@gnb-link-color          : #111;
 @gnb-link-hover-color    : @orange;
-@gnb-link-highlight-color: @orange;
+@gnb-link-active-color   : @orange;
 
 @gnb-action-color: @white;
 @gnb-action-signout-color: #868D96;
app/controllers/MilestoneApp.java
--- app/controllers/MilestoneApp.java
+++ app/controllers/MilestoneApp.java
@@ -15,14 +15,14 @@
 
     public static class MilestoneCondition {
 
-        public String state = "open";
-        public String sort = "dueDate";
-        public String direction = "asc";
+        public String state    = "open";
+        public String orderBy  = "dueDate";
+        public String orderDir = "asc";
 
         public MilestoneCondition() {
-            this.state = "open";
-            this.sort = "dueDate";
-            this.direction = "asc";
+            this.state    = "open";
+            this.orderBy  = "dueDate";
+            this.orderDir = "asc";
         }
     }
 
@@ -36,8 +36,8 @@
 
         List<Milestone> milestones = Milestone.findMilestones(project.id,
                 State.getValue(mCondition.state),
-                mCondition.sort,
-                Direction.getValue(mCondition.direction));
+                mCondition.orderBy,
+                Direction.getValue(mCondition.orderDir));
 
         return ok(list.render("title.milestoneList", milestones, project, mCondition));
     }
app/controllers/ProjectApp.java
--- app/controllers/ProjectApp.java
+++ app/controllers/ProjectApp.java
@@ -64,8 +64,7 @@
 
         List<History> histories = History.makeHistory(userName, project, commits, issues, postings);
 
-        return ok(projectHome.render("title.projectHome",
-                getProject(userName, projectName), histories));
+        return ok(overview.render("title.projectHome", getProject(userName, projectName), histories));
     }
 
     public static Result newProjectForm() {
@@ -73,8 +72,7 @@
             flash(Constants.WARNING, "user.login.alert");
             return redirect(routes.UserApp.loginForm());
         } else
-            return ok(newProject
-                    .render("title.newProject", form(Project.class)));
+            return ok(create.render("title.newProject", form(Project.class)));
     }
 
     public static Result settingForm(String userName, String projectName) {
@@ -94,14 +92,12 @@
                 filledNewProjectForm.field("name").value())) {
             flash(Constants.WARNING, "project.name.duplicate");
             filledNewProjectForm.reject("name");
-            return badRequest(newProject.render("title.newProject",
-                    filledNewProjectForm));
+            return badRequest(create.render("title.newProject", filledNewProjectForm));
         } else if (filledNewProjectForm.hasErrors()) {
             System.out.println("=====" + filledNewProjectForm.errorsAsJson());
             filledNewProjectForm.reject("name");
             flash(Constants.WARNING, "project.name.alert");
-            return badRequest(newProject.render("title.newProject",
-                    filledNewProjectForm));
+            return badRequest(create.render("title.newProject", filledNewProjectForm));
         } else {
             Project project = filledNewProjectForm.get();
             project.owner = UserApp.currentUser().loginId;
@@ -172,7 +168,7 @@
         }
 
         Form<Project> projectForm = form(Project.class).fill(project);
-        return ok(projectDelete.render("title.projectSetting", projectForm, project));
+        return ok(delete.render("title.projectSetting", projectForm, project));
     }
     
     public static Result deleteProject(String userName, String projectName) throws Exception {
app/views/layout.scala.html
--- app/views/layout.scala.html
+++ app/views/layout.scala.html
@@ -71,22 +71,12 @@
         });
 	});
 </script>
-@alertUI()
 
 <!-- HIVE -->
+
+@alertUI()
 @uservoice("196721")
+@googleAnalytics("UA-40528193-1")
 
-    <script type="text/javascript">
-            var _gaq = _gaq || [];
-            _gaq.push(['_setAccount', 'UA-40528193-1']);
-            _gaq.push(['_trackPageview']);
-
-            (function() {
-            var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
-            })();
-
-    </script>
 </body>
 </html>
(No newline at end of file)
app/views/main.scala.html
--- app/views/main.scala.html
+++ app/views/main.scala.html
@@ -3,19 +3,18 @@
 @import utils._
 
 @layout(Messages(title) + " (" + project.name + ")")("prj") {
-  <header class="gnb-outer">
-    @topmenu(project)
-	@sidemenu(project)
-  </header>
+<header class="gnb-outer">
+@views.html.project.navbar(project)
+</header>
   
-  <div class="container page-wrap">
-    @alert()
-    @content
-  </div>
+<div class="container page-wrap">
+@alert()
+@content
+</div>
   
-  <footer class="page-footer-outer">
-    <div class="page-footer">
-      <span class="provider">Powered by <strong>HIVE</strong></span>
-    </div>
-  </footer>
+<footer class="page-footer-outer">
+	<div class="page-footer">
+		<span class="provider">Powered by <strong>HIVE</strong></span>
+	</div>
+</footer>
 }
(No newline at end of file)
app/views/milestone/create.scala.html
--- app/views/milestone/create.scala.html
+++ app/views/milestone/create.scala.html
@@ -1,12 +1,14 @@
-@(title:String, form: Form[Milestone], projectInst: Project)
+@(title:String, form: Form[Milestone], project: Project)
 
 @import utils.TemplateHelper._
 @import models.enumeration._
-@project.projectMngMain(title, projectInst) {
-    @prjmenu(projectInst, utils.MenuType.MILESTONE, "")
+
+@main(title, project, utils.MenuType.MILESTONE) {
+<div class="page">
+	@prjmenu(project, utils.MenuType.MILESTONE, "")
 
     <div class="form-wrap milestone frm-wrap">
-        <form class="nm" action="@routes.MilestoneApp.newMilestone(projectInst.owner, projectInst.name)" method="post">
+        <form class="nm" action="@routes.MilestoneApp.newMilestone(project.owner, project.name)" method="post">
             <div class="inner left">
             	<dl>
             		<dt>
@@ -26,7 +28,7 @@
 
                 <div class="actions">
                     <button type="submit" class="nbtn orange medium">@Messages("button.save")</button>
-                    <a href="@routes.MilestoneApp.milestones(projectInst.owner, projectInst.name)" class="nbtn medium">@Messages("button.cancel")</a>
+                    <a href="@routes.MilestoneApp.milestones(project.owner, project.name)" class="nbtn medium">@Messages("button.cancel")</a>
                 </div>
             </div>
             
@@ -47,6 +49,7 @@
             </div>
         </form>
     </div>
+</div>
 
 <link rel="stylesheet" type="text/css" href="@getCSSLink("pikaday")" />
 <script type="text/javascript" src="@getJSLink("lib/moment.min")"></script>
app/views/milestone/edit.scala.html
--- app/views/milestone/edit.scala.html
+++ app/views/milestone/edit.scala.html
@@ -1,57 +1,59 @@
-@(title: String, form: Form[Milestone], milestoneId: Long, projectInst: Project)
+@(title: String, form: Form[Milestone], milestoneId: Long, project: Project)
 
 @import utils.TemplateHelper._
 @import models.enumeration._
 @implicitField = @{ helper.FieldConstructor(simpleForm) }
 
-@project.projectMngMain(title, projectInst) {
-@prjmenu(projectInst, utils.MenuType.MILESTONE, "")
+@main(title, project, utils.MenuType.MILESTONE) {
+<div class="page">
+	@prjmenu(project, utils.MenuType.MILESTONE, "")
 
-<div class="form-wrap milestone frm-wrap">
-	<form class="nm" action="@routes.MilestoneApp.editMilestone(projectInst.owner, projectInst.name, milestoneId)" method="post">
-	<div class="inner left">
-		<dl>
-			<dt>
-				<label for="title">@Messages("milestone.form.title")</label>
-			</dt>
-			<dd>
-				@helper.input(form("title")){(id, name, value, args) =>
-					<input type="text" name="@name" id="@id" class="text" value="@value">
-				}
-			</dd>
+	<div class="form-wrap milestone frm-wrap">
+		<form class="nm" action="@routes.MilestoneApp.editMilestone(project.owner, project.name, milestoneId)" method="post">
+		<div class="inner left">
+			<dl>
+				<dt>
+					<label for="title">@Messages("milestone.form.title")</label>
+				</dt>
+				<dd>
+					@helper.input(form("title")){(id, name, value, args) =>
+						<input type="text" name="@name" id="@id" class="text" value="@value">
+					}
+				</dd>
+		
+				<dt>
+					<label for="contents">@Messages("milestone.form.content")</label>
+				</dt>
+				<dd>
+					@helper.input(form("contents")){(id, name, value, args) =>
+					<textarea class="textarea" id="@id" name="@name">@value</textarea>
+					}
+				</dd>
+			</dl>
 	
-			<dt>
-				<label for="contents">@Messages("milestone.form.content")</label>
-			</dt>
-			<dd>
-				@helper.input(form("contents")){(id, name, value, args) =>
-				<textarea class="textarea" id="@id" name="@name">@value</textarea>
+			<div class="actions">
+				<button type="submit" class="nbtn orange medium">@Messages("button.save")</button>
+				<a href="@routes.MilestoneApp.milestones(project.owner, project.name)" class="nbtn medium">@Messages("button.cancel")</a>
+			</div>
+		</div>
+	
+		<div class="inner right bubble-wrap dark-gray">
+			<p>@Messages("milestone.form.state")</p>
+			<div>
+				<input type="radio" name="state" value="@State.OPEN" id="milestone-open" class="radio-btn" @if(form("state").value.equals(State.OPEN.name)) { checked="checked" }><label for="milestone-open" class="bold">Open</label>&nbsp;
+				<input type="radio" name="state" value="@State.CLOSED" id="milestone-close" class="radio-btn" @if(form("state").value.equals(State.CLOSED.name)) { checked="checked" }><label for="milestone-close" class="bold">Closed</label>
+			</div>
+			<hr/>
+			<p>@Messages("milestone.form.dueDate")</p>
+			<label for="dueDate">
+				@helper.input(form("dueDate")){(id, name, value, args) =>
+				<input type="text" name="@name" id="@id" class="validate due-date" value="@value">
 				}
-			</dd>
-		</dl>
-
-		<div class="actions">
-			<button type="submit" class="nbtn orange medium">@Messages("button.save")</button>
-			<a href="@routes.MilestoneApp.milestones(projectInst.owner, projectInst.name)" class="nbtn medium">@Messages("button.cancel")</a>
+			</label>
+			<div id="datepicker" class="date-picker"></div>
 		</div>
+		</form>
 	</div>
-
-	<div class="inner right bubble-wrap dark-gray">
-		<p>@Messages("milestone.form.state")</p>
-		<div>
-			<input type="radio" name="state" value="@State.OPEN" id="milestone-open" class="radio-btn" @if(form("state").value.equals(State.OPEN.name)) { checked="checked" }><label for="milestone-open" class="bold">Open</label>&nbsp;
-			<input type="radio" name="state" value="@State.CLOSED" id="milestone-close" class="radio-btn" @if(form("state").value.equals(State.CLOSED.name)) { checked="checked" }><label for="milestone-close" class="bold">Closed</label>
-		</div>
-		<hr/>
-		<p>@Messages("milestone.form.dueDate")</p>
-		<label for="dueDate">
-			@helper.input(form("dueDate")){(id, name, value, args) =>
-			<input type="text" name="@name" id="@id" class="validate due-date" value="@value">
-			}
-		</label>
-		<div id="datepicker" class="date-picker"></div>
-	</div>
-	</form>
 </div>
 
 <link rel="stylesheet" type="text/css" href="@getCSSLink("pikaday")" />
app/views/milestone/list.scala.html
--- app/views/milestone/list.scala.html
+++ app/views/milestone/list.scala.html
@@ -1,58 +1,46 @@
-@(title: String, milestones: List[models.Milestone], projectInst: Project, mCondition: MilestoneApp.MilestoneCondition)
+@(title: String, milestones: List[models.Milestone], project: Project, param: MilestoneApp.MilestoneCondition)
 @import scala.collection.immutable._
 @import utils.TemplateHelper._
 
-@makeSortLink(_sort:String) = @{
-    var _direction = "asc";
-    if(mCondition.sort.equals(_sort)) {
-        if(_direction.equals(mCondition.direction)) {
-            _direction = "desc"
-        }
-    }
-    buildQueryString(routes.MilestoneApp.milestones(projectInst.owner, projectInst.name),
-      Map("state"->mCondition.state, "sort"->_sort, "direction"->_direction)
-    )
-}
-@makeIssuesLink(mId: Long, _state: String) = @{
-  buildQueryString(routes.IssueApp.issues(projectInst.owner, projectInst.name, _state),
-    Map("milestone"->mId.toString)
-  )
-}
-@sortMark(_sort: String) = @{
-    /* TODO It will be chnaged. */
-    if(mCondition.sort.equals(_sort)) {
-        if(mCondition.direction.equals("desc")){
-        "down"
-        } else {
-        "up"
-        }
-    } else {
-    	/*"up hidden"*/
-        "up"
-    }
-}
-@makeMilestoneListLink(_state: String) = @{
-  buildQueryString(routes.MilestoneApp.milestones(projectInst.owner, projectInst.name),
-    Map("state"->_state)
-  )
+@urlToList = {@routes.MilestoneApp.milestones(project.owner, project.name)}
+
+@makeFilterLink(fieldName:String, orderBy:String, orderDir:String, fieldText:String) = {
+	@if(orderBy.equals(fieldName)) {
+		<a href="@urlToList?orderBy=@fieldName&orderDir=@if(orderDir.equals("desc")){asc}else{desc}" class="filter active"><i class="ico btn-gray-arrow @if(orderDir.equals("desc")){ down }"></i>@fieldText</a>
+	} else {
+	    <a href="@urlToList?orderBy=@fieldName&orderDir=asc" class="filter"><i class="ico btn-gray-arrow"></i>@fieldText</a>
+	}
 }
 
-@project.projectMngMain(title, projectInst) {
-    @prjmenu(projectInst, utils.MenuType.MILESTONE, "")
+@makeMilestoneListLink(_state: String) = @{
+	buildQueryString(routes.MilestoneApp.milestones(project.owner, project.name),
+		Map("state"->_state)
+	)
+}
+
+@makeIssuesLink(mId: Long, _state: String) = @{
+	buildQueryString(routes.IssueApp.issues(project.owner, project.name, _state),
+		Map("milestone"->mId.toString)
+	)
+}
+
+@main(title, project, utils.MenuType.MILESTONE) {
+<div class="page">
+	@prjmenu(project, utils.MenuType.MILESTONE, "")
     
     <div class="tab-wrap">
         <div class="pull-right btns">
-            <a href="@routes.MilestoneApp.newMilestoneForm(projectInst.owner, projectInst.name)" class="nbtn medium orange">@Messages("milestone.menu.new")</a>
+            <a href="@routes.MilestoneApp.newMilestoneForm(project.owner, project.name)" class="nbtn medium orange">@Messages("milestone.menu.new")</a>
         </div>
         
         <ul class="nav nav-tabs">
-            <li class="@if(mCondition.state.equals("all")){active}">
+            <li class="@if(param.state.equals("all")){active}">
                 <a href="@makeMilestoneListLink("all")">@Messages("milestone.state.all")</a>
             </li>
-            <li class="@if(mCondition.state.equals("open")){active}">
+            <li class="@if(param.state.equals("open")){active}">
                 <a href="@makeMilestoneListLink("open")">@Messages("milestone.state.open")</a>
             </li>
-            <li class="@if(mCondition.state.equals("closed")){active}">
+            <li class="@if(param.state.equals("closed")){active}">
                 <a href="@makeMilestoneListLink("closed")">@Messages("milestone.state.closed")</a>
             </li>
         </ul>
@@ -70,9 +58,9 @@
 	@if(milestones.length > 1){
 		<div class="filter-wrap milestone">
 		<div class="filters">
-               <a href="@makeSortLink("dueDate")" class="filter"><i class="ico ico-sort @sortMark("dueDate")"></i>@Messages("order.dueDate")</a>
-               <a href="@makeSortLink("completionRate")" class="filter active"><i class="ico ico-sort @sortMark("completionRate")"></i>@Messages("order.completionRate")</a>
-           </div>
+			@makeFilterLink("dueDate", param.orderBy, param.orderDir, Messages("order.dueDate"))
+			@makeFilterLink("completionRate", param.orderBy, param.orderDir, Messages("order.completionRate"))
+		</div>
        	<div class="legend">
        		<i class="gray"></i>@Messages("issue.state.open")
             <i class="blue"></i>@Messages("issue.state.assigned")
@@ -95,7 +83,7 @@
                 
                 <div class="meta-info">
                     <strong class="version"></strong>
-                    <a href="@routes.MilestoneApp.editMilestoneForm(projectInst.owner, projectInst.name, milestone.id)" class="title">@milestone.title</a>
+                    <a href="@routes.MilestoneApp.editMilestoneForm(project.owner, project.name, milestone.id)" class="title">@milestone.title</a>
                     <span class="sp">|</span>
                     <span class="due-date">@Messages("label.dueDate") <strong>@milestone.getDueDateString</strong></span>
                 </div>
@@ -125,8 +113,8 @@
                 </div>
                 
                 <div class="actrow">
-                	<a href="@routes.MilestoneApp.editMilestoneForm(projectInst.owner, projectInst.name, milestone.id)" class="nbtn medium black"><i class="ico ico-delete-small"></i>@Messages("button.delete")</a><!-- 
-                 --><a href="@routes.MilestoneApp.editMilestoneForm(projectInst.owner, projectInst.name, milestone.id)" class="nbtn medium white"><i class="ico ico-edit-small"></i>@Messages("button.edit")</a>
+                	<a href="@routes.MilestoneApp.editMilestoneForm(project.owner, project.name, milestone.id)" class="nbtn medium black"><i class="ico ico-delete-small"></i>@Messages("button.delete")</a><!-- 
+                 --><a href="@routes.MilestoneApp.editMilestoneForm(project.owner, project.name, milestone.id)" class="nbtn medium white"><i class="ico ico-edit-small"></i>@Messages("button.edit")</a>
                 </div>
             </div>
             <div class="completion-rate @if(milestone.getCompletionRate == 100){done}"><!-- 
app/views/navbar.scala.html
--- app/views/navbar.scala.html
+++ app/views/navbar.scala.html
@@ -4,7 +4,7 @@
 @import utils._
 
 @isActiveMenu(m_type:MenuType) = @{
-    if(m_type == menuType){ "selected" }
+    if(m_type == menuType){ "active" }
 }
 
 <header class="gnb-outer">
@@ -12,14 +12,14 @@
         <div class="gnb-menu-wrap">
             <a href="@routes.Application.index()" class="logo"><span>@Messages("hive.name")</span></a>
             <ul class="gnb-menus unstyled">
-                <li class="menu">
-                    <a href="@routes.ProjectApp.newProjectForm()" class="@isActiveMenu(MenuType.NEW_PROJECT)">@Messages("title.newProject")</a>
+                <li class="menu @isActiveMenu(MenuType.NEW_PROJECT)">
+                    <a href="@routes.ProjectApp.newProjectForm()">@Messages("title.newProject")</a>
                 </li>
-                <li class="menu">
-                    <a href="@routes.ProjectApp.projects()" class="@isActiveMenu(MenuType.PROJECTS)">@Messages("title.projectList")</a>
+                <li class="menu @isActiveMenu(MenuType.PROJECTS)">
+                    <a href="@routes.ProjectApp.projects()">@Messages("title.projectList")</a>
                 </li>
-                <li class="menu">
-                    <a href="@routes.HelpApp.help()" class="@isActiveMenu(MenuType.HELP)">@Messages("title.help")</a>
+                <li class="menu @isActiveMenu(MenuType.HELP)">
+                    <a href="@routes.HelpApp.help()">@Messages("title.help")</a>
                 </li>
             </ul>
 
app/views/prjmenu.scala.html
--- app/views/prjmenu.scala.html
+++ app/views/prjmenu.scala.html
@@ -6,7 +6,7 @@
 @import utils.AccessControl._
 
 @isActiveMenu(m_type:MenuType) = @{
-    if (m_type == menuType) {"highlight"}
+    if (m_type == menuType) {"active"}
 }
 
 @makeSubMenu(call:Call, name:String) = {
@@ -16,7 +16,7 @@
     var menuState = ""
     for(call <- calls) {
         if(call.toString().equals(request().path().toString())) {
-            menuState = "highlight"
+            menuState = "active"
         }
     }
     menuState
@@ -57,20 +57,3 @@
 	</div>
 }
 </div>
-
-<script type="text/javascript">
-$(document).ready(function(){
-	try {
-		var welLink;
-
-		$(".project-menu-wrap a").each(function(n, el){
-			welLink = $(el);
-			
-			if(welLink.attr("href").split("?")[0] == document.location.pathname){
-				$(".project-menu-wrap li").removeClass("highlight");
-				welLink.parent().addClass("highlight");
-			}
-		});
-	}catch(e){}
-});
-</script>
(No newline at end of file)
app/views/project/memberList.scala.html
--- app/views/project/memberList.scala.html
+++ app/views/project/memberList.scala.html
@@ -9,78 +9,80 @@
     }
 }
 
-@projectMngMain(message, project) {
-@views.html.prjmenu(project, utils.MenuType.PROJECT_SETTING, "")
+@main(message, project, utils.MenuType.PROJECT_SETTING) {
+<div class="page">
+	@prjmenu(project, utils.MenuType.PROJECT_SETTING, "")
 
-<div class="bubble-wrap dark-gray wp">
-	<div class="inner-bubble">
-		<form class="nm" action="@routes.ProjectApp.newMember(project.owner, project.name)" method="post" id="addNewMember">
-			<input type="text" class="text uname" id="loginId" name="loginId" 
-                   data-provider="typeahead" autocomplete="off"
-				   placeholder="@Messages("project.members.addMember")"
-				   pattern="^[a-zA-Z0-9-]+([_.][a-zA-Z0-9-]+)*$" title="@Messages("user.wrongloginId.alert")" /><!-- 
-         --><button type="submit" class="nbtn medium white"><i class="ico ico-plus-blue"></i>@Messages("button.add")</button>
-		</form>
-	</div>
-
-	<ul class="members project">
-		@for(member <- members){
-            @if( member.user != null){
-
-		<li class="member">
-			<a href="@routes.UserApp.userInfo(member.user.loginId)" class="avatar-wrap mid img-rounded pull-left"><!-- 
-			 --><img class="media-object" src="@User.findByLoginId(member.user.loginId).avatarUrl" width="64" height="64"></a>
-			<div class="m-body">
-				<div class="td">
-					<p>
-						<a href="@routes.UserApp.userInfo(member.user.loginId)">
-							<strong class="uname">@member.user.loginId</strong>
-						</a>
-					</p>
-					<p class="name">(@member.user.name)</p>
-				</div>
-				<div class="td">
-					@if(!project.isOwner(member.user)) {
-					
-					<div class="btn-group" data-name="roleof-@member.user.loginId">
-						<button class="btn dropdown-toggle large" data-toggle="dropdown">
-							<span class="d-label">@member.role.name</span>
-							<span class="d-caret"><span class="caret"></span></span>
-						</button>
-						<ul class="dropdown-menu">@memberRole(member.role.name)</ul>
+	<div class="bubble-wrap dark-gray wp">
+		<div class="inner-bubble">
+			<form class="nm" action="@routes.ProjectApp.newMember(project.owner, project.name)" method="post" id="addNewMember">
+				<input type="text" class="text uname" id="loginId" name="loginId" 
+	                   data-provider="typeahead" autocomplete="off"
+					   placeholder="@Messages("project.members.addMember")"
+					   pattern="^[a-zA-Z0-9-]+([_.][a-zA-Z0-9-]+)*$" title="@Messages("user.wrongloginId.alert")" /><!-- 
+	         --><button type="submit" class="nbtn medium white"><i class="ico ico-plus-blue"></i>@Messages("button.add")</button>
+			</form>
+		</div>
+	
+		<ul class="members project">
+			@for(member <- members){
+	            @if( member.user != null){
+	
+			<li class="member">
+				<a href="@routes.UserApp.userInfo(member.user.loginId)" class="avatar-wrap mid img-rounded pull-left"><!-- 
+				 --><img class="media-object" src="@User.findByLoginId(member.user.loginId).avatarUrl" width="64" height="64"></a>
+				<div class="m-body">
+					<div class="td">
+						<p>
+							<a href="@routes.UserApp.userInfo(member.user.loginId)">
+								<strong class="uname">@member.user.loginId</strong>
+							</a>
+						</p>
+						<p class="name">(@member.user.name)</p>
 					</div>
-					
-					<p class="btns">
-						<a href="javascript:void(0)" data-action="delete" data-href="@routes.ProjectApp.deleteMember(project.owner, project.name, member.user.id)" class="nbtn medium"><!-- 
-						 --><i class="ico ico-delete-small"></i>@Messages("button.delete")</a> 
-						<a href="javascript:void(0)" data-action="apply" data-href="@routes.ProjectApp.editMember(project.owner, project.name, member.user.id)" data-loginId="@member.user.loginId" class="nbtn medium orange"><!-- 
-						 --><i class="ico ico-apply-small"></i>@Messages("button.apply")</a>
-					</p>
-                    } else {
-                    	<p style="height:65px;">@member.role.name</p>
-                    }
+					<div class="td">
+						@if(!project.isOwner(member.user)) {
+						
+						<div class="btn-group" data-name="roleof-@member.user.loginId">
+							<button class="btn dropdown-toggle large" data-toggle="dropdown">
+								<span class="d-label">@member.role.name</span>
+								<span class="d-caret"><span class="caret"></span></span>
+							</button>
+							<ul class="dropdown-menu">@memberRole(member.role.name)</ul>
+						</div>
+						
+						<p class="btns">
+							<a href="javascript:void(0)" data-action="delete" data-href="@routes.ProjectApp.deleteMember(project.owner, project.name, member.user.id)" class="nbtn medium"><!-- 
+							 --><i class="ico ico-delete-small"></i>@Messages("button.delete")</a> 
+							<a href="javascript:void(0)" data-action="apply" data-href="@routes.ProjectApp.editMember(project.owner, project.name, member.user.id)" data-loginId="@member.user.loginId" class="nbtn medium orange"><!-- 
+							 --><i class="ico ico-apply-small"></i>@Messages("button.apply")</a>
+						</p>
+	                    } else {
+	                    	<p style="height:65px;">@member.role.name</p>
+	                    }
+					</div>
 				</div>
+			</li>
+			 
+				}
+	        }
+		</ul>
+		
+		<div id="alertDeletion" class="modal hide">
+			<div class="modal-header">
+				<button type="button" class="close" data-dismiss="modal">×</button>
+				<h3>@Messages("project.member.delete")</h3>
 			</div>
-		</li>
-		 
-			}
-        }
-	</ul>
-	
-	<div id="alertDeletion" class="modal hide">
-		<div class="modal-header">
-			<button type="button" class="close" data-dismiss="modal">×</button>
-			<h3>@Messages("project.member.delete")</h3>
+			<div class="modal-body">
+				<p>@Messages("project.member.deleteConfirm")</p>
+			</div>
+			<div class="modal-footer">
+				<a href="#" class="nbtn medium" data-dismiss="modal">@Messages("button.no")</a>
+				<a href="#" class="nbtn medium orange">@Messages("button.yes")</a>
+			</div>
 		</div>
-		<div class="modal-body">
-			<p>@Messages("project.member.deleteConfirm")</p>
-		</div>
-		<div class="modal-footer">
-			<a href="#" class="btn" data-dismiss="modal">@Messages("button.no")</a>
-			<a href="#" class="btn btn-danger btnDelete">@Messages("button.yes")</a>
-		</div>
+		
 	</div>
-	
 </div>
 
 <script type="text/javascript">
@@ -88,5 +90,5 @@
    		$hive.loadModule("project.Member");
    	});
 </script>
-    
+
 }
 
app/views/project/newProject.scala.html (deleted)
--- app/views/project/newProject.scala.html
@@ -1,101 +0,0 @@
-@(title:String, newProjectForm:Form[Project])
-
-@import playRepository.RepositoryService
-
-@home(title, utils.MenuType.NEW_PROJECT){
-    <div class="page">
-        <div class="form-wrap new-project">
-            <form action="@routes.ProjectApp.newProject()" method="post" name="newproject" class="frm-wrap">
-            	<dl>
-            		<dt>
-            			<div class="n-alert" data-errType="name">
-		                    <div class="n-inner orange">
-		                        <span class="msg">@Messages("project.wrongName")</span>
-		                        <a href="#!/close" class="ico btn-delete"></a>
-		                    </div>
-		                </div>
-            			<label for="project-name">@Messages("project.name.placeholder")</label>
-            		</dt>
-            		<dd>
-            			<input id="project-name" type="text" name="name" class="text" placeholder="@Messages("project.name.alert")" maxlength="250">
-            		</dd>
-            		
-            		<dt>
-						<label for="description">@Messages("project.description.placeholder")</label>
-					</dt>
-					<dd>
-						<textarea id="description" name="overview" class="text textarea.span4" style="resize:vertical;"></textarea>
-					</dd>
-            	</dl>
-
-                <ul class="options unstyled">
-                    <li class="option">
-                        <div class="option-label">@Messages("project.shareOption")</div>
-                        <div class="option-desc">
-                            <input name="share_option" type="radio" checked="checked" id="public" value="true" class="radio-btn"><label for="public" class="bg-radiobtn label-public">공개</label>
-                            <input name="share_option" type="radio" id="private" value="false" class="radio-btn"><label for="private" class="bg-radiobtn label-private">비공개</label>
-                            <span class="note">@Messages("project.private.notice")</span>
-                        </div>
-                    </li>
-                    <li class="option">
-                        <div class="option-label">@Messages("project.vcs")</div>
-                        <div class="option-desc">
-							<div class="btn-group" data-name="vcs">
-								<button class="btn dropdown-toggle large" data-toggle="dropdown">
-									<span class="d-label"></span> 
-									<span class="d-caret"><span class="caret"></span></span>
-								</button>
-								<ul class="dropdown-menu">
-                                    @RepositoryService.vcsTypes.map{ v =>
-                                        <li data-value="@v._1" @if(v._1 == "GIT"){ data-selected="true" class="active" }><a href="javascript:void(0)">@Messages(v._2)</a></li>
-                                    }
-								</ul>
-							</div>
-                        </div>
-                    </li>
-                    
-                    @**
-                    <!-- 
-                    <li class="option">
-                        <div class="option-label">이용약관 <a href="#agreement" data-toggle="modal"><i class="ico ico-que-mark"></i></a></div>
-                        <div id="agreement" class="modal hide fade">
-                          <div class="modal-header">
-                            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
-                            <h3>이용약관</h3>
-                          </div>
-                          <div class="modal-body">
-                            <pre>@agreements()</pre>
-                          </div>
-                          <div class="modal-footer">
-                            <a href="#" class="btn" data-dismiss="modal">Close</a>
-                          </div>
-                        </div>
-                        <div class="option-desc">
-	                        <div class="n-alert" data-errType="accept">
-			                    <div class="n-inner orange">
-			                        <span class="msg">@Messages("project.new.agreement.alert")</span>
-			                        <a href="#!/close" class="ico btn-delete"></a>
-			                    </div>
-			                </div>
-                            <input type="checkbox" class="stipulation checkbox checkbox-btn" autocomplete="off" id="stipulation" name="accept"><label for="stipulation" class="bg-checkbox label-agreement">본인은 약관에 대한 안내를 읽었으며 동의 합니다.</label>
-                        </div>
-                    </li>
-                     -->
-                    **@
-                </ul>
-                <div class="actions">
-                    <button class="nbtn orange medium">@Messages("project.create")</button>
-                    <a href="/" class="nbtn medium black">@Messages("button.cancel")</a>
-                </div>
-            </form>
-        </div>
-    </div>
-
-<script type="text/javascript">
-    $(document).ready(function(){
-    	$hive.loadModule("project.New", {
-    		"sFormName": "newproject"
-    	});
-    });
-</script>
-}
 
app/views/project/projectDelete.scala.html (deleted)
--- app/views/project/projectDelete.scala.html
@@ -1,46 +0,0 @@
-@(message: String)(projectForm: Form[Project], project:Project)
-
-@import helper._
-@import utils.TemplateHelper._
-
-@projectMngMain(message, project) {
-    @prjmenu(project, utils.MenuType.PROJECT_SETTING, "")
-
-    <div class="bubble-wrap gray wp">
-        <div class="cu-label">@Messages("project.delete")</div>
-        <div class="cu-desc">
-            <p><strong class="notice">@Messages("project.delete.description")</strong></p>
-            <p>
-            	<input type="checkbox" class="checkbox" autocomplete="off" id="accept"><!-- 
-             --><label for="accept" class="bg-checkbox label-agreement">@Messages("project.delete.accept")</label>
-            </p>
-        </div>
-    </div>
-    <div class="box-wrap bottom">
-        <a id="deletion" data-toggle="modal" href="#alertDeletion" class="nbtn medium orange"><!-- 
-         --><i class="ico ico-delete-small"></i>@Messages("project.delete.this")</a>
-    </div>
-
-
-	<div id="alertDeletion" class="modal hide">
-	    <div class="modal-header">
-	        <button type="button" class="close" data-dismiss="modal">×</button>
-	        <h3>@Messages("project.delete.requestion")</h3>
-	    </div>
-	    <div class="modal-body">
-	        <p> @Messages("project.delete.description")</p>
-	        <p> @Messages("project.delete.reaccept") </p>
-	    </div>
-	    <div class="modal-footer">
-	        <a href="#" class="btn" data-dismiss="modal">@Messages("button.no")</a>
-	        <a href="@routes.ProjectApp.deleteProject(project.owner, project.name)" class="btn btn-danger">@Messages("button.yes")</a>
-	    </div>
-	</div>
-	
-	<script type="text/javascript">
-		$(document).ready(function(){
-	        $hive.loadModule("project.Delete");
-		});
-	</script>
-
-}
 
app/views/project/projectHome.scala.html (deleted)
--- app/views/project/projectHome.scala.html
@@ -1,122 +0,0 @@
-
-@(message: String, project: Project, histories: List[models.History] )
-
-@import utils.JodaDateUtil._
-@import utils.TemplateHelper._
-@import models.enumeration._
-
-@main(message, project, utils.MenuType.PROJECT_HOME) {
-<div class="page">
-	@prjmenu(project, utils.MenuType.PROJECT_HOME, "")
-
-    <div class="input-prepend project-hometop-wrap">
-    	<div class="vcs-wrap pull-left">
-    		<span class="clone-label"><strong class="@project.vcs">@project.vcs</strong></span><!-- 
-    	 --><input id="repositoryURL" type="text" class="text repo-url" readonly="readonly" value="@CodeApp.getURL(project.owner, project.name)">
-        </div>
-        <div class="issue-wrap btn-group pull-right">
-            <button class="btn" disabled="true">@Messages("menu.issue")</button>
-            <a href="@routes.IssueApp.issues(project.owner, project.name, State.OPEN.state)" class="btn">
-                @Messages("issue.state.open") <strong class="num open">@Issue.countIssues(project.id, State.OPEN)</strong> 
-            </a>
-            <a href="@routes.IssueApp.issues(project.owner, project.name, State.CLOSED.state)" class="btn">
-                @Messages("issue.state.closed") <strong class="num">@Issue.countIssues(project.id, State.CLOSED)</strong> 
-            </a>
-        </div>
-    </div>
-
-    <div class="bubble-wrap dark-gray project-home">
-        <div class="inner logo">
-            <div class="logo-wrap">
-              <img src="@defining(Attachment.findByContainer(project.asResource)) @{ files =>
-              if (files.size > 0) "/files/" + files.head.id
-              else routes.Assets.at("images/bg-default-project.jpg")}"/>
-            </div>
-        </div>
-        <div class="inner project-info">
-            <header>
-                <h3>@Messages("project.info")</h3>
-                <!--<div class="project-status">
-                    <i class="ico ico-like"></i>
-                    <span class="num">100</span>
-                    <span class="sp">|</span>
-                    <i class="ico ico-activity high"></i>
-                </div>-->
-            </header>
-            <ul class="infos">
-                <li class="info">
-                    <strong>@Messages("project.license") :</strong> GPL v2
-                </li>
-                <li class="info">
-                    <strong>@Messages("project.tags") :</strong>
-                    @for(tag <- project.tags) {
-                    <span class="label">@tag.name</span>
-                    }
-                </li>
-                <li class="info">
-                    <strong>@Messages("project.codeLanguage") :</strong> Java, JavaScript
-                </li>
-                <li class="info">
-                    <strong>@Messages("project.vcs") :</strong> @project.vcs
-                </li>
-            </ul>
-        </div>
-        <div class="inner member-info">
-            <header>
-                <h3>@Messages("project.members")</h3>
-            </header>
-            <div class="member-wrap">
-                <ul class="project-members">
-                    @for(member <- User.findUsersByProject(project.id)){
-                    <li class="member">
-                    	<a href="@routes.UserApp.userInfo(member.loginId)" class="avatar-wrap img-rounded pull-left small">
-                        	<img src="@member.avatarUrl" alt="@member.loginId" width="24" height="24">
-                        </a>
-                        <a href="@routes.UserApp.userInfo(member.loginId)" class="name">
-                        	<strong>@member.loginId (@member.name)</strong>
-                        </a>
-                    </li>
-                    }
-                </ul>
-            </div>
-        </div>
-    </div>
-
-    @if(histories.size > 0) {
-        <table class="table table-hover">
-            <tbody>
-                @for(history <- histories.iterator()) {
-                    <tr>
-                        <td>@agoString(ago(history.getWhen()))</td>
-                        <td><a href="@history.getUserPageUrl()">@history.getWho()</a></td>
-                        <td>@history.getWhat()</td>
-                        <td><a href="@history.getUrl()">@history.getHow()</a></td>
-                    </tr>
-                }
-            </tbody>
-        </table>
-    }
-
-    <div class="bubble-wrap dark-gray readme">
-        @if(project.readme == null) {
-            <p class="default">
-                @Messages("project.readme")
-            </p>
-        } else {
-        <div class="readme-wrap">
-           <header><i class="ico ico-readme-book"></i><strong>README.md</strong></header>
-           <div class="readme-body" markdown="true">
-               @project.readme
-           </div>
-        </div>
-        }
-	    @markdown()
-    </div>
-</div>
-
-<script type="text/javascript">
-$(document).ready(function(){
-	$hive.loadModule("project.Home");
-});
-</script>
-}(No newline at end of file)
 
app/views/project/projectMngMain.scala.html (deleted)
--- app/views/project/projectMngMain.scala.html
@@ -1,21 +0,0 @@
-@(title: String, project:Project)(content: Html)
-
-@layout(Messages(title) + " (" + project.name + ")")("prj") {
-    <header class="gnb-outer">
-      @topmenu(project)
-      @sidemenu(project)
-    </header>
-    
-    <div class="container page-wrap">
-      <div class="page">
-		@alert()
-        @content
-      </div>
-    </div>
-    
-    <footer class="page-footer-outer">
-        <div class="page-footer">
-            <span class="provider">Powered by <strong>HIVE</strong></span>
-        </div>
-    </footer>
-}
app/views/project/setting.scala.html
--- app/views/project/setting.scala.html
+++ app/views/project/setting.scala.html
@@ -2,27 +2,33 @@
 
 @import helper._
 @import utils.TemplateHelper._
-@implicitField = @{ helper.FieldConstructor(simpleForm) }
 
-@projectMngMain(message, project) {
-    @prjmenu(project, utils.MenuType.PROJECT_SETTING, "")
+@projectLogoImage = @{
+	defining(Attachment.findByContainer(project.asResource)) { files =>
+		if(files.size > 0){
+			"/files/" + files.head.id
+		} else {
+			routes.Assets.at("images/bg-default-project.jpg")
+		}
+	}
+}
 
-	@form(action=routes.ProjectApp.settingProject(project.owner, project.name), 'id->"saveSetting" , 'enctype->"multipart/form-data", 'class->"nm"){
+@main(message, project, utils.MenuType.PROJECT_SETTING) {
+<div class="page">
+	@prjmenu(project, utils.MenuType.PROJECT_SETTING, "")
+
+	<form id="saveSetting" method="post" action="@routes.ProjectApp.settingProject(project.owner, project.name)" enctype="multipart/form-data" class="nm">
     <div class="bubble-wrap gray">
         <input type="hidden" name="id" value="@projectForm("id").value.toLong">
         <div class="box-wrap top clearfix frm-wrap">
             <div class="setting-box left">
-                <div class="logo-wrap">
-                  <img src="@defining(Attachment.findByContainer(project.asResource)) @{ files =>
-                    if (files.size > 0) "/files/" + files.head.id
-                    else routes.Assets.at("images/bg-default-project.jpg") }">
-                </div>
+                <div class="logo-wrap" style="background-image:url('@projectLogoImage')"></div>
                 <div class="logo-desc">
                     <ul class="unstyled descs">
                         <li><strong>@Messages("project.logo")</strong></li>
                         <li>@Messages("project.logo.type") <span class="point">bmp, jpg, gif, png</span></li>
                         <li>@Messages("project.logo.maxFileSize") <span class="point">1MB</span></li>
-                        <li>@Messages("project.logo.size") <span class="point">234px × 168px</span></li>
+                        @**<!-- <li>@Messages("project.logo.size") <span class="point">234px × 168px</span></li> -->**@
                         <li>
                         	<div class="btn-wrap">
 								<div class="nbtn medium white fake-file-wrap">
@@ -39,14 +45,16 @@
 					<label for="project-name">@Messages("project.name.placeholder")</label>
                 </dt>
                 <dd>
-                    @inputText(projectForm("name"), 'class->"text", 'maxlength -> "250")
+                    <input type="text" name="name" maxlength="250" value="@project.name">
+                    <!-- @inputText(projectForm("name"), 'class->"text", 'maxlength -> "250") -->
                 </dd>
                 
                 <dt>
                 	<label for="project-desc">@Messages("project.description.placeholder")</label>
                 </dt>
                 <dd>
-                    @textarea(projectForm("overview"), 'class->"textarea")
+                	<textarea name="overview" class="textarea">@project.overview</textarea>
+                    <!-- @textarea(projectForm("overview"), 'class->"textarea") -->
                 </dd>
             </dl>
         </div>
@@ -79,7 +87,8 @@
     <div class="box-wrap bottom">
         <button id="save" type="submit" class="nbtn orange medium">@Messages("button.save")</button>
     </div>
-	}
+	</form>
+</div>
 
 <script type="text/javascript">
 	$(document).ready(function(){
 
app/views/sidemenu.scala.html (deleted)
--- app/views/sidemenu.scala.html
@@ -1,12 +0,0 @@
-@(project:Project)
-
-@if(ProjectUser.isAllowedToSettings(session.get("loginId"), project)) {
-<div class="side-menu-wrap">
-    <ul class="side-menus unstyled bg">
-	<!--
-        <li class="side-menu"><a href="@routes.StatisticsApp.statistics(project.owner, project.name)"><i class="ico ico-statistics"></i></a></li>
-        -->
-        <li class="side-menu"><a href="@routes.ProjectApp.settingForm(project.owner, project.name)"><i class="ico ico-setting"></i></a></li>
-    </ul>
-</div>
-}(No newline at end of file)
 
app/views/topmenu.scala.html (deleted)
--- app/views/topmenu.scala.html
@@ -1,64 +0,0 @@
-@(project:Project)
-
-@import utils._
-@import models.enumeration.ResourceType;
-@import utils.TemplateHelper._
-@import utils.AccessControl._
-
-    <div class="gnb-inner">
-        <div class="gnb-menu-wrap">
-            <a href="@routes.Application.index()" class="logo"><span>HIVE</span></a>
-
-			<h1 class="page-title">
-				<span class="gray">/ <a href="@routes.UserApp.userInfo(project.owner)">@project.owner</a> / </span><!-- 
-				 --><a href="@routes.ProjectApp.project(project.owner, project.name)">@project.name</a>
-			</h1>
-
-			<div class="gnb-menus right">
-				@if(session.contains("loginId")){
-                <div class="usermenu btn-group">
-					<button class="btn dropdown-toggle large" data-toggle="dropdown">
-						<div class="d-label">
-							<span class="avatar-wrap smaller">
-								<img src="@User.findByLoginId(session.get("loginId")).avatarUrl" width="20" height="20">
-							</span>
-							<span class="text">@session.get("loginId")</span>
-						</div>
-						<span class="d-caret"><span class="caret"></span></span>
-					</button>
-					<ul class="dropdown-menu">
-						<li><a href="@routes.UserApp.userInfo(session.get("loginId"))">@Messages("userinfo.profile")</a></li>
-						<li><a href="@routes.UserApp.editUserInfoForm()">@Messages("userinfo.accountSetting")</a></li>
-						<li><a href="@routes.UserApp.logout()">@Messages("title.logout")</a></li>
-						<li class="divider"></li>
-				@defining(User.findByLoginId(session.get("loginId")).myProjects()) { myProjects =>
-					@if(myProjects.length > 0){
-						<li class="disabled"><span>@Messages("project.myproject")</span></li>
-						@for(project <- myProjects){
-						<li><a href="@routes.ProjectApp.project(project.owner, project.name)">@project.name (@project.owner)</a></li>
-						}
-					}
-				}
-					</ul>
-				</div>
-				} else {
-				<div class="usermenu lnk-group">
-                	<a href="@routes.UserApp.loginForm()">
-                		<span class="avatar-wrap smaller">
-                			<img src="@routes.Assets.at("images/default-avatar-34.png")" width="20" height="20">
-                		</span>
-                		@Messages("title.login")
-                	</a><!-- 
-                 --><a href="@routes.UserApp.signupForm()">@Messages("title.signup")</a>
-				</div>
-				}
-			
-				<div class="search-bar">
-	               	<form action="@routes.ProjectApp.projects()" class="form-searchbar">
-						<input type="text" class="text" name="filter" autocomplete="off" accesskey="S"><!-- 
-					 --><button type="submit" class="ico ico-search"></button>
-					</form>
-				</div>
-			</div>
-        </div>
-    </div>(No newline at end of file)
conf/messages.ko
--- conf/messages.ko
+++ conf/messages.ko
@@ -265,11 +265,11 @@
 project.milestone = 마일스톤
 project.sidebar.plugin = 플러그인
 project.sidebar.help = 도움말
-project.logo.type = 파일형식:
+project.logo.type = 파일형식
 project.logo.maxFileSize = 최대파일크기
 project.logo.fileSizeAlert = 이미지 용량은 1MB 이하여야 합니다.
 project.logo.size = 사이즈
-project.logo = 로고
+project.logo = 프로젝트 로고
 project.logo.alert = 이미지 파일이 아닙니다.
 project.siteurl = 사이트 주소
 project.siteurl.alert = 사이트 URL은 http://로 시작해야 합니다.
docs/technical/javascript-module-guide.md
--- docs/technical/javascript-module-guide.md
+++ docs/technical/javascript-module-guide.md
@@ -62,11 +62,18 @@
 ## 기타
 
 * HTML 템플릿은 가능한 한 자바스크립트 파일 내에 포함하지 않는다
-* HTML 템플릿 데이터는 정적 페이지내에 <script type="text/template"> 형태로 위치시키고 자바스크립트는 그 내용을 활용하는 형태로 작성한다
+* HTML 템플릿은 정적 페이지내에 <script type="text/template"> 형태로 위치시키고 자바스크립트는 그 내용을 활용하는 형태로 작성한다
 
 >    <script type="text/template" id="tplItem">
->        ${name} ${email}
+>        <div>${name} ${email}</div>
 >    </script>
 >
->    var sTpl = document.getElementById("tplItem").text;
-
+>    <script type="text/javascript">
+>        var sTpl = document.getElementById("tplItem").text;
+>        var htData = {
+>            "name" : "John Doe", 
+>            "email": "john@doe.com"
+>        };
+>
+>        $.tmpl(sTpl, htData).appendTo("#target");
+>    </script>
(No newline at end of file)
Add a comment
List