2019-02-18 23:55:04 +03:00
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package repo
import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context"
2021-01-26 18:36:53 +03:00
"code.gitea.io/gitea/modules/web"
2021-04-06 22:44:05 +03:00
"code.gitea.io/gitea/services/forms"
2019-02-18 23:55:04 +03:00
)
// LockIssue locks an issue. This would limit commenting abilities to
// users with write access to the repo.
2021-01-26 18:36:53 +03:00
func LockIssue ( ctx * context . Context ) {
2021-04-06 22:44:05 +03:00
form := web . GetForm ( ctx ) . ( * forms . IssueLockForm )
2019-02-18 23:55:04 +03:00
issue := GetActionIssue ( ctx )
if ctx . Written ( ) {
return
}
if issue . IsLocked {
ctx . Flash . Error ( ctx . Tr ( "repo.issues.lock_duplicate" ) )
ctx . Redirect ( issue . HTMLURL ( ) )
return
}
if ! form . HasValidReason ( ) {
ctx . Flash . Error ( ctx . Tr ( "repo.issues.lock.unknown_reason" ) )
ctx . Redirect ( issue . HTMLURL ( ) )
return
}
if err := models . LockIssue ( & models . IssueLockOptions {
2022-03-22 10:03:22 +03:00
Doer : ctx . Doer ,
2019-02-18 23:55:04 +03:00
Issue : issue ,
Reason : form . Reason ,
} ) ; err != nil {
ctx . ServerError ( "LockIssue" , err )
return
}
2022-03-23 07:54:07 +03:00
ctx . Redirect ( issue . HTMLURL ( ) )
2019-02-18 23:55:04 +03:00
}
// UnlockIssue unlocks a previously locked issue.
func UnlockIssue ( ctx * context . Context ) {
issue := GetActionIssue ( ctx )
if ctx . Written ( ) {
return
}
if ! issue . IsLocked {
ctx . Flash . Error ( ctx . Tr ( "repo.issues.unlock_error" ) )
ctx . Redirect ( issue . HTMLURL ( ) )
return
}
if err := models . UnlockIssue ( & models . IssueLockOptions {
2022-03-22 10:03:22 +03:00
Doer : ctx . Doer ,
2019-02-18 23:55:04 +03:00
Issue : issue ,
} ) ; err != nil {
ctx . ServerError ( "UnlockIssue" , err )
return
}
2022-03-23 07:54:07 +03:00
ctx . Redirect ( issue . HTMLURL ( ) )
2019-02-18 23:55:04 +03:00
}