THIS IS A TEST INSTANCE ONLY! REPOSITORIES CAN BE DELETED AT ANY TIME!

Browse Source

apply new design markups and update lesscss files

board write, board list, issue list, login/signup, project setting,
member list and more...
pull/5/head
Jihan Kim 7 years ago
parent
commit
85ae6dcb52
24 changed files with 567 additions and 414 deletions
  1. +1
    -1
      app/assets/stylesheets/less/_buttons.less
  2. +59
    -18
      app/assets/stylesheets/less/_page.less
  3. +6
    -6
      app/assets/stylesheets/less/_sprites.less
  4. +1
    -1
      app/views/board/editPost.scala.html
  5. +1
    -1
      app/views/board/newPost.scala.html
  6. +1
    -1
      app/views/board/post.scala.html
  7. +3
    -3
      app/views/board/postList.scala.html
  8. +1
    -1
      app/views/code/codeView.scala.html
  9. +1
    -1
      app/views/code/nohead.scala.html
  10. +149
    -142
      app/views/help/toc.scala.html
  11. +1
    -1
      app/views/issue/issueList.scala.html
  12. +24
    -11
      app/views/login.scala.html
  13. +46
    -20
      app/views/milestone/list.scala.html
  14. +30
    -4
      app/views/prjmenu.scala.html
  15. +57
    -37
      app/views/project/memberList.scala.html
  16. +87
    -77
      app/views/project/newProject.scala.html
  17. +1
    -1
      app/views/project/projectHome.scala.html
  18. +72
    -46
      app/views/project/projectList.scala.html
  19. +2
    -2
      app/views/project/setting.scala.html
  20. +0
    -21
      app/views/project/submenu.scala.html
  21. +13
    -12
      app/views/user/signup.scala.html
  22. +3
    -1
      conf/messages.en
  23. +8
    -6
      conf/messages.ko
  24. BIN
     

+ 1
- 1
app/assets/stylesheets/less/_buttons.less View File

