@@ -10,7 +10,6 @@ import (
10
10
"regexp"
11
11
"strings"
12
12
13
- "code.gitea.io/gitea/modules/log"
14
13
"code.gitea.io/gitea/modules/markup"
15
14
"code.gitea.io/gitea/modules/markup/common"
16
15
"code.gitea.io/gitea/modules/setting"
@@ -129,6 +128,21 @@ func (g *ASTTransformer) Transform(node *ast.Document, reader text.Reader, pc pa
129
128
if v .HasChildren () && v .FirstChild ().HasChildren () && v .FirstChild ().FirstChild ().HasChildren () {
130
129
if _ , ok := v .FirstChild ().FirstChild ().FirstChild ().(* east.TaskCheckBox ); ok {
131
130
v .SetAttributeString ("class" , []byte ("task-list" ))
131
+ children := make ([]ast.Node , 0 , v .ChildCount ())
132
+ child := v .FirstChild ()
133
+ for child != nil {
134
+ children = append (children , child )
135
+ child = child .NextSibling ()
136
+ }
137
+ v .RemoveChildren (v )
138
+
139
+ for _ , child := range children {
140
+ listItem := child .(* ast.ListItem )
141
+ newChild := NewTaskCheckBoxListItem (listItem )
142
+ taskCheckBox := child .FirstChild ().FirstChild ().(* east.TaskCheckBox )
143
+ newChild .IsChecked = taskCheckBox .IsChecked
144
+ v .AppendChild (v , newChild )
145
+ }
132
146
}
133
147
}
134
148
}
@@ -221,11 +235,11 @@ func (r *HTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) {
221
235
reg .Register (KindDetails , r .renderDetails )
222
236
reg .Register (KindSummary , r .renderSummary )
223
237
reg .Register (KindIcon , r .renderIcon )
238
+ reg .Register (KindTaskCheckBoxListItem , r .renderTaskCheckBoxListItem )
224
239
reg .Register (east .KindTaskCheckBox , r .renderTaskCheckBox )
225
240
}
226
241
227
242
func (r * HTMLRenderer ) renderDocument (w util.BufWriter , source []byte , node ast.Node , entering bool ) (ast.WalkStatus , error ) {
228
- log .Info ("renderDocument %v" , node )
229
243
n := node .(* ast.Document )
230
244
231
245
if val , has := n .AttributeString ("lang" ); has {
@@ -311,24 +325,42 @@ func (r *HTMLRenderer) renderIcon(w util.BufWriter, source []byte, node ast.Node
311
325
return ast .WalkContinue , nil
312
326
}
313
327
314
- func (r * HTMLRenderer ) renderTaskCheckBox (w util.BufWriter , source []byte , node ast.Node , entering bool ) (ast.WalkStatus , error ) {
315
- if ! entering {
316
- return ast .WalkContinue , nil
317
- }
318
- n := node .(* east.TaskCheckBox )
319
-
320
- end := ">"
321
- if r .XHTML {
322
- end = " />"
323
- }
324
- var err error
325
- if n .IsChecked {
326
- _ , err = w .WriteString (`<span class="ui fitted disabled checkbox"><input type="checkbox" disabled="disabled"` + end + `<label` + end + `</span>` )
328
+ func (r * HTMLRenderer ) renderTaskCheckBoxListItem (w util.BufWriter , source []byte , node ast.Node , entering bool ) (ast.WalkStatus , error ) {
329
+ n := node .(* TaskCheckBoxListItem )
330
+ if entering {
331
+ n .Dump (source , 0 )
332
+ if n .Attributes () != nil {
333
+ _ , _ = w .WriteString ("<li" )
334
+ html .RenderAttributes (w , n , html .ListItemAttributeFilter )
335
+ _ = w .WriteByte ('>' )
336
+ } else {
337
+ _ , _ = w .WriteString ("<li>" )
338
+ }
339
+ end := ">"
340
+ if r .XHTML {
341
+ end = " />"
342
+ }
343
+ var err error
344
+ if n .IsChecked {
345
+ _ , err = w .WriteString (`<span class="ui checked checkbox"><input type="checkbox" checked="" readonly="readonly"` + end + `<label>` )
346
+ } else {
347
+ _ , err = w .WriteString (`<span class="ui checkbox"><input type="checkbox" readonly="readonly"` + end + `<label>` )
348
+ }
349
+ if err != nil {
350
+ return ast .WalkStop , err
351
+ }
352
+ fc := n .FirstChild ()
353
+ if fc != nil {
354
+ if _ , ok := fc .(* ast.TextBlock ); ! ok {
355
+ _ = w .WriteByte ('\n' )
356
+ }
357
+ }
327
358
} else {
328
- _ , err = w .WriteString (`<span class="ui checked fitted disabled checkbox"><input type="checkbox" checked="" disabled="disabled"` + end + `<label` + end + `</span>` )
329
- }
330
- if err != nil {
331
- return ast .WalkStop , err
359
+ _ , _ = w .WriteString ("</label></span></li>\n " )
332
360
}
333
361
return ast .WalkContinue , nil
334
362
}
363
+
364
+ func (r * HTMLRenderer ) renderTaskCheckBox (w util.BufWriter , source []byte , node ast.Node , entering bool ) (ast.WalkStatus , error ) {
365
+ return ast .WalkContinue , nil
366
+ }
0 commit comments