Improved soundtrack editing
This commit is contained in:
@ -27,14 +27,17 @@ func Edit(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",
|
||||
},
|
||||
}
|
||||
|
||||
return ctx.HTML(EditForm(track, "Edit soundtrack"))
|
||||
if track.MainAnime() != nil {
|
||||
ctx.Data.(*arn.OpenGraph).Tags["og:image"] = track.MainAnime().Image.Large
|
||||
}
|
||||
|
||||
return ctx.HTML(components.SoundTrackTabs(track) + EditForm(track, "Edit soundtrack"))
|
||||
}
|
||||
|
||||
// EditForm ...
|
||||
@ -43,10 +46,11 @@ func EditForm(obj interface{}, title string) string {
|
||||
v := reflect.ValueOf(obj).Elem()
|
||||
id := reflect.Indirect(v.FieldByName("ID"))
|
||||
lowerCaseTypeName := strings.ToLower(t.Name())
|
||||
endpoint := `/api/` + lowerCaseTypeName + `/` + id.String()
|
||||
|
||||
var b bytes.Buffer
|
||||
b.WriteString(`<div class="widget-form">`)
|
||||
b.WriteString(`<div class="widget" data-api="/api/` + lowerCaseTypeName + `/` + id.String() + `">`)
|
||||
b.WriteString(`<div class="widget" data-api="` + endpoint + `">`)
|
||||
b.WriteString(`<h1>`)
|
||||
b.WriteString(title)
|
||||
b.WriteString(`</h1>`)
|
||||
@ -86,14 +90,22 @@ func RenderField(b *bytes.Buffer, v *reflect.Value, field reflect.StructField, i
|
||||
b.WriteString(components.InputTags(idPrefix+field.Name, fieldValue.Interface().([]string), field.Name))
|
||||
case "[]*arn.ExternalMedia":
|
||||
for sliceIndex := 0; sliceIndex < fieldValue.Len(); sliceIndex++ {
|
||||
b.WriteString(`<div class="widget-section">`)
|
||||
b.WriteString(`<div class="widget-title">` + strconv.Itoa(sliceIndex+1) + ". " + field.Name + `</div>`)
|
||||
|
||||
arrayObj := fieldValue.Index(sliceIndex).Interface()
|
||||
arrayIDPrefix := fmt.Sprintf("%s[%d].", field.Name, sliceIndex)
|
||||
RenderObject(b, arrayObj, arrayIDPrefix)
|
||||
|
||||
// Preview
|
||||
b.WriteString(components.ExternalMedia(fieldValue.Index(sliceIndex).Interface().(*arn.ExternalMedia)))
|
||||
|
||||
// Remove button
|
||||
b.WriteString(`<div class="buttons"><button class="action" data-action="arrayRemove" data-trigger="click" data-field="` + field.Name + `" data-index="`)
|
||||
b.WriteString(strconv.Itoa(sliceIndex))
|
||||
b.WriteString(`">` + utils.RawIcon("trash") + `</button></div>`)
|
||||
|
||||
b.WriteString(`</div>`)
|
||||
}
|
||||
|
||||
b.WriteString(`<div class="buttons"><button class="action" data-action="arrayAppend" data-trigger="click" data-field="` + field.Name + `">` + utils.Icon("plus") + `Add ` + field.Name + `</button></div>`)
|
||||
|
@ -1,8 +1,29 @@
|
||||
component Track(track *arn.SoundTrack)
|
||||
h1= track.Title
|
||||
SoundTrackTabs(track)
|
||||
|
||||
if track.Title == ""
|
||||
h1 untitled
|
||||
else
|
||||
h1= track.Title
|
||||
|
||||
.sound-tracks
|
||||
SoundTrackAllMedia(track)
|
||||
|
||||
p
|
||||
a.ajax(href=track.Link() + "/edit") Edit
|
||||
|
||||
.footer.text-center
|
||||
if track.EditedBy != ""
|
||||
span Edited
|
||||
span.utc-date(data-date=track.Edited)
|
||||
span by
|
||||
span= track.EditedByUser().Nick
|
||||
else
|
||||
span Posted
|
||||
span.utc-date(data-date=track.Created)
|
||||
span by
|
||||
span= track.CreatedByUser().Nick
|
||||
|
||||
span .
|
||||
|
||||
component SoundTrackTabs(track *arn.SoundTrack)
|
||||
.tabs
|
||||
Tab("Soundtrack", "music", track.Link())
|
||||
Tab("Edit", "pencil", track.Link() + "/edit")
|
Reference in New Issue
Block a user