diff options
author | Unknwon <u@gogs.io> | 2016-01-25 13:56:13 -0500 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2016-01-25 13:56:13 -0500 |
commit | 71b9537393e3b1a377e63b00046031d53c0681d5 (patch) | |
tree | 6ed4c155305bcf29d60ee3e3f3a22a00cf97a58d /modules | |
parent | b33abc62805611f37fc92a3e75ece326efaabaf2 (diff) | |
parent | a1a4f1103caa42f090314c77c695f4e34781da64 (diff) | |
download | gitea-71b9537393e3b1a377e63b00046031d53c0681d5.tar.gz gitea-71b9537393e3b1a377e63b00046031d53c0681d5.zip |
Merge pull request #2396 from bkcsoft/feature/markdown-checklist
[Feature] Markdown Checklist-rendering
Diffstat (limited to 'modules')
-rw-r--r-- | modules/base/markdown.go | 10 | ||||
-rw-r--r-- | modules/base/tool.go | 11 |
2 files changed, 20 insertions, 1 deletions
diff --git a/modules/base/markdown.go b/modules/base/markdown.go index a3d3a7ca80..0ef379b8ed 100644 --- a/modules/base/markdown.go +++ b/modules/base/markdown.go @@ -142,6 +142,16 @@ func (r *CustomRender) AutoLink(out *bytes.Buffer, link []byte, kind int) { r.Renderer.AutoLink(out, link, kind) } +func (options *CustomRender) ListItem(out *bytes.Buffer, text []byte, flags int) { + switch { + case bytes.HasPrefix(text, []byte("[ ] ")): + text = append([]byte(`<input type="checkbox" disabled="" />`), text[3:]...) + case bytes.HasPrefix(text, []byte("[x] ")): + text = append([]byte(`<input type="checkbox" disabled="" checked="" />`), text[3:]...) + } + options.Renderer.ListItem(out, text, flags) +} + var ( svgSuffix = []byte(".svg") svgSuffixWithMark = []byte(".svg?") diff --git a/modules/base/tool.go b/modules/base/tool.go index 6bfd912d32..f98ae28b93 100644 --- a/modules/base/tool.go +++ b/modules/base/tool.go @@ -31,7 +31,16 @@ import ( "github.com/gogits/gogs/modules/setting" ) -var Sanitizer = bluemonday.UGCPolicy().AllowAttrs("class").Matching(regexp.MustCompile(`[\p{L}\p{N}\s\-_',:\[\]!\./\\\(\)&]*`)).OnElements("code") +func BuildSanitizer() (p *bluemonday.Policy) { + p = bluemonday.UGCPolicy() + p.AllowAttrs("class").Matching(regexp.MustCompile(`[\p{L}\p{N}\s\-_',:\[\]!\./\\\(\)&]*`)).OnElements("code") + + p.AllowAttrs("type").Matching(regexp.MustCompile(`^checkbox$`)).OnElements("input") + p.AllowAttrs("checked", "disabled").OnElements("input") + return p +} + +var Sanitizer = BuildSanitizer() // EncodeMD5 encodes string to md5 hex value. func EncodeMD5(str string) string { |