Milestone deletion is available.

This commit is contained in:
takezoe
2013-06-23 12:31:03 +09:00
parent 9dd0a6534e
commit f93dc890c8
3 changed files with 33 additions and 1 deletions

View File

@@ -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))
}
}
})
} }

View File

@@ -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))

View File

@@ -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%;