aboutsummaryrefslogtreecommitdiff
path: root/routers/repo/release.go
diff options
context:
space:
mode:
Diffstat (limited to 'routers/repo/release.go')
-rw-r--r--routers/repo/release.go41
1 files changed, 38 insertions, 3 deletions
diff --git a/routers/repo/release.go b/routers/repo/release.go
index 316598c6..6329de9d 100644
--- a/routers/repo/release.go
+++ b/routers/repo/release.go
@@ -6,6 +6,7 @@ package repo
import (
"fmt"
+ "strings"
log "gopkg.in/clog.v1"
@@ -14,6 +15,7 @@ import (
"github.com/gogits/gogs/modules/context"
"github.com/gogits/gogs/modules/form"
"github.com/gogits/gogs/modules/markdown"
+ "github.com/gogits/gogs/modules/setting"
)
const (
@@ -148,16 +150,26 @@ func Releases(ctx *context.Context) {
ctx.HTML(200, RELEASES)
}
+func renderReleaseAttachmentSettings(ctx *context.Context) {
+ ctx.Data["RequireDropzone"] = true
+ ctx.Data["IsAttachmentEnabled"] = setting.Release.Attachment.Enabled
+ ctx.Data["AttachmentAllowedTypes"] = strings.Join(setting.Release.Attachment.AllowedTypes, ",")
+ ctx.Data["AttachmentMaxSize"] = setting.Release.Attachment.MaxSize
+ ctx.Data["AttachmentMaxFiles"] = setting.Release.Attachment.MaxFiles
+}
+
func NewRelease(ctx *context.Context) {
ctx.Data["Title"] = ctx.Tr("repo.release.new_release")
ctx.Data["PageIsReleaseList"] = true
ctx.Data["tag_target"] = ctx.Repo.Repository.DefaultBranch
+ renderReleaseAttachmentSettings(ctx)
ctx.HTML(200, RELEASE_NEW)
}
func NewReleasePost(ctx *context.Context, f form.NewRelease) {
ctx.Data["Title"] = ctx.Tr("repo.release.new_release")
ctx.Data["PageIsReleaseList"] = true
+ renderReleaseAttachmentSettings(ctx)
if ctx.HasError() {
ctx.HTML(200, RELEASE_NEW)
@@ -169,6 +181,7 @@ func NewReleasePost(ctx *context.Context, f form.NewRelease) {
return
}
+ // Use current time if tag not yet exist, otherwise get time from Git
var tagCreatedUnix int64
tag, err := ctx.Repo.GitRepo.GetTag(f.TagName)
if err == nil {
@@ -190,6 +203,11 @@ func NewReleasePost(ctx *context.Context, f form.NewRelease) {
return
}
+ var attachments []string
+ if setting.Release.Attachment.Enabled {
+ attachments = f.Files
+ }
+
rel := &models.Release{
RepoID: ctx.Repo.Repository.ID,
PublisherID: ctx.User.ID,
@@ -203,7 +221,7 @@ func NewReleasePost(ctx *context.Context, f form.NewRelease) {
IsPrerelease: f.Prerelease,
CreatedUnix: tagCreatedUnix,
}
- if err = models.CreateRelease(ctx.Repo.GitRepo, rel); err != nil {
+ if err = models.NewRelease(ctx.Repo.GitRepo, rel, attachments); err != nil {
ctx.Data["Err_TagName"] = true
switch {
case models.IsErrReleaseAlreadyExist(err):
@@ -211,7 +229,7 @@ func NewReleasePost(ctx *context.Context, f form.NewRelease) {
case models.IsErrInvalidTagName(err):
ctx.RenderWithErr(ctx.Tr("repo.release.tag_name_invalid"), RELEASE_NEW, &f)
default:
- ctx.Handle(500, "CreateRelease", err)
+ ctx.Handle(500, "NewRelease", err)
}
return
}
@@ -224,6 +242,7 @@ func EditRelease(ctx *context.Context) {
ctx.Data["Title"] = ctx.Tr("repo.release.edit_release")
ctx.Data["PageIsReleaseList"] = true
ctx.Data["PageIsEditRelease"] = true
+ renderReleaseAttachmentSettings(ctx)
tagName := ctx.Params("*")
rel, err := models.GetRelease(ctx.Repo.Repository.ID, tagName)
@@ -240,6 +259,7 @@ func EditRelease(ctx *context.Context) {
ctx.Data["tag_target"] = rel.Target
ctx.Data["title"] = rel.Title
ctx.Data["content"] = rel.Note
+ ctx.Data["attachments"] = rel.Attachments
ctx.Data["prerelease"] = rel.IsPrerelease
ctx.Data["IsDraft"] = rel.IsDraft
@@ -250,6 +270,7 @@ func EditReleasePost(ctx *context.Context, f form.EditRelease) {
ctx.Data["Title"] = ctx.Tr("repo.release.edit_release")
ctx.Data["PageIsReleaseList"] = true
ctx.Data["PageIsEditRelease"] = true
+ renderReleaseAttachmentSettings(ctx)
tagName := ctx.Params("*")
rel, err := models.GetRelease(ctx.Repo.Repository.ID, tagName)
@@ -265,6 +286,7 @@ func EditReleasePost(ctx *context.Context, f form.EditRelease) {
ctx.Data["tag_target"] = rel.Target
ctx.Data["title"] = rel.Title
ctx.Data["content"] = rel.Note
+ ctx.Data["attachments"] = rel.Attachments
ctx.Data["prerelease"] = rel.IsPrerelease
ctx.Data["IsDraft"] = rel.IsDraft
@@ -273,18 +295,31 @@ func EditReleasePost(ctx *context.Context, f form.EditRelease) {
return
}
+ var attachments []string
+ if setting.Release.Attachment.Enabled {
+ attachments = f.Files
+ }
+
isPublish := rel.IsDraft && len(f.Draft) == 0
rel.Title = f.Title
rel.Note = f.Content
rel.IsDraft = len(f.Draft) > 0
rel.IsPrerelease = f.Prerelease
- if err = models.UpdateRelease(ctx.User, ctx.Repo.GitRepo, rel, isPublish); err != nil {
+ if err = models.UpdateRelease(ctx.User, ctx.Repo.GitRepo, rel, isPublish, attachments); err != nil {
ctx.Handle(500, "UpdateRelease", err)
return
}
ctx.Redirect(ctx.Repo.RepoLink + "/releases")
}
+func UploadReleaseAttachment(ctx *context.Context) {
+ if !setting.Release.Attachment.Enabled {
+ ctx.NotFound()
+ return
+ }
+ uploadAttachment(ctx, setting.Release.Attachment.AllowedTypes)
+}
+
func DeleteRelease(ctx *context.Context) {
if err := models.DeleteReleaseOfRepoByID(ctx.Repo.Repository.ID, ctx.QueryInt64("id")); err != nil {
ctx.Flash.Error("DeleteReleaseByID: " + err.Error())