44package repo
55
66import (
7+ "errors"
78 "net/http"
89
910 "code.gitea.io/gitea/models/db"
@@ -13,7 +14,9 @@ import (
1314 "code.gitea.io/gitea/modules/log"
1415 repo_module "code.gitea.io/gitea/modules/repository"
1516 "code.gitea.io/gitea/modules/templates"
17+ "code.gitea.io/gitea/modules/util"
1618 "code.gitea.io/gitea/modules/web"
19+ shared_label "code.gitea.io/gitea/routers/web/shared/label"
1720 "code.gitea.io/gitea/services/context"
1821 "code.gitea.io/gitea/services/forms"
1922 issue_service "code.gitea.io/gitea/services/issue"
@@ -100,13 +103,8 @@ func RetrieveLabelsForList(ctx *context.Context) {
100103
101104// NewLabel create new label for repository
102105func NewLabel (ctx * context.Context ) {
103- form := web .GetForm (ctx ).(* forms.CreateLabelForm )
104- ctx .Data ["Title" ] = ctx .Tr ("repo.labels" )
105- ctx .Data ["PageIsLabels" ] = true
106-
107- if ctx .HasError () {
108- ctx .Flash .Error (ctx .Data ["ErrorMsg" ].(string ))
109- ctx .Redirect (ctx .Repo .RepoLink + "/labels" )
106+ form := shared_label .GetLabelEditForm (ctx )
107+ if ctx .Written () {
110108 return
111109 }
112110
@@ -122,34 +120,36 @@ func NewLabel(ctx *context.Context) {
122120 ctx .ServerError ("NewLabel" , err )
123121 return
124122 }
125- ctx .Redirect (ctx .Repo .RepoLink + "/labels" )
123+ ctx .JSONRedirect (ctx .Repo .RepoLink + "/labels" )
126124}
127125
128126// UpdateLabel update a label's name and color
129127func UpdateLabel (ctx * context.Context ) {
130- form := web .GetForm (ctx ).(* forms.CreateLabelForm )
128+ form := shared_label .GetLabelEditForm (ctx )
129+ if ctx .Written () {
130+ return
131+ }
132+
131133 l , err := issues_model .GetLabelInRepoByID (ctx , ctx .Repo .Repository .ID , form .ID )
132- if err != nil {
133- switch {
134- case issues_model .IsErrRepoLabelNotExist (err ):
135- ctx .HTTPError (http .StatusNotFound )
136- default :
137- ctx .ServerError ("UpdateLabel" , err )
138- }
134+ if errors .Is (err , util .ErrNotExist ) {
135+ ctx .JSONErrorNotFound ()
136+ return
137+ } else if err != nil {
138+ ctx .ServerError ("GetLabelInRepoByID" , err )
139139 return
140140 }
141+
141142 l .Name = form .Title
142143 l .Exclusive = form .Exclusive
143144 l .ExclusiveOrder = form .ExclusiveOrder
144145 l .Description = form .Description
145146 l .Color = form .Color
146-
147147 l .SetArchived (form .IsArchived )
148148 if err := issues_model .UpdateLabel (ctx , l ); err != nil {
149149 ctx .ServerError ("UpdateLabel" , err )
150150 return
151151 }
152- ctx .Redirect (ctx .Repo .RepoLink + "/labels" )
152+ ctx .JSONRedirect (ctx .Repo .RepoLink + "/labels" )
153153}
154154
155155// DeleteLabel delete a label
0 commit comments