mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-10 07:25:50 +01:00
Global navigation moves to side menu.
This commit is contained in:
@@ -1,60 +1,162 @@
|
||||
@(active: String, repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
|
||||
@(active: String, repository: service.RepositoryService.RepositoryInfo, id: Option[String] = None)(body: Html)(implicit context: app.Context)
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
|
||||
@if(repository.commitCount > 0){
|
||||
<div class="pull-right">
|
||||
<div class="input-prepend">
|
||||
<a href="@path/@repository.owner/@repository.name/fork" class="btn" style="margin-bottom: 10px;">Fork</a>
|
||||
<span class="add-on count"><a href="@url(repository)/network/members">@repository.forkedCount</a></span>
|
||||
<div class="container">
|
||||
@if(repository.commitCount > 0){
|
||||
<div class="pull-right">
|
||||
<div class="input-prepend">
|
||||
<a href="@path/@repository.owner/@repository.name/fork" class="btn" style="margin-bottom: 10px;">Fork</a>
|
||||
<span class="add-on count"><a href="@url(repository)/network/members">@repository.forkedCount</a></span>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="head">
|
||||
@helper.html.repositoryicon(repository, true)
|
||||
<a href="@url(repository.owner)">@repository.owner</a> / <a href="@url(repository)" class="strong">@repository.name</a>
|
||||
|
||||
@defining(repository.repository){ x =>
|
||||
@if(repository.repository.originRepositoryName.isDefined){
|
||||
<div class="forked">
|
||||
forked from <a href="@path/@x.parentUserName/@x.parentRepositoryName">@x.parentUserName/@x.parentRepositoryName</a>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<hr style="margin-bottom: 20px;"/>
|
||||
<style type="text/css">
|
||||
ul.sidemenu {
|
||||
margin-left: 0px;
|
||||
}
|
||||
<div class="head">
|
||||
@helper.html.repositoryicon(repository, true)
|
||||
<a href="@url(repository.owner)">@repository.owner</a> / <a href="@url(repository)" class="strong">@repository.name</a>
|
||||
|
||||
@defining(repository.repository){ x =>
|
||||
@if(repository.repository.originRepositoryName.isDefined){
|
||||
<div class="forked">
|
||||
forked from <a href="@path/@x.parentUserName/@x.parentRepositoryName">@x.parentUserName/@x.parentRepositoryName</a>
|
||||
|
||||
ul.sidemenu li.active {
|
||||
border-top: 1px solid #eee;
|
||||
border-bottom: 1px solid #eee;
|
||||
border-right: 4px solid #bb4444;
|
||||
border-left: 1px solid white;
|
||||
}
|
||||
|
||||
ul.sidemenu div.gradient {
|
||||
width: 5px;
|
||||
height: 35px;
|
||||
background: linear-gradient(to right, #eee, #fff);
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
ul.sidemenu div.margin {
|
||||
width: 5px;
|
||||
height: 35px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
ul.sidemenu li {
|
||||
line-height: 35px;
|
||||
height: 35px;
|
||||
border-left: 1px solid #eee;
|
||||
margin-left:0px;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
ul.sidemenu li.separator {
|
||||
border-top: 1px solid #eee;
|
||||
height: 1px;
|
||||
}
|
||||
</style>
|
||||
<div class="container body">
|
||||
<div style="width: 170px;" class="pull-right">
|
||||
<ul class="sidemenu">
|
||||
<li style="height: 12px"><div class="gradient pull-left" style="height: 12px"></div></li>
|
||||
<li class="active">
|
||||
<div class="margin pull-left"></div><a href="@url(repository)"><img src="@assets/common/images/menu-code.png"> Code</a>
|
||||
</li>
|
||||
<li>
|
||||
<div class="gradient pull-left"></div><a href="@url(repository)/issues"><img src="@assets/common/images/menu-issues.png"> Issues</a>
|
||||
@if(repository.issueCount > 0){
|
||||
<div class="pull-right"><span class="label">@repository.issueCount</span></div>
|
||||
}
|
||||
</li>
|
||||
<li>
|
||||
<div class="gradient pull-left"></div><a href="@url(repository)/pulls"><img src="@assets/common/images/menu-pulls.png"> Pull Requests</a>
|
||||
@if(repository.pullCount > 0){
|
||||
<div class="pull-right"><span class="label">@repository.pullCount</span></div>
|
||||
}
|
||||
</li>
|
||||
<li>
|
||||
<div class="gradient pull-left"></div><a href="@url(repository)/wiki"><img src="@assets/common/images/menu-wiki.png"> Wiki</a>
|
||||
</li>
|
||||
<li class="separator"></li>
|
||||
<li>
|
||||
<div class="gradient pull-left"></div>Settings
|
||||
</li>
|
||||
</ul>
|
||||
<div class="small">
|
||||
<strong>HTTP</strong> <span class="mute">clone URL</span>
|
||||
</div>
|
||||
@helper.html.copy("repository-url-copy", repository.httpUrl){
|
||||
@*
|
||||
@if(settings.ssh && loginAccount.isDefined){
|
||||
<div class="btn-group add-on" data-toggle="buttons-radio" style="padding: 0px; border-width: 0px;">
|
||||
<button type="button" class="btn active" id="repository-url-http">HTTP</button><button type="button" class="btn" id="repository-url-ssh">SSH</button>
|
||||
</div>
|
||||
} else {
|
||||
<span class="add-on">HTTP</span>
|
||||
}
|
||||
*@
|
||||
<input type="text" value="@repository.httpUrl" id="repository-url" readonly>
|
||||
}
|
||||
@if(settings.ssh && loginAccount.isDefined){
|
||||
<div class="small">
|
||||
You can clone <a href="#">HTTP</a> or <a href="#">SSH</a>.
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
@repository.repository.description.map { description =>
|
||||
<p>@description</p>
|
||||
}
|
||||
<table class="global-nav box-header">
|
||||
<tr>
|
||||
<th class="box-header@if(active=="code"){ active}">
|
||||
<a href="@url(repository)">Code</a>
|
||||
</th>
|
||||
<th class="box-header@if(active=="issues"){ active}">
|
||||
<a href="@url(repository)/issues">Issues</a>
|
||||
@if(repository.issueCount > 0){
|
||||
<span class="badge">@repository.issueCount</span>
|
||||
}
|
||||
</th>
|
||||
<th class="box-header@if(active=="pulls"){ active}">
|
||||
<a href="@url(repository)/pulls">Pull Requests</a>
|
||||
@if(repository.pullCount > 0){
|
||||
<span class="badge">@repository.pullCount</span>
|
||||
}
|
||||
</th>
|
||||
<th class="box-header@if(active=="wiki"){ active}">
|
||||
<a href="@url(repository)/wiki">Wiki</a>
|
||||
</th>
|
||||
<th class="box-header@if(active=="network"){ active}">
|
||||
<a href="@url(repository)/network/members">Network</a>
|
||||
</th>
|
||||
@if(loginAccount.isDefined && (loginAccount.get.isAdmin || repository.managers.contains(loginAccount.get.userName))){
|
||||
<th class="box-header@if(active=="settings"){ active}">
|
||||
<a href="@url(repository)/settings">Settings</a>
|
||||
</th>
|
||||
<div>
|
||||
@*
|
||||
<a href="@{url(repository)}/archive/@{encodeRefName(id)}.zip" class="btn"><i class="icon-download-alt"></i>Download ZIP</a>
|
||||
*@
|
||||
<a href="#" class="btn btn-small" style="width: 147px;"><i class="icon-download-alt"></i>Download ZIP</a>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-right: 180px;">
|
||||
@repository.repository.description.map { description =>
|
||||
<p class="muted">@description</p>
|
||||
}
|
||||
</tr>
|
||||
</table>
|
||||
<style type="text/css">
|
||||
a.header-link {
|
||||
color: #888;
|
||||
}
|
||||
a.header-link strong {
|
||||
color: black;
|
||||
}
|
||||
a.header-link:hover {
|
||||
color: #0088cc;
|
||||
text-decoration: none;
|
||||
}
|
||||
</style>
|
||||
<div style="border: 1px solid silver; padding: 4px; margin-bottom: 10px;">
|
||||
<table style="width: 100%;">
|
||||
<tr>
|
||||
<td style="width: 33%; text-align: center;">
|
||||
<a href="@url(repository)/commits/@encodeRefName(id.getOrElse(""))" class="header-link">
|
||||
<img src="@assets/common/images/header-commits.png"/> <strong>@repository.commitCount</strong> commits
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 33%; text-align: center;">
|
||||
<a href="@url(repository)/branches" class="header-link" class="header-link">
|
||||
<img src="@assets/common/images/header-branches.png"/> <strong>@repository.branchList.length</strong> branches
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 33%; text-align: center;">
|
||||
<a href="@url(repository)/tags" class="header-link" class="header-link">
|
||||
<img src="@assets/common/images/header-tags.png"/> <strong>@repository.tags.length</strong> releases
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
@body
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$('table.global-nav th.box-header').click(function(){
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
@(id: String, value: String, prepend: Boolean = false)(html: Html)
|
||||
<div class="input-append@if(prepend){ input-prepend}">
|
||||
@(id: String, value: String)(html: Html)
|
||||
<div class="input-append">
|
||||
@html
|
||||
<span id="@id" class="add-on btn" data-clipboard-text="@value" data-placement="bottom" title="copy to clipboard"><i class="icon-check"></i></span>
|
||||
</div>
|
||||
|
||||
@@ -6,85 +6,86 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"New Issue - ${repository.owner}/${repository.name}", Some(repository)){
|
||||
@html.header("issues", repository)
|
||||
@tab("", repository)
|
||||
<form action="@url(repository)/issues/new" method="POST" validate="true">
|
||||
<div class="row-fluid">
|
||||
<div class="span9">
|
||||
<div class="issue-avatar-image">@avatar(loginAccount.get.userName, 48)</div>
|
||||
<div class="box issue-box">
|
||||
<div class="box-content">
|
||||
<span id="error-title" class="error"></span>
|
||||
<input type="text" name="title" value="" placeholder="Title" style="width: 600px;"/>
|
||||
<div>
|
||||
<span id="label-assigned">No one is assigned</span>
|
||||
@if(hasWritePermission){
|
||||
<input type="hidden" name="assignedUserName" value=""/>
|
||||
@helper.html.dropdown() {
|
||||
<li><a href="javascript:void(0);" class="assign" data-name=""><i class="icon-remove-circle"></i> Clear assignee</a></li>
|
||||
@collaborators.map { collaborator =>
|
||||
<li><a href="javascript:void(0);" class="assign" data-name="@collaborator"><i class="icon-while"></i>@avatar(collaborator, 20) @collaborator</a></li>
|
||||
}
|
||||
}
|
||||
}
|
||||
<div class="pull-right">
|
||||
<span id="label-milestone">No milestone</span>
|
||||
@html.header("issues", repository){
|
||||
@tab("", repository)
|
||||
<form action="@url(repository)/issues/new" method="POST" validate="true">
|
||||
<div class="row-fluid">
|
||||
<div class="span9">
|
||||
<div class="issue-avatar-image">@avatar(loginAccount.get.userName, 48)</div>
|
||||
<div class="box issue-box">
|
||||
<div class="box-content">
|
||||
<span id="error-title" class="error"></span>
|
||||
<input type="text" name="title" value="" placeholder="Title" style="width: 600px;"/>
|
||||
<div>
|
||||
<span id="label-assigned">No one is assigned</span>
|
||||
@if(hasWritePermission){
|
||||
<input type="hidden" name="milestoneId" value=""/>
|
||||
<input type="hidden" name="assignedUserName" value=""/>
|
||||
@helper.html.dropdown() {
|
||||
<li><a href="javascript:void(0);" class="milestone" data-id=""><i class="icon-remove-circle"></i> No milestone</a></li>
|
||||
@milestones.filter(_.closedDate.isEmpty).map { milestone =>
|
||||
<li>
|
||||
<a href="javascript:void(0);" class="milestone" data-id="@milestone.milestoneId" data-title="@milestone.title">
|
||||
<i class="icon-while"></i> @milestone.title
|
||||
<div class="small" style="padding-left: 20px;">
|
||||
@milestone.dueDate.map { dueDate =>
|
||||
@if(isPast(dueDate)){
|
||||
<img src="@assets/common/images/alert_mono.png"/>Due in @date(dueDate)
|
||||
} else {
|
||||
<span class="muted">Due in @date(dueDate)</span>
|
||||
}
|
||||
}.getOrElse {
|
||||
<span class="muted">No due date</span>
|
||||
}
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li><a href="javascript:void(0);" class="assign" data-name=""><i class="icon-remove-circle"></i> Clear assignee</a></li>
|
||||
@collaborators.map { collaborator =>
|
||||
<li><a href="javascript:void(0);" class="assign" data-name="@collaborator"><i class="icon-while"></i>@avatar(collaborator, 20) @collaborator</a></li>
|
||||
}
|
||||
}
|
||||
}
|
||||
<div class="pull-right">
|
||||
<span id="label-milestone">No milestone</span>
|
||||
@if(hasWritePermission){
|
||||
<input type="hidden" name="milestoneId" value=""/>
|
||||
@helper.html.dropdown() {
|
||||
<li><a href="javascript:void(0);" class="milestone" data-id=""><i class="icon-remove-circle"></i> No milestone</a></li>
|
||||
@milestones.filter(_.closedDate.isEmpty).map { milestone =>
|
||||
<li>
|
||||
<a href="javascript:void(0);" class="milestone" data-id="@milestone.milestoneId" data-title="@milestone.title">
|
||||
<i class="icon-while"></i> @milestone.title
|
||||
<div class="small" style="padding-left: 20px;">
|
||||
@milestone.dueDate.map { dueDate =>
|
||||
@if(isPast(dueDate)){
|
||||
<img src="@assets/common/images/alert_mono.png"/>Due in @date(dueDate)
|
||||
} else {
|
||||
<span class="muted">Due in @date(dueDate)</span>
|
||||
}
|
||||
}.getOrElse {
|
||||
<span class="muted">No due date</span>
|
||||
}
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
@helper.html.preview(repository, "", false, true, "width: 600px; height: 200px; max-height: 250px;", elastic = true)
|
||||
</div>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<input type="submit" class="btn btn-success" value="Submit new issue"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span3">
|
||||
@if(hasWritePermission){
|
||||
<span class="strong">Add Labels</span>
|
||||
<div>
|
||||
<div id="label-list">
|
||||
<ul class="label-list nav nav-pills nav-stacked">
|
||||
@labels.map { label =>
|
||||
<li>
|
||||
<a href="javascript:void(0);" class="toggle-label" data-label="@label.labelName" data-bgcolor="@label.color" data-fgcolor="@label.fontColor">
|
||||
<span style="background-color: #@label.color;" class="label-color"> </span>
|
||||
@label.labelName
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
<input type="hidden" name="labelNames" value=""/>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
@helper.html.preview(repository, "", false, true, "width: 600px; height: 200px; max-height: 250px;", elastic = true)
|
||||
</div>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<input type="submit" class="btn btn-success" value="Submit new issue"/>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="span3">
|
||||
@if(hasWritePermission){
|
||||
<span class="strong">Add Labels</span>
|
||||
<div>
|
||||
<div id="label-list">
|
||||
<ul class="label-list nav nav-pills nav-stacked">
|
||||
@labels.map { label =>
|
||||
<li>
|
||||
<a href="javascript:void(0);" class="toggle-label" data-label="@label.labelName" data-bgcolor="@label.color" data-fgcolor="@label.fontColor">
|
||||
<span style="background-color: #@label.color;" class="label-color"> </span>
|
||||
@label.labelName
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
<input type="hidden" name="labelNames" value=""/>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</form>
|
||||
}
|
||||
}
|
||||
<script>
|
||||
$(function(){
|
||||
|
||||
@@ -9,31 +9,32 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"${issue.title} - Issue #${issue.issueId} - ${repository.owner}/${repository.name}", Some(repository)){
|
||||
@html.header("issues", repository)
|
||||
@tab("issues", repository)
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="pull-left"><a href="@url(repository)/issues"><i class="icon-arrow-left"></i> Back to issue list</a></li>
|
||||
<li class="pull-right">Issue #@issue.issueId</li>
|
||||
</ul>
|
||||
<div class="row-fluid">
|
||||
<div class="span10">
|
||||
@issuedetail(issue, comments, collaborators, milestones, hasWritePermission, repository)
|
||||
@commentlist(issue, comments, hasWritePermission, repository)
|
||||
@commentform(issue, hasWritePermission, repository)
|
||||
</div>
|
||||
<div class="span2">
|
||||
@if(issue.closed) {
|
||||
<span class="label label-important issue-status">Closed</span>
|
||||
} else {
|
||||
<span class="label label-success issue-status">Open</span>
|
||||
}
|
||||
<div class="small" style="text-align: center;">
|
||||
@defining(comments.filter( _.action.contains("comment") ).size){ count =>
|
||||
<span class="strong">@count</span> @plural(count, "comment")
|
||||
}
|
||||
@html.header("issues", repository){
|
||||
@tab("issues", repository)
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="pull-left"><a href="@url(repository)/issues"><i class="icon-arrow-left"></i> Back to issue list</a></li>
|
||||
<li class="pull-right">Issue #@issue.issueId</li>
|
||||
</ul>
|
||||
<div class="row-fluid">
|
||||
<div class="span10">
|
||||
@issuedetail(issue, comments, collaborators, milestones, hasWritePermission, repository)
|
||||
@commentlist(issue, comments, hasWritePermission, repository)
|
||||
@commentform(issue, hasWritePermission, repository)
|
||||
</div>
|
||||
<div class="span2">
|
||||
@if(issue.closed) {
|
||||
<span class="label label-important issue-status">Closed</span>
|
||||
} else {
|
||||
<span class="label label-success issue-status">Open</span>
|
||||
}
|
||||
<div class="small" style="text-align: center;">
|
||||
@defining(comments.filter( _.action.contains("comment") ).size){ count =>
|
||||
<span class="strong">@count</span> @plural(count, "comment")
|
||||
}
|
||||
</div>
|
||||
<hr/>
|
||||
@issues.html.labels(issue, issueLabels, labels, hasWritePermission, repository)
|
||||
</div>
|
||||
<hr/>
|
||||
@issues.html.labels(issue, issueLabels, labels, hasWritePermission, repository)
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,129 +16,130 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"Issues - ${repository.owner}/${repository.name}", Some(repository)){
|
||||
@html.header("issues", repository)
|
||||
@tab("issues", repository)
|
||||
<div class="row-fluid">
|
||||
<div class="span3">
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li@if(filter == "all"){ class="active"}>
|
||||
<a href="@url(repository)/issues@condition.toURL">
|
||||
<span class="count-right">@allCount</span>
|
||||
Everyone's Issues
|
||||
</a>
|
||||
</li>
|
||||
@if(loginAccount.isDefined){
|
||||
<li@if(filter == "assigned"){ class="active"}>
|
||||
<a href="@url(repository)/issues/assigned/@loginAccount.map(_.userName)@condition.toURL">
|
||||
<span class="count-right">@assignedCount</span>
|
||||
Assigned to you
|
||||
</a>
|
||||
</li>
|
||||
<li@if(filter == "created_by"){ class="active"}>
|
||||
<a href="@url(repository)/issues/created_by/@loginAccount.map(_.userName)@condition.toURL">
|
||||
<span class="count-right">@createdByCount</span>
|
||||
Created by you
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
<hr/>
|
||||
@if(condition.milestoneId.isEmpty){
|
||||
<span class="muted small">No milestone selected</span>
|
||||
} else {
|
||||
@if(condition.milestoneId.get.isEmpty){
|
||||
<span class="muted small">Issues with no milestone</span>
|
||||
@html.header("issues", repository){
|
||||
@tab("issues", repository)
|
||||
<div class="row-fluid">
|
||||
<div class="span3">
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li@if(filter == "all"){ class="active"}>
|
||||
<a href="@url(repository)/issues@condition.toURL">
|
||||
<span class="count-right">@allCount</span>
|
||||
Everyone's Issues
|
||||
</a>
|
||||
</li>
|
||||
@if(loginAccount.isDefined){
|
||||
<li@if(filter == "assigned"){ class="active"}>
|
||||
<a href="@url(repository)/issues/assigned/@loginAccount.map(_.userName)@condition.toURL">
|
||||
<span class="count-right">@assignedCount</span>
|
||||
Assigned to you
|
||||
</a>
|
||||
</li>
|
||||
<li@if(filter == "created_by"){ class="active"}>
|
||||
<a href="@url(repository)/issues/created_by/@loginAccount.map(_.userName)@condition.toURL">
|
||||
<span class="count-right">@createdByCount</span>
|
||||
Created by you
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
<hr/>
|
||||
@if(condition.milestoneId.isEmpty){
|
||||
<span class="muted small">No milestone selected</span>
|
||||
} else {
|
||||
<span class="muted small">Milestone:</span> @milestones.find(_.milestoneId == condition.milestoneId.get.get).map(_.title)
|
||||
}
|
||||
}
|
||||
@helper.html.dropdown() {
|
||||
@if(condition.milestoneId.isDefined){
|
||||
<li>
|
||||
<a href="@condition.copy(milestoneId = None).toURL">
|
||||
<i class="icon-remove-circle"></i> Clear milestone filter
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
<li>
|
||||
<a href="@condition.copy(milestoneId = Some(None)).toURL">
|
||||
@helper.html.checkicon(condition.milestoneId == Some(None)) Issues with no milestone
|
||||
</a>
|
||||
</li>
|
||||
@milestones.filter(_.closedDate.isEmpty).map { milestone =>
|
||||
<li>
|
||||
<a href="@condition.copy(milestoneId = Some(Some(milestone.milestoneId))).toURL">
|
||||
@helper.html.checkicon(condition.milestoneId == Some(Some(milestone.milestoneId))) @milestone.title
|
||||
<div class="small" style="padding-left: 20px;">
|
||||
@milestone.dueDate.map { dueDate =>
|
||||
@if(isPast(dueDate)){
|
||||
<img src="@assets/common/images/alert_mono.png"/>Due in @date(dueDate)
|
||||
} else {
|
||||
<span class="muted">Due in @date(dueDate)</span>
|
||||
}
|
||||
}.getOrElse {
|
||||
<span class="muted">No due date</span>
|
||||
}
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
@if(condition.milestoneId.isDefined && condition.milestoneId.get.isDefined){
|
||||
@milestones.find(_.milestoneId == condition.milestoneId.get.get).map { milestone =>
|
||||
<div style="margin-top: 4px;">
|
||||
@_root_.issues.milestones.html.progress(openCount + closedCount, closedCount, false)
|
||||
</div>
|
||||
<span class="muted small">@openCount open issues</span>
|
||||
@if(milestone.closedDate.isDefined){
|
||||
@milestone.closedDate.map { closedDate =>
|
||||
<span class="small">Closed in @date(closedDate)</span>
|
||||
}
|
||||
@if(condition.milestoneId.get.isEmpty){
|
||||
<span class="muted small">Issues with no milestone</span>
|
||||
} else {
|
||||
@milestone.dueDate.map { dueDate =>
|
||||
@if(isPast(dueDate)){
|
||||
<img src="@assets/common/images/alert.png"/><span class="small milestone-alert">Due in @date(dueDate)</span>
|
||||
} else {
|
||||
<span class="small">Due in @date(dueDate)</span>
|
||||
<span class="muted small">Milestone:</span> @milestones.find(_.milestoneId == condition.milestoneId.get.get).map(_.title)
|
||||
}
|
||||
}
|
||||
@helper.html.dropdown() {
|
||||
@if(condition.milestoneId.isDefined){
|
||||
<li>
|
||||
<a href="@condition.copy(milestoneId = None).toURL">
|
||||
<i class="icon-remove-circle"></i> Clear milestone filter
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
<li>
|
||||
<a href="@condition.copy(milestoneId = Some(None)).toURL">
|
||||
@helper.html.checkicon(condition.milestoneId == Some(None)) Issues with no milestone
|
||||
</a>
|
||||
</li>
|
||||
@milestones.filter(_.closedDate.isEmpty).map { milestone =>
|
||||
<li>
|
||||
<a href="@condition.copy(milestoneId = Some(Some(milestone.milestoneId))).toURL">
|
||||
@helper.html.checkicon(condition.milestoneId == Some(Some(milestone.milestoneId))) @milestone.title
|
||||
<div class="small" style="padding-left: 20px;">
|
||||
@milestone.dueDate.map { dueDate =>
|
||||
@if(isPast(dueDate)){
|
||||
<img src="@assets/common/images/alert_mono.png"/>Due in @date(dueDate)
|
||||
} else {
|
||||
<span class="muted">Due in @date(dueDate)</span>
|
||||
}
|
||||
}.getOrElse {
|
||||
<span class="muted">No due date</span>
|
||||
}
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
@if(condition.milestoneId.isDefined && condition.milestoneId.get.isDefined){
|
||||
@milestones.find(_.milestoneId == condition.milestoneId.get.get).map { milestone =>
|
||||
<div style="margin-top: 4px;">
|
||||
@_root_.issues.milestones.html.progress(openCount + closedCount, closedCount, false)
|
||||
</div>
|
||||
<span class="muted small">@openCount open issues</span>
|
||||
@if(milestone.closedDate.isDefined){
|
||||
@milestone.closedDate.map { closedDate =>
|
||||
<span class="small">Closed in @date(closedDate)</span>
|
||||
}
|
||||
} else {
|
||||
@milestone.dueDate.map { dueDate =>
|
||||
@if(isPast(dueDate)){
|
||||
<img src="@assets/common/images/alert.png"/><span class="small milestone-alert">Due in @date(dueDate)</span>
|
||||
} else {
|
||||
<span class="small">Due in @date(dueDate)</span>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
<hr/>
|
||||
<span class="strong">Labels</span>
|
||||
<div>
|
||||
<div id="label-list">
|
||||
<ul class="label-list nav nav-pills nav-stacked">
|
||||
@labels.map { label =>
|
||||
<li>
|
||||
<a href="@condition.copy(labels = (if(condition.labels.contains(label.labelName)) condition.labels - label.labelName else condition.labels + label.labelName)).toURL"
|
||||
@if(condition.labels.contains(label.labelName)){style="background-color: #@label.color; color: #@label.fontColor;"}>
|
||||
<span class="count-right">@labelCounts.getOrElse(label.labelName, 0)</span>
|
||||
<span style="background-color: #@label.color;" class="label-color"> </span>
|
||||
@label.labelName
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@if(hasWritePermission){
|
||||
<hr/>
|
||||
<input type="button" class="btn btn-block" id="manageLabel" data-toggle="button" value="Manage Labels"/>
|
||||
<br/>
|
||||
<span class="strong">New label</span>
|
||||
@_root_.issues.labels.html.edit(None, repository)
|
||||
}
|
||||
<span class="strong">Labels</span>
|
||||
<div>
|
||||
<div id="label-list">
|
||||
<ul class="label-list nav nav-pills nav-stacked">
|
||||
@labels.map { label =>
|
||||
<li>
|
||||
<a href="@condition.copy(labels = (if(condition.labels.contains(label.labelName)) condition.labels - label.labelName else condition.labels + label.labelName)).toURL"
|
||||
@if(condition.labels.contains(label.labelName)){style="background-color: #@label.color; color: #@label.fontColor;"}>
|
||||
<span class="count-right">@labelCounts.getOrElse(label.labelName, 0)</span>
|
||||
<span style="background-color: #@label.color;" class="label-color"> </span>
|
||||
@label.labelName
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@if(hasWritePermission){
|
||||
<hr/>
|
||||
<input type="button" class="btn btn-block" id="manageLabel" data-toggle="button" value="Manage Labels"/>
|
||||
<br/>
|
||||
<span class="strong">New label</span>
|
||||
@_root_.issues.labels.html.edit(None, repository)
|
||||
}
|
||||
</div>
|
||||
@***** show issue list *****@
|
||||
@listparts(issues, page, openCount, closedCount, condition, collaborators, milestones, labels, Some(repository), hasWritePermission)
|
||||
</div>
|
||||
@***** show issue list *****@
|
||||
@listparts(issues, page, openCount, closedCount, condition, collaborators, milestones, labels, Some(repository), hasWritePermission)
|
||||
</div>
|
||||
@if(hasWritePermission){
|
||||
<form id="batcheditForm" method="POST">
|
||||
<input type="hidden" name="value"/>
|
||||
<input type="hidden" name="checked"/>
|
||||
</form>
|
||||
@if(hasWritePermission){
|
||||
<form id="batcheditForm" method="POST">
|
||||
<input type="hidden" name="value"/>
|
||||
<input type="hidden" name="checked"/>
|
||||
</form>
|
||||
}
|
||||
}
|
||||
}
|
||||
@if(hasWritePermission){
|
||||
|
||||
@@ -2,38 +2,39 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"Milestones - ${repository.owner}/${repository.name}"){
|
||||
@html.header("milestones", repository)
|
||||
@issues.html.tab("milestones", repository)
|
||||
<form method="POST" action="@url(repository)/issues/milestones/@if(milestone.isEmpty){new}else{@milestone.get.milestoneId/edit}" validate="true">
|
||||
<fieldset>
|
||||
<label for="title"><string>Title</string></label>
|
||||
<input type="text" id="title" name="title" style="width: 400px;" value="@milestone.map(_.title)"/>
|
||||
<span id="error-title" class="error"></span>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="description" class="strong">Description</label>
|
||||
<textarea id="description" name="description" style="width: 500px; height: 150px;">@milestone.map(_.description)</textarea>
|
||||
<span id="error-description" class="error"></span>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="dueDate" class="strong">Due Date</label>
|
||||
@helper.html.datepicker("dueDate", milestone.flatMap(_.dueDate))
|
||||
<span id="error-dueDate" class="error"></span>
|
||||
</fieldset>
|
||||
<hr>
|
||||
<div class="pull-right">
|
||||
@if(milestone.isEmpty){
|
||||
<input type="submit" class="btn" value="Create milestone"/>
|
||||
} else {
|
||||
@if(milestone.get.closedDate.isDefined){
|
||||
<input type="button" class="btn" value="Open" id="open"
|
||||
onclick="location.href='@url(repository)/issues/milestones/@milestone.get.milestoneId/close';"/>
|
||||
@html.header("milestones", repository){
|
||||
@issues.html.tab("milestones", repository)
|
||||
<form method="POST" action="@url(repository)/issues/milestones/@if(milestone.isEmpty){new}else{@milestone.get.milestoneId/edit}" validate="true">
|
||||
<fieldset>
|
||||
<label for="title"><string>Title</string></label>
|
||||
<input type="text" id="title" name="title" style="width: 400px;" value="@milestone.map(_.title)"/>
|
||||
<span id="error-title" class="error"></span>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="description" class="strong">Description</label>
|
||||
<textarea id="description" name="description" style="width: 500px; height: 150px;">@milestone.map(_.description)</textarea>
|
||||
<span id="error-description" class="error"></span>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="dueDate" class="strong">Due Date</label>
|
||||
@helper.html.datepicker("dueDate", milestone.flatMap(_.dueDate))
|
||||
<span id="error-dueDate" class="error"></span>
|
||||
</fieldset>
|
||||
<hr>
|
||||
<div class="pull-right">
|
||||
@if(milestone.isEmpty){
|
||||
<input type="submit" class="btn" value="Create milestone"/>
|
||||
} else {
|
||||
<input type="button" class="btn" value="Close" id="close"
|
||||
onclick="location.href='@url(repository)/issues/milestones/@milestone.get.milestoneId/open';"/>
|
||||
@if(milestone.get.closedDate.isDefined){
|
||||
<input type="button" class="btn" value="Open" id="open"
|
||||
onclick="location.href='@url(repository)/issues/milestones/@milestone.get.milestoneId/close';"/>
|
||||
} else {
|
||||
<input type="button" class="btn" value="Close" id="close"
|
||||
onclick="location.href='@url(repository)/issues/milestones/@milestone.get.milestoneId/open';"/>
|
||||
}
|
||||
<input type="submit" class="btn" value="Update milestone"/>
|
||||
}
|
||||
<input type="submit" class="btn" value="Update milestone"/>
|
||||
}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,95 +5,96 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"Milestones - ${repository.owner}/${repository.name}"){
|
||||
@html.header("issues", repository)
|
||||
@issues.html.tab("milestones", repository)
|
||||
<div class="row-fluid">
|
||||
<div class="span3">
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li@if(state == "open"){ class="active"}>
|
||||
<a href="?state=open">
|
||||
<span class="count-right">@milestones.filter(_._1.closedDate.isEmpty).size</span>
|
||||
Open Milestones
|
||||
</a>
|
||||
</li>
|
||||
<li@if(state == "closed"){ class="active"}>
|
||||
<a href="?state=closed">
|
||||
<span class="count-right">@milestones.filter(_._1.closedDate.isDefined).size</span>
|
||||
Closed Milestones
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
@if(hasWritePermission){
|
||||
<hr>
|
||||
<a href="@url(repository)/issues/milestones/new" class="btn btn-block">Create a new milestone</a>
|
||||
}
|
||||
</div>
|
||||
<div class="span9">
|
||||
<table class="table table-bordered table-hover">
|
||||
@defining(milestones.filter { case (milestone, _, _) =>
|
||||
milestone.closedDate.map(_ => state == "closed").getOrElse(state == "open")
|
||||
}){ milestones =>
|
||||
@milestones.map { case (milestone, openCount, closedCount) =>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="milestone row-fluid">
|
||||
<div class="span4">
|
||||
<a href="@url(repository)/issues?milestone=@milestone.milestoneId&state=open" class="milestone-title">@milestone.title</a><br>
|
||||
@if(milestone.closedDate.isDefined){
|
||||
<span class="muted">Closed @datetime(milestone.closedDate.get)</span>
|
||||
} else {
|
||||
@milestone.dueDate.map { dueDate =>
|
||||
@if(isPast(dueDate)){
|
||||
<img src="@assets/common/images/alert.png"/><span class="muted milestone-alert">Due in @date(dueDate)</span>
|
||||
} else {
|
||||
<span class="muted">Due in @date(dueDate)</span>
|
||||
}
|
||||
}.getOrElse {
|
||||
<span class="muted">No due date</span>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
<div class="span8">
|
||||
<div class="milestone-menu">
|
||||
<div class="pull-right">
|
||||
@if(hasWritePermission){
|
||||
<a href="@url(repository)/issues/milestones/@milestone.milestoneId/edit">Edit
|
||||
@if(milestone.closedDate.isDefined){
|
||||
<a href="@url(repository)/issues/milestones/@milestone.milestoneId/open">Open</a>
|
||||
} else {
|
||||
<a href="@url(repository)/issues/milestones/@milestone.milestoneId/close">Close</a>
|
||||
}
|
||||
<a href="@url(repository)/issues/milestones/@milestone.milestoneId/delete" class="delete">Delete</a>
|
||||
}
|
||||
<a href="@url(repository)/issues?milestone=@milestone.milestoneId&state=open">Browse issues</a>
|
||||
</div>
|
||||
<span class="muted">@closedCount closed - @openCount open</span>
|
||||
</div>
|
||||
@progress(openCount + closedCount, closedCount, true)
|
||||
</div>
|
||||
</div>
|
||||
@if(milestone.description.isDefined){
|
||||
<div class="milestone-description">
|
||||
@markdown(milestone.description.get, repository, false, false)
|
||||
</div>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if(milestones.isEmpty){
|
||||
<tr>
|
||||
<td style="padding: 20px; background-color: #eee; text-align: center;">
|
||||
No milestones to show.
|
||||
@if(hasWritePermission){
|
||||
<a href="@url(repository)/issues/milestones/new">Create a new milestone.</a>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@html.header("issues", repository){
|
||||
@issues.html.tab("milestones", repository)
|
||||
<div class="row-fluid">
|
||||
<div class="span3">
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li@if(state == "open"){ class="active"}>
|
||||
<a href="?state=open">
|
||||
<span class="count-right">@milestones.filter(_._1.closedDate.isEmpty).size</span>
|
||||
Open Milestones
|
||||
</a>
|
||||
</li>
|
||||
<li@if(state == "closed"){ class="active"}>
|
||||
<a href="?state=closed">
|
||||
<span class="count-right">@milestones.filter(_._1.closedDate.isDefined).size</span>
|
||||
Closed Milestones
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
@if(hasWritePermission){
|
||||
<hr>
|
||||
<a href="@url(repository)/issues/milestones/new" class="btn btn-block">Create a new milestone</a>
|
||||
}
|
||||
</table>
|
||||
</div>
|
||||
<div class="span9">
|
||||
<table class="table table-bordered table-hover">
|
||||
@defining(milestones.filter { case (milestone, _, _) =>
|
||||
milestone.closedDate.map(_ => state == "closed").getOrElse(state == "open")
|
||||
}){ milestones =>
|
||||
@milestones.map { case (milestone, openCount, closedCount) =>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="milestone row-fluid">
|
||||
<div class="span4">
|
||||
<a href="@url(repository)/issues?milestone=@milestone.milestoneId&state=open" class="milestone-title">@milestone.title</a><br>
|
||||
@if(milestone.closedDate.isDefined){
|
||||
<span class="muted">Closed @datetime(milestone.closedDate.get)</span>
|
||||
} else {
|
||||
@milestone.dueDate.map { dueDate =>
|
||||
@if(isPast(dueDate)){
|
||||
<img src="@assets/common/images/alert.png"/><span class="muted milestone-alert">Due in @date(dueDate)</span>
|
||||
} else {
|
||||
<span class="muted">Due in @date(dueDate)</span>
|
||||
}
|
||||
}.getOrElse {
|
||||
<span class="muted">No due date</span>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
<div class="span8">
|
||||
<div class="milestone-menu">
|
||||
<div class="pull-right">
|
||||
@if(hasWritePermission){
|
||||
<a href="@url(repository)/issues/milestones/@milestone.milestoneId/edit">Edit
|
||||
@if(milestone.closedDate.isDefined){
|
||||
<a href="@url(repository)/issues/milestones/@milestone.milestoneId/open">Open</a>
|
||||
} else {
|
||||
<a href="@url(repository)/issues/milestones/@milestone.milestoneId/close">Close</a>
|
||||
}
|
||||
<a href="@url(repository)/issues/milestones/@milestone.milestoneId/delete" class="delete">Delete</a>
|
||||
}
|
||||
<a href="@url(repository)/issues?milestone=@milestone.milestoneId&state=open">Browse issues</a>
|
||||
</div>
|
||||
<span class="muted">@closedCount closed - @openCount open</span>
|
||||
</div>
|
||||
@progress(openCount + closedCount, closedCount, true)
|
||||
</div>
|
||||
</div>
|
||||
@if(milestone.description.isDefined){
|
||||
<div class="milestone-description">
|
||||
@markdown(milestone.description.get, repository, false, false)
|
||||
</div>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if(milestones.isEmpty){
|
||||
<tr>
|
||||
<td style="padding: 20px; background-color: #eee; text-align: center;">
|
||||
No milestones to show.
|
||||
@if(hasWritePermission){
|
||||
<a href="@url(repository)/issues/milestones/new">Create a new milestone.</a>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
<script>
|
||||
$(function(){
|
||||
|
||||
@@ -72,9 +72,7 @@
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="container body">
|
||||
@body
|
||||
</div>
|
||||
@body
|
||||
<script>
|
||||
$(function(){
|
||||
$('#search').submit(function(){
|
||||
|
||||
@@ -12,77 +12,78 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"Pull Requests - ${repository.owner}/${repository.name}", Some(repository)){
|
||||
@html.header("pulls", repository)
|
||||
<div class="pullreq-info">
|
||||
<div id="compare-info">
|
||||
<a href="#" id="edit-compare-condition" class="btn btn-mini pull-right">Edit</a>
|
||||
<span class="label label-info monospace">@originRepository.owner:@originId</span> ... <span class="label label-info monospace">@forkedRepository.owner:@forkedId</span>
|
||||
@html.header("pulls", repository){
|
||||
<div class="pullreq-info">
|
||||
<div id="compare-info">
|
||||
<a href="#" id="edit-compare-condition" class="btn btn-mini pull-right">Edit</a>
|
||||
<span class="label label-info monospace">@originRepository.owner:@originId</span> ... <span class="label label-info monospace">@forkedRepository.owner:@forkedId</span>
|
||||
</div>
|
||||
<div id="compare-edit" style="display: none;">
|
||||
<a href="#" id="cancel-condition-editing" class="pull-right"><i class="icon-remove-circle"></i></a>
|
||||
@helper.html.dropdown(originRepository.owner + "/" + originRepository.name, "base fork") {
|
||||
@members.map { case (owner, name) =>
|
||||
<li><a href="#" class="origin-owner" data-owner="@owner" data-name="@name">@helper.html.checkicon(owner == originRepository.owner) @owner/@name</a></li>
|
||||
}
|
||||
}
|
||||
@helper.html.dropdown(originId, "base") {
|
||||
@originRepository.branchList.map { branch =>
|
||||
<li><a href="#" class="origin-branch" data-branch="@encodeRefName(branch)">@helper.html.checkicon(branch == originId) @branch</a></li>
|
||||
}
|
||||
}
|
||||
...
|
||||
@helper.html.dropdown(forkedRepository.owner + "/" + forkedRepository.name, "head fork") {
|
||||
@members.map { case (owner, name) =>
|
||||
<li><a href="#" class="forked-owner" data-owner="@owner" data-name="@name">@helper.html.checkicon(owner == forkedRepository.owner) @owner/@name</a></li>
|
||||
}
|
||||
}
|
||||
@helper.html.dropdown(forkedId, "compare") {
|
||||
@forkedRepository.branchList.map { branch =>
|
||||
<li><a href="#" class="forked-branch" data-branch="@encodeRefName(branch)">@helper.html.checkicon(branch == forkedId) @branch</a></li>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div id="compare-edit" style="display: none;">
|
||||
<a href="#" id="cancel-condition-editing" class="pull-right"><i class="icon-remove-circle"></i></a>
|
||||
@helper.html.dropdown(originRepository.owner + "/" + originRepository.name, "base fork") {
|
||||
@members.map { case (owner, name) =>
|
||||
<li><a href="#" class="origin-owner" data-owner="@owner" data-name="@name">@helper.html.checkicon(owner == originRepository.owner) @owner/@name</a></li>
|
||||
}
|
||||
}
|
||||
@helper.html.dropdown(originId, "base") {
|
||||
@originRepository.branchList.map { branch =>
|
||||
<li><a href="#" class="origin-branch" data-branch="@encodeRefName(branch)">@helper.html.checkicon(branch == originId) @branch</a></li>
|
||||
}
|
||||
}
|
||||
...
|
||||
@helper.html.dropdown(forkedRepository.owner + "/" + forkedRepository.name, "head fork") {
|
||||
@members.map { case (owner, name) =>
|
||||
<li><a href="#" class="forked-owner" data-owner="@owner" data-name="@name">@helper.html.checkicon(owner == forkedRepository.owner) @owner/@name</a></li>
|
||||
}
|
||||
}
|
||||
@helper.html.dropdown(forkedId, "compare") {
|
||||
@forkedRepository.branchList.map { branch =>
|
||||
<li><a href="#" class="forked-branch" data-branch="@encodeRefName(branch)">@helper.html.checkicon(branch == forkedId) @branch</a></li>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@if(commits.nonEmpty && hasWritePermission){
|
||||
<div style="margin-bottom: 10px;" id="create-pull-request">
|
||||
<a href="#" class="btn" id="show-form">Click to create a pull request for this comparison</a>
|
||||
</div>
|
||||
<div id="pull-request-form" class="box" style="display: none;">
|
||||
<div class="box-content">
|
||||
<form method="POST" action="@path/@originRepository.owner/@originRepository.name/pulls/new" validate="true">
|
||||
<div style="width: 260px; position: absolute; margin-left: 635px;">
|
||||
<div class="check-conflict" style="display: none;">
|
||||
<img src="@assets/common/images/indicator.gif"/> Checking...
|
||||
@if(commits.nonEmpty && hasWritePermission){
|
||||
<div style="margin-bottom: 10px;" id="create-pull-request">
|
||||
<a href="#" class="btn" id="show-form">Click to create a pull request for this comparison</a>
|
||||
</div>
|
||||
<div id="pull-request-form" class="box" style="display: none;">
|
||||
<div class="box-content">
|
||||
<form method="POST" action="@path/@originRepository.owner/@originRepository.name/pulls/new" validate="true">
|
||||
<div style="width: 260px; position: absolute; margin-left: 635px;">
|
||||
<div class="check-conflict" style="display: none;">
|
||||
<img src="@assets/common/images/indicator.gif"/> Checking...
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 620px; border-right: 1px solid #d4d4d4;">
|
||||
<span class="error" id="error-title"></span>
|
||||
<input type="text" name="title" style="width: 600px" placeholder="Title"/>
|
||||
@helper.html.preview(repository, "", false, true, "width: 600px; height: 200px;")
|
||||
<input type="hidden" name="targetUserName" value="@originRepository.owner"/>
|
||||
<input type="hidden" name="targetBranch" value="@originId"/>
|
||||
<input type="hidden" name="requestUserName" value="@forkedRepository.owner"/>
|
||||
<input type="hidden" name="requestRepositoryName" value="@forkedRepository.name"/>
|
||||
<input type="hidden" name="requestBranch" value="@forkedId"/>
|
||||
<input type="hidden" name="commitIdFrom" value="@sourceId"/>
|
||||
<input type="hidden" name="commitIdTo" value="@commitId"/>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if(commits.isEmpty){
|
||||
<table class="table table-bordered table-hover table-issues">
|
||||
<tr>
|
||||
<td style="padding: 20px; background-color: #eee; text-align: center;">
|
||||
<h4>There isn't anything to compare.</h4>
|
||||
<span class="strong">@originRepository.owner:@originId</span> and <span class="strong">@forkedRepository.owner:@forkedId</span> are identical.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
} else {
|
||||
@pulls.html.commits(commits, repository)
|
||||
@helper.html.diff(diffs, repository, Some(commitId), Some(sourceId), true)
|
||||
<div style="width: 620px; border-right: 1px solid #d4d4d4;">
|
||||
<span class="error" id="error-title"></span>
|
||||
<input type="text" name="title" style="width: 600px" placeholder="Title"/>
|
||||
@helper.html.preview(repository, "", false, true, "width: 600px; height: 200px;")
|
||||
<input type="hidden" name="targetUserName" value="@originRepository.owner"/>
|
||||
<input type="hidden" name="targetBranch" value="@originId"/>
|
||||
<input type="hidden" name="requestUserName" value="@forkedRepository.owner"/>
|
||||
<input type="hidden" name="requestRepositoryName" value="@forkedRepository.name"/>
|
||||
<input type="hidden" name="requestBranch" value="@forkedId"/>
|
||||
<input type="hidden" name="commitIdFrom" value="@sourceId"/>
|
||||
<input type="hidden" name="commitIdTo" value="@commitId"/>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if(commits.isEmpty){
|
||||
<table class="table table-bordered table-hover table-issues">
|
||||
<tr>
|
||||
<td style="padding: 20px; background-color: #eee; text-align: center;">
|
||||
<h4>There isn't anything to compare.</h4>
|
||||
<span class="strong">@originRepository.owner:@originId</span> and <span class="strong">@forkedRepository.owner:@forkedId</span> are identical.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
} else {
|
||||
@pulls.html.commits(commits, repository)
|
||||
@helper.html.diff(diffs, repository, Some(commitId), Some(sourceId), true)
|
||||
}
|
||||
}
|
||||
}
|
||||
<script>
|
||||
|
||||
@@ -11,40 +11,41 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"Pull Requests - ${repository.owner}/${repository.name}", Some(repository)){
|
||||
@html.header("pulls", repository)
|
||||
<div class="row-fluid">
|
||||
<div class="span3">
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li@if(filter.isEmpty){ class="active"}>
|
||||
<a href="@url(repository)/pulls">
|
||||
<span class="count-right">@allCount</span>
|
||||
All Requests
|
||||
</a>
|
||||
</li>
|
||||
@if(loginAccount.isDefined){
|
||||
<li@if(filter.map(_ == loginAccount.get.userName).getOrElse(false)){ class="active"}>
|
||||
<a href="@url(repository)/pulls/@loginAccount.map(_.userName)">
|
||||
<span class="count-right">@counts.find(_.userName == loginAccount.get.userName).map(_.count).getOrElse(0)</span>
|
||||
Yours
|
||||
</a>
|
||||
</li>
|
||||
@html.header("pulls", repository){
|
||||
<div class="row-fluid">
|
||||
<div class="span3">
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li@if(filter.isEmpty){ class="active"}>
|
||||
<a href="@url(repository)/pulls">
|
||||
<span class="count-right">@allCount</span>
|
||||
All Requests
|
||||
</a>
|
||||
</li>
|
||||
@if(loginAccount.isDefined){
|
||||
<li@if(filter.map(_ == loginAccount.get.userName).getOrElse(false)){ class="active"}>
|
||||
<a href="@url(repository)/pulls/@loginAccount.map(_.userName)">
|
||||
<span class="count-right">@counts.find(_.userName == loginAccount.get.userName).map(_.count).getOrElse(0)</span>
|
||||
Yours
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
<hr>
|
||||
<ul class="nav nav-pills nav-stacked small">
|
||||
@counts.map { user =>
|
||||
@if(loginAccount.isEmpty || loginAccount.get.userName != user.userName){
|
||||
<li@if(filter.map(_ == user.userName).getOrElse(false)){ class="active"}>
|
||||
<a href="@url(repository)/pulls/@user.userName">
|
||||
<span class="count-right">@user.count</span>
|
||||
@user.userName
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
<hr>
|
||||
<ul class="nav nav-pills nav-stacked small">
|
||||
@counts.map { user =>
|
||||
@if(loginAccount.isEmpty || loginAccount.get.userName != user.userName){
|
||||
<li@if(filter.map(_ == user.userName).getOrElse(false)){ class="active"}>
|
||||
<a href="@url(repository)/pulls/@user.userName">
|
||||
<span class="count-right">@user.count</span>
|
||||
@user.userName
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
</ul>
|
||||
</div>
|
||||
@listparts(issues, page, openCount, closedCount, condition, Some(repository), hasWritePermission)
|
||||
</div>
|
||||
@listparts(issues, page, openCount, closedCount, condition, Some(repository), hasWritePermission)
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,42 +12,43 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"${issue.title} - Pull Request #${issue.issueId} - ${repository.owner}/${repository.name}", Some(repository)){
|
||||
@html.header("pulls", repository)
|
||||
@defining(dayByDayCommits.flatten){ commits =>
|
||||
<div class="pullreq-info">
|
||||
@if(issue.closed) {
|
||||
@comments.find(_.action == "merge").map{ comment =>
|
||||
<span class="label label-info">Merged</span>
|
||||
@user(comment.commentedUserName, styleClass="username strong") merged @commits.size @plural(commits.size, "commit")
|
||||
into <code>@pullreq.userName:@pullreq.branch</code> from <code>@pullreq.requestUserName:@pullreq.requestBranch</code>
|
||||
at @datetime(comment.registeredDate)
|
||||
}.getOrElse {
|
||||
<span class="label label-important">Closed</span>
|
||||
@html.header("pulls", repository){
|
||||
@defining(dayByDayCommits.flatten){ commits =>
|
||||
<div class="pullreq-info">
|
||||
@if(issue.closed) {
|
||||
@comments.find(_.action == "merge").map{ comment =>
|
||||
<span class="label label-info">Merged</span>
|
||||
@user(comment.commentedUserName, styleClass="username strong") merged @commits.size @plural(commits.size, "commit")
|
||||
into <code>@pullreq.userName:@pullreq.branch</code> from <code>@pullreq.requestUserName:@pullreq.requestBranch</code>
|
||||
at @datetime(comment.registeredDate)
|
||||
}.getOrElse {
|
||||
<span class="label label-important">Closed</span>
|
||||
@user(issue.openedUserName, styleClass="username strong") wants to merge @commits.size @plural(commits.size, "commit")
|
||||
into <code>@pullreq.userName:@pullreq.branch</code> from <code>@pullreq.requestUserName:@pullreq.requestBranch</code>
|
||||
}
|
||||
} else {
|
||||
<span class="label label-success">Open</span>
|
||||
@user(issue.openedUserName, styleClass="username strong") wants to merge @commits.size @plural(commits.size, "commit")
|
||||
into <code>@pullreq.userName:@pullreq.branch</code> from <code>@pullreq.requestUserName:@pullreq.requestBranch</code>
|
||||
}
|
||||
} else {
|
||||
<span class="label label-success">Open</span>
|
||||
@user(issue.openedUserName, styleClass="username strong") wants to merge @commits.size @plural(commits.size, "commit")
|
||||
into <code>@pullreq.userName:@pullreq.branch</code> from <code>@pullreq.requestUserName:@pullreq.requestBranch</code>
|
||||
}
|
||||
</div>
|
||||
<ul class="nav nav-tabs" id="pullreq-tab">
|
||||
<li class="active"><a href="#discussion">Discussion</a></li>
|
||||
<li><a href="#commits">Commits <span class="badge">@commits.size</span></a></li>
|
||||
<li><a href="#files">Files Changed <span class="badge">@diffs.size</span></a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="discussion">
|
||||
@pulls.html.discussion(issue, pullreq, comments, issueLabels, collaborators, milestones, labels, hasWritePermission, repository)
|
||||
</div>
|
||||
<div class="tab-pane" id="commits">
|
||||
@pulls.html.commits(dayByDayCommits, repository)
|
||||
<ul class="nav nav-tabs" id="pullreq-tab">
|
||||
<li class="active"><a href="#discussion">Discussion</a></li>
|
||||
<li><a href="#commits">Commits <span class="badge">@commits.size</span></a></li>
|
||||
<li><a href="#files">Files Changed <span class="badge">@diffs.size</span></a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="discussion">
|
||||
@pulls.html.discussion(issue, pullreq, comments, issueLabels, collaborators, milestones, labels, hasWritePermission, repository)
|
||||
</div>
|
||||
<div class="tab-pane" id="commits">
|
||||
@pulls.html.commits(dayByDayCommits, repository)
|
||||
</div>
|
||||
<div class="tab-pane" id="files">
|
||||
@helper.html.diff(diffs, repository, Some(commits.head.id), Some(commits.last.id), true)
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane" id="files">
|
||||
@helper.html.diff(diffs, repository, Some(commits.head.id), Some(commits.last.id), true)
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
}
|
||||
<script>
|
||||
|
||||
@@ -7,63 +7,64 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"${repository.owner}/${repository.name}", Some(repository)) {
|
||||
@html.header("code", repository)
|
||||
@tab(branch, repository, "files")
|
||||
<div class="head">
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)">@repository.name</a> /
|
||||
@pathList.zipWithIndex.map { case (section, i) =>
|
||||
@if(i == pathList.length - 1){
|
||||
@section
|
||||
} else {
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)/@pathList.take(i + 1).mkString("/")">@section</a> /
|
||||
@html.header("code", repository){
|
||||
@tab(branch, repository, "files")
|
||||
<div class="head">
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)">@repository.name</a> /
|
||||
@pathList.zipWithIndex.map { case (section, i) =>
|
||||
@if(i == pathList.length - 1){
|
||||
@section
|
||||
} else {
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)/@pathList.take(i + 1).mkString("/")">@section</a> /
|
||||
}
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th style="font-weight: normal;">
|
||||
<div class="pull-left">
|
||||
@avatar(latestCommit, 20)
|
||||
@user(latestCommit.committer, latestCommit.mailAddress, "username strong")
|
||||
<span class="muted">@datetime(latestCommit.time)</span>
|
||||
<a href="@url(repository)/commit/@latestCommit.id" class="commit-message">@link(latestCommit.summary, repository)</a>
|
||||
</div>
|
||||
<div class="btn-group pull-right">
|
||||
@if(hasWritePermission && content.viewType == "text"){
|
||||
<a class="btn" href="@url(repository)/edit/@encodeRefName(branch)/@pathList.mkString("/")">Edit</a>
|
||||
}
|
||||
<a class="btn" href="?raw=true">Raw</a>
|
||||
<a class="btn" href="@url(repository)/commits/@encodeRefName(branch)/@pathList.mkString("/")">History</a>
|
||||
@if(hasWritePermission){
|
||||
<a class="btn btn-danger" href="@url(repository)/remove/@encodeRefName(branch)/@pathList.mkString("/")">Delete</a>
|
||||
}
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
@if(content.viewType == "text"){
|
||||
@defining(pathList.reverse.head) { file =>
|
||||
@if(renderableSuffixes.find(suffix => file.toLowerCase.endsWith(suffix))) {
|
||||
@renderMarkup(pathList, content.content.get, branch, repository, false, false)
|
||||
} else {
|
||||
<pre class="prettyprint linenums blob">@content.content.get</pre>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th style="font-weight: normal;">
|
||||
<div class="pull-left">
|
||||
@avatar(latestCommit, 20)
|
||||
@user(latestCommit.committer, latestCommit.mailAddress, "username strong")
|
||||
<span class="muted">@datetime(latestCommit.time)</span>
|
||||
<a href="@url(repository)/commit/@latestCommit.id" class="commit-message">@link(latestCommit.summary, repository)</a>
|
||||
</div>
|
||||
<div class="btn-group pull-right">
|
||||
@if(hasWritePermission && content.viewType == "text"){
|
||||
<a class="btn" href="@url(repository)/edit/@encodeRefName(branch)/@pathList.mkString("/")">Edit</a>
|
||||
}
|
||||
<a class="btn" href="?raw=true">Raw</a>
|
||||
<a class="btn" href="@url(repository)/commits/@encodeRefName(branch)/@pathList.mkString("/")">History</a>
|
||||
@if(hasWritePermission){
|
||||
<a class="btn btn-danger" href="@url(repository)/remove/@encodeRefName(branch)/@pathList.mkString("/")">Delete</a>
|
||||
}
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
@if(content.viewType == "text"){
|
||||
@defining(pathList.reverse.head) { file =>
|
||||
@if(renderableSuffixes.find(suffix => file.toLowerCase.endsWith(suffix))) {
|
||||
@renderMarkup(pathList, content.content.get, branch, repository, false, false)
|
||||
} else {
|
||||
<pre class="prettyprint linenums blob">@content.content.get</pre>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@if(content.viewType == "image"){
|
||||
<img src="?raw=true"/>
|
||||
}
|
||||
@if(content.viewType == "large" || content.viewType == "binary"){
|
||||
<div style="text-align: center">
|
||||
<a href="?raw=true">View Raw</a><br>
|
||||
(Sorry about that, but we can't show files that are this big right now)
|
||||
</div>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@if(content.viewType == "image"){
|
||||
<img src="?raw=true"/>
|
||||
}
|
||||
@if(content.viewType == "large" || content.viewType == "binary"){
|
||||
<div style="text-align: center">
|
||||
<a href="?raw=true">View Raw</a><br>
|
||||
(Sorry about that, but we can't show files that are this big right now)
|
||||
</div>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
}
|
||||
}
|
||||
<script src="@assets/common/js/jquery.ba-hashchange.js"></script>
|
||||
<script>
|
||||
|
||||
@@ -4,38 +4,39 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"${repository.owner}/${repository.name}", Some(repository)) {
|
||||
@html.header("code", repository)
|
||||
@tab(repository.repository.defaultBranch, repository, "branches", true)
|
||||
<h1>Branches</h1>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th width="40%">Branch</th>
|
||||
<th width="20%">Last update</th>
|
||||
<th width="20%">Compare</th>
|
||||
<th width="20%">Download</th>
|
||||
</tr>
|
||||
@branchInfo.map { case (branchName, latestUpdateDate) =>
|
||||
@html.header("code", repository){
|
||||
@tab(repository.repository.defaultBranch, repository, "branches", true)
|
||||
<h1>Branches</h1>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<td>
|
||||
<a href="@url(repository)/tree/@encodeRefName(branchName)">@branchName</a>
|
||||
@if(hasWritePermission && repository.repository.defaultBranch != branchName){
|
||||
<a href="@url(repository)/delete/@encodeRefName(branchName)" class="btn btn-danger btn-mini pull-right delete-branch" data-name="@branchName">Delete branch</a>
|
||||
}
|
||||
</td>
|
||||
<td>
|
||||
@datetime(latestUpdateDate)
|
||||
</td>
|
||||
<td>
|
||||
@if(repository.repository.defaultBranch == branchName){
|
||||
Base branch
|
||||
} else {
|
||||
<a href="@url(repository)/compare/@{encodeRefName(repository.repository.defaultBranch)}...@{encodeRefName(branchName)}">to @{repository.repository.defaultBranch}</a>
|
||||
}
|
||||
</td>
|
||||
<td><a href="@url(repository)/archive/@{encodeRefName(branchName)}.zip">ZIP</a></td>
|
||||
<th width="40%">Branch</th>
|
||||
<th width="20%">Last update</th>
|
||||
<th width="20%">Compare</th>
|
||||
<th width="20%">Download</th>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
@branchInfo.map { case (branchName, latestUpdateDate) =>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="@url(repository)/tree/@encodeRefName(branchName)">@branchName</a>
|
||||
@if(hasWritePermission && repository.repository.defaultBranch != branchName){
|
||||
<a href="@url(repository)/delete/@encodeRefName(branchName)" class="btn btn-danger btn-mini pull-right delete-branch" data-name="@branchName">Delete branch</a>
|
||||
}
|
||||
</td>
|
||||
<td>
|
||||
@datetime(latestUpdateDate)
|
||||
</td>
|
||||
<td>
|
||||
@if(repository.repository.defaultBranch == branchName){
|
||||
Base branch
|
||||
} else {
|
||||
<a href="@url(repository)/compare/@{encodeRefName(repository.repository.defaultBranch)}...@{encodeRefName(branchName)}">to @{repository.repository.defaultBranch}</a>
|
||||
}
|
||||
</td>
|
||||
<td><a href="@url(repository)/archive/@{encodeRefName(branchName)}.zip">ZIP</a></td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
}
|
||||
}
|
||||
<script>
|
||||
$(function(){
|
||||
|
||||
@@ -9,68 +9,69 @@
|
||||
@import view.helpers._
|
||||
@import util.Implicits._
|
||||
@html.main(commit.shortMessage, Some(repository)){
|
||||
@html.header("code", repository)
|
||||
@tab(commitId, repository, "commits")
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th>
|
||||
<div class="pull-right align-right">
|
||||
<a href="@url(repository)/tree/@commit.id" class="btn btn-small">Browse code</a>
|
||||
</div>
|
||||
<div class="commit-log">@link(commit.summary, repository)</div>
|
||||
@if(commit.description.isDefined){
|
||||
<pre class="commit-description">@link(commit.description.get, repository)</pre>
|
||||
}
|
||||
<div class="small" style="font-weight: normal;">
|
||||
@if(branches.nonEmpty){
|
||||
<span class="muted">
|
||||
<img src="@assets/common/images/branch.png"/>
|
||||
@branches.zipWithIndex.map { case (branch, i) =>
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)" class="branch" id="branch-@i">@branch</a>
|
||||
}
|
||||
</span>
|
||||
}
|
||||
@if(tags.nonEmpty){
|
||||
<span class="muted">
|
||||
<img src="@assets/common/images/tag.png"/>
|
||||
@tags.zipWithIndex.map { case (tag, i) =>
|
||||
<a href="@url(repository)/tree/@tag" class="tag" id="tag-@i">@tag</a>
|
||||
}
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
@avatar(commit, 20)
|
||||
@user(commit.committer, commit.mailAddress, "username strong")
|
||||
<span class="muted">@datetime(commit.time)</span>
|
||||
<div class="pull-right monospace small" style="text-align: right;">
|
||||
<div>
|
||||
@if(commit.parents.size == 0){
|
||||
<span class="muted">0 parent</span>
|
||||
}
|
||||
@if(commit.parents.size == 1){
|
||||
<span class="muted">1 parent</span>
|
||||
<a href="@url(repository)/commit/@commit.parents(0)" class="commit-id">@commit.parents(0).substring(0, 7)</a>
|
||||
}
|
||||
<span class="muted">commit</span> @commit.id
|
||||
@html.header("code", repository){
|
||||
@tab(commitId, repository, "commits")
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th>
|
||||
<div class="pull-right align-right">
|
||||
<a href="@url(repository)/tree/@commit.id" class="btn btn-small">Browse code</a>
|
||||
</div>
|
||||
@if(commit.parents.size > 1){
|
||||
<div>
|
||||
<span class="muted">@commit.parents.size parents
|
||||
@commit.parents.map { parent =>
|
||||
<a href="@url(repository)/commit/@parent" class="commit-id">@parent.substring(0, 7)</a>
|
||||
}.mkHtml(" + ")
|
||||
</span>
|
||||
</div>
|
||||
<div class="commit-log">@link(commit.summary, repository)</div>
|
||||
@if(commit.description.isDefined){
|
||||
<pre class="commit-description">@link(commit.description.get, repository)</pre>
|
||||
}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@helper.html.diff(diffs, repository, Some(commit.id), oldCommitId, true)
|
||||
<div class="small" style="font-weight: normal;">
|
||||
@if(branches.nonEmpty){
|
||||
<span class="muted">
|
||||
<img src="@assets/common/images/branch.png"/>
|
||||
@branches.zipWithIndex.map { case (branch, i) =>
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)" class="branch" id="branch-@i">@branch</a>
|
||||
}
|
||||
</span>
|
||||
}
|
||||
@if(tags.nonEmpty){
|
||||
<span class="muted">
|
||||
<img src="@assets/common/images/tag.png"/>
|
||||
@tags.zipWithIndex.map { case (tag, i) =>
|
||||
<a href="@url(repository)/tree/@tag" class="tag" id="tag-@i">@tag</a>
|
||||
}
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
@avatar(commit, 20)
|
||||
@user(commit.committer, commit.mailAddress, "username strong")
|
||||
<span class="muted">@datetime(commit.time)</span>
|
||||
<div class="pull-right monospace small" style="text-align: right;">
|
||||
<div>
|
||||
@if(commit.parents.size == 0){
|
||||
<span class="muted">0 parent</span>
|
||||
}
|
||||
@if(commit.parents.size == 1){
|
||||
<span class="muted">1 parent</span>
|
||||
<a href="@url(repository)/commit/@commit.parents(0)" class="commit-id">@commit.parents(0).substring(0, 7)</a>
|
||||
}
|
||||
<span class="muted">commit</span> @commit.id
|
||||
</div>
|
||||
@if(commit.parents.size > 1){
|
||||
<div>
|
||||
<span class="muted">@commit.parents.size parents
|
||||
@commit.parents.map { parent =>
|
||||
<a href="@url(repository)/commit/@parent" class="commit-id">@parent.substring(0, 7)</a>
|
||||
}.mkHtml(" + ")
|
||||
</span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@helper.html.diff(diffs, repository, Some(commit.id), oldCommitId, true)
|
||||
}
|
||||
}
|
||||
<script>
|
||||
$(function(){
|
||||
|
||||
@@ -7,60 +7,61 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"${repository.owner}/${repository.name}", Some(repository)) {
|
||||
@html.header("code", repository)
|
||||
@tab(branch, repository, if(pathList.isEmpty) "commits" else "files")
|
||||
<div class="head">
|
||||
@if(pathList.isEmpty){
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)">@repository.name</a> / Commit History
|
||||
}
|
||||
@if(pathList.nonEmpty){
|
||||
<span class="muted">History for</span>
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)">@repository.name</a> /
|
||||
@pathList.zipWithIndex.map { case (section, i) =>
|
||||
@if(i == pathList.length - 1){
|
||||
@section
|
||||
} else {
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)/@pathList.take(i + 1).mkString("/")">@section</a> /
|
||||
@html.header("code", repository){
|
||||
@tab(branch, repository, if(pathList.isEmpty) "commits" else "files")
|
||||
<div class="head">
|
||||
@if(pathList.isEmpty){
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)">@repository.name</a> / Commit History
|
||||
}
|
||||
@if(pathList.nonEmpty){
|
||||
<span class="muted">History for</span>
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)">@repository.name</a> /
|
||||
@pathList.zipWithIndex.map { case (section, i) =>
|
||||
@if(i == pathList.length - 1){
|
||||
@section
|
||||
} else {
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)/@pathList.take(i + 1).mkString("/")">@section</a> /
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</div>
|
||||
@commits.map { day =>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th>@date(day.head.time)</th>
|
||||
</tr>
|
||||
@day.map { commit =>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="pull-right align-right">
|
||||
<a href="@url(repository)/commit/@commit.id" class="btn btn-small monospace">@commit.id.substring(0, 10)</a><br>
|
||||
<a href="@url(repository)/tree/@commit.id" class="small">Browse code</a>
|
||||
</div>
|
||||
<div>
|
||||
<div class="commit-avatar-image">@avatar(commit, 40)</div>
|
||||
<div class="commit-message-box">
|
||||
<a href="@url(repository)/commit/@commit.id" class="commit-message" style="font-weight: bold;">@link(commit.summary, repository)</a>
|
||||
@if(commit.description.isDefined){
|
||||
<a href="javascript:void(0)" onclick="$('#description-@commit.id').toggle();" class="omit">...</a>
|
||||
}
|
||||
<br>
|
||||
@if(commit.description.isDefined){
|
||||
<pre id="description-@commit.id" style="display: none;" class="commit-description">@link(commit.description.get, repository)</pre>
|
||||
}
|
||||
<div class="small">
|
||||
@user(commit.committer, commit.mailAddress, "username")
|
||||
<span class="muted">@datetime(commit.time)</span>
|
||||
</div>
|
||||
@commits.map { day =>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th>@date(day.head.time)</th>
|
||||
</tr>
|
||||
@day.map { commit =>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="pull-right align-right">
|
||||
<a href="@url(repository)/commit/@commit.id" class="btn btn-small monospace">@commit.id.substring(0, 10)</a><br>
|
||||
<a href="@url(repository)/tree/@commit.id" class="small">Browse code</a>
|
||||
</div>
|
||||
<div>
|
||||
<div class="commit-avatar-image">@avatar(commit, 40)</div>
|
||||
<div class="commit-message-box">
|
||||
<a href="@url(repository)/commit/@commit.id" class="commit-message" style="font-weight: bold;">@link(commit.summary, repository)</a>
|
||||
@if(commit.description.isDefined){
|
||||
<a href="javascript:void(0)" onclick="$('#description-@commit.id').toggle();" class="omit">...</a>
|
||||
}
|
||||
<br>
|
||||
@if(commit.description.isDefined){
|
||||
<pre id="description-@commit.id" style="display: none;" class="commit-description">@link(commit.description.get, repository)</pre>
|
||||
}
|
||||
<div class="small">
|
||||
@user(commit.committer, commit.mailAddress, "username")
|
||||
<span class="muted">@datetime(commit.time)</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
}
|
||||
<div class="btn-group">
|
||||
<button class="btn" onclick="location.href='?page=@{page - 1}'"@if(page <= 1){ disabled="true"}>< Newer</button>
|
||||
<button class="btn" onclick="location.href='?page=@{page + 1}'"@if(!hasNext){ disabled="true"}>Older ></button>
|
||||
</div>
|
||||
}
|
||||
<div class="btn-group">
|
||||
<button class="btn" onclick="location.href='?page=@{page - 1}'"@if(page <= 1){ disabled="true"}>< Newer</button>
|
||||
<button class="btn" onclick="location.href='?page=@{page + 1}'"@if(!hasNext){ disabled="true"}>Older ></button>
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -6,50 +6,51 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"Deleting ${path} at ${fileName} - ${repository.owner}/${repository.name}", Some(repository)) {
|
||||
@html.header("code", repository)
|
||||
@tab(branch, repository, "files")
|
||||
<form method="POST" action="@url(repository)/remove" validate="true">
|
||||
<div class="head">
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)">@repository.name</a> /
|
||||
@pathList.zipWithIndex.map { case (section, i) =>
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)/@pathList.take(i + 1).mkString("/")">@section</a> /
|
||||
}
|
||||
@fileName
|
||||
<input type="hidden" name="fileName" id="fileName" value="@fileName"/>
|
||||
<input type="hidden" name="branch" id="branch" value="@branch"/>
|
||||
<input type="hidden" name="path" id="path" value="@pathList.mkString("/")"/>
|
||||
</div>
|
||||
<table class="table table-bordered">
|
||||
<th style="font-weight: normal;" class="box-header">
|
||||
@html.header("code", repository){
|
||||
@tab(branch, repository, "files")
|
||||
<form method="POST" action="@url(repository)/remove" validate="true">
|
||||
<div class="head">
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)">@repository.name</a> /
|
||||
@pathList.zipWithIndex.map { case (section, i) =>
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)/@pathList.take(i + 1).mkString("/")">@section</a> /
|
||||
}
|
||||
@fileName
|
||||
<div class="pull-right align-right">
|
||||
<a href="@url(repository)/blob/@branch/@{(pathList ::: List(fileName)).mkString("/")}" class="btn btn-small">View</a>
|
||||
</div>
|
||||
</th>
|
||||
<tr>
|
||||
<td>
|
||||
<div id="diffText"></div>
|
||||
<textarea id="newText" style="display: none;"></textarea>
|
||||
<textarea id="oldText" style="display: none;">@content.content</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="issue-avatar-image">@avatar(loginAccount.get.userName, 48)</div>
|
||||
<div class="box issue-comment-box">
|
||||
<div class="box-content">
|
||||
<div>
|
||||
<strong>Commit changes</strong>
|
||||
</div>
|
||||
<div>
|
||||
<input type="text" name="message" style="width: 98%;"/>
|
||||
</div>
|
||||
<div style="text-align: right;">
|
||||
<a href="@url(repository)/blob/@encodeRefName(branch)/@pathList.mkString("/")" class="btn btn-danger">Cancel</a>
|
||||
<input type="submit" id="commit" class="btn btn-success" value="Commit changes"/>
|
||||
<input type="hidden" name="fileName" id="fileName" value="@fileName"/>
|
||||
<input type="hidden" name="branch" id="branch" value="@branch"/>
|
||||
<input type="hidden" name="path" id="path" value="@pathList.mkString("/")"/>
|
||||
</div>
|
||||
<table class="table table-bordered">
|
||||
<th style="font-weight: normal;" class="box-header">
|
||||
@fileName
|
||||
<div class="pull-right align-right">
|
||||
<a href="@url(repository)/blob/@branch/@{(pathList ::: List(fileName)).mkString("/")}" class="btn btn-small">View</a>
|
||||
</div>
|
||||
</th>
|
||||
<tr>
|
||||
<td>
|
||||
<div id="diffText"></div>
|
||||
<textarea id="newText" style="display: none;"></textarea>
|
||||
<textarea id="oldText" style="display: none;">@content.content</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="issue-avatar-image">@avatar(loginAccount.get.userName, 48)</div>
|
||||
<div class="box issue-comment-box">
|
||||
<div class="box-content">
|
||||
<div>
|
||||
<strong>Commit changes</strong>
|
||||
</div>
|
||||
<div>
|
||||
<input type="text" name="message" style="width: 98%;"/>
|
||||
</div>
|
||||
<div style="text-align: right;">
|
||||
<a href="@url(repository)/blob/@encodeRefName(branch)/@pathList.mkString("/")" class="btn btn-danger">Cancel</a>
|
||||
<input type="submit" id="commit" class="btn btn-success" value="Commit changes"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</form>
|
||||
}
|
||||
}
|
||||
<script type="text/javascript" src="@assets/jsdifflib/difflib.js"></script>
|
||||
<script type="text/javascript" src="@assets/jsdifflib/diffview.js"></script>
|
||||
|
||||
@@ -6,62 +6,63 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(if(fileName.isEmpty) "New File" else s"Editing ${path} at ${fileName} - ${repository.owner}/${repository.name}", Some(repository)) {
|
||||
@html.header("code", repository)
|
||||
@tab(branch, repository, "files")
|
||||
<form method="POST" action="@url(repository)/@if(fileName.isEmpty){create}else{update}" validate="true">
|
||||
<span class="error" id="error-newFileName"></span>
|
||||
<div class="head">
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)">@repository.name</a> /
|
||||
@pathList.zipWithIndex.map { case (section, i) =>
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)/@pathList.take(i + 1).mkString("/")">@section</a> /
|
||||
}
|
||||
<input type="text" name="newFileName" id="newFileName" placeholder="Name your file..." value="@fileName"/>
|
||||
<input type="hidden" name="oldFileName" id="oldFileName" value="@fileName"/>
|
||||
<input type="hidden" name="branch" id="branch" value="@branch"/>
|
||||
<input type="hidden" name="path" id="path" value="@pathList.mkString("/")"/>
|
||||
</div>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th>
|
||||
<div class="pull-right">
|
||||
<select id="wrap" class="input-medium" style="margin-bottom: 0px;">
|
||||
<optgroup label="Line Wrap Mode">
|
||||
<option value="false">No wrap</option>
|
||||
<option value="true">Soft wrap</option>
|
||||
</optgroup>
|
||||
</select>
|
||||
@html.header("code", repository){
|
||||
@tab(branch, repository, "files")
|
||||
<form method="POST" action="@url(repository)/@if(fileName.isEmpty){create}else{update}" validate="true">
|
||||
<span class="error" id="error-newFileName"></span>
|
||||
<div class="head">
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)">@repository.name</a> /
|
||||
@pathList.zipWithIndex.map { case (section, i) =>
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)/@pathList.take(i + 1).mkString("/")">@section</a> /
|
||||
}
|
||||
<input type="text" name="newFileName" id="newFileName" placeholder="Name your file..." value="@fileName"/>
|
||||
<input type="hidden" name="oldFileName" id="oldFileName" value="@fileName"/>
|
||||
<input type="hidden" name="branch" id="branch" value="@branch"/>
|
||||
<input type="hidden" name="path" id="path" value="@pathList.mkString("/")"/>
|
||||
</div>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th>
|
||||
<div class="pull-right">
|
||||
<select id="wrap" class="input-medium" style="margin-bottom: 0px;">
|
||||
<optgroup label="Line Wrap Mode">
|
||||
<option value="false">No wrap</option>
|
||||
<option value="true">Soft wrap</option>
|
||||
</optgroup>
|
||||
</select>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div id="editor" style="width: 100%; height: 600px;"></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="issue-avatar-image">@avatar(loginAccount.get.userName, 48)</div>
|
||||
<div class="box issue-comment-box">
|
||||
<div class="box-content">
|
||||
<div>
|
||||
<strong>Commit changes</strong>
|
||||
</div>
|
||||
<div>
|
||||
<input type="text" name="message" style="width: 98%;"/>
|
||||
</div>
|
||||
<div style="text-align: right;">
|
||||
@if(fileName.isEmpty){
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)/@{pathList.mkString("/")}" class="btn btn-danger">Cancel</a>
|
||||
} else {
|
||||
<a href="@url(repository)/blob/@encodeRefName(branch)/@{(pathList ++ Seq(fileName.get)).mkString("/")}" class="btn btn-danger">Cancel</a>
|
||||
}
|
||||
<input type="submit" id="commit" class="btn btn-success" value="Commit changes" disabled="true"/>
|
||||
<input type="hidden" id="charset" name="charset" value="@content.charset"/>
|
||||
<input type="hidden" id="content" name="content" value=""/>
|
||||
<input type="hidden" id="initial" value="@content.content"/>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div id="editor" style="width: 100%; height: 600px;"></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="issue-avatar-image">@avatar(loginAccount.get.userName, 48)</div>
|
||||
<div class="box issue-comment-box">
|
||||
<div class="box-content">
|
||||
<div>
|
||||
<strong>Commit changes</strong>
|
||||
</div>
|
||||
<div>
|
||||
<input type="text" name="message" style="width: 98%;"/>
|
||||
</div>
|
||||
<div style="text-align: right;">
|
||||
@if(fileName.isEmpty){
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)/@{pathList.mkString("/")}" class="btn btn-danger">Cancel</a>
|
||||
} else {
|
||||
<a href="@url(repository)/blob/@encodeRefName(branch)/@{(pathList ++ Seq(fileName.get)).mkString("/")}" class="btn btn-danger">Cancel</a>
|
||||
}
|
||||
<input type="submit" id="commit" class="btn btn-success" value="Commit changes" disabled="true"/>
|
||||
<input type="hidden" id="charset" name="charset" value="@content.charset"/>
|
||||
<input type="hidden" id="content" name="content" value=""/>
|
||||
<input type="hidden" id="initial" value="@content.content"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</form>
|
||||
}
|
||||
}
|
||||
<script src="@assets/ace/ace.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script>
|
||||
|
||||
@@ -8,91 +8,94 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"${repository.owner}/${repository.name}", Some(repository)) {
|
||||
@html.header("code", repository)
|
||||
@tab(branch, repository, "files")
|
||||
<div class="head">
|
||||
<div class="pull-right">
|
||||
@defining(repository.commitCount){ commitCount =>
|
||||
<a href="@url(repository)/commits/@encodeRefName(branch)">@if(commitCount > 10000){ 10000+ } else { @commitCount } @plural(commitCount, "commit")</a>
|
||||
@html.header("code", repository, Some(branch)){
|
||||
@tab(branch, repository, "files")
|
||||
<div class="head">
|
||||
@*
|
||||
<div class="pull-right">
|
||||
@defining(repository.commitCount){ commitCount =>
|
||||
<a href="@url(repository)/commits/@encodeRefName(branch)">@if(commitCount > 10000){ 10000+ } else { @commitCount } @plural(commitCount, "commit")</a>
|
||||
}
|
||||
</div>
|
||||
*@
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)">@repository.name</a> /
|
||||
@pathList.zipWithIndex.map { case (section, i) =>
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)/@pathList.take(i + 1).mkString("/")">@section</a> /
|
||||
}
|
||||
@if(hasWritePermission){
|
||||
<a href="@url(repository)/new/@encodeRefName(branch)/@pathList.mkString("/")"><img src="@assets/common/images/newfile.png"/></a>
|
||||
}
|
||||
</div>
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)">@repository.name</a> /
|
||||
@pathList.zipWithIndex.map { case (section, i) =>
|
||||
<a href="@url(repository)/tree/@encodeRefName(branch)/@pathList.take(i + 1).mkString("/")">@section</a> /
|
||||
}
|
||||
@if(hasWritePermission){
|
||||
<a href="@url(repository)/new/@encodeRefName(branch)/@pathList.mkString("/")"><img src="@assets/common/images/newfile.png"/></a>
|
||||
}
|
||||
</div>
|
||||
<div class="box">
|
||||
<table class="table table-file-list" style="border: 1px solid silver;">
|
||||
<tr>
|
||||
<th colspan="4" style="font-weight: normal;">
|
||||
<a href="@url(repository)/commit/@latestCommit.id" class="commit-message">@link(latestCommit.summary, repository)</a>
|
||||
@if(latestCommit.description.isDefined){
|
||||
<a href="javascript:void(0)" onclick="$('#description-@latestCommit.id').toggle();" class="omit">...</a>
|
||||
<pre id="description-@latestCommit.id" class="commit-description" style="display: none;">@link(latestCommit.description.get, repository)</pre>
|
||||
}
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4" class="latest-commit">
|
||||
<div>
|
||||
@avatar(latestCommit, 20)
|
||||
@user(latestCommit.committer, latestCommit.mailAddress, "username strong")
|
||||
<span class="muted">@datetime(latestCommit.time)</span>
|
||||
<div class="pull-right align-right monospace">
|
||||
<a href="@url(repository)/commit/@latestCommit.id" class="commit-id"><span class="muted">latest commit</span> @latestCommit.id.substring(0, 10)</a>
|
||||
<div class="box">
|
||||
<table class="table table-file-list" style="border: 1px solid silver;">
|
||||
<tr>
|
||||
<th colspan="4" style="font-weight: normal;">
|
||||
<a href="@url(repository)/commit/@latestCommit.id" class="commit-message">@link(latestCommit.summary, repository)</a>
|
||||
@if(latestCommit.description.isDefined){
|
||||
<a href="javascript:void(0)" onclick="$('#description-@latestCommit.id').toggle();" class="omit">...</a>
|
||||
<pre id="description-@latestCommit.id" class="commit-description" style="display: none;">@link(latestCommit.description.get, repository)</pre>
|
||||
}
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4" class="latest-commit">
|
||||
<div>
|
||||
@avatar(latestCommit, 20)
|
||||
@user(latestCommit.committer, latestCommit.mailAddress, "username strong")
|
||||
<span class="muted">@datetime(latestCommit.time)</span>
|
||||
<div class="pull-right align-right monospace">
|
||||
<a href="@url(repository)/commit/@latestCommit.id" class="commit-id"><span class="muted">latest commit</span> @latestCommit.id.substring(0, 10)</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@if(pathList.size > 0){
|
||||
<tr>
|
||||
<td width="16"></td>
|
||||
<td><a href="@url(repository)@if(pathList.size > 1){/tree/@encodeRefName(branch)/@pathList.init.mkString("/")}">..</a></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
}
|
||||
@files.map { file =>
|
||||
<tr>
|
||||
<td width="16">
|
||||
@if(file.isDirectory){
|
||||
@if(file.linkUrl.isDefined){
|
||||
<img src="@assets/common/images/folder_link.png"/>
|
||||
} else {
|
||||
<img src="@assets/common/images/folder.png"/>
|
||||
}
|
||||
} else {
|
||||
<img src="@assets/common/images/file.png"/>
|
||||
</td>
|
||||
</tr>
|
||||
@if(pathList.size > 0){
|
||||
<tr>
|
||||
<td width="16"></td>
|
||||
<td><a href="@url(repository)@if(pathList.size > 1){/tree/@encodeRefName(branch)/@pathList.init.mkString("/")}">..</a></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
}
|
||||
</td>
|
||||
<td>
|
||||
@if(file.isDirectory){
|
||||
@if(file.linkUrl.isDefined){
|
||||
<a href="@file.linkUrl">@file.name</a>
|
||||
@files.map { file =>
|
||||
<tr>
|
||||
<td width="16">
|
||||
@if(file.isDirectory){
|
||||
@if(file.linkUrl.isDefined){
|
||||
<img src="@assets/common/images/folder_link.png"/>
|
||||
} else {
|
||||
<img src="@assets/common/images/folder.png"/>
|
||||
}
|
||||
} else {
|
||||
<a href="@url(repository)/tree@{(encodeRefName(branch) :: pathList).mkString("/", "/", "/")}@file.name">@file.name</a>
|
||||
<img src="@assets/common/images/file.png"/>
|
||||
}
|
||||
} else {
|
||||
<a href="@url(repository)/blob@{(encodeRefName(branch) :: pathList).mkString("/", "/", "/")}@file.name">@file.name</a>
|
||||
</td>
|
||||
<td>
|
||||
@if(file.isDirectory){
|
||||
@if(file.linkUrl.isDefined){
|
||||
<a href="@file.linkUrl">@file.name</a>
|
||||
} else {
|
||||
<a href="@url(repository)/tree@{(encodeRefName(branch) :: pathList).mkString("/", "/", "/")}@file.name">@file.name</a>
|
||||
}
|
||||
} else {
|
||||
<a href="@url(repository)/blob@{(encodeRefName(branch) :: pathList).mkString("/", "/", "/")}@file.name">@file.name</a>
|
||||
}
|
||||
</td>
|
||||
<td class="mute">
|
||||
<a href="@url(repository)/commit/@file.commitId" class="commit-message">@link(file.message, repository)</a>
|
||||
[@user(file.committer, file.mailAddress)]
|
||||
</td>
|
||||
<td style="text-align: right;">@datetime(file.time)</td>
|
||||
</tr>
|
||||
}
|
||||
</td>
|
||||
<td>@datetime(file.time)</td>
|
||||
<td>
|
||||
<a href="@url(repository)/commit/@file.commitId" class="commit-message">@link(file.message, repository)</a>
|
||||
[@user(file.committer, file.mailAddress)]
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@readme.map { case(filePath, content) =>
|
||||
<div id="readme" class="box">
|
||||
<div class="box-header">@filePath.reverse.head</div>
|
||||
<div class="box-content markdown-body">@renderMarkup(filePath, content, branch, repository, false, false)</div>
|
||||
</div>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@readme.map { case(filePath, content) =>
|
||||
<div id="readme" class="box">
|
||||
<div class="box-header">@filePath.reverse.head</div>
|
||||
<div class="box-content markdown-body">@renderMarkup(filePath, content, branch, repository, false, false)</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,31 +4,32 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"${repository.owner}/${repository.name}", Some(repository)) {
|
||||
@html.header("network", repository)
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="@url(repository)/network/members">Members</a></li>
|
||||
</ul>
|
||||
<h3>Members of the @repository.name Network</h3>
|
||||
<div class="block">
|
||||
@if(originRepository.isDefined){
|
||||
@avatar(originRepository.get.owner, 20)
|
||||
<span@if(repository.owner == originRepository.get.owner){ class="highlight"}>
|
||||
<a href="@url(originRepository.get)">@originRepository.get.owner</a> / <a href="@path/@originRepository.get.owner/@originRepository.get.name">@originRepository.get.name</a>
|
||||
</span>
|
||||
} else {
|
||||
@avatar(repository.repository.originUserName.get, 20)
|
||||
<span class="highlight">
|
||||
@repository.repository.originUserName / @repository.repository.originRepositoryName
|
||||
</span>
|
||||
}
|
||||
(origin)
|
||||
</div>
|
||||
@members.map { case (owner, name) =>
|
||||
@html.header("network", repository){
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="@url(repository)/network/members">Members</a></li>
|
||||
</ul>
|
||||
<h3>Members of the @repository.name Network</h3>
|
||||
<div class="block">
|
||||
@avatar(owner, 20)
|
||||
<span@if(repository.owner == owner){ class="highlight"}>
|
||||
<a href="@url(owner)">@owner</a> / <a href="@path/@owner/@name">@name</a>
|
||||
</span>
|
||||
@if(originRepository.isDefined){
|
||||
@avatar(originRepository.get.owner, 20)
|
||||
<span@if(repository.owner == originRepository.get.owner){ class="highlight"}>
|
||||
<a href="@url(originRepository.get)">@originRepository.get.owner</a> / <a href="@path/@originRepository.get.owner/@originRepository.get.name">@originRepository.get.name</a>
|
||||
</span>
|
||||
} else {
|
||||
@avatar(repository.repository.originUserName.get, 20)
|
||||
<span class="highlight">
|
||||
@repository.repository.originUserName / @repository.repository.originRepositoryName
|
||||
</span>
|
||||
}
|
||||
(origin)
|
||||
</div>
|
||||
@members.map { case (owner, name) =>
|
||||
<div class="block">
|
||||
@avatar(owner, 20)
|
||||
<span@if(repository.owner == owner){ class="highlight"}>
|
||||
<a href="@url(owner)">@owner</a> / <a href="@path/@owner/@name">@name</a>
|
||||
</span>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,24 +3,25 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"${repository.owner}/${repository.name}", Some(repository)) {
|
||||
@html.header("code", repository)
|
||||
@if(!hasWritePermission){
|
||||
<h3>This is an empty repository</h3>
|
||||
} else {
|
||||
<h3 style="margin-top: 30px;">Create a new repository on the command line</h3>
|
||||
<pre>
|
||||
touch README.md
|
||||
git init
|
||||
git add README.md
|
||||
git commit -m "first commit"
|
||||
git remote add origin @repository.httpUrl
|
||||
git push -u origin master
|
||||
</pre>
|
||||
@html.header("code", repository){
|
||||
@if(!hasWritePermission){
|
||||
<h3>This is an empty repository</h3>
|
||||
} else {
|
||||
<h3 style="margin-top: 30px;">Create a new repository on the command line</h3>
|
||||
<pre>
|
||||
touch README.md
|
||||
git init
|
||||
git add README.md
|
||||
git commit -m "first commit"
|
||||
git remote add origin @repository.httpUrl
|
||||
git push -u origin master
|
||||
</pre>
|
||||
|
||||
<h3 style="margin-top: 30px;">Push an existing repository from the command line</h3>
|
||||
<pre>
|
||||
git remote add origin @repository.httpUrl
|
||||
git push -u origin master
|
||||
</pre>
|
||||
<h3 style="margin-top: 30px;">Push an existing repository from the command line</h3>
|
||||
<pre>
|
||||
git remote add origin @repository.httpUrl
|
||||
git push -u origin master
|
||||
</pre>
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
hideBranchPulldown: Boolean = false)(implicit context: app.Context)
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@*
|
||||
<ul class="nav nav-tabs">
|
||||
@if(!hideBranchPulldown){
|
||||
<li>
|
||||
@@ -22,7 +23,7 @@
|
||||
<li@if(active=="branches"){ class="active"}><a href="@url(repository)/branches">Branches@if(repository.branchList.length > 0){ <span class="badge">@repository.branchList.length</span>}</a></li>
|
||||
<li@if(active=="tags" ){ class="active"}><a href="@url(repository)/tags">Tags@if(repository.tags.length > 0){ <span class="badge">@repository.tags.length</span>}</a></li>
|
||||
<li class="pull-right">
|
||||
@helper.html.copy("repository-url-copy", repository.httpUrl, true){
|
||||
@helper.html.copy("repository-url-copy", repository.httpUrl){
|
||||
@if(settings.ssh && loginAccount.isDefined){
|
||||
<div class="btn-group add-on" data-toggle="buttons-radio" style="padding: 0px; border-width: 0px;">
|
||||
<button type="button" class="btn active" id="repository-url-http">HTTP</button><button type="button" class="btn" id="repository-url-ssh">SSH</button>
|
||||
@@ -39,6 +40,7 @@
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
*@
|
||||
@if(settings.ssh && loginAccount.isDefined){
|
||||
<script>
|
||||
$(function(){
|
||||
|
||||
@@ -2,23 +2,24 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"${repository.owner}/${repository.name}", Some(repository)) {
|
||||
@html.header("code", repository)
|
||||
@tab(repository.repository.defaultBranch, repository, "tags", true)
|
||||
<h1>Tags</h1>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th width="40%">Tag</th>
|
||||
<th width="20%">Date</th>
|
||||
<th width="20%">Commit</th>
|
||||
<th width="20%">Download</th>
|
||||
</tr>
|
||||
@repository.tags.map { tag =>
|
||||
@html.header("code", repository){
|
||||
@tab(repository.repository.defaultBranch, repository, "tags", true)
|
||||
<h1>Tags</h1>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<td><a href="@url(repository)/tree/@encodeRefName(tag.name)">@tag.name</a></td>
|
||||
<td>@datetime(tag.time)</td>
|
||||
<td class="monospace"><a href="@url(repository)/commit/@tag.id">@tag.id.substring(0, 10)</a></td>
|
||||
<td><a href="@url(repository)/archive/@{encodeRefName(tag.name)}.zip">ZIP</a></td>
|
||||
<th width="40%">Tag</th>
|
||||
<th width="20%">Date</th>
|
||||
<th width="20%">Commit</th>
|
||||
<th width="20%">Download</th>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
@repository.tags.map { tag =>
|
||||
<tr>
|
||||
<td><a href="@url(repository)/tree/@encodeRefName(tag.name)">@tag.name</a></td>
|
||||
<td>@datetime(tag.time)</td>
|
||||
<td class="monospace"><a href="@url(repository)/commit/@tag.id">@tag.id.substring(0, 10)</a></td>
|
||||
<td><a href="@url(repository)/archive/@{encodeRefName(tag.name)}.zip">ZIP</a></td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
}
|
||||
}
|
||||
@@ -2,36 +2,37 @@
|
||||
repository: service.RepositoryService.RepositoryInfo)(body: Html)(implicit context: app.Context)
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.header("", repository)
|
||||
<div class="row-fluid">
|
||||
<div class="span3">
|
||||
<div class="box">
|
||||
<ul class="nav nav-tabs nav-stacked side-menu">
|
||||
<li@if(active=="code"){ class="active"}>
|
||||
<a href="@url(repository)/search?q=@urlEncode(query)&type=code">
|
||||
@if(fileCount != 0){
|
||||
<span class="badge pull-right">@fileCount</span>
|
||||
}
|
||||
Code
|
||||
</a>
|
||||
</li>
|
||||
<li@if(active=="issue"){ class="active"}>
|
||||
<a href="@url(repository)/search?q=@urlEncode(query)&type=issue">
|
||||
@if(issueCount != 0){
|
||||
<span class="badge pull-right">@issueCount</span>
|
||||
}
|
||||
Issue
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
@html.header("", repository){
|
||||
<div class="row-fluid">
|
||||
<div class="span3">
|
||||
<div class="box">
|
||||
<ul class="nav nav-tabs nav-stacked side-menu">
|
||||
<li@if(active=="code"){ class="active"}>
|
||||
<a href="@url(repository)/search?q=@urlEncode(query)&type=code">
|
||||
@if(fileCount != 0){
|
||||
<span class="badge pull-right">@fileCount</span>
|
||||
}
|
||||
Code
|
||||
</a>
|
||||
</li>
|
||||
<li@if(active=="issue"){ class="active"}>
|
||||
<a href="@url(repository)/search?q=@urlEncode(query)&type=issue">
|
||||
@if(issueCount != 0){
|
||||
<span class="badge pull-right">@issueCount</span>
|
||||
}
|
||||
Issue
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span9">
|
||||
<form action="@url(repository)/search" method="GET">
|
||||
<input type="text" name="q" value="@query" style="width: 80%; margin-bottom: 0px;"/>
|
||||
<input type="submit" value="Search" class="btn" style="width: 15%;"/>
|
||||
<input type="hidden" name="type" value="@active"/>
|
||||
</form>
|
||||
@body
|
||||
</div>
|
||||
</div>
|
||||
<div class="span9">
|
||||
<form action="@url(repository)/search" method="GET">
|
||||
<input type="text" name="q" value="@query" style="width: 80%; margin-bottom: 0px;"/>
|
||||
<input type="submit" value="Search" class="btn" style="width: 15%;"/>
|
||||
<input type="hidden" name="type" value="@active"/>
|
||||
</form>
|
||||
@body
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@@ -4,31 +4,32 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main("Settings", Some(repository)){
|
||||
@html.header("settings", repository)
|
||||
@menu("collaborators", repository){
|
||||
<h3>Manage Collaborators</h3>
|
||||
<ul class="collaborator">
|
||||
@collaborators.map { collaboratorName =>
|
||||
<li>
|
||||
<a href="@url(collaboratorName)">@collaboratorName</a>
|
||||
@if(!isGroupRepository){
|
||||
<a href="@url(repository)/settings/collaborators/remove?name=@collaboratorName" class="remove">(remove)</a>
|
||||
} else {
|
||||
@if(repository.managers.contains(collaboratorName)){
|
||||
(Manager)
|
||||
@html.header("settings", repository){
|
||||
@menu("collaborators", repository){
|
||||
<h3>Manage Collaborators</h3>
|
||||
<ul class="collaborator">
|
||||
@collaborators.map { collaboratorName =>
|
||||
<li>
|
||||
<a href="@url(collaboratorName)">@collaboratorName</a>
|
||||
@if(!isGroupRepository){
|
||||
<a href="@url(repository)/settings/collaborators/remove?name=@collaboratorName" class="remove">(remove)</a>
|
||||
} else {
|
||||
@if(repository.managers.contains(collaboratorName)){
|
||||
(Manager)
|
||||
}
|
||||
}
|
||||
}
|
||||
</li>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
@if(!isGroupRepository){
|
||||
<form method="POST" action="@url(repository)/settings/collaborators/add" validate="true" autocomplete="off">
|
||||
<div>
|
||||
<span class="error" id="error-userName"></span>
|
||||
</div>
|
||||
@helper.html.account("userName", 300)
|
||||
<input type="submit" class="btn" value="Add"/>
|
||||
</form>
|
||||
}
|
||||
</ul>
|
||||
@if(!isGroupRepository){
|
||||
<form method="POST" action="@url(repository)/settings/collaborators/add" validate="true" autocomplete="off">
|
||||
<div>
|
||||
<span class="error" id="error-userName"></span>
|
||||
</div>
|
||||
@helper.html.account("userName", 300)
|
||||
<input type="submit" class="btn" value="Add"/>
|
||||
</form>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,37 +2,38 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main("Danger Zone", Some(repository)){
|
||||
@html.header("settings", repository)
|
||||
@menu("danger", repository){
|
||||
<div class="box">
|
||||
<div class="box-header">Danger Zone</div>
|
||||
<div class="box-content">
|
||||
<form id="transfer-form" method="post" action="@url(repository)/settings/transfer" validate="true" autocomplete="off">
|
||||
<fieldset>
|
||||
<label class="strong">Transfer Ownership</label>
|
||||
<div>
|
||||
Transfer this repo to another user or to group.
|
||||
<div class="pull-right">
|
||||
@helper.html.account("newOwner", 150)
|
||||
<input type="submit" class="btn btn-danger" value="Transfer"/>
|
||||
<div>
|
||||
<span id="error-newOwner" class="error"></span>
|
||||
@html.header("settings", repository){
|
||||
@menu("danger", repository){
|
||||
<div class="box">
|
||||
<div class="box-header">Danger Zone</div>
|
||||
<div class="box-content">
|
||||
<form id="transfer-form" method="post" action="@url(repository)/settings/transfer" validate="true" autocomplete="off">
|
||||
<fieldset>
|
||||
<label class="strong">Transfer Ownership</label>
|
||||
<div>
|
||||
Transfer this repo to another user or to group.
|
||||
<div class="pull-right">
|
||||
@helper.html.account("newOwner", 150)
|
||||
<input type="submit" class="btn btn-danger" value="Transfer"/>
|
||||
<div>
|
||||
<span id="error-newOwner" class="error"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
<form id="delete-form" method="post" action="@url(repository)/settings/delete">
|
||||
<fieldset class="margin">
|
||||
<label class="strong">Delete repository</label>
|
||||
<div>
|
||||
Once you delete a repository, there is no going back.
|
||||
<input type="submit" class="btn btn-danger pull-right" value="Delete this repository"/>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</fieldset>
|
||||
</form>
|
||||
<form id="delete-form" method="post" action="@url(repository)/settings/delete">
|
||||
<fieldset class="margin">
|
||||
<label class="strong">Delete repository</label>
|
||||
<div>
|
||||
Once you delete a repository, there is no going back.
|
||||
<input type="submit" class="btn btn-danger pull-right" value="Delete this repository"/>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
}
|
||||
<script>
|
||||
|
||||
@@ -2,22 +2,23 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main("Settings", Some(repository)){
|
||||
@html.header("settings", repository)
|
||||
@menu("hooks", repository){
|
||||
@helper.html.information(info)
|
||||
<h3>WebHook URLs</h3>
|
||||
<ul>
|
||||
@webHooks.map { webHook =>
|
||||
<li>@webHook.url <a href="@url(repository)/settings/hooks/delete?url=@urlEncode(webHook.url)" class="remove">(remove)</a></li>
|
||||
}
|
||||
</ul>
|
||||
<form method="POST" action="@url(repository)/settings/hooks/add" validate="true">
|
||||
<div>
|
||||
<span class="error" id="error-url"></span>
|
||||
</div>
|
||||
<input type="text" name="url" id="url" style="width: 300px; margin-bottom: 0px;"/>
|
||||
<input type="submit" class="btn" value="Add"/>
|
||||
<a href="@url(repository)/settings/hooks/test" class="btn">Test Hook</a>
|
||||
</form>
|
||||
@html.header("settings", repository){
|
||||
@menu("hooks", repository){
|
||||
@helper.html.information(info)
|
||||
<h3>WebHook URLs</h3>
|
||||
<ul>
|
||||
@webHooks.map { webHook =>
|
||||
<li>@webHook.url <a href="@url(repository)/settings/hooks/delete?url=@urlEncode(webHook.url)" class="remove">(remove)</a></li>
|
||||
}
|
||||
</ul>
|
||||
<form method="POST" action="@url(repository)/settings/hooks/add" validate="true">
|
||||
<div>
|
||||
<span class="error" id="error-url"></span>
|
||||
</div>
|
||||
<input type="text" name="url" id="url" style="width: 300px; margin-bottom: 0px;"/>
|
||||
<input type="submit" class="btn" value="Add"/>
|
||||
<a href="@url(repository)/settings/hooks/test" class="btn">Test Hook</a>
|
||||
</form>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,98 +2,99 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main("Settings", Some(repository)){
|
||||
@html.header("settings", repository)
|
||||
@menu("options", repository){
|
||||
@helper.html.information(info)
|
||||
<form id="form" method="post" action="@url(repository)/settings/options" validate="true">
|
||||
<div class="box">
|
||||
<div class="box-header">Settings</div>
|
||||
<div class="box-content">
|
||||
<fieldset>
|
||||
<label for="repositoryName" class="strong">Repository Name:</label>
|
||||
<input type="text" name="repositoryName" id="repositoryName" value="@repository.name"/>
|
||||
<span id="error-repositoryName" class="error"></span>
|
||||
</fieldset>
|
||||
<fieldset class="margin">
|
||||
<label for="description" class="strong">Description:</label>
|
||||
<input type="text" name="description" id="description" style="width: 600px;" value="@repository.repository.description"/>
|
||||
</fieldset>
|
||||
<fieldset class="margin">
|
||||
<label for="defaultBranch" class="strong">Default Branch:</label>
|
||||
<select name="defaultBranch" id="defaultBranch"@if(repository.branchList.isEmpty){ disabled}>
|
||||
@if(repository.branchList.isEmpty){
|
||||
<option value="none" selected>No Branch</option>
|
||||
} else {
|
||||
@repository.branchList.map { branch =>
|
||||
<option@if(branch==repository.repository.defaultBranch){ selected}>@branch</option>
|
||||
@html.header("settings", repository){
|
||||
@menu("options", repository){
|
||||
@helper.html.information(info)
|
||||
<form id="form" method="post" action="@url(repository)/settings/options" validate="true">
|
||||
<div class="box">
|
||||
<div class="box-header">Settings</div>
|
||||
<div class="box-content">
|
||||
<fieldset>
|
||||
<label for="repositoryName" class="strong">Repository Name:</label>
|
||||
<input type="text" name="repositoryName" id="repositoryName" value="@repository.name"/>
|
||||
<span id="error-repositoryName" class="error"></span>
|
||||
</fieldset>
|
||||
<fieldset class="margin">
|
||||
<label for="description" class="strong">Description:</label>
|
||||
<input type="text" name="description" id="description" style="width: 600px;" value="@repository.repository.description"/>
|
||||
</fieldset>
|
||||
<fieldset class="margin">
|
||||
<label for="defaultBranch" class="strong">Default Branch:</label>
|
||||
<select name="defaultBranch" id="defaultBranch"@if(repository.branchList.isEmpty){ disabled}>
|
||||
@if(repository.branchList.isEmpty){
|
||||
<option value="none" selected>No Branch</option>
|
||||
} else {
|
||||
@repository.branchList.map { branch =>
|
||||
<option@if(branch==repository.repository.defaultBranch){ selected}>@branch</option>
|
||||
}
|
||||
}
|
||||
</select>
|
||||
@if(repository.branchList.isEmpty){
|
||||
<input type="hidden" name="defaultBranch" value="none"/>
|
||||
}
|
||||
</select>
|
||||
@if(repository.branchList.isEmpty){
|
||||
<input type="hidden" name="defaultBranch" value="none"/>
|
||||
}
|
||||
<span class="error" id="error-defaultBranch"></span>
|
||||
</fieldset>
|
||||
<fieldset class="margin">
|
||||
<label class="radio">
|
||||
<input type="radio" name="isPrivate" value="false"
|
||||
@if(!repository.repository.isPrivate ){ checked }
|
||||
@if(repository.repository.parentUserName.isDefined){ disabled }
|
||||
>
|
||||
<span class="strong">Public</span><br>
|
||||
<div>
|
||||
<span>All users and guests can read this repository.</span>
|
||||
</div>
|
||||
</label>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label class="radio">
|
||||
<input type="radio" name="isPrivate" value="true"
|
||||
@if(repository.repository.isPrivate ){ checked }
|
||||
@if(repository.repository.parentUserName.isDefined){ disabled }
|
||||
>
|
||||
<span class="strong">Private</span><br>
|
||||
<div>
|
||||
<span>Only collaborators can read this repository.</span>
|
||||
</div>
|
||||
</label>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
@*
|
||||
<div class="box">
|
||||
<div class="box-header">Features:</div>
|
||||
<div class="box-content">
|
||||
<dl>
|
||||
<dt>
|
||||
<label class="checkbox strong">
|
||||
<input type="checkbox" name="wiki" id="wiki"/> Wiki
|
||||
<span class="error" id="error-defaultBranch"></span>
|
||||
</fieldset>
|
||||
<fieldset class="margin">
|
||||
<label class="radio">
|
||||
<input type="radio" name="isPrivate" value="false"
|
||||
@if(!repository.repository.isPrivate ){ checked }
|
||||
@if(repository.repository.parentUserName.isDefined){ disabled }
|
||||
>
|
||||
<span class="strong">Public</span><br>
|
||||
<div>
|
||||
<span>All users and guests can read this repository.</span>
|
||||
</div>
|
||||
</label>
|
||||
</dt>
|
||||
<dd>
|
||||
Adds lightweight Wiki system to this repository.
|
||||
This is the simplest way to provide documentation or examples.
|
||||
Only collaborators can edit Wiki pages.
|
||||
</dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<dl>
|
||||
<dt>
|
||||
<label class="checkbox strong">
|
||||
<input type="checkbox" name="issue" id="issue"/> Issue
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label class="radio">
|
||||
<input type="radio" name="isPrivate" value="true"
|
||||
@if(repository.repository.isPrivate ){ checked }
|
||||
@if(repository.repository.parentUserName.isDefined){ disabled }
|
||||
>
|
||||
<span class="strong">Private</span><br>
|
||||
<div>
|
||||
<span>Only collaborators can read this repository.</span>
|
||||
</div>
|
||||
</label>
|
||||
</dt>
|
||||
<dd>
|
||||
Adds lightweight issue tracking integrated with this repository.
|
||||
All users who have signed in and can access this repository can register an issue.
|
||||
</dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
*@
|
||||
<fieldset>
|
||||
<input type="submit" class="btn btn-success" value="Apply changes"/>
|
||||
</fieldset>
|
||||
</form>
|
||||
@*
|
||||
<div class="box">
|
||||
<div class="box-header">Features:</div>
|
||||
<div class="box-content">
|
||||
<dl>
|
||||
<dt>
|
||||
<label class="checkbox strong">
|
||||
<input type="checkbox" name="wiki" id="wiki"/> Wiki
|
||||
</label>
|
||||
</dt>
|
||||
<dd>
|
||||
Adds lightweight Wiki system to this repository.
|
||||
This is the simplest way to provide documentation or examples.
|
||||
Only collaborators can edit Wiki pages.
|
||||
</dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<dl>
|
||||
<dt>
|
||||
<label class="checkbox strong">
|
||||
<input type="checkbox" name="issue" id="issue"/> Issue
|
||||
</label>
|
||||
</dt>
|
||||
<dd>
|
||||
Adds lightweight issue tracking integrated with this repository.
|
||||
All users who have signed in and can access this repository can register an issue.
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
*@
|
||||
<fieldset>
|
||||
<input type="submit" class="btn btn-success" value="Apply changes"/>
|
||||
</fieldset>
|
||||
</form>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,31 +10,32 @@
|
||||
@import org.eclipse.jgit.diff.DiffEntry.ChangeType
|
||||
@html.main(s"Compare Revisions - ${repository.owner}/${repository.name}", Some(repository)){
|
||||
@helper.html.information(info)
|
||||
@html.header("wiki", repository)
|
||||
@tab("history", repository)
|
||||
<ul class="nav nav-tabs">
|
||||
<li>
|
||||
<h1 class="wiki-title"><span class="muted">Compare Revisions</span></h1>
|
||||
</li>
|
||||
<li class="pull-right">
|
||||
<div class="btn-group">
|
||||
@if(pageName.isDefined){
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)">View Page</a>
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)/_history">Back to Page History</a>
|
||||
} else {
|
||||
<a class="btn" href="@url(repository)/wiki/_history">Back to Wiki History</a>
|
||||
}
|
||||
@html.header("wiki", repository){
|
||||
@tab("history", repository)
|
||||
<ul class="nav nav-tabs">
|
||||
<li>
|
||||
<h1 class="wiki-title"><span class="muted">Compare Revisions</span></h1>
|
||||
</li>
|
||||
<li class="pull-right">
|
||||
<div class="btn-group">
|
||||
@if(pageName.isDefined){
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)">View Page</a>
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)/_history">Back to Page History</a>
|
||||
} else {
|
||||
<a class="btn" href="@url(repository)/wiki/_history">Back to Wiki History</a>
|
||||
}
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
@helper.html.diff(diffs, repository, None, None, false)
|
||||
@if(hasWritePermission){
|
||||
<div>
|
||||
@if(pageName.isDefined){
|
||||
<a href="@url(repository)/wiki/@urlEncode(pageName)/_revert/@from...@to" class="btn">Revert Changes</a>
|
||||
} else {
|
||||
<a href="@url(repository)/wiki/_revert/@from...@to" class="btn">Revert Changes</a>
|
||||
}
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
@helper.html.diff(diffs, repository, None, None, false)
|
||||
@if(hasWritePermission){
|
||||
<div>
|
||||
@if(pageName.isDefined){
|
||||
<a href="@url(repository)/wiki/@urlEncode(pageName)/_revert/@from...@to" class="btn">Revert Changes</a>
|
||||
} else {
|
||||
<a href="@url(repository)/wiki/_revert/@from...@to" class="btn">Revert Changes</a>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,31 +4,32 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"${if(pageName.isEmpty) "New Page" else pageName} - ${repository.owner}/${repository.name}", Some(repository)){
|
||||
@html.header("wiki", repository)
|
||||
@tab("", repository)
|
||||
<ul class="nav nav-tabs">
|
||||
<li>
|
||||
<h1 class="wiki-title"><span class="muted">Editing</span> @if(pageName.isEmpty){New Page} else {@pageName}</h1>
|
||||
</li>
|
||||
<li class="pull-right">
|
||||
<div class="btn-group">
|
||||
@if(page.isDefined){
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)">View Page</a>
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)/_delete" id="delete">Delete Page</a>
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)/_history">Page History</a>
|
||||
}
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<form action="@url(repository)/wiki/@if(page.isEmpty){_new} else {_edit}" method="POST" validate="true">
|
||||
<span id="error-pageName" class="error"></span>
|
||||
<input type="text" name="pageName" value="@pageName" style="width: 900px; font-weight: bold;" placeholder="Input a page name."/>
|
||||
@helper.html.preview(repository, page.map(_.content).getOrElse(""), true, false, "width: 900px; height: 400px;", "")
|
||||
<input type="text" name="message" value="" style="width: 900px;" placeholder="Write a small message here explaining this change. (Optional)"/>
|
||||
<input type="hidden" name="currentPageName" value="@pageName"/>
|
||||
<input type="hidden" name="id" value="@page.map(_.id)"/>
|
||||
<input type="submit" value="Save" class="btn btn-success">
|
||||
</form>
|
||||
@html.header("wiki", repository){
|
||||
@tab("", repository)
|
||||
<ul class="nav nav-tabs">
|
||||
<li>
|
||||
<h1 class="wiki-title"><span class="muted">Editing</span> @if(pageName.isEmpty){New Page} else {@pageName}</h1>
|
||||
</li>
|
||||
<li class="pull-right">
|
||||
<div class="btn-group">
|
||||
@if(page.isDefined){
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)">View Page</a>
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)/_delete" id="delete">Delete Page</a>
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)/_history">Page History</a>
|
||||
}
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<form action="@url(repository)/wiki/@if(page.isEmpty){_new} else {_edit}" method="POST" validate="true">
|
||||
<span id="error-pageName" class="error"></span>
|
||||
<input type="text" name="pageName" value="@pageName" style="width: 900px; font-weight: bold;" placeholder="Input a page name."/>
|
||||
@helper.html.preview(repository, page.map(_.content).getOrElse(""), true, false, "width: 900px; height: 400px;", "")
|
||||
<input type="text" name="message" value="" style="width: 900px;" placeholder="Write a small message here explaining this change. (Optional)"/>
|
||||
<input type="hidden" name="currentPageName" value="@pageName"/>
|
||||
<input type="hidden" name="id" value="@page.map(_.id)"/>
|
||||
<input type="submit" value="Save" class="btn btn-success">
|
||||
</form>
|
||||
}
|
||||
}
|
||||
<script>
|
||||
$(function(){
|
||||
|
||||
@@ -4,68 +4,69 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"History - ${repository.owner}/${repository.name}", Some(repository)){
|
||||
@html.header("wiki", repository)
|
||||
@tab(if(pageName.isEmpty) "history" else "", repository)
|
||||
<ul class="nav nav-tabs">
|
||||
<li>
|
||||
<h1 class="wiki-title">
|
||||
@if(pageName.isEmpty){
|
||||
<span class="muted">History</span>
|
||||
} else {
|
||||
<span class="muted">History for</span> @pageName.get
|
||||
}
|
||||
</h1>
|
||||
</li>
|
||||
<li class="pull-right">
|
||||
<div class="btn-group">
|
||||
@if(pageName.isEmpty){
|
||||
@if(loginAccount.isDefined){
|
||||
<a class="btn" href="@url(repository)/wiki/_new">New Page</a>
|
||||
@html.header("wiki", repository){
|
||||
@tab(if(pageName.isEmpty) "history" else "", repository)
|
||||
<ul class="nav nav-tabs">
|
||||
<li>
|
||||
<h1 class="wiki-title">
|
||||
@if(pageName.isEmpty){
|
||||
<span class="muted">History</span>
|
||||
} else {
|
||||
<span class="muted">History for</span> @pageName.get
|
||||
}
|
||||
} else {
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)">View Page</a>
|
||||
@if(loginAccount.isDefined){
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)/_edit">Edit Page</a>
|
||||
</h1>
|
||||
</li>
|
||||
<li class="pull-right">
|
||||
<div class="btn-group">
|
||||
@if(pageName.isEmpty){
|
||||
@if(loginAccount.isDefined){
|
||||
<a class="btn" href="@url(repository)/wiki/_new">New Page</a>
|
||||
}
|
||||
} else {
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)">View Page</a>
|
||||
@if(loginAccount.isDefined){
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)/_edit">Edit Page</a>
|
||||
}
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<table class="table table-bordered">
|
||||
@commits.map { commit =>
|
||||
<tr>
|
||||
<td width="0%"><input type="checkbox" name="commitId" value="@commit.id"></td>
|
||||
<td>@avatar(commit, 20) @user(commit.committer, commit.mailAddress)</td>
|
||||
<td width="80%">
|
||||
<span class="muted">@datetime(commit.time):</span> @commit.shortMessage
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
<input type="button" id="compare" value="Compare Revisions" class="btn"/>
|
||||
<input type="button" id="top" value="Back to Top" class="btn"/>
|
||||
<script>
|
||||
$(function(){
|
||||
$('input[name=commitId]').click(function(){
|
||||
return !($('input[name=commitId]:checked').length == 3);
|
||||
});
|
||||
|
||||
$('#compare').click(function(){
|
||||
var e = $('input[name=commitId]:checked');
|
||||
if(e.length == 2){
|
||||
@if(pageName.isEmpty){
|
||||
location.href = '@url(repository)/wiki/_compare/' +
|
||||
$(e.get(1)).attr('value') + '...' + $(e.get(0)).attr('value');
|
||||
} else {
|
||||
location.href = '@url(repository)/wiki/@urlEncode(pageName.get)/_compare/' +
|
||||
$(e.get(1)).attr('value') + '...' + $(e.get(0)).attr('value');
|
||||
}
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<table class="table table-bordered">
|
||||
@commits.map { commit =>
|
||||
<tr>
|
||||
<td width="0%"><input type="checkbox" name="commitId" value="@commit.id"></td>
|
||||
<td>@avatar(commit, 20) @user(commit.committer, commit.mailAddress)</td>
|
||||
<td width="80%">
|
||||
<span class="muted">@datetime(commit.time):</span> @commit.shortMessage
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
<input type="button" id="compare" value="Compare Revisions" class="btn"/>
|
||||
<input type="button" id="top" value="Back to Top" class="btn"/>
|
||||
<script>
|
||||
$(function(){
|
||||
$('input[name=commitId]').click(function(){
|
||||
return !($('input[name=commitId]:checked').length == 3);
|
||||
});
|
||||
|
||||
$('#compare').click(function(){
|
||||
var e = $('input[name=commitId]:checked');
|
||||
if(e.length == 2){
|
||||
@if(pageName.isEmpty){
|
||||
location.href = '@url(repository)/wiki/_compare/' +
|
||||
$(e.get(1)).attr('value') + '...' + $(e.get(0)).attr('value');
|
||||
} else {
|
||||
location.href = '@url(repository)/wiki/@urlEncode(pageName.get)/_compare/' +
|
||||
$(e.get(1)).attr('value') + '...' + $(e.get(0)).attr('value');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$('#top').click(function(){
|
||||
$('html,body').animate({ scrollTop: 0 }, 'fast');
|
||||
});
|
||||
});
|
||||
|
||||
$('#top').click(function(){
|
||||
$('html,body').animate({ scrollTop: 0 }, 'fast');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
}
|
||||
}
|
||||
@@ -5,26 +5,27 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"${pageName} - ${repository.owner}/${repository.name}", Some(repository)){
|
||||
@html.header("wiki", repository)
|
||||
@tab((if(pageName == "Home") "home" else ""), repository)
|
||||
<ul class="nav nav-tabs">
|
||||
<li>
|
||||
<h1 class="wiki-title">@pageName</h1>
|
||||
</li>
|
||||
<li class="pull-right">
|
||||
<div class="btn-group">
|
||||
@if(hasWritePermission){
|
||||
<a class="btn" href="@url(repository)/wiki/_new">New Page</a>
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)/_edit">Edit Page</a>
|
||||
}
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)/_history">Page History</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="markdown-body">
|
||||
@markdown(page.content, repository, true, false)
|
||||
</div>
|
||||
<div class="small">
|
||||
<span class="muted">Last edited by @page.committer at @datetime(page.time)</span>
|
||||
</div>
|
||||
@html.header("wiki", repository){
|
||||
@tab((if(pageName == "Home") "home" else ""), repository)
|
||||
<ul class="nav nav-tabs">
|
||||
<li>
|
||||
<h1 class="wiki-title">@pageName</h1>
|
||||
</li>
|
||||
<li class="pull-right">
|
||||
<div class="btn-group">
|
||||
@if(hasWritePermission){
|
||||
<a class="btn" href="@url(repository)/wiki/_new">New Page</a>
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)/_edit">Edit Page</a>
|
||||
}
|
||||
<a class="btn" href="@url(repository)/wiki/@urlEncode(pageName)/_history">Page History</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="markdown-body">
|
||||
@markdown(page.content, repository, true, false)
|
||||
</div>
|
||||
<div class="small">
|
||||
<span class="muted">Last edited by @page.committer at @datetime(page.time)</span>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,24 +4,24 @@
|
||||
@import context._
|
||||
@import view.helpers._
|
||||
@html.main(s"Pages - ${repository.owner}/${repository.name}", Some(repository)){
|
||||
@html.header("wiki", repository)
|
||||
@tab("pages", repository)
|
||||
<ul class="nav nav-tabs">
|
||||
<li>
|
||||
<h1 class="wiki-title"><span class="muted">Pages</span></h1>
|
||||
</li>
|
||||
<li class="pull-right">
|
||||
<div class="btn-group">
|
||||
@if(hasWritePermission){
|
||||
<a class="btn" href="@url(repository)/wiki/_new">New Page</a>
|
||||
}
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
@pages.map { page =>
|
||||
<li><a href="@url(repository)/wiki/@urlEncode(page)">@page</a></li>
|
||||
}
|
||||
</ul>
|
||||
|
||||
@html.header("wiki", repository){
|
||||
@tab("pages", repository)
|
||||
<ul class="nav nav-tabs">
|
||||
<li>
|
||||
<h1 class="wiki-title"><span class="muted">Pages</span></h1>
|
||||
</li>
|
||||
<li class="pull-right">
|
||||
<div class="btn-group">
|
||||
@if(hasWritePermission){
|
||||
<a class="btn" href="@url(repository)/wiki/_new">New Page</a>
|
||||
}
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
@pages.map { page =>
|
||||
<li><a href="@url(repository)/wiki/@urlEncode(page)">@page</a></li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
<li@if(active == "pages" ){ class="active"}><a href="@url(repository)/wiki/_pages">Pages</a></li>
|
||||
<li@if(active == "history"){ class="active"}><a href="@url(repository)/wiki/_history">Wiki History</a></li>
|
||||
<li class="pull-right">
|
||||
@helper.html.copy("repository-url-copy", httpUrl(repository), true){
|
||||
@helper.html.copy("repository-url-copy", httpUrl(repository)){
|
||||
@if(settings.ssh && loginAccount.isDefined){
|
||||
<div class="btn-group add-on" data-toggle="buttons-radio" style="padding: 0px; border-width: 0px;">
|
||||
<button type="button" class="btn active" id="repository-url-http">HTTP</button><button type="button" class="btn" id="repository-url-ssh">SSH</button>
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
/****************************************************************************/
|
||||
body {
|
||||
color: #333;
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
li p {
|
||||
@@ -122,7 +123,7 @@ span.error {
|
||||
}
|
||||
|
||||
.small {
|
||||
font-size: 85%;
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
.strong {
|
||||
@@ -436,6 +437,7 @@ table.table-file-list td {
|
||||
th, td, .table th, .table td {
|
||||
padding-top: 4px;
|
||||
padding-bottom: 4px;
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
div.commit-avatar-image {
|
||||
@@ -458,7 +460,16 @@ pre.commit-description {
|
||||
#repository-url {
|
||||
background-color: white;
|
||||
cursor: default;
|
||||
width: 300px;
|
||||
height: 16px;
|
||||
width: 129px;
|
||||
color: silver;
|
||||
font-size: 9pt;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
#repository-url-copy {
|
||||
height: 18px;
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
ul#commit-file-list {
|
||||
|
||||
Reference in New Issue
Block a user