Refactor for views.

- Replace urls with helpers.url and helpers.assets
- Move google-code-prettify to main.scala.html
- Move some CSS styles to gitbucket.css
This commit is contained in:
takezoe
2013-06-27 21:19:41 +09:00
parent 3edf195da8
commit 89c0e52c1d
36 changed files with 265 additions and 240 deletions

View File

@@ -26,6 +26,22 @@ object helpers {
Html(Markdown.toHtml(value, repository, enableWikiLink, enableCommitLink, enableIssueLink))
}
/**
* Generates the url to the repository.
*/
def url(repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context): String =
"%s/%s/%s".format(context.path, repository.owner, repository.name)
/**
* Generates the url to the account page.
*/
def url(userName: String)(implicit context: app.Context): String = "%s/%s".format(context.path, userName)
/**
* Returns the url to the root of assets.
*/
def assets(implicit context: app.Context): String = "%s/assets".format(context.path)
/**
* Converts issue id and commit id to link.
*/

View File

@@ -1,7 +1,8 @@
@(account: model.Account)(implicit context: app.Context)
@import context._
@import view.helpers._
@html.main(account.userName){
<form action="@path/@account.userName/_edit" method="POST" validate="true">
<form action="@url(account.userName)/_edit" method="POST" validate="true">
<fieldset>
<label><strong>Mail Address</strong></label>
<input type="text" name="mailAddress" id="mailAddress" value="@account.mailAddress"/>
@@ -13,8 +14,8 @@
<span id="error-url" class="error"></span>
</fieldset>
<fieldset>
<input type="submit" class="btn btn-primary" value="Save"/>
<a href="@path/@account.userName" class="btn">Cancel</a>
<input type="submit" class="btn btn-success" value="Save"/>
<a href="@url(account.userName)" class="btn">Cancel</a>
</fieldset>
</form>
}

View File

