mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-01 11:06:06 +01:00
Milestone deletion is available.
This commit is contained in:
@@ -148,4 +148,18 @@ trait IssuesControllerBase extends ControllerBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
get("/:owner/:repository/issues/milestones/:milestoneId/delete")(writableRepository {
|
||||||
|
val owner = params("owner")
|
||||||
|
val repository = params("repository")
|
||||||
|
val milestoneId = params("milestoneId").toInt
|
||||||
|
|
||||||
|
getMilestone(owner, repository, milestoneId) match {
|
||||||
|
case None => NotFound()
|
||||||
|
case Some(m) => {
|
||||||
|
deleteMilestone(owner, repository, milestoneId)
|
||||||
|
redirect("/%s/%s/issues/milestones".format(owner, repository))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
@@ -65,6 +65,17 @@ trait IssuesService {
|
|||||||
milestone.dueDate,
|
milestone.dueDate,
|
||||||
milestone.closedDate)
|
milestone.closedDate)
|
||||||
|
|
||||||
|
def deleteMilestone(owner: String, repository: String, milestoneId: Int): Unit = {
|
||||||
|
Query(Issues)
|
||||||
|
.filter { i => (i.userName is owner.bind) && (i.repositoryName is repository.bind) && (i.milestoneId is milestoneId.bind)}
|
||||||
|
.map { i => i.milestoneId.? }
|
||||||
|
.update(None)
|
||||||
|
|
||||||
|
Query(Milestones)
|
||||||
|
.filter { i => (i.userName is owner.bind) && (i.repositoryName is repository.bind) && (i.milestoneId is milestoneId.bind)}
|
||||||
|
.delete
|
||||||
|
}
|
||||||
|
|
||||||
def getMilestone(owner: String, repository: String, milestoneId: Int): Option[Milestone] =
|
def getMilestone(owner: String, repository: String, milestoneId: Int): Option[Milestone] =
|
||||||
Query(Milestones)
|
Query(Milestones)
|
||||||
.filter(m => (m.userName is owner.bind) && (m.repositoryName is repository.bind) && (m.milestoneId is milestoneId.bind))
|
.filter(m => (m.userName is owner.bind) && (m.repositoryName is repository.bind) && (m.milestoneId is milestoneId.bind))
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
} else {
|
} else {
|
||||||
<a href="@path/@repository.owner/@repository.name/issues/milestones/@milestone.milestoneId/close">Close</a>
|
<a href="@path/@repository.owner/@repository.name/issues/milestones/@milestone.milestoneId/close">Close</a>
|
||||||
}
|
}
|
||||||
<a href="" class="delete">Delete</a>
|
<a href="@path/@repository.owner/@repository.name/issues/milestones/@milestone.milestoneId/delete" class="delete">Delete</a>
|
||||||
}
|
}
|
||||||
<a href="">Browse issues</a>
|
<a href="">Browse issues</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -86,6 +86,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
<script>
|
||||||
|
$(function(){
|
||||||
|
$('a.delete').click(function(){
|
||||||
|
return confirm('Once you delete this milestone, there is no going back.\nAre you sure?');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
a.milestone-title {
|
a.milestone-title {
|
||||||
font-size: 120%;
|
font-size: 120%;
|
||||||
|
|||||||
Reference in New Issue
Block a user