diff options
author | silverwind <me@silverwind.io> | 2020-12-13 02:05:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-13 09:05:50 +0800 |
commit | 41e8b834afbd0c98a8ab4549a90a6bce0ec7096f (patch) | |
tree | 67e3a2de682b8884af5befeaa47b1924aa83fbd3 /modules | |
parent | 287b594803105ba517680aa50be478648d434035 (diff) | |
download | gitea-41e8b834afbd0c98a8ab4549a90a6bce0ec7096f.tar.gz gitea-41e8b834afbd0c98a8ab4549a90a6bce0ec7096f.zip |
Markdown task list improvements (#13952)
* Markdown task list improvements
- Remove `.ui` class and wrappers to prevent fomantic from messing with it.
- Change rendered HTML to match GitHub.
- Add custom styling for the checkboxes.
* fix unittest
Co-authored-by: Lauris BH <lauris@nix.lv>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Diffstat (limited to 'modules')
-rw-r--r-- | modules/markup/markdown/goldmark.go | 6 | ||||
-rw-r--r-- | modules/markup/markdown/markdown_test.go | 6 | ||||
-rw-r--r-- | modules/markup/sanitizer.go | 6 | ||||
-rw-r--r-- | modules/markup/sanitizer_test.go | 2 |
4 files changed, 10 insertions, 10 deletions
diff --git a/modules/markup/markdown/goldmark.go b/modules/markup/markdown/goldmark.go index 9447424644..f9fd6eb976 100644 --- a/modules/markup/markdown/goldmark.go +++ b/modules/markup/markdown/goldmark.go @@ -357,9 +357,9 @@ func (r *HTMLRenderer) renderTaskCheckBoxListItem(w util.BufWriter, source []byt } var err error if n.IsChecked { - _, err = w.WriteString(`<span class="ui checked checkbox"><input type="checkbox" checked="" readonly="readonly"` + end + `<label>`) + _, err = w.WriteString(`<input type="checkbox" disabled="" checked=""` + end) } else { - _, err = w.WriteString(`<span class="ui checkbox"><input type="checkbox" readonly="readonly"` + end + `<label>`) + _, err = w.WriteString(`<input type="checkbox" disabled=""` + end) } if err != nil { return ast.WalkStop, err @@ -371,7 +371,7 @@ func (r *HTMLRenderer) renderTaskCheckBoxListItem(w util.BufWriter, source []byt } } } else { - _, _ = w.WriteString("</label></span></li>\n") + _, _ = w.WriteString("</li>\n") } return ast.WalkContinue, nil } diff --git a/modules/markup/markdown/markdown_test.go b/modules/markup/markdown/markdown_test.go index 7f27a43a7d..89005fc25d 100644 --- a/modules/markup/markdown/markdown_test.go +++ b/modules/markup/markdown/markdown_test.go @@ -142,9 +142,9 @@ func testAnswers(baseURLContent, baseURLImages string) []string { <p>(from <a href="https://www.markdownguide.org/extended-syntax/" rel="nofollow">https://www.markdownguide.org/extended-syntax/</a>)</p> <h3 id="user-content-checkboxes">Checkboxes</h3> <ul> -<li class="task-list-item"><span class="ui checkbox"><input type="checkbox" readonly="readonly"/><label>unchecked</label></span></li> -<li class="task-list-item"><span class="ui checked checkbox"><input type="checkbox" checked="" readonly="readonly"/><label>checked</label></span></li> -<li class="task-list-item"><span class="ui checkbox"><input type="checkbox" readonly="readonly"/><label>still unchecked</label></span></li> +<li class="task-list-item"><input type="checkbox" disabled=""/>unchecked</li> +<li class="task-list-item"><input type="checkbox" disabled="" checked=""/>checked</li> +<li class="task-list-item"><input type="checkbox" disabled=""/>still unchecked</li> </ul> <h3 id="user-content-definition-list">Definition list</h3> <dl> diff --git a/modules/markup/sanitizer.go b/modules/markup/sanitizer.go index ba73650bdf..9214a75fb3 100644 --- a/modules/markup/sanitizer.go +++ b/modules/markup/sanitizer.go @@ -43,7 +43,7 @@ func ReplaceSanitizer() { // Checkboxes sanitizer.policy.AllowAttrs("type").Matching(regexp.MustCompile(`^checkbox$`)).OnElements("input") - sanitizer.policy.AllowAttrs("checked", "disabled", "readonly").OnElements("input") + sanitizer.policy.AllowAttrs("checked", "disabled").OnElements("input") // Custom URL-Schemes sanitizer.policy.AllowURLSchemes(setting.Markdown.CustomURLSchemes...) @@ -66,8 +66,8 @@ func ReplaceSanitizer() { // Allow classes for emojis sanitizer.policy.AllowAttrs("class").Matching(regexp.MustCompile(`emoji`)).OnElements("img") - // Allow icons, checkboxes, emojis, and chroma syntax on span - sanitizer.policy.AllowAttrs("class").Matching(regexp.MustCompile(`^((icon(\s+[\p{L}\p{N}_-]+)+)|(ui checkbox)|(ui checked checkbox)|(emoji))$|^([a-z][a-z0-9]{0,2})$`)).OnElements("span") + // Allow icons, emojis, and chroma syntax on span + sanitizer.policy.AllowAttrs("class").Matching(regexp.MustCompile(`^((icon(\s+[\p{L}\p{N}_-]+)+)|(emoji))$|^([a-z][a-z0-9]{0,2})$`)).OnElements("span") // Allow generally safe attributes generalSafeAttrs := []string{"abbr", "accept", "accept-charset", diff --git a/modules/markup/sanitizer_test.go b/modules/markup/sanitizer_test.go index 3e8dcecd50..63b70166d8 100644 --- a/modules/markup/sanitizer_test.go +++ b/modules/markup/sanitizer_test.go @@ -40,7 +40,7 @@ func Test_Sanitizer(t *testing.T) { `<kbd>Ctrl + C</kbd>`, `<kbd>Ctrl + C</kbd>`, `<i class="dropdown icon">NAUGHTY</i>`, `<i>NAUGHTY</i>`, `<i class="icon dropdown"></i>`, `<i class="icon dropdown"></i>`, - `<span class="ui checkbox"><input type="checkbox" readonly="readonly"/><label>unchecked</label></span>`, `<span class="ui checkbox"><input type="checkbox" readonly="readonly"/><label>unchecked</label></span>`, + `<input type="checkbox" disabled=""/>unchecked`, `<input type="checkbox" disabled=""/>unchecked`, `<span class="emoji dropdown">NAUGHTY</span>`, `<span>NAUGHTY</span>`, `<span class="emoji">contents</span>`, `<span class="emoji">contents</span>`, } |