[Notice] Announcing the End of Demo Server [Read me]

apply HIVE CSS including trivial fix. delete milestone manage page that combined with milestone list page
@989213bb94426f90a829e61129d35f3dd7a9533d
--- app/assets/stylesheets/less/_page.less
+++ app/assets/stylesheets/less/_page.less
... | ... | @@ -202,6 +202,7 @@ |
202 | 202 |
|
203 | 203 |
.d-label { |
204 | 204 |
text-shadow:0 1px 1px rgba(0, 0, 0, 0.75); |
205 |
+ .avatar-wrap { border:1px solid #333; } |
|
205 | 206 |
} |
206 | 207 |
.d-caret { |
207 | 208 |
border-left:1px solid #787878; |
... | ... | @@ -850,7 +851,7 @@ |
850 | 851 |
width: 384px; |
851 | 852 |
.center-block; |
852 | 853 |
margin-bottom: 73px; |
853 |
- .n-btn { |
|
854 |
+ /*.n-btn { |
|
854 | 855 |
&.log-in { |
855 | 856 |
width: 187px; |
856 | 857 |
vertical-align: top; |
... | ... | @@ -861,7 +862,7 @@ |
861 | 862 |
&.join { |
862 | 863 |
width: 117px; |
863 | 864 |
} |
864 |
- } |
|
865 |
+ }*/ |
|
865 | 866 |
} |
866 | 867 |
} |
867 | 868 |
|
... | ... | @@ -894,13 +895,13 @@ |
894 | 895 |
width: 227px; |
895 | 896 |
.center-block; |
896 | 897 |
margin-bottom: 50px; |
897 |
- .n-btn { |
|
898 |
+ /*.n-btn { |
|
898 | 899 |
&.sign-up { |
899 | 900 |
width: 227px; |
900 | 901 |
height: auto; |
901 | 902 |
border: 0 none; |
902 | 903 |
} |
903 |
- } |
|
904 |
+ }*/ |
|
904 | 905 |
} |
905 | 906 |
} |
906 | 907 |
|
... | ... | @@ -1568,26 +1569,31 @@ |
1568 | 1569 |
.border-radius(2px); |
1569 | 1570 |
} |
1570 | 1571 |
} |
1572 |
+ /* |
|
1571 | 1573 |
.ns-btn { |
1572 | 1574 |
.border-radius(2px); |
1573 | 1575 |
padding:2px 20px; |
1574 | 1576 |
margin-left:3px; |
1575 | 1577 |
} |
1578 |
+ */ |
|
1576 | 1579 |
} |
1577 | 1580 |
|
1578 | 1581 |
.members.project { |
1579 | 1582 |
margin: 0; |
1580 | 1583 |
list-style: none; |
1584 |
+ |
|
1581 | 1585 |
.member { |
1582 |
- padding: 20px; |
|
1583 |
- .border-radius(10px); |
|
1584 |
- background-color: @white; |
|
1585 | 1586 |
float: left; |
1586 | 1587 |
width: 375px; |
1588 |
+ padding: 20px; |
|
1587 | 1589 |
margin-bottom: 6px; |
1590 |
+ background-color: @white; |
|
1591 |
+ .border-radius(10px); |
|
1592 |
+ |
|
1588 | 1593 |
&:nth-child(2n+1) { |
1589 | 1594 |
margin-right: 10px; |
1590 | 1595 |
} |
1596 |
+ |
|
1591 | 1597 |
.m-body { |
1592 | 1598 |
margin-left: 64px; |
1593 | 1599 |
.td { |
... | ... | @@ -1600,20 +1606,17 @@ |
1600 | 1606 |
max-width: 120px; |
1601 | 1607 |
border-right: 1px solid @gray-d4; |
1602 | 1608 |
} |
1609 |
+ |
|
1610 |
+ p { |
|
1611 |
+ word-wrap: break-word; |
|
1612 |
+ margin-bottom: 2px; |
|
1613 |
+ } |
|
1603 | 1614 |
.d-label { |
1604 |
- width: 128px; /*147px;*/ |
|
1615 |
+ width: 108px; /*147px;*/ |
|
1605 | 1616 |
} |
1606 | 1617 |
.btns { |
1607 | 1618 |
text-transform: capitalize; |
1608 | 1619 |
margin-top: 6px; |
1609 |
- .n-btn { |
|
1610 |
- /*width:54px; font-size:12px; letter-spacing: -1px;*/ |
|
1611 |
- width:68px; padding:3px; padding-top:5px; font-size:12px; |
|
1612 |
- } |
|
1613 |
- } |
|
1614 |
- p { |
|
1615 |
- word-wrap: break-word; |
|
1616 |
- margin-bottom: 2px; |
|
1617 | 1620 |
} |
1618 | 1621 |
.uname { font-size: 20px; } |
1619 | 1622 |
.name { font-size: 11px; } |
... | ... | @@ -1633,18 +1636,10 @@ |
1633 | 1636 |
.filter { |
1634 | 1637 |
margin-right:10px; |
1635 | 1638 |
&.active { font-weight:bold; } |
1636 |
- /* |
|
1637 |
- &:first-child { |
|
1638 |
- margin-right: 5px; |
|
1639 |
- } |
|
1640 |
- */ |
|
1641 |
- &:last-of-type { |
|
1642 |
- margin:0; |
|
1643 |
- } |
|
1639 |
+ &:last-of-type { margin:0; } |
|
1644 | 1640 |
} |
1645 |
- |
|
1646 | 1641 |
i { margin-right: 5px; } |
1647 |
- } |
|
1642 |
+ } |
|
1648 | 1643 |
|
1649 | 1644 |
//-- milestone |
1650 | 1645 |
&.milestone { |
... | ... | @@ -1771,7 +1766,7 @@ |
1771 | 1766 |
width: 584px; |
1772 | 1767 |
} |
1773 | 1768 |
.textarea { |
1774 |
- height: 305px; |
|
1769 |
+ height: 306px; |
|
1775 | 1770 |
resize: vertical; |
1776 | 1771 |
} |
1777 | 1772 |
.actions { |
... | ... | @@ -1783,16 +1778,15 @@ |
1783 | 1778 |
} |
1784 | 1779 |
} |
1785 | 1780 |
} |
1781 |
+ |
|
1786 | 1782 |
&.right { |
1787 |
- height:376px; |
|
1783 |
+ height:385px; |
|
1788 | 1784 |
margin-left: 610px; |
1789 | 1785 |
padding: 15px 10px; |
1790 |
- background-color: #ECECEC; |
|
1786 |
+ background-color: #ececec; |
|
1791 | 1787 |
.border-radius(5px); |
1792 |
- .due-date { |
|
1793 |
- width: 236px; |
|
1794 |
- margin-bottom: 0; |
|
1795 |
- } |
|
1788 |
+ |
|
1789 |
+ .due-date { width: 236px; margin-bottom:0; } |
|
1796 | 1790 |
.pika-single { width:232px; } |
1797 | 1791 |
.date-picker { margin-top:5px; } |
1798 | 1792 |
|
... | ... | @@ -2013,10 +2007,6 @@ |
2013 | 2007 |
margin: 20px 0; |
2014 | 2008 |
text-align: right; |
2015 | 2009 |
} |
2016 |
-.btn-save-xls { |
|
2017 |
- float:left; |
|
2018 |
- color:#707070 !important; |
|
2019 |
-} |
|
2020 | 2010 |
|
2021 | 2011 |
.board-view { |
2022 | 2012 |
.num { |
... | ... | @@ -2098,7 +2088,9 @@ |
2098 | 2088 |
} |
2099 | 2089 |
|
2100 | 2090 |
.board-comment-wrap { |
2101 |
- background-color: #F5F5F5; |
|
2091 |
+ display:block; clear:both; |
|
2092 |
+ background-color: #f5f5f5; |
|
2093 |
+ |
|
2102 | 2094 |
.border-radius(10px); |
2103 | 2095 |
.comment-header { |
2104 | 2096 |
padding: 0 20px; |
... | ... | @@ -2106,6 +2098,7 @@ |
2106 | 2098 |
font-size: 14px; |
2107 | 2099 |
line-height: 40px; |
2108 | 2100 |
} |
2101 |
+ |
|
2109 | 2102 |
.comments { |
2110 | 2103 |
margin: 0; |
2111 | 2104 |
padding: 0; |
... | ... | @@ -2214,8 +2207,8 @@ |
2214 | 2207 |
line-height: 30px; |
2215 | 2208 |
padding-right: 30px; |
2216 | 2209 |
text-align: left; |
2210 |
+ max-width:630px; |
|
2217 | 2211 |
.inline-block; |
2218 |
- /*.pull-left;*/ |
|
2219 | 2212 |
} |
2220 | 2213 |
} |
2221 | 2214 |
|
... | ... | @@ -3026,7 +3019,7 @@ |
3026 | 3019 |
border-bottom: 1px solid #EEE; |
3027 | 3020 |
} |
3028 | 3021 |
} |
3029 |
- |
|
3022 |
+/* |
|
3030 | 3023 |
.plugin-wrap { |
3031 | 3024 |
padding: 10px; |
3032 | 3025 |
.plugin-table-wrap { |
... | ... | @@ -3113,7 +3106,7 @@ |
3113 | 3106 |
} |
3114 | 3107 |
} |
3115 | 3108 |
} |
3116 |
- |
|
3109 |
+*/ |
|
3117 | 3110 |
.statistics { |
3118 | 3111 |
padding: 10px; |
3119 | 3112 |
font-size: 0; |
... | ... | @@ -3182,12 +3175,7 @@ |
3182 | 3175 |
margin: 15px 0 20px; |
3183 | 3176 |
} |
3184 | 3177 |
|
3185 |
- |
|
3186 | 3178 |
.actions { |
3187 |
- .n-btn { |
|
3188 |
- margin-right:5px; |
|
3189 |
- } |
|
3190 |
- &:last-child { |
|
3191 |
- margin-right:0; |
|
3192 |
- } |
|
3193 |
-}(No newline at end of file) |
|
3179 |
+ &:last-child { margin-right:0; } |
|
3180 |
+} |
|
3181 |
+ |
--- app/controllers/MilestoneApp.java
+++ app/controllers/MilestoneApp.java
... | ... | @@ -64,18 +64,19 @@ |
64 | 64 |
Milestone newMilestone = milestoneForm.get(); |
65 | 65 |
newMilestone.project = project; |
66 | 66 |
Milestone.create(newMilestone); |
67 |
- return redirect(routes.MilestoneApp.manageMilestones(userName, projectName)); |
|
67 |
+ return redirect(routes.MilestoneApp.milestones(userName, projectName)); |
|
68 | 68 |
} |
69 | 69 |
} |
70 | 70 |
|
71 | 71 |
private static void validate(Project project, Form<Milestone> milestoneForm) { |
72 |
- // 중복된 title로 만들 수 없다. |
|
72 |
+ // 중복된 제목으로 만들 수 없다 |
|
73 | 73 |
if (!Milestone.isUniqueProjectIdAndTitle(project.id, milestoneForm.field("title").value())) { |
74 | 74 |
milestoneForm.reject("title", "milestone.title.duplicated"); |
75 | 75 |
flash(Constants.WARNING, "milestone.title.duplicated"); |
76 | 76 |
} |
77 | 77 |
} |
78 | 78 |
|
79 |
+ /* |
|
79 | 80 |
public static Result manageMilestones(String userName, String projectName) { |
80 | 81 |
Project project = ProjectApp.getProject(userName, projectName); |
81 | 82 |
if(project == null ) { |
... | ... | @@ -88,6 +89,7 @@ |
88 | 89 |
Direction.getValue(mCondition.direction)); |
89 | 90 |
return ok(manage.render("title.milestoneManage", milestones, project, mCondition)); |
90 | 91 |
} |
92 |
+ */ |
|
91 | 93 |
|
92 | 94 |
public static Result editMilestoneForm(String userName, String projectName, Long milestoneId) { |
93 | 95 |
Project project = ProjectApp.getProject(userName, projectName); |
... | ... | @@ -115,7 +117,7 @@ |
115 | 117 |
} else { |
116 | 118 |
Milestone existingMilestone = Milestone.findById(milestoneId); |
117 | 119 |
existingMilestone.updateWith(milestoneForm.get()); |
118 |
- return redirect(routes.MilestoneApp.manageMilestones(userName, projectName)); |
|
120 |
+ return redirect(routes.MilestoneApp.milestones(userName, projectName)); |
|
119 | 121 |
} |
120 | 122 |
} |
121 | 123 |
|
... | ... | @@ -129,7 +131,7 @@ |
129 | 131 |
return internalServerError(); |
130 | 132 |
} |
131 | 133 |
Milestone.findById(id).delete(); |
132 |
- return redirect(routes.MilestoneApp.manageMilestones(userName, projectName)); |
|
134 |
+ return redirect(routes.MilestoneApp.milestones(userName, projectName)); |
|
133 | 135 |
|
134 | 136 |
} |
135 | 137 |
} |
--- app/views/alertUI.scala.html
+++ app/views/alertUI.scala.html
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 |
<div class="message"> |
9 | 9 |
<p class="center-text msg"></p> |
10 | 10 |
<p class="center-txt"> |
11 |
- <button type="submit" class="btn-transparent n-btn orange med" data-dismiss="modal">@Messages("button.confirm")</button> |
|
11 |
+ <button type="submit" class="nbtn orange medium" data-dismiss="modal">@Messages("button.confirm")</button> |
|
12 | 12 |
</p> |
13 | 13 |
</div> |
14 | 14 |
</div>(No newline at end of file) |
--- app/views/index.scala.html
+++ app/views/index.scala.html
... | ... | @@ -80,22 +80,22 @@ |
80 | 80 |
<div class="project-list-sort"> |
81 | 81 |
<span class="ordertype-date"> |
82 | 82 |
@if( orderString == "createdDate desc" ){ |
83 |
- <a href="@routes.Application.index()?order=createdDate"><strong>@Messages("orderby.recent")</strong> <i class="icon-chevron-down"></i></a> |
|
83 |
+ <a href="@routes.Application.index()?order=createdDate"><strong>@Messages("order.recent")</strong> <i class="icon-chevron-down"></i></a> |
|
84 | 84 |
} else { |
85 | 85 |
@if( orderString == "createdDate" ){ |
86 |
- <a href="@routes.Application.index()?order=createdDate desc"><strong>@Messages("orderby.recent")</strong> <i class="icon-chevron-up"></i></a> |
|
86 |
+ <a href="@routes.Application.index()?order=createdDate desc"><strong>@Messages("order.recent")</strong> <i class="icon-chevron-up"></i></a> |
|
87 | 87 |
} else { |
88 |
- <a href="@routes.Application.index()?order=createdDate">@Messages("orderby.recent")</a> |
|
88 |
+ <a href="@routes.Application.index()?order=createdDate">@Messages("order.recent")</a> |
|
89 | 89 |
} |
90 | 90 |
} |
91 | 91 |
</span><span class="delimeter"> | </span><span class="ordertype-name"> |
92 | 92 |
@if( orderString == "name desc" ){ |
93 |
- <a href="@routes.Application.index()?order=name"><strong>@Messages("orderby.name")</strong> <i class="icon-chevron-down"></i></a> |
|
93 |
+ <a href="@routes.Application.index()?order=name"><strong>@Messages("order.name")</strong> <i class="icon-chevron-down"></i></a> |
|
94 | 94 |
} else { |
95 | 95 |
@if( orderString == "name" ){ |
96 |
- <a href="@routes.Application.index()?order=name desc"><strong>@Messages("orderby.name")</strong> <i class="icon-chevron-up"></i></a> |
|
96 |
+ <a href="@routes.Application.index()?order=name desc"><strong>@Messages("order.name")</strong> <i class="icon-chevron-up"></i></a> |
|
97 | 97 |
} else { |
98 |
- <a href="@routes.Application.index()?order=name">@Messages("orderby.name")</a> |
|
98 |
+ <a href="@routes.Application.index()?order=name">@Messages("order.name")</a> |
|
99 | 99 |
} |
100 | 100 |
} |
101 | 101 |
</span> |
--- app/views/issue/editIssue.scala.html
+++ app/views/issue/editIssue.scala.html
... | ... | @@ -11,75 +11,63 @@ |
11 | 11 |
@main(Messages(title), project, utils.MenuType.ISSUE) { |
12 | 12 |
|
13 | 13 |
<div class="page"> |
14 |
- @prjmenu(project, utils.MenuType.ISSUE, "main-menu-only") |
|
14 |
+ @prjmenu(project, utils.MenuType.ISSUE, "main-menu-only") |
|
15 | 15 |
|
16 |
- <div class="content-wrap frm-wrap"> |
|
17 |
- |
|
16 |
+ <div class="content-wrap frm-wrap"> |
|
17 |
+ |
|
18 | 18 |
@form(action = routes.IssueApp.editIssue(project.owner, project.name, issue.id), 'id -> "issue-form", 'enctype -> "multipart/form-data") { |
19 |
- <input type="hidden" value="@issue.authorId" name="authorId"> |
|
19 |
+ <input type="hidden" name="authorId" value="@issue.authorId"> |
|
20 | 20 |
|
21 | 21 |
<dl> |
22 | 22 |
<dt> |
23 |
- <!-- |
|
24 |
- <div id="warning" class="n-alert hide"> |
|
25 |
- <div class="n-inner"> |
|
26 |
- <span class="msg">제목과 본문에 빈칸이 있습니다.</span> |
|
27 |
- <a href="#" class="ico btn-delete"></a> |
|
28 |
- </div> |
|
29 |
- </div> |
|
30 |
- --> |
|
31 |
- <label for="title"><!-- <strong class="secondary-txt">#@issue.id</strong>-->@Messages("post.new.title")</label> |
|
23 |
+ <label for="title"><!-- <strong class="secondary-txt">#@issue.id</strong>-->@Messages("post.new.title")</label> |
|
32 | 24 |
</dt> |
33 | 25 |
<dd> |
34 | 26 |
<input type="text" id="title" name="title" value="@issue.title" class="text title" maxlength="250" tabindex="1"> |
35 | 27 |
</dd> |
28 |
+ <dd> |
|
29 |
+ <textarea id="body" name="body" markdown="true" class="text content" tabindex="2">@issue.body</textarea> |
|
30 |
+ </dd> |
|
36 | 31 |
</dl> |
37 | 32 |
|
38 |
- <textarea id="body" name="body" markdown="true" class="text content" tabindex="2">@issue.body</textarea> |
|
39 |
- |
|
33 |
+ @** fileUploader **@ |
|
34 |
+ @if(UserApp.currentUser() != UserApp.anonymous) { |
|
40 | 35 |
<div class="content-footer"> |
41 |
- @** fileUploader **@ |
|
42 |
- @if(UserApp.currentUser() != UserApp.anonymous) { |
|
43 |
- |
|
44 | 36 |
<div class="attach-wrap"> |
45 | 37 |
<div class="avatar-wrap"> |
46 |
- <img src="@User.findByLoginId(session.get("loginId")).avatarUrl" class="img-rounded" width="32" height="32" alt="avatar"> |
|
38 |
+ <img src="@User.findByLoginId(session.get("loginId")).avatarUrl" width="32" height="32"> |
|
47 | 39 |
</div> |
48 | 40 |
<div id="upload" class="attach-info-wrap" resourceType="@ResourceType.ISSUE_POST" resourceId="@issue.id"> |
49 | 41 |
<div> |
50 | 42 |
<span class="progress-num">0%</span> <span class="sp-line"> </span> |
51 |
- <strong>total</strong> <span class="total-num">0MB</span> |
|
43 |
+ <strong>total</strong> <span class="total-num">0Mb</span> |
|
52 | 44 |
</div> |
53 | 45 |
<div class="progress-wrap"> |
54 | 46 |
<div class="progress n4"> |
55 | 47 |
<div class="bar orange" style="width: 0%;"></div> |
56 | 48 |
</div> |
57 | 49 |
</div> |
58 |
- <!-- <a href="#!/cancel"><i class="ico btn-cancel"></i></a> --> |
|
59 | 50 |
</div> |
60 |
- |
|
51 |
+ |
|
61 | 52 |
<div class="btn-wrap"> |
62 |
- <div class="fake-file-wrap"> |
|
63 |
- <input type="file" class="file" name="filePath" size="1"> |
|
64 |
- <div class="ns-btn"> |
|
65 |
- <i class="ico ico-plus-blue"></i>@Messages("button.upload") |
|
66 |
- </div> |
|
53 |
+ <div class="nbtn medium white fake-file-wrap"> |
|
54 |
+ <i class="ico ico-plus-blue"></i>@Messages("button.upload")<!-- |
|
55 |
+ --> <input type="file" class="file" name="filePath"> |
|
67 | 56 |
</div> |
68 | 57 |
</div> |
69 | 58 |
</div> |
70 | 59 |
<script type="text/template" id="tplAttachedFile"><!-- |
71 |
- --><li class="attached-file" data-name="${fileName}" data-href="${fileHref}" data-mime="${mimeType}" data-size="${fileSize}"> |
|
72 |
- <strong>${fileName}(${fileSizeReadable})</strong><!-- |
|
73 |
- --><a class="attached-delete"><i class="ico btn-delete"></i></a><!-- |
|
74 |
- --></li> |
|
75 |
- </script> |
|
76 |
- |
|
60 |
+ --><li class="attached-file" data-name="${fileName}" data-href="${fileHref}" data-mime="${mimeType}" data-size="${fileSize}"> |
|
61 |
+ <strong>${fileName}(${fileSizeReadable})</strong><!-- |
|
62 |
+ --><a class="attached-delete"><i class="ico btn-delete"></i></a></li> |
|
63 |
+ </script> |
|
64 |
+ |
|
77 | 65 |
<div class="attached-files-wrap"> |
78 | 66 |
<ul class="attached-files"></ul> |
79 | 67 |
</div> |
68 |
+ </div> |
|
80 | 69 |
} |
81 | 70 |
@** end of fileUploader **@ |
82 |
- </div> |
|
83 | 71 |
|
84 | 72 |
<br> |
85 | 73 |
|
... | ... | @@ -89,9 +77,11 @@ |
89 | 77 |
<li class="option"> |
90 | 78 |
<div class="option-label">@Messages("issue.state")</div> |
91 | 79 |
<div class="option-desc"> |
92 |
- <div id="assignee" class="btn-group" data-name="state"> |
|
93 |
- <button data-toggle="dropdown" class="btn dropdown-toggle d-label bgwhite">@Messages("issue.state")</button> |
|
94 |
- <button data-toggle="dropdown" class="btn dropdown-toggle bgwhite"><span class="caret"></span></button> |
|
80 |
+ <div id="state" class="btn-group" data-name="state"> |
|
81 |
+ <button class="btn dropdown-toggle large" data-toggle="dropdown"> |
|
82 |
+ <span class="d-label">@Messages("issue.state")</span> |
|
83 |
+ <span class="d-caret"><span class="caret"></span></span> |
|
84 |
+ </button> |
|
95 | 85 |
<ul class="dropdown-menu"> |
96 | 86 |
<li data-value="@State.OPEN.name" @if(issue.state == State.OPEN){data-selected="true" class="active"}><a href="javascript:void(0)">@Messages("issue.state.open")</a></li> |
97 | 87 |
<li data-value="@State.CLOSED.name" @if(issue.state == State.CLOSED){data-selected="true" class="active"}><a href="javascript:void(0)">@Messages("issue.state.closed")</a></li> |
... | ... | @@ -105,9 +95,11 @@ |
105 | 95 |
<li class="option"> |
106 | 96 |
<div class="option-label">@Messages("issue.new.detailInfo.assignee")</div> |
107 | 97 |
<div class="option-desc"> |
108 |
- <div id="assignee" class="btn-group" data-name="assignee.user.id"> |
|
109 |
- <button data-toggle="dropdown" class="btn dropdown-toggle d-label bgwhite">@Messages("issue.new.selectDefault.assignee")</button> |
|
110 |
- <button data-toggle="dropdown" class="btn dropdown-toggle bgwhite"><span class="caret"></span></button> |
|
98 |
+ <div id="assignee" class="btn-group" data-name="assignee.user.id"> |
|
99 |
+ <button class="btn dropdown-toggle large" data-toggle="dropdown"> |
|
100 |
+ <span class="d-label">@Messages("issue.new.selectDefault.assignee")</span> |
|
101 |
+ <span class="d-caret"><span class="caret"></span></span> |
|
102 |
+ </button> |
|
111 | 103 |
<ul class="dropdown-menu"> |
112 | 104 |
@ProjectUser.options(project.id).map{ v => |
113 | 105 |
<li data-value="@v._1" @if(issue.assignee != null && issue.assignee.user.id.toString() == v._1){data-selected="true" class="active"}><a href="javascript:void(0)">@v._2</a></li> |
... | ... | @@ -123,8 +115,10 @@ |
123 | 115 |
<div class="option-label">@Messages("issue.new.detailInfo.milestone")</div> |
124 | 116 |
<div class="option-desc"> |
125 | 117 |
<div id="milestoneId" class="btn-group" data-name="milestoneId"> |
126 |
- <button data-toggle="dropdown" class="btn dropdown-toggle d-label bgwhite">@Messages("issue.new.selectDefault.milestone")</button> |
|
127 |
- <button data-toggle="dropdown" class="btn dropdown-toggle bgwhite"><span class="caret"></span></button> |
|
118 |
+ <button class="btn dropdown-toggle large" data-toggle="dropdown"> |
|
119 |
+ <span class="d-label">@Messages("issue.new.selectDefault.milestone")</span> |
|
120 |
+ <span class="d-caret"><span class="caret"></span></span> |
|
121 |
+ </button> |
|
128 | 122 |
<ul class="dropdown-menu"> |
129 | 123 |
@Milestone.options(project.id).map{ v => |
130 | 124 |
<li data-value="@v._1" @if(issue.milestone != null && issue.milestone.id.toString() == v._1){data-selected="true" class="active"}><a href="javascript:void(0)">@v._2</a></li> |
... | ... | @@ -136,48 +130,19 @@ |
136 | 130 |
} |
137 | 131 |
</ul> |
138 | 132 |
|
139 |
- @** |
|
140 |
- <fieldset class="labels"> |
|
141 |
- @if(isAllowed(UserApp.currentUser(), issue.stateAsResource(), Operation.UPDATE)){ |
|
142 |
- @select( |
|
143 |
- issueForm("state"), |
|
144 |
- options(State.OPEN.name -> "Open", State.CLOSED.name -> "Closed"), |
|
145 |
- '_label-> Messages("issue.state"), |
|
146 |
- '_showConstraints -> false) |
|
147 |
- } |
|
148 |
- @if(isAllowed(UserApp.currentUser(), issue.assigneeAsResource(), Operation.UPDATE)){ |
|
149 |
- @select( |
|
150 |
- issueForm("assignee.user.id"), |
|
151 |
- options(ProjectUser.options(project.id)), |
|
152 |
- '_label-> Messages("issue.new.detailInfo.assignee"), |
|
153 |
- '_default -> Messages("issue.new.selectDefault.assignee"), |
|
154 |
- '_showConstraints -> false) |
|
155 |
- } |
|
156 |
- @if(isAllowed(UserApp.currentUser(), issue.milestoneAsResource(), Operation.UPDATE)){ |
|
157 |
- @select( |
|
158 |
- issueForm("milestoneId"), |
|
159 |
- options(Milestone.options(project.id)), |
|
160 |
- '_label-> Messages("issue.new.detailInfo.milestone"), |
|
161 |
- '_default -> Messages("issue.new.selectDefault.milestone"), |
|
162 |
- '_showConstraints -> false) |
|
163 |
- } |
|
164 |
- </fieldset> |
|
165 |
- **@ |
|
166 |
- |
|
167 | 133 |
<!-- issue.label js module appends a label selector here. --> |
168 | 134 |
<p class="option-label">@Messages("label.select")</p> |
169 | 135 |
<fieldset class="labels issue-form-labels form-horizontal bubble-wrap gray"></fieldset> |
170 | 136 |
|
171 | 137 |
<div class="actions"> |
172 |
- <button type="submit" class="btn-transparent n-btn orange med">@Messages("button.save")</button> |
|
173 |
- <a href="javascript:history.back();" class="n-btn gray med cancel">@Messages("button.cancel")</a> |
|
174 |
- <!-- |
|
175 |
- <a href="@routes.IssueApp.issues(project.owner, project.name, "all")" class="n-btn gray med">@Messages("button.cancel")</a> |
|
176 |
- --> |
|
138 |
+ <button type="submit" class="nbtn orange medium">@Messages("button.save")</button><!-- |
|
139 |
+ --><a href="javascript:history.back();" class="nbtn medium last">@Messages("button.cancel")</a> |
|
177 | 140 |
</div> |
141 |
+ @** <!-- @routes.IssueApp.issues(project.owner, project.name, "all") --> **@ |
|
178 | 142 |
|
179 |
- } @** end of form **@ |
|
180 |
- </div> |
|
143 |
+ } @** end of form **@ |
|
144 |
+ </div> |
|
145 |
+</div> |
|
181 | 146 |
|
182 | 147 |
@markdown() |
183 | 148 |
|
... | ... | @@ -202,5 +167,5 @@ |
202 | 167 |
}); |
203 | 168 |
}); |
204 | 169 |
</script> |
205 |
-</div> |
|
170 |
+ |
|
206 | 171 |
} |
--- app/views/issue/issue.scala.html
+++ app/views/issue/issue.scala.html
... | ... | @@ -18,198 +18,182 @@ |
18 | 18 |
|
19 | 19 |
@main(getTitle(issue, project).toString(), project, utils.MenuType.ISSUE){ |
20 | 20 |
<div class="page board-view"> |
21 |
- @prjmenu(project, utils.MenuType.ISSUE, "main-menu-only") |
|
21 |
+ @prjmenu(project, utils.MenuType.ISSUE, "main-menu-only") |
|
22 | 22 |
|
23 |
- @** Post Info **@ |
|
24 |
- <div class="board-header issue"> |
|
25 |
- <div class="board-id div"><strong class="secondary-txt">#@issue.getNumber</strong></div> |
|
26 |
- <h1 class="title div">@issue.title</h1> |
|
27 |
- <div class="date div">@agoString(issue.ago)</div> |
|
28 |
- <div class="div"> |
|
29 |
- <span class="badge badge-issue-@issue.state.state.toLowerCase">@Messages("issue.state." + issue.state.state)</span> |
|
23 |
+ @** Post Info **@ |
|
24 |
+ <div class="board-header issue"> |
|
25 |
+ <div class="board-id div"><strong class="secondary-txt">#@issue.getNumber</strong></div> |
|
26 |
+ <h1 class="title div">@issue.title</h1> |
|
27 |
+ <div class="date div">@agoString(issue.ago)</div> |
|
28 |
+ <div class="div"> |
|
29 |
+ <span class="badge badge-issue-@issue.state.state.toLowerCase">@Messages("issue.state." + issue.state.state)</span> |
|
30 |
+ </div> |
|
30 | 31 |
</div> |
31 |
- </div> |
|
32 | 32 |
|
33 |
- @** Content body **@ |
|
34 |
- <div class="board-body"> |
|
35 |
- <div class="author-info"> |
|
36 |
- <a href="@routes.UserApp.userInfo(issue.authorLoginId)" class="avatar-wrap pull-left img-rounded"> |
|
37 |
- <img class="user-picture" src="@User.findByLoginId(issue.authorLoginId).avatarUrl" width="32" height="32" alt="@issue.authorName"> |
|
38 |
- </a> |
|
39 |
- <div class="media-body"> |
|
40 |
- |
|
41 |
- @** author **@ |
|
42 |
- <p> |
|
43 |
- @Messages("issue.author") |
|
44 |
- <a href="@routes.IssueApp.newIssueForm(project.owner, project.name)" @if(issue.assigneeName != null){ class="gray-txt" }> |
|
45 |
- <strong>@Option(issue.authorLoginId).orElse(Option(Messages("issue.noAuthor"))).get</strong> |
|
46 |
- </a> <!--<span class="name">(Loren Brichter)</span>--> |
|
47 |
- · |
|
48 |
- @Messages("issue.assignee") |
|
49 |
- @if(issue.assigneeName == null){ |
|
50 |
- <a href="@if(isAllowed(UserApp.currentUser(), issue.asResource(), Operation.UPDATE)) {@routes.IssueApp.editIssueForm(project.owner, project.name, issue.id)#options} else {#}" class="gray-txt"> |
|
51 |
- <strong>@Messages("issue.noAssignee")</strong> |
|
52 |
- </a> |
|
53 |
- } else { |
|
54 |
- |
|
55 |
- <a href="@routes.IssueApp.issues(project.owner, project.name, "open")&assigneeId=@issue.assignee.user.id"> |
|
56 |
- <strong>@issue.assigneeName</strong> |
|
57 |
- </a> |
|
58 |
- } |
|
59 |
- </p> |
|
33 |
+ @** Content body **@ |
|
34 |
+ <div class="board-body"> |
|
35 |
+ <div class="author-info"> |
|
36 |
+ <a href="@routes.UserApp.userInfo(issue.authorLoginId)" class="avatar-wrap pull-left"> |
|
37 |
+ <img src="@User.findByLoginId(issue.authorLoginId).avatarUrl" width="32" height="32" alt="@issue.authorName"> |
|
38 |
+ </a> |
|
39 |
+ <div class="media-body"> |
|
40 |
+ <p> |
|
41 |
+ @**<!-- author -->**@ |
|
42 |
+ @Messages("issue.author") |
|
43 |
+ <a href="@routes.IssueApp.newIssueForm(project.owner, project.name)" @if(issue.assigneeName != null){ class="gray-txt" }> |
|
44 |
+ <strong>@Option(issue.authorLoginId).orElse(Option(Messages("issue.noAuthor"))).get</strong> |
|
45 |
+ </a> |
|
46 |
+ · |
|
47 |
+ |
|
48 |
+ @**<!-- assignee -->**@ |
|
49 |
+ @Messages("issue.assignee") |
|
50 |
+ @if(issue.assigneeName == null){ |
|
51 |
+ <a href="@if(isAllowed(UserApp.currentUser(), issue.asResource(), Operation.UPDATE)) {@routes.IssueApp.editIssueForm(project.owner, project.name, issue.id)#options} else {#}" class="gray-txt"> |
|
52 |
+ <strong>@Messages("issue.noAssignee")</strong> |
|
53 |
+ </a> |
|
54 |
+ } else { |
|
55 |
+ <a href="@routes.IssueApp.issues(project.owner, project.name, "open")&assigneeId=@issue.assignee.user.id"> |
|
56 |
+ <strong>@issue.assigneeName</strong> |
|
57 |
+ </a> |
|
58 |
+ } |
|
59 |
+ </p> |
|
60 | 60 |
|
61 |
- @** status **@ |
|
62 |
- <p> |
|
63 |
- @Messages("comment") <strong class="num">@issue.comments.size</strong> |
|
64 |
- |
|
65 |
- @Messages("milestone") |
|
66 |
- @if(issue.milestone != null) { |
|
67 |
- <strong class="num">@issue.milestone.title</strong> |
|
68 |
- } else { |
|
69 |
- <a href="@if(isAllowed(UserApp.currentUser(), issue.asResource(), Operation.UPDATE)) {@routes.IssueApp.editIssueForm(project.owner, project.name, issue.id)#options} else {#}" class="gray-txt"><strong>@Messages("none")</strong></a> |
|
70 |
- } |
|
71 |
- </p> |
|
72 |
- |
|
73 |
- </div> |
|
74 |
- </div> |
|
75 |
- <div class="content" markdown="true">@issue.body</div> |
|
76 |
- <div class="attachments" resourceType="@ResourceType.ISSUE_POST" resourceId="@issue.id"> |
|
77 |
- @**<!-- |
|
78 |
- <ul class="attaches wm"> |
|
79 |
- <li class="attach"><i class="ico ico-clip"></i>K23.png (11KB)</li> |
|
80 |
- <li class="attach"><i class="ico ico-clip"></i>K23.png (11KB)</li> |
|
81 |
- <li class="attach"><i class="ico ico-clip"></i>K23.png (11KB)</li> |
|
82 |
- </ul>-->**@ |
|
61 |
+ @** status **@ |
|
62 |
+ <p> |
|
63 |
+ @**<!-- comment |
|
64 |
+ @Messages("comment") <strong class="num">@issue.comments.size</strong> |
|
65 |
+ -->**@ |
|
66 |
+ |
|
67 |
+ @**<!-- milestone -->**@ |
|
68 |
+ @Messages("milestone") |
|
69 |
+ @if(issue.milestone != null) { |
|
70 |
+ <strong class="num">@issue.milestone.title</strong> |
|
71 |
+ } else { |
|
72 |
+ <a href="@if(isAllowed(UserApp.currentUser(), issue.asResource(), Operation.UPDATE)) {@routes.IssueApp.editIssueForm(project.owner, project.name, issue.id)#options} else {#}" class="gray-txt"><strong>@Messages("none")</strong></a> |
|
73 |
+ } |
|
74 |
+ </p> |
|
75 |
+ </div> |
|
76 |
+ </div> |
|
77 |
+ <div class="content" markdown="true">@issue.body</div> |
|
78 |
+ <div class="attachments" resourceType="@ResourceType.ISSUE_POST" resourceId="@issue.id"></div> |
|
83 | 79 |
</div> |
84 |
- |
|
85 |
- </div> |
|
86 |
- <div class="board-footer board-actrow"> |
|
87 |
- |
|
88 |
- @** labels **@ |
|
89 |
- <p class="labels-wrap"> |
|
80 |
+ |
|
81 |
+ <div class="board-footer board-actrow"> |
|
82 |
+ @** labels **@ |
|
83 |
+ <p class="labels-wrap pull-left"> |
|
90 | 84 |
@for(label <- issue.labels.toList.sortBy(r => (r.category, r.name))) { |
91 | 85 |
<button class="issue-label" data-labelId="@label.id" style="background-color:@label.color">@label.name</button> |
92 | 86 |
} |
93 |
- </p> |
|
87 |
+ </p> |
|
94 | 88 |
|
95 |
- @if(isAllowed(UserApp.currentUser(), issue.asResource(), Operation.UPDATE)) { |
|
96 |
- <a href="@routes.IssueApp.editIssueForm(project.owner, project.name, issue.id)" class="n-btn orange med">@Messages("button.edit")</a> |
|
97 |
- } |
|
98 |
- @if(isAllowed(UserApp.currentUser(), issue.asResource(), Operation.DELETE)) { |
|
99 |
- <a href="#deleteConfirm" data-toggle="modal" class="n-btn light-gray med">@Messages("button.delete")</a> |
|
100 |
- } |
|
101 |
- <a href="@routes.IssueApp.issues(project.owner, project.name,"open")" class="n-btn gray med">@Messages("button.list")</a> |
|
102 |
- </div> |
|
89 |
+ @if(isAllowed(UserApp.currentUser(), issue.asResource(), Operation.UPDATE)) { |
|
90 |
+ <a href="@routes.IssueApp.editIssueForm(project.owner, project.name, issue.id)" class="nbtn medium orange">@Messages("button.edit")</a> |
|
91 |
+ } |
|
92 |
+ |
|
93 |
+ @if(isAllowed(UserApp.currentUser(), issue.asResource(), Operation.DELETE)) { |
|
94 |
+ <a href="#deleteConfirm" data-toggle="modal" class="nbtn medium black">@Messages("button.delete")</a> |
|
95 |
+ } |
|
96 |
+ |
|
97 |
+ <a href="@routes.IssueApp.issues(project.owner, project.name,"open")" class="nbtn medium last">@Messages("button.list")</a> |
|
98 |
+ </div> |
|
103 | 99 |
|
104 |
-@** Comment **@ |
|
105 |
-<div class="board-comment-wrap"> |
|
106 |
- <div class="comment-header"><strong>@Messages("comment")</strong> <strong class="num">@issue.comments.size</strong></div> |
|
100 |
+ @** Comment **@ |
|
101 |
+ <div class="board-comment-wrap"> |
|
102 |
+ <div class="comment-header"><strong>@Messages("comment")</strong> <strong class="num">@issue.comments.size</strong></div> |
|
107 | 103 |
|
108 |
- @if(issue.comments.size > 0) { |
|
109 |
- <ul class="comments"> |
|
110 |
- @for(comment <- issue.comments){ |
|
111 |
- <li class="comment"> |
|
112 |
- <a href="@routes.UserApp.userInfo(comment.authorLoginId)" class="pull-left img-rounded avatar-wrap"> |
|
113 |
- <img class="user-picture" src="@User.findByLoginId(comment.authorLoginId).avatarUrl" width="32" height="32" alt="@comment.authorLoginId"> |
|
114 |
- </a> |
|
115 |
- <div class="media-body"> |
|
116 |
- @if(isAllowed(UserApp.currentUser(), comment.asResource(), Operation.DELETE)){ |
|
117 |
- <a class="pull-right close" href="@routes.IssueApp.deleteComment(project.owner, project.name, issue.id, comment.id)">×</a> |
|
118 |
- } |
|
119 |
- <p class="commenter"> |
|
120 |
- <a href="@routes.UserApp.userInfo(comment.authorLoginId)"><strong>@comment.authorLoginId</strong></a> |
|
121 |
- <span class="date"> @utils.TemplateHelper.agoString(comment.ago())</span> |
|
122 |
- </p> |
|
123 |
- <div class="comment-body" markdown="true">@comment.contents</div> |
|
124 |
- <div class="attachments" resourceType="@ResourceType.ISSUE_COMMENT" resourceId="@comment.id"></div> |
|
125 |
- <!-- |
|
126 |
- <ul class="attaches"> |
|
127 |
- <li class="attach"><i class="ico ico-clip"></i><a href="/file-down">첨부파일(iabcde-test.exe) <i class="ico ico-blue-dot"></i> Donwload</a></li> |
|
128 |
- </ul>--> |
|
129 |
- </div> |
|
130 |
- </li> |
|
131 |
- } |
|
132 |
- </ul> |
|
133 |
- } |
|
134 |
- |
|
135 |
-@if(isCreatable(User.findByLoginId(session.get("loginId")), project, models.enumeration.ResourceType.BOARD_POST)){ |
|
136 |
- <div class="write-comment-box"> |
|
104 |
+ @if(issue.comments.size > 0) { |
|
105 |
+ <ul class="comments"> |
|
106 |
+ @for(comment <- issue.comments){ |
|
107 |
+ <li class="comment"> |
|
108 |
+ <a href="@routes.UserApp.userInfo(comment.authorLoginId)" class="avatar-wrap pull-left"> |
|
109 |
+ <img src="@User.findByLoginId(comment.authorLoginId).avatarUrl" width="32" height="32" alt="@comment.authorLoginId"> |
|
110 |
+ </a> |
|
111 |
+ <div class="media-body"> |
|
112 |
+ @if(isAllowed(UserApp.currentUser(), comment.asResource(), Operation.DELETE)){ |
|
113 |
+ <a class="pull-right close" href="@routes.IssueApp.deleteComment(project.owner, project.name, issue.id, comment.id)">×</a> |
|
114 |
+ } |
|
115 |
+ |
|
116 |
+ <p class="commenter"> |
|
117 |
+ <a href="@routes.UserApp.userInfo(comment.authorLoginId)"><strong>@comment.authorLoginId</strong></a> |
|
118 |
+ <span class="date"> @utils.TemplateHelper.agoString(comment.ago())</span> |
|
119 |
+ </p> |
|
120 |
+ <div class="comment-body" markdown="true">@comment.contents</div> |
|
121 |
+ <div class="attachments" resourceType="@ResourceType.ISSUE_COMMENT" resourceId="@comment.id"></div> |
|
122 |
+ </div> |
|
123 |
+ </li> |
|
124 |
+ } |
|
125 |
+ </ul> |
|
126 |
+ } |
|
127 |
+ |
|
128 |
+ @if(isCreatable(User.findByLoginId(session.get("loginId")), project, models.enumeration.ResourceType.BOARD_POST)){ |
|
137 | 129 |
@form(routes.IssueApp.newComment(project.owner, project.name, issue.id), 'id -> "comment-form", 'enctype -> "multipart/form-data"){ |
138 |
- <div class="write-comment-wrap"> |
|
139 |
- <textarea id="comment-editor" name="contents" class="text comment" markdown="true"></textarea> |
|
140 |
- <button class="comment-btn">@Messages("button.comment.new")</button> |
|
141 |
- </div> |
|
142 |
- |
|
143 |
- <div class="attach-wrap"> |
|
144 |
- <div class="pull-left img-rounded avatar-wrap"> |
|
145 |
- @if(UserApp.currentUser() != UserApp.anonymous) { |
|
146 |
- <img src="@User.findByLoginId(session.get("loginId")).avatarUrl" class="img-rounded" width="32" height="32" alt="avatar"> |
|
147 |
- } else { |
|
148 |
- <img src="@routes.Assets.at("images/default-avatar-34.png")" class="img-rounded" width="32" height="32" alt="avatar"> |
|
149 |
- } |
|
130 |
+ <div class="write-comment-box"> |
|
131 |
+ <div class="write-comment-wrap"> |
|
132 |
+ <textarea id="comment-editor" name="contents" class="text comment" markdown="true"></textarea> |
|
133 |
+ <button class="comment-btn">@Messages("button.comment.new")</button> |
|
150 | 134 |
</div> |
151 |
- |
|
152 |
- @** fileUploader **@ |
|
153 |
- @if(UserApp.currentUser() != UserApp.anonymous) { |
|
154 |
- |
|
155 |
- <div id="upload" class="attach-info-wrap" resourceType="@ResourceType.ISSUE_COMMENT"> |
|
156 |
- <div> |
|
157 |
- <span class="progress-num">0%</span> <span class="sp-line"> </span> |
|
158 |
- <strong>total</strong> <span class="total-num">0Mb</span> |
|
135 |
+ |
|
136 |
+ @** fileUploader **@ |
|
137 |
+ @if(UserApp.currentUser() != UserApp.anonymous) { |
|
138 |
+ <div class="attach-wrap"> |
|
139 |
+ <div class="avatar-wrap"> |
|
140 |
+ <img src="@User.findByLoginId(session.get("loginId")).avatarUrl" width="32" height="32"> |
|
159 | 141 |
</div> |
160 |
- <div class="progress-wrap"> |
|
161 |
- <div class="progress n4"> |
|
162 |
- <div class="bar orange" style="width: 0%;"></div> |
|
142 |
+ <div id="upload" class="attach-info-wrap" resourceType="@ResourceType.ISSUE_COMMENT"> |
|
143 |
+ <div> |
|
144 |
+ <span class="progress-num">0%</span> <span class="sp-line"> </span> |
|
145 |
+ <strong>total</strong> <span class="total-num">0Mb</span> |
|
146 |
+ </div> |
|
147 |
+ <div class="progress-wrap"> |
|
148 |
+ <div class="progress n4"> |
|
149 |
+ <div class="bar orange" style="width: 0%;"></div> |
|
150 |
+ </div> |
|
163 | 151 |
</div> |
164 | 152 |
</div> |
165 |
- <!-- <a href="#!/cancel"><i class="ico btn-cancel"></i></a> --> |
|
166 |
- </div> |
|
167 |
- |
|
168 |
- <div class="btn-wrap"> |
|
169 |
- <div class="fake-file-wrap"> |
|
170 |
- <input type="file" class="file" name="filePath" size="1"> |
|
171 |
- <div class="ns-btn"> |
|
172 |
- <i class="ico ico-plus-blue"></i>@Messages("button.upload") |
|
153 |
+ <div class="btn-wrap"> |
|
154 |
+ <div class="nbtn medium white fake-file-wrap"> |
|
155 |
+ <i class="ico ico-plus-blue"></i>@Messages("button.upload")<!-- |
|
156 |
+ --> <input type="file" class="file" name="filePath"> |
|
173 | 157 |
</div> |
174 | 158 |
</div> |
159 |
+ </div> |
|
160 |
+ <div class="attached-files-wrap"> |
|
161 |
+ <ul class="attached-files"></ul> |
|
175 | 162 |
</div> |
176 | 163 |
} |
177 | 164 |
@** end of fileUploader **@ |
178 |
- |
|
179 | 165 |
</div> |
180 |
- } @** end of comment form **@ |
|
181 |
- <div class="attached-files-wrap"> |
|
182 |
- <ul class="attached-files"></ul> |
|
166 |
+ } |
|
167 |
+ @** end of form **@ |
|
168 |
+ } else { |
|
169 |
+ <div class="write-comment-box"> |
|
170 |
+ <div class="write-comment-wrap"> |
|
171 |
+ <textarea class="text comment disabled" disabled="disabled">@Messages("auth.unauthorized.comment")</textarea> |
|
172 |
+ <button class="comment-btn disabled">@Messages("button.comment.new")</button> |
|
173 |
+ </div> |
|
183 | 174 |
</div> |
184 |
- </div> |
|
185 |
- <script type="text/template" id="tplAttachedFile"><!-- |
|
186 |
- --><li class="attached-file" data-name="${fileName}" data-href="${fileHref}" data-mime="${mimeType}" data-size="${fileSize}"> |
|
187 |
- <strong>${fileName}(${fileSizeReadable})</strong><!-- |
|
188 |
- --><a class="attached-delete"><i class="ico btn-delete"></i></a> |
|
189 |
- </li> |
|
190 |
- </script> |
|
191 |
-@** end of write-comment-box **@ |
|
192 |
-} else { |
|
193 |
- <div class="write-comment-box"> |
|
194 |
- <div class="write-comment-wrap"> |
|
195 |
- <textarea class="text comment disabled" disabled="disabled">@Messages("auth.unauthorized.comment")</textarea> |
|
196 |
- <button class="comment-btn disabled">@Messages("button.comment.new")</button> |
|
197 |
- </div> |
|
175 |
+ } |
|
198 | 176 |
</div> |
199 |
-} |
|
177 |
+ @** // Comment **@ |
|
200 | 178 |
</div> |
201 | 179 |
|
202 |
-@** |
|
180 |
+<script type="text/template" id="tplAttachedFile"><!-- |
|
181 |
+ --><li class="attached-file" data-name="${fileName}" data-href="${fileHref}" data-mime="${mimeType}" data-size="${fileSize}"> |
|
182 |
+ <strong>${fileName}(${fileSizeReadable})</strong><!-- |
|
183 |
+ --><a class="attached-delete"><i class="ico btn-delete"></i></a></li> |
|
184 |
+</script> |
|
185 |
+ |
|
186 |
+@**<!-- |
|
203 | 187 |
<div class="board-footer"> |
204 | 188 |
@if(isAllowed(UserApp.currentUser(), issue.asResource(), Operation.UPDATE)) { |
205 |
- <a href="@routes.IssueApp.editIssueForm(project.owner, project.name, issue.id)" class="n-btn orange med">@Messages("button.edit")</a> |
|
189 |
+ <a href="@routes.IssueApp.editIssueForm(project.owner, project.name, issue.id)" class="nbtn orange medium">@Messages("button.edit")</a> |
|
206 | 190 |
} |
207 | 191 |
@if(isAllowed(UserApp.currentUser(), issue.asResource(), Operation.DELETE)) { |
208 |
- <a href="#deleteConfirm" data-toggle="modal" class="n-btn light-gray med">@Messages("button.delete")</a> |
|
192 |
+ <a href="#deleteConfirm" data-toggle="modal" class="nbtn medium black">@Messages("button.delete")</a> |
|
209 | 193 |
} |
210 |
- <a href="@routes.IssueApp.issues(project.owner, project.name,"open")" class="n-btn gray med">@Messages("button.list")</a> |
|
194 |
+ <a href="@routes.IssueApp.issues(project.owner, project.name,"open")" class="nbtn medium">@Messages("button.list")</a> |
|
211 | 195 |
</div> |
212 |
-**@ |
|
196 |
+ -->**@ |
|
213 | 197 |
|
214 | 198 |
@** Confirm to delete post **@ |
215 | 199 |
<div id="deleteConfirm" class="modal hide fade"> |
... | ... | @@ -226,7 +210,7 @@ |
226 | 210 |
</div> |
227 | 211 |
</div> |
228 | 212 |
|
229 |
-@views.html.markdown() |
|
213 |
+@markdown() |
|
230 | 214 |
|
231 | 215 |
<script type="text/javascript"> |
232 | 216 |
$(document).ready(function(){ |
--- app/views/issue/issueList.scala.html
+++ app/views/issue/issueList.scala.html
... | ... | @@ -147,10 +147,8 @@ |
147 | 147 |
} |
148 | 148 |
|
149 | 149 |
<div class="write-btn-wrap"> |
150 |
- <a href="@routes.IssueApp.issues(project.owner, project.name, param.state, "xls")" class="n-btn med white btn-save-xls"> |
|
151 |
- <i class="ico ico-download"></i>@Messages("issue.downloadAsExcel") |
|
152 |
- </a> |
|
153 |
- <a href="@routes.IssueApp.newIssueForm(project.owner, project.name)" class="n-btn med orange">@Messages("issue.menu.new")</a> |
|
150 |
+ <a href="@routes.IssueApp.issues(project.owner, project.name, param.state, "xls")" class="nbtn medium white pull-left"><i class="ico ico-download"></i>@Messages("issue.downloadAsExcel")</a> |
|
151 |
+ <a href="@routes.IssueApp.newIssueForm(project.owner, project.name)" class="nbtn medium orange">@Messages("issue.menu.new")</a> |
|
154 | 152 |
</div> |
155 | 153 |
|
156 | 154 |
<div id="pagination"> |
--- app/views/issue/newIssue.scala.html
+++ app/views/issue/newIssue.scala.html
... | ... | @@ -10,85 +10,75 @@ |
10 | 10 |
|
11 | 11 |
@main(Messages(title), project, utils.MenuType.ISSUE) { |
12 | 12 |
<div class="page"> |
13 |
- @prjmenu(project, utils.MenuType.ISSUE, "main-menu-only") |
|
13 |
+ @prjmenu(project, utils.MenuType.ISSUE, "main-menu-only") |
|
14 | 14 |
|
15 |
- <div class="content-wrap frm-wrap"> |
|
15 |
+ <div class="content-wrap frm-wrap"> |
|
16 | 16 |
|
17 |
- @form(action = routes.IssueApp.newIssue(project.owner, project.name), 'id -> "issue-form", 'enctype -> "multipart/form-data") { |
|
18 |
- |
|
17 |
+ @form(action = routes.IssueApp.newIssue(project.owner, project.name), 'id -> "issue-form", 'enctype -> "multipart/form-data") { |
|
19 | 18 |
<dl> |
20 |
- <dt> |
|
21 |
- <div id="warning" class="n-alert hide"> |
|
22 |
- <div class="n-inner"> |
|
23 |
- <span class="msg">제목과 본문에 빈칸이 있습니다.</span> |
|
24 |
- <a href="#" class="ico btn-delete"></a> |
|
25 |
- </div> |
|
26 |
- </div> |
|
27 |
- <label for="title">@Messages("post.new.title")</label> |
|
19 |
+ <dt> |
|
20 |
+ <label for="title">@Messages("post.new.title")</label> |
|
28 | 21 |
</dt> |
29 | 22 |
<dd> |
30 | 23 |
<input type="text" id="title" name="title" value="" class="text title" maxlength="250" tabindex="1"> |
31 |
- @**helper.inputText(issueForm("title"), 'class->"text title", 'maxlength -> "250", 'tabindex -> 1, '_showConstraints -> false)**@ |
|
32 | 24 |
</dd> |
25 |
+ <dd> |
|
26 |
+ <textarea id="body" name="body" markdown="true" class="text content" tabindex="2"></textarea> |
|
27 |
+ </dd> |
|
33 | 28 |
</dl> |
34 |
- @** 'onkeypress -> "return event.keyCode !== 13" **@ |
|
35 | 29 |
|
36 |
- <textarea id="body" name="body" markdown="true" class="text content" tabindex="2"></textarea> |
|
37 |
- @** helper.textarea(issueForm("body"), 'markdown -> true, 'class->"text content", 'tabindex -> 2, '_showConstraints -> false) **@ |
|
38 |
- |
|
30 |
+ @** fileUploader **@ |
|
31 |
+ @if(UserApp.currentUser() != UserApp.anonymous) { |
|
39 | 32 |
<div class="content-footer"> |
40 |
- @** fileUploader **@ |
|
41 |
- @if(UserApp.currentUser() != UserApp.anonymous) { |
|
42 |
- |
|
43 | 33 |
<div class="attach-wrap"> |
44 | 34 |
<div class="avatar-wrap"> |
45 |
- <img src="@User.findByLoginId(session.get("loginId")).avatarUrl" class="img-rounded" width="32" height="32" alt="avatar"> |
|
35 |
+ <img src="@User.findByLoginId(session.get("loginId")).avatarUrl" width="32" height="32"> |
|
46 | 36 |
</div> |
47 |
- |
|
48 | 37 |
<div id="upload" class="attach-info-wrap" resourceType="@ResourceType.ISSUE_POST"> |
49 | 38 |
<div> |
50 | 39 |
<span class="progress-num">0%</span> <span class="sp-line"> </span> |
51 |
- <strong>total</strong> <span class="total-num">0MB</span> |
|
40 |
+ <strong>total</strong> <span class="total-num">0Mb</span> |
|
52 | 41 |
</div> |
53 | 42 |
<div class="progress-wrap"> |
54 | 43 |
<div class="progress n4"> |
55 | 44 |
<div class="bar orange" style="width: 0%;"></div> |
56 | 45 |
</div> |
57 | 46 |
</div> |
58 |
- <!-- <a href="#!/cancel"><i class="ico btn-cancel"></i></a> --> |
|
59 | 47 |
</div> |
60 |
- |
|
48 |
+ |
|
61 | 49 |
<div class="btn-wrap"> |
62 |
- <div class="ns-btn fake-file-wrap"> |
|
63 |
- <i class="ico ico-plus-blue"></i>@Messages("button.upload") <input type="file" class="file" name="filePath"> |
|
50 |
+ <div class="nbtn medium white fake-file-wrap"> |
|
51 |
+ <i class="ico ico-plus-blue"></i>@Messages("button.upload")<!-- |
|
52 |
+ --> <input type="file" class="file" name="filePath"> |
|
64 | 53 |
</div> |
65 | 54 |
</div> |
66 | 55 |
</div> |
67 | 56 |
<script type="text/template" id="tplAttachedFile"><!-- |
68 |
- --><li class="attached-file" data-name="${fileName}" data-href="${fileHref}" data-mime="${mimeType}" data-size="${fileSize}"> |
|
69 |
- <strong>${fileName}(${fileSizeReadable})</strong><!-- |
|
70 |
- --><a class="attached-delete"><i class="ico btn-delete"></i></a><!-- |
|
71 |
- --></li> |
|
72 |
- </script> |
|
73 |
- |
|
57 |
+ --><li class="attached-file" data-name="${fileName}" data-href="${fileHref}" data-mime="${mimeType}" data-size="${fileSize}"> |
|
58 |
+ <strong>${fileName}(${fileSizeReadable})</strong><!-- |
|
59 |
+ --><a class="attached-delete"><i class="ico btn-delete"></i></a></li> |
|
60 |
+ </script> |
|
61 |
+ |
|
74 | 62 |
<div class="attached-files-wrap"> |
75 | 63 |
<ul class="attached-files"></ul> |
76 | 64 |
</div> |
65 |
+ </div> |
|
77 | 66 |
} |
78 | 67 |
@** end of fileUploader **@ |
79 |
- </div> |
|
80 | 68 |
|
81 | 69 |
<br> |
82 |
- |
|
70 |
+ |
|
83 | 71 |
<!-- issue options --> |
84 |
- <ul class="options unstyled issue-options"> |
|
72 |
+ <ul id="options" class="options unstyled issue-options"> |
|
85 | 73 |
@if(isCreatable(UserApp.currentUser(), project, ResourceType.ISSUE_ASSIGNEE)) { |
86 | 74 |
<li class="option"> |
87 | 75 |
<div class="option-label">@Messages("issue.new.detailInfo.assignee")</div> |
88 | 76 |
<div class="option-desc"> |
89 |
- <div id="assignee" class="btn-group" data-name="assignee.user.id"> |
|
90 |
- <button data-toggle="dropdown" class="btn dropdown-toggle d-label bgwhite">@Messages("issue.new.selectDefault.assignee")</button> |
|
91 |
- <button data-toggle="dropdown" class="btn dropdown-toggle bgwhite"><span class="caret"></span></button> |
|
77 |
+ <div id="assignee" class="btn-group" data-name="assignee.user.id"> |
|
78 |
+ <button class="btn dropdown-toggle large" data-toggle="dropdown"> |
|
79 |
+ <span class="d-label">@Messages("issue.new.selectDefault.assignee")</span> |
|
80 |
+ <span class="d-caret"><span class="caret"></span></span> |
|
81 |
+ </button> |
|
92 | 82 |
<ul class="dropdown-menu"> |
93 | 83 |
@ProjectUser.options(project.id).map{ v => |
94 | 84 |
<li data-value="@v._1"><a href="javascript:void(0)">@v._2</a></li> |
... | ... | @@ -104,8 +94,10 @@ |
104 | 94 |
<div class="option-label">@Messages("issue.new.detailInfo.milestone")</div> |
105 | 95 |
<div class="option-desc"> |
106 | 96 |
<div id="milestoneId" class="btn-group" data-name="milestoneId"> |
107 |
- <button data-toggle="dropdown" class="btn dropdown-toggle d-label bgwhite">@Messages("issue.new.selectDefault.milestone")</button> |
|
108 |
- <button data-toggle="dropdown" class="btn dropdown-toggle bgwhite"><span class="caret"></span></button> |
|
97 |
+ <button class="btn dropdown-toggle large" data-toggle="dropdown"> |
|
98 |
+ <span class="d-label">@Messages("issue.new.selectDefault.milestone")</span> |
|
99 |
+ <span class="d-caret"><span class="caret"></span></span> |
|
100 |
+ </button> |
|
109 | 101 |
<ul class="dropdown-menu"> |
110 | 102 |
@Milestone.options(project.id).map{ v => |
111 | 103 |
<li data-value="@v._1"><a href="javascript:void(0)">@v._2</a></li> |
... | ... | @@ -115,48 +107,23 @@ |
115 | 107 |
</div> |
116 | 108 |
</li> |
117 | 109 |
} |
118 |
- </ul> |
|
110 |
+ </ul> |
|
119 | 111 |
|
120 |
- @** |
|
121 |
- <fieldset class="labels"> |
|
122 |
- @if(isCreatable(UserApp.currentUser(), project, ResourceType.ISSUE_ASSIGNEE)) { |
|
123 |
- @select( |
|
124 |
- issueForm("assignee.user.id"), |
|
125 |
- options(ProjectUser.options(project.id)), |
|
126 |
- '_label-> Messages("issue.new.detailInfo.assignee"), |
|
127 |
- '_default -> Messages("issue.new.selectDefault.assignee"), |
|
128 |
- '_showConstraints -> false) |
|
129 |
- } |
|
130 |
- |
|
131 |
- @if(isCreatable(UserApp.currentUser(), project, ResourceType.ISSUE_MILESTONE)) { |
|
132 |
- @select( |
|
133 |
- issueForm("milestoneId"), |
|
134 |
- options(Milestone.options(project.id)), |
|
135 |
- '_label-> Messages("issue.new.detailInfo.milestone"), |
|
136 |
- '_default -> Messages("issue.new.selectDefault.milestone"), |
|
137 |
- '_showConstraints -> false) |
|
138 |
- } |
|
139 |
- </fieldset> |
|
140 |
- **@ |
|
141 |
- |
|
142 | 112 |
<!-- issue.label js module appends a label selector here. --> |
143 | 113 |
<p class="option-label">@Messages("label.select")</p> |
144 | 114 |
<fieldset class="labels issue-form-labels form-horizontal bubble-wrap gray"></fieldset> |
145 | 115 |
|
146 | 116 |
<div class="actions"> |
147 |
- <button type="submit" class="btn-transparent n-btn orange med">@Messages("button.save")</button><!-- |
|
148 |
- --><a href="javascript:history.back();" class="n-btn gray med cancel">@Messages("button.cancel")</a> |
|
149 |
- <!-- |
|
150 |
- <a href="@routes.IssueApp.issues(project.owner, project.name, "all")" class="n-btn gray med">@Messages("button.cancel")</a> |
|
151 |
- --> |
|
152 |
- </div> |
|
117 |
+ <button type="submit" class="nbtn orange medium">@Messages("button.save")</button><!-- |
|
118 |
+ --><a href="javascript:history.back();" class="nbtn medium last">@Messages("button.cancel")</a> |
|
119 |
+ </div> |
|
120 |
+ @** <!-- @routes.IssueApp.issues(project.owner, project.name, "all") --> **@ |
|
153 | 121 |
|
154 |
- } @** end of form **@ |
|
155 |
- </div> |
|
122 |
+ } @** end of form **@ |
|
123 |
+ </div> |
|
124 |
+</div> |
|
156 | 125 |
|
157 | 126 |
@markdown() |
158 |
- |
|
159 |
-</div> |
|
160 | 127 |
|
161 | 128 |
<script type="text/javascript"> |
162 | 129 |
$(document).ready(function(){ |
--- app/views/login.scala.html
+++ app/views/login.scala.html
... | ... | @@ -1,41 +1,47 @@ |
1 |
-@(message:String, userForm:Form[User]) |
|
1 |
+@(message:String, userForm:Form[User]) @home(message, utils.MenuType.NONE) { |
|
2 | 2 |
|
3 |
-@home(message, utils.MenuType.NONE) { |
|
3 |
+<div class="page full"> |
|
4 |
+ <div class="center-wrap tag-line-wrap login"> |
|
5 |
+ <h1 class="title"> |
|
6 |
+ <span class="high-light">Log In for</span> HIVE |
|
7 |
+ </h1> |
|
8 |
+ <p class="tag-line">Software development platform for Open Source project.</p> |
|
9 |
+ </div> |
|
10 |
+ <div class="login-form-wrap frm-wrap"> |
|
11 |
+ <form action="@routes.UserApp.login()" method="POST"> |
|
12 |
+ <dl> |
|
13 |
+ <dt> |
|
14 |
+ <label for="loginId">@Messages("user.loginId")</label> |
|
15 |
+ </dt> |
|
16 |
+ <dd> |
|
17 |
+ <input id="loginId" name="loginId" type="text" class="text email" autocomplete="off"> |
|
18 |
+ </dd> |
|
4 | 19 |
|
5 |
- <div class="page full"> |
|
6 |
- <div class="center-wrap tag-line-wrap login"> |
|
7 |
- <h1 class="title"><span class="high-light">Log In for</span> HIVE</h1> |
|
8 |
- <p class="tag-line">Software development platform for Open Source project.</p> |
|
9 |
- </div> |
|
10 |
- <div class="login-form-wrap frm-wrap"> |
|
11 |
- <form action="@routes.UserApp.login()" method="POST"> |
|
12 |
- <dl> |
|
13 |
- <dt> |
|
14 |
- <label for="loginId">@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> |
|
20 |
+ <dt> |
|
21 |
+ <label for="password">@Messages("user.password")</label> |
|
22 |
+ </dt> |
|
23 |
+ <dd> |
|
24 |
+ <input id="password" name="password" type="password" class="text password" autocomplete="off"> |
|
25 |
+ </dd> |
|
26 |
+ </dl> |
|
27 | 27 |
|
28 |
- <div class="act-row right-txt"> |
|
29 |
- <input type="checkbox" class="checkbox" autocomplete="off" id="remember-me" name="rememberMe"><label for="remember-me" class="bg-checkbox">@Messages("title.rememberMe")</label> |
|
30 |
- <a href="@routes.PasswordResetApp.lostPassword()" class="forgot-password"><span class="label ">@Messages("title.forgotpassword")</span></a> |
|
31 |
- </div> |
|
32 |
- |
|
33 |
- <div class="btns-row"> |
|
34 |
- <button type="submit" class="n-btn orange log-in"><i class="ico ico-user-white"></i>@Messages("button.login")</button><!-- |
|
35 |
- --><a href="@routes.UserApp.signupForm()" class="n-btn blue join"><i class="ico ico-join"></i>@Messages("title.signup")</a> |
|
36 |
- </div> |
|
37 |
- </form> |
|
38 |
- </div> |
|
39 |
- </div> |
|
40 |
- |
|
28 |
+ <div class="act-row right-txt"> |
|
29 |
+ <input id="remember-me" type="checkbox" name="rememberMe" class="checkbox" autocomplete="off"><!-- |
|
30 |
+ --><label for="remember-me" class="bg-checkbox">@Messages("title.rememberMe")</label> |
|
31 |
+ |
|
32 |
+ <a href="@routes.PasswordResetApp.lostPassword()" class="forgot-password"> |
|
33 |
+ <span class="label">@Messages("title.forgotpassword")</span> |
|
34 |
+ </a> |
|
35 |
+ </div> |
|
36 |
+ |
|
37 |
+ <div class="btns-row"> |
|
38 |
+ <button type="submit" class="nbtn orange medium"> |
|
39 |
+ <i class="ico ico-user-white"></i>@Messages("button.login") |
|
40 |
+ </button><!-- |
|
41 |
+ --><a href="@routes.UserApp.signupForm()" class="nbtn medium"><i class="ico ico-join"></i>@Messages("title.signup")</a> |
|
42 |
+ </div> |
|
43 |
+ </form> |
|
44 |
+ </div> |
|
45 |
+</div> |
|
46 |
+ |
|
41 | 47 |
} |
--- app/views/milestone/create.scala.html
+++ app/views/milestone/create.scala.html
... | ... | @@ -25,8 +25,8 @@ |
25 | 25 |
</dl> |
26 | 26 |
|
27 | 27 |
<div class="actions"> |
28 |
- <button type="submit" class="n-btn orange med btn-transparent save">@Messages("button.save")</button> |
|
29 |
- <a href="@routes.MilestoneApp.manageMilestones(projectInst.owner, projectInst.name)" class="n-btn gray med">@Messages("button.cancel")</a> |
|
28 |
+ <button type="submit" class="nbtn orange medium">@Messages("button.save")</button> |
|
29 |
+ <a href="@routes.MilestoneApp.milestones(projectInst.owner, projectInst.name)" class="nbtn medium">@Messages("button.cancel")</a> |
|
30 | 30 |
</div> |
31 | 31 |
</div> |
32 | 32 |
|
--- app/views/milestone/edit.scala.html
+++ app/views/milestone/edit.scala.html
... | ... | @@ -5,7 +5,6 @@ |
5 | 5 |
@implicitField = @{ helper.FieldConstructor(simpleForm) } |
6 | 6 |
|
7 | 7 |
@project.projectMngMain(title, projectInst) { |
8 |
- |
|
9 | 8 |
@prjmenu(projectInst, utils.MenuType.MILESTONE, "") |
10 | 9 |
|
11 | 10 |
<div class="form-wrap milestone frm-wrap"> |
... | ... | @@ -13,13 +12,7 @@ |
13 | 12 |
<div class="inner left"> |
14 | 13 |
<dl> |
15 | 14 |
<dt> |
16 |
- <div class="n-alert hide" id="title_error"> |
|
17 |
- <div class="n-inner"> |
|
18 |
- <span class="msg">제목을 입력해주세요.</span> |
|
19 |
- <a href="#!/close" class="ico btn-delete"></a> |
|
20 |
- </div> |
|
21 |
- </div> |
|
22 |
- <label for="title">마일스톤 제목</label> |
|
15 |
+ <label for="title">@Messages("milestone.form.title")</label> |
|
23 | 16 |
</dt> |
24 | 17 |
<dd> |
25 | 18 |
@helper.input(form("title")){(id, name, value, args) => |
... | ... | @@ -28,13 +21,7 @@ |
28 | 21 |
</dd> |
29 | 22 |
|
30 | 23 |
<dt> |
31 |
- <div class="n-alert hide" id="contents_error"> |
|
32 |
- <div class="n-inner"> |
|
33 |
- <span class="msg">내용</span> |
|
34 |
- <a href="#!/close" class="ico btn-delete"></a> |
|
35 |
- </div> |
|
36 |
- </div> |
|
37 |
- <label for="contents">내용을 입력해주세요</label> |
|
24 |
+ <label for="contents">@Messages("milestone.form.content")</label> |
|
38 | 25 |
</dt> |
39 | 26 |
<dd> |
40 | 27 |
@helper.input(form("contents")){(id, name, value, args) => |
... | ... | @@ -44,25 +31,19 @@ |
44 | 31 |
</dl> |
45 | 32 |
|
46 | 33 |
<div class="actions"> |
47 |
- <button type="submit" class="n-btn orange med btn-transparent save">SAVE</button> |
|
48 |
- <a href="@routes.MilestoneApp.manageMilestones(projectInst.owner, projectInst.name)" class="n-btn gray med">CANCEL</a> |
|
34 |
+ <button type="submit" class="nbtn orange medium">@Messages("button.save")</button> |
|
35 |
+ <a href="@routes.MilestoneApp.milestones(projectInst.owner, projectInst.name)" class="nbtn medium">@Messages("button.cancel")</a> |
|
49 | 36 |
</div> |
50 | 37 |
</div> |
51 | 38 |
|
52 | 39 |
<div class="inner right bubble-wrap dark-gray"> |
53 |
- <p>마일스톤 상태</p> |
|
40 |
+ <p>@Messages("milestone.form.state")</p> |
|
54 | 41 |
<div> |
55 | 42 |
<input type="radio" name="state" value="@State.OPEN" id="milestone-open" class="radio-btn" @if(form("state").value.equals(State.OPEN.name)) { checked="checked" }><label for="milestone-open" class="bold">Open</label> |
56 | 43 |
<input type="radio" name="state" value="@State.CLOSED" id="milestone-close" class="radio-btn" @if(form("state").value.equals(State.CLOSED.name)) { checked="checked" }><label for="milestone-close" class="bold">Closed</label> |
57 | 44 |
</div> |
58 | 45 |
<hr/> |
59 |
- <p>완료일을 선택하세요</p> |
|
60 |
- <div class="n-alert hidden"> |
|
61 |
- <div class="n-inner"> |
|
62 |
- <span class="msg">완료일을 입력해주세요.</span> |
|
63 |
- <a href="#!/close" class="ico btn-delete"></a> |
|
64 |
- </div> |
|
65 |
- </div> |
|
46 |
+ <p>@Messages("milestone.form.dueDate")</p> |
|
66 | 47 |
<label for="dueDate"> |
67 | 48 |
@helper.input(form("dueDate")){(id, name, value, args) => |
68 | 49 |
<input type="text" name="@name" id="@id" class="validate due-date" value="@value"> |
--- app/views/milestone/list.scala.html
+++ app/views/milestone/list.scala.html
... | ... | @@ -125,8 +125,8 @@ |
125 | 125 |
</div> |
126 | 126 |
|
127 | 127 |
<div class="actrow"> |
128 |
- <a href="@routes.MilestoneApp.editMilestoneForm(projectInst.owner, projectInst.name, milestone.id)" class="nbtn medium white">@Messages("button.edit")</a> |
|
129 |
- <a href="@routes.MilestoneApp.editMilestoneForm(projectInst.owner, projectInst.name, milestone.id)" class="nbtn medium black">@Messages("button.delete")</a> |
|
128 |
+ <a href="@routes.MilestoneApp.editMilestoneForm(projectInst.owner, projectInst.name, milestone.id)" class="nbtn medium black"><i class="ico ico-delete-small"></i>@Messages("button.delete")</a><!-- |
|
129 |
+ --><a href="@routes.MilestoneApp.editMilestoneForm(projectInst.owner, projectInst.name, milestone.id)" class="nbtn medium white"><i class="ico ico-edit-small"></i>@Messages("button.edit")</a> |
|
130 | 130 |
</div> |
131 | 131 |
</div> |
132 | 132 |
<div class="completion-rate @if(milestone.getCompletionRate == 100){done}"><!-- |
--- app/views/milestone/manage.scala.html
... | ... | @@ -1,78 +0,0 @@ |
1 | -@(message: String, milestones: List[models.Milestone], projectInst: Project, mCondition: MilestoneApp.MilestoneCondition) | |
2 | -@import scala.collection.immutable._ | |
3 | -@import utils.TemplateHelper._ | |
4 | -@import models.enumeration._ | |
5 | - | |
6 | -@stateMessage(state: State) = @{ Messages("milestone.state." + state.name.toLowerCase) } | |
7 | -@sortMark(_sort: String) = @{ | |
8 | - /* TODO It will be chnaged. */ | |
9 | - if(mCondition.sort.equals(_sort)) { | |
10 | - if(mCondition.direction.equals("desc")){ | |
11 | - "▼" | |
12 | - } else { | |
13 | - "▲" | |
14 | - } | |
15 | - } | |
16 | -} | |
17 | -@makeSortLink(_sort:String) = @{ | |
18 | - var _direction = "asc"; | |
19 | - if(mCondition.sort.equals(_sort)) { | |
20 | - if(_direction.equals(mCondition.direction)) { | |
21 | - _direction = "desc" | |
22 | - } | |
23 | - } | |
24 | - buildQueryString(routes.MilestoneApp.manageMilestones(projectInst.owner, projectInst.name), | |
25 | - Map("sort"-> _sort, "direction"-> _direction) | |
26 | - ) | |
27 | -} | |
28 | - | |
29 | -@project.projectMngMain(message, projectInst) { | |
30 | - @prjmenu(projectInst, utils.MenuType.MILESTONE, "") | |
31 | - | |
32 | - @if(milestones == null || milestones.isEmpty()){ | |
33 | - | |
34 | - <div class="error-wrap"> | |
35 | - <i class="ico ico-err1"></i> | |
36 | - <p>@Messages("milestone.is.empty")</p> | |
37 | - </div> | |
38 | - | |
39 | - } else { | |
40 | - | |
41 | - <div class="tab-wrap"> | |
42 | - <div class="pull-right btns"> | |
43 | - <a href="@routes.MilestoneApp.manageMilestones(projectInst.owner, projectInst.name)" class="n-btn small gray">@Messages("milestone.menu.manage")</a> | |
44 | - <a href="@routes.MilestoneApp.newMilestoneForm(projectInst.owner, projectInst.name)" class="n-btn small orange">@Messages("milestone.menu.new")</a> | |
45 | - </div> | |
46 | - | |
47 | - <ul class="nav nav-tabs hive-tabs"> | |
48 | - <li class="active"><a>@Messages("milestone.state.all")</a> | |
49 | - </ul> | |
50 | - </div> | |
51 | - | |
52 | - <table class="table table-hover table-striped"> | |
53 | - <thead style="font-weight:bold;"> | |
54 | - <tr> | |
55 | - <td><a href="@makeSortLink("title")">@Messages("label.title") @sortMark("title")</a></td> | |
56 | - <td>@Messages("label.contents")</td> | |
57 | - <td><a href="@makeSortLink("dueDate")">@Messages("label.dueDate") @sortMark("dueDate")</a></td> | |
58 | - <td><a href="@makeSortLink("state")">@Messages("label.state") @sortMark("state")</a></td> | |
59 | - <td> </td> | |
60 | - </tr> | |
61 | - </thead> | |
62 | - <tbody> | |
63 | - @for(milestone <- milestones){ | |
64 | - <tr> | |
65 | - <td> | |
66 | - <a href="@routes.MilestoneApp.editMilestoneForm(projectInst.owner, projectInst.name, milestone.id)">@milestone.title</a> | |
67 | - </td> | |
68 | - <td>@milestone.contents</td> | |
69 | - <td>@milestone.getDueDateString</td> | |
70 | - <td>@stateMessage(milestone.state)</td> | |
71 | - <td><a href="@routes.MilestoneApp.deleteMilestone(projectInst.owner, projectInst.name, milestone.id)">@Messages("button.delete")</a></td> | |
72 | - </tr> | |
73 | - } | |
74 | - </tbody> | |
75 | - </table> | |
76 | - | |
77 | - } | |
78 | -} |
--- app/views/project/newProject.scala.html
+++ app/views/project/newProject.scala.html
... | ... | @@ -84,8 +84,8 @@ |
84 | 84 |
**@ |
85 | 85 |
</ul> |
86 | 86 |
<div class="actions"> |
87 |
- <button class="btn-transparent n-btn orange med">@Messages("project.create")</button> |
|
88 |
- <a href="/" class="n-btn gray med cancel">@Messages("button.cancel")</a> |
|
87 |
+ <button class="nbtn orange medium">@Messages("project.create")</button> |
|
88 |
+ <a href="/" class="nbtn medium black">@Messages("button.cancel")</a> |
|
89 | 89 |
</div> |
90 | 90 |
</form> |
91 | 91 |
</div> |
--- app/views/project/projectDelete.scala.html
+++ app/views/project/projectDelete.scala.html
... | ... | @@ -17,12 +17,12 @@ |
17 | 17 |
</div> |
18 | 18 |
</div> |
19 | 19 |
<div class="box-wrap bottom"> |
20 |
- <a id="deletion" data-toggle="modal" href="#alertDeletion" class="n-btn orange med"><!-- |
|
20 |
+ <a id="deletion" data-toggle="modal" href="#alertDeletion" class="nbtn medium orange"><!-- |
|
21 | 21 |
--><i class="ico ico-delete-small"></i>@Messages("project.delete.this")</a> |
22 | 22 |
</div> |
23 | 23 |
|
24 | 24 |
|
25 |
- <div class="modal hide" id="alertDeletion"> |
|
25 |
+ <div id="alertDeletion" class="modal hide"> |
|
26 | 26 |
<div class="modal-header"> |
27 | 27 |
<button type="button" class="close" data-dismiss="modal">×</button> |
28 | 28 |
<h3>@Messages("project.delete.requestion")</h3> |
--- app/views/site/lostPassword.scala.html
+++ app/views/site/lostPassword.scala.html
... | ... | @@ -2,45 +2,45 @@ |
2 | 2 |
|
3 | 3 |
@home(message, utils.MenuType.NONE) { |
4 | 4 |
|
5 |
-<form method="POST" action="@routes.PasswordResetApp.requestResetPasswordEmail()" id="mailForm" class="span7 form-horizontal"> |
|
6 |
- <div class="page-header control-group controls"> |
|
7 |
- <h3>@Messages(message)</h3> |
|
8 |
- </div> |
|
5 |
+<form id="mailForm" method="post" action="@routes.PasswordResetApp.requestResetPasswordEmail()" class="span7 form-horizontal"> |
|
6 |
+ <div class="page-header control-group controls"> |
|
7 |
+ <h3>@Messages(message)</h3> |
|
8 |
+ </div> |
|
9 | 9 |
|
10 | 10 |
@if(isSent) { |
11 |
- <div class="control-group controls"> |
|
12 |
- @Messages("mail.sended") |
|
13 |
- </div> |
|
11 |
+ <div class="control-group controls"> |
|
12 |
+ @Messages("mail.sended") |
|
13 |
+ </div> |
|
14 | 14 |
} |
15 | 15 |
@if(errorMessage) { |
16 |
- <div class="control-group controls"> |
|
17 |
- @Messages("mail.fail")<br/> |
|
18 |
- @Html(Messages(errorMessage)) |
|
19 |
- </div> |
|
16 |
+ <div class="control-group controls"> |
|
17 |
+ @Messages("mail.fail")<br/> |
|
18 |
+ @Html(Messages(errorMessage)) |
|
19 |
+ </div> |
|
20 | 20 |
} |
21 |
- <div class="control-group"> |
|
22 |
- <label name="from" class="control-label">@Messages("user.loginId")</label> |
|
23 |
- <div class="controls"> |
|
24 |
- <div class="input-prepend"> |
|
25 |
- <span class="add-on"><i class="icon-user"></i></span> |
|
26 |
- <input type="text" name="loginId" required="" placeholder="@Messages("user.yourLoginId")"> |
|
27 |
- </div> |
|
28 |
- </div> |
|
29 |
- </div> |
|
30 |
- <div class="control-group"> |
|
31 |
- <label name="to" class="control-label">@Messages("user.email")</label> |
|
32 |
- <div class="controls"> |
|
33 |
- <div class="input-prepend"> |
|
34 |
- <span class="add-on"><i class="icon-envelope"></i></span> |
|
35 |
- <input type="text" name="emailAddress" required="" placeholder="@Messages("user.yourEmail")"> |
|
36 |
- </div> |
|
37 |
- </div> |
|
38 |
- </div> |
|
39 |
- <div class="controls"> |
|
40 |
- <button type="submit" class="btn-transparent n-btn orange med"> |
|
41 |
- <strong>@Messages("button.confirm")</strong> |
|
42 |
- </button> |
|
43 |
- </div> |
|
21 |
+ <div class="control-group"> |
|
22 |
+ <label name="from" class="control-label">@Messages("user.loginId")</label> |
|
23 |
+ <div class="controls"> |
|
24 |
+ <div class="input-prepend"> |
|
25 |
+ <span class="add-on"><i class="icon-user"></i></span> |
|
26 |
+ <input type="text" name="loginId" required="required" placeholder="@Messages("user.yourLoginId")"> |
|
27 |
+ </div> |
|
28 |
+ </div> |
|
29 |
+ </div> |
|
30 |
+ |
|
31 |
+ <div class="control-group"> |
|
32 |
+ <label name="to" class="control-label">@Messages("user.email")</label> |
|
33 |
+ <div class="controls"> |
|
34 |
+ <div class="input-prepend"> |
|
35 |
+ <span class="add-on"><i class="icon-envelope"></i></span> |
|
36 |
+ <input type="text" name="emailAddress" required="" placeholder="@Messages("user.yourEmail")"> |
|
37 |
+ </div> |
|
38 |
+ </div> |
|
39 |
+ </div> |
|
40 |
+ |
|
41 |
+ <div class="controls"> |
|
42 |
+ <button type="submit" class="nbtn medium orange"><strong>@Messages("button.confirm")</strong></button> |
|
43 |
+ </div> |
|
44 | 44 |
</form> |
45 | 45 |
|
46 | 46 |
} |
--- app/views/user/resetPassword.scala.html
+++ app/views/user/resetPassword.scala.html
... | ... | @@ -4,29 +4,29 @@ |
4 | 4 |
@home(message, utils.MenuType.NONE) { |
5 | 5 |
<div class="page full"> |
6 | 6 |
<div class="center-wrap tag-line-wrap signup"> |
7 |
- <h1 class="title"><span class="high-light">Password Reset </span></h1> |
|
7 |
+ <h1 class="title"><span class="high-light">Reset Password</span></h1> |
|
8 | 8 |
</div> |
9 | 9 |
<div class="signup-form-wrap frm-wrap"> |
10 |
- <form action="@routes.PasswordResetApp.resetPassword()" method="POST" name="passwordReset"> |
|
10 |
+ <form action="@routes.PasswordResetApp.resetPassword()" method="post" name="passwordReset"> |
|
11 | 11 |
<dl> |
12 | 12 |
<dt> |
13 | 13 |
<label for="password">@Messages("user.password")</label> |
14 | 14 |
</dt> |
15 | 15 |
<dd> |
16 |
- <input type="password" class="text password" id="password" placeholder="" autocomplete="off" name="password"> |
|
16 |
+ <input id="password" type="password" name="password" class="text password" placeholder="" autocomplete="off"> |
|
17 | 17 |
</dd> |
18 | 18 |
|
19 | 19 |
<dt> |
20 | 20 |
<label for="retypedPassword">@Messages("validation.retypePassword")</label> |
21 | 21 |
</dt> |
22 | 22 |
<dd> |
23 |
- <input type="password" class="text password" id="retypedPassword" placeholder="" autocomplete="off" name="retypedPassword"> |
|
23 |
+ <input id="retypedPassword" type="password" name="retypedPassword" class="text password" placeholder="" autocomplete="off" > |
|
24 | 24 |
</dd> |
25 | 25 |
</dl> |
26 | 26 |
|
27 | 27 |
<input type="hidden" name="hashString" value="@hashString"> |
28 | 28 |
<div class="btns-row"> |
29 |
- <button type="submit" class="n-btn orange sign-up">@Messages("button.confirm")</button> |
|
29 |
+ <button type="submit" class="nbtn medium orange">@Messages("button.confirm")</button> |
|
30 | 30 |
</div> |
31 | 31 |
</form> |
32 | 32 |
</div> |
--- app/views/user/signup.scala.html
+++ app/views/user/signup.scala.html
... | ... | @@ -2,66 +2,68 @@ |
2 | 2 |
@import utils.TemplateHelper._ |
3 | 3 |
|
4 | 4 |
@home(message, utils.MenuType.NONE) { |
5 |
- @** Messages("title.signup") **@ |
|
6 |
- <div class="page full"> |
|
7 |
- <div class="center-wrap tag-line-wrap signup"> |
|
8 |
- <h1 class="title"><span class="high-light">Sign Up for</span> @Messages("hive.name")</h1> |
|
9 |
- <p class="tag-line">Software development platform for Open Source project.</p> |
|
10 |
- </div> |
|
11 |
- |
|
12 |
- <div class="signup-form-wrap frm-wrap"> |
|
13 |
- <form action="@routes.UserApp.newUser()" method="POST" name="signup"> |
|
14 |
- <dl> |
|
15 |
- <dt> |
|
16 |
- <label for="loginId">@Messages("user.signupId")</label> |
|
17 |
- </dt> |
|
18 |
- <dd> |
|
19 |
- <input type="text" class="text password" id="loginId" placeholder="" autocomplete="off" name="loginId"> |
|
20 |
- </dd> |
|
5 |
+<div class="page full"> |
|
6 |
+ <div class="center-wrap tag-line-wrap signup"> |
|
7 |
+ <h1 class="title"> |
|
8 |
+ <span class="high-light">Sign Up for</span> @Messages("hive.name") |
|
9 |
+ </h1> |
|
10 |
+ <p class="tag-line">Software development platform for Open Source |
|
11 |
+ project.</p> |
|
12 |
+ </div> |
|
21 | 13 |
|
22 |
- <dt> |
|
23 |
- <label for="uname">@Messages("user.name")</label> |
|
24 |
- </dt> |
|
25 |
- <dd> |
|
26 |
- <input type="text" class="text password" id="uname" placeholder="" autocomplete="off" name="name"> |
|
27 |
- </dd> |
|
28 |
- |
|
29 |
- <dt> |
|
30 |
- <label for="email">@Messages("user.email")</label> |
|
31 |
- </dt> |
|
32 |
- <dd> |
|
33 |
- <input type="text" class="text password" id="email" placeholder="" autocomplete="off" name="email"> |
|
34 |
- </dd> |
|
35 |
- |
|
36 |
- <dt> |
|
37 |
- <label for="password">@Messages("user.password")</label> |
|
38 |
- </dt> |
|
39 |
- <dd> |
|
40 |
- <input type="password" class="text password" id="password" placeholder="" autocomplete="off" name="password"> |
|
41 |
- </dd> |
|
42 |
- |
|
43 |
- <dt> |
|
44 |
- <label for="retypedPassword">@Messages("validation.retypePassword")</label> |
|
45 |
- </dt> |
|
46 |
- <dd> |
|
47 |
- <input type="password" class="text password" id="retypedPassword" placeholder="" autocomplete="off" name="retypedPassword"> |
|
48 |
- </dd> |
|
49 |
- </dl> |
|
14 |
+ <div class="signup-form-wrap frm-wrap"> |
|
15 |
+ <form action="@routes.UserApp.newUser()" method="post" name="signup"> |
|
16 |
+ <dl> |
|
17 |
+ <dt> |
|
18 |
+ <label for="loginId">@Messages("user.signupId")</label> |
|
19 |
+ </dt> |
|
20 |
+ <dd> |
|
21 |
+ <input id="loginId" type="text" name="loginId" class="text password" placeholder="" autocomplete="off"> |
|
22 |
+ </dd> |
|
50 | 23 |
|
51 |
- <div class="act-row"> |
|
52 |
- @Messages("user.isAlreadySignupUser") <a href="@routes.UserApp.loginForm()" class="go-login">@Messages("title.login")</a> |
|
53 |
- </div> |
|
54 |
- <div class="btns-row"> |
|
55 |
- <button type="submit" class="n-btn orange sign-up">@Messages("user.signupBtn")</button> |
|
56 |
- </div> |
|
57 |
- </form> |
|
58 |
- </div> |
|
59 |
- </div> |
|
60 |
- |
|
61 |
- <script type="text/javascript" src="@getJSLink("lib/validate")"></script> |
|
62 |
- <script type="text/javascript"> |
|
63 |
- $(document).ready(function(){ |
|
24 |
+ <dt> |
|
25 |
+ <label for="uname">@Messages("user.name")</label> |
|
26 |
+ </dt> |
|
27 |
+ <dd> |
|
28 |
+ <input id="uname" type="text" name="name" class="text password" placeholder="" autocomplete="off"> |
|
29 |
+ </dd> |
|
30 |
+ |
|
31 |
+ <dt> |
|
32 |
+ <label for="email">@Messages("user.email")</label> |
|
33 |
+ </dt> |
|
34 |
+ <dd> |
|
35 |
+ <input id="email" type="text" name="email" class="text password" placeholder="" autocomplete="off"> |
|
36 |
+ </dd> |
|
37 |
+ |
|
38 |
+ <dt> |
|
39 |
+ <label for="password">@Messages("user.password")</label> |
|
40 |
+ </dt> |
|
41 |
+ <dd> |
|
42 |
+ <input id="password" type="password" name="password" class="text password" placeholder="" autocomplete="off"> |
|
43 |
+ </dd> |
|
44 |
+ |
|
45 |
+ <dt> |
|
46 |
+ <label for="retypedPassword">@Messages("validation.retypePassword")</label> |
|
47 |
+ </dt> |
|
48 |
+ <dd> |
|
49 |
+ <input id="retypedPassword" type="password" name="retypedPassword" class="text password" placeholder="" autocomplete="off"> |
|
50 |
+ </dd> |
|
51 |
+ </dl> |
|
52 |
+ |
|
53 |
+ <div class="act-row"> |
|
54 |
+ @Messages("user.isAlreadySignupUser") <a href="@routes.UserApp.loginForm()" class="go-login">@Messages("title.login")</a> |
|
55 |
+ </div> |
|
56 |
+ <div class="btns-row"> |
|
57 |
+ <button type="submit" class="nbtn medium orange">@Messages("user.signupBtn")</button> |
|
58 |
+ </div> |
|
59 |
+ </form> |
|
60 |
+ </div> |
|
61 |
+</div> |
|
62 |
+ |
|
63 |
+<script type="text/javascript" src="@getJSLink("lib/validate")"></script> |
|
64 |
+<script type="text/javascript"> |
|
65 |
+ $(document).ready(function(){ |
|
64 | 66 |
$hive.loadModule("user.SignUp"); |
65 |
- }); |
|
66 |
- </script> |
|
67 |
+ }); |
|
68 |
+</script> |
|
67 | 69 |
} |
--- conf/messages.en
+++ conf/messages.en
... | ... | @@ -11,14 +11,14 @@ |
11 | 11 |
title.newProject = Create a New Project |
12 | 12 |
title.projectSetting = Project Setting |
13 | 13 |
title.memberList = Member List |
14 |
-title.post.notExistingPage = Not Existing Page |
|
14 |
+title.post.notExistingPage = Page not found |
|
15 | 15 |
title.siteSetting = Site Setting |
16 | 16 |
title.site.userEdit = Edit a User |
17 | 17 |
title.login = Log in |
18 | 18 |
title.logout = Log out |
19 | 19 |
title.signup = Sign Up |
20 | 20 |
title.forgotpassword = Forgot password? |
21 |
-title.rememberMe = REMEMBER ME |
|
21 |
+title.rememberMe = Remember Me |
|
22 | 22 |
title.commitHistory = Commit History |
23 | 23 |
title.mailSetting = Mail Configuration |
24 | 24 |
title.sendMail = Send Mail |
... | ... | @@ -30,9 +30,6 @@ |
30 | 30 |
hive.name = HIVE |
31 | 31 |
hive.title = Collaborative Software Development Platform |
32 | 32 |
hive.description = Make it better and simpler! |
33 |
- |
|
34 |
-orderby.name = Name |
|
35 |
-orderby.recent = Recent |
|
36 | 33 |
|
37 | 34 |
menu.home = Home |
38 | 35 |
menu.board = Board |
... | ... | @@ -57,7 +54,7 @@ |
57 | 54 |
label.customColor = Custom Color |
58 | 55 |
label.category = Category |
59 | 56 |
label.name = Name |
60 |
-label.add = Add |
|
57 |
+label.add = Add Label |
|
61 | 58 |
label.manage = Manage Label |
62 | 59 |
label.confirm.delete = Are you Sure? |
63 | 60 |
label.select = Select Label |
... | ... | @@ -70,6 +67,8 @@ |
70 | 67 |
order.comments = Comments |
71 | 68 |
order.completionRate = Completion Rate |
72 | 69 |
order.dueDate = Due Date |
70 |
+order.name = Name |
|
71 |
+order.recent = Recent |
|
73 | 72 |
|
74 | 73 |
button.save = Save |
75 | 74 |
button.confirm = Confirm |
... | ... | @@ -109,8 +108,6 @@ |
109 | 108 |
milestone.is.empty = There is no milestone. |
110 | 109 |
milestone.menu.manage = Manage |
111 | 110 |
milestone.menu.new = New |
112 |
-sort.by.dueDate = Due Date |
|
113 |
-sort.by.completionRate = Completeness |
|
114 | 111 |
milestone.title.duplicated = Title is duplicated. |
115 | 112 |
milestone.form.title = Title |
116 | 113 |
milestone.form.content = Descriptions |
... | ... | @@ -367,11 +364,11 @@ |
367 | 364 |
#Search |
368 | 365 |
label.writer = Writer |
369 | 366 |
post.is.empty = There is no post. |
370 |
-title.contentSearchResult = Conetnet Search Result |
|
367 |
+title.contentSearchResult = Content Search Result |
|
371 | 368 |
|
372 |
-#Vaildation |
|
373 |
-error.required = It is required. |
|
374 |
-error.wrong.format = It is wrong format. |
|
369 |
+#Validation |
|
370 |
+error.required = Mandatory field is empty |
|
371 |
+error.wrong.format = Wrong format |
|
375 | 372 |
|
376 | 373 |
#Code |
377 | 374 |
code.files = Files |
... | ... | @@ -438,4 +435,4 @@ |
438 | 435 |
#Admin |
439 | 436 |
admin.resetPasswordEmail.title = [HIVE] Password reset mail request |
440 | 437 |
admin.resetPasswordEmail.mailcontents = copy the below url and paste it to browser url bar |
441 |
-admin.resetPasswordEmail.invalidRequest = Invalid Password Reset Request |
|
438 |
+admin.resetPasswordEmail.invalidRequest = Invalid Password Reset Request(No newline at end of file) |
--- conf/messages.ko
+++ conf/messages.ko
... | ... | @@ -1,19 +1,19 @@ |
1 | 1 |
# Messages |
2 | 2 |
title.newIssue = 새 이슈 |
3 | 3 |
title.issueList = 이슈 목록 |
4 |
-title.issueDetail = 이슈 상세조회 |
|
4 |
+title.issueDetail = 이슈 상세보기 |
|
5 | 5 |
title.editIssue = 이슈 수정 |
6 | 6 |
title.newMilestone = 새 마일스톤 |
7 |
-title.milestoneList = 마일스톤 리스트 |
|
7 |
+title.milestoneList = 마일스톤 목록 |
|
8 | 8 |
title.editMilestone = 마일스톤 수정 |
9 | 9 |
title.milestoneManage = 마일스톤 관리 |
10 | 10 |
title.projectHome = Overview |
11 | 11 |
title.newProject = 새 프로젝트 시작 |
12 | 12 |
title.projectSetting = 프로젝트 설정 |
13 |
-title.memberList = 멤버 리스트 |
|
13 |
+title.memberList = 멤버 목록 |
|
14 | 14 |
title.post.notExistingPage = 존재하지 않는 게시물 |
15 | 15 |
title.siteSetting = 사이트 설정 |
16 |
-title.site.userEdit = 유저 설정 |
|
16 |
+title.site.userEdit = 사용자 설정 |
|
17 | 17 |
title.login = 로그인 |
18 | 18 |
title.logout = 로그아웃 |
19 | 19 |
title.signup = 회원 가입 |
... | ... | @@ -26,14 +26,11 @@ |
26 | 26 |
title.projectList = 프로젝트 목록 |
27 | 27 |
title.help = 도움말 |
28 | 28 |
title.search = 검색 |
29 |
-title.resetPassword = 패스워드 재설정 |
|
29 |
+title.resetPassword = 비밀번호 재설정 |
|
30 | 30 |
|
31 | 31 |
hive.name = HIVE |
32 | 32 |
hive.title = 협업개발 플랫폼 |
33 | 33 |
hive.description = Make it better and simpler! |
34 |
- |
|
35 |
-orderby.name = 이름순 |
|
36 |
-orderby.recent = 생성일자순 |
|
37 | 34 |
|
38 | 35 |
menu.home = 홈 |
39 | 36 |
menu.board = 게시판 |
... | ... | @@ -59,8 +56,8 @@ |
59 | 56 |
label.customColor = 색 |
60 | 57 |
label.category = 분류 |
61 | 58 |
label.name = 이름 |
62 |
-label.add = 추가 |
|
63 |
-label.manage = 라벨관리 |
|
59 |
+label.add = 라벨 추가 |
|
60 |
+label.manage = 라벨 관리 |
|
64 | 61 |
label.confirm.delete = 라벨을 삭제하면 이슈에 지정한 라벨도 함께 제거됩니다. 정말 삭제하시겠습니까? |
65 | 62 |
label.select = 라벨 선택 |
66 | 63 |
label.error.duplicated = 라벨 생성에 실패했습니다.\n이미 동일한 라벨이 존재할지도 모릅니다. |
... | ... | @@ -72,6 +69,8 @@ |
72 | 69 |
order.comments = 댓글순 |
73 | 70 |
order.completionRate = 완료율순 |
74 | 71 |
order.dueDate = 완료일순 |
72 |
+order.name = 이름순 |
|
73 |
+order.recent = 생성일자순 |
|
75 | 74 |
|
76 | 75 |
button.save = 저장 |
77 | 76 |
button.confirm = 확인 |
... | ... | @@ -112,8 +111,6 @@ |
112 | 111 |
milestone.menu.manage = 마일스톤 관리 |
113 | 112 |
milestone.menu.new = 새 마일스톤 |
114 | 113 |
milestone.none = 없음 |
115 |
-sort.by.dueDate = 완료일 순 |
|
116 |
-sort.by.completionRate = 완료율 순 |
|
117 | 114 |
milestone.title.duplicated = 마일스톤 제목이 다른것과 중복 됩니다. 다른 제목을 사용하세요. |
118 | 115 |
milestone.form.title = 마일스톤 제목 |
119 | 116 |
milestone.form.content = 내용을 입력해주세요 |
... | ... | @@ -257,9 +254,9 @@ |
257 | 254 |
project.members.addMember = 새로운 멤버의 아이디를 입력하세요 |
258 | 255 |
project.member.isManager = 프로젝트 관리자 권한이 필요합니다 |
259 | 256 |
project.member.alreadyMember = 이미 프로젝트에 가입되어 있는 멤버입니다. |
260 |
-project.member.deleteConfirm = 정말로 해당 유저를 프로젝트에서 탈퇴시키겠습니까? |
|
261 |
-project.member.delete = 프로젝트 유저 삭제 |
|
262 |
-project.member.notExist = 존재하지 않는 유저입니다. |
|
257 |
+project.member.deleteConfirm = 정말로 해당 사용자를 프로젝트에서 탈퇴시키겠습니까? |
|
258 |
+project.member.delete = 프로젝트 사용자 삭제 |
|
259 |
+project.member.notExist = 존재하지 않는 사용자입니다. |
|
263 | 260 |
project.member.ownerCannotLeave = 프로젝트 소유자는 탈퇴할 수 없습니다. |
264 | 261 |
project.member.ownerMustBeAManager = 프로젝트 소유자는 관리 권한을 가져야 합니다. |
265 | 262 |
project.sidebar = 프로젝트 설정 |
... | ... | @@ -295,7 +292,7 @@ |
295 | 292 |
#Site |
296 | 293 |
site.sidebar = 사이트 관리 |
297 | 294 |
site.sidebar.setting = 설정 |
298 |
-site.sidebar.userList = 유저 |
|
295 |
+site.sidebar.userList = 사용자 |
|
299 | 296 |
site.sidebar.postList = 게시물 |
300 | 297 |
site.sidebar.issueList = 이슈 |
301 | 298 |
site.sidebar.projectList = 프로젝트 설정 |
... | ... | @@ -306,12 +303,12 @@ |
306 | 303 |
site.userList.search = 찾으려는 사용자의 ID를 입력하세요 |
307 | 304 |
site.userList.isActive = 활성 상태 |
308 | 305 |
site.userList.deleteAlert = 프로젝트의 유일한 관리자이므로 사이트에서 삭제할 수 없습니다. |
309 |
-site.user.delete = 유저 삭제 |
|
310 |
-site.user.deleteConfirm = 정말로 해당 유저를 사이트에서 탈퇴시키겠습니까? |
|
306 |
+site.user.delete = 사용자 삭제 |
|
307 |
+site.user.deleteConfirm = 정말로 해당 사용자를 사이트에서 탈퇴시키겠습니까? |
|
311 | 308 |
site.project.delete = 프로젝트 삭제 |
312 | 309 |
site.project.deleteConfirm = 정말로 해당 프로젝트를 사이트에서 삭제하겠습니까? |
313 |
-site.userlist.unlocked = 활성화된 유저 목록 |
|
314 |
-site.userlist.locked = 계정이 잠긴 유저 목록 |
|
310 |
+site.userlist.unlocked = 활성화된 사용자 목록 |
|
311 |
+site.userlist.locked = 계정이 잠긴 사용자 목록 |
|
315 | 312 |
site.massMail.toAll = 모두에게 |
316 | 313 |
site.massMail.toProjects = 특정 프로젝트의 멤버들에게 |
317 | 314 |
site.massMail.loading = 불러오는중... |
... | ... | @@ -338,10 +335,10 @@ |
338 | 335 |
user.signupId = 아이디 |
339 | 336 |
user.signupBtn = 참여하기 |
340 | 337 |
user.loginWithNewPassword = 새로 설정한 비밀번호로 로그인 하세요 |
341 |
-user.notExists.name = 존재하지 않는 유저입니다. |
|
338 |
+user.notExists.name = 존재하지 않는 사용자입니다. |
|
342 | 339 |
user.locked = 잠긴 사용자 계정입니다. |
343 | 340 |
user.isLocked = 잠김여부 |
344 |
-user.signup.requested = 하이브 가입이 요청되었습니다. 사이트 관리자가 검토/승인 후 사용가능합니다. 감사합니다. |
|
341 |
+user.signup.requested = HIVE 가입이 요청되었습니다. 사이트 관리자가 검토/승인 후 사용가능합니다. 감사합니다. |
|
345 | 342 |
|
346 | 343 |
#Role |
347 | 344 |
role.manager = 관리자 |
... | ... | @@ -366,7 +363,7 @@ |
366 | 363 |
board.post.notExist = 존재하지 않는 게시물입니다. |
367 | 364 |
board.post.new = 새 게시물 |
368 | 365 |
board.post.modify = 게시물 수정 |
369 |
-board.comment.empty = 댓글내용은 반드시 쓰셔야 합니다. |
|
366 |
+board.comment.empty = 댓글 내용은 반드시 입력해야 합니다. |
|
370 | 367 |
board.notAuthor = 글쓴이가 아닙니다. |
371 | 368 |
|
372 | 369 |
#Search |
... | ... | @@ -442,6 +439,6 @@ |
442 | 439 |
userinfo.starredProjects = 관심 프로젝트 |
443 | 440 |
|
444 | 441 |
#Admin |
445 |
-admin.resetPasswordEmail.title = [HIVE] 패스워드 재 설정 |
|
442 |
+admin.resetPasswordEmail.title = [HIVE] 비밀번호 재 설정 |
|
446 | 443 |
admin.resetPasswordEmail.mailcontents = 아래 URL을 브라우저 주소창에 붙여 넣으세요 |
447 |
-admin.resetPasswordEmail.invalidRequest = 잘못된 패스워드 재 설정 요청입니다. |
|
444 |
+admin.resetPasswordEmail.invalidRequest = 잘못된 비밀번호 재 설정 요청입니다. |
--- conf/routes
+++ conf/routes
... | ... | @@ -93,7 +93,7 @@ |
93 | 93 |
|
94 | 94 |
# Milestones |
95 | 95 |
GET /:user/:project/milestones controllers.MilestoneApp.milestones(user, project) |
96 |
-GET /:user/:project/milestones/manage controllers.MilestoneApp.manageMilestones(user, project) |
|
96 |
+#GET /:user/:project/milestones/manage controllers.MilestoneApp.manageMilestones(user, project) |
|
97 | 97 |
GET /:user/:project/newMilestoneForm controllers.MilestoneApp.newMilestoneForm(user, project) |
98 | 98 |
POST /:user/:project/milestones controllers.MilestoneApp.newMilestone(user, project) |
99 | 99 |
GET /:user/:project/milestone/:id/editform controllers.MilestoneApp.editMilestoneForm(user, project, id: Long) |
--- public/stylesheets/pikaday.css
+++ public/stylesheets/pikaday.css
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 |
*/ |
7 | 7 |
|
8 | 8 |
.pika-single { |
9 |
- z-index: 9999; |
|
9 |
+ z-index: 9;/*999;*/ |
|
10 | 10 |
display: block; |
11 | 11 |
position: relative; |
12 | 12 |
width: 240px; |
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?