Issue label creation is available.

This commit is contained in:
takezoe
2013-06-24 20:53:04 +09:00
parent 8ca65091d0
commit 749a526a55
5 changed files with 74 additions and 7 deletions

View File

@@ -6,11 +6,11 @@ import service._
import util.{WritableRepositoryAuthenticator, ReadableRepositoryAuthenticator, UsersOnlyAuthenticator}
class IssuesController extends IssuesControllerBase
with IssuesService with RepositoryService with AccountService
with IssuesService with RepositoryService with AccountService with LabelsService
with UsersOnlyAuthenticator with ReadableRepositoryAuthenticator with WritableRepositoryAuthenticator
trait IssuesControllerBase extends ControllerBase {
self: IssuesService with RepositoryService
self: IssuesService with RepositoryService with LabelsService
with UsersOnlyAuthenticator with ReadableRepositoryAuthenticator with WritableRepositoryAuthenticator =>
case class IssueForm(title: String, content: Option[String])
@@ -37,8 +37,8 @@ trait IssuesControllerBase extends ControllerBase {
case "closed" => true
} getOrElse false
issues.html.issues(searchIssue(owner, repository, closed),
getRepository(params("owner"), params("repository"), baseUrl).get)
issues.html.issues(searchIssue(owner, repository, closed), getLabels(owner, repository),
getRepository(owner, repository, baseUrl).get)
}
get("/:owner/:repository/issues/:id"){

View File

@@ -1,7 +1,29 @@
package app
import jp.sf.amateras.scalatra.forms._
import service._
import util.WritableRepositoryAuthenticator
class LabelsController extends LabelsControllerBase
with LabelsService with RepositoryService with AccountService with WritableRepositoryAuthenticator
trait LabelsControllerBase extends ControllerBase {
self: LabelsService with WritableRepositoryAuthenticator =>
case class LabelForm(labelName: String, color: String)
val labelForm = mapping(
"labelName" -> trim(label("Label name", text(required, maxlength(100)))),
"color" -> trim(label("Color", text(required, maxlength(7))))
)(LabelForm.apply)
post("/:owner/:repository/issues/label/new", labelForm)(writableRepository { form =>
val owner = params("owner")
val repository = params("repository")
createLabel(owner, repository, form.labelName, form.color.substring(1))
redirect("/%s/%s/issues".format(owner, repository))
})
}

View File

@@ -16,4 +16,7 @@ trait LabelsService {
.sortBy(_.labelName asc)
.list
def createLabel(owner: String, repository: String, labelName: String, color: String): Unit =
Labels.ins insert (owner, repository, labelName, color)
}

View File

@@ -1,4 +1,4 @@
@(issues: List[model.Issue], repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@(issues: List[model.Issue], labels: List[model.Label], repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@import context._
@import view.helpers._
@html.main("Issues - " + repository.owner + "/" + repository.name){
@@ -15,11 +15,27 @@
No milestone selected
<hr/>
<strong>Labels</strong>
<ul class="label-list">
@labels.map { label =>
<li>
<span style="float: right; font-weight: bold;">0</span>
<span style="background-color: #@label.color;" class="label-color">&nbsp;</span>
@label.labelName
</li>
}
</ul>
<hr/>
<a class="btn btn-block" href="#">Manage Labels</a>
<br/>
<strong>New label</strong>
<form method="POST" action="@path/@repository.owner/@repository.name/issues/label/new" validate="true">
<input type="text" name="labelName" value="" placeholder="New label name"/>
<div class="input-append color bscp" data-color="#ff0000" data-color-format="hex" id="cp3">
<input type="text" class="span3" name="color" value="" readonly style="width: 100%;">
<span class="add-on"><i style="background-color: #ff0000;"></i></span>
</div>
<input type="submit" class="btn" value="Create"/>
</form>
</div>
<div class="span9">
<div class="pagination pull-right">
@@ -65,3 +81,27 @@
</div>
</div>
}
<script>
$(function(){
$('#cp3').colorpicker();
});
</script>
<style type="text/css">
ul.label-list {
list-style-type: none;
padding-left: 0px;
margin-left: 0px;
font-size: 90%;
color: #444;
}
ul.label-list li {
margin-bottom: 4px;
}
span.label-color {
border-radius: 2px;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
}
</style>

View File

@@ -14,12 +14,14 @@
<script src="@path/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>
</head>
<body>
<div class="navbar navbar-inverse">