mirror of
				https://github.com/gitbucket/gitbucket.git
				synced 2025-10-31 18:46:28 +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.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] = | ||||
|     Query(Milestones) | ||||
|       .filter(m => (m.userName is owner.bind) && (m.repositoryName is repository.bind) && (m.milestoneId is milestoneId.bind)) | ||||
|   | ||||
| @@ -54,7 +54,7 @@ | ||||
|                         } else { | ||||
|                           <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> | ||||
|                     </div> | ||||
| @@ -86,6 +86,13 @@ | ||||
|     </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"> | ||||
| a.milestone-title { | ||||
|   font-size: 120%; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user