[Notice] Announcing the End of Demo Server [Read me]
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date

2013-05-07

2013-05-08

2013-05-09

2013-05-08

2013-05-08

2013-05-08

2013-05-08

2013-05-08

2013-05-09
2012-08-28
File name
Commit message
Commit date

2013-05-08

2013-05-08

2013-05-08
@(title: String, currentPage: com.avaje.ebean.Page[Issue], param:IssueApp.SearchCondition, project:Project)
@import helper._
@implicitFieldConstructor = @{ FieldConstructor(twitterBootstrapInput.render) }
@import utils.TemplateHelper._
@import scala.collection.immutable.Map
@import models.enumeration._
@urlToList = {@routes.IssueApp.issues(project.owner, project.name, param.state, "html", currentPage.getPageIndex + 1)}
@makeFilterLink(fieldName:String, orderBy:String, orderDir:String, fieldText:String) = {
@if(orderBy.equals(fieldName)) {
<a href="@urlToList&orderBy=@fieldName&orderDir=@if(orderDir.equals("desc")){asc}else{desc}" class="filter active"><i class="ico btn-gray-arrow @if(orderDir.equals("desc")){ down }"></i>@fieldText</a>
} else {
<a href="@urlToList&orderBy=@fieldName&orderDir=asc" class="filter"><i class="ico btn-gray-arrow"></i>@fieldText</a>
}
}
@main(Messages(title), project, utils.MenuType.ISSUE){
<div class="page">
@prjmenu(project, utils.MenuType.ISSUE, "main-menu-only")
<div class="header-wrap">
<div class="stats-wrap">
@for(state <- Array(State.ALL, State.OPEN, State.CLOSED)) {
<a href="@routes.IssueApp.issues(project.owner, project.name, state.state)" class="stat stat-issue @if(param.state == state.state) { active }">
<span class="desc @state.state"><strong>@Messages("issue.state." + state.name.toLowerCase())</strong> @Messages("issue.state.unit")</span>
<span class="num @state.state">@Issue.countIssues(project.id, state)</span>
</a>
}
</div>
<div class="search-wrap projects">
<div class="inner">
<form id="search" action="@routes.IssueApp.issues(project.owner, project.name, param.state)" method="get">
<input type="hidden" name="orderBy" value="@param.orderBy" class="h-value order">
<input type="hidden" name="state" value="@param.state">
<input type="text" name="filter" class="text" placeholder="@Messages("project.searchPlaceholder")"><!--
--><button type="submit" class="btn search-btn">@Messages("issue.search")</button>
<a href="#search" class="btn-advanced"><i class="ico"></i>@Messages("issue.advancedSearch")</a>
<div id="advanced-search-form" class="srch-advanced form-horizontal">
<fieldset class="properties">
<div class="control-group">
<label class="control-label">@Messages("author")</label>
<div class="controls">
<input type="text" name="authorLoginId" class="input-medium">
</div>
</div>
<div class="control-group">
<label class="control-label">@Messages("assignee")</label>
<div class="controls">
<div class="btn-group" data-name="assigneeId">
<button class="btn dropdown-toggle" data-toggle="dropdown">
<span class="d-label">@Messages("order.all")</span>
<span class="d-caret"><span class="caret"></span></span>
</button>
<ul class="dropdown-menu">
<li data-value="" data-selected="true" class="active"><a href="javascript:void(0)">@Messages("order.all")</a></li>
<li data-value="0"><a href="javascript:void(0)">@Messages("noAssignee")</a></li>
@for(assignee <- Assignee.finder.where.eq("project.id", project.id).findSet) {
<li data-value="@assignee.user.id"><a href="javascript:void(0)">@User.find.byId(assignee.user.id).name (@User.find.byId(assignee.user.id).loginId)</a></li>
}
</ul>
</div>
</div>
</div>
<div class="control-group">
<label class="control-label">@Messages("milestone")</label>
<div class="controls">
<div class="btn-group" data-name="milestoneId">
<button class="btn dropdown-toggle" data-toggle="dropdown">
<span class="d-label">@Messages("milestone.state.all")</span>
<span class="d-caret"><span class="caret"></span></span>
</button>
<ul class="dropdown-menu">
<li data-value="" data-selected="true" class="active"><a href="javascript:void(0)">@Messages("milestone.state.all")</a></li>
<li data-value="0"><a href="javascript:void(0)">@Messages("noMilestone")</a></li>
@for(milestone <- Milestone.findByProjectId(project.id)) {
<li data-value="@milestone.id"><a href="javascript:void(0)">@milestone.title</a></li>
}
</ul>
</div>
</div>
</div>
</fieldset>
<!-- issue.label module make 'labels' fieldset as label filter and editor -->
<fieldset class="labels"></fieldset>
</div>
</form>
<!-- -->
</div>
</div>
</div>
@if(currentPage.getList().size() > 0){
@if(currentPage.getList().size() > 1){
<div class="filter-wrap board">
<div class="filters">
@makeFilterLink("state", param.orderBy, param.orderDir, Messages("order.state"))
@makeFilterLink("createdDate", param.orderBy, param.orderDir, Messages("order.date"))
@makeFilterLink("numOfComments", param.orderBy, param.orderDir, Messages("order.comments"))
</div>
</div>
}
<ol class="issue-list">
@for(issue <- currentPage.getList){
<li class="issue">
<div class="num"><a href="@routes.IssueApp.issue(project.owner, project.name, issue.id)">@issue.getNumber</a></div>
<div class="attach-wrap">
@if(Attachment.findByContainer(issue.asResource).size > 0){
<i class="ico ico-clip"></i>
}
</div>
<div class="contents">
<p class="title">
<a href="@routes.IssueApp.issue(project.owner, project.name, issue.id)">@issue.title</a>
@for(label <- issue.labels.toList.sortBy(r => (r.category, r.name))) {
<button class="issue-label" data-labelId="@label.id" data-color="@label.color">@label.name</button>
}
</p>
<p class="infos nm">by
<a href="@routes.UserApp.userInfo(issue.authorLoginId)" class="author">@Option(issue.authorLoginId).orElse(Option(Messages("issue.noAuthor"))).get</a>
<span class="date">@agoString(issue.ago)</span>
</p>
</div>
<div class="right-panel">
<div class="state @issue.state.toString.toLowerCase">@Messages("issue.state." + issue.state.toString.toLowerCase)</div>
<div class="comment-wrap">
<i class="ico ico-comment-bubble"></i><span class="num">@issue.comments.size()</span>
</div>
@if(issue.assignee != null) {
<a href="@routes.UserApp.userInfo(issue.assignee.user.loginId)" class="avatar-wrap img-rounded pull-right">
<img src="@issue.assignee.user.avatarUrl" width="32" height="32" alt="@issue.assignee.user.name"></a>
}
</div>
</li>
}
</ol>
} else {
<div class="error-wrap">
<i class="ico ico-err1"></i>
<p>@Messages("issue.is.empty")</p>
</div>
}
<div class="write-btn-wrap">
<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>
<a href="@routes.IssueApp.newIssueForm(project.owner, project.name)" class="nbtn medium orange">@Messages("issue.menu.new")</a>
</div>
<div id="pagination">
<!-- pagination.js will fill here. -->
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
var htOptLabel = {
"sURLLabels" : "@routes.IssueLabelApp.labels(project.owner, project.name)",
"sURLPost" : "@routes.IssueLabelApp.newLabel(project.owner, project.name)"
};
@if(ProjectUser.roleOf(session.get("loginId"), project).equals("manager")){
htOptLabel.bEditable = true;
}
$hive.loadModule("issue.List", {
"elPagination": $("#pagination"),
"nTotalPages" : @currentPage.getTotalPageCount,
"htOptLabel" : htOptLabel
});
});
</script>
</div>
}