File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date

2012-11-29
2013-01-23

2012-11-29
2012-08-28
File name
Commit message
Commit date
@(title: String, currentPage: com.avaje.ebean.Page[Issue], param:support.SearchCondition, project:Project)
@import helper._
@implicitFieldConstructor = @{ FieldConstructor(twitterBootstrapInput.render) }
@import utils.TemplateHelper._
@urlToList = {@routes.IssueApp.issues(project.owner, project.name, param.state)}
@ordering(label:String, sortBy:String) = {
@if(sortBy == param.sortBy) {
@if(param.orderBy == "desc") {
<a selected href="@urlToList&sortBy=@sortBy&orderBy=asc">▼@label</a>
} else {
<a selected href="@urlToList&sortBy=@sortBy&orderBy=desc">▲@label</a>
}
} else {
<a href="@urlToList&sortBy=@sortBy">@label</a>
}
}
@header(label:String, sortBy:String) = {
<th>
@if(sortBy == param.sortBy){
@if(param.orderBy == "desc"){
<a class="th-sort" href="@routes.IssueApp.issues(project.owner, project.name, param.state)&sortBy=@sortBy&orderBy=asc" data-sort-by="@sortBy">@label</a>
<i class="icon-chevron-down"></i>
} else {
<a class="th-sort" href="@routes.IssueApp.issues(project.owner, project.name, param.state)&sortBy=@sortBy&orderBY=desc" data-sort-by="@sortBy">@label</a>
<i class="icon-chevron-up"></i>
}
} else {
<a class="th-sort" href="@routes.IssueApp.issues(project.owner, project.name, param.state)&sortBy=@sortBy" data-sort-by="@sortBy">@label</a>
}
</th>
}
@main(Messages(title), project, utils.MenuType.ISSUE){
<div class="page">
<style>
@@IMPORT url("/assets/stylesheets/issue.css");
</style>
<div class="page-padding">
@pageTitle(project,"Issue")
<!--<ul class="breadcrumb project-name">
<li><a href="#">@project.owner</a><span class="divider">/</span></li>
<li class="active"><a href="#">@project.name</a></li>
</ul>-->
<div class="dashboard">
<dl class="row-fluid">
@for(state <- Array(State.ALL, State.OPEN, State.CLOSED)) {
<div class="span4 @if(state.state == param.state) { active }"><a href="@routes.IssueApp.issues(project.owner, project.name, state.state)"><dt><b>@state.name</b> issues</dt><dd class="@state.state inner-shadow pull-right">@Issue.countIssues(project.id, state)</dd></a></div>
}
</dl>
<hr/>
<form class="form-horizontal form-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">
<button type="button" id="advanced-search" class="btn btn-small btn-flat" data-toggle="button">@Messages("issue.advancedSearch")</button>
<a href="@routes.IssueApp.issues(project.owner, project.name, param.state, "xls")" class="btn btn-small btn-flat">@Messages("issue.downloadAsExcel")</a>
<div class="input-append pull-right">
<input name="filter" class="span2" id="appendedInputButton" size="16" type="text"><button class="btn" type="submit" placeholder="현재 게시글에서 검색">@Messages("issue.search")</button>
</div>
<div class="form-horizontal" id="advanced-search-form">
<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" data-toggle="buttons-radio">
<button type="button" class="btn" assigneeId="0">@Messages("none")</button>
@for(assignee <- Assignee.finder.where.eq("project.id", project.id).findSet) {
<button type="button" class="btn" assigneeId="@assignee.user.id">@User.find.byId(assignee.user.id).name <img class="user-picture" src="@urlToPicture(User.find.byId(assignee.user.id).email, 16)"></button>
}
</div>
</div>
<div class="control-group">
<label class="control-label">@Messages("milestone")</label>
<div class="controls" data-toggle="buttons-radio">
<button type="button" class="btn" milestoneId="0">@Messages("none")</button>
@for(milestone <- Milestone.findByProjectId(project.id)) {
<button type="button" class="btn" milestoneId="@milestone.id">@milestone.title</button>
}
</div>
</div>
</fieldset>
<!-- issue.label module make 'labels' fieldset as label filter and editor -->
<fieldset class="labels"></fieldset>
</div>
</form>
</div>
<p class="ordering">
@ordering(Messages("order.state"), "state")
@ordering(Messages("order.date"), "date")
@ordering(Messages("order.comments"), "numOfComments")
</p>
<table class="table issue-list">
<tbody>
@for(issue <- currentPage.getList){
<tr>
<td class="no">@issue.id</td>
<td class="attachmend attached">@if(Attachment.findByContainer(Resource.ISSUE_POST, issue.id).size > 0){<span class="icon-file"/>}</td>
<td class="info">
<p><a href="@routes.IssueApp.issue(project.owner, project.name, issue.id)">@issue.title</a></p>
<p class="author">by <a href="@routes.UserApp.userInfo(issue.authorLoginId)">@Option(issue.authorLoginId).orElse(Option(Messages("issue.noAuthor"))).get</a> @agoString(issue.ago)</p>
</td>
<td class="state @issue.state.toString.toLowerCase">@Messages(issue.state.state)</td>
<td class="comments">
<i class="ico ico-comment-bubble"></i>
<span class="num">@issue.numOfComments</span>
</td>
<td class="assignee">
<a href="@routes.UserApp.userInfo(issue.authorLoginId)">
<img class="user-picture" src="@User.findByLoginId(issue.authorLoginId).avatarUrl" width="34" height="34" alt="@issue.authorName"></a>
</td>
</tr>
}
<tbody>
</table>
<div class="pull-right">
<a class="btn btn-primary" href="@routes.IssueApp.newIssueForm(project.owner, project.name)" >@Messages("issue.menu.new")</a>
</div>
@pagination(currentPage, 5, "pagination")
</div>
<script type="text/javascript">
nforge.require('issue.label', '@routes.IssueLabelApp.labels(project.owner, project.name)', '@routes.IssueLabelApp.newLabel(project.owner, project.name)', {editable: true});
nforge.require('issue.list');
</script>
</div>
}