code.gitea.io/gitea@v1.21.7/routers/web/repo/setting/variables.go (about) 1 // Copyright 2023 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package setting 5 6 import ( 7 "errors" 8 "net/http" 9 10 "code.gitea.io/gitea/modules/base" 11 "code.gitea.io/gitea/modules/context" 12 "code.gitea.io/gitea/modules/setting" 13 shared "code.gitea.io/gitea/routers/web/shared/actions" 14 shared_user "code.gitea.io/gitea/routers/web/shared/user" 15 ) 16 17 const ( 18 tplRepoVariables base.TplName = "repo/settings/actions" 19 tplOrgVariables base.TplName = "org/settings/actions" 20 tplUserVariables base.TplName = "user/settings/actions" 21 ) 22 23 type variablesCtx struct { 24 OwnerID int64 25 RepoID int64 26 IsRepo bool 27 IsOrg bool 28 IsUser bool 29 VariablesTemplate base.TplName 30 RedirectLink string 31 } 32 33 func getVariablesCtx(ctx *context.Context) (*variablesCtx, error) { 34 if ctx.Data["PageIsRepoSettings"] == true { 35 return &variablesCtx{ 36 RepoID: ctx.Repo.Repository.ID, 37 IsRepo: true, 38 VariablesTemplate: tplRepoVariables, 39 RedirectLink: ctx.Repo.RepoLink + "/settings/actions/variables", 40 }, nil 41 } 42 43 if ctx.Data["PageIsOrgSettings"] == true { 44 err := shared_user.LoadHeaderCount(ctx) 45 if err != nil { 46 ctx.ServerError("LoadHeaderCount", err) 47 return nil, nil 48 } 49 return &variablesCtx{ 50 OwnerID: ctx.ContextUser.ID, 51 IsOrg: true, 52 VariablesTemplate: tplOrgVariables, 53 RedirectLink: ctx.Org.OrgLink + "/settings/actions/variables", 54 }, nil 55 } 56 57 if ctx.Data["PageIsUserSettings"] == true { 58 return &variablesCtx{ 59 OwnerID: ctx.Doer.ID, 60 IsUser: true, 61 VariablesTemplate: tplUserVariables, 62 RedirectLink: setting.AppSubURL + "/user/settings/actions/variables", 63 }, nil 64 } 65 66 return nil, errors.New("unable to set Variables context") 67 } 68 69 func Variables(ctx *context.Context) { 70 ctx.Data["Title"] = ctx.Tr("actions.variables") 71 ctx.Data["PageType"] = "variables" 72 ctx.Data["PageIsSharedSettingsVariables"] = true 73 74 vCtx, err := getVariablesCtx(ctx) 75 if err != nil { 76 ctx.ServerError("getVariablesCtx", err) 77 return 78 } 79 80 shared.SetVariablesContext(ctx, vCtx.OwnerID, vCtx.RepoID) 81 if ctx.Written() { 82 return 83 } 84 85 ctx.HTML(http.StatusOK, vCtx.VariablesTemplate) 86 } 87 88 func VariableCreate(ctx *context.Context) { 89 vCtx, err := getVariablesCtx(ctx) 90 if err != nil { 91 ctx.ServerError("getVariablesCtx", err) 92 return 93 } 94 95 if ctx.HasError() { // form binding validation error 96 ctx.JSONError(ctx.GetErrMsg()) 97 return 98 } 99 100 shared.CreateVariable(ctx, vCtx.OwnerID, vCtx.RepoID, vCtx.RedirectLink) 101 } 102 103 func VariableUpdate(ctx *context.Context) { 104 vCtx, err := getVariablesCtx(ctx) 105 if err != nil { 106 ctx.ServerError("getVariablesCtx", err) 107 return 108 } 109 110 if ctx.HasError() { // form binding validation error 111 ctx.JSONError(ctx.GetErrMsg()) 112 return 113 } 114 115 shared.UpdateVariable(ctx, vCtx.RedirectLink) 116 } 117 118 func VariableDelete(ctx *context.Context) { 119 vCtx, err := getVariablesCtx(ctx) 120 if err != nil { 121 ctx.ServerError("getVariablesCtx", err) 122 return 123 } 124 shared.DeleteVariable(ctx, vCtx.RedirectLink) 125 }