@@ -1,6 +1,6 @@
@(account: model.Account, repositories: List[service.RepositoryService.RepositoryInfo])(implicit context: app.Context)
@import context._
@import view.helpers
@import view.helpers._
@html.main(account.userName){
<div class="container-fluid">
<div class="row-fluid">
@@ -10,7 +10,7 @@
</div>
<div class="block">
<div><i class="icon-home"></i> <a href="@account.url">@account.url</a></div>
<div><i class="icon-time"></i> <span class="muted">Joined on</span> @helpers.date(account.registeredDate)</div>
<div><i class="icon-time"></i> <span class="muted">Joined on</span> @date(account.registeredDate)</div>
</div>
</div>
<div class="span8">
@@ -22,7 +22,7 @@
@if(loginAccount.isDefined && loginAccount.get.userName == account.userName){
<li class="pull-right">
<div class="button-group">
<a href="@path/@account.userName/_edit" class="btn">Edit Your Profile</a>
<a href="@url(account.userName)/_edit" class="btn">Edit Your Profile</a>
</div>
</li>
}
@@ -30,9 +30,9 @@
@repositories.map { repository =>
<div class="block">
<div class="block-header">
<a href="@path/@repository.owner">@repository.owner</a>
<a href="@url(repository.owner)">@repository.owner</a>
/
<a href="@path/@repository.owner/@repository.name">@repository.name</a>
<a href="@url(repository)">@repository.name</a>
@if(repository.repository.isPrivate){
<i class="icon-lock"></i>
}
@@ -40,7 +40,7 @@
@if(repository.repository.description.isDefined){
<div>@repository.repository.description</div>
}
<div><span class="muted small">Last updated: @helpers.datetime(repository.repository.lastActivityDate)</span></div>
<div><span class="muted small">Last updated: @datetime(repository.repository.lastActivityDate)</span></div>
</div>
}
</div>

View File

@@ -32,7 +32,7 @@
<span id="error-url" class="error"></span>
</fieldset>
<fieldset>
<input type="submit" class="btn btn-primary" value="@if(account.isEmpty){Create User} else {Update User}"/>
<input type="submit" class="btn btn-success" value="@if(account.isEmpty){Create User} else {Update User}"/>
<a href="@path/admin/users" class="btn">Cancel</a>
</fieldset>
</form>

View File

@@ -1,5 +1,6 @@
@(diffs: Seq[util.JGitUtil.DiffInfo], repository: service.RepositoryService.RepositoryInfo, commitId: Option[String])(implicit context: app.Context)
@import context._
@import view.helpers._
@import org.eclipse.jgit.diff.DiffEntry.ChangeType
@diffs.zipWithIndex.map { case (diff, i) =>
<a name="diff-@i"></a>
@@ -17,7 +18,7 @@
}
@if(commitId.isDefined){
<div class="pull-right align-right">
<a href="@path/@repository.owner/@repository.name/blob/@commitId.get/@diff.newPath" class="btn btn-small">View file @@ @commitId.get.substring(0, 10)</a>
<a href="@url(repository)/blob/@commitId.get/@diff.newPath" class="btn btn-small">View file @@ @commitId.get.substring(0, 10)</a>
</div>
}
</th>
@@ -35,9 +36,9 @@
</tr>
</table>
}
<script type="text/javascript" src="@path/assets/jsdifflib/difflib.js"></script>
<script type="text/javascript" src="@path/assets/jsdifflib/diffview.js"></script>
<link href="@path/assets/jsdifflib/diffview.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="@assets/jsdifflib/difflib.js"></script>
<script type="text/javascript" src="@assets/jsdifflib/diffview.js"></script>
<link href="@assets/jsdifflib/diffview.css" type="text/css" rel="stylesheet" />
<style type="text/css">
table.inlinediff {
width: 100%;
@@ -53,39 +54,39 @@ td.insert, td.equal, td.delete {
</style>
<script>
function diffUsingJS(oldTextId, newTextId, outputId) {
// get the baseText and newText values from the two textboxes, and split them into lines
var oldText = document.getElementById(oldTextId).value;
if(oldText == ''){
var oldLines = [];
} else {
var oldLines = difflib.stringAsLines(oldText);
}
// get the baseText and newText values from the two textboxes, and split them into lines
var oldText = document.getElementById(oldTextId).value;
if(oldText == ''){
var oldLines = [];
} else {
var oldLines = difflib.stringAsLines(oldText);
}
var newText = document.getElementById(newTextId).value
if(newText == ''){
var newLines = [];
} else {
var newLines = difflib.stringAsLines(newText);
}
var newText = document.getElementById(newTextId).value
if(newText == ''){
var newLines = [];
} else {
var newLines = difflib.stringAsLines(newText);
}
// create a SequenceMatcher instance that diffs the two sets of lines
var sm = new difflib.SequenceMatcher(oldLines, newLines);
// create a SequenceMatcher instance that diffs the two sets of lines
var sm = new difflib.SequenceMatcher(oldLines, newLines);
// get the opcodes from the SequenceMatcher instance
// opcodes is a list of 3-tuples describing what changes should be made to the base text
// in order to yield the new text
var opcodes = sm.get_opcodes();
var diffoutputdiv = document.getElementById(outputId);
while (diffoutputdiv.firstChild) diffoutputdiv.removeChild(diffoutputdiv.firstChild);
// get the opcodes from the SequenceMatcher instance
// opcodes is a list of 3-tuples describing what changes should be made to the base text
// in order to yield the new text
var opcodes = sm.get_opcodes();
var diffoutputdiv = document.getElementById(outputId);
while (diffoutputdiv.firstChild) diffoutputdiv.removeChild(diffoutputdiv.firstChild);
// build the diff view and add it to the current DOM
diffoutputdiv.appendChild(diffview.buildView({
baseTextLines: oldLines,
newTextLines: newLines,
opcodes: opcodes,
contextSize: 4,
viewType: 1
}));
// build the diff view and add it to the current DOM
diffoutputdiv.appendChild(diffview.buildView({
baseTextLines: oldLines,
newTextLines: newLines,
opcodes: opcodes,
contextSize: 4,
viewType: 1
}));
}
$(function(){

View File

@@ -1,7 +1,8 @@
@(active: String, repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import context._
@import view.helpers._
<div class="head">
<a href="@path/@repository.owner">@repository.owner</a> / <a href="@path/@repository.owner/@repository.name">@repository.name</a>
<a href="@url(repository.owner)">@repository.owner</a> / <a href="@url(repository)">@repository.name</a>
@if(repository.repository.isPrivate){
<i class="icon-lock"></i>
}
@@ -9,17 +10,17 @@
<table class="global-nav box-header">
<tr>
<th class="box-header@if(active=="code"){ active}">
<a href="@path/@repository.owner/@repository.name">Code</a>
<a href="@url(repository)">Code</a>
</th>
<th class="box-header@if(active=="issues"){ active}">
<a href="@path/@repository.owner/@repository.name/issues">Issues</a>
<a href="@url(repository)/issues">Issues</a>
</th>
<th class="box-header@if(active=="wiki"){ active}">
<a href="@path/@repository.owner/@repository.name/wiki">Wiki</a>
<a href="@url(repository)/wiki">Wiki</a>
</th>
@if(loginAccount.isDefined && (loginAccount.get.isAdmin || loginAccount.get.userName == repository.owner)){
<th class="box-header@if(active=="settings"){ active}">
<a href="@path/@repository.owner/@repository.name/settings">Settings</a>
<a href="@url(repository)/settings">Settings</a>
</th>
}
</tr>

View File

@@ -1,14 +1,14 @@
@(repositories: List[service.RepositoryService.RepositoryInfo])(implicit context: app.Context)
@import context._
@import view.helpers
@import view.helpers._
@main("GitBucket"){
<h3>Recent updated repositories</h3>
@repositories.map { repository =>
<div class="block">
<div class="block-header-2">
<a href="@path/@repository.owner">@repository.owner</a>
<a href="@url(repository.owner)">@repository.owner</a>
/
<a href="@path/@repository.owner/@repository.name">@repository.name</a>
<a href="@url(repository)">@repository.name</a>
@if(repository.repository.isPrivate){
<i class="icon-lock"></i>
}
@@ -16,7 +16,7 @@
@if(repository.repository.description.isDefined){
<div>@repository.repository.description</div>
}
<div><span class="muted small">Last updated: @helpers.datetime(repository.repository.lastActivityDate)</span></div>
<div><span class="muted small">Last updated: @datetime(repository.repository.lastActivityDate)</span></div>
</div>
}
}

View File

@@ -5,7 +5,7 @@
@html.header("issues", repository)
@issuestab("issues", repository)
<ul class="nav nav-tabs">
<li class="pull-left"><a href="@path/@repository.owner/@repository.name/issues"><i class="icon-arrow-left"></i> Back to issue list</a></li>
<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">
@@ -13,7 +13,7 @@
<div class="box">
<div class="box-content">
<span class="pull-right"><a class="btn btn-small" href="#" id="edit">Edit</a></span>
<div class="small"><a href="@path/@issue.openedUserName">@issue.openedUserName</a> opened this issue @datetime(issue.registeredDate)</div>
<div class="small"><a href="@url(issue.openedUserName)">@issue.openedUserName</a> opened this issue @datetime(issue.registeredDate)</div>
<h4 id="issueTitle">@issue.title</h4>
</div>
<div class="box-content" style="background-color: #f5f5f5;" id="issueContent">
@@ -23,7 +23,7 @@
@comments.map { comment =>
<div class="box" id="comment-@comment.commentId">
<div class="box-header-small">
<a href="@path/@comment.commentedUserName">@comment.commentedUserName</a> commented
<a href="@url(comment.commentedUserName)">@comment.commentedUserName</a> commented
<span class="pull-right">
@datetime(comment.registeredDate)
<a href="#" data-comment-id="@comment.commentId"><i class="icon-pencil"></i></a>
@@ -34,7 +34,7 @@
</div>
</div>
}
<form action="@path/@repository.owner/@repository.name/issue_comments" method="POST" validate="true">
<form action="@url(repository)/issue_comments" method="POST" validate="true">
<div class="box">
<div class="box-content">
@html.preview(repository, "", false, true, true, "width: 730px; height: 100px;")
@@ -59,7 +59,7 @@
<script>
$(function(){
$('#edit').click(function(){
$.get('@path/@repository.owner/@repository.name/issues/_data/@issue.issueId',
$.get('@url(repository)/issues/_data/@issue.issueId',
{
dataType : 'html'
},
@@ -71,7 +71,7 @@ $(function(){
$('i.icon-pencil').click(function(){
var id = $(this).closest('a').data('comment-id');
$.get('@path/@repository.owner/@repository.name/issue_comments/_data/' + id,
$.get('@url(repository)/issue_comments/_data/' + id,
{
dataType : 'html'
},

View File

@@ -1,12 +1,13 @@
@(repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import context._
@import view.helpers._
@html.main("New Issue - " + repository.owner + "/" + repository.name){
@html.header("issues", repository)
@issuestab("", repository)
<div class="row-fluid">
<div class="span9">
<form action="@path/@repository.owner/@repository.name/issues" method="POST" validate="true">
<form action="@url(repository)/issues" method="POST" validate="true">
<div class="box">
<div class="box-content">
<span id="error-title" class="error"></span>

View File

@@ -11,20 +11,20 @@
<div class="span3">
<ul class="nav nav-pills nav-stacked">
<li@if(filter == "all"){ class="active"}>
<a href="@path/@repository.owner/@repository.name/issues@condition.toURL">
<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="@path/@repository.owner/@repository.name/issues/assigned/@loginAccount.map(_.userName)@condition.toURL">
<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="@path/@repository.owner/@repository.name/issues/created_by/@loginAccount.map(_.userName)@condition.toURL">
<a href="@url(repository)/issues/created_by/@loginAccount.map(_.userName)@condition.toURL">
<span class="count-right">@createdByCount</span>
Created by you
</a>
@@ -129,18 +129,18 @@
@issues.map { case (issue, labels, commentCount) =>
<tr>
<td>
<a href="@path/@repository.owner/@repository.name/issues/@issue.issueId" class="issue-title">@issue.title</a>
<a href="@url(repository)/issues/@issue.issueId" class="issue-title">@issue.title</a>
@labels.map { label =>
<span class="label-color" style="background-color: #@label.color; color: #@label.fontColor;">@label.labelName</span>
}
<span class="pull-right muted">#@issue.issueId</span>
<div class="small muted">
Opened by <a href="@path/@repository.owner" class="username">@issue.openedUserName</a> @datetime(issue.registeredDate)&nbsp;
Opened by <a href="@url(issue.openedUserName)" class="username">@issue.openedUserName</a> @datetime(issue.registeredDate)&nbsp;
@if(commentCount == 1){
<i class="icon-comment"></i><a href="@path/@repository.owner/@repository.name/issues/@issue.issueId" class="issue-comment-count">1 comment</a>
<i class="icon-comment"></i><a href="@url(repository)/issues/@issue.issueId" class="issue-comment-count">1 comment</a>
}
@if(commentCount > 1){
<i class="icon-comment"></i><a href="@path/@repository.owner/@repository.name/issues/@issue.issueId" class="issue-comment-count">@commentCount comments</a>
<i class="icon-comment"></i><a href="@url(repository)/issues/@issue.issueId" class="issue-comment-count">@commentCount comments</a>
}
</div>
</td>
@@ -153,7 +153,7 @@
@if(condition.labels.nonEmpty || condition.milestoneId.isDefined){
<a href="@condition.copy(labels = Set.empty, milestoneId = None).toURL">Clear active filters.</a>
} else {
<a href="@path/@repository.owner/@repository.name/issues/new">Create a new issue.</a>
<a href="@url(repository)/issues/new">Create a new issue.</a>
}
</td>
</tr>
@@ -170,10 +170,10 @@
$(function(){
$('#manageLabel').click(function(){
if($(this).data('toggle-state')){
location.href = '@path/@repository.owner/@repository.name/issues';
location.href = '@url(repository)/issues';
} else {
$(this).data('toggle-state', 'on');
$.get('@path/@repository.owner/@repository.name/issues/label/edit', function(data){
$.get('@url(repository)/issues/label/edit', function(data){
$('#label-list').parent().empty().html(data);
});
}

View File

@@ -1,11 +1,12 @@
@(active: String, repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import context._
@import view.helpers._
<ul class="nav nav-tabs">
<li@if(active == "issues"){ class="active"}><a href="@path/@repository.owner/@repository.name/issues">Browse Issues</a></li>
<li@if(active == "milestones"){ class="active"}><a href="@path/@repository.owner/@repository.name/issues/milestones">Milestones</a></li>
<li@if(active == "issues"){ class="active"}><a href="@url(repository)/issues">Browse Issues</a></li>
<li@if(active == "milestones"){ class="active"}><a href="@url(repository)/issues/milestones">Milestones</a></li>
<li class="pull-right">
<div class="btn-group">
<a class="btn btn-success" href="@path/@repository.owner/@repository.name/issues/new">New Issue</a>
<a class="btn btn-success" href="@url(repository)/issues/new">New Issue</a>
</div>
</li>
</ul>

View File

@@ -1,9 +1,10 @@
@(label: Option[model.Label], repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import context._
@import view.helpers._
@defining((if(label.isEmpty) ("new", 190, 4) else ("edit", 180, 8))){ case (mode, width, margin) =>
<div id="@(mode)LabelArea">
<form method="POST" id="edit-label-form"
action="@path/@repository.owner/@repository.name/issues/label/@{if(mode == "new") "new" else label.get.labelId + "/edit"}"
action="@url(repository)/issues/label/@{if(mode == "new") "new" else label.get.labelId + "/edit"}"
validate="true" @if(mode == "edit"){ style="margin-bottom: 8px;"}>
<span id="error-@(mode)LabelName" class="error"></span>
<input type="text" name="@(mode)LabelName" id="@(mode)LabelName" style="width: @(width)px; margin-left: @(margin)px; margin-bottom: 0px;" value="@label.map(_.labelName)"@if(mode == "new"){ placeholder="New label name"}/>

View File

@@ -1,5 +1,6 @@
@(labels: List[model.Label], repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import context._
@import view.helpers._
<div id="label-edit">
<ul class="label-list nav nav-pills nav-stacked">
@labels.map { label =>
@@ -17,7 +18,7 @@
$('i.icon-remove-circle').click(function(e){
e.stopPropagation();
if(confirm('Are you sure you want to delete this?')){
$.get('@path/@repository.owner/@repository.name/issues/label/' + $(this).parents('a').data('label-id') + '/delete',
$.get('@url(repository)/issues/label/' + $(this).parents('a').data('label-id') + '/delete',
function(data){
$('#label-edit').parent().empty().html(data);
}
@@ -29,7 +30,7 @@
if($('input[name=editLabelId]').val() != $(this).data('label-id')){
$('#editLabelArea').remove();
var element = this;
$.get('@path/@repository.owner/@repository.name/issues/label/' + $(this).data('label-id') + '/edit',
$.get('@url(repository)/issues/label/' + $(this).data('label-id') + '/edit',
function(data){
$(element).parent().append(data);
$('div#label-edit li').css('border', '1px solid white');

View File

@@ -1,10 +1,10 @@
@(milestone: Option[model.Milestone], repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import context._
@import view.helpers
@import view.helpers._
@html.main("Milestones - " + repository.owner + "/" + repository.name){
@html.header("milestones", repository)
@issuestab("milestones", repository)
<form method="POST" action="@path/@repository.owner/@repository.name/issues/milestones/@if(milestone.isEmpty){new}else{@milestone.get.milestoneId/edit}" validate="true">
<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)"/>
@@ -27,10 +27,10 @@
} else {
@if(milestone.get.closedDate.isDefined){
<input type="button" class="btn" value="Open" id="open"
onclick="location.href='@path/@repository.owner/@repository.name/issues/milestones/@milestone.get.milestoneId/close';"/>
onclick="location.href='@url(repository)/issues/milestones/@milestone.get.milestoneId/close';"/>
} else {
<input type="button" class="btn" value="Close" id="close"
onclick="location.href='@path/@repository.owner/@repository.name/issues/milestones/@milestone.get.milestoneId/open';"/>
onclick="location.href='@url(repository)/issues/milestones/@milestone.get.milestoneId/open';"/>
}
<input type="submit" class="btn" value="Update milestone"/>
}

View File

@@ -1,6 +1,6 @@
@(state: String, milestones: List[(model.Milestone, Int, Int)], repository: service.RepositoryService.RepositoryInfo, isWritable: Boolean)(implicit context: app.Context)
@import context._
@import view.helpers
@import view.helpers._
@html.main("Milestones - " + repository.owner + "/" + repository.name){
@html.header("milestones", repository)
@issuestab("milestones", repository)
@@ -22,7 +22,7 @@
</ul>
@if(isWritable){
<hr>
<a href="@path/@repository.owner/@repository.name/issues/milestones/new" class="btn btn-block">Create a new milestone</a>
<a href="@url(repository)/issues/milestones/new" class="btn btn-block">Create a new milestone</a>
}
</div>
<div class="span9">
@@ -35,12 +35,12 @@
<td>
<div class="milestone row-fluid">
<div class="span4">
<a href="@path/@repository.owner/@repository.name/issues?milestone=@milestone.milestoneId&state=open" class="milestone-title">@milestone.title</a><br>
<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 @helpers.datetime(milestone.closedDate.get)</span>
<span class="muted">Closed @datetime(milestone.closedDate.get)</span>
} else {
@if(milestone.dueDate.isDefined){
<span class="muted">Due in @helpers.date(milestone.dueDate.get)</span>
<span class="muted">Due in @date(milestone.dueDate.get)</span>
} else {
<span class="muted">No due date</span>
}
@@ -50,15 +50,15 @@
<div class="milestone-menu">
<div class="pull-right">
@if(isWritable){
<a href="@path/@repository.owner/@repository.name/issues/milestones/@milestone.milestoneId/edit">Edit
<a href="@url(repository)/issues/milestones/@milestone.milestoneId/edit">Edit
@if(milestone.closedDate.isDefined){
<a href="@path/@repository.owner/@repository.name/issues/milestones/@milestone.milestoneId/open">Open</a>
<a href="@url(repository)/issues/milestones/@milestone.milestoneId/open">Open</a>
} else {
<a href="@path/@repository.owner/@repository.name/issues/milestones/@milestone.milestoneId/close">Close</a>
<a href="@url(repository)/issues/milestones/@milestone.milestoneId/close">Close</a>
}
<a href="@path/@repository.owner/@repository.name/issues/milestones/@milestone.milestoneId/delete" class="delete">Delete</a>
<a href="@url(repository)/issues/milestones/@milestone.milestoneId/delete" class="delete">Delete</a>
}
<a href="@path/@repository.owner/@repository.name/issues?milestone=@milestone.milestoneId&state=open">Browse issues</a>
<a href="@url(repository)/issues?milestone=@milestone.milestoneId&state=open">Browse issues</a>
</div>
<span class="muted">@closedCount closed - @openCount open</span>
</div>
@@ -78,7 +78,7 @@
</div>
@if(milestone.description.isDefined){
<div class="milestone-description">
@helpers.markdown(milestone.description.get, repository, false, false, false)
@markdown(milestone.description.get, repository, false, false, false)
</div>
}
</td>
@@ -89,7 +89,7 @@
<td style="padding: 20px; background-color: #eee; text-align: center;">
No milestones to show.
@if(isWritable){
<a href="@path/@repository.owner/@repository.name/issues/milestones/new">Create a new milestone.</a>
<a href="@url(repository)/issues/milestones/new">Create a new milestone.</a>
}
</td>
</tr>

View File

@@ -1,5 +1,6 @@
@(title: String)(body: Html)(implicit context: app.Context)
@import context._
@import view.helpers._
<!DOCTYPE html>
<html>
<head>
@@ -7,21 +8,23 @@
<title>@title</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Le styles -->
<link href="@path/assets/bootstrap/css/bootstrap.css" rel="stylesheet">
<link href="@path/assets/bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
<link href="@assets/bootstrap/css/bootstrap.css" rel="stylesheet">
<link href="@assets/bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="@path/assets/bootstrap/js/html5shiv.js"></script>
<script src="@assets/bootstrap/js/html5shiv.js"></script>
<![endif]-->
<link href="@path/assets/datepicker/css/datepicker.css" rel="stylesheet">
<link href="@path/assets/colorpicker/css/bootstrap-colorpicker.css" rel="stylesheet">
<link href="@path/assets/common/css/gitbucket.css" rel="stylesheet">
<script src="@path/assets/common/js/jquery-1.9.1.js"></script>
<script src="@path/assets/common/js/validation.js"></script>
<script src="@path/assets/common/js/gitbucket.js"></script>
<script src="@path/assets/bootstrap/js/bootstrap.js"></script>
<script src="@path/assets/datepicker/js/bootstrap-datepicker.js"></script>
<script src="@path/assets/colorpicker/js/bootstrap-colorpicker.js"></script>
<link href="@assets/datepicker/css/datepicker.css" rel="stylesheet">
<link href="@assets/colorpicker/css/bootstrap-colorpicker.css" rel="stylesheet">
<link href="@assets/google-code-prettify/prettify.css" type="text/css" rel="stylesheet"/>
<link href="@assets/common/css/gitbucket.css" rel="stylesheet">
<script src="@assets/common/js/jquery-1.9.1.js"></script>
<script src="@assets/common/js/validation.js"></script>
<script src="@assets/common/js/gitbucket.js"></script>
<script src="@assets/bootstrap/js/bootstrap.js"></script>
<script src="@assets/datepicker/js/bootstrap-datepicker.js"></script>
<script src="@assets/colorpicker/js/bootstrap-colorpicker.js"></script>
<script src="@assets/google-code-prettify/prettify.js"></script>
</head>
<body>
<div class="navbar navbar-inverse">
@@ -37,8 +40,8 @@
<ul class="nav pull-right">
@if(loginAccount.isDefined){
<li><a href="@path/new">New repo</a></li>
<li><a href="@path/@loginAccount.get.userName">Account</a></li>
<li><a href="@path/admin/users">Users</a></li>
<li><a href="@url(loginAccount.get.userName)">Account</a></li>
<li><a href="@path/admin/users">Administration</a></li>
<li><a href="@path/signout">Sign out</a></li>
} else {
<li><a href="@path/signin">Sign in</a></li>
@@ -52,4 +55,7 @@
@body
</div>
</body>
<script>
$(function(){ prettyPrint(); });
</script>
</html>

View File

@@ -12,7 +12,7 @@
<input type="text" name="description" id="description" style="width: 600px;"/>
</fieldset>
<fieldset>
<input type="submit" class="btn btn-primary" value="Create repository"/>
<input type="submit" class="btn btn-success" value="Create repository"/>
</fieldset>
</form>
}

View File

@@ -1,13 +1,16 @@
@(repository: service.RepositoryService.RepositoryInfo, content: String, enableWikiLink: Boolean,
enableCommitLink: Boolean, enableIssueLink: Boolean, style: String = "", placeholder: String = "Leave a comment")(implicit context: app.Context)
@import context._
@import view.helpers._
<div class="tabbable">
<ul class="nav nav-tabs">
<li class="active"><a href="#tab1" data-toggle="tab">Write</a></li>
<li><a href="#tab2" data-toggle="tab" id="preview">Preview</a></li>
@*
<li class="pull-right">
<a href="http://daringfireball.net/projects/markdown/syntax" target="_blank">Markdown Syntax Guide</a>
</li>
*@
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tab1">
@@ -20,13 +23,13 @@
</div>
</div>
</div>
<link href="@path/assets/google-code-prettify/prettify.css" type="text/css" rel="stylesheet"/>
<script src="@path/assets/google-code-prettify/prettify.js"></script>
<link href="@assets/google-code-prettify/prettify.css" type="text/css" rel="stylesheet"/>
<script src="@assets/google-code-prettify/prettify.js"></script>
<script>
$(function(){
$('#preview').click(function(){
$('#preview-area').html('<img src="@path/assets/common/images/indicator.gif"> Previewing...');
$.post('@path/@repository.owner/@repository.name/_preview', {
$('#preview-area').html('<img src="@assets/common/images/indicator.gif"> Previewing...');
$.post('@url(repository)/_preview', {
content : $('#content').val(),
enableWikiLink : @enableWikiLink,
enableCommitLink : @enableCommitLink,

View File

@@ -1,16 +1,16 @@
@(branch: String, repository: service.RepositoryService.RepositoryInfo, pathList: List[String], content: util.JGitUtil.ContentInfo, latestCommit: util.JGitUtil.CommitInfo)(implicit context: app.Context)
@import context._
@import view.helpers
@import view.helpers._
@html.main(repository.owner+"/"+repository.name) {
@html.header("code", repository)
@navtab(branch, repository, "files")
<div class="head">
<a href="@path/@repository.owner/@repository.name/tree/@branch">@repository.name</a> /
<a href="@url(repository)/tree/@branch">@repository.name</a> /
@pathList.zipWithIndex.map { case (section, i) =>
@if(i == pathList.length - 1){
@section
} else {
<a href="@path/@repository.owner/@repository.name/tree/@branch/@pathList.take(i + 1).mkString("/")">@section</a> /
<a href="@url(repository)/tree/@branch/@pathList.take(i + 1).mkString("/")">@section</a> /
}
}
</div>
@@ -19,20 +19,20 @@
<tr>
<th style="font-weight: normal;">
<div class="pull-left">
<a href="@path/@latestCommit.committer" class="username strong">@latestCommit.committer</a>
<span class="muted">@helpers.datetime(latestCommit.time)</span>
<a href="@path/@repository.owner/@repository.name/commit/@latestCommit.id" class="commit-message">@helpers.link(latestCommit.summary, repository)</a>
<a href="@url(latestCommit.committer)" class="username strong">@latestCommit.committer</a>
<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">
<a class="btn btn-mini" href="?raw=true">Raw</a>
<a class="btn btn-mini" href="@path/@repository.owner/@repository.name/commits/@branch/@pathList.mkString("/")">History</a>
<a class="btn btn-mini" href="@url(repository)/commits/@branch/@pathList.mkString("/")">History</a>
</div>
</th>
</tr>
<tr>
<td>
@if(content.viewType == "text"){
<pre class="prettyprint linenums">@content.content.get</pre>
<pre class="prettyprint linenums blob">@content.content.get</pre>
}
@if(content.viewType == "image"){
<img src="?raw=true"/>
@@ -46,26 +46,4 @@
</td>
</tr>
</table>
<link href="@path/assets/google-code-prettify/prettify.css" type="text/css" rel="stylesheet"/>
<script src="@path/assets/google-code-prettify/prettify.js"></script>
<style type="text/css">
li.L0, li.L1, li.L2, li.L3, li.L4, li.L5, li.L6, li.L7, li.L8, li.L9 {
list-style-type: decimal;
background: white;
}
li.L1, li.L3, li.L5, li.L7, li.L9 {
background: #f5f5f5;
}
pre.prettyprint {
border: none;
background-color: white;
padding-left: 20px;
}
</style>
<script>
$(function(){ prettyPrint(); });
</script>
}

View File

@@ -1,6 +1,6 @@
@(commitId: String, commit: util.JGitUtil.CommitInfo, branches: List[String], tags: List[String], repository: service.RepositoryService.RepositoryInfo, diffs: Seq[util.JGitUtil.DiffInfo])(implicit context: app.Context)
@import context._
@import view.helpers
@import view.helpers._
@import util.Implicits._
@import org.eclipse.jgit.diff.DiffEntry.ChangeType
@html.main(commit.shortMessage){
@@ -10,26 +10,26 @@
<tr>
<th>
<div class="pull-right align-right">
<a href="@path/@repository.owner/@repository.name/tree/@commit.id" class="btn btn-small">Browse code</a>
<a href="@url(repository)/tree/@commit.id" class="btn btn-small">Browse code</a>
</div>
<div class="commit-log">@helpers.link(commit.summary, repository)</div>
<div class="commit-log">@link(commit.summary, repository)</div>
@if(commit.description.isDefined){
<pre class="commit-description">@helpers.link(commit.description.get, repository)</pre>
<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="@path/assets/common/images/branch.png"/>
<img src="@assets/common/images/branch.png"/>
@branches.zipWithIndex.map { case (branch, i) =>
<a href="@path/@repository.owner/@repository.name/tree/@branch" class="branch" id="branch-@i">@branch</a>
<a href="@url(repository)/tree/@branch" class="branch" id="branch-@i">@branch</a>
}
</span>
}
@if(tags.nonEmpty){
<span class="muted">
<img src="@path/assets/common/images/tag.png"/>
<img src="@assets/common/images/tag.png"/>
@tags.zipWithIndex.map { case (tag, i) =>
<a href="@path/@repository.owner/@repository.name/tree/@tag" class="tag" id="tag-@i">@tag</a>
<a href="@url(repository)/tree/@tag" class="tag" id="tag-@i">@tag</a>
}
</span>
}
@@ -38,7 +38,7 @@
</tr>
<tr>
<td>
<a href="@path/@commit.committer" class="username strong">@commit.committer</a> <span class="muted">@helpers.datetime(commit.time)</span>
<a href="@url(commit.committer)" class="username strong">@commit.committer</a> <span class="muted">@datetime(commit.time)</span>
<div class="pull-right monospace small" style="text-align: right;">
<div>
@if(commit.parents.size == 0){
@@ -46,7 +46,7 @@
}
@if(commit.parents.size == 1){
<span class="muted">1 parent</span>
<a href="@path/@repository.owner/@repository.name/commit/@commit.parents(0)" class="commit-id">@commit.parents(0).substring(0, 7)</a>
<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>
@@ -54,7 +54,7 @@
<div>
<span class="muted">@commit.parents.size parents
@commit.parents.map { parent =>
<a href="@path/@repository.owner/@repository.name/commit/@parent" class="commit-id">@parent.substring(0, 7)</a>
<a href="@url(repository)/commit/@parent" class="commit-id">@parent.substring(0, 7)</a>
}.mkHtml(" + ")
</span>
</div>
@@ -78,16 +78,16 @@
<li@if(i > 0){ class="border"}>
<a href="#diff-@i">
@if(diff.changeType == ChangeType.COPY || diff.changeType == ChangeType.RENAME){
<img src="@path/assets/common/images/diff_move.png"/> @diff.oldPath -> @diff.newPath
<img src="@assets/common/images/diff_move.png"/> @diff.oldPath -> @diff.newPath
}
@if(diff.changeType == ChangeType.ADD){
<img src="@path/assets/common/images/diff_add.png"/> @diff.newPath
<img src="@assets/common/images/diff_add.png"/> @diff.newPath
}
@if(diff.changeType == ChangeType.MODIFY){
<img src="@path/assets/common/images/diff_edit.png"/> @diff.newPath
<img src="@assets/common/images/diff_edit.png"/> @diff.newPath
}
@if(diff.changeType == ChangeType.DELETE){
<img src="@path/assets/common/images/diff_delete.png"/> @diff.oldPath
<img src="@assets/common/images/diff_delete.png"/> @diff.oldPath
}
</a>
</li>

View File

@@ -1,51 +1,50 @@
@(pathList: List[String], branch: String, repository: service.RepositoryService.RepositoryInfo, commits: Seq[Seq[util.JGitUtil.CommitInfo]], page: Int, hasNext: Boolean)(implicit context: app.Context)
@import context._
@import view.helpers
@import view.helpers._
@html.main(repository.owner+"/"+repository.name) {
@html.header("code", repository)
@navtab(branch, repository, if(pathList.isEmpty) "commits" else "files")
<div class="head">
@if(pathList.isEmpty){
<a href="@path/@repository.owner/@repository.name/tree/@branch">@repository.name</a> / Commit History
<a href="@url(repository)/tree/@branch">@repository.name</a> / Commit History
}
@if(pathList.nonEmpty){
<span class="muted">History for</span>
<a href="@path/@repository.owner/@repository.name/tree/@branch">@repository.name</a> /
<a href="@url(repository)/tree/@branch">@repository.name</a> /
@pathList.zipWithIndex.map { case (section, i) =>
@if(i == pathList.length - 1){
@section
} else {
<a href="@path/@repository.owner/@repository.name/tree/@branch/@pathList.take(i + 1).mkString("/")">@section</a> /
<a href="@url(repository)/tree/@branch/@pathList.take(i + 1).mkString("/")">@section</a> /
}
}
}
</div>
@commits.map { date =>
@commits.map { day =>
<table class="table table-bordered">
<tr>
<th>@helpers.date(date.head.time)</th>
<th>@date(day.head.time)</th>
</tr>
@date.map { commit =>
@day.map { commit =>
<tr>
<td>
<div class="pull-left">
<a href="@path/@repository.owner/@repository.name/commit/@commit.id" class="commit-message" style="font-weight: bold;">@helpers.link(commit.summary, repository)</a>
<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">@helpers.link(commit.description.get, repository)</pre>
<pre id="description-@commit.id" style="display: none;" class="commit-description">@link(commit.description.get, repository)</pre>
}
<div class="small">
<a href="@path/@commit.committer" class="username">@commit.committer</a>
<span class="muted">@helpers.datetime(commit.time)</span>
<a href="@url(commit.committer)" class="username">@commit.committer</a>
<span class="muted">@datetime(commit.time)</span>
</div>
</div>
<div class="pull-right align-right">
<a href="@path/@repository.owner/@repository.name/commit/@commit.id" class="btn btn-small monospace">@commit.id.substring(0, 10)</a><br>
<a href="@path/@repository.owner/@repository.name/tree/@commit.id" class="small">Browse code</a>
<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>
</td>
</tr>

View File

@@ -1,35 +1,35 @@
@(branch: String, repository: service.RepositoryService.RepositoryInfo, pathList: List[String], latestCommit: util.JGitUtil.CommitInfo, files: List[util.JGitUtil.FileInfo], readme: Option[String])(implicit context: app.Context)
@import context._
@import view.helpers
@import view.helpers._
@html.main(repository.owner + "/" + repository.name) {
@html.header("code", repository)
@navtab(branch, repository, "files")
<div class="head">
<a href="@path/@repository.owner/@repository.name/tree/@branch">@repository.name</a> /
<a href="@url(repository)/tree/@branch">@repository.name</a> /
@pathList.zipWithIndex.map { case (section, i) =>
<a href="@path/@repository.owner/@repository.name/tree/@branch/@pathList.take(i + 1).mkString("/")">@section</a> /
<a href="@url(repository)/tree/@branch/@pathList.take(i + 1).mkString("/")">@section</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="@path/@repository.owner/@repository.name/commit/@latestCommit.id" class="commit-message">@helpers.link(latestCommit.summary, repository)</a>
<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>
}
@if(latestCommit.description.isDefined){
<pre id="description-@latestCommit.id" class="commit-description" style="display: none;">@helpers.link(latestCommit.description.get, repository)</pre>
<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>
<a href="@path/@repository.owner/@repository.name/@latestCommit.committer" class="username strong">@latestCommit.committer</a>
<span class="muted">@helpers.datetime(latestCommit.time)</span>
<a href="@url(latestCommit.committer)" class="username strong">@latestCommit.committer</a>
<span class="muted">@datetime(latestCommit.time)</span>
<div class="pull-right align-right monospace">
<a href="@path/@repository.owner/@repository.name/commit/@latestCommit.id" class="commit-id"><span class="muted">latest commit</span> @latestCommit.id.substring(0, 10)</a>
<a href="@url(repository)/commit/@latestCommit.id" class="commit-id"><span class="muted">latest commit</span> @latestCommit.id.substring(0, 10)</a>
</div>
</div>
</td>
@@ -37,7 +37,7 @@
@if(pathList.size > 0){
<tr>
<td width="16"></td>
<td><a href="@path/@repository.owner/@repository.name@if(pathList.size > 1){/tree/@branch/@pathList.init.mkString("/")}">..</a></td>
<td><a href="@url(repository)@if(pathList.size > 1){/tree/@branch/@pathList.init.mkString("/")}">..</a></td>
<td></td>
<td></td>
</tr>
@@ -46,20 +46,20 @@
<tr>
<td width="16">
@if(file.isDirectory){
<img src="@path/assets/common/images/folder.png"/>
<img src="@assets/common/images/folder.png"/>
} else {
<img src="@path/assets/common/images/file.png"/>
<img src="@assets/common/images/file.png"/>
}
</td>
<td>
@if(file.isDirectory){
<a href="@path/@repository.owner/@repository.name/tree@{(branch :: pathList).mkString("/", "/", "/")}@file.name">@file.name</a>
<a href="@url(repository)/tree@{(branch :: pathList).mkString("/", "/", "/")}@file.name">@file.name</a>
} else {
<a href="@path/@repository.owner/@repository.name/blob@{(branch :: pathList).mkString("/", "/", "/")}@file.name">@file.name</a>
<a href="@url(repository)/blob@{(branch :: pathList).mkString("/", "/", "/")}@file.name">@file.name</a>
}
</td>
<td>@helpers.datetime(file.time)</td>
<td><a href="@path/@repository.owner/@repository.name/commit/@file.commitId" class="commit-message">@helpers.link(file.message, repository)</a> [<a href="@path/@file.committer">@file.committer</a>]</td>
<td>@datetime(file.time)</td>
<td><a href="@url(repository)/commit/@file.commitId" class="commit-message">@link(file.message, repository)</a> [<a href="@url(file.committer)">@file.committer</a>]</td>
</tr>
}
</table>
@@ -68,7 +68,7 @@
@readme.map { content =>
<div class="box">
<div class="box-header">README.md</div>
<div class="box-content">@helpers.markdown(content, repository, false, false, false)</div>
<div class="box-content">@markdown(content, repository, false, false, false)</div>
</div>
}
}

View File

@@ -1,5 +1,6 @@
@(id: String, repository: service.RepositoryService.RepositoryInfo, active: String)(implicit context: app.Context)
@import context._
@import view.helpers._
<ul class="nav nav-tabs">
<li>
<div class="btn-group" style="margin-right: 20px;">
@@ -13,14 +14,14 @@
</button>
<ul class="dropdown-menu">
@repository.branchList.map { branch =>
<li><a href="@path/@repository.owner/@repository.name/@if(active=="commits"){commits} else {tree}/@branch">@branch</a></li>
<li><a href="@url(repository)/@if(active=="commits"){commits} else {tree}/@branch">@branch</a></li>
}
</ul>
</div>
</li>
<li@if(active=="files"){ class="active"}><a href="@path/@repository.owner/@repository.name/tree/@id">Files</a></li>
<li@if(active=="commits"){ class="active"}><a href="@path/@repository.owner/@repository.name/commits/@id">Commits</a></li>
<li@if(active=="tags"){ class="active"}><a href="@path/@repository.owner/@repository.name/tags">Tags@if(repository.tags.length > 0){ <span class="badge">@repository.tags.length</span>}</a></li>
<li@if(active=="files"){ class="active"}><a href="@url(repository)/tree/@id">Files</a></li>
<li@if(active=="commits"){ class="active"}><a href="@url(repository)/commits/@id">Commits</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">
<div class="input-prepend">
<span class="add-on">HTTP</span>

View File

@@ -1,6 +1,6 @@
@(repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import context._
@import view.helpers
@import view.helpers._
@html.main(repository.owner + "/" + repository.name) {
@html.header("code", repository)
@navtab("master", repository, "tags") @* TODO DON'T display branch pulldown *@
@@ -14,10 +14,10 @@
</tr>
@repository.tags.map { tag =>
<tr>
<td><a href="@path/@repository.owner/@repository.name/tree/@tag.name">@tag.name</a></td>
<td>@helpers.datetime(tag.time)</td>
<td class="monospace"><a href="@path/@repository.owner/@repository.name/commit/@tag.id">@tag.id.substring(0, 10)</a></td>
<td><a href="@path/@repository.owner/@repository.name/archive/@(tag.name).zip">ZIP</a></td>
<td><a href="@url(repository)/tree/@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/@(tag.name).zip">ZIP</a></td>
</tr>
}
</table>

View File

@@ -1,5 +1,6 @@
@(collaborators: List[String], repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import context._
@import view.helpers._
@html.main("Settings"){
@html.header("settings", repository)
@menu("collaborators", repository){
@@ -7,12 +8,12 @@
<ul class="collaborator">
@collaborators.map { collaboratorName =>
<li>
<a href="@path/@collaboratorName">@collaboratorName</a>
<a href="@path/@repository.owner/@repository.name/settings/collaborators/remove?name=@collaboratorName" class="remove">(remove)</a>
<a href="@url(collaboratorName)">@collaboratorName</a>
<a href="@url(repository)/settings/collaborators/remove?name=@collaboratorName" class="remove">(remove)</a>
</li>
}
</ul>
<form method="POST" action="@path/@repository.owner/@repository.name/settings/collaborators/add" validate="true">
<form method="POST" action="@url(repository)/settings/collaborators/add" validate="true">
<div>
<span class="error" id="error-userName"></span>
</div>
@@ -24,7 +25,7 @@
<script>
$('#userName').typeahead({
source: function (query, process) {
return $.get('@path/@repository.owner/@repository.name/settings/collaborators/proposals', { query: query },
return $.get('@url(repository)/settings/collaborators/proposals', { query: query },
function (data) {
return process(data.options);
});

View File

@@ -1,9 +1,10 @@
@(repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import context._
@import view.helpers._
@html.main("Delete Repository"){
@html.header("settings", repository)
@menu("delete", repository){
<form id="form" method="post" action="@path/@repository.owner/@repository.name/settings/delete">
<form id="form" method="post" action="@url(repository)/settings/delete">
<h3>Delete repository</h3>
<p>
Once you delete a repository, there is no going back.

View File

@@ -1,16 +1,17 @@
@(active: String, repository: service.RepositoryService.RepositoryInfo)(body: Html)(implicit context: app.Context)
@import context._
@import view.helpers._
<div class="row-fluid">
<div class="span3">
<ul class="nav nav-tabs nav-stacked">
<li@if(active=="options"){ class="active"}>
<a href="@path/@repository.owner/@repository.name/settings/options">Options</a>
<a href="@url(repository)/settings/options">Options</a>
</li>
<li@if(active=="collaborators"){ class="active"}>
<a href="@path/@repository.owner/@repository.name/settings/collaborators">Collaborators</a>
<a href="@url(repository)/settings/collaborators">Collaborators</a>
</li>
<li@if(active=="delete"){ class="active"}>
<a href="@path/@repository.owner/@repository.name/settings/delete">Delete Repository</a>
<a href="@url(repository)/settings/delete">Delete Repository</a>
</li>
</ul>
</div>

View File

@@ -1,9 +1,10 @@
@(repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import context._
@import view.helpers._
@html.main("Settings"){
@html.header("settings", repository)
@menu("options", repository){
<form id="form" method="post" action="@path/@repository.owner/@repository.name/settings/options" validate="true">
<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">
@@ -66,10 +67,7 @@
</div>
*@
<fieldset>
<input type="submit" class="btn btn-primary" value="Apply changes"/>
<!--
<input type="submit" class="btn btn-danger" value="Delete this repository"/>
-->
<input type="submit" class="btn btn-success" value="Apply changes"/>
</fieldset>
</form>
}

View File

@@ -9,7 +9,7 @@
<input type="password" name="password" id="password"/>
<span id="error-password" class="error"></span>
<div>
<input type="submit" class="btn btn-primary" value="Sign in"/>
<input type="submit" class="btn btn-success" value="Sign in"/>
</div>
</form>
}

View File

@@ -1,6 +1,6 @@
@(pageName: String, page: service.WikiService.WikiPageInfo, repository: service.RepositoryService.RepositoryInfo, isWritable: Boolean)(implicit context: app.Context)
@import view.helpers
@import context._
@import view.helpers._
@html.main(pageName + " - " + repository.owner + "/" + repository.name){
@html.header("wiki", repository)
@wikitab((if(pageName == "Home") "home" else ""), repository)
@@ -11,22 +11,20 @@
<li class="pull-right">
<div class="btn-group">
@if(isWritable){
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/_new">New Page</a>
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName/_edit">Edit Page</a>
<a class="btn" href="@url(repository)/wiki/_new">New Page</a>
<a class="btn" href="@url(repository)/wiki/@pageName/_edit">Edit Page</a>
}
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName/_history">Page History</a>
<a class="btn" href="@url(repository)/wiki/@pageName/_history">Page History</a>
</div>
</li>
</ul>
<div class="markdown-body">
@helpers.markdown(page.content, repository, true, false, false)
@markdown(page.content, repository, true, false, false)
</div>
<div class="small">
<span class="muted">Last edited by @page.committer at @helpers.datetime(page.time)</span>
<span class="muted">Last edited by @page.committer at @datetime(page.time)</span>
</div>
}
<link href="@path/assets/google-code-prettify/prettify.css" type="text/css" rel="stylesheet"/>
<script src="@path/assets/google-code-prettify/prettify.js"></script>
<script>
$(function(){ prettyPrint(); });
</script>

View File

@@ -1,6 +1,6 @@
@(pageName: Option[String], diffs: Seq[util.JGitUtil.DiffInfo], repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import view.helpers
@import context._
@import view.helpers._
@import org.eclipse.jgit.diff.DiffEntry.ChangeType
@html.main("Compare Revisions - " + repository.owner + "/" + repository.name){
@html.header("wiki", repository)
@@ -12,10 +12,10 @@
<li class="pull-right">
<div class="btn-group">
@if(pageName.isDefined){
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName">View Page</a>
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName/_history">Back to Page History</a>
<a class="btn" href="@url(repository)/wiki/@pageName">View Page</a>
<a class="btn" href="@url(repository)/wiki/@pageName/_history">Back to Page History</a>
} else {
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/_history">Back to Wiki History</a>
<a class="btn" href="@url(repository)/wiki/_history">Back to Wiki History</a>
}
</div>
</li>

View File

@@ -1,6 +1,6 @@
@(pageName: String, page: Option[service.WikiService.WikiPageInfo], repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import view.helpers
@import context._
@import view.helpers._
@html.main((if(pageName == "") "New Page" else pageName) + " - " + repository.owner + "/" + repository.name){
@html.header("wiki", repository)
@wikitab("", repository)
@@ -11,20 +11,20 @@
<li class="pull-right">
<div class="btn-group">
@if(pageName != ""){
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName">View Page</a>
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName/_delete" id="delete">Delete Page</a>
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName/_history">Page History</a>
<a class="btn" href="@url(repository)/wiki/@pageName">View Page</a>
<a class="btn" href="@url(repository)/wiki/@pageName/_delete" id="delete">Delete Page</a>
<a class="btn" href="@url(repository)/wiki/@pageName/_history">Page History</a>
}
</div>
</li>
</ul>
<form action="@path/@repository.owner/@repository.name/wiki/@if(pageName == ""){_new} else {_edit}" method="POST" validate="true">
<form action="@url(repository)/wiki/@if(pageName == ""){_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."/>
@html.preview(repository, page.map(_.content).getOrElse(""), true, false, 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="submit" value="Save" class="btn btn-primary">
<input type="submit" value="Save" class="btn btn-success">
</form>
}
<script>

View File

@@ -1,6 +1,6 @@
@(pageName: Option[String], commits: List[util.JGitUtil.CommitInfo], repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import view.helpers
@import context._
@import view.helpers._
@html.main("History - " + repository.owner + "/" + repository.name){
@html.header("wiki", repository)
@wikitab(if(pageName.isEmpty) "history" else "", repository)
@@ -18,12 +18,12 @@
<div class="btn-group">
@if(pageName.isEmpty){
@if(loginAccount.isDefined){
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/_new">New Page</a>
<a class="btn" href="@url(repository)/wiki/_new">New Page</a>
}
} else {
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName">View Page</a>
<a class="btn" href="@url(repository)/wiki/@pageName">View Page</a>
@if(loginAccount.isDefined){
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName/_edit">Edit Page</a>
<a class="btn" href="@url(repository)/wiki/@pageName/_edit">Edit Page</a>
}
}
</div>
@@ -33,9 +33,9 @@
@commits.map { commit =>
<tr>
<td width="0%"><input type="checkbox" name="commitId" value="@commit.id"></td>
<td><a href="@path/@commit.committer">@commit.committer</a></td>
<td><a href="@url(commit.committer)">@commit.committer</a></td>
<td width="80%">
<span class="muted">@helpers.datetime(commit.time):</span>
<span class="muted">@datetime(commit.time):</span>
@commit.shortMessage
</td>
</tr>
@@ -53,10 +53,10 @@
var e = $('input[name=commitId]:checked');
if(e.length == 2){
@if(pageName.isEmpty){
location.href = '@path/@repository.owner/@repository.name/wiki/_compare/' +
location.href = '@url(repository)/wiki/_compare/' +
$(e.get(1)).attr('value') + '...' + $(e.get(0)).attr('value');
} else {
location.href = '@path/@repository.owner/@repository.name/wiki/@pageName.get/_compare/' +
location.href = '@url(repository)/wiki/@pageName.get/_compare/' +
$(e.get(1)).attr('value') + '...' + $(e.get(0)).attr('value');
}
}

View File

@@ -1,6 +1,6 @@
@(pages: List[String], repository: service.RepositoryService.RepositoryInfo, isWritable: Boolean)(implicit context: app.Context)
@import view.helpers
@import context._
@import view.helpers._
@html.main("Pages - " + repository.owner + "/" + repository.name){
@html.header("wiki", repository)
@wikitab("pages", repository)
@@ -11,14 +11,14 @@
<li class="pull-right">
<div class="btn-group">
@if(isWritable){
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/_new">New Page</a>
<a class="btn" href="@url(repository)/wiki/_new">New Page</a>
}
</div>
</li>
</ul>
<ul>
@pages.map { page =>
<li><a href="@path/@repository.owner/@repository.name/wiki/@page">@page</a></li>
<li><a href="@url(repository)/wiki/@page">@page</a></li>
}
</ul>

View File

@@ -1,9 +1,10 @@
@(active: String, repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import context._
@import view.helpers._
<ul class="nav nav-tabs">
<li@if(active == "home"){ class="active"}><a href="@path/@repository.owner/@repository.name/wiki">Home</a></li>
<li@if(active == "pages"){ class="active"}><a href="@path/@repository.owner/@repository.name/wiki/_pages">Pages</a></li>
<li@if(active == "history"){ class="active"}><a href="@path/@repository.owner/@repository.name/wiki/_history">Wiki History</a></li>
<li@if(active == "home"){ class="active"}><a href="@url(repository)/wiki">Home</a></li>
<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">
<div class="input-prepend">
<span class="add-on">HTTP</span>

View File

@@ -225,6 +225,21 @@ ul#commit-file-list li.border {
border-top: 1px solid #eee;
}
li.L0, li.L1, li.L2, li.L3, li.L4, li.L5, li.L6, li.L7, li.L8, li.L9 {
list-style-type: decimal;
background: white;
}
li.L1, li.L3, li.L5, li.L7, li.L9 {
background: #f5f5f5;
}
pre.blob {
border: none;
background-color: white;
padding-left: 20px;
}
/****************************************************************************/
/* Issues */
/****************************************************************************/