Files
soundcloak/templates/playlist.templ
2024-10-08 00:05:52 +03:00

99 lines
2.6 KiB
Plaintext

package templates
import (
"github.com/maid-zone/soundcloak/lib/sc"
"net/url"
"strconv"
"strings"
)
templ PlaylistHeader(p sc.Playlist) {
<meta name="og:site_name" content={ p.Author.Username + " ~ soundcloak" }/>
<meta name="og:title" content={ p.Title }/>
<meta name="og:description" content={ p.FormatDescription() }/>
<meta name="og:image" content={ p.Artwork }/>
<link rel="icon" type="image/x-icon" href={ p.Artwork }/>
}
templ Playlist(p sc.Playlist) {
if p.Artwork != "" {
<img src={ p.Artwork } width="300px"/>
}
<h1>{ p.Title }</h1>
<a class="listing" href={ templ.URL("/" + p.Author.Permalink) }>
<img src={ p.Author.Avatar }/>
<div class="meta">
<h3>{ p.Author.Username }</h3>
if p.Author.FullName != "" {
<span>{ p.Author.FullName }</span>
}
</div>
</a>
if p.Description != "" {
<details>
<summary>Toggle description</summary>
<p style="white-space: pre-wrap">{ p.Description }</p>
</details>
}
<p>{ strconv.FormatInt(p.TrackCount, 10) } tracks</p>
<br/>
<br/>
<div>
for _, track := range p.Tracks {
if track.Title != "" {
<a class="listing" href={ templ.URL("/" + track.Author.Permalink + "/" + track.Permalink) }>
if track.Artwork != "" {
<img src={ track.Artwork }/>
} else {
<img src="/placeholder.jpg"/>
}
<div class="meta">
<h3>{ track.Title }</h3>
<span>{ track.Author.Username }</span>
</div>
</a>
}
}
</div>
if len(p.MissingTracks) != 0 {
<a class="btn" href={ templ.URL("?pagination=" + url.QueryEscape(p.MissingTracks)) } rel="noreferrer">more tracks</a>
}
<div>
if p.TagList != "" {
<p>Tags: { strings.Join(sc.TagListParser(p.TagList), ", ") }</p>
}
<p>{ strconv.FormatInt(p.Likes, 10) } likes</p>
<br/>
<p>Created: { p.CreatedAt }</p>
<p>Last modified: { p.LastModified }</p>
</div>
}
templ SearchPlaylists(p *sc.Paginated[*sc.Playlist]) {
<span>Found { strconv.FormatInt(p.Total, 10) } playlists</span>
<br/>
<br/>
if len(p.Collection) == 0 {
if p.Total != 0 {
<p>no more results</p>
}
} else {
for _, playlist := range p.Collection {
<a class="listing" href={ templ.URL("/" + playlist.Author.Permalink + "/sets/" + playlist.Permalink) }>
if playlist.Artwork != "" {
<img src={ playlist.Artwork }/>
} else {
<img src="/placeholder.jpg"/>
}
<div class="meta">
<h3>{ playlist.Title }</h3>
<span>{ playlist.Author.Username }</span>
</div>
</a>
}
}
if p.Total != 0 && len(p.Collection) != 0 && p.Next != "" {
<a class="btn" href={ templ.URL("?type=playlists&pagination=" + url.QueryEscape(strings.Split(p.Next, "/playlists")[1])) } rel="noreferrer">more playlists</a>
}
}