code.gitea.io/gitea@v1.21.7/routers/web/repo/middlewares.go (about) 1 // Copyright 2020 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package repo 5 6 import ( 7 "fmt" 8 "strconv" 9 10 system_model "code.gitea.io/gitea/models/system" 11 user_model "code.gitea.io/gitea/models/user" 12 "code.gitea.io/gitea/modules/context" 13 "code.gitea.io/gitea/modules/git" 14 ) 15 16 // SetEditorconfigIfExists set editor config as render variable 17 func SetEditorconfigIfExists(ctx *context.Context) { 18 if ctx.Repo.Repository.IsEmpty { 19 return 20 } 21 22 ec, _, err := ctx.Repo.GetEditorconfig() 23 24 if err != nil && !git.IsErrNotExist(err) { 25 description := fmt.Sprintf("Error while getting .editorconfig file: %v", err) 26 if err := system_model.CreateRepositoryNotice(description); err != nil { 27 ctx.ServerError("ErrCreatingReporitoryNotice", err) 28 } 29 return 30 } 31 32 ctx.Data["Editorconfig"] = ec 33 } 34 35 // SetDiffViewStyle set diff style as render variable 36 func SetDiffViewStyle(ctx *context.Context) { 37 queryStyle := ctx.FormString("style") 38 39 if !ctx.IsSigned { 40 ctx.Data["IsSplitStyle"] = queryStyle == "split" 41 return 42 } 43 44 var ( 45 userStyle = ctx.Doer.DiffViewStyle 46 style string 47 ) 48 49 if queryStyle == "unified" || queryStyle == "split" { 50 style = queryStyle 51 } else if userStyle == "unified" || userStyle == "split" { 52 style = userStyle 53 } else { 54 style = "unified" 55 } 56 57 ctx.Data["IsSplitStyle"] = style == "split" 58 if err := user_model.UpdateUserDiffViewStyle(ctx, ctx.Doer, style); err != nil { 59 ctx.ServerError("ErrUpdateDiffViewStyle", err) 60 } 61 } 62 63 // SetWhitespaceBehavior set whitespace behavior as render variable 64 func SetWhitespaceBehavior(ctx *context.Context) { 65 const defaultWhitespaceBehavior = "show-all" 66 whitespaceBehavior := ctx.FormString("whitespace") 67 switch whitespaceBehavior { 68 case "", "ignore-all", "ignore-eol", "ignore-change": 69 break 70 default: 71 whitespaceBehavior = defaultWhitespaceBehavior 72 } 73 if ctx.IsSigned { 74 userWhitespaceBehavior, err := user_model.GetUserSetting(ctx, ctx.Doer.ID, user_model.SettingsKeyDiffWhitespaceBehavior, defaultWhitespaceBehavior) 75 if err == nil { 76 if whitespaceBehavior == "" { 77 whitespaceBehavior = userWhitespaceBehavior 78 } else if whitespaceBehavior != userWhitespaceBehavior { 79 _ = user_model.SetUserSetting(ctx, ctx.Doer.ID, user_model.SettingsKeyDiffWhitespaceBehavior, whitespaceBehavior) 80 } 81 } // else: we can ignore the error safely 82 } 83 84 // these behaviors are for gitdiff.GetWhitespaceFlag 85 if whitespaceBehavior == "" { 86 ctx.Data["WhitespaceBehavior"] = defaultWhitespaceBehavior 87 } else { 88 ctx.Data["WhitespaceBehavior"] = whitespaceBehavior 89 } 90 } 91 92 // SetShowOutdatedComments set the show outdated comments option as context variable 93 func SetShowOutdatedComments(ctx *context.Context) { 94 showOutdatedCommentsValue := ctx.FormString("show-outdated") 95 if showOutdatedCommentsValue != "true" && showOutdatedCommentsValue != "false" { 96 // invalid or no value for this form string -> use default or stored user setting 97 showOutdatedCommentsValue = "true" 98 if ctx.IsSigned { 99 showOutdatedCommentsValue, _ = user_model.GetUserSetting(ctx, ctx.Doer.ID, user_model.SettingsKeyShowOutdatedComments, showOutdatedCommentsValue) 100 } 101 } else if ctx.IsSigned { 102 // valid value -> update user setting if user is logged in 103 _ = user_model.SetUserSetting(ctx, ctx.Doer.ID, user_model.SettingsKeyShowOutdatedComments, showOutdatedCommentsValue) 104 } 105 ctx.Data["ShowOutdatedComments"], _ = strconv.ParseBool(showOutdatedCommentsValue) 106 }