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

make filter css and displaying condition to identically. board list CSS has enhanced.
@15a6f8b1f9c124ecbd11e42bda36dd3cbf22ac63
--- app/assets/stylesheets/less/_page.less
+++ app/assets/stylesheets/less/_page.less
... | ... | @@ -1694,12 +1694,12 @@ |
1694 | 1694 |
|
1695 | 1695 |
.milestone { |
1696 | 1696 |
border-bottom: 1px solid @gray-d4; |
1697 |
- padding: 15px 30px; |
|
1697 |
+ padding: 15px 0px; /* 15px 30px;*/ |
|
1698 | 1698 |
overflow: hidden; |
1699 | 1699 |
&:last-of-type { border-bottom:none; } |
1700 | 1700 |
|
1701 | 1701 |
.infos { |
1702 |
- width: 660px; |
|
1702 |
+ width: 700px; /*660px;*/ |
|
1703 | 1703 |
float: left; |
1704 | 1704 |
.contributors { |
1705 | 1705 |
margin: 0; |
... | ... | @@ -1717,33 +1717,36 @@ |
1717 | 1717 |
} |
1718 | 1718 |
.meta-info { |
1719 | 1719 |
margin:5px 0 10px; |
1720 |
- .sp { |
|
1721 |
- margin: 0 5px; |
|
1722 |
- color:#E4E4E4; |
|
1723 |
- } |
|
1724 |
- .due-date { |
|
1725 |
- color: #666; /*999;*/ |
|
1726 |
- } |
|
1720 |
+ .title { font-size:15px; font-weight:bold; } |
|
1721 |
+ .sp { margin: 0 5px; color:#E4E4E4; } |
|
1722 |
+ .due-date { color: #666; /*999;*/ } |
|
1727 | 1723 |
} |
1724 |
+ |
|
1728 | 1725 |
.progress-wrap { |
1729 | 1726 |
overflow: hidden; |
1730 | 1727 |
color: #999; |
1731 | 1728 |
font-size: 11px; |
1732 | 1729 |
} |
1730 |
+ |
|
1733 | 1731 |
.desc { |
1734 | 1732 |
font-size: 11px; |
1735 | 1733 |
margin-top: 15px; |
1736 | 1734 |
padding: 15px; |
1737 |
- .border-radius(2px); |
|
1738 | 1735 |
background-color: #EBEBEB; |
1739 | 1736 |
border-top:1px solid #D3D3D3; |
1737 |
+ .border-radius(2px); |
|
1738 |
+ } |
|
1739 |
+ |
|
1740 |
+ .actrow { |
|
1741 |
+ text-align:right; |
|
1742 |
+ padding-top:10px; |
|
1740 | 1743 |
} |
1741 | 1744 |
} |
1745 |
+ |
|
1742 | 1746 |
.completion-rate { |
1743 |
- margin-left: 700px;/*660px;*/ |
|
1747 |
+ margin-left: 730px;/*700px;*/ |
|
1744 | 1748 |
text-align: center; |
1745 | 1749 |
font-size: 56px; |
1746 |
- /*.helvetic-light;*/ |
|
1747 | 1750 |
line-height: 2.8; /*1.3;*/ |
1748 | 1751 |
letter-spacing: -5px; |
1749 | 1752 |
&.done { |
... | ... | @@ -1962,27 +1965,22 @@ |
1962 | 1965 |
} |
1963 | 1966 |
|
1964 | 1967 |
.board-list { |
1965 |
- margin: 0; |
|
1966 |
- padding: 0; |
|
1967 |
- list-style: none; |
|
1968 | 1968 |
.board { |
1969 | 1969 |
border-bottom: 1px solid @gray-d4; |
1970 | 1970 |
padding: 15px 20px; |
1971 |
+ |
|
1971 | 1972 |
> div { |
1972 | 1973 |
display: table-cell; |
1973 | 1974 |
vertical-align: top; |
1974 | 1975 |
} |
1975 |
- .num { |
|
1976 |
- width: 35px; |
|
1977 |
- color: #B2B2B2; |
|
1978 |
- } |
|
1976 |
+ .num { width: 35px; color: #B2B2B2; } |
|
1977 |
+ |
|
1979 | 1978 |
.attach-wrap { |
1980 | 1979 |
width: 35px; |
1981 | 1980 |
text-align: center; |
1982 |
- .ico { |
|
1983 |
- margin-top: 5px; |
|
1984 |
- } |
|
1981 |
+ .ico { margin-top: 5px; } |
|
1985 | 1982 |
} |
1983 |
+ |
|
1986 | 1984 |
.contents { |
1987 | 1985 |
width: 590px; |
1988 | 1986 |
padding-right: 90px; |
... | ... | @@ -1994,26 +1992,27 @@ |
1994 | 1992 |
line-height: 14px; |
1995 | 1993 |
font-size: 11px; |
1996 | 1994 |
color: #999; |
1997 |
- .author { |
|
1998 |
- color: #696969; |
|
1999 |
- } |
|
1995 |
+ .author { color: #696969; } |
|
2000 | 1996 |
} |
2001 | 1997 |
} |
1998 |
+ |
|
2002 | 1999 |
.right-panel { |
2003 | 2000 |
width: 90px; |
2004 | 2001 |
.comment-wrap { |
2005 | 2002 |
float: left; |
2006 | 2003 |
margin-top: 7px; |
2007 |
- .ico { |
|
2008 |
- vertical-align: bottom; |
|
2009 |
- margin-right: 5px; |
|
2010 |
- } |
|
2011 |
- .num { |
|
2012 |
- color: #4489A4; |
|
2013 |
- } |
|
2004 |
+ .ico { vertical-align: bottom; margin-right: 5px; } |
|
2005 |
+ .num { color: @blue; } |
|
2014 | 2006 |
} |
2015 | 2007 |
} |
2016 | 2008 |
} |
2009 |
+} |
|
2010 |
+ |
|
2011 |
+.notice-wrap { |
|
2012 |
+ margin-top:20px; |
|
2013 |
+ border:1px solid #eee; |
|
2014 |
+ |
|
2015 |
+ .board-list .board:last-of-type { border-bottom:none; } |
|
2017 | 2016 |
} |
2018 | 2017 |
|
2019 | 2018 |
.write-btn-wrap { |
... | ... | @@ -2031,6 +2030,7 @@ |
2031 | 2030 |
margin-right: 5px; |
2032 | 2031 |
} |
2033 | 2032 |
} |
2033 |
+/* |
|
2034 | 2034 |
.board-header{ |
2035 | 2035 |
padding: 15px 20px; |
2036 | 2036 |
border-top: 1px solid @gray-d4; |
... | ... | @@ -2066,7 +2066,7 @@ |
2066 | 2066 |
} |
2067 | 2067 |
} |
2068 | 2068 |
} |
2069 |
- |
|
2069 |
+*/ |
|
2070 | 2070 |
.board-body { |
2071 | 2071 |
padding: 20px; |
2072 | 2072 |
.author-info { |
--- app/views/board/postList.scala.html
+++ app/views/board/postList.scala.html
... | ... | @@ -6,134 +6,125 @@ |
6 | 6 |
|
7 | 7 |
@urlToList = {@routes.BoardApp.posts(project.owner, project.name, page.getPageIndex + 1)} |
8 | 8 |
|
9 |
-@** header(label:String, key:String) = { |
|
10 |
- <th> |
|
11 |
- <a key="@key" href="@routes.BoardApp.posts(project.owner, project.name)">@label</a> |
|
12 |
- @if(key == param.orderBy){ |
|
13 |
- @if(param.orderDir == "desc"){ |
|
14 |
- <i class="icon-chevron-down"></i> |
|
15 |
- } else { |
|
16 |
- <i class="icon-chevron-up"></i> |
|
17 |
- } |
|
18 |
- } |
|
19 |
- </th> |
|
9 |
+@makeFilterLink(fieldName:String, orderBy:String, orderDir:String, fieldText:String) = { |
|
10 |
+ @if(orderBy.equals(fieldName)) { |
|
11 |
+ <a href="@urlToList&orderBy=@fieldName&orderDir=@if(orderDir.equals("desc")){asc}else{desc}" class="filter active"><i class="ico btn-gray-arrow @if(orderDir.equals("desc")){ down }"></i>@fieldText</a> |
|
12 |
+ } else { |
|
13 |
+ <a href="@urlToList&orderBy=@fieldName&orderDir=asc" class="filter"><i class="ico btn-gray-arrow"></i>@fieldText</a> |
|
14 |
+ } |
|
20 | 15 |
} |
21 |
-**@ |
|
22 | 16 |
|
23 | 17 |
@main(title, project, utils.MenuType.BOARD) { |
24 | 18 |
<div class="page"> |
25 |
- @views.html.prjmenu(project, utils.MenuType.BOARD, "main-menu-only") |
|
19 |
+ @prjmenu(project, utils.MenuType.BOARD, "main-menu-only") |
|
26 | 20 |
|
27 |
- <div class="header-wrap"> |
|
28 |
- <div class="search-wrap board"> |
|
29 |
- <div class="inner"> |
|
30 |
- <form method="get" id="option_form"> |
|
31 |
- <input type="hidden" name="orderBy" value="@param.orderBy"> |
|
32 |
- <input type="hidden" name="orderDir" value="@param.orderDir"> |
|
33 |
- <input name="filter" class="text" type="text" placeholder="@Messages("project.searchPlaceholder")" value="@param.filter"><!-- |
|
34 |
- --><button type="submit" class="btn search-btn underConstruction">@Messages("post.menu.search")</button> |
|
35 |
- </form> |
|
36 |
- </div> |
|
37 |
- </div> |
|
38 |
- </div> |
|
21 |
+ <div class="header-wrap"> |
|
22 |
+ <div class="search-wrap board"> |
|
23 |
+ <div class="inner"> |
|
24 |
+ <form method="get" id="option_form"> |
|
25 |
+ <input type="hidden" name="orderBy" value="@param.orderBy"> |
|
26 |
+ <input type="hidden" name="orderDir" value="@param.orderDir"> |
|
27 |
+ <input name="filter" class="text" type="text" placeholder="@Messages("project.searchPlaceholder")" value="@param.filter"><!-- |
|
28 |
+ --><button type="submit" class="btn search-btn underConstruction">@Messages("post.menu.search")</button> |
|
29 |
+ </form> |
|
30 |
+ </div> |
|
31 |
+ </div> |
|
32 |
+ </div> |
|
39 | 33 |
|
40 |
- @if(notices != null && notices.size > 0) { |
|
41 |
- <hr> |
|
42 |
- <div class="well"> |
|
43 |
- <h4>@Messages("post.notice")</h4> |
|
44 |
- <ul class="board-list"> |
|
45 |
- @for(post <- notices) { |
|
46 |
- <li class="board"> |
|
47 |
- <div class="num"> <a href="@routes.BoardApp.post(project.owner, project.name, post.id)"> @post.getNumber </a> </div> |
|
48 |
- <div class="attach-wrap"> |
|
49 |
- @if(Attachment.findByContainer(post.asResource).size > 0) { |
|
50 |
- <i class="ico ico-clip"></i> |
|
51 |
- } |
|
52 |
- </div> |
|
53 |
- <div class="contents"> |
|
54 |
- <p class="title"> <a href="@routes.BoardApp.post(project.owner, project.name, post.id)"> @post.title </a> </p> |
|
55 |
- <p class="infos nm"> by <a href="@routes.UserApp.userInfo(post.authorLoginId)" class="author"> @post.authorLoginId </a> <span class="date"> @utils.TemplateHelper.agoString(post.ago()) </span> </p> |
|
56 |
- </div> |
|
57 |
- <div class="right-panel"> |
|
58 |
- <div class="comment-wrap"> |
|
59 |
- <i class="ico ico-comment-bubble"></i> <span class="num"> @post.numOfComments </span> |
|
60 |
- </div> |
|
61 |
- <a href="@routes.UserApp.userInfo(post.authorLoginId)" class="author-avatar img-rounded pull-right"> |
|
62 |
- <img class="user-picture" src="@User.findByLoginId(post.authorLoginId).avatarUrl" alt="@post.authorName" width="34" height="34"> </a> |
|
63 |
- </div> |
|
64 |
- </li> |
|
65 |
- } |
|
66 |
- </ul> |
|
67 |
- </div> |
|
68 |
- } |
|
34 |
+ @if(notices != null && notices.size > 0) { |
|
35 |
+ <div class="notice-wrap bubble-wrap gray"> |
|
36 |
+ <ul class="board-list unstyled"> |
|
37 |
+ @for(post <- notices) { |
|
38 |
+ <li class="board"> |
|
39 |
+ <div class="num"> |
|
40 |
+ <a href="@routes.BoardApp.post(project.owner, project.name, post.id)">@post.getNumber</a> |
|
41 |
+ </div> |
|
42 |
+ <div class="attach-wrap"> |
|
43 |
+ @if(Attachment.findByContainer(post.asResource).size > 0) { |
|
44 |
+ <i class="ico ico-clip"></i> |
|
45 |
+ } |
|
46 |
+ </div> |
|
47 |
+ <div class="contents"> |
|
48 |
+ <p class="title"> |
|
49 |
+ <a href="@routes.BoardApp.post(project.owner, project.name, post.id)">@post.title</a> |
|
50 |
+ </p> |
|
51 |
+ <p class="infos nm"> |
|
52 |
+ by <a href="@routes.UserApp.userInfo(post.authorLoginId)" class="author">@post.authorLoginId</a><!-- |
|
53 |
+ --> <span class="date">@utils.TemplateHelper.agoString(post.ago())</span> |
|
54 |
+ </p> |
|
55 |
+ </div> |
|
56 |
+ <div class="right-panel"> |
|
57 |
+ <div class="comment-wrap"> |
|
58 |
+ <i class="ico ico-comment-bubble"></i> <span class="num">@post.numOfComments</span> |
|
59 |
+ </div> |
|
60 |
+ <a href="@routes.UserApp.userInfo(post.authorLoginId)" class="avatar-wrap pull-right"><!-- |
|
61 |
+ --><img src="@User.findByLoginId(post.authorLoginId).avatarUrl" alt="@post.authorName" width="32" height="32"> |
|
62 |
+ </a> |
|
63 |
+ </div> |
|
64 |
+ </li> |
|
65 |
+ } |
|
66 |
+ </ul> |
|
67 |
+ </div> |
|
68 |
+ } |
|
69 | 69 |
|
70 |
- @if(page.getTotalRowCount == 0){ |
|
70 |
+ @if(page.getTotalRowCount == 0){ |
|
71 | 71 |
|
72 | 72 |
<div class="error-wrap"> |
73 |
- <i class="ico ico-err1"></i> |
|
74 |
- <p>@Messages("post.is.empty")</p> |
|
75 |
- </div> |
|
76 |
- <div> |
|
73 |
+ <i class="ico ico-err1"></i> |
|
74 |
+ <p>@Messages("post.is.empty")</p> |
|
75 |
+ </div> |
|
77 | 76 |
|
78 |
- } else { |
|
77 |
+ } else { |
|
79 | 78 |
|
80 |
- <div class="filter-wrap board"> |
|
81 |
- <div class="filters" id="order"> |
|
82 |
- @if(param.orderBy.equals("createdDate")) { |
|
83 |
- @if(param.orderDir.equals("asc")) { |
|
84 |
- <a href="#" data-orderBy="createdDate" data-orderDir="desc" class="filter active"><i class="ico btn-gray-arrow"></i>날짜순</a> |
|
85 |
- } else { |
|
86 |
- <a href="#" data-orderBy="createdDate" data-orderDir="asc" class="filter active"><i class="ico btn-gray-arrow down"></i>날짜순</a> |
|
87 |
- } |
|
88 |
- } else { |
|
89 |
- <a href="#" data-orderBy="createdDate" data-orderDir="asc" class="filter"><i class="ico btn-gray-arrow"></i>날짜순</a> |
|
90 |
- } |
|
79 |
+ @if(page.getTotalRowCount > 1){ |
|
80 |
+ <div class="filter-wrap board"> |
|
81 |
+ <div id="order" class="filters"> |
|
82 |
+ @makeFilterLink("createdDate", param.orderBy, param.orderDir, Messages("order.date")) |
|
83 |
+ @makeFilterLink("numOfComments", param.orderBy, param.orderDir, Messages("order.comments")) |
|
84 |
+ </div> |
|
85 |
+ </div> |
|
86 |
+ } |
|
91 | 87 |
|
92 |
- @if(param.orderBy.equals("numOfComments")) { |
|
93 |
- @if(param.orderDir.equals("asc")) { |
|
94 |
- <a href="#" data-orderBy="numOfComments" data-orderDir="desc" class="filter active"><i class="ico btn-gray-arrow"></i>댓글순</a> |
|
95 |
- } else { |
|
96 |
- <a href="#" data-orderBy="numOfComments" data-orderDir="asc" class="filter active"><i class="ico btn-gray-arrow down"></i>댓글순</a> |
|
97 |
- } |
|
98 |
- } else { |
|
99 |
- <a href="#" data-orderBy="numOfComments" data-orderDir="asc" class="filter"><i class="ico btn-gray-arrow"></i>댓글순</a> |
|
100 |
- } |
|
101 |
- </div> |
|
102 |
- </div> |
|
103 |
- |
|
104 |
- <ul class="board-list"> |
|
105 |
- @for(post <- page.getList()){ |
|
106 |
- <li class="board"> |
|
107 |
- <div class="num"><a href="@routes.BoardApp.post(project.owner, project.name, post.id)">@post.getNumber</a></div> |
|
108 |
- <div class="attach-wrap"> |
|
109 |
- @if(Attachment.findByContainer(post.asResource).size > 0){ |
|
110 |
- <i class="ico ico-clip"></i> |
|
111 |
- } |
|
112 |
- </div> |
|
113 |
- <div class="contents"> |
|
114 |
- <p class="title"><a href="@routes.BoardApp.post(project.owner, project.name, post.id)">@post.title</a></p> |
|
115 |
- <p class="infos nm">by <a href="@routes.UserApp.userInfo(post.authorLoginId)" class="author">@post.authorLoginId</a> <span class="date">@utils.TemplateHelper.agoString(post.ago())</span></p> |
|
116 |
- </div> |
|
117 |
- <div class="right-panel"> |
|
118 |
- <div class="comment-wrap"> |
|
119 |
- <i class="ico ico-comment-bubble"></i><span class="num">@post.numOfComments</span> |
|
120 |
- </div> |
|
121 |
- <a href="@routes.UserApp.userInfo(post.authorLoginId)" class="avatar-wrap img-rounded pull-right"> |
|
122 |
- <img src="@User.findByLoginId(post.authorLoginId).avatarUrl" alt="@post.authorName" width="32" height="32"> |
|
123 |
- </a> |
|
124 |
- </div> |
|
125 |
- </li> |
|
126 |
- } |
|
127 |
- </ul> |
|
88 |
+ <ul class="board-list unstyled"> |
|
89 |
+ @for(post <- page.getList()){ |
|
90 |
+ <li class="board"> |
|
91 |
+ <div class="num"> |
|
92 |
+ <a href="@routes.BoardApp.post(project.owner, project.name, post.id)">@post.getNumber</a> |
|
93 |
+ </div> |
|
94 |
+ <div class="attach-wrap"> |
|
95 |
+ @if(Attachment.findByContainer(post.asResource).size > 0){ |
|
96 |
+ <i class="ico ico-clip"></i> |
|
97 |
+ } |
|
98 |
+ </div> |
|
99 |
+ <div class="contents"> |
|
100 |
+ <p class="title"> |
|
101 |
+ <a href="@routes.BoardApp.post(project.owner, project.name, post.id)">@post.title</a> |
|
102 |
+ </p> |
|
103 |
+ <p class="infos nm"> |
|
104 |
+ by <a href="@routes.UserApp.userInfo(post.authorLoginId)" class="author">@post.authorLoginId</a><!-- |
|
105 |
+ --> <span class="date">@utils.TemplateHelper.agoString(post.ago())</span> |
|
106 |
+ </p> |
|
107 |
+ </div> |
|
108 |
+ <div class="right-panel"> |
|
109 |
+ <div class="comment-wrap"> |
|
110 |
+ <i class="ico ico-comment-bubble"></i><span class="num">@post.numOfComments</span> |
|
111 |
+ </div> |
|
112 |
+ <a href="@routes.UserApp.userInfo(post.authorLoginId)" class="avatar-wrap pull-right"><!-- |
|
113 |
+ --><img src="@User.findByLoginId(post.authorLoginId).avatarUrl" alt="@post.authorName" width="32" height="32"> |
|
114 |
+ </a> |
|
115 |
+ </div> |
|
116 |
+ </li> |
|
117 |
+ } |
|
118 |
+ </ul> |
|
128 | 119 |
} |
129 | 120 |
|
130 |
- <div class="write-btn-wrap"> |
|
131 |
- <a href="@routes.BoardApp.newPostForm(project.owner, project.name)" class="n-btn orange med">@Messages("post.write")</a> |
|
132 |
- </div> |
|
121 |
+ <div class="write-btn-wrap"> |
|
122 |
+ <a href="@routes.BoardApp.newPostForm(project.owner, project.name)" class="n-btn orange med">@Messages("post.write")</a> |
|
123 |
+ </div> |
|
133 | 124 |
|
134 |
- <div id="pagination"> |
|
135 |
- <!-- pagination.js will fill here. --> |
|
136 |
- </div> |
|
125 |
+ <div id="pagination"> |
|
126 |
+ <!-- pagination.js will fill here. --> |
|
127 |
+ </div> |
|
137 | 128 |
</div> |
138 | 129 |
|
139 | 130 |
<script type="text/javascript"> |
--- app/views/issue/issueList.scala.html
+++ app/views/issue/issueList.scala.html
... | ... | @@ -6,39 +6,15 @@ |
6 | 6 |
@import scala.collection.immutable.Map |
7 | 7 |
@import models.enumeration._ |
8 | 8 |
|
9 |
- |
|
10 | 9 |
@urlToList = {@routes.IssueApp.issues(project.owner, project.name, param.state, "html", currentPage.getPageIndex + 1)} |
11 | 10 |
|
12 |
-@** |
|
13 |
-@ordering(label:String, sortBy:String) = { |
|
14 |
- @if(sortBy == param.sortBy) { |
|
15 |
- @if(param.orderBy == "desc") { |
|
16 |
- <a selected href="@urlToList&sortBy=@sortBy&orderBy=asc">▼@label</a> |
|
17 |
- } else { |
|
18 |
- <a selected href="@urlToList&sortBy=@sortBy&orderBy=desc">▲@label</a> |
|
19 |
- } |
|
20 |
- } else { |
|
21 |
- <a href="@urlToList&sortBy=@sortBy">@label</a> |
|
22 |
- } |
|
11 |
+@makeFilterLink(fieldName:String, orderBy:String, orderDir:String, fieldText:String) = { |
|
12 |
+ @if(orderBy.equals(fieldName)) { |
|
13 |
+ <a href="@urlToList&orderBy=@fieldName&orderDir=@if(orderDir.equals("desc")){asc}else{desc}" class="filter active"><i class="ico btn-gray-arrow @if(orderDir.equals("desc")){ down }"></i>@fieldText</a> |
|
14 |
+ } else { |
|
15 |
+ <a href="@urlToList&orderBy=@fieldName&orderDir=asc" class="filter"><i class="ico btn-gray-arrow"></i>@fieldText</a> |
|
16 |
+ } |
|
23 | 17 |
} |
24 |
- |
|
25 |
-@header(label:String, sortBy:String) = { |
|
26 |
- <th> |
|
27 |
- @if(sortBy == param.sortBy){ |
|
28 |
- @(param.state = "") |
|
29 |
- @if(param.orderBy == "desc"){ |
|
30 |
- <a class="th-sort" href="@routes.IssueApp.issues(project.owner, project.name, param.state)&sortBy=@sortBy&orderBy=asc" data-sort-by="@sortBy">@label</a> |
|
31 |
- <i class="icon-chevron-down"></i> |
|
32 |
- } else { |
|
33 |
- <a class="th-sort" href="@routes.IssueApp.issues(project.owner, project.name, param.state)&sortBy=@sortBy&orderBY=desc" data-sort-by="@sortBy">@label</a> |
|
34 |
- <i class="icon-chevron-up"></i> |
|
35 |
- } |
|
36 |
- } else { |
|
37 |
- <a class="th-sort" href="@routes.IssueApp.issues(project.owner, project.name, param.state)&sortBy=@sortBy" data-sort-by="@sortBy">@label</a> |
|
38 |
- } |
|
39 |
- </th> |
|
40 |
-} |
|
41 |
-**@ |
|
42 | 18 |
|
43 | 19 |
@main(Messages(title), project, utils.MenuType.ISSUE){ |
44 | 20 |
<div class="page"> |
... | ... | @@ -118,41 +94,17 @@ |
118 | 94 |
</div> |
119 | 95 |
</div> |
120 | 96 |
|
97 |
+@if(currentPage.getList().size() > 0){ |
|
98 |
+ @if(currentPage.getList().size() > 1){ |
|
121 | 99 |
<div class="filter-wrap board"> |
122 | 100 |
<div class="filters"> |
123 |
- @if(param.orderBy.equals("state")) { |
|
124 |
- @if(param.orderDir.equals("asc")) { |
|
125 |
- <a href="@urlToList&orderBy=state&orderDir=desc" class="filter active"><i class="ico btn-gray-arrow"></i>@Messages("order.state")</a> |
|
126 |
- } else { |
|
127 |
- <a href="@urlToList&orderBy=state&orderDir=asc" class="filter active"><i class="ico btn-gray-arrow down"></i>@Messages("order.state")</a> |
|
128 |
- } |
|
129 |
- } else { |
|
130 |
- <a href="@urlToList&orderBy=state&orderDir=asc" class="filter"><i class="ico btn-gray-arrow"></i>@Messages("order.state")</a> |
|
131 |
- } |
|
132 |
- |
|
133 |
- @if(param.orderBy.equals("createdDate")) { |
|
134 |
- @if(param.orderDir.equals("asc")) { |
|
135 |
- <a href="@urlToList&orderBy=createdDate&orderDir=desc" class="filter active"><i class="ico btn-gray-arrow"></i>@Messages("order.date")</a> |
|
136 |
- } else { |
|
137 |
- <a href="@urlToList&orderBy=createdDate&orderDir=asc" class="filter active"><i class="ico btn-gray-arrow down"></i>@Messages("order.date")</a> |
|
138 |
- } |
|
139 |
- } else { |
|
140 |
- <a href="@urlToList&orderBy=createdDate&orderDir=asc" class="filter"><i class="ico btn-gray-arrow"></i>@Messages("order.date")</a> |
|
141 |
- } |
|
142 |
- |
|
143 |
- @if(param.orderBy.equals("numOfComments")) { |
|
144 |
- @if(param.orderDir.equals("asc")) { |
|
145 |
- <a href="@urlToList&orderBy=numOfComments&orderDir=desc" class="filter active"><i class="ico btn-gray-arrow"></i>@Messages("order.comments")</a> |
|
146 |
- } else { |
|
147 |
- <a href="@urlToList&orderBy=numOfComments&orderDir=asc" class="filter active"><i class="ico btn-gray-arrow down"></i>@Messages("order.comments")</a> |
|
148 |
- } |
|
149 |
- } else { |
|
150 |
- <a href="@urlToList&orderBy=numOfComments&orderDir=asc" class="filter"><i class="ico btn-gray-arrow"></i>@Messages("order.comments")</a> |
|
151 |
- } |
|
101 |
+ @makeFilterLink("state", param.orderBy, param.orderDir, Messages("order.state")) |
|
102 |
+ @makeFilterLink("createdDate", param.orderBy, param.orderDir, Messages("order.date")) |
|
103 |
+ @makeFilterLink("numOfComments", param.orderBy, param.orderDir, Messages("order.comments")) |
|
152 | 104 |
</div> |
153 | 105 |
</div> |
106 |
+ } |
|
154 | 107 |
|
155 |
-@if(currentPage.getList().size() > 0){ |
|
156 | 108 |
<ol class="issue-list"> |
157 | 109 |
@for(issue <- currentPage.getList){ |
158 | 110 |
<li class="issue"> |
--- app/views/milestone/list.scala.html
+++ app/views/milestone/list.scala.html
... | ... | @@ -42,7 +42,9 @@ |
42 | 42 |
|
43 | 43 |
<div class="tab-wrap"> |
44 | 44 |
<div class="pull-right btns"> |
45 |
+ @**<!-- |
|
45 | 46 |
<a href="@routes.MilestoneApp.manageMilestones(projectInst.owner, projectInst.name)" class="nbtn medium">@Messages("milestone.menu.manage")</a> |
47 |
+ -->**@ |
|
46 | 48 |
<a href="@routes.MilestoneApp.newMilestoneForm(projectInst.owner, projectInst.name)" class="nbtn medium orange">@Messages("milestone.menu.new")</a> |
47 | 49 |
</div> |
48 | 50 |
|
... | ... | @@ -59,7 +61,17 @@ |
59 | 61 |
</ul> |
60 | 62 |
</div> |
61 | 63 |
|
62 |
- <div class="filter-wrap milestone"> |
|
64 |
+ @if(milestones == null || milestones.isEmpty()){ |
|
65 |
+ |
|
66 |
+ <div class="error-wrap"> |
|
67 |
+ <i class="ico ico-err1"></i> |
|
68 |
+ <p>@Messages("milestone.is.empty")</p> |
|
69 |
+ </div> |
|
70 |
+ |
|
71 |
+ } else { |
|
72 |
+ |
|
73 |
+ @if(milestones.length > 1){ |
|
74 |
+ <div class="filter-wrap milestone"> |
|
63 | 75 |
<div class="filters"> |
64 | 76 |
<a href="@makeSortLink("dueDate")" class="filter"><i class="ico ico-sort @sortMark("dueDate")"></i>@Messages("order.dueDate")</a> |
65 | 77 |
<a href="@makeSortLink("completionRate")" class="filter active"><i class="ico ico-sort @sortMark("completionRate")"></i>@Messages("order.completionRate")</a> |
... | ... | @@ -70,37 +82,23 @@ |
70 | 82 |
<i class="orange"></i>@Messages("issue.state.closed") |
71 | 83 |
</div> |
72 | 84 |
</div> |
85 |
+ } |
|
73 | 86 |
|
74 |
- @if(milestones == null || milestones.isEmpty()){ |
|
75 |
- |
|
76 |
- <div class="error-wrap"> |
|
77 |
- <i class="ico ico-err1"></i> |
|
78 |
- <p>@Messages("milestone.is.empty")</p> |
|
79 |
- </div> |
|
80 |
- |
|
81 |
- } else { |
|
82 |
- |
|
83 | 87 |
<ul class="milestones"> |
84 | 88 |
@for(milestone <- milestones){ |
85 | 89 |
<li class="milestone"> |
86 | 90 |
<div class="infos"> |
87 |
- <!-- |
|
91 |
+ @**<!-- |
|
88 | 92 |
<ul class="contributors"> |
89 | 93 |
<li class="contributor"> |
90 | 94 |
<a href="/uname" class="img-rounded"><img src="/assets/images/default-avatar-34.png"></a> |
91 | 95 |
</li> |
92 |
- <li class="contributor"> |
|
93 |
- <a href="/uname" class="img-rounded"><img src="/assets/images/default-avatar-34.png"></a> |
|
94 |
- </li> |
|
95 |
- <li class="contributor"> |
|
96 |
- <a href="/uname" class="img-rounded"><img src="/assets/images/default-avatar-34.png"></a> |
|
97 |
- </li> |
|
98 | 96 |
</ul> |
99 |
- --> |
|
97 |
+ -->**@ |
|
100 | 98 |
|
101 | 99 |
<div class="meta-info"> |
102 | 100 |
<strong class="version"></strong> |
103 |
- <span class="title">@milestone.title</span> |
|
101 |
+ <a href="@routes.MilestoneApp.editMilestoneForm(projectInst.owner, projectInst.name, milestone.id)" class="title">@milestone.title</a> |
|
104 | 102 |
<span class="sp">|</span> |
105 | 103 |
<span class="due-date">@Messages("label.dueDate") <strong>@milestone.getDueDateString</strong></span> |
106 | 104 |
</div> |
... | ... | @@ -108,9 +106,11 @@ |
108 | 106 |
<div class="progress-wrap"> |
109 | 107 |
<div class="progress"> |
110 | 108 |
<div class="bar orange" style="width: @milestone.getCompletionRate%;"></div> |
109 |
+ @** |
|
111 | 110 |
<!-- |
112 | 111 |
<div class="bar blue" style="width: 30%"></div> |
113 | 112 |
--> |
113 |
+ **@ |
|
114 | 114 |
</div> |
115 | 115 |
<div class="progress-label"> |
116 | 116 |
@** 0% 일 수도 있어서 최소한의 텍스트 영역 확보 **@ |
... | ... | @@ -126,10 +126,15 @@ |
126 | 126 |
<div class="desc"> |
127 | 127 |
@milestone.contents |
128 | 128 |
</div> |
129 |
+ |
|
130 |
+ <div class="actrow"> |
|
131 |
+ <a href="@routes.MilestoneApp.editMilestoneForm(projectInst.owner, projectInst.name, milestone.id)" class="nbtn medium white">@Messages("button.edit")</a> |
|
132 |
+ <a href="@routes.MilestoneApp.editMilestoneForm(projectInst.owner, projectInst.name, milestone.id)" class="nbtn medium black">@Messages("button.delete")</a> |
|
133 |
+ </div> |
|
129 | 134 |
</div> |
130 |
- <div class="completion-rate @if(milestone.getCompletionRate == 100){done}"> |
|
131 |
- @milestone.getCompletionRate |
|
132 |
- <i>%</i> |
|
135 |
+ <div class="completion-rate @if(milestone.getCompletionRate == 100){done}"><!-- |
|
136 |
+ -->@milestone.getCompletionRate<!-- |
|
137 |
+ --><i>%</i> |
|
133 | 138 |
</div> |
134 | 139 |
</li> |
135 | 140 |
} |
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?