Fix nil context in RenderMarkdownToHtml (#23092) (#23108)

Backport #23092

Fix #23082.

This bug is caused by a nil context in
https://github.com/go-gitea/gitea/issues/23082#issuecomment-1441276546 .

Co-authored-by: Zettat123 <zettat123@gmail.com>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
Yarden Shoham 2023-02-24 15:17:03 +02:00 committed by GitHub
parent 5ddf67a9c2
commit e02e752f68
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 24 additions and 23 deletions

View file

@ -174,8 +174,9 @@ func NewFuncMap() []template.FuncMap {
"RenderEmojiPlain": emoji.ReplaceAliases, "RenderEmojiPlain": emoji.ReplaceAliases,
"ReactionToEmoji": ReactionToEmoji, "ReactionToEmoji": ReactionToEmoji,
"RenderNote": RenderNote, "RenderNote": RenderNote,
"RenderMarkdownToHtml": func(input string) template.HTML { "RenderMarkdownToHtml": func(ctx context.Context, input string) template.HTML {
output, err := markdown.RenderString(&markup.RenderContext{ output, err := markdown.RenderString(&markup.RenderContext{
Ctx: ctx,
URLPrefix: setting.AppSubURL, URLPrefix: setting.AppSubURL,
}, input) }, input)
if err != nil { if err != nil {

View file

@ -26,7 +26,7 @@ git-fetch-with-cli = true</code></pre></div>
{{if or .PackageDescriptor.Metadata.Description .PackageDescriptor.Metadata.Readme}} {{if or .PackageDescriptor.Metadata.Description .PackageDescriptor.Metadata.Readme}}
<h4 class="ui top attached header">{{.locale.Tr "packages.about"}}</h4> <h4 class="ui top attached header">{{.locale.Tr "packages.about"}}</h4>
{{if .PackageDescriptor.Metadata.Description}}<div class="ui attached segment">{{.PackageDescriptor.Metadata.Description}}</div>{{end}} {{if .PackageDescriptor.Metadata.Description}}<div class="ui attached segment">{{.PackageDescriptor.Metadata.Description}}</div>{{end}}
{{if .PackageDescriptor.Metadata.Readme}}<div class="ui attached segment">{{RenderMarkdownToHtml .PackageDescriptor.Metadata.Readme}}</div>{{end}} {{if .PackageDescriptor.Metadata.Readme}}<div class="ui attached segment">{{RenderMarkdownToHtml $.Context .PackageDescriptor.Metadata.Readme}}</div>{{end}}
{{end}} {{end}}
{{if .PackageDescriptor.Metadata.Dependencies}} {{if .PackageDescriptor.Metadata.Dependencies}}

View file

@ -20,7 +20,7 @@
<h4 class="ui top attached header">{{.locale.Tr "packages.about"}}</h4> <h4 class="ui top attached header">{{.locale.Tr "packages.about"}}</h4>
<div class="ui attached segment"> <div class="ui attached segment">
{{if .PackageDescriptor.Metadata.Description}}<p>{{.PackageDescriptor.Metadata.Description}}</p>{{end}} {{if .PackageDescriptor.Metadata.Description}}<p>{{.PackageDescriptor.Metadata.Description}}</p>{{end}}
{{if .PackageDescriptor.Metadata.LongDescription}}{{RenderMarkdownToHtml .PackageDescriptor.Metadata.LongDescription}}{{end}} {{if .PackageDescriptor.Metadata.LongDescription}}{{RenderMarkdownToHtml $.Context .PackageDescriptor.Metadata.LongDescription}}{{end}}
</div> </div>
{{end}} {{end}}

View file

@ -25,7 +25,7 @@
<div class="ui attached segment"> <div class="ui attached segment">
{{if .PackageDescriptor.Metadata.Readme}} {{if .PackageDescriptor.Metadata.Readme}}
<div class="markup markdown"> <div class="markup markdown">
{{RenderMarkdownToHtml .PackageDescriptor.Metadata.Readme}} {{RenderMarkdownToHtml $.Context .PackageDescriptor.Metadata.Readme}}
</div> </div>
{{else if .PackageDescriptor.Metadata.Description}} {{else if .PackageDescriptor.Metadata.Description}}
{{.PackageDescriptor.Metadata.Description}} {{.PackageDescriptor.Metadata.Description}}

View file

@ -14,6 +14,6 @@
{{if or .PackageDescriptor.Metadata.Description .PackageDescriptor.Metadata.Readme}} {{if or .PackageDescriptor.Metadata.Description .PackageDescriptor.Metadata.Readme}}
<h4 class="ui top attached header">{{.locale.Tr "packages.about"}}</h4> <h4 class="ui top attached header">{{.locale.Tr "packages.about"}}</h4>
{{if .PackageDescriptor.Metadata.Description}}<div class="ui attached segment">{{.PackageDescriptor.Metadata.Description}}</div>{{end}} {{if .PackageDescriptor.Metadata.Description}}<div class="ui attached segment">{{.PackageDescriptor.Metadata.Description}}</div>{{end}}
{{if .PackageDescriptor.Metadata.Readme}}<div class="ui attached segment">{{RenderMarkdownToHtml .PackageDescriptor.Metadata.Readme}}</div>{{end}} {{if .PackageDescriptor.Metadata.Readme}}<div class="ui attached segment">{{RenderMarkdownToHtml $.Context .PackageDescriptor.Metadata.Readme}}</div>{{end}}
{{end}} {{end}}
{{end}} {{end}}

View file

@ -16,9 +16,9 @@
<div class="ui attached segment"> <div class="ui attached segment">
<p>{{if .PackageDescriptor.Metadata.Summary}}{{.PackageDescriptor.Metadata.Summary}}{{end}}</p> <p>{{if .PackageDescriptor.Metadata.Summary}}{{.PackageDescriptor.Metadata.Summary}}{{end}}</p>
{{if .PackageDescriptor.Metadata.LongDescription}} {{if .PackageDescriptor.Metadata.LongDescription}}
{{RenderMarkdownToHtml .PackageDescriptor.Metadata.LongDescription}} {{RenderMarkdownToHtml $.Context .PackageDescriptor.Metadata.LongDescription}}
{{else if .PackageDescriptor.Metadata.Description}} {{else if .PackageDescriptor.Metadata.Description}}
{{RenderMarkdownToHtml .PackageDescriptor.Metadata.Description}} {{RenderMarkdownToHtml $.Context .PackageDescriptor.Metadata.Description}}
{{end}} {{end}}
</div> </div>
{{end}} {{end}}

View file

@ -2,15 +2,15 @@
<input type="hidden" name="template-file" value="{{.TemplateFile}}"> <input type="hidden" name="template-file" value="{{.TemplateFile}}">
{{range .Fields}} {{range .Fields}}
{{if eq .Type "input"}} {{if eq .Type "input"}}
{{template "repo/issue/fields/input" .}} {{template "repo/issue/fields/input" Dict "Context" $.Context "item" .}}
{{else if eq .Type "markdown"}} {{else if eq .Type "markdown"}}
{{template "repo/issue/fields/markdown" .}} {{template "repo/issue/fields/markdown" Dict "Context" $.Context "item" .}}
{{else if eq .Type "textarea"}} {{else if eq .Type "textarea"}}
{{template "repo/issue/fields/textarea" .}} {{template "repo/issue/fields/textarea" Dict "Context" $.Context "item" .}}
{{else if eq .Type "dropdown"}} {{else if eq .Type "dropdown"}}
{{template "repo/issue/fields/dropdown" .}} {{template "repo/issue/fields/dropdown" Dict "Context" $.Context "item" .}}
{{else if eq .Type "checkboxes"}} {{else if eq .Type "checkboxes"}}
{{template "repo/issue/fields/checkboxes" .}} {{template "repo/issue/fields/checkboxes" Dict "Context" $.Context "item" .}}
{{end}} {{end}}
{{end}} {{end}}
{{else}} {{else}}

View file

@ -1,7 +1,7 @@
<div class="field"> <div class="field">
{{template "repo/issue/fields/header" .}} {{template "repo/issue/fields/header" .}}
{{$field := .}} {{$field := .}}
{{range $i, $opt := .Attributes.options}} {{range $i, $opt := .item.Attributes.options}}
<div class="field"> <div class="field">
<div class="ui checkbox"> <div class="ui checkbox">
<input type="checkbox" name="form-field-{{$field.ID}}-{{$i}}" {{if $opt.required}}readonly checked{{end}}> <input type="checkbox" name="form-field-{{$field.ID}}-{{$i}}" {{if $opt.required}}readonly checked{{end}}>

View file

@ -1,12 +1,12 @@
<div class="field"> <div class="field">
{{template "repo/issue/fields/header" .}} {{template "repo/issue/fields/header" .}}
{{/* FIXME: required validation */}} {{/* FIXME: required validation */}}
<div class="ui fluid selection dropdown {{if .Attributes.multiple}}multiple clearable{{end}}"> <div class="ui fluid selection dropdown {{if .item.Attributes.multiple}}multiple clearable{{end}}">
<input type="hidden" name="form-field-{{.ID}}" value="0"> <input type="hidden" name="form-field-{{.item.ID}}" value="0">
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="default text"></div> <div class="default text"></div>
<div class="menu"> <div class="menu">
{{range $i, $opt := .Attributes.options}} {{range $i, $opt := .item.Attributes.options}}
<div class="item" data-value="{{$i}}">{{$opt}}</div> <div class="item" data-value="{{$i}}">{{$opt}}</div>
{{end}} {{end}}
</div> </div>

View file

@ -1,6 +1,6 @@
{{if .Attributes.label}} {{if .item.Attributes.label}}
<h3>{{.Attributes.label}}{{if .Validations.required}}<label class="required"></label>{{end}}</h3> <h3>{{.item.Attributes.label}}{{if .item.Validations.required}}<label class="required"></label>{{end}}</h3>
{{end}} {{end}}
{{if .Attributes.description}} {{if .item.Attributes.description}}
<span class="help">{{RenderMarkdownToHtml .Attributes.description}}</span> <span class="help">{{RenderMarkdownToHtml .Context .item.Attributes.description}}</span>
{{end}} {{end}}

View file

@ -1,4 +1,4 @@
<div class="field"> <div class="field">
{{template "repo/issue/fields/header" .}} {{template "repo/issue/fields/header" .}}
<input type="{{if .Validations.is_number}}number{{else}}text{{end}}" name="form-field-{{.ID}}" placeholder="{{.Attributes.placeholder}}" value="{{.Attributes.value}}" {{if .Validations.required}}required{{end}} {{if .Validations.regex}}pattern="{{.Validations.regex}}" title="{{.Validations.regex}}"{{end}}> <input type="{{if .item.Validations.is_number}}number{{else}}text{{end}}" name="form-field-{{.item.ID}}" placeholder="{{.item.Attributes.placeholder}}" value="{{.item.Attributes.value}}" {{if .item.Validations.required}}required{{end}} {{if .item.Validations.regex}}pattern="{{.item.Validations.regex}}" title="{{.item.Validations.regex}}"{{end}}>
</div> </div>

View file

@ -1,3 +1,3 @@
<div class="field"> <div class="field">
<div>{{RenderMarkdownToHtml .Attributes.value}}</div> <div>{{RenderMarkdownToHtml .Context .item.Attributes.value}}</div>
</div> </div>

View file

@ -2,5 +2,5 @@
{{template "repo/issue/fields/header" .}} {{template "repo/issue/fields/header" .}}
{{/* FIXME: preview markdown result */}} {{/* FIXME: preview markdown result */}}
{{/* FIXME: required validation for markdown editor */}} {{/* FIXME: required validation for markdown editor */}}
<textarea name="form-field-{{.ID}}" placeholder="{{.Attributes.placeholder}}" class="edit_area {{if .Attributes.render}}no-easymde{{end}}" {{if and .Validations.required .Attributes.render}}required{{end}}>{{.Attributes.value}}</textarea> <textarea name="form-field-{{.item.ID}}" placeholder="{{.item.Attributes.placeholder}}" class="edit_area {{if .item.Attributes.render}}no-easymde{{end}}" {{if and .item.Validations.required .item.Attributes.render}}required{{end}}>{{.item.Attributes.value}}</textarea>
</div> </div>