fix inline imgs so they don't lose the donks
This commit is contained in:
parent
37fd41892e
commit
b4901ad975
|
@ -826,7 +826,7 @@ func xonksaver(user *WhatAbout, item junk.Junk, origin string) *Honk {
|
||||||
|
|
||||||
// grab any inline imgs
|
// grab any inline imgs
|
||||||
imgfilt := htfilter.New()
|
imgfilt := htfilter.New()
|
||||||
imgfilt.Imager = inlineimgs
|
imgfilt.Imager = inlineimgsfor(&xonk)
|
||||||
imgfilt.String(content)
|
imgfilt.String(content)
|
||||||
|
|
||||||
// init xonk
|
// init xonk
|
||||||
|
|
39
fun.go
39
fun.go
|
@ -31,6 +31,7 @@ import (
|
||||||
"humungus.tedunangst.com/r/webs/cache"
|
"humungus.tedunangst.com/r/webs/cache"
|
||||||
"humungus.tedunangst.com/r/webs/htfilter"
|
"humungus.tedunangst.com/r/webs/htfilter"
|
||||||
"humungus.tedunangst.com/r/webs/httpsig"
|
"humungus.tedunangst.com/r/webs/httpsig"
|
||||||
|
"humungus.tedunangst.com/r/webs/templates"
|
||||||
)
|
)
|
||||||
|
|
||||||
var allowedclasses = make(map[string]bool)
|
var allowedclasses = make(map[string]bool)
|
||||||
|
@ -48,9 +49,6 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func reverbolate(userid int64, honks []*Honk) {
|
func reverbolate(userid int64, honks []*Honk) {
|
||||||
filt := htfilter.New()
|
|
||||||
filt.Imager = replaceimg
|
|
||||||
filt.SpanClasses = allowedclasses
|
|
||||||
for _, h := range honks {
|
for _, h := range honks {
|
||||||
h.What += "ed"
|
h.What += "ed"
|
||||||
if h.What == "tonked" {
|
if h.What == "tonked" {
|
||||||
|
@ -91,7 +89,11 @@ func reverbolate(userid int64, honks []*Honk) {
|
||||||
h.Noise = demoji(h.Noise)
|
h.Noise = demoji(h.Noise)
|
||||||
h.Open = "open"
|
h.Open = "open"
|
||||||
|
|
||||||
|
zap := make(map[string]bool)
|
||||||
{
|
{
|
||||||
|
filt := htfilter.New()
|
||||||
|
filt.Imager = replaceimgsand(zap)
|
||||||
|
filt.SpanClasses = allowedclasses
|
||||||
p, _ := filt.String(h.Precis)
|
p, _ := filt.String(h.Precis)
|
||||||
n, _ := filt.String(h.Noise)
|
n, _ := filt.String(h.Noise)
|
||||||
h.Precis = string(p)
|
h.Precis = string(p)
|
||||||
|
@ -115,11 +117,10 @@ func reverbolate(userid int64, honks []*Honk) {
|
||||||
h.Open = ""
|
h.Open = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
zap := make(map[*Donk]bool)
|
|
||||||
emuxifier := func(e string) string {
|
emuxifier := func(e string) string {
|
||||||
for _, d := range h.Donks {
|
for _, d := range h.Donks {
|
||||||
if d.Name == e {
|
if d.Name == e {
|
||||||
zap[d] = true
|
zap[d.XID] = true
|
||||||
if d.Local {
|
if d.Local {
|
||||||
return fmt.Sprintf(`<img class="emu" title="%s" src="/d/%s">`, d.Name, d.XID)
|
return fmt.Sprintf(`<img class="emu" title="%s" src="/d/%s">`, d.Name, d.XID)
|
||||||
}
|
}
|
||||||
|
@ -132,7 +133,7 @@ func reverbolate(userid int64, honks []*Honk) {
|
||||||
|
|
||||||
j := 0
|
j := 0
|
||||||
for i := 0; i < len(h.Donks); i++ {
|
for i := 0; i < len(h.Donks); i++ {
|
||||||
if !zap[h.Donks[i]] {
|
if !zap[h.Donks[i].XID] {
|
||||||
h.Donks[j] = h.Donks[i]
|
h.Donks[j] = h.Donks[i]
|
||||||
j++
|
j++
|
||||||
}
|
}
|
||||||
|
@ -144,40 +145,36 @@ func reverbolate(userid int64, honks []*Honk) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func replaceimg(node *html.Node) string {
|
func replaceimgsand(zap map[string]bool) func(node *html.Node) string {
|
||||||
|
return func(node *html.Node) string {
|
||||||
src := htfilter.GetAttr(node, "src")
|
src := htfilter.GetAttr(node, "src")
|
||||||
alt := htfilter.GetAttr(node, "alt")
|
alt := htfilter.GetAttr(node, "alt")
|
||||||
//title := GetAttr(node, "title")
|
//title := GetAttr(node, "title")
|
||||||
if htfilter.HasClass(node, "Emoji") && alt != "" {
|
if htfilter.HasClass(node, "Emoji") && alt != "" {
|
||||||
return alt
|
return alt
|
||||||
}
|
}
|
||||||
alt = html.EscapeString(alt)
|
|
||||||
src = html.EscapeString(src)
|
|
||||||
d := finddonk(src)
|
d := finddonk(src)
|
||||||
if d != nil {
|
if d != nil {
|
||||||
src = fmt.Sprintf("https://%s/d/%s", serverName, d.XID)
|
zap[d.XID] = true
|
||||||
return fmt.Sprintf(`<img alt="%s" title="%s" src="%s">`, alt, alt, src)
|
return string(templates.Sprintf(`<img alt="%s" title="%s" src="/d/%s">`, alt, alt, d.XID))
|
||||||
|
}
|
||||||
|
return string(templates.Sprintf(`<img alt="%s" src="<a href="%s">%s<a>">`, alt, src, src))
|
||||||
}
|
}
|
||||||
return fmt.Sprintf(`<img alt="%s" src="<a href="%s">%s<a>">`, alt, src, src)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func inlineimgs(node *html.Node) string {
|
func inlineimgsfor(honk *Honk) func(node *html.Node) string {
|
||||||
|
return func(node *html.Node) string {
|
||||||
src := htfilter.GetAttr(node, "src")
|
src := htfilter.GetAttr(node, "src")
|
||||||
alt := htfilter.GetAttr(node, "alt")
|
alt := htfilter.GetAttr(node, "alt")
|
||||||
//title := GetAttr(node, "title")
|
|
||||||
if htfilter.HasClass(node, "Emoji") && alt != "" {
|
|
||||||
return alt
|
|
||||||
}
|
|
||||||
alt = html.EscapeString(alt)
|
|
||||||
src = html.EscapeString(src)
|
|
||||||
if !strings.HasPrefix(src, "https://"+serverName+"/") {
|
if !strings.HasPrefix(src, "https://"+serverName+"/") {
|
||||||
d := savedonk(src, "image", alt, "image", true)
|
d := savedonk(src, "image", alt, "image", true)
|
||||||
if d != nil {
|
if d != nil {
|
||||||
src = fmt.Sprintf("https://%s/d/%s", serverName, d.XID)
|
honk.Donks = append(honk.Donks, d)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.Printf("inline img with src: %s", src)
|
log.Printf("inline img with src: %s", src)
|
||||||
return fmt.Sprintf(`<img alt="%s" title="%s" src="%s>`, alt, alt, src)
|
return ""
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func translate(honk *Honk) {
|
func translate(honk *Honk) {
|
||||||
|
|
Loading…
Reference in New Issue