Fix tag backgrounds
This commit is contained in:
parent
e0efe6caca
commit
150df2435d
|
@ -124,6 +124,7 @@ func ParseAlbum(data gjson.Result) (Album, error) {
|
||||||
Tag: value.Get("tag").String(),
|
Tag: value.Get("tag").String(),
|
||||||
Display: value.Get("display").String(),
|
Display: value.Get("display").String(),
|
||||||
Background: "/" + value.Get("background_id").String() + ".webp",
|
Background: "/" + value.Get("background_id").String() + ".webp",
|
||||||
|
BackgroundId: value.Get("background_id").String(),
|
||||||
})
|
})
|
||||||
return true
|
return true
|
||||||
},
|
},
|
||||||
|
|
|
@ -19,6 +19,7 @@ type Tag struct {
|
||||||
PostCount int64
|
PostCount int64
|
||||||
Posts []Submission
|
Posts []Submission
|
||||||
Background string
|
Background string
|
||||||
|
BackgroundId string
|
||||||
}
|
}
|
||||||
|
|
||||||
var tagCache = cache.New(15*time.Minute, 15*time.Minute)
|
var tagCache = cache.New(15*time.Minute, 15*time.Minute)
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package pages
|
package pages
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"crypto/rand"
|
||||||
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"codeberg.org/video-prize-ranch/rimgo/api"
|
"codeberg.org/video-prize-ranch/rimgo/api"
|
||||||
|
@ -11,7 +13,6 @@ import (
|
||||||
func HandlePost(c *fiber.Ctx) error {
|
func HandlePost(c *fiber.Ctx) error {
|
||||||
utils.SetHeaders(c)
|
utils.SetHeaders(c)
|
||||||
c.Set("X-Frame-Options", "DENY")
|
c.Set("X-Frame-Options", "DENY")
|
||||||
c.Set("Content-Security-Policy", "default-src 'none'; media-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; manifest-src 'self'; block-all-mixed-content")
|
|
||||||
|
|
||||||
post, err := api.Album{}, error(nil)
|
post, err := api.Album{}, error(nil)
|
||||||
switch {
|
switch {
|
||||||
|
@ -41,8 +42,19 @@ func HandlePost(c *fiber.Ctx) error {
|
||||||
c.Set("Cache-Control", "public,max-age=31557600")
|
c.Set("Cache-Control", "public,max-age=31557600")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nonce := ""
|
||||||
|
csp := "default-src 'none'; media-src 'self'; img-src 'self'; font-src 'self'; manifest-src 'self'; block-all-mixed-content; style-src 'self'"
|
||||||
|
if len(post.Tags) != 0 {
|
||||||
|
b := make([]byte, 8)
|
||||||
|
rand.Read(b)
|
||||||
|
nonce = fmt.Sprintf("%x", b)
|
||||||
|
csp = csp + " 'nonce-" + nonce + "'"
|
||||||
|
}
|
||||||
|
c.Set("Content-Security-Policy", csp)
|
||||||
|
|
||||||
return c.Render("post", fiber.Map{
|
return c.Render("post", fiber.Map{
|
||||||
"post": post,
|
"post": post,
|
||||||
"comments": comments,
|
"comments": comments,
|
||||||
|
"nonce": nonce,
|
||||||
})
|
})
|
||||||
}
|
}
|
|
@ -74,9 +74,14 @@
|
||||||
|
|
||||||
{{#if post.tags}}
|
{{#if post.tags}}
|
||||||
<div class="tags">
|
<div class="tags">
|
||||||
|
<style nonce="{{nonce}}">
|
||||||
|
{{#each post.tags}}
|
||||||
|
.{{this.BackgroundId}} { background-image: url('{{this.Background}}') }
|
||||||
|
{{/each}}
|
||||||
|
</style>
|
||||||
{{#each post.tags}}
|
{{#each post.tags}}
|
||||||
<a href="/t/{{this.Tag}}">
|
<a href="/t/{{this.Tag}}">
|
||||||
<div class="tag" style="background-image: url('{{this.Background}}');">
|
<div class="tag {{this.BackgroundId}}">
|
||||||
<p class="tag__display">{{this.Display}}</p>
|
<p class="tag__display">{{this.Display}}</p>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
|
Loading…
Reference in New Issue