@ -63,7 +63,7 @@
height: 24px;
padding: 4px 20px;
}
.border-radius(5px);
.border-radius(2px); /*5px*/
}
&.small {
font-size: 11px;

+ 59
- 18
app/assets/stylesheets/less/_page.less View File

@ -18,6 +18,7 @@
} //gnb-knob: deprecated
.gnb-menu-wrap {
/*background-color:@gnb-color;*/
overflow: hidden;
.logo {
@ -46,6 +47,7 @@
color: @gnb-link-color;
a {
font-size: 13px;
/*font-family: "Myriad Pro", Din, Tahoma, Arial,sans-serif;*/
&:hover, &.selected {
color: @gnb-link-hover-color;
}
@ -76,9 +78,10 @@
}
.sp-line {
padding: 0;
color: #fafafa; /*#506D73;*/
color: #ccc;/*fafafa;*/ /*#506D73;*/
font-size: 18px;
opacity:0.5;
/*opacity:0.5;*/
font-family:Dotum; padding-top:3px;
}
.d-link-wrap {
padding-top:2px;
@ -109,8 +112,8 @@
width: 128px; height: 13px;
font-size: 11px;
color: #898989;
background-color: transparent;
color: #898989; /*@white;*/
background-color: transparent;/*@orange-search-bar-bg-color;*/
.box-shadow(none);
}
@ -222,6 +225,9 @@
color:#626262 !important;
opacity:1 !important;
}
.search-bar {
border:1px solid #2e2e2e;
}
}
}
}
@ -232,7 +238,7 @@
&:hover { color:@orange; }
}
.page { padding:40px 39px; }
.page { padding:40px 39px 30px 39px; }
}
.page-wrap {
@ -835,7 +841,7 @@
width: 400px;
.center-block;
.act-row {
margin-bottom: 45px;
margin-bottom: 42px;
line-height:22px;
}
.forgot-password {
@ -853,7 +859,7 @@
.btns-row {
width: 384px;
.center-block;
margin-bottom: 50px;
margin-bottom: 73px;
.n-btn {
&.log-in {
width: 187px;
@ -1120,14 +1126,17 @@
color:#000;
.border-radius(0 2px 2px 0);
.linear-gradient(#fff, #f2f2f3);
/*.linear-gradient(#fff, #f2f2f3);*/
/*
.opacity(50);
&:hover {
.opacity(100);
}
*/
*/
&:hover {
color:@orange;
}
}
.btn-advanced {
color:#707070;
@ -1368,7 +1377,8 @@
padding: 10px 20px;
}
&.bottom {
padding: 10px 0;
padding: 20px 0; /*10px 0;*/
padding-bottom:12px;
border-bottom: 0 none;
text-align: center;
}
@ -1557,6 +1567,9 @@
.name {
font-size: 11px;
}
.btns {
text-transform: capitalize;
}
}
}
}
@ -1610,10 +1623,12 @@
margin: 15px 0 10px;
padding-right: 20px;
.filter {
.opacity(70);
/*
.opacity(70);
&.active {
.opacity(100);
}
*/
}
}
}
@ -1627,6 +1642,8 @@
border-bottom: 1px solid @gray-d4;
padding: 15px 30px;
overflow: hidden;
&:last-of-type { border-bottom:none; }
.infos {
width: 660px;
float: left;
@ -1685,6 +1702,7 @@
font-size: 0.6em;
vertical-align: top;
padding-top: 20px;
margin-left:7px;
}
}
}
@ -1724,6 +1742,7 @@
}
}
&.right {
height:376px;
margin-left: 610px;
padding: 15px 10px;
background-color: #ECECEC;
@ -2039,6 +2058,7 @@
margin-bottom: 10px;
}
.comment-btn {
vertical-align:top;
background-color: @white;
color: @orange;
line-height: 1;
@ -2152,7 +2172,18 @@
}
}
.content-wrap {
.frm-wrap {
dl, dt, dd { margin:0; padding:0; }
dt {
margin:3px 0px 1px 0px;
label {
color:#959595; font-weight:bold;
margin-right:5px;
}
}
}
.content-wrap {
.text {
width: 866px;
resize:vertical;
@ -2161,7 +2192,7 @@
margin-bottom: 15px;
}
.content {
height: 320px;
height:177px; /*320px;*/
background-color: #F9F9F9;
}
.actions {
@ -2319,7 +2350,7 @@
margin: 0;
width: 350px; /*357px;*/
.box-shadow(none);
.border-radius(4px 0 0 4px);
.border-radius(2px 0 0 2px);
&:focus {
.box-shadow(none);
border: 1px solid #CCC;
@ -2331,13 +2362,14 @@
border: 1px solid #CCC;
border-left: 0 none;
line-height: 26px;
.inline-block;
vertical-align: top;
text-decoration: none;
.border-radius(0 4px 4px 0);
padding: 0 19px;
margin-right: 10px;
font-weight: bold;
.inline-block;
.border-radius(0 2px 2px 0);
&:hover {
color: @orange;
}
@ -2359,7 +2391,7 @@
overflow: hidden;
.code-browse-header {
color: @white;
background-color: #4D4D4D;
background-color: #6c6c6c;
line-height: 34px;
font-size: 11px;
padding: 0 20px;
@ -2956,7 +2988,16 @@
background-color:#878787 !important;
.linear-gradient(#878787, darken(#878787, 10%));
}
.dropdown-menu .active > a, .dropdown-menu .active > a:hover {
color:#fff;
background-color:#878787 !important;
.linear-gradient(#878787, darken(#878787, 10%));
}
textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {
.box-shadow(none);
.border-radius(2px);
}
}
/*
hr.dark-gray { border-top:1px solid #d4d4d4; }
*/
.alert { position:absolute; width:910px; top:76px; margin-left:auto; }

+ 6
- 6
app/assets/stylesheets/less/_sprites.less View File

@ -285,23 +285,23 @@
.ico-search {
width: 14px;
height: 13px;
background-position: -28px -27px;
height: 14px;/*13px;*/
background-position:-136px -152px;
/*background-position: -28px -27px;*/
/*&:hover {
background-position: -44px -27px;
}*/
}
/*.orange {*/
/*.orange {
.ico-search {
background-position: -60px -27px;
/*
&:hover {
background-position: -76px -27px;
}
*/
}
/*}*/
}*/
.ico-open-tag {
width: 43px;

+ 1
- 1
app/views/board/editPost.scala.html View File

@ -6,7 +6,7 @@
@main(title, project, utils.MenuType.BOARD) {
<div class="page">
@views.html.prjmenu(project, utils.MenuType.BOARD)
@views.html.prjmenu(project, utils.MenuType.BOARD, "main-menu-only")
<div class="content-wrap">

+ 1
- 1
app/views/board/newPost.scala.html View File

@ -5,7 +5,7 @@
@main(title, project, utils.MenuType.BOARD) {
<div class="page">
@views.html.prjmenu(project, utils.MenuType.BOARD)
@views.html.prjmenu(project, utils.MenuType.BOARD, "main-menu-only")
<div class="content-wrap">

+ 1
- 1
app/views/board/post.scala.html View File

@ -7,7 +7,7 @@
@main("상세보기", project, utils.MenuType.BOARD){
<div class="page board-view">
@views.html.prjmenu(project, utils.MenuType.BOARD)
@views.html.prjmenu(project, utils.MenuType.BOARD, "main-menu-only")
<div class="board-header">
<div class="board-id div">@post.id</div>

+ 3
- 3
app/views/board/postList.scala.html View File

@ -21,7 +21,7 @@
@main(title, project, utils.MenuType.BOARD) {
<div class="page">
@views.html.prjmenu(project, utils.MenuType.BOARD)
@views.html.prjmenu(project, utils.MenuType.BOARD, "main-menu-only")
<div class="header-wrap">
<div class="search-wrap board">
@ -30,7 +30,7 @@
<input type="hidden" name="key" value="@param.key">
<input type="hidden" name="order" value="@param.order">
<input type="hidden" name="pageNum" value="@param.pageNum">
<input name="filter" class="text" type="text" placeholder="현재 게시글에서 검색" value="@param.filter"><button type="submit" class="btn-transparent search-btn underConstruction">SEARCH</button>
<input name="filter" class="text" type="text" placeholder="현재 게시글에서 검색" value="@param.filter"><button type="submit" class="btn search-btn underConstruction">SEARCH</button>
</form>
</div>
</div>
@ -71,7 +71,7 @@
<i class="ico ico-comment-bubble"></i><span class="num">@post.commentCount</span>
</div>
<a href="@routes.UserApp.userInfo(post.authorLoginId)" class="author-avatar img-rounded pull-right">
<img class="user-picture" src="@User.findByLoginId(post.authorLoginId).avatarUrl" alt="@post.authorName"></a>
<img class="user-picture" src="@User.findByLoginId(post.authorLoginId).avatarUrl" alt="@post.authorName" width="34" height="34"></a>
</div>
</li>
}

+ 1
- 1
app/views/code/codeView.scala.html View File

@ -2,7 +2,7 @@
@main("코드", project, utils.MenuType.CODE){
<div class="page" style="padding-bottom:20px;"><!-- code-browse -->
@views.html.prjmenu(project, utils.MenuType.CODE)
@views.html.prjmenu(project, utils.MenuType.CODE, "main-menu-only")
<ul class="nav nav-tabs code-tab">
<li class="active">

+ 1
- 1
app/views/code/nohead.scala.html View File

@ -3,7 +3,7 @@
@main(Messages("Commit History"), project, utils.MenuType.CODE) {
<div class="page">
@views.html.prjmenu(project, utils.MenuType.CODE)
@views.html.prjmenu(project, utils.MenuType.CODE, "main-menu-only")
<div id="codeError" class="row-fluid">
<div class="well span12">

+ 149
- 142
app/views/help/toc.scala.html View File

@ -1,142 +1,149 @@
@(message: String)
@home(message, utils.MenuType.HELP) {
<div class="page">
<!--<div class="header-wrap">
<div class="search-wrap help">
<div class="inner">
<form action="/project/search" method="get">
<span class="labels">FAQ</span>
<span class="sp-line"></span>
<span class="sub labels">Help me with</span>
<input name="query" class="text" type="text" placeholder="FAQ 검색"><button type="submit" class="btn-transparent search-btn">SEARCH</button>
</form>
</div>
</div>
</div>-->
<ul class="qas">
<li class="qa">
<div class="question-wrap">
<i class="ico ico-q"></i>
<a href="#!/toggle" class="question">N4를 설치하고 싶어요.</a>
</div>
<div class="answer-wrap">
<i class="ico ico-a"></i>
<div class="answer" style="width:100%">
N4를 설치하기 전에 준비해야 할것은 다음과 같습니다.
<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/nforge4.git</code></pre>
인스톨된 폴더로 가서 N4를 실행시키면 됩니다.
<pre><code># play run</code></pre>
</div>
</div>
</li>
<li class="qa">
<div class="question-wrap">
<i class="ico ico-q"></i>
<a href="#!/toggle" class="question">프로젝트를 새로 생성하고 싶어요.</a>
</div>
<div class="answer-wrap">
<i class="ico ico-a"></i>
<div class="answer" style="width:100%">
<p>상단의 New Project를 클릭하신후 필요한 정보를 입력하시면 됩니다.</p>
<p>
공개설정에서 공개를 택하게 되면 해당 프로젝트의 맴버가 아닌
사용자들도 해당 프로젝트를 둘러볼수 있게 되며 맴버가 아니라면
code 저장소를 익명으로 접근하여 소스코드를 받아 갈 수는 있지만
소스코드를 수정하지는 못합니다. 공개설정에서 비 공개를 택하게 되면
해당 프로젝트의 맴버가 아닌 사용자들은 단지 설명과
이름만을 볼수 있습니다.
</p>
<p>
코드 저장소 방식은 현재 Git과 Subvision을 지원합니다.
Subvision과 Git은 전세계적으로 코드관리 시스템으로 널리 쓰이고 있으며
충분한 신뢰성과 성능을 가지고 있습니다.
</p>
<p>
위의 내용을 다 작성하셨다면 이용약관옆의 물음표를 눌러 약관을 살펴보시고 동의함을 눌러주시면 됩니다.
마지막으로 save버튼을 누르면 새로운 프로젝트를 생성하실수 있습니다.
</p>
</div>
</div>
</li>
<li class="qa">
<div class="question-wrap">
<i class="ico ico-q"></i>
<a href="#!/toggle" class="question">내가 참여하는 프로젝트들은 어디서 볼수 있나요?</a>
</div>
<div class="answer-wrap">
<i class="ico ico-a"></i>
<div class="answer" style="width:100%">
<a href="/">메인화면</a>
우측 하단에 다음과 같이 참여하고 있는 프로젝트의 목록을 볼수 있습니다. 자물쇠가 있는 것은 비공개
프로젝트이며 자물쇠가 없는 것은 공개 프로젝트 입니다. 괄호 안은 프로젝트를 만든사람을 나타내며 괄호 앞은
프로젝트의 제목을 나타냅니다.
<p><img src="/assets/help/myProjects.png"/></p>
혹은 자신의 <a href="/info">정보 페이지</a>에서도 확인하실수 있습니다.
</div>
</div>
</li>
<li class="qa">
<div class="question-wrap">
<i class="ico ico-q"></i>
<a href="#!/toggle" class="question">프로젝트 탈퇴는 어떻게 하나요.</a>
</div>
<div class="answer-wrap">
<i class="ico ico-a"></i>
<div class="answer" style="width:100%">
혹은 자신의 <a href="/info">정보 페이지</a>에서 참여하고 있는 프로젝트 목록을 볼수있고
탈퇴도 할수 있습니다. 자신이 프로젝트의 유일한 관리자라면 해당 프로젝트에서 탈퇴를 할수 없습니다.
</div>
</div>
</li>
<li class="qa">
<div class="question-wrap">
<i class="ico ico-q"></i>
<a href="#!/toggle" class="question">게시판에서는 어떠한 것들을 할수 있나요?</a>
</div>
<div class="answer-wrap">
<i class="ico ico-a"></i>
<div class="answer" style="width:100%">
게시판에서는 다음과 같은 기능이 가능합니다.
<ul>
<li>게시물 상세 조회: 사용자는 게시물의 내용을 볼 수 있다.</li>
<li>게시물 댓글 등록: 로그인 유저는 게시물에 댓글을 남길 수 있다.</li>
<li>게시물 댓글 조회: 사용자는 게시물의 댓글을 볼 수 있다.</li>
<li>게시물 댓글 삭제: 로그인 유저는 자신이 남긴 댓글을 삭제할 수 있다.</li>
<li>관리자 게시물 댓글 삭제: 프로젝트 관리자는 댓글을 삭제할 수 있다.</li>
<li>관리자 게시물 수정: 프로젝트 관리자는 게시물을 편집/삭제 할 수 있다.</li>
</ul>
</div>
</div>
</li>
<li class="qa">
<div class="question-wrap">
<i class="ico ico-q"></i>
<a href="#!/toggle" class="question">N4의 버그를 발견했어요.</a>
</div>
<div class="answer-wrap">
<i class="ico ico-a"></i>
<div class="answer" style="width:100%">
N4는 현재 Open Source로 진행되고 있습니다. 버그를 발견하셨다면
<a href="https://github.com/nforge/nforge4/issues">N4 이슈트레커에 등록</a>해 주시거나
패치를 만들어 보내주시면 됩니다.
</div>
</div>
</li>
</ul>
</div>
<script>
$("a.question").click(function(){
$(this).parents("li").toggleClass("open");
});
</script>
}
@(message: String)
@home(message, utils.MenuType.HELP) {
<div class="page">
<div class="header-wrap">
<div class="search-wrap help">
<div class="inner">
<form action="/project/search" method="get">
<span class="labels">FAQ</span><!--
--><input name="query" class="text" type="text" placeholder="현재 게시글에서 검색"><button type="submit" class="btn search-btn">SEARCH</button>
</form>
</div>
</div>
</div>
<ul class="qas">
<li class="qa">
<div class="question-wrap">
<i class="ico ico-q"></i>
<a href="#!/toggle" class="question">N4를 설치하고 싶어요.</a>
<i class="ico icor"></i>
</div>
<div class="answer-wrap">
<i class="ico ico-a"></i>
<div class="answer" style="width:100%">
N4를 설치하기 전에 준비해야 할것은 다음과 같습니다.
<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/nforge4.git</code></pre>
인스톨된 폴더로 가서 N4를 실행시키면 됩니다.
<pre><code># play run</code></pre>
</div>
</div>
</li>
<li class="qa">
<div class="question-wrap">
<i class="ico ico-q"></i>
<a href="#!/toggle" class="question">프로젝트를 새로 생성하고 싶어요.</a>
<i class="ico icor"></i>
</div>
<div class="answer-wrap">
<i class="ico ico-a"></i>
<div class="answer" style="width:100%">
<p>상단의 New Project를 클릭하신후 필요한 정보를 입력하시면 됩니다.</p>
<p>
공개설정에서 공개를 택하게 되면 해당 프로젝트의 맴버가 아닌
사용자들도 해당 프로젝트를 둘러볼수 있게 되며 맴버가 아니라면
code 저장소를 익명으로 접근하여 소스코드를 받아 갈 수는 있지만
소스코드를 수정하지는 못합니다. 공개설정에서 비 공개를 택하게 되면
해당 프로젝트의 맴버가 아닌 사용자들은 단지 설명과
이름만을 볼수 있습니다.
</p>
<p>
코드 저장소 방식은 현재 Git과 Subvision을 지원합니다.
Subvision과 Git은 전세계적으로 코드관리 시스템으로 널리 쓰이고 있으며
충분한 신뢰성과 성능을 가지고 있습니다.
</p>
<p>
위의 내용을 다 작성하셨다면 이용약관옆의 물음표를 눌러 약관을 살펴보시고 동의함을 눌러주시면 됩니다.
마지막으로 save버튼을 누르면 새로운 프로젝트를 생성하실수 있습니다.
</p>
</div>
</div>
</li>
<li class="qa">
<div class="question-wrap">
<i class="ico ico-q"></i>
<a href="#!/toggle" class="question">내가 참여하는 프로젝트들은 어디서 볼수 있나요?</a>
<i class="ico icor"></i>
</div>
<div class="answer-wrap">
<i class="ico ico-a"></i>
<div class="answer" style="width:100%">
<a href="/">메인화면</a>
우측 하단에 다음과 같이 참여하고 있는 프로젝트의 목록을 볼수 있습니다. 자물쇠가 있는 것은 비공개
프로젝트이며 자물쇠가 없는 것은 공개 프로젝트 입니다. 괄호 안은 프로젝트를 만든사람을 나타내며 괄호 앞은
프로젝트의 제목을 나타냅니다.
<p><img src="/assets/help/myProjects.png"/></p>
혹은 자신의 <a href="/info">정보 페이지</a>에서도 확인하실수 있습니다.
</div>
</div>
</li>
<li class="qa">
<div class="question-wrap">
<i class="ico ico-q"></i>
<a href="#!/toggle" class="question">프로젝트 탈퇴는 어떻게 하나요.</a>
<i class="ico icor"></i>
</div>
<div class="answer-wrap">
<i class="ico ico-a"></i>
<div class="answer" style="width:100%">
혹은 자신의 <a href="/info">정보 페이지</a>에서 참여하고 있는 프로젝트 목록을 볼수있고
탈퇴도 할수 있습니다. 자신이 프로젝트의 유일한 관리자라면 해당 프로젝트에서 탈퇴를 할수 없습니다.
</div>
</div>
</li>
<li class="qa">
<div class="question-wrap">
<i class="ico ico-q"></i>
<a href="#!/toggle" class="question">게시판에서는 어떠한 것들을 할수 있나요?</a>
<i class="ico icor"></i>
</div>
<div class="answer-wrap">
<i class="ico ico-a"></i>
<div class="answer" style="width:100%">
게시판에서는 다음과 같은 기능이 가능합니다.
<ul>
<li>게시물 상세 조회: 사용자는 게시물의 내용을 볼 수 있다.</li>
<li>게시물 댓글 등록: 로그인 유저는 게시물에 댓글을 남길 수 있다.</li>
<li>게시물 댓글 조회: 사용자는 게시물의 댓글을 볼 수 있다.</li>
<li>게시물 댓글 삭제: 로그인 유저는 자신이 남긴 댓글을 삭제할 수 있다.</li>
<li>관리자 게시물 댓글 삭제: 프로젝트 관리자는 댓글을 삭제할 수 있다.</li>
<li>관리자 게시물 수정: 프로젝트 관리자는 게시물을 편집/삭제 할 수 있다.</li>
</ul>
</div>
</div>
</li>
<li class="qa">
<div class="question-wrap">
<i class="ico ico-q"></i>
<a href="#!/toggle" class="question">N4의 버그를 발견했어요.</a>
<i class="ico icor"></i>
</div>
<div class="answer-wrap">
<i class="ico ico-a"></i>
<div class="answer" style="width:100%">
N4는 현재 Open Source로 진행되고 있습니다. 버그를 발견하셨다면
<a href="https://github.com/nforge/nforge4/issues">N4 이슈트레커에 등록</a>해 주시거나
패치를 만들어 보내주시면 됩니다.
</div>
</div>
</li>
</ul>
</div>
<script type="text/javascript">
$(document).ready(function(){
$(".qas > .qa").click(function(e){
$(e.currentTarget).toggleClass("open");
});
});
</script>
}

+ 1
- 1
app/views/issue/issueList.scala.html View File

@ -43,7 +43,7 @@
@@IMPORT url("/assets/stylesheets/issue.css");
</style>
<div class="page-padding">
@views.html.prjmenu(project, utils.MenuType.ISSUE)
@views.html.prjmenu(project, utils.MenuType.ISSUE, "main-menu-only")
<div class="dashboard">
<dl class="row-fluid">

+ 24
- 11
app/views/login.scala.html View File

@ -1,23 +1,35 @@
@(message:String, userForm:Form[User])
@home(message, utils.MenuType.NONE) {
<div class="page full">
<div class="page full">
<div class="center-wrap tag-line-wrap login">
<h1 class="title"><span class="high-light">Open Source</span> N4</h1>
<h1 class="title"><span class="high-light">Log In for</span> HIVE</h1>
<p class="tag-line">Software development platform for Open Source project.</p>
</div>
<div class="login-form-wrap">
<div class="login-form-wrap frm-wrap">
<form action="@routes.UserApp.login()" method="POST">
<label for="loginId">
<input type="text" class="text loginId" id="loginId" placeholder="ID" autocomplete="off" name="loginId">
</label>
<label for="password">
<input type="password" class="text password" id="password" placeholder="PASSWORD" autocomplete="off" name="password">
</label>
<dl>
<dt>
<label for="email">@Messages("user.loginId")</label>
</dt>
<dd>
<input type="text" class="text email" id="loginId" autocomplete="off" name="loginId">
</dd>
<dt>
<label for="password">@Messages("user.password")</label>
</dt>
<dd>
<input type="password" class="text password" id="password" autocomplete="off" name="password">
</dd>
</dl>
<div class="act-row">
<span><input type="checkbox" class="checkbox" autocomplete="off" id="remember-me" name ="rememberMe"><label for="remember-me" class="bg-checkbox">@Messages("title.rememberMe")</label></span><span class='gray'>|</span><span class="forgot-password">
<a href="/forgot-password" class="forgot-password">@Messages("title.forgotpassword")</a></span>
<input type="checkbox" class="checkbox" autocomplete="off" id="remember-me" name="remeber-me"><label for="remember-me" class="bg-checkbox">@Messages("title.rememberMe")</label>
<a href="/forgot-password" class="forgot-password">@Messages("title.forgotpassword")</a>
</div>
<div class="btns-row">
<button type="submit" class="n-btn orange log-in"><i class="ico ico-user-white"></i>@Messages("button.login")</button><!--
--><a href="@routes.UserApp.signupForm()" class="n-btn blue join"><i class="ico ico-join"></i>@Messages("title.signup")</a>
@ -25,4 +37,5 @@
</form>
</div>
</div>
}

+ 46
- 20
app/views/milestone/list.scala.html View File

@ -27,7 +27,8 @@
"up"
}
} else {
"up hidden"
/*"up hidden"*/
"up"
}
}
@makeMilestoneListLink(_state: String) = @{
@ -37,13 +38,15 @@
}
@project.projectMngMain(title, projectInst) {
@pageTitle(projectInst,"Milestone")
@views.html.prjmenu(projectInst, utils.MenuType.PROJECT_SETTING, "")
<div class="tab-wrap">
<div class="pull-right btns">
<a href="@routes.MilestoneApp.manageMilestones(projectInst.owner, projectInst.name)" class="n-btn small gray">MANAGE</a>
<a href="@routes.MilestoneApp.newMilestoneForm(projectInst.owner, projectInst.name)" class="n-btn small blue">NEW MILESTONE</a>
<a href="@routes.MilestoneApp.newMilestoneForm(projectInst.owner, projectInst.name)" class="n-btn small orange">NEW MILESTONE</a>
</div>
<ul class="nav nav-tabs">
<ul class="nav nav-tabs hive-tabs">
<li class="@if(mCondition.state.equals("all")){active}">
<a href="@makeMilestoneListLink("all")">All Milestones</a>
</li>
@ -55,12 +58,19 @@
</li>
</ul>
</div>
<div class="filter-wrap milestone">
<div class="filters">
<a href="@makeSortLink("dueDate")" class="filter"><i class="ico ico-sort @sortMark("dueDate")"></i>완료일순</a>
<a href="@makeSortLink("completionRate")" class="filter"><i class="ico ico-sort @sortMark("completionRate")"></i>완료율순</a>
</div>
<div class="filter-wrap milestone">
<div class="filters">
<a href="@makeSortLink("dueDate")" class="filter"><i class="ico ico-sort @sortMark("dueDate")"></i>완료일순</a>
<a href="@makeSortLink("completionRate")" class="filter active"><i class="ico ico-sort @sortMark("completionRate")"></i>완료율순</a>
</div>
<div class="legend">
<i class="orange"></i>완료
<i class="blue"></i>진행중
<i class="gray"></i>미할당
</div>
</div>
<ul class="milestones">
@for(milestone <- milestones){
<li class="milestone">
@ -76,28 +86,44 @@
<a href="/uname" class="img-rounded"><img src="/assets/images/default-avatar-34.png"></a>
</li>
</ul>
<div class="meta-info">
<strong class="version"></strong>
<span class="title">@milestone.title</span>
<span class="sp">|</span>
<span class="due-date">완료일 <strong>@milestone.getDueDateString</strong></span>
</div>
<div class="progress-wrap">
<div class="progress">
<div class="bar orange" style="width: @milestone.getCompletionRate%;"></div>
</div>
<div class="pull-left">
<a href="@makeIssuesLink(milestone.id,"closed")">완료 @milestone.getNumClosedIssues (@milestone.getCompletionRate%)</a>
</div>
<div class="pull-right">
<a href="@makeIssuesLink(milestone.id,"open")">미완료 @milestone.getNumOpenIssues (@{100 - milestone.getCompletionRate}%)</a>
</div>
</div>
<div class="progress">
<div class="bar orange" style="width: @milestone.getCompletionRate%;"></div>
<!--
<div class="bar blue" style="width: 30%"></div>
-->
</div>
<div class="progress-label">
<div class="pull-left" style="width: @milestone.getCompletionRate%;">
<a href="@makeIssuesLink(milestone.id,"closed")">완료 <strong>@milestone.getCompletionRate%</strong></a>
</div>
<!--
<div class="pull-left center-txt" style="width: 30%;">
진행중 <strong>30%</strong>
</div>
-->
<div class="pull-right">
<a href="@makeIssuesLink(milestone.id,"open")">미완료 <strong>@{100 - milestone.getCompletionRate}%</strong></a>
</div>
</div>
</div>
<div class="desc">
@milestone.contents
</div>
</div>
<div class="completion-rate @if(milestone.getCompletionRate == 100){done}">@milestone.getCompletionRate%</div>
<div class="completion-rate @if(milestone.getCompletionRate == 100){done}">
@milestone.getCompletionRate
<i>%</i>
</div>
</li>
}
</ul>

+ 30
- 4
app/views/prjmenu.scala.html View File

@ -1,4 +1,4 @@
@(project:Project, menuType:utils.MenuType)
@(project:Project, menuType:utils.MenuType, menuCSS:String)
@import utils._
@import models.enumeration.ResourceType;
@ -6,10 +6,23 @@
@import utils.AccessControl._
@isActiveMenu(m_type:MenuType) = @{
if(m_type == menuType) {"highlight"}
if (m_type == menuType) {"highlight"}
}
<div class="project-menu main-menu-only">
@makeSubMenu(call:Call, name:String) = {
<li class="@isActiveSubMenu(call)"><a href="@call">@name</a></li>
}
@isActiveSubMenu(calls: Call*) = @{
var menuState = ""
for(call <- calls) {
if(call.toString().equals(request().path().toString())) {
menuState = "highlight"
}
}
menuState
}
<div class="project-menu @menuCSS">
<div class="project-menu-wrap main">
<ul class="unstyled">
<li class="@isActiveMenu(MenuType.PROJECT_HOME)"><a href="@routes.ProjectApp.project(project.owner, project.name)">@Messages("title.projectHome")</a></li>
@ -25,4 +38,17 @@
<li class="@isActiveMenu(MenuType.PROJECT_SETTING)"><a href="@routes.ProjectApp.settingForm(project.owner, project.name)">@Messages("menu.admin")</a></li>
</ul>
</div>
</div>
@** 프로젝트 설정 서브메뉴 **@
@if(menuType.equals(MenuType.PROJECT_SETTING)){
<div class="project-menu-wrap sub">
<ul class="unstyled on-admin">
@makeSubMenu(routes.ProjectApp.settingForm(project.owner, project.name), Messages("project.setting"))
@makeSubMenu(routes.ProjectApp.members(project.owner, project.name), Messages("project.member"))
@makeSubMenu(routes.MilestoneApp.milestones(project.owner, project.name), Messages("project.milestone"))
@makeSubMenu(routes.MilestoneApp.milestones(project.owner, project.name), Messages("project.sidebar.plugin"))
@makeSubMenu(routes.MilestoneApp.milestones(project.owner, project.name), Messages("project.sidebar.help"))
</ul>
</div>
}
</div>

+ 57
- 37
app/views/project/memberList.scala.html View File

@ -5,52 +5,72 @@
@memberRole(userRole: String) = {
@for(role <- roles){
<option value="@role.id" @(if(role.name.equals(userRole)) "selected" else "")>@role.name</option>
<li @if(role.name.equals(userRole)){ class="active" }><a href="#!/@role.name" data-id="@role.id">@role.name</a></li>
}
}
@projectMngMain(message, project) {
<table class="table">
@for(member <- members){
<tr>
<td>@member.user.loginId</td>
<td>
<form action="@routes.ProjectApp.editMember(project.owner, project.name, member.user.id)" method="post">
<select id="role" name="id">
@memberRole(member.role.name)
</select>
</form>
</td>
<td>
<a id="deletion" data-toggle="modal" class="n-btn small red" href="#alertDeletion@member.user.loginId">@Messages("button.delete")</a>
</td>
</tr>
<div class="modal hide" id="alertDeletion@member.user.loginId">
<div class="modal-header">
@views.html.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" placeholder="@Messages("project.members.addMember")" pattern="[a-zA-Z0-9_][a-zA-Z0-9_]+" title="@Messages("user.wrongloginId.alert")" />
<button class="ns-btn" type="submit"><i class="ico ico-plus-blue"></i>@Messages("button.add")</button>
</form>
</div>
<ul class="members project">
@for(member <- members){
<li class="member">
<a href="@routes.UserApp.userInfo(member.user.loginId)" class="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">
<div class="btn-group">
<button data-toggle="dropdown" class="btn dropdown-toggle bgwhite d-label">@member.role.name</button>
<button data-toggle="dropdown" class="btn dropdown-toggle bgwhite"><span class="caret"></span></button>
<ul class="dropdown-menu">
@memberRole(member.role.name)
</ul>
</div>
<p class="btns">
<a href="#alertDeletion@member.user.loginId" class="n-btn small light-gray" data-toggle="modal"><i class="ico ico-delete-small"></i>@Messages("button.delete")</a>
<a href="#apply@member.user.loginId" class="n-btn small orange"><i class="ico ico-apply-small"></i>@Messages("button.apply")</a>
</p>
</div>
</div>
@** TODO: 비효율적인 modal 마크업 반복. 제거하는 방향으로 검토 필요 **@
<div class="modal hide" id="alertDeletion@member.user.loginId">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>@Messages("project.member.delete")</h3>
</div>
<div class="modal-body">
</div>
<div class="modal-body">
<p>@Messages("project.member.deleteConfirm")</p>
</div>
<div class="modal-footer">
</div>
<div class="modal-footer">
<a href="#" class="btn" data-dismiss="modal">@Messages("button.no")</a>
<a href="@routes.ProjectApp.deleteMember(project.owner, project.name, member.user.id)" class="btn btn-danger">@Messages("button.yes")</a>
</div>
</div>
</div>
</div>
@** **@
</li>
}
<tr>
<form action="@routes.ProjectApp.newMember(project.owner, project.name)" method="post" id="addNewMember">
<td colspan="2">
<input type="text" id="loginId" name="loginId" class="span8"
placeholder="@Messages("project.members.addMember")" pattern="[a-zA-Z0-9_][a-zA-Z0-9_]+" title="@Messages("user.wrongloginId.alert")">
</td>
<td>
<input type="submit" class="btn-transparent n-btn blue med" value="@Messages("button.add")">
</td>
</form>
</table>
</ul>
</div>
<script type="text/javascript">
nforge.require("project.roleChange");
</script>
<script>nforge.require("project.roleChange");</script>
}

+ 87
- 77
app/views/project/newProject.scala.html View File

@ -1,77 +1,87 @@
@(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">
<label for="name">
<input id="project-name" type="text" name="name" class="text" placeholder="새 프로젝트 이름을 입력해주세요. (프로젝트 이름은 영문으로 공백없이 작성해 주세요)" maxlength="250">
</label>
<label for="overview">
<textarea id="description" name="overview" class="text textarea.span4" placeholder="프로젝트 설명을 입력해주세요."></textarea>
</label>
<ul class="options unstyled">
<li class="option">
<div class="option-label">공개설정</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>
<input name="share_option" type="radio" id="private" value="false" class="radio-btn-"><label for="private" class="bg-radiobtn">비공개</label>
<span class="note">비공개 프로젝트도 프로젝트 이름, 설명, 로그 등은 모든 사용자가 볼 수 있습니다.</span>
</div>
</li>
<li class="option">
<div class="option-label">코드관리시스템</div>
<div class="option-desc">
<div class="btn-group">
<button data-toggle="dropdown" class="btn" id="vcs_msg">Git</button>
<button data-toggle="dropdown" class="btn dropdown-toggle"><span class="caret"></span></button>
<ul class="dropdown-menu" id="vcs_dropdown">
@RepositoryService.vcsTypes.map{ v =>
<li><a href="#!/git" value="@v._1">@Messages(v._2)</a></li>
}
<!-- 여기가 일반 input이 아니라서 submit시에 자료를 넣어줘야 할듯...-->
</ul>
<input type="hidden" name="vcs" id="vcs" value="GIT"/>
</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>@agrements()</pre>
</div>
<div class="modal-footer">
<a href="#" class="btn" data-dismiss="modal">Close</a>
</div>
</div>
<div class="option-desc">
<input type="checkbox" class="stipulation checkbox" autocomplete="off" id="stipulation" name="accept"><label for="stipulation" class="bg-checkbox">본인은 약관에 대한 안내를 읽었으며 동의 합니다.</label>
</div>
</li>
</ul>
<div class="actions">
<button class="btn-transparent n-btn orange med">@Messages("project.create")</button>
<a href="/" class="n-btn gray med cancel">CANCEL</a>
</div>
</form>
</div>
</div>
<script>
$("#vcs_dropdown li a").click(function(e){
var $target = $(this);
var data = $target.attr("value");
var msg = $target.text();
$("#vcs").attr("value",data);
$("#vcs_msg").text(msg);
});
nforge.require('validation.newProject', 'newproject');
</script>
}
@(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>
<label for="name">새 프로젝트 이름을 입력해주세요</label>
</dt>
<dd>
<input id="project-name" type="text" name="name" class="text" placeholder="영문으로 공백없이 작성해 주세요" maxlength="250">
</dd>
<dt>
<label for="overview">프로젝트 설명을 입력해주세요</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">공개설정</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">비공개 프로젝트도 프로젝트 이름, 설명, 로그 등은 모든 사용자가 볼 수 있습니다.</span>
</div>
</li>
<li class="option">
<div class="option-label">코드관리시스템</div>
<div class="option-desc">
<div class="btn-group">
<button data-toggle="dropdown" class="btn" id="vcs_msg">Git</button>
<button data-toggle="dropdown" class="btn dropdown-toggle"><span class="caret"></span></button>
<ul class="dropdown-menu" id="vcs_dropdown">
@RepositoryService.vcsTypes.map{ v =>
<li><a href="#!/git" value="@v._1">@Messages(v._2)</a></li>
}
<!-- 여기가 일반 input이 아니라서 submit시에 자료를 넣어줘야 할듯...-->
</ul>
<input type="hidden" name="vcs" id="vcs" value="GIT"/>
</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>@agrements()</pre>
</div>
<div class="modal-footer">
<a href="#" class="btn" data-dismiss="modal">Close</a>
</div>
</div>
<div class="option-desc">
<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="btn-transparent n-btn orange med">@Messages("project.create")</button>
<a href="/" class="n-btn gray med cancel">CANCEL</a>
</div>
</form>
</div>
</div>
<script>
$("#vcs_dropdown li a").click(function(e){
var $target = $(this);
var data = $target.attr("value");
var msg = $target.text();
$("#vcs").attr("value",data);
$("#vcs_msg").text(msg);
});
nforge.require('validation.newProject', 'newproject');
</script>
}

+ 1
- 1
app/views/project/projectHome.scala.html View File

@ -2,7 +2,7 @@
@main(message, project, utils.MenuType.PROJECT_HOME) {
<div class="page">
@views.html.prjmenu(project, utils.MenuType.PROJECT_HOME)
@views.html.prjmenu(project, utils.MenuType.PROJECT_HOME, "")
<div class="bubble-wrap dark-gray project-home">
<div class="inner logo">

+ 72
- 46
app/views/project/projectList.scala.html View File

@ -1,51 +1,77 @@
@(message: String, currentPage: List[Project], filter:String, state:String)
@home(message, utils.MenuType.PROJECTS) {
<div class="page">
<div class="header-wrap">
<div class="stats-wrap">
@for(state <- Array("all", "public", "private")) {
<div class="stat">
<a href="@routes.ProjectApp.projects(state=state)">
<span class="desc"><strong>@Messages("project." + state.toLowerCase)</strong> @Messages("projects")</span>
<strong class="num @state">@Project.countByState(state)</strong>
</a>
</div>
}
</div>
<div class="search-wrap projects">
<div class="inner">
<form action="@routes.ProjectApp.projects()" method="get">
<input name="state" type="hidden" value="@state">
<input name="filter" class="text" type="text" placeholder="@Messages("site.project.filter")" value="@filter"><button type="submit" class="btn-transparent search-btn">SEARCH</button>
</form>
</div>
</div>
</div>
<ul class="all-projects">
<div class="page">
<div class="header-wrap">
<div class="stats-wrap">
<div class="stat">
<a href="@routes.ProjectApp.projects(state="all")">
<span class="desc"><strong>@Messages("project.all")</strong> @Messages("projects")</span>
<span class="num all">@Project.countByState("all")</span>
</a>
</div>
<div class="stat">
<a href="@routes.ProjectApp.projects(state="public")">
<span class="desc"><strong>@Messages("project.public")</strong> @Messages("projects")</span>
<span class="num open">@Project.countByState("public")</span>
</a>
</div>
<div class="stat">
<a href="@routes.ProjectApp.projects(state="private")">
<span class="desc"><strong>@Messages("project.private")</strong> @Messages("projects")</span>
<span class="num closed">@Project.countByState("private")</span>
</a>
</div>
</div>
<div class="search-wrap projects">
<div class="inner">
<form action="@routes.ProjectApp.projects()" method="get">
<input name="state" type="hidden" value="@state">
<input name="filter" class="text" type="text" placeholder="@Messages("site.project.filter")" value="@filter"><button type="submit" class="btn search-btn">SEARCH</button>
<a href="#" class="btn-advanced"><i class="ico"></i>Advanced Search</a>
</form>
<div class="srch-advanced">
상세검색 조건
</div>
</div>
</div>
</div>
<ul class="all-projects">
@for(project <- currentPage) {
<li class="project">
<div class="info-wrap">
<div class="header">
<a href="@routes.UserApp.userInfo(project.owner)">@project.owner</a> / <a href="@routes.ProjectApp.project(project.owner, project.name)" class="project-name">@project.name</a>
@if(!project.share_option){
<i class="ico ico-lock"></i>
}
</div>
<div class="desc">
@project.overview
</div>
<p class="name-tag">by <a href="@routes.UserApp.userInfo(project.owner)">@project.owner</a> <!--<span>20 days ago.--></span></p>
</div>
<div class="stats-wrap">
<!--<div class="like">
<i class="ico ico-like"></i><span class="num">1</span>
</div>
<i class="ico ico-activity low"></i>-->
<a href="@routes.UserApp.userInfo(project.owner)" class="user-thumb-wrap"><img src="@project.getOwnerByName(project.owner).avatarUrl"></a>
</div>
</li>
}
</ul>
</div>
<li class="project">
<div class="info-wrap">
<div class="header">
<a href="@routes.UserApp.userInfo(project.owner)">@project.owner</a> / <a href="@routes.ProjectApp.project(project.owner, project.name)" class="project-name">@project.name</a>
@if(!project.share_option){ <i class="ico ico-lock"></i> }
</div>
<div class="desc">
@project.overview
</div>
<p class="name-tag">by <a href="@routes.UserApp.userInfo(project.owner)">@project.owner</a> <!--<span>20 days ago.</span>--></p>
</div>
<div class="stats-wrap">
<div class="like">
<i class="ico ico-like"></i><span class="num">1</span>
</div>
<i class="ico ico-activity low"></i>
<a href="@routes.UserApp.userInfo(project.owner)" class="user-thumb-wrap"><img src="@project.getOwnerByName(project.owner).avatarUrl" width="34" height="34"></a>
</div>
</li>
}
</ul>
</div>
<script type="text/javascript">
$(document).ready(function(){
$(".btn-advanced").click(function(){
$(".inner").toggleClass("advanced");
});
});
</script>
}

+ 2
- 2
app/views/project/setting.scala.html View File

@ -6,8 +6,8 @@
@projectMngMain(message, project) {
@views.html.prjmenu(project, utils.MenuType.PROJECT_SETTING)
@views.html.prjmenu(project, utils.MenuType.PROJECT_SETTING, "")
<div class="bubble-wrap gray">
@form(action=routes.ProjectApp.settingProject(project.owner, project.name), 'id->"saveSetting" , 'enctype->"multipart/form-data", 'class->"nm"){
<input type="hidden" name="id" value="@projectForm("id").value.toLong">

+ 0
- 21
app/views/project/submenu.scala.html View File

@ -1,21 +0,0 @@
@(currPage: String, projectInst: Project)
@isActiveMenu(calls: Call*) = @{
var menuState = ""
for(call <- calls) {
if(call.toString().equals(request().path().toString())) {
menuState = "selected"
}
}
menuState
}
@makeMenu(call:Call, name:String) = {
<li class="menu @isActiveMenu(call)"><a href="@call">@name</a></li>
}
<div class="sub-menu-wrap">
<ul class="sub-menus">
@makeMenu(routes.ProjectApp.settingForm(projectInst.owner, projectInst.name), Messages("project.setting"))
@makeMenu(routes.ProjectApp.members(projectInst.owner, projectInst.name), Messages("project.member"))
@makeMenu(routes.MilestoneApp.milestones(projectInst.owner, projectInst.name), Messages("project.milestone"))
<li class="menu"></li>
</ul>
</div>

+ 13
- 12
app/views/user/signup.scala.html View File

@ -1,23 +1,23 @@
@(message: String, newUserForm: Form[User])
@home(message, utils.MenuType.NONE) {
<div class="page full">
@** Messages("title.signup") **@
<div class="page full">
<div class="center-wrap tag-line-wrap signup">
<h1 class="title">@Messages("hive.name") <span class="high-light">@Messages("title.signup")</span></h1>
<p class="tag-line signup"><span>Open Source</span> Project. <span>Code</span> Repository. <span>Issue</span> Tracker. <span>Task</span> Managspanent</p>
<h1 class="title"><span class="high-light">Sign Up for</span> @Messages("hive.name")</h1>
<p class="tag-line">Software development platform for Open Source project.</p>
</div>
<div class="signup-form-wrap">
<form action="@routes.UserApp.newUser()" name="signup" method="POST">
<label for="loginId" class="inline">
<input type="text" class="text loginId" id="loginId" placeholder='@Messages("user.signupId")' autocomplete="off" name="loginId">
<a class="isValid"></a>
<form action="@routes.UserApp.newUser()" method="POST" name="signup">
<label for="loginId">
<input type="text" class="text password" id="loginId" placeholder="@Messages("user.signupId")" autocomplete="off" name="loginId">
</label>
<label for="username" class="inline">
<input type="text" class="text uname" id="username" placeholder=9;@Messages("user.name")'; autocomplete="off" name="name">
<label for="uname">
<input type="text" class="text password" id="uname" placeholder=4;@Messages("user.name")"; autocomplete="off" name="name">
</label>
<label for="email">
<input type="text" class="text email" id="email" placeholder='@Messages("user.email")' autocomplete="off" name="email">
<a class="isValid"></a>
<input type="text" class="text password" id="email" placeholder="@Messages("user.email")" autocomplete="off" name="email">
</label>
<label for="password">
<input type="password" class="text password" id="password" placeholder="@Messages("user.password")" autocomplete="off" name="password">
@ -29,11 +29,12 @@
@Messages("user.isAlreadySignupUser") <a href="@routes.UserApp.loginForm()" class="go-login">@Messages("title.login")</a>
</div>
<div class="btns-row">
<button type="submit" class="n-btn orange sign-up">@Messages("title.signup")</button>
<button type="submit" class="n-btn orange sign-up">@Messages("user.signupBtn")</button>
</div>
</form>
</div>
</div>
<script type="text/javascript">
var passwordField = $('#password');
var emailField = $('#email');

+ 3
- 1
conf/messages.en View File

@ -25,7 +25,7 @@ title.sendMail = Send Mail
title.projectList = Project List
title.help = HELP
hive.name = nFORGE
hive.name = HIVE
hive.title = Collaborative Software Development Platform
hive.description = Make it better and simpler!
@ -80,6 +80,7 @@ button.login = Login
button.signup = Create an account
button.newProject = Create your project
button.detail = Detail
button.apply = Apply
checkbox.commented = Comment
checkbox.fileAttached = File Attached
@ -276,6 +277,7 @@ user.login.failed = Your login ID or password is not valid.
user.logout.success = Logout successfully
user.isAlreadySignupUser = HAVE AN ACCOUNT ALREADY?
user.signupId = ID (lower case)
user.signupBtn = Sign Up
#Time
time.just = just now

+ 8
- 6
conf/messages.ko View File

@ -17,7 +17,7 @@ title.site.userEdit = 유저 설정
title.login = 로그인
title.logout = 로그아웃
title.signup = 회원 가입
title.forgotpassword = 패스워드를 잊어버리셨나요?
title.forgotpassword = 비밀번호를 잊어버리셨나요?
title.rememberMe = 로그인 유지하기
title.commitHistory = 커밋 히스토리
title.mailSetting = 메일 설정
@ -25,7 +25,7 @@ title.sendMail = 메일 발송
title.projectList = 프로젝트 목록
title.help = 도움말
hive.name = nFORGE
hive.name = HIVE
hive.title = 협업개발 플랫폼
hive.description = Make it better and simpler!