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

2014-03-24

2014-03-24
2013-12-20
File name
Commit message
Commit date
@(title: String, currentPage: com.avaje.ebean.Page[Issue], param:models.support.SearchCondition, project:Project)
@import helper._
@import utils.TemplateHelper._
@import utils.AccessControl._
@import scala.collection.immutable.Map
@import scala.collection.mutable.ArrayBuffer
@import models.enumeration._
@import org.apache.commons.lang.StringUtils
@import utils.HttpUtil._
@urlToList = {@routes.IssueApp.issues(project.owner, project.name, param.state, "html", currentPage.getPageIndex + 1)}
@paramForEveryone = @{ param.clone().setState(param.state).setAssigneeId(null).setAuthorId(null) }
@paramForIssuesAssignedToMe = @{ param.clone().setState(param.state).setAssigneeId(UserApp.currentUser().id).setAuthorId(null) }
@paramForIssuesAuthoredByMe = @{ param.clone().setState(param.state).setAssigneeId(null).setAuthorId(UserApp.currentUser().id) }
@urlAssignedToMe = {@routes.IssueApp.issues(project.owner, project.name, param.state, "html", 1)&assigneeId=@User.findByLoginId(session.get("loginId")).id&milestoneId=@param.milestoneId}
@urlAuthoredByMe = {@routes.IssueApp.issues(project.owner, project.name, param.state, "html", 1)&authorId=@User.findByLoginId(session.get("loginId")).id&milestoneId=@param.milestoneId}
@getPageListUrl(pageIndex:Integer) = {@routes.IssueApp.issues(project.owner, project.name, param.state, "html", pageIndex + 1)}
@makeFilterLink(fieldName:String, orderBy:String, orderDir:String, fieldText:String) = {
@if(orderBy.equals(fieldName)) {
<a href="#" orderBy="@orderBy" 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="#" orderBy="@fieldName" orderDir="desc" class="filter"><i class="ico btn-gray-arrow down"></i>@fieldText</a>
}
}
@getTabLinkByState(state:State) = {@routes.IssueApp.issues(project.owner, project.name, state.state)@if(param.assigneeId != null){?assigneeId=@param.assigneeId}@if(param.authorId != null){&authorId=@param.authorId}@if(param.milestoneId != null){&milestoneId=@param.milestoneId}}
<div pjax-container class="row-fluid issue-list-wrap">
<div class="span2">
<ul class="lst-stacked unstyled">
<li @if(param.assigneeId == null && param.authorId == null){class="active"}>
<a pjax-filter href="#" authorId="" assigneeId="" milestoneId="@param.milestoneId">@Messages("issue.list.all")
<span class="num-badge pull-right">@Issue.countIssuesBy(project.id, paramForEveryone)</span>
</a>
</li>
@if(!UserApp.currentUser().isSiteManager){
<li @if(param.assigneeId == UserApp.currentUser().id){ class="active"}>
<a pjax-filter href="#" authorId="" assigneeId="@User.findByLoginId(session.get("loginId")).id" milestoneId="@param.milestoneId">@Messages("issue.list.assignedToMe")
<span class="num-badge pull-right">@Issue.countIssuesBy(project.id, paramForIssuesAssignedToMe)</span>
</a>
</li>
<li @if(param.authorId == UserApp.currentUser().id){ class="active"}>
<a pjax-filter href="#" authorId="@User.findByLoginId(session.get("loginId")).id" assigneeId="" milestoneId="@param.milestoneId">@Messages("issue.list.authoredByMe")
<span class="num-badge pull-right">@Issue.countIssuesBy(project.id, paramForIssuesAuthoredByMe)</span>
</a>
</li>
}
</ul>
@if(param.milestoneId != null){
@defining(Milestone.findById(param.milestoneId)){ milestone =>
@if(milestone != null){
<hr>
@views.html.milestone.partial_status(milestone, project)
}
}
}
<form id="search" name="search" action="@routes.IssueApp.issues(project.owner, project.name)" method="get">
<input type="hidden" name="orderBy" value="@param.orderBy">
<input type="hidden" name="orderDir" value="@param.orderDir">
<input type="hidden" name="state" value="@param.state">
<hr>
<div class="search">
<div class="search-bar">
<input name="filter" class="textbox full" type="text" value="@param.filter">
<button type="submit" class="search-btn"><i class="yobicon-search"></i></button>
</div>
</div>
<div id="advanced-search-form" class="srch-advanced">
<dl class="issue-option">
<dt>@Messages("issue.author")</dt>
<dd>
<select id="authorId" name="authorId" data-toggle="select2" data-format="user">
<option value="">@Messages("common.order.all")</option>
@if(ProjectUser.isMember(UserApp.currentUser().id, project.id)){
<option value="@UserApp.currentUser().id">@Messages("issue.list.authoredByMe")</option>
}
@for(author <- User.findIssueAuthorsByProjectId(project.id)) {
<option value="@author.id"
@if(param.authorId != null && param.authorId == author.id){
selected
}
data-avatar-url="@author.avatarUrl"
data-login-id="@author.loginId">
@author.name
</option>
}
</select>
</dd>
</dl>
<dl class="issue-option">
<dt>@Messages("issue.assignee")</dt>
<dd>
<select id="assigneeId" name="assigneeId" data-toggle="select2" data-format="user">
<option value="">@Messages("common.order.all")</option>
<option value="@User.anonymous.id" @if(param.assigneeId != null && param.assigneeId == User.anonymous.id){ selected }>@Messages("issue.noAssignee")</option>
@if(ProjectUser.isMember(UserApp.currentUser().id, project.id)){
<option value="@UserApp.currentUser().id">@Messages("issue.list.assignedToMe")</a></option>
}
@for(member <- project.members) {
<option value="@member.user.id"
@if(param.assigneeId != null
&& param.assigneeId == member.user.id){
selected
}
data-avatar-url="@member.user.avatarUrl"
data-login-id="@member.user.loginId">
@member.user.name
</option>
}
</select>
</dd>
</dl>
<dl class="issue-option">
<dt>@Messages("milestone")</dt>
<dd>
<select id="milestoneId" name="milestoneId" data-toggle="select2" data-format="milestone">
<option value="">@Messages("milestone.state.all")</option>
<option value="@Milestone.NULL_MILESTONE_ID"
@if(param.milestoneId != null && param.milestoneId == Milestone.NULL_MILESTONE_ID){
selected
}>
@Messages("issue.noMilestone")
</option>
<optgroup label="@Messages("milestone.state.open")">
@for(milestone <- Milestone.findOpenMilestones(project.id)){
<option value="@milestone.id" data-state="@milestone.state"
@if(param.milestoneId != null && param.milestoneId == milestone.id){
selected
}>
@milestone.title
</option>
}
</optgroup>
<optgroup label="@Messages("milestone.state.closed")">
@for(milestone <- Milestone.findClosedMilestones(project.id)){
<option value="@milestone.id" data-state="@milestone.state"
@if(param.milestoneId != null && param.milestoneId == milestone.id){
selected
}>
@milestone.title
</option>
}
</optgroup>
</select>
</dd>
</dl>
</div>
<hr>
<dl id="labels" class="issue-option labels-wrap">
<dt>
@Messages("label")
@if(isProjectResourceCreatable(UserApp.currentUser, project, ResourceType.ISSUE_LABEL)){
<button id="manage-label-link" type="button" class="ybtn ybtn-default ybtn-mini pull-right"><i class="yobicon-cog"></i></button>
}
</dt>
<dd>
<fieldset class="labels issue-form-labels"></fieldset>
</dd>
</dl>
</form>
</div>
<div class="span10" id="span10">
<div class="pull-right">
<a href="@routes.IssueApp.newIssueForm(project.owner, project.name)" class="ybtn ybtn-success">@Messages("issue.menu.new")</a>
</div>
<ul class="nav nav-tabs nm">
@for(state <- Array(State.OPEN, State.CLOSED)) {
<li @if(param.state == state.state) { class="active" } data-pjax>
<a href="#" state="@state.state">
@Messages("issue.state." + state.name.toLowerCase)
<span class="num-badge">@Issue.countIssuesBy(project.id, param.clone.setState(state))</span>
</a>
</li>
}
</ul>
@if(currentPage.getList.size() > 0){
<div class="filter-wrap board">
@if(ProjectUser.isMember(UserApp.currentUser().id, project.id)){
@partial_massupdate(project, param)
}
@if(currentPage.getList.size() > 1){
<div class="filters pull-right">
@makeFilterLink("updatedDate", param.orderBy, param.orderDir, Messages("common.order.updatedDate"))
@makeFilterLink("createdDate", param.orderBy, param.orderDir, Messages("common.order.date"))
@makeFilterLink("numOfComments", param.orderBy, param.orderDir, Messages("common.order.comments"))
</div>
}
</div>
@partial_list(project, currentPage.getList, param, currentPage.getPageIndex, currentPage.getTotalPageCount)
<div class="pull-left" style="padding:10px;">
<a href="@addQueryString(removeQueryString(request.uri, "pageNum"), "format=xls")" class="ybtn small"><i class="yobicon-file-excel"></i> @Messages("issue.downloadAsExcel")</a>
</div>
@help.keymap("issueList", project)
<div id="pagination"><!-- pagination.js will fill here. --></div>
} else {
<div class="error-wrap">
<i class="ico ico-err1"></i>
<p>@Messages("issue.is.empty")</p>
</div>
@help.keymap("issueList", project)
}
</div>
@common.issueLabel()
<script type="text/javascript">
$(document).ready(function(){
// Label
yobi.Label.init({
"bRefresh" : true,
"sURLLabels" : "@routes.IssueLabelApp.labels(project.owner, project.name)",
"sURLPost" : "@routes.IssueLabelApp.newLabel(project.owner, project.name)",
"aSelectedLabels": [@if(param.labelIds != null){@StringUtils.join(param.labelIds, ",")}]
});
// issue.List
$yobi.loadModule("issue.List", {
"welSearchOrder": $("a[orderBy]"),
"welSearchState": $("a[state]"),
"welSearchForm" : $("form[name='search']"),
"welFilter" : $("a[pjax-filter]"),
"elPagination" : $("#pagination"),
"nTotalPages" : @currentPage.getTotalPageCount
});
// ShortcutKey
yobi.ShortcutKey.setKeymapLink({
"N": "@routes.IssueApp.newIssueForm(project.owner, project.name)"
});
});
</script>
</div>