File name
Commit message
Commit date
File name
Commit message
Commit date
2014-03-04
File name
Commit message
Commit date
2013-12-20
2014-02-27
2014-02-13
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">
<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">
<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">
<option value="">@Messages("milestone.state.all")</option>
@if(param.milestoneId != null
&& param.milestoneId == Milestone.NULL_MILESTONE_ID){
<option value="@Milestone.NULL_MILESTONE_ID">
@Messages("issue.noMilestone")
</option>
}
@for(milestone <- Milestone.findByProjectId(project.id)) {
<option value="@milestone.id"
@if(param.milestoneId != null && param.milestoneId == milestone.id){
selected
}>
@milestone.title
</option>
}
</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(){
$("#assigneeId, #authorId")
.select2({
formatResult: format,
formatSelection: format,
width: "resolve"
})
.on("change", function(e){
$("form[name='search']" ).submit();
});
$("#milestoneId")
.select2({
width: "resolve"
})
.on("change", function(e){
$("form[name='search']").submit();
});
/**
* select box list customization using select2
*
*/
function format(state) {
var originalOption = state.element;
if($(originalOption).data('avatar-url')){
return "<img src='"+$(originalOption).data('avatar-url') +"' width='20' height='20'>"
+ "<span style='font-weight: bold'>" + state.text + "</span>"
+"<span style='color: gray'>@{"@"}" + $(originalOption).data('login-id') + "</span>";
} else {
return state.text;
}
}
});
</script>
<script type="text/javascript">
$(document).ready(function(){
yobi.Label.init({
"sURLLabels" : "@routes.IssueLabelApp.labels(project.owner, project.name)",
"sURLPost" : "@routes.IssueLabelApp.newLabel(project.owner, project.name)",
"bRefresh" : true
@if(param.labelIds != null){
, "aSelectedLabels" : [@StringUtils.join(param.labelIds, ",")]
} else {
, "aSelectedLabels" : []
}
});
$yobi.loadModule("issue.List", {
"welSearchOrder": $("a[orderBy]"),
"welSearchState": $("a[state]"),
"welSearchMilestone": $("div[data-name='milestoneId']"),
"welSearchForm":$("form[name='search']"),
"welFilter": $("a[pjax-filter]"),
"elPagination": $("#pagination"),
"nTotalPages" : @currentPage.getTotalPageCount()
});
yobi.ShortcutKey.setKeymapLink({
"N": "@routes.IssueApp.newIssueForm(project.owner, project.name)"
@if(currentPage.getPageIndex > 0){
,"A": "@getPageListUrl(currentPage.getPageIndex - 1)"
}
@if(currentPage.getTotalPageCount > 1 && (currentPage.getPageIndex + 1 != currentPage.getTotalPageCount)){
,"S": "@getPageListUrl(currentPage.getPageIndex + 1)"
}
});
});
</script>
</div>