aboutsummaryrefslogtreecommitdiffstats
path: root/modules/templates
diff options
context:
space:
mode:
authorsilverwind <me@silverwind.io>2020-07-12 11:10:56 +0200
committerGitHub <noreply@github.com>2020-07-12 12:10:56 +0300
commit8188176b588264fe0ff8e3f82a623ea007a1af41 (patch)
tree0dd469b25f45c5a40ee62916b40162985753972a /modules/templates
parent63591016b3ecd79ab1172cd98e2e830a09d6f515 (diff)
downloadgitea-8188176b588264fe0ff8e3f82a623ea007a1af41.tar.gz
gitea-8188176b588264fe0ff8e3f82a623ea007a1af41.zip
Direct SVG rendering (#12157)
Introduce 'make svg' which calls a node script that compiles svg files to `public/img/svg`. These files are vendored to not create a dependency on Node for the backend build. On the frontend side, configure webpack using `raw-loader` so SVGs can be imported as string. Also moved our existing SVGs to web_src/svg for consistency. Fixes: https://github.com/go-gitea/gitea/issues/11618
Diffstat (limited to 'modules/templates')
-rw-r--r--modules/templates/helper.go13
1 files changed, 12 insertions, 1 deletions
diff --git a/modules/templates/helper.go b/modules/templates/helper.go
index 5001963e90..bb60db541c 100644
--- a/modules/templates/helper.go
+++ b/modules/templates/helper.go
@@ -30,6 +30,7 @@ import (
"code.gitea.io/gitea/modules/markup"
"code.gitea.io/gitea/modules/repository"
"code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/modules/svg"
"code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/services/gitdiff"
@@ -439,9 +440,19 @@ func NewTextFuncMap() []texttmpl.FuncMap {
}}
}
+var widthRe = regexp.MustCompile(`width="[0-9]+?"`)
+var heightRe = regexp.MustCompile(`height="[0-9]+?"`)
+
// SVG render icons
func SVG(icon string, size int) template.HTML {
- return template.HTML(fmt.Sprintf(`<svg class="svg %s" width="%d" height="%d" aria-hidden="true"><use xlink:href="#%s" /></svg>`, icon, size, size, icon))
+ if svgStr, ok := svg.SVGs[icon]; ok {
+ if size != 16 {
+ svgStr = widthRe.ReplaceAllString(svgStr, fmt.Sprintf(`width="%d"`, size))
+ svgStr = heightRe.ReplaceAllString(svgStr, fmt.Sprintf(`height="%d"`, size))
+ }
+ return template.HTML(svgStr)
+ }
+ return template.HTML("")
}
// Safe render raw as HTML