@@ -7,6 +7,7 @@ package repo
7
7
8
8
import (
9
9
"fmt"
10
+ "strings"
10
11
11
12
"code.gitea.io/gitea/models"
12
13
"code.gitea.io/gitea/modules/base"
@@ -206,7 +207,7 @@ func LatestRelease(ctx *context.Context) {
206
207
ctx .Redirect (release .HTMLURL ())
207
208
}
208
209
209
- // NewRelease render creating release page
210
+ // NewRelease render creating or edit release page
210
211
func NewRelease (ctx * context.Context ) {
211
212
ctx .Data ["Title" ] = ctx .Tr ("repo.release.new_release" )
212
213
ctx .Data ["PageIsReleaseList" ] = true
@@ -221,10 +222,17 @@ func NewRelease(ctx *context.Context) {
221
222
}
222
223
223
224
if rel != nil {
225
+ rel .Repo = ctx .Repo .Repository
226
+ if err := rel .LoadAttributes (); err != nil {
227
+ ctx .ServerError ("LoadAttributes" , err )
228
+ return
229
+ }
230
+
224
231
ctx .Data ["tag_name" ] = rel .TagName
225
232
ctx .Data ["tag_target" ] = rel .Target
226
233
ctx .Data ["title" ] = rel .Title
227
234
ctx .Data ["content" ] = rel .Note
235
+ ctx .Data ["attachments" ] = rel .Attachments
228
236
}
229
237
}
230
238
ctx .Data ["IsAttachmentEnabled" ] = setting .Attachment .Enabled
@@ -324,9 +332,9 @@ func NewReleasePost(ctx *context.Context) {
324
332
rel .PublisherID = ctx .User .ID
325
333
rel .IsTag = false
326
334
327
- if err = releaseservice .UpdateReleaseOrCreatReleaseFromTag (ctx .User , ctx .Repo .GitRepo , rel , attachmentUUIDs , true ); err != nil {
335
+ if err = releaseservice .UpdateRelease (ctx .User , ctx .Repo .GitRepo , rel , attachmentUUIDs , nil , nil ); err != nil {
328
336
ctx .Data ["Err_TagName" ] = true
329
- ctx .ServerError ("UpdateReleaseOrCreatReleaseFromTag " , err )
337
+ ctx .ServerError ("UpdateRelease " , err )
330
338
return
331
339
}
332
340
}
@@ -363,6 +371,13 @@ func EditRelease(ctx *context.Context) {
363
371
ctx .Data ["prerelease" ] = rel .IsPrerelease
364
372
ctx .Data ["IsDraft" ] = rel .IsDraft
365
373
374
+ rel .Repo = ctx .Repo .Repository
375
+ if err := rel .LoadAttributes (); err != nil {
376
+ ctx .ServerError ("LoadAttributes" , err )
377
+ return
378
+ }
379
+ ctx .Data ["attachments" ] = rel .Attachments
380
+
366
381
ctx .HTML (200 , tplReleaseNew )
367
382
}
368
383
@@ -400,16 +415,27 @@ func EditReleasePost(ctx *context.Context) {
400
415
return
401
416
}
402
417
403
- var attachmentUUIDs []string
418
+ const delPrefix = "attachment-del-"
419
+ const editPrefix = "attachment-edit-"
420
+ var addAttachmentUUIDs , delAttachmentUUIDs []string
421
+ var editAttachments = make (map [string ]string ) // uuid -> new name
404
422
if setting .Attachment .Enabled {
405
- attachmentUUIDs = form .Files
423
+ addAttachmentUUIDs = form .Files
424
+ for k , v := range ctx .Req .Form {
425
+ if strings .HasPrefix (k , delPrefix ) && v [0 ] == "true" {
426
+ delAttachmentUUIDs = append (delAttachmentUUIDs , k [len (delPrefix ):])
427
+ } else if strings .HasPrefix (k , editPrefix ) {
428
+ editAttachments [k [len (editPrefix ):]] = v [0 ]
429
+ }
430
+ }
406
431
}
407
432
408
433
rel .Title = form .Title
409
434
rel .Note = form .Content
410
435
rel .IsDraft = len (form .Draft ) > 0
411
436
rel .IsPrerelease = form .Prerelease
412
- if err = releaseservice .UpdateReleaseOrCreatReleaseFromTag (ctx .User , ctx .Repo .GitRepo , rel , attachmentUUIDs , false ); err != nil {
437
+ if err = releaseservice .UpdateRelease (ctx .User , ctx .Repo .GitRepo ,
438
+ rel , addAttachmentUUIDs , delAttachmentUUIDs , editAttachments ); err != nil {
413
439
ctx .ServerError ("UpdateRelease" , err )
414
440
return
415
441
}
0 commit comments