mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-02 03:26:06 +01:00
Implemented the issue stub.
This commit is contained in:
@@ -62,17 +62,25 @@ trait IssuesControllerBase extends ControllerBase {
|
|||||||
val repository = params("repository")
|
val repository = params("repository")
|
||||||
|
|
||||||
redirect("/%s/%s/issues/%d".format(owner, repository,
|
redirect("/%s/%s/issues/%d".format(owner, repository,
|
||||||
saveIssue(owner, repository, context.loginAccount.get.userName, form.title, form.content)))
|
createIssue(owner, repository, context.loginAccount.get.userName, form.title, form.content)))
|
||||||
})
|
})
|
||||||
|
|
||||||
// TODO Authenticator
|
// TODO Authenticator, Validation
|
||||||
post("/:owner/:repository/issues/:id"){
|
post("/:owner/:repository/issues/:id"){
|
||||||
// TODO update issue
|
val owner = params("owner")
|
||||||
|
val repository = params("repository")
|
||||||
|
val issueId = params("id").toInt
|
||||||
|
val title = params("title")
|
||||||
|
val content = params.get("content")
|
||||||
|
|
||||||
|
updateIssue(owner, repository, issueId, title, content)
|
||||||
|
|
||||||
contentType = formats("json")
|
contentType = formats("json")
|
||||||
|
|
||||||
org.json4s.jackson.Serialization.write(Map(
|
org.json4s.jackson.Serialization.write(
|
||||||
"title" -> "test title 2",
|
Map("title" -> title,
|
||||||
"content" -> view.Markdown.toHtml("* hoge", getRepository("root", "test", baseUrl).get, false, true, true)))
|
"content" -> view.Markdown.toHtml(content getOrElse "No description given.",
|
||||||
|
getRepository(owner, repository, baseUrl).get, false, true, true)))
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO requires users only and readable repository checking
|
// TODO requires users only and readable repository checking
|
||||||
@@ -81,16 +89,21 @@ trait IssuesControllerBase extends ControllerBase {
|
|||||||
val repository = params("repository")
|
val repository = params("repository")
|
||||||
|
|
||||||
redirect("/%s/%s/issues/%d#comment-%d".format(owner, repository, form.issueId,
|
redirect("/%s/%s/issues/%d#comment-%d".format(owner, repository, form.issueId,
|
||||||
saveComment(owner, repository, context.loginAccount.get.userName, form.issueId, form.content)))
|
createComment(owner, repository, context.loginAccount.get.userName, form.issueId, form.content)))
|
||||||
})
|
})
|
||||||
|
|
||||||
// TODO Authenticator
|
// TODO Authenticator, Validation
|
||||||
post("/:owner/:repository/issue_comments/:id"){
|
post("/:owner/:repository/issue_comments/:id"){
|
||||||
// TODO update issue memo
|
val commentId = params("id").toInt
|
||||||
|
val content = params("content")
|
||||||
|
|
||||||
|
updateComment(commentId, content)
|
||||||
|
|
||||||
contentType = formats("json")
|
contentType = formats("json")
|
||||||
|
|
||||||
org.json4s.jackson.Serialization.write(Map(
|
org.json4s.jackson.Serialization.write(
|
||||||
"content" -> view.Markdown.toHtml("* hoge memo", getRepository("root", "test", baseUrl).get, false, true, true)))
|
Map("content" -> view.Markdown.toHtml(content,
|
||||||
|
getRepository(params("owner"), params("repository"), baseUrl).get, false, true, true)))
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO Authenticator
|
// TODO Authenticator
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ trait IssuesService {
|
|||||||
} exists, condition.labels.nonEmpty)
|
} exists, condition.labels.nonEmpty)
|
||||||
}
|
}
|
||||||
|
|
||||||
def saveIssue(owner: String, repository: String, loginUser: String,
|
def createIssue(owner: String, repository: String, loginUser: String,
|
||||||
title: String, content: Option[String]) =
|
title: String, content: Option[String]) =
|
||||||
// next id number
|
// next id number
|
||||||
sql"SELECT ISSUE_ID + 1 FROM ISSUE_ID WHERE USER_NAME = $owner AND REPOSITORY_NAME = $repository FOR UPDATE".as[Int]
|
sql"SELECT ISSUE_ID + 1 FROM ISSUE_ID WHERE USER_NAME = $owner AND REPOSITORY_NAME = $repository FOR UPDATE".as[Int]
|
||||||
@@ -191,7 +191,7 @@ trait IssuesService {
|
|||||||
}.map(_.issueId).update(id) > 0
|
}.map(_.issueId).update(id) > 0
|
||||||
} get
|
} get
|
||||||
|
|
||||||
def saveComment(owner: String, repository: String, loginUser: String,
|
def createComment(owner: String, repository: String, loginUser: String,
|
||||||
issueId: Int, content: String) =
|
issueId: Int, content: String) =
|
||||||
IssueComments.autoInc insert (
|
IssueComments.autoInc insert (
|
||||||
owner,
|
owner,
|
||||||
@@ -202,6 +202,23 @@ trait IssuesService {
|
|||||||
currentDate,
|
currentDate,
|
||||||
currentDate)
|
currentDate)
|
||||||
|
|
||||||
|
def updateIssue(owner: String, repository: String, issueId: Int,
|
||||||
|
title: String, content: Option[String]) =
|
||||||
|
Issues filter { t =>
|
||||||
|
(t.userName is owner.bind) &&
|
||||||
|
(t.repositoryName is repository.bind) &&
|
||||||
|
(t.issueId is issueId.bind)
|
||||||
|
} map { t =>
|
||||||
|
t.title ~ t.content.? ~ t.updatedDate
|
||||||
|
} update (title, content, currentDate)
|
||||||
|
|
||||||
|
def updateComment(commentId: Int, content: String) =
|
||||||
|
IssueComments filter {
|
||||||
|
_.commentId is commentId.bind
|
||||||
|
} map { t =>
|
||||||
|
t.content ~ t.updatedDate
|
||||||
|
} update (content, currentDate)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
object IssuesService {
|
object IssuesService {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
@if(!isComment){
|
@if(!isComment){
|
||||||
<input type="text" style="width: 730px;" id="edit-title" value="@title.get"/>
|
<input type="text" style="width: 730px;" id="edit-title" value="@title.get"/>
|
||||||
}
|
}
|
||||||
<textarea style="width: 730px; height: 100px;" id="edit-content@if(isComment){"-" + key}">@content</textarea>
|
<textarea style="width: 730px; height: 100px;" id="edit-content@if(isComment){-@key}">@content</textarea>
|
||||||
<input type="button" class="btn btn-small" value="Update @{if(isComment) "Comment" else "Issue"}"/>
|
<input type="button" class="btn btn-small" value="Update @{if(isComment) "Comment" else "Issue"}"/>
|
||||||
<span class="pull-right"><a class="btn btn-small btn-danger" href="#">Cancel</a></span>
|
<span class="pull-right"><a class="btn btn-small btn-danger" href="#">Cancel</a></span>
|
||||||
<script>
|
<script>
|
||||||
@@ -22,7 +22,7 @@ $(function(){
|
|||||||
var url = '@path/@owner/@repository/issues/@key';
|
var url = '@path/@owner/@repository/issues/@key';
|
||||||
var param = {
|
var param = {
|
||||||
title : $('#edit-title').val(),
|
title : $('#edit-title').val(),
|
||||||
content : $('#edit-content-@key').val()
|
content : $('#edit-content').val()
|
||||||
};
|
};
|
||||||
var func = function(data){
|
var func = function(data){
|
||||||
$('#issueTitle').empty().text(data.title);
|
$('#issueTitle').empty().text(data.title);
|
||||||
|
|||||||
Reference in New Issue
Block a user