mirror of
				https://github.com/gitbucket/gitbucket.git
				synced 2025-10-31 10:36:05 +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