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

2012-11-26
2012-08-28
File name
Commit message
Commit date
@(title:String, issue:Issue, issueForm:Form[Issue], commentForm:Form[IssueComment],project:Project)
@import helper._
@import scala.collection.mutable.Map
@import models.enumeration.Resource
@import models.Milestone
@import java.text.SimpleDateFormat
@import java.security.MessageDigest
@import utils.TemplateHelper._
@implicitFieldConstructor = @{ FieldConstructor(twitterBootstrapInput.render) }
@isVisible(resource: models.enumeration.Resource)(content: => Html) = @{
roleCheck(session.get("userId"), project.id, resource, models.enumeration.Operation.EDIT, issue.id){
content
}
}
@main(Messages(title),project) {
<style>
@@IMPORT url("/assets/stylesheets/issue.css");
</style>
@pageTitle(project,"Issue")
<!--<div class="page-padding">
<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>-->
<!-- 메인 글 -->
<article>
<hgroup class="row-fluid">
<div class="span1">
<img class="user-picture" src="@urlToPicture(User.findById(issue.authorId).email, 34)" />
</div>
<div class="info">
<p>
<span class="title">@issue.title</span>
<span class="pull-right">
<span>@issue.id</span>
<span class="badge badge-info">@Messages(issue.state.state)</span>
</span>
</p>
<p class="author">by <a href="/users/@issue.authorId">@Option(issue.getAuthorName).orElse(Option(Messages("issue.noAuthor"))).get</a> @agoString(issue.ago)</p>
</div>
</hgroup>
<div class="row issue-info-group">
<div class="span4 issue-info">
<p class="assignee">@if(issue.assigneeName != null) {
<span class="assignee-name">@issue.assigneeName</span>
} else {
<span class="no-assignee">@Messages("issue.noAssignee")</span>
}
</p>
<p class="issue-etc-info">
Hit <span class="number">0</span>
| Comment <span class="number">@issue.numOfComments</span>
| Like <span class="number">0</span>
@if(issue.milestoneId != null) {
| Milestone <span class="number">@Milestone.findById(issue.milestoneId).title</span>
}
</p>
</div>
<div class="span5">
<p class="pull-right">@for(label <- issue.labels) { <button class="issue-label" labelId="@label.id">@label.name</button> } </p>
</div>
</div>
<div class="body" markdown resourceType=@Resource.ISSUE_POST resourceId="@issue.id">@issue.body</div>
</article>
<!-- 여기서 부터 덧글 -->
<div class="comment-area">
<p class="info">Comments <span class="number">@issue.numOfComments</span></p>
@if(issue.comments.size > 0) {
<div class="comments">
@for(comment <- issue.comments){
<div class="comment row-fluid">
<div class="span1"><img class="user-picture" src="@urlToPicture(User.findById(comment.authorId).email, 34)" /></div>
<div class="span11">
<div>
<span class="author">@comment.authorName</span>
<span class="date">@comment.date</span>
</div>
@roleCheck(session.get("userId"), project.id, models.enumeration.Resource.ISSUE_COMMENT, models.enumeration.Operation.EDIT, comment.id) {
<div class="pull-right">
<a data-toggle="modal" href='#deleteCommentConfirm'><i class="icon-remove"> </i>
</div>
<div class="modal hide" id="deleteCommentConfirm">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>@Messages("issue.delete.window")</h3>
</div>
<div class="modal-body"><p>@Messages("issue.comment.delete.confirm")</p></div>
<div class="modal-footer">
<a class="btn btn-danger"
href="@routes.IssueApp.deleteComment(project.owner, project.name, issue.id, comment.id)">@Messages("button.yes")</a>
<a href="#" class="btn" data-dismiss="modal">@Messages("button.no")</a>
</div>
</div>
}
<div markdown resourceType=@Resource.ISSUE_COMMENT resourceId=@comment.id>@comment.contents</div>
</div>
</div>
}
</div>
}
<!-- 댓글 입력 폼 -->
@form(routes.IssueApp.saveComment(project.owner, project.name, issue.id),
'id -> "comment-form",
'enctype -> "multipart/form-data"){
<div>
<textarea id="contents" name="contents" class="span8 textbody .inputxx-large" rows="5" markdown="true"></textarea>
<input class="btn add-on" type="submit" value=@Messages( "button.comment.new") />
</div>
<div class="file-attachment"></div>
}
</div>
@isVisible(models.enumeration.Resource.ISSUE_POST) {
<div class="pull-left">
<a data-toggle="modal" href="#deleteIssueConfirm" class="btn">@Messages("button.delete")</a>
</div>
}
<div class="pull-right">
<a class="btn" href=""><i class="icon-ok"></i>@Messages("button.autoNotification")</a>
<a class="btn" href="@routes.IssueApp.issues(project.owner, project.name,"open")">@Messages("button.list")</a>
@isVisible(models.enumeration.Resource.ISSUE_POST) {
<a class="btn btn-primary" href="@routes.IssueApp.editIssue(project.owner, project.name, issue.id)">@Messages("button.edit")</a>
}
</div>
<!--삭제확인상자-->
<div class="modal hide" id="deleteIssueConfirm">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>@Messages("issue.delete.window")</h3>
</div>
<div class="modal-body">
<p>@Messages("post.delete.confirm")</p>
</div>
<div class="modal-footer">
<a class="btn btn-danger"
href="@routes.IssueApp.deleteIssue(project.owner, project.name, issue.id)">@Messages("button.yes")</a>
<a href="#" class="btn" data-dismiss="modal">@Messages("button.no")</a>
</div>
</div>
@views.html.markdown()
<script type="text/javascript">
nforge.require('shortcut.submit');
nforge.require('nforge.issue.view');
nforge.require('issue.label', '@routes.IssueLabelApp.getAll(project.owner, project.name)', '@routes.IssueLabelApp.post(project.owner, project.name)', {editable: false}, function() {
@for(label <- issue.labels) {
$('button.issue-label[labelId="@label.id"]').css('background-color', '@label.color');
$('button.issue-label[labelId="@label.id"]').css('color', contrasted_color('@label.color'));
$('.labels button.btn[labelId="@label.id"]').addClass('active');
}
});
</script>
}