|  | @@ -1018,13 +1018,17 @@ func IssuePostAttachment(ctx *middleware.Context, params martini.Params) {
 | 
	
		
			
				|  |  |  	issueId, _ := base.StrTo(params["index"]).Int64()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	if issueId == 0 {
 | 
	
		
			
				|  |  | -		ctx.Handle(400, "issue.IssuePostAttachment", nil)
 | 
	
		
			
				|  |  | +		ctx.JSON(400, map[string]interface{}{
 | 
	
		
			
				|  |  | +			"ok":    false,
 | 
	
		
			
				|  |  | +			"error": "invalid issue id",
 | 
	
		
			
				|  |  | +		})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		return
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	commentId, err := base.StrTo(params["id"]).Int64()
 | 
	
		
			
				|  |  | +	commentId, err := base.StrTo(params["comment"]).Int64()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	if err != nil && len(params["id"]) > 0 {
 | 
	
		
			
				|  |  | +	if err != nil && len(params["comment"]) > 0 {
 | 
	
		
			
				|  |  |  		ctx.JSON(400, map[string]interface{}{
 | 
	
		
			
				|  |  |  			"ok":    false,
 | 
	
		
			
				|  |  |  			"error": "invalid comment id",
 | 
	
	
		
			
				|  | @@ -1132,3 +1136,102 @@ func IssueGetAttachment(ctx *middleware.Context, params martini.Params) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	ctx.ServeFile(attachment.Path, attachment.Name)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func IssueDeleteAttachment(ctx *middleware.Context, params martini.Params) {
 | 
	
		
			
				|  |  | +	issueId, _ := base.StrTo(params["index"]).Int64()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if issueId == 0 {
 | 
	
		
			
				|  |  | +		ctx.JSON(400, map[string]interface{}{
 | 
	
		
			
				|  |  | +			"ok":    false,
 | 
	
		
			
				|  |  | +			"error": "invalid issue id",
 | 
	
		
			
				|  |  | +		})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	commentId, err := base.StrTo(params["comment"]).Int64()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if err != nil || commentId < 0 {
 | 
	
		
			
				|  |  | +		ctx.JSON(400, map[string]interface{}{
 | 
	
		
			
				|  |  | +			"ok":    false,
 | 
	
		
			
				|  |  | +			"error": "invalid comment id",
 | 
	
		
			
				|  |  | +		})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	comment, err := models.GetCommentById(commentId)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if err != nil {
 | 
	
		
			
				|  |  | +		ctx.JSON(400, map[string]interface{}{
 | 
	
		
			
				|  |  | +			"ok":    false,
 | 
	
		
			
				|  |  | +			"error": "invalid issue id",
 | 
	
		
			
				|  |  | +		})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if comment.PosterId != ctx.User.Id {
 | 
	
		
			
				|  |  | +		ctx.JSON(400, map[string]interface{}{
 | 
	
		
			
				|  |  | +			"ok":    false,
 | 
	
		
			
				|  |  | +			"error": "no permissions",
 | 
	
		
			
				|  |  | +		})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	attachmentId, err := base.StrTo(params["id"]).Int64()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if err != nil {
 | 
	
		
			
				|  |  | +		ctx.JSON(400, map[string]interface{}{
 | 
	
		
			
				|  |  | +			"ok":    false,
 | 
	
		
			
				|  |  | +			"error": "invalid attachment id",
 | 
	
		
			
				|  |  | +		})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	attachment, err := models.GetAttachmentById(attachmentId)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if err != nil {
 | 
	
		
			
				|  |  | +		ctx.JSON(400, map[string]interface{}{
 | 
	
		
			
				|  |  | +			"ok":    false,
 | 
	
		
			
				|  |  | +			"error": "wrong attachment id",
 | 
	
		
			
				|  |  | +		})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if attachment.IssueId != issueId {
 | 
	
		
			
				|  |  | +		ctx.JSON(400, map[string]interface{}{
 | 
	
		
			
				|  |  | +			"ok":    false,
 | 
	
		
			
				|  |  | +			"error": "attachment not associated with the given issue",
 | 
	
		
			
				|  |  | +		})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if attachment.CommentId != commentId {
 | 
	
		
			
				|  |  | +		ctx.JSON(400, map[string]interface{}{
 | 
	
		
			
				|  |  | +			"ok":    false,
 | 
	
		
			
				|  |  | +			"error": "attachment not associated with the given comment",
 | 
	
		
			
				|  |  | +		})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	err = models.DeleteAttachment(attachment, true)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if err != nil {
 | 
	
		
			
				|  |  | +		ctx.JSON(500, map[string]interface{}{
 | 
	
		
			
				|  |  | +			"ok":    false,
 | 
	
		
			
				|  |  | +			"error": "could not delete attachment",
 | 
	
		
			
				|  |  | +		})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	ctx.JSON(200, map[string]interface{}{
 | 
	
		
			
				|  |  | +		"ok": true,
 | 
	
		
			
				|  |  | +	})
 | 
	
		
			
				|  |  | +}
 |