Improved soundtracks
This commit is contained in:
@ -23,7 +23,9 @@ func Get(ctx *aero.Context) string {
|
||||
return ctx.Error(http.StatusNotFound, "Anime not found", err)
|
||||
}
|
||||
|
||||
tracks, err := arn.GetSoundTracksByTag("anime:" + anime.ID)
|
||||
tracks, err := arn.FilterSoundTracks(func(track *arn.SoundTrack) bool {
|
||||
return !track.IsDraft && len(track.Media) > 0 && arn.Contains(track.Tags, "anime:"+anime.ID)
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return ctx.Error(http.StatusNotFound, "Error fetching soundtracks", err)
|
||||
|
@ -19,7 +19,9 @@ func GetSoundTracksByUser(ctx *aero.Context) string {
|
||||
return ctx.Error(http.StatusNotFound, "User not found", err)
|
||||
}
|
||||
|
||||
tracks, err := arn.GetSoundTracksByUser(viewUser)
|
||||
tracks, err := arn.FilterSoundTracks(func(track *arn.SoundTrack) bool {
|
||||
return !track.IsDraft && len(track.Media) > 0 && track.CreatedBy == viewUser.ID
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return ctx.Error(http.StatusInternalServerError, "Error fetching soundtracks", err)
|
||||
|
@ -89,7 +89,15 @@ func RenderField(b *bytes.Buffer, v *reflect.Value, field reflect.StructField, i
|
||||
case "string":
|
||||
b.WriteString(components.InputText(idPrefix+field.Name, fieldValue.String(), field.Name, ""))
|
||||
case "[]string":
|
||||
b.WriteString(components.InputTags(idPrefix+field.Name, fieldValue.Interface().([]string), field.Name))
|
||||
b.WriteString(components.InputTags(idPrefix+field.Name, fieldValue.Interface().([]string), field.Name, field.Tag.Get("tooltip")))
|
||||
case "bool":
|
||||
if field.Name == "IsDraft" {
|
||||
if fieldValue.Bool() {
|
||||
b.WriteString(`<div class="buttons"><button class="action" data-action="publish" data-trigger="click">` + utils.Icon("unlock-alt") + `Publish</button></div>`)
|
||||
} else {
|
||||
b.WriteString(`<div class="buttons"><button class="action" data-action="unpublish" data-trigger="click">` + utils.Icon("lock") + `Unpublish</button></div>`)
|
||||
}
|
||||
}
|
||||
case "[]*arn.ExternalMedia":
|
||||
for sliceIndex := 0; sliceIndex < fieldValue.Len(); sliceIndex++ {
|
||||
b.WriteString(`<div class="widget-section">`)
|
||||
|
@ -20,12 +20,15 @@ func Get(ctx *aero.Context) string {
|
||||
ctx.Data = &arn.OpenGraph{
|
||||
Tags: map[string]string{
|
||||
"og:title": track.Title,
|
||||
"og:image": track.MainAnime().Image.Large,
|
||||
"og:url": "https://" + ctx.App.Config.Domain + track.Link(),
|
||||
"og:site_name": "notify.moe",
|
||||
"og:type": "music.song",
|
||||
},
|
||||
}
|
||||
|
||||
if track.MainAnime() != nil {
|
||||
ctx.Data.(*arn.OpenGraph).Tags["og:image"] = track.MainAnime().Image.Large
|
||||
}
|
||||
|
||||
return ctx.HTML(components.Track(track))
|
||||
}
|
||||
|
@ -13,6 +13,12 @@ component Track(track *arn.SoundTrack)
|
||||
h3.widget-title= media.Service
|
||||
.sound-track-media
|
||||
ExternalMedia(media)
|
||||
|
||||
.widget.mountable
|
||||
h3.widget-title Tags
|
||||
ul
|
||||
each tag in track.Tags
|
||||
li= tag
|
||||
|
||||
.footer.text-center.mountable
|
||||
if track.EditedBy != ""
|
||||
|
@ -13,7 +13,7 @@ const maxTracks = 9
|
||||
// Get renders the soundtracks page.
|
||||
func Get(ctx *aero.Context) string {
|
||||
tracks, err := arn.FilterSoundTracks(func(track *arn.SoundTrack) bool {
|
||||
return !track.IsDraft
|
||||
return !track.IsDraft && len(track.Media) > 0
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
|
@ -2,7 +2,7 @@ component SoundTracks(tracks []*arn.SoundTrack)
|
||||
h1 Soundtracks
|
||||
|
||||
.music-buttons
|
||||
a.button.ajax(href="/new/soundtrack")
|
||||
a.button.action(data-action="newSoundTrack", data-trigger="click")
|
||||
Icon("plus")
|
||||
span Add soundtrack
|
||||
|
||||
|
Reference in New Issue
Block a user