summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2016-01-25 13:56:13 -0500
committerUnknwon <u@gogs.io>2016-01-25 13:56:13 -0500
commit71b9537393e3b1a377e63b00046031d53c0681d5 (patch)
tree6ed4c155305bcf29d60ee3e3f3a22a00cf97a58d /modules
parentb33abc62805611f37fc92a3e75ece326efaabaf2 (diff)
parenta1a4f1103caa42f090314c77c695f4e34781da64 (diff)
downloadgitea-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.go10
-rw-r--r--modules/base/tool.go11
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 {