
apply new design markups and update lesscss files
board write, board list, issue list, login/signup, project setting, member list and more...
@85ae6dcb5291f4a4cab6230a7f17972de7480edb
--- app/assets/stylesheets/less/_page.less
+++ app/assets/stylesheets/less/_page.less
... | ... | @@ -18,6 +18,7 @@ |
18 | 18 |
} //gnb-knob: deprecated |
19 | 19 |
|
20 | 20 |
.gnb-menu-wrap { |
21 |
+ /*background-color:@gnb-color;*/ |
|
21 | 22 |
overflow: hidden; |
22 | 23 |
|
23 | 24 |
.logo { |
... | ... | @@ -46,6 +47,7 @@ |
46 | 47 |
color: @gnb-link-color; |
47 | 48 |
a { |
48 | 49 |
font-size: 13px; |
50 |
+ /*font-family: "Myriad Pro", Din, Tahoma, Arial,sans-serif;*/ |
|
49 | 51 |
&:hover, &.selected { |
50 | 52 |
color: @gnb-link-hover-color; |
51 | 53 |
} |
... | ... | @@ -76,9 +78,10 @@ |
76 | 78 |
} |
77 | 79 |
.sp-line { |
78 | 80 |
padding: 0; |
79 |
- color: #fafafa; /*#506D73;*/ |
|
81 |
+ color: #ccc;/*fafafa;*/ /*#506D73;*/ |
|
80 | 82 |
font-size: 18px; |
81 |
- opacity:0.5; |
|
83 |
+ /*opacity:0.5;*/ |
|
84 |
+ font-family:Dotum; padding-top:3px; |
|
82 | 85 |
} |
83 | 86 |
.d-link-wrap { |
84 | 87 |
padding-top:2px; |
... | ... | @@ -109,8 +112,8 @@ |
109 | 112 |
width: 128px; height: 13px; |
110 | 113 |
|
111 | 114 |
font-size: 11px; |
112 |
- color: #898989; |
|
113 |
- background-color: transparent; |
|
115 |
+ color: #898989; /*@white;*/ |
|
116 |
+ background-color: transparent;/*@orange-search-bar-bg-color;*/ |
|
114 | 117 |
|
115 | 118 |
.box-shadow(none); |
116 | 119 |
} |
... | ... | @@ -222,6 +225,9 @@ |
222 | 225 |
color:#626262 !important; |
223 | 226 |
opacity:1 !important; |
224 | 227 |
} |
228 |
+ .search-bar { |
|
229 |
+ border:1px solid #2e2e2e; |
|
230 |
+ } |
|
225 | 231 |
} |
226 | 232 |
} |
227 | 233 |
} |
... | ... | @@ -232,7 +238,7 @@ |
232 | 238 |
&:hover { color:@orange; } |
233 | 239 |
} |
234 | 240 |
|
235 |
- .page { padding:40px 39px; } |
|
241 |
+ .page { padding:40px 39px 30px 39px; } |
|
236 | 242 |
} |
237 | 243 |
|
238 | 244 |
.page-wrap { |
... | ... | @@ -835,7 +841,7 @@ |
835 | 841 |
width: 400px; |
836 | 842 |
.center-block; |
837 | 843 |
.act-row { |
838 |
- margin-bottom: 45px; |
|
844 |
+ margin-bottom: 42px; |
|
839 | 845 |
line-height:22px; |
840 | 846 |
} |
841 | 847 |
.forgot-password { |
... | ... | @@ -853,7 +859,7 @@ |
853 | 859 |
.btns-row { |
854 | 860 |
width: 384px; |
855 | 861 |
.center-block; |
856 |
- margin-bottom: 50px; |
|
862 |
+ margin-bottom: 73px; |
|
857 | 863 |
.n-btn { |
858 | 864 |
&.log-in { |
859 | 865 |
width: 187px; |
... | ... | @@ -1120,14 +1126,17 @@ |
1120 | 1126 |
|
1121 | 1127 |
color:#000; |
1122 | 1128 |
.border-radius(0 2px 2px 0); |
1123 |
- .linear-gradient(#fff, #f2f2f3); |
|
1129 |
+ /*.linear-gradient(#fff, #f2f2f3);*/ |
|
1124 | 1130 |
|
1125 | 1131 |
/* |
1126 | 1132 |
.opacity(50); |
1127 | 1133 |
&:hover { |
1128 | 1134 |
.opacity(100); |
1129 | 1135 |
} |
1130 |
- */ |
|
1136 |
+ */ |
|
1137 |
+ &:hover { |
|
1138 |
+ color:@orange; |
|
1139 |
+ } |
|
1131 | 1140 |
} |
1132 | 1141 |
.btn-advanced { |
1133 | 1142 |
color:#707070; |
... | ... | @@ -1368,7 +1377,8 @@ |
1368 | 1377 |
padding: 10px 20px; |
1369 | 1378 |
} |
1370 | 1379 |
&.bottom { |
1371 |
- padding: 10px 0; |
|
1380 |
+ padding: 20px 0; /*10px 0;*/ |
|
1381 |
+ padding-bottom:12px; |
|
1372 | 1382 |
border-bottom: 0 none; |
1373 | 1383 |
text-align: center; |
1374 | 1384 |
} |
... | ... | @@ -1557,6 +1567,9 @@ |
1557 | 1567 |
.name { |
1558 | 1568 |
font-size: 11px; |
1559 | 1569 |
} |
1570 |
+ .btns { |
|
1571 |
+ text-transform: capitalize; |
|
1572 |
+ } |
|
1560 | 1573 |
} |
1561 | 1574 |
} |
1562 | 1575 |
} |
... | ... | @@ -1610,10 +1623,12 @@ |
1610 | 1623 |
margin: 15px 0 10px; |
1611 | 1624 |
padding-right: 20px; |
1612 | 1625 |
.filter { |
1613 |
- .opacity(70); |
|
1626 |
+ /* |
|
1627 |
+ .opacity(70); |
|
1614 | 1628 |
&.active { |
1615 | 1629 |
.opacity(100); |
1616 | 1630 |
} |
1631 |
+ */ |
|
1617 | 1632 |
} |
1618 | 1633 |
} |
1619 | 1634 |
} |
... | ... | @@ -1627,6 +1642,8 @@ |
1627 | 1642 |
border-bottom: 1px solid @gray-d4; |
1628 | 1643 |
padding: 15px 30px; |
1629 | 1644 |
overflow: hidden; |
1645 |
+ &:last-of-type { border-bottom:none; } |
|
1646 |
+ |
|
1630 | 1647 |
.infos { |
1631 | 1648 |
width: 660px; |
1632 | 1649 |
float: left; |
... | ... | @@ -1685,6 +1702,7 @@ |
1685 | 1702 |
font-size: 0.6em; |
1686 | 1703 |
vertical-align: top; |
1687 | 1704 |
padding-top: 20px; |
1705 |
+ margin-left:7px; |
|
1688 | 1706 |
} |
1689 | 1707 |
} |
1690 | 1708 |
} |
... | ... | @@ -1724,6 +1742,7 @@ |
1724 | 1742 |
} |
1725 | 1743 |
} |
1726 | 1744 |
&.right { |
1745 |
+ height:376px; |
|
1727 | 1746 |
margin-left: 610px; |
1728 | 1747 |
padding: 15px 10px; |
1729 | 1748 |
background-color: #ECECEC; |
... | ... | @@ -2039,6 +2058,7 @@ |
2039 | 2058 |
margin-bottom: 10px; |
2040 | 2059 |
} |
2041 | 2060 |
.comment-btn { |
2061 |
+ vertical-align:top; |
|
2042 | 2062 |
background-color: @white; |
2043 | 2063 |
color: @orange; |
2044 | 2064 |
line-height: 1; |
... | ... | @@ -2152,7 +2172,18 @@ |
2152 | 2172 |
} |
2153 | 2173 |
} |
2154 | 2174 |
|
2155 |
-.content-wrap { |
|
2175 |
+.frm-wrap { |
|
2176 |
+ dl, dt, dd { margin:0; padding:0; } |
|
2177 |
+ dt { |
|
2178 |
+ margin:3px 0px 1px 0px; |
|
2179 |
+ |
|
2180 |
+ label { |
|
2181 |
+ color:#959595; font-weight:bold; |
|
2182 |
+ margin-right:5px; |
|
2183 |
+ } |
|
2184 |
+ } |
|
2185 |
+} |
|
2186 |
+.content-wrap { |
|
2156 | 2187 |
.text { |
2157 | 2188 |
width: 866px; |
2158 | 2189 |
resize:vertical; |
... | ... | @@ -2161,7 +2192,7 @@ |
2161 | 2192 |
margin-bottom: 15px; |
2162 | 2193 |
} |
2163 | 2194 |
.content { |
2164 |
- height: 320px; |
|
2195 |
+ height:177px; /*320px;*/ |
|
2165 | 2196 |
background-color: #F9F9F9; |
2166 | 2197 |
} |
2167 | 2198 |
.actions { |
... | ... | @@ -2319,7 +2350,7 @@ |
2319 | 2350 |
margin: 0; |
2320 | 2351 |
width: 350px; /*357px;*/ |
2321 | 2352 |
.box-shadow(none); |
2322 |
- .border-radius(4px 0 0 4px); |
|
2353 |
+ .border-radius(2px 0 0 2px); |
|
2323 | 2354 |
&:focus { |
2324 | 2355 |
.box-shadow(none); |
2325 | 2356 |
border: 1px solid #CCC; |
... | ... | @@ -2331,13 +2362,14 @@ |
2331 | 2362 |
border: 1px solid #CCC; |
2332 | 2363 |
border-left: 0 none; |
2333 | 2364 |
line-height: 26px; |
2334 |
- .inline-block; |
|
2335 | 2365 |
vertical-align: top; |
2336 | 2366 |
text-decoration: none; |
2337 |
- .border-radius(0 4px 4px 0); |
|
2338 | 2367 |
padding: 0 19px; |
2339 | 2368 |
margin-right: 10px; |
2340 | 2369 |
font-weight: bold; |
2370 |
+ .inline-block; |
|
2371 |
+ .border-radius(0 2px 2px 0); |
|
2372 |
+ |
|
2341 | 2373 |
&:hover { |
2342 | 2374 |
color: @orange; |
2343 | 2375 |
} |
... | ... | @@ -2359,7 +2391,7 @@ |
2359 | 2391 |
overflow: hidden; |
2360 | 2392 |
.code-browse-header { |
2361 | 2393 |
color: @white; |
2362 |
- background-color: #4D4D4D; |
|
2394 |
+ background-color: #6c6c6c; |
|
2363 | 2395 |
line-height: 34px; |
2364 | 2396 |
font-size: 11px; |
2365 | 2397 |
padding: 0 20px; |
... | ... | @@ -2956,7 +2988,16 @@ |
2956 | 2988 |
background-color:#878787 !important; |
2957 | 2989 |
.linear-gradient(#878787, darken(#878787, 10%)); |
2958 | 2990 |
} |
2991 |
+.dropdown-menu .active > a, .dropdown-menu .active > a:hover { |
|
2992 |
+ color:#fff; |
|
2993 |
+ background-color:#878787 !important; |
|
2994 |
+ .linear-gradient(#878787, darken(#878787, 10%)); |
|
2995 |
+} |
|
2959 | 2996 |
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 { |
2960 | 2997 |
.box-shadow(none); |
2961 | 2998 |
.border-radius(2px); |
2962 |
-}(파일 끝에 줄바꿈 문자 없음) |
|
2999 |
+} |
|
3000 |
+/* |
|
3001 |
+hr.dark-gray { border-top:1px solid #d4d4d4; } |
|
3002 |
+*/ |
|
3003 |
+.alert { position:absolute; width:910px; top:76px; margin-left:auto; } |
--- app/assets/stylesheets/less/_sprites.less
+++ app/assets/stylesheets/less/_sprites.less
... | ... | @@ -285,23 +285,23 @@ |
285 | 285 |
|
286 | 286 |
.ico-search { |
287 | 287 |
width: 14px; |
288 |
- height: 13px; |
|
289 |
- background-position: -28px -27px; |
|
288 |
+ height: 14px;/*13px;*/ |
|
289 |
+ background-position:-136px -152px; |
|
290 |
+ |
|
291 |
+ /*background-position: -28px -27px;*/ |
|
290 | 292 |
/*&:hover { |
291 | 293 |
background-position: -44px -27px; |
292 | 294 |
}*/ |
293 | 295 |
} |
294 | 296 |
|
295 |
-/*.orange {*/ |
|
297 |
+/*.orange { |
|
296 | 298 |
.ico-search { |
297 | 299 |
background-position: -60px -27px; |
298 |
- /* |
|
299 | 300 |
&:hover { |
300 | 301 |
background-position: -76px -27px; |
301 | 302 |
} |
302 |
- */ |
|
303 | 303 |
} |
304 |
-/*}*/ |
|
304 |
+}*/ |
|
305 | 305 |
|
306 | 306 |
.ico-open-tag { |
307 | 307 |
width: 43px; |
--- app/views/board/editPost.scala.html
+++ app/views/board/editPost.scala.html
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 |
|
7 | 7 |
@main(title, project, utils.MenuType.BOARD) { |
8 | 8 |
<div class="page"> |
9 |
- @views.html.prjmenu(project, utils.MenuType.BOARD) |
|
9 |
+ @views.html.prjmenu(project, utils.MenuType.BOARD, "main-menu-only") |
|
10 | 10 |
|
11 | 11 |
<div class="content-wrap"> |
12 | 12 |
|
--- app/views/board/newPost.scala.html
+++ app/views/board/newPost.scala.html
... | ... | @@ -5,7 +5,7 @@ |
5 | 5 |
|
6 | 6 |
@main(title, project, utils.MenuType.BOARD) { |
7 | 7 |
<div class="page"> |
8 |
- @views.html.prjmenu(project, utils.MenuType.BOARD) |
|
8 |
+ @views.html.prjmenu(project, utils.MenuType.BOARD, "main-menu-only") |
|
9 | 9 |
|
10 | 10 |
<div class="content-wrap"> |
11 | 11 |
|
--- app/views/board/post.scala.html
+++ app/views/board/post.scala.html
... | ... | @@ -7,7 +7,7 @@ |
7 | 7 |
|
8 | 8 |
@main("상세보기", project, utils.MenuType.BOARD){ |
9 | 9 |
<div class="page board-view"> |
10 |
- @views.html.prjmenu(project, utils.MenuType.BOARD) |
|
10 |
+ @views.html.prjmenu(project, utils.MenuType.BOARD, "main-menu-only") |
|
11 | 11 |
|
12 | 12 |
<div class="board-header"> |
13 | 13 |
<div class="board-id div">@post.id</div> |
--- app/views/board/postList.scala.html
+++ app/views/board/postList.scala.html
... | ... | @@ -21,7 +21,7 @@ |
21 | 21 |
|
22 | 22 |
@main(title, project, utils.MenuType.BOARD) { |
23 | 23 |
<div class="page"> |
24 |
- @views.html.prjmenu(project, utils.MenuType.BOARD) |
|
24 |
+ @views.html.prjmenu(project, utils.MenuType.BOARD, "main-menu-only") |
|
25 | 25 |
|
26 | 26 |
<div class="header-wrap"> |
27 | 27 |
<div class="search-wrap board"> |
... | ... | @@ -30,7 +30,7 @@ |
30 | 30 |
<input type="hidden" name="key" value="@param.key"> |
31 | 31 |
<input type="hidden" name="order" value="@param.order"> |
32 | 32 |
<input type="hidden" name="pageNum" value="@param.pageNum"> |
33 |
- <input name="filter" class="text" type="text" placeholder="현재 게시글에서 검색" value="@param.filter"><button type="submit" class="btn-transparent search-btn underConstruction">SEARCH</button> |
|
33 |
+ <input name="filter" class="text" type="text" placeholder="현재 게시글에서 검색" value="@param.filter"><button type="submit" class="btn search-btn underConstruction">SEARCH</button> |
|
34 | 34 |
</form> |
35 | 35 |
</div> |
36 | 36 |
</div> |
... | ... | @@ -71,7 +71,7 @@ |
71 | 71 |
<i class="ico ico-comment-bubble"></i><span class="num">@post.commentCount</span> |
72 | 72 |
</div> |
73 | 73 |
<a href="@routes.UserApp.userInfo(post.authorLoginId)" class="author-avatar img-rounded pull-right"> |
74 |
- <img class="user-picture" src="@User.findByLoginId(post.authorLoginId).avatarUrl" alt="@post.authorName"></a> |
|
74 |
+ <img class="user-picture" src="@User.findByLoginId(post.authorLoginId).avatarUrl" alt="@post.authorName" width="34" height="34"></a> |
|
75 | 75 |
</div> |
76 | 76 |
</li> |
77 | 77 |
} |
--- app/views/code/codeView.scala.html
+++ app/views/code/codeView.scala.html
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 |
|
3 | 3 |
@main("코드", project, utils.MenuType.CODE){ |
4 | 4 |
<div class="page" style="padding-bottom:20px;"><!-- code-browse --> |
5 |
- @views.html.prjmenu(project, utils.MenuType.CODE) |
|
5 |
+ @views.html.prjmenu(project, utils.MenuType.CODE, "main-menu-only") |
|
6 | 6 |
|
7 | 7 |
<ul class="nav nav-tabs code-tab"> |
8 | 8 |
<li class="active"> |
--- app/views/code/nohead.scala.html
+++ app/views/code/nohead.scala.html
... | ... | @@ -3,7 +3,7 @@ |
3 | 3 |
@main(Messages("Commit History"), project, utils.MenuType.CODE) { |
4 | 4 |
<div class="page"> |
5 | 5 |
|
6 |
- @views.html.prjmenu(project, utils.MenuType.CODE) |
|
6 |
+ @views.html.prjmenu(project, utils.MenuType.CODE, "main-menu-only") |
|
7 | 7 |
|
8 | 8 |
<div id="codeError" class="row-fluid"> |
9 | 9 |
<div class="well span12"> |
--- app/views/help/toc.scala.html
+++ app/views/help/toc.scala.html
... | ... | @@ -1,142 +1,149 @@ |
1 |
-@(message: String) |
|
2 |
- |
|
3 |
-@home(message, utils.MenuType.HELP) { |
|
4 |
-<div class="page"> |
|
5 |
- <!--<div class="header-wrap"> |
|
6 |
- <div class="search-wrap help"> |
|
7 |
- <div class="inner"> |
|
8 |
- <form action="/project/search" method="get"> |
|
9 |
- <span class="labels">FAQ</span> |
|
10 |
- <span class="sp-line"></span> |
|
11 |
- <span class="sub labels">Help me with</span> |
|
12 |
- <input name="query" class="text" type="text" placeholder="FAQ 검색"><button type="submit" class="btn-transparent search-btn">SEARCH</button> |
|
13 |
- </form> |
|
14 |
- </div> |
|
15 |
- </div> |
|
16 |
- </div>--> |
|
17 |
- <ul class="qas"> |
|
18 |
- <li class="qa"> |
|
19 |
- <div class="question-wrap"> |
|
20 |
- <i class="ico ico-q"></i> |
|
21 |
- <a href="#!/toggle" class="question">N4를 설치하고 싶어요.</a> |
|
22 |
- </div> |
|
23 |
- <div class="answer-wrap"> |
|
24 |
- <i class="ico ico-a"></i> |
|
25 |
- <div class="answer" style="width:100%"> |
|
26 |
- N4를 설치하기 전에 준비해야 할것은 다음과 같습니다. |
|
27 |
- <ul> |
|
28 |
- <li><a href="http://www.oracle.com/technetwork/java/javase">JDK 1.6이상</a></li> |
|
29 |
- <li><a href="http://www.playframework.org/">Play Framework</a></li> |
|
30 |
- <li><a href="http://git-scm.com/">Git Client</a></li> |
|
31 |
- </ul> |
|
32 |
- 위의 프로그램을 모두 인스톨 하신후 소스코드를 받습니다. |
|
33 |
- <pre><code># git clone https://github.com/nforge/nforge4.git</code></pre> |
|
34 |
- 인스톨된 폴더로 가서 N4를 실행시키면 됩니다. |
|
35 |
- <pre><code># play run</code></pre> |
|
36 |
- </div> |
|
37 |
- </div> |
|
38 |
- </li> |
|
39 |
- <li class="qa"> |
|
40 |
- <div class="question-wrap"> |
|
41 |
- <i class="ico ico-q"></i> |
|
42 |
- <a href="#!/toggle" class="question">프로젝트를 새로 생성하고 싶어요.</a> |
|
43 |
- </div> |
|
44 |
- <div class="answer-wrap"> |
|
45 |
- <i class="ico ico-a"></i> |
|
46 |
- <div class="answer" style="width:100%"> |
|
47 |
- <p>상단의 New Project를 클릭하신후 필요한 정보를 입력하시면 됩니다.</p> |
|
48 |
- <p> |
|
49 |
- 공개설정에서 공개를 택하게 되면 해당 프로젝트의 맴버가 아닌 |
|
50 |
- 사용자들도 해당 프로젝트를 둘러볼수 있게 되며 맴버가 아니라면 |
|
51 |
- code 저장소를 익명으로 접근하여 소스코드를 받아 갈 수는 있지만 |
|
52 |
- 소스코드를 수정하지는 못합니다. 공개설정에서 비 공개를 택하게 되면 |
|
53 |
- 해당 프로젝트의 맴버가 아닌 사용자들은 단지 설명과 |
|
54 |
- 이름만을 볼수 있습니다. |
|
55 |
- </p> |
|
56 |
- <p> |
|
57 |
- 코드 저장소 방식은 현재 Git과 Subvision을 지원합니다. |
|
58 |
- Subvision과 Git은 전세계적으로 코드관리 시스템으로 널리 쓰이고 있으며 |
|
59 |
- 충분한 신뢰성과 성능을 가지고 있습니다. |
|
60 |
- </p> |
|
61 |
- <p> |
|
62 |
- 위의 내용을 다 작성하셨다면 이용약관옆의 물음표를 눌러 약관을 살펴보시고 동의함을 눌러주시면 됩니다. |
|
63 |
- 마지막으로 save버튼을 누르면 새로운 프로젝트를 생성하실수 있습니다. |
|
64 |
- </p> |
|
65 |
- </div> |
|
66 |
- </div> |
|
67 |
- </li> |
|
68 |
- <li class="qa"> |
|
69 |
- <div class="question-wrap"> |
|
70 |
- <i class="ico ico-q"></i> |
|
71 |
- <a href="#!/toggle" class="question">내가 참여하는 프로젝트들은 어디서 볼수 있나요?</a> |
|
72 |
- </div> |
|
73 |
- <div class="answer-wrap"> |
|
74 |
- <i class="ico ico-a"></i> |
|
75 |
- <div class="answer" style="width:100%"> |
|
76 |
- <a href="/">메인화면</a> |
|
77 |
- 우측 하단에 다음과 같이 참여하고 있는 프로젝트의 목록을 볼수 있습니다. 자물쇠가 있는 것은 비공개 |
|
78 |
- 프로젝트이며 자물쇠가 없는 것은 공개 프로젝트 입니다. 괄호 안은 프로젝트를 만든사람을 나타내며 괄호 앞은 |
|
79 |
- 프로젝트의 제목을 나타냅니다. |
|
80 |
- <p><img src="/assets/help/myProjects.png"/></p> |
|
81 |
- 혹은 자신의 <a href="/info">정보 페이지</a>에서도 확인하실수 있습니다. |
|
82 |
- </div> |
|
83 |
- </div> |
|
84 |
- </li> |
|
85 |
- <li class="qa"> |
|
86 |
- <div class="question-wrap"> |
|
87 |
- <i class="ico ico-q"></i> |
|
88 |
- <a href="#!/toggle" class="question">프로젝트 탈퇴는 어떻게 하나요.</a> |
|
89 |
- </div> |
|
90 |
- <div class="answer-wrap"> |
|
91 |
- <i class="ico ico-a"></i> |
|
92 |
- <div class="answer" style="width:100%"> |
|
93 |
- 혹은 자신의 <a href="/info">정보 페이지</a>에서 참여하고 있는 프로젝트 목록을 볼수있고 |
|
94 |
- 탈퇴도 할수 있습니다. 자신이 프로젝트의 유일한 관리자라면 해당 프로젝트에서 탈퇴를 할수 없습니다. |
|
95 |
- </div> |
|
96 |
- </div> |
|
97 |
- </li> |
|
98 |
- <li class="qa"> |
|
99 |
- <div class="question-wrap"> |
|
100 |
- <i class="ico ico-q"></i> |
|
101 |
- <a href="#!/toggle" class="question">게시판에서는 어떠한 것들을 할수 있나요?</a> |
|
102 |
- </div> |
|
103 |
- <div class="answer-wrap"> |
|
104 |
- <i class="ico ico-a"></i> |
|
105 |
- <div class="answer" style="width:100%"> |
|
106 |
- 게시판에서는 다음과 같은 기능이 가능합니다. |
|
107 |
- <ul> |
|
108 |
- <li>게시물 상세 조회: 사용자는 게시물의 내용을 볼 수 있다.</li> |
|
109 |
- <li>게시물 댓글 등록: 로그인 유저는 게시물에 댓글을 남길 수 있다.</li> |
|
110 |
- <li>게시물 댓글 조회: 사용자는 게시물의 댓글을 볼 수 있다.</li> |
|
111 |
- <li>게시물 댓글 삭제: 로그인 유저는 자신이 남긴 댓글을 삭제할 수 있다.</li> |
|
112 |
- <li>관리자 게시물 댓글 삭제: 프로젝트 관리자는 댓글을 삭제할 수 있다.</li> |
|
113 |
- <li>관리자 게시물 수정: 프로젝트 관리자는 게시물을 편집/삭제 할 수 있다.</li> |
|
114 |
- </ul> |
|
115 |
- </div> |
|
116 |
- </div> |
|
117 |
- </li> |
|
118 |
- <li class="qa"> |
|
119 |
- <div class="question-wrap"> |
|
120 |
- <i class="ico ico-q"></i> |
|
121 |
- <a href="#!/toggle" class="question">N4의 버그를 발견했어요.</a> |
|
122 |
- </div> |
|
123 |
- <div class="answer-wrap"> |
|
124 |
- <i class="ico ico-a"></i> |
|
125 |
- <div class="answer" style="width:100%"> |
|
126 |
- N4는 현재 Open Source로 진행되고 있습니다. 버그를 발견하셨다면 |
|
127 |
- <a href="https://github.com/nforge/nforge4/issues">N4 이슈트레커에 등록</a>해 주시거나 |
|
128 |
- 패치를 만들어 보내주시면 됩니다. |
|
129 |
- </div> |
|
130 |
- </div> |
|
131 |
- </li> |
|
132 |
- </ul> |
|
133 |
- </div> |
|
134 |
- <script> |
|
135 |
- $("a.question").click(function(){ |
|
136 |
- $(this).parents("li").toggleClass("open"); |
|
137 |
- }); |
|
138 |
- </script> |
|
139 |
-} |
|
140 |
- |
|
141 |
- |
|
142 |
- |
|
1 |
+@(message: String) |
|
2 |
+ |
|
3 |
+@home(message, utils.MenuType.HELP) { |
|
4 |
+<div class="page"> |
|
5 |
+ <div class="header-wrap"> |
|
6 |
+ <div class="search-wrap help"> |
|
7 |
+ <div class="inner"> |
|
8 |
+ <form action="/project/search" method="get"> |
|
9 |
+ <span class="labels">FAQ</span><!-- |
|
10 |
+ --><input name="query" class="text" type="text" placeholder="현재 게시글에서 검색"><button type="submit" class="btn search-btn">SEARCH</button> |
|
11 |
+ </form> |
|
12 |
+ </div> |
|
13 |
+ </div> |
|
14 |
+ </div> |
|
15 |
+ <ul class="qas"> |
|
16 |
+ <li class="qa"> |
|
17 |
+ <div class="question-wrap"> |
|
18 |
+ <i class="ico ico-q"></i> |
|
19 |
+ <a href="#!/toggle" class="question">N4를 설치하고 싶어요.</a> |
|
20 |
+ <i class="ico icor"></i> |
|
21 |
+ </div> |
|
22 |
+ <div class="answer-wrap"> |
|
23 |
+ <i class="ico ico-a"></i> |
|
24 |
+ <div class="answer" style="width:100%"> |
|
25 |
+ N4를 설치하기 전에 준비해야 할것은 다음과 같습니다. |
|
26 |
+ <ul> |
|
27 |
+ <li><a href="http://www.oracle.com/technetwork/java/javase">JDK 1.6이상</a></li> |
|
28 |
+ <li><a href="http://www.playframework.org/">Play Framework</a></li> |
|
29 |
+ <li><a href="http://git-scm.com/">Git Client</a></li> |
|
30 |
+ </ul> |
|
31 |
+ 위의 프로그램을 모두 인스톨 하신후 소스코드를 받습니다. |
|
32 |
+ <pre><code># git clone https://github.com/nforge/nforge4.git</code></pre> |
|
33 |
+ 인스톨된 폴더로 가서 N4를 실행시키면 됩니다. |
|
34 |
+ <pre><code># play run</code></pre> |
|
35 |
+ </div> |
|
36 |
+ </div> |
|
37 |
+ </li> |
|
38 |
+ <li class="qa"> |
|
39 |
+ <div class="question-wrap"> |
|
40 |
+ <i class="ico ico-q"></i> |
|
41 |
+ <a href="#!/toggle" class="question">프로젝트를 새로 생성하고 싶어요.</a> |
|
42 |
+ <i class="ico icor"></i> |
|
43 |
+ </div> |
|
44 |
+ <div class="answer-wrap"> |
|
45 |
+ <i class="ico ico-a"></i> |
|
46 |
+ <div class="answer" style="width:100%"> |
|
47 |
+ <p>상단의 New Project를 클릭하신후 필요한 정보를 입력하시면 됩니다.</p> |
|
48 |
+ <p> |
|
49 |
+ 공개설정에서 공개를 택하게 되면 해당 프로젝트의 맴버가 아닌 |
|
50 |
+ 사용자들도 해당 프로젝트를 둘러볼수 있게 되며 맴버가 아니라면 |
|
51 |
+ code 저장소를 익명으로 접근하여 소스코드를 받아 갈 수는 있지만 |
|
52 |
+ 소스코드를 수정하지는 못합니다. 공개설정에서 비 공개를 택하게 되면 |
|
53 |
+ 해당 프로젝트의 맴버가 아닌 사용자들은 단지 설명과 |
|
54 |
+ 이름만을 볼수 있습니다. |
|
55 |
+ </p> |
|
56 |
+ <p> |
|
57 |
+ 코드 저장소 방식은 현재 Git과 Subvision을 지원합니다. |
|
58 |
+ Subvision과 Git은 전세계적으로 코드관리 시스템으로 널리 쓰이고 있으며 |
|
59 |
+ 충분한 신뢰성과 성능을 가지고 있습니다. |
|
60 |
+ </p> |
|
61 |
+ <p> |
|
62 |
+ 위의 내용을 다 작성하셨다면 이용약관옆의 물음표를 눌러 약관을 살펴보시고 동의함을 눌러주시면 됩니다. |
|
63 |
+ 마지막으로 save버튼을 누르면 새로운 프로젝트를 생성하실수 있습니다. |
|
64 |
+ </p> |
|
65 |
+ </div> |
|
66 |
+ </div> |
|
67 |
+ </li> |
|
68 |
+ <li class="qa"> |
|
69 |
+ <div class="question-wrap"> |
|
70 |
+ <i class="ico ico-q"></i> |
|
71 |
+ <a href="#!/toggle" class="question">내가 참여하는 프로젝트들은 어디서 볼수 있나요?</a> |
|
72 |
+ <i class="ico icor"></i> |
|
73 |
+ </div> |
|
74 |
+ <div class="answer-wrap"> |
|
75 |
+ <i class="ico ico-a"></i> |
|
76 |
+ <div class="answer" style="width:100%"> |
|
77 |
+ <a href="/">메인화면</a> |
|
78 |
+ 우측 하단에 다음과 같이 참여하고 있는 프로젝트의 목록을 볼수 있습니다. 자물쇠가 있는 것은 비공개 |
|
79 |
+ 프로젝트이며 자물쇠가 없는 것은 공개 프로젝트 입니다. 괄호 안은 프로젝트를 만든사람을 나타내며 괄호 앞은 |
|
80 |
+ 프로젝트의 제목을 나타냅니다. |
|
81 |
+ <p><img src="/assets/help/myProjects.png"/></p> |
|
82 |
+ 혹은 자신의 <a href="/info">정보 페이지</a>에서도 확인하실수 있습니다. |
|
83 |
+ </div> |
|
84 |
+ </div> |
|
85 |
+ </li> |
|
86 |
+ <li class="qa"> |
|
87 |
+ <div class="question-wrap"> |
|
88 |
+ <i class="ico ico-q"></i> |
|
89 |
+ <a href="#!/toggle" class="question">프로젝트 탈퇴는 어떻게 하나요.</a> |
|
90 |
+ <i class="ico icor"></i> |
|
91 |
+ </div> |
|
92 |
+ <div class="answer-wrap"> |
|
93 |
+ <i class="ico ico-a"></i> |
|
94 |
+ <div class="answer" style="width:100%"> |
|
95 |
+ 혹은 자신의 <a href="/info">정보 페이지</a>에서 참여하고 있는 프로젝트 목록을 볼수있고 |
|
96 |
+ 탈퇴도 할수 있습니다. 자신이 프로젝트의 유일한 관리자라면 해당 프로젝트에서 탈퇴를 할수 없습니다. |
|
97 |
+ </div> |
|
98 |
+ </div> |
|
99 |
+ </li> |
|
100 |
+ <li class="qa"> |
|
101 |
+ <div class="question-wrap"> |
|
102 |
+ <i class="ico ico-q"></i> |
|
103 |
+ <a href="#!/toggle" class="question">게시판에서는 어떠한 것들을 할수 있나요?</a> |
|
104 |
+ <i class="ico icor"></i> |
|
105 |
+ </div> |
|
106 |
+ <div class="answer-wrap"> |
|
107 |
+ <i class="ico ico-a"></i> |
|
108 |
+ <div class="answer" style="width:100%"> |
|
109 |
+ 게시판에서는 다음과 같은 기능이 가능합니다. |
|
110 |
+ <ul> |
|
111 |
+ <li>게시물 상세 조회: 사용자는 게시물의 내용을 볼 수 있다.</li> |
|
112 |
+ <li>게시물 댓글 등록: 로그인 유저는 게시물에 댓글을 남길 수 있다.</li> |
|
113 |
+ <li>게시물 댓글 조회: 사용자는 게시물의 댓글을 볼 수 있다.</li> |
|
114 |
+ <li>게시물 댓글 삭제: 로그인 유저는 자신이 남긴 댓글을 삭제할 수 있다.</li> |
|
115 |
+ <li>관리자 게시물 댓글 삭제: 프로젝트 관리자는 댓글을 삭제할 수 있다.</li> |
|
116 |
+ <li>관리자 게시물 수정: 프로젝트 관리자는 게시물을 편집/삭제 할 수 있다.</li> |
|
117 |
+ </ul> |
|
118 |
+ </div> |
|
119 |
+ </div> |
|
120 |
+ </li> |
|
121 |
+ <li class="qa"> |
|
122 |
+ <div class="question-wrap"> |
|
123 |
+ <i class="ico ico-q"></i> |
|
124 |
+ <a href="#!/toggle" class="question">N4의 버그를 발견했어요.</a> |
|
125 |
+ <i class="ico icor"></i> |
|
126 |
+ </div> |
|
127 |
+ <div class="answer-wrap"> |
|
128 |
+ <i class="ico ico-a"></i> |
|
129 |
+ <div class="answer" style="width:100%"> |
|
130 |
+ N4는 현재 Open Source로 진행되고 있습니다. 버그를 발견하셨다면 |
|
131 |
+ <a href="https://github.com/nforge/nforge4/issues">N4 이슈트레커에 등록</a>해 주시거나 |
|
132 |
+ 패치를 만들어 보내주시면 됩니다. |
|
133 |
+ </div> |
|
134 |
+ </div> |
|
135 |
+ </li> |
|
136 |
+ </ul> |
|
137 |
+ </div> |
|
138 |
+ |
|
139 |
+<script type="text/javascript"> |
|
140 |
+ $(document).ready(function(){ |
|
141 |
+ $(".qas > .qa").click(function(e){ |
|
142 |
+ $(e.currentTarget).toggleClass("open"); |
|
143 |
+ }); |
|
144 |
+ }); |
|
145 |
+</script> |
|
146 |
+} |
|
147 |
+ |
|
148 |
+ |
|
149 |
+ |
--- app/views/issue/issueList.scala.html
+++ app/views/issue/issueList.scala.html
... | ... | @@ -43,7 +43,7 @@ |
43 | 43 |
@@IMPORT url("/assets/stylesheets/issue.css"); |
44 | 44 |
</style> |
45 | 45 |
<div class="page-padding"> |
46 |
- @views.html.prjmenu(project, utils.MenuType.ISSUE) |
|
46 |
+ @views.html.prjmenu(project, utils.MenuType.ISSUE, "main-menu-only") |
|
47 | 47 |
|
48 | 48 |
<div class="dashboard"> |
49 | 49 |
<dl class="row-fluid"> |
--- app/views/login.scala.html
+++ app/views/login.scala.html
... | ... | @@ -1,23 +1,35 @@ |
1 | 1 |
@(message:String, userForm:Form[User]) |
2 | 2 |
|
3 | 3 |
@home(message, utils.MenuType.NONE) { |
4 |
-<div class="page full"> |
|
4 |
+ |
|
5 |
+ <div class="page full"> |
|
5 | 6 |
<div class="center-wrap tag-line-wrap login"> |
6 |
- <h1 class="title"><span class="high-light">Open Source</span> N4</h1> |
|
7 |
+ <h1 class="title"><span class="high-light">Log In for</span> HIVE</h1> |
|
7 | 8 |
<p class="tag-line">Software development platform for Open Source project.</p> |
8 | 9 |
</div> |
9 |
- <div class="login-form-wrap"> |
|
10 |
+ <div class="login-form-wrap frm-wrap"> |
|
10 | 11 |
<form action="@routes.UserApp.login()" method="POST"> |
11 |
- <label for="loginId"> |
|
12 |
- <input type="text" class="text loginId" id="loginId" placeholder="ID" autocomplete="off" name="loginId"> |
|
13 |
- </label> |
|
14 |
- <label for="password"> |
|
15 |
- <input type="password" class="text password" id="password" placeholder="PASSWORD" autocomplete="off" name="password"> |
|
16 |
- </label> |
|
12 |
+ <dl> |
|
13 |
+ <dt> |
|
14 |
+ <label for="email">@Messages("user.loginId")</label> |
|
15 |
+ </dt> |
|
16 |
+ <dd> |
|
17 |
+ <input type="text" class="text email" id="loginId" autocomplete="off" name="loginId"> |
|
18 |
+ </dd> |
|
19 |
+ |
|
20 |
+ <dt> |
|
21 |
+ <label for="password">@Messages("user.password")</label> |
|
22 |
+ </dt> |
|
23 |
+ <dd> |
|
24 |
+ <input type="password" class="text password" id="password" autocomplete="off" name="password"> |
|
25 |
+ </dd> |
|
26 |
+ </dl> |
|
27 |
+ |
|
17 | 28 |
<div class="act-row"> |
18 |
- <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"> |
|
19 |
- <a href="/forgot-password" class="forgot-password">@Messages("title.forgotpassword")</a></span> |
|
29 |
+ <input type="checkbox" class="checkbox" autocomplete="off" id="remember-me" name="remeber-me"><label for="remember-me" class="bg-checkbox">@Messages("title.rememberMe")</label> |
|
30 |
+ <a href="/forgot-password" class="forgot-password">@Messages("title.forgotpassword")</a> |
|
20 | 31 |
</div> |
32 |
+ |
|
21 | 33 |
<div class="btns-row"> |
22 | 34 |
<button type="submit" class="n-btn orange log-in"><i class="ico ico-user-white"></i>@Messages("button.login")</button><!-- |
23 | 35 |
--><a href="@routes.UserApp.signupForm()" class="n-btn blue join"><i class="ico ico-join"></i>@Messages("title.signup")</a> |
... | ... | @@ -25,4 +37,5 @@ |
25 | 37 |
</form> |
26 | 38 |
</div> |
27 | 39 |
</div> |
40 |
+ |
|
28 | 41 |
} |
--- app/views/milestone/list.scala.html
+++ app/views/milestone/list.scala.html
... | ... | @@ -27,7 +27,8 @@ |
27 | 27 |
"up" |
28 | 28 |
} |
29 | 29 |
} else { |
30 |
- "up hidden" |
|
30 |
+ /*"up hidden"*/ |
|
31 |
+ "up" |
|
31 | 32 |
} |
32 | 33 |
} |
33 | 34 |
@makeMilestoneListLink(_state: String) = @{ |
... | ... | @@ -37,13 +38,15 @@ |
37 | 38 |
} |
38 | 39 |
|
39 | 40 |
@project.projectMngMain(title, projectInst) { |
40 |
- @pageTitle(projectInst,"Milestone") |
|
41 |
+ @views.html.prjmenu(projectInst, utils.MenuType.PROJECT_SETTING, "") |
|
42 |
+ |
|
41 | 43 |
<div class="tab-wrap"> |
42 | 44 |
<div class="pull-right btns"> |
43 | 45 |
<a href="@routes.MilestoneApp.manageMilestones(projectInst.owner, projectInst.name)" class="n-btn small gray">MANAGE</a> |
44 |
- <a href="@routes.MilestoneApp.newMilestoneForm(projectInst.owner, projectInst.name)" class="n-btn small blue">NEW MILESTONE</a> |
|
46 |
+ <a href="@routes.MilestoneApp.newMilestoneForm(projectInst.owner, projectInst.name)" class="n-btn small orange">NEW MILESTONE</a> |
|
45 | 47 |
</div> |
46 |
- <ul class="nav nav-tabs"> |
|
48 |
+ |
|
49 |
+ <ul class="nav nav-tabs hive-tabs"> |
|
47 | 50 |
<li class="@if(mCondition.state.equals("all")){active}"> |
48 | 51 |
<a href="@makeMilestoneListLink("all")">All Milestones</a> |
49 | 52 |
</li> |
... | ... | @@ -55,12 +58,19 @@ |
55 | 58 |
</li> |
56 | 59 |
</ul> |
57 | 60 |
</div> |
58 |
- <div class="filter-wrap milestone"> |
|
59 |
- <div class="filters"> |
|
60 |
- <a href="@makeSortLink("dueDate")" class="filter"><i class="ico ico-sort @sortMark("dueDate")"></i>완료일순</a> |
|
61 |
- <a href="@makeSortLink("completionRate")" class="filter"><i class="ico ico-sort @sortMark("completionRate")"></i>완료율순</a> |
|
62 |
- </div> |
|
61 |
+ |
|
62 |
+ <div class="filter-wrap milestone"> |
|
63 |
+ <div class="filters"> |
|
64 |
+ <a href="@makeSortLink("dueDate")" class="filter"><i class="ico ico-sort @sortMark("dueDate")"></i>완료일순</a> |
|
65 |
+ <a href="@makeSortLink("completionRate")" class="filter active"><i class="ico ico-sort @sortMark("completionRate")"></i>완료율순</a> |
|
66 |
+ </div> |
|
67 |
+ <div class="legend"> |
|
68 |
+ <i class="orange"></i>완료 |
|
69 |
+ <i class="blue"></i>진행중 |
|
70 |
+ <i class="gray"></i>미할당 |
|
71 |
+ </div> |
|
63 | 72 |
</div> |
73 |
+ |
|
64 | 74 |
<ul class="milestones"> |
65 | 75 |
@for(milestone <- milestones){ |
66 | 76 |
<li class="milestone"> |
... | ... | @@ -76,28 +86,44 @@ |
76 | 86 |
<a href="/uname" class="img-rounded"><img src="/assets/images/default-avatar-34.png"></a> |
77 | 87 |
</li> |
78 | 88 |
</ul> |
89 |
+ |
|
79 | 90 |
<div class="meta-info"> |
80 | 91 |
<strong class="version"></strong> |
81 | 92 |
<span class="title">@milestone.title</span> |
82 | 93 |
<span class="sp">|</span> |
83 | 94 |
<span class="due-date">완료일 <strong>@milestone.getDueDateString</strong></span> |
84 | 95 |
</div> |
96 |
+ |
|
85 | 97 |
<div class="progress-wrap"> |
86 |
- <div class="progress"> |
|
87 |
- <div class="bar orange" style="width: @milestone.getCompletionRate%;"></div> |
|
88 |
- </div> |
|
89 |
- <div class="pull-left"> |
|
90 |
- <a href="@makeIssuesLink(milestone.id,"closed")">완료 @milestone.getNumClosedIssues (@milestone.getCompletionRate%)</a> |
|
91 |
- </div> |
|
92 |
- <div class="pull-right"> |
|
93 |
- <a href="@makeIssuesLink(milestone.id,"open")">미완료 @milestone.getNumOpenIssues (@{100 - milestone.getCompletionRate}%)</a> |
|
94 |
- </div> |
|
95 |
- </div> |
|
98 |
+ <div class="progress"> |
|
99 |
+ <div class="bar orange" style="width: @milestone.getCompletionRate%;"></div> |
|
100 |
+ <!-- |
|
101 |
+ <div class="bar blue" style="width: 30%"></div> |
|
102 |
+ --> |
|
103 |
+ </div> |
|
104 |
+ <div class="progress-label"> |
|
105 |
+ <div class="pull-left" style="width: @milestone.getCompletionRate%;"> |
|
106 |
+ <a href="@makeIssuesLink(milestone.id,"closed")">완료 <strong>@milestone.getCompletionRate%</strong></a> |
|
107 |
+ </div> |
|
108 |
+ <!-- |
|
109 |
+ <div class="pull-left center-txt" style="width: 30%;"> |
|
110 |
+ 진행중 <strong>30%</strong> |
|
111 |
+ </div> |
|
112 |
+ --> |
|
113 |
+ <div class="pull-right"> |
|
114 |
+ <a href="@makeIssuesLink(milestone.id,"open")">미완료 <strong>@{100 - milestone.getCompletionRate}%</strong></a> |
|
115 |
+ </div> |
|
116 |
+ </div> |
|
117 |
+ </div> |
|
118 |
+ |
|
96 | 119 |
<div class="desc"> |
97 | 120 |
@milestone.contents |
98 | 121 |
</div> |
99 | 122 |
</div> |
100 |
- <div class="completion-rate @if(milestone.getCompletionRate == 100){done}">@milestone.getCompletionRate%</div> |
|
123 |
+ <div class="completion-rate @if(milestone.getCompletionRate == 100){done}"> |
|
124 |
+ @milestone.getCompletionRate |
|
125 |
+ <i>%</i> |
|
126 |
+ </div> |
|
101 | 127 |
</li> |
102 | 128 |
} |
103 | 129 |
</ul> |
--- app/views/project/memberList.scala.html
+++ app/views/project/memberList.scala.html
... | ... | @@ -5,52 +5,72 @@ |
5 | 5 |
|
6 | 6 |
@memberRole(userRole: String) = { |
7 | 7 |
@for(role <- roles){ |
8 |
- <option value="@role.id" @(if(role.name.equals(userRole)) "selected" else "")>@role.name</option> |
|
8 |
+ <li @if(role.name.equals(userRole)){ class="active" }><a href="#!/@role.name" data-id="@role.id">@role.name</a></li> |
|
9 | 9 |
} |
10 | 10 |
} |
11 | 11 |
|
12 | 12 |
@projectMngMain(message, project) { |
13 |
- <table class="table"> |
|
14 |
- @for(member <- members){ |
|
15 |
- <tr> |
|
16 |
- <td>@member.user.loginId</td> |
|
17 |
- <td> |
|
18 |
- <form action="@routes.ProjectApp.editMember(project.owner, project.name, member.user.id)" method="post"> |
|
19 |
- <select id="role" name="id"> |
|
20 |
- @memberRole(member.role.name) |
|
21 |
- </select> |
|
22 |
- </form> |
|
23 |
- </td> |
|
24 |
- <td> |
|
25 |
- <a id="deletion" data-toggle="modal" class="n-btn small red" href="#alertDeletion@member.user.loginId">@Messages("button.delete")</a> |
|
26 |
- </td> |
|
27 |
- </tr> |
|
28 |
- |
|
29 |
- <div class="modal hide" id="alertDeletion@member.user.loginId"> |
|
30 |
- <div class="modal-header"> |
|
13 |
+ @views.html.prjmenu(project, utils.MenuType.PROJECT_SETTING, "") |
|
14 |
+ |
|
15 |
+ |
|
16 |
+ <div class="bubble-wrap dark-gray wp"> |
|
17 |
+ <div class="inner-bubble"> |
|
18 |
+ <form class="nm" action="@routes.ProjectApp.newMember(project.owner, project.name)" method="post" id="addNewMember"> |
|
19 |
+ <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")" /> |
|
20 |
+ <button class="ns-btn" type="submit"><i class="ico ico-plus-blue"></i>@Messages("button.add")</button> |
|
21 |
+ </form> |
|
22 |
+ </div> |
|
23 |
+ |
|
24 |
+ <ul class="members project"> |
|
25 |
+ @for(member <- members){ |
|
26 |
+ |
|
27 |
+ |
|
28 |
+ <li class="member"> |
|
29 |
+ <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> |
|
30 |
+ <div class="m-body"> |
|
31 |
+ <div class="td"> |
|
32 |
+ <p><a href="@routes.UserApp.userInfo(member.user.loginId)"><strong class="uname">@member.user.loginId</strong></a></p> |
|
33 |
+ <p class="name">(@member.user.name)</p> |
|
34 |
+ </div> |
|
35 |
+ <div class="td"> |
|
36 |
+ <div class="btn-group"> |
|
37 |
+ <button data-toggle="dropdown" class="btn dropdown-toggle bgwhite d-label">@member.role.name</button> |
|
38 |
+ <button data-toggle="dropdown" class="btn dropdown-toggle bgwhite"><span class="caret"></span></button> |
|
39 |
+ <ul class="dropdown-menu"> |
|
40 |
+ @memberRole(member.role.name) |
|
41 |
+ </ul> |
|
42 |
+ </div> |
|
43 |
+ <p class="btns"> |
|
44 |
+ <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> |
|
45 |
+ <a href="#apply@member.user.loginId" class="n-btn small orange"><i class="ico ico-apply-small"></i>@Messages("button.apply")</a> |
|
46 |
+ </p> |
|
47 |
+ </div> |
|
48 |
+ </div> |
|
49 |
+ |
|
50 |
+ @** TODO: 비효율적인 modal 마크업 반복. 제거하는 방향으로 검토 필요 **@ |
|
51 |
+ <div class="modal hide" id="alertDeletion@member.user.loginId"> |
|
52 |
+ <div class="modal-header"> |
|
31 | 53 |
<button type="button" class="close" data-dismiss="modal">×</button> |
32 | 54 |
<h3>@Messages("project.member.delete")</h3> |
33 |
- </div> |
|
34 |
- <div class="modal-body"> |
|
55 |
+ </div> |
|
56 |
+ <div class="modal-body"> |
|
35 | 57 |
<p>@Messages("project.member.deleteConfirm")</p> |
36 |
- </div> |
|
37 |
- <div class="modal-footer"> |
|
58 |
+ </div> |
|
59 |
+ <div class="modal-footer"> |
|
38 | 60 |
<a href="#" class="btn" data-dismiss="modal">@Messages("button.no")</a> |
39 | 61 |
<a href="@routes.ProjectApp.deleteMember(project.owner, project.name, member.user.id)" class="btn btn-danger">@Messages("button.yes")</a> |
40 |
- </div> |
|
41 |
- </div> |
|
62 |
+ </div> |
|
63 |
+ </div> |
|
64 |
+ @** **@ |
|
65 |
+ |
|
66 |
+ </li> |
|
67 |
+ |
|
42 | 68 |
} |
43 |
- <tr> |
|
44 |
- <form action="@routes.ProjectApp.newMember(project.owner, project.name)" method="post" id="addNewMember"> |
|
45 |
- <td colspan="2"> |
|
46 |
- <input type="text" id="loginId" name="loginId" class="span8" |
|
47 |
- placeholder="@Messages("project.members.addMember")" pattern="[a-zA-Z0-9_][a-zA-Z0-9_]+" title="@Messages("user.wrongloginId.alert")"> |
|
48 |
- </td> |
|
49 |
- <td> |
|
50 |
- <input type="submit" class="btn-transparent n-btn blue med" value="@Messages("button.add")"> |
|
51 |
- </td> |
|
52 |
- </form> |
|
53 |
- </table> |
|
69 |
+ </ul> |
|
70 |
+ </div> |
|
71 |
+ |
|
72 |
+ <script type="text/javascript"> |
|
73 |
+ nforge.require("project.roleChange"); |
|
74 |
+ </script> |
|
54 | 75 |
|
55 |
- <script>nforge.require("project.roleChange");</script> |
|
56 | 76 |
} |
--- app/views/project/newProject.scala.html
+++ app/views/project/newProject.scala.html
... | ... | @@ -1,77 +1,87 @@ |
1 |
-@(title:String, newProjectForm:Form[Project]) |
|
2 |
- |
|
3 |
-@import playRepository.RepositoryService |
|
4 |
- |
|
5 |
-@home(title, utils.MenuType.NEW_PROJECT){ |
|
6 |
- <div class="page"> |
|
7 |
- <div class="form-wrap new-project"> |
|
8 |
- <form action="@routes.ProjectApp.newProject()" method="post" name="newproject"> |
|
9 |
- <label for="name"> |
|
10 |
- <input id="project-name" type="text" name="name" class="text" placeholder="새 프로젝트 이름을 입력해주세요. (프로젝트 이름은 영문으로 공백없이 작성해 주세요)" maxlength="250"> |
|
11 |
- </label> |
|
12 |
- <label for="overview"> |
|
13 |
- <textarea id="description" name="overview" class="text textarea.span4" placeholder="프로젝트 설명을 입력해주세요."></textarea> |
|
14 |
- </label> |
|
15 |
- <ul class="options unstyled"> |
|
16 |
- <li class="option"> |
|
17 |
- <div class="option-label">공개설정</div> |
|
18 |
- <div class="option-desc"> |
|
19 |
- <input name="share_option" type="radio" checked="checked" id="public" value="true" class="radio-btn-"><label for="public" class="bg-radiobtn">공개</label> |
|
20 |
- <input name="share_option" type="radio" id="private" value="false" class="radio-btn-"><label for="private" class="bg-radiobtn">비공개</label> |
|
21 |
- <span class="note">비공개 프로젝트도 프로젝트 이름, 설명, 로그 등은 모든 사용자가 볼 수 있습니다.</span> |
|
22 |
- </div> |
|
23 |
- </li> |
|
24 |
- <li class="option"> |
|
25 |
- <div class="option-label">코드관리시스템</div> |
|
26 |
- <div class="option-desc"> |
|
27 |
- <div class="btn-group"> |
|
28 |
- <button data-toggle="dropdown" class="btn" id="vcs_msg">Git</button> |
|
29 |
- <button data-toggle="dropdown" class="btn dropdown-toggle"><span class="caret"></span></button> |
|
30 |
- <ul class="dropdown-menu" id="vcs_dropdown"> |
|
31 |
- @RepositoryService.vcsTypes.map{ v => |
|
32 |
- <li><a href="#!/git" value="@v._1">@Messages(v._2)</a></li> |
|
33 |
- } |
|
34 |
- <!-- 여기가 일반 input이 아니라서 submit시에 자료를 넣어줘야 할듯...--> |
|
35 |
- </ul> |
|
36 |
- <input type="hidden" name="vcs" id="vcs" value="GIT"/> |
|
37 |
- </div> |
|
38 |
- </div> |
|
39 |
- </li> |
|
40 |
- <li class="option"> |
|
41 |
- <div class="option-label">이용약관 <a href="#agreement" data-toggle="modal"><i class="ico ico-que-mark"></i></a></div> |
|
42 |
- <div id="agreement" class="modal hide fade"> |
|
43 |
- <div class="modal-header"> |
|
44 |
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> |
|
45 |
- <h3>이용약관</h3> |
|
46 |
- </div> |
|
47 |
- <div class="modal-body"> |
|
48 |
- <pre>@agrements()</pre> |
|
49 |
- </div> |
|
50 |
- <div class="modal-footer"> |
|
51 |
- <a href="#" class="btn" data-dismiss="modal">Close</a> |
|
52 |
- </div> |
|
53 |
- </div> |
|
54 |
- <div class="option-desc"> |
|
55 |
- <input type="checkbox" class="stipulation checkbox" autocomplete="off" id="stipulation" name="accept"><label for="stipulation" class="bg-checkbox">본인은 약관에 대한 안내를 읽었으며 동의 합니다.</label> |
|
56 |
- </div> |
|
57 |
- </li> |
|
58 |
- </ul> |
|
59 |
- <div class="actions"> |
|
60 |
- <button class="btn-transparent n-btn orange med">@Messages("project.create")</button> |
|
61 |
- <a href="/" class="n-btn gray med cancel">CANCEL</a> |
|
62 |
- </div> |
|
63 |
- </form> |
|
64 |
- </div> |
|
65 |
- </div> |
|
66 |
- <script> |
|
67 |
- $("#vcs_dropdown li a").click(function(e){ |
|
68 |
- var $target = $(this); |
|
69 |
- |
|
70 |
- var data = $target.attr("value"); |
|
71 |
- var msg = $target.text(); |
|
72 |
- $("#vcs").attr("value",data); |
|
73 |
- $("#vcs_msg").text(msg); |
|
74 |
- }); |
|
75 |
- nforge.require('validation.newProject', 'newproject'); |
|
76 |
- </script> |
|
77 |
-} |
|
1 |
+@(title:String, newProjectForm:Form[Project]) |
|
2 |
+ |
|
3 |
+@import playRepository.RepositoryService |
|
4 |
+ |
|
5 |
+@home(title, utils.MenuType.NEW_PROJECT){ |
|
6 |
+ <div class="page"> |
|
7 |
+ <div class="form-wrap new-project"> |
|
8 |
+ <form action="@routes.ProjectApp.newProject()" method="post" name="newproject" class="frm-wrap"> |
|
9 |
+ <dl> |
|
10 |
+ <dt> |
|
11 |
+ <label for="name">새 프로젝트 이름을 입력해주세요</label> |
|
12 |
+ </dt> |
|
13 |
+ <dd> |
|
14 |
+ <input id="project-name" type="text" name="name" class="text" placeholder="영문으로 공백없이 작성해 주세요" maxlength="250"> |
|
15 |
+ </dd> |
|
16 |
+ |
|
17 |
+ <dt> |
|
18 |
+ <label for="overview">프로젝트 설명을 입력해주세요</label> |
|
19 |
+ </dt> |
|
20 |
+ <dd> |
|
21 |
+ <textarea id="description" name="overview" class="text textarea.span4" style="resize:vertical;"></textarea> |
|
22 |
+ </dd> |
|
23 |
+ </dl> |
|
24 |
+ |
|
25 |
+ <ul class="options unstyled"> |
|
26 |
+ <li class="option"> |
|
27 |
+ <div class="option-label">공개설정</div> |
|
28 |
+ <div class="option-desc"> |
|
29 |
+ <input name="share_option" type="radio" checked="checked" id="public" value="true" class="radio-btn"><label for="public" class="bg-radiobtn label-public">공개</label> |
|
30 |
+ <input name="share_option" type="radio" id="private" value="false" class="radio-btn"><label for="private" class="bg-radiobtn label-private">비공개</label> |
|
31 |
+ <span class="note">비공개 프로젝트도 프로젝트 이름, 설명, 로그 등은 모든 사용자가 볼 수 있습니다.</span> |
|
32 |
+ </div> |
|
33 |
+ </li> |
|
34 |
+ <li class="option"> |
|
35 |
+ <div class="option-label">코드관리시스템</div> |
|
36 |
+ <div class="option-desc"> |
|
37 |
+ <div class="btn-group"> |
|
38 |
+ <button data-toggle="dropdown" class="btn" id="vcs_msg">Git</button> |
|
39 |
+ <button data-toggle="dropdown" class="btn dropdown-toggle"><span class="caret"></span></button> |
|
40 |
+ <ul class="dropdown-menu" id="vcs_dropdown"> |
|
41 |
+ @RepositoryService.vcsTypes.map{ v => |
|
42 |
+ <li><a href="#!/git" value="@v._1">@Messages(v._2)</a></li> |
|
43 |
+ } |
|
44 |
+ <!-- 여기가 일반 input이 아니라서 submit시에 자료를 넣어줘야 할듯...--> |
|
45 |
+ </ul> |
|
46 |
+ <input type="hidden" name="vcs" id="vcs" value="GIT"/> |
|
47 |
+ </div> |
|
48 |
+ </div> |
|
49 |
+ </li> |
|
50 |
+ <li class="option"> |
|
51 |
+ <div class="option-label">이용약관 <a href="#agreement" data-toggle="modal"><i class="ico ico-que-mark"></i></a></div> |
|
52 |
+ <div id="agreement" class="modal hide fade"> |
|
53 |
+ <div class="modal-header"> |
|
54 |
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> |
|
55 |
+ <h3>이용약관</h3> |
|
56 |
+ </div> |
|
57 |
+ <div class="modal-body"> |
|
58 |
+ <pre>@agrements()</pre> |
|
59 |
+ </div> |
|
60 |
+ <div class="modal-footer"> |
|
61 |
+ <a href="#" class="btn" data-dismiss="modal">Close</a> |
|
62 |
+ </div> |
|
63 |
+ </div> |
|
64 |
+ <div class="option-desc"> |
|
65 |
+ <input type="checkbox" class="stipulation checkbox checkbox-btn" autocomplete="off" id="stipulation" name="accept"><label for="stipulation" class="bg-checkbox label-agreement">본인은 약관에 대한 안내를 읽었으며 동의 합니다.</label> |
|
66 |
+ </div> |
|
67 |
+ </li> |
|
68 |
+ </ul> |
|
69 |
+ <div class="actions"> |
|
70 |
+ <button class="btn-transparent n-btn orange med">@Messages("project.create")</button> |
|
71 |
+ <a href="/" class="n-btn gray med cancel">CANCEL</a> |
|
72 |
+ </div> |
|
73 |
+ </form> |
|
74 |
+ </div> |
|
75 |
+ </div> |
|
76 |
+ <script> |
|
77 |
+ $("#vcs_dropdown li a").click(function(e){ |
|
78 |
+ var $target = $(this); |
|
79 |
+ |
|
80 |
+ var data = $target.attr("value"); |
|
81 |
+ var msg = $target.text(); |
|
82 |
+ $("#vcs").attr("value",data); |
|
83 |
+ $("#vcs_msg").text(msg); |
|
84 |
+ }); |
|
85 |
+ nforge.require('validation.newProject', 'newproject'); |
|
86 |
+ </script> |
|
87 |
+} |
--- app/views/project/projectHome.scala.html
+++ app/views/project/projectHome.scala.html
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 |
|
3 | 3 |
@main(message, project, utils.MenuType.PROJECT_HOME) { |
4 | 4 |
<div class="page"> |
5 |
- @views.html.prjmenu(project, utils.MenuType.PROJECT_HOME) |
|
5 |
+ @views.html.prjmenu(project, utils.MenuType.PROJECT_HOME, "") |
|
6 | 6 |
|
7 | 7 |
<div class="bubble-wrap dark-gray project-home"> |
8 | 8 |
<div class="inner logo"> |
--- app/views/project/projectList.scala.html
+++ app/views/project/projectList.scala.html
... | ... | @@ -1,51 +1,77 @@ |
1 | 1 |
@(message: String, currentPage: List[Project], filter:String, state:String) |
2 | 2 |
|
3 | 3 |
@home(message, utils.MenuType.PROJECTS) { |
4 |
- <div class="page"> |
|
5 |
- <div class="header-wrap"> |
|
6 |
- <div class="stats-wrap"> |
|
7 |
- @for(state <- Array("all", "public", "private")) { |
|
8 |
- <div class="stat"> |
|
9 |
- <a href="@routes.ProjectApp.projects(state=state)"> |
|
10 |
- <span class="desc"><strong>@Messages("project." + state.toLowerCase)</strong> @Messages("projects")</span> |
|
11 |
- <strong class="num @state">@Project.countByState(state)</strong> |
|
12 |
- </a> |
|
13 |
- </div> |
|
14 |
- } |
|
15 |
- </div> |
|
16 |
- <div class="search-wrap projects"> |
|
17 |
- <div class="inner"> |
|
18 |
- <form action="@routes.ProjectApp.projects()" method="get"> |
|
19 |
- <input name="state" type="hidden" value="@state"> |
|
20 |
- <input name="filter" class="text" type="text" placeholder="@Messages("site.project.filter")" value="@filter"><button type="submit" class="btn-transparent search-btn">SEARCH</button> |
|
21 |
- </form> |
|
22 |
- </div> |
|
23 |
- </div> |
|
24 |
- </div> |
|
25 |
- <ul class="all-projects"> |
|
4 |
+<div class="page"> |
|
5 |
+ |
|
6 |
+ <div class="header-wrap"> |
|
7 |
+ <div class="stats-wrap"> |
|
8 |
+ <div class="stat"> |
|
9 |
+ <a href="@routes.ProjectApp.projects(state="all")"> |
|
10 |
+ <span class="desc"><strong>@Messages("project.all")</strong> @Messages("projects")</span> |
|
11 |
+ <span class="num all">@Project.countByState("all")</span> |
|
12 |
+ </a> |
|
13 |
+ </div> |
|
14 |
+ <div class="stat"> |
|
15 |
+ <a href="@routes.ProjectApp.projects(state="public")"> |
|
16 |
+ <span class="desc"><strong>@Messages("project.public")</strong> @Messages("projects")</span> |
|
17 |
+ <span class="num open">@Project.countByState("public")</span> |
|
18 |
+ </a> |
|
19 |
+ </div> |
|
20 |
+ <div class="stat"> |
|
21 |
+ <a href="@routes.ProjectApp.projects(state="private")"> |
|
22 |
+ <span class="desc"><strong>@Messages("project.private")</strong> @Messages("projects")</span> |
|
23 |
+ <span class="num closed">@Project.countByState("private")</span> |
|
24 |
+ </a> |
|
25 |
+ </div> |
|
26 |
+ </div> |
|
27 |
+ <div class="search-wrap projects"> |
|
28 |
+ <div class="inner"> |
|
29 |
+ <form action="@routes.ProjectApp.projects()" method="get"> |
|
30 |
+ <input name="state" type="hidden" value="@state"> |
|
31 |
+ <input name="filter" class="text" type="text" placeholder="@Messages("site.project.filter")" value="@filter"><button type="submit" class="btn search-btn">SEARCH</button> |
|
32 |
+ <a href="#" class="btn-advanced"><i class="ico"></i>Advanced Search</a> |
|
33 |
+ </form> |
|
34 |
+ |
|
35 |
+ <div class="srch-advanced"> |
|
36 |
+ 상세검색 조건 |
|
37 |
+ </div> |
|
38 |
+ </div> |
|
39 |
+ </div> |
|
40 |
+ </div> |
|
41 |
+ |
|
42 |
+ <ul class="all-projects"> |
|
26 | 43 |
@for(project <- currentPage) { |
27 |
- <li class="project"> |
|
28 |
- <div class="info-wrap"> |
|
29 |
- <div class="header"> |
|
30 |
- <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> |
|
31 |
- @if(!project.share_option){ |
|
32 |
- <i class="ico ico-lock"></i> |
|
33 |
- } |
|
34 |
- </div> |
|
35 |
- <div class="desc"> |
|
36 |
- @project.overview |
|
37 |
- </div> |
|
38 |
- <p class="name-tag">by <a href="@routes.UserApp.userInfo(project.owner)">@project.owner</a> <!--<span>20 days ago.--></span></p> |
|
39 |
- </div> |
|
40 |
- <div class="stats-wrap"> |
|
41 |
- <!--<div class="like"> |
|
42 |
- <i class="ico ico-like"></i><span class="num">1</span> |
|
43 |
- </div> |
|
44 |
- <i class="ico ico-activity low"></i>--> |
|
45 |
- <a href="@routes.UserApp.userInfo(project.owner)" class="user-thumb-wrap"><img src="@project.getOwnerByName(project.owner).avatarUrl"></a> |
|
46 |
- </div> |
|
47 |
- </li> |
|
48 |
- } |
|
49 |
- </ul> |
|
50 |
- </div> |
|
44 |
+ <li class="project"> |
|
45 |
+ <div class="info-wrap"> |
|
46 |
+ <div class="header"> |
|
47 |
+ <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> |
|
48 |
+ @if(!project.share_option){ <i class="ico ico-lock"></i> } |
|
49 |
+ </div> |
|
50 |
+ <div class="desc"> |
|
51 |
+ @project.overview |
|
52 |
+ </div> |
|
53 |
+ <p class="name-tag">by <a href="@routes.UserApp.userInfo(project.owner)">@project.owner</a> <!--<span>20 days ago.</span>--></p> |
|
54 |
+ </div> |
|
55 |
+ <div class="stats-wrap"> |
|
56 |
+ <div class="like"> |
|
57 |
+ <i class="ico ico-like"></i><span class="num">1</span> |
|
58 |
+ </div> |
|
59 |
+ <i class="ico ico-activity low"></i> |
|
60 |
+ <a href="@routes.UserApp.userInfo(project.owner)" class="user-thumb-wrap"><img src="@project.getOwnerByName(project.owner).avatarUrl" width="34" height="34"></a> |
|
61 |
+ </div> |
|
62 |
+ </li> |
|
63 |
+ } |
|
64 |
+</ul> |
|
65 |
+ |
|
66 |
+</div> |
|
67 |
+ |
|
68 |
+ |
|
69 |
+<script type="text/javascript"> |
|
70 |
+$(document).ready(function(){ |
|
71 |
+ $(".btn-advanced").click(function(){ |
|
72 |
+ $(".inner").toggleClass("advanced"); |
|
73 |
+ }); |
|
74 |
+}); |
|
75 |
+</script> |
|
76 |
+ |
|
51 | 77 |
}(파일 끝에 줄바꿈 문자 없음) |
--- app/views/project/setting.scala.html
+++ app/views/project/setting.scala.html
... | ... | @@ -6,8 +6,8 @@ |
6 | 6 |
|
7 | 7 |
|
8 | 8 |
@projectMngMain(message, project) { |
9 |
- @views.html.prjmenu(project, utils.MenuType.PROJECT_SETTING) |
|
10 |
- |
|
9 |
+ @views.html.prjmenu(project, utils.MenuType.PROJECT_SETTING, "") |
|
10 |
+ |
|
11 | 11 |
<div class="bubble-wrap gray"> |
12 | 12 |
@form(action=routes.ProjectApp.settingProject(project.owner, project.name), 'id->"saveSetting" , 'enctype->"multipart/form-data", 'class->"nm"){ |
13 | 13 |
<input type="hidden" name="id" value="@projectForm("id").value.toLong"> |
--- app/views/user/signup.scala.html
+++ app/views/user/signup.scala.html
... | ... | @@ -1,23 +1,23 @@ |
1 | 1 |
@(message: String, newUserForm: Form[User]) |
2 | 2 |
|
3 | 3 |
@home(message, utils.MenuType.NONE) { |
4 |
- <div class="page full"> |
|
4 |
+ @** Messages("title.signup") **@ |
|
5 |
+ <div class="page full"> |
|
5 | 6 |
<div class="center-wrap tag-line-wrap signup"> |
6 |
- <h1 class="title">@Messages("hive.name") <span class="high-light">@Messages("title.signup")</span></h1> |
|
7 |
- <p class="tag-line signup"><span>Open Source</span> Project. <span>Code</span> Repository. <span>Issue</span> Tracker. <span>Task</span> Managspanent</p> |
|
7 |
+ <h1 class="title"><span class="high-light">Sign Up for</span> @Messages("hive.name")</h1> |
|
8 |
+ <p class="tag-line">Software development platform for Open Source project.</p> |
|
8 | 9 |
</div> |
10 |
+ |
|
9 | 11 |
<div class="signup-form-wrap"> |
10 |
- <form action="@routes.UserApp.newUser()" name="signup" method="POST"> |
|
11 |
- <label for="loginId" class="inline"> |
|
12 |
- <input type="text" class="text loginId" id="loginId" placeholder='@Messages("user.signupId")' autocomplete="off" name="loginId"> |
|
13 |
- <a class="isValid"></a> |
|
12 |
+ <form action="@routes.UserApp.newUser()" method="POST" name="signup"> |
|
13 |
+ <label for="loginId"> |
|
14 |
+ <input type="text" class="text password" id="loginId" placeholder="@Messages("user.signupId")" autocomplete="off" name="loginId"> |
|
14 | 15 |
</label> |
15 |
- <label for="username" class="inline"> |
|
16 |
- <input type="text" class="text uname" id="username" placeholder='@Messages("user.name")' autocomplete="off" name="name"> |
|
16 |
+ <label for="uname"> |
|
17 |
+ <input type="text" class="text password" id="uname" placeholder="@Messages("user.name")" autocomplete="off" name="name"> |
|
17 | 18 |
</label> |
18 | 19 |
<label for="email"> |
19 |
- <input type="text" class="text email" id="email" placeholder='@Messages("user.email")' autocomplete="off" name="email"> |
|
20 |
- <a class="isValid"></a> |
|
20 |
+ <input type="text" class="text password" id="email" placeholder="@Messages("user.email")" autocomplete="off" name="email"> |
|
21 | 21 |
</label> |
22 | 22 |
<label for="password"> |
23 | 23 |
<input type="password" class="text password" id="password" placeholder="@Messages("user.password")" autocomplete="off" name="password"> |
... | ... | @@ -29,11 +29,12 @@ |
29 | 29 |
@Messages("user.isAlreadySignupUser") <a href="@routes.UserApp.loginForm()" class="go-login">@Messages("title.login")</a> |
30 | 30 |
</div> |
31 | 31 |
<div class="btns-row"> |
32 |
- <button type="submit" class="n-btn orange sign-up">@Messages("title.signup")</button> |
|
32 |
+ <button type="submit" class="n-btn orange sign-up">@Messages("user.signupBtn")</button> |
|
33 | 33 |
</div> |
34 | 34 |
</form> |
35 | 35 |
</div> |
36 | 36 |
</div> |
37 |
+ |
|
37 | 38 |
<script type="text/javascript"> |
38 | 39 |
var passwordField = $('#password'); |
39 | 40 |
var emailField = $('#email'); |
--- conf/messages.en
+++ conf/messages.en
... | ... | @@ -25,7 +25,7 @@ |
25 | 25 |
title.projectList = Project List |
26 | 26 |
title.help = HELP |
27 | 27 |
|
28 |
-hive.name = nFORGE |
|
28 |
+hive.name = HIVE |
|
29 | 29 |
hive.title = Collaborative Software Development Platform |
30 | 30 |
hive.description = Make it better and simpler! |
31 | 31 |
|
... | ... | @@ -80,6 +80,7 @@ |
80 | 80 |
button.signup = Create an account |
81 | 81 |
button.newProject = Create your project |
82 | 82 |
button.detail = Detail |
83 |
+button.apply = Apply |
|
83 | 84 |
|
84 | 85 |
checkbox.commented = Comment |
85 | 86 |
checkbox.fileAttached = File Attached |
... | ... | @@ -276,6 +277,7 @@ |
276 | 277 |
user.logout.success = Logout successfully |
277 | 278 |
user.isAlreadySignupUser = HAVE AN ACCOUNT ALREADY? |
278 | 279 |
user.signupId = ID (lower case) |
280 |
+user.signupBtn = Sign Up |
|
279 | 281 |
|
280 | 282 |
#Time |
281 | 283 |
time.just = just now |
--- conf/messages.ko
+++ conf/messages.ko
... | ... | @@ -17,7 +17,7 @@ |
17 | 17 |
title.login = 로그인 |
18 | 18 |
title.logout = 로그아웃 |
19 | 19 |
title.signup = 회원 가입 |
20 |
-title.forgotpassword = 패스워드를 잊어버리셨나요? |
|
20 |
+title.forgotpassword = 비밀번호를 잊어버리셨나요? |
|
21 | 21 |
title.rememberMe = 로그인 유지하기 |
22 | 22 |
title.commitHistory = 커밋 히스토리 |
23 | 23 |
title.mailSetting = 메일 설정 |
... | ... | @@ -25,7 +25,7 @@ |
25 | 25 |
title.projectList = 프로젝트 목록 |
26 | 26 |
title.help = 도움말 |
27 | 27 |
|
28 |
-hive.name = nFORGE |
|
28 |
+hive.name = HIVE |
|
29 | 29 |
hive.title = 협업개발 플랫폼 |
30 | 30 |
hive.description = Make it better and simpler! |
31 | 31 |
|
... | ... | @@ -81,6 +81,7 @@ |
81 | 81 |
button.signup = 가입하기 |
82 | 82 |
button.newProject = 여러분의 프로젝트를 만드세요. |
83 | 83 |
button.detail = 상세조회 |
84 |
+button.apply = 적용 |
|
84 | 85 |
|
85 | 86 |
checkbox.commented = 댓글 |
86 | 87 |
checkbox.fileAttached = 첨부파일 |
... | ... | @@ -274,7 +275,8 @@ |
274 | 275 |
user.login.failed = 아이디 또는 비밀번호가 잘못되었습니다. |
275 | 276 |
user.logout.success = 성공적으로 로그아웃되었습니다. |
276 | 277 |
user.isAlreadySignupUser = 이미 가입하셨나요? |
277 |
-user.signupId = 아이디 (영문 소문자) |
|
278 |
+user.signupId = 아이디 |
|
279 |
+user.signupBtn = 참여하기 |
|
278 | 280 |
|
279 | 281 |
#Time |
280 | 282 |
time.just = 방금 전 |
... | ... | @@ -345,9 +347,9 @@ |
345 | 347 |
none = 없음 |
346 | 348 |
|
347 | 349 |
#validation |
348 |
-validation.tooShortPassword = 패스워드를 4자 이상으로 만들어 주세요! |
|
349 |
-validation.passwordMismatch = 입력한 두 개의 패스워드가 서로 일치하지 않습니다. |
|
350 |
-validation.retypePassword = 패스워드를 한 번 더 입력해 주세요. |
|
350 |
+validation.tooShortPassword = 비밀번호를 4자 이상으로 만들어 주세요! |
|
351 |
+validation.passwordMismatch = 입력한 두 개의 비밀번호가 서로 일치하지 않습니다. |
|
352 |
+validation.retypePassword = 비밀번호를 한 번 더 입력해 주세요. |
|
351 | 353 |
validation.invalidEmail = 올바른 이메일을 입력해 주세요. |
352 | 354 |
validation.required = 필수 항목 입니다. |
353 | 355 |
validation.duplicated = 이미 존재합니다! |
--- public/images/sprite.png
+++ public/images/sprite.png
Binary file is not shown |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?