Started working on thread view

This commit is contained in:
Eduard Urbach 2016-11-19 17:49:00 +09:00
parent b5be7e9cef
commit 95ddd6774b
4 changed files with 73 additions and 2 deletions

View File

@ -21,7 +21,7 @@ component ForumHeader
a.ajax(href="/forum/bug") Bugs a.ajax(href="/forum/bug") Bugs
component ThreadLink(thread *arn.Thread) component ThreadLink(thread *arn.Thread)
.thread(data-stick=toString(thread.Sticky)) .thread-link(data-sticky=thread.Sticky)
.post-author.thread-author .post-author.thread-author
Avatar(thread.Author) Avatar(thread.Author)
.thread-content-container .thread-content-container

View File

@ -2,7 +2,7 @@
text-align left text-align left
margin-bottom 1.5rem margin-bottom 1.5rem
.thread .thread-link
display flex display flex
flex-flow row flex-flow row
width 100% width 100%

View File

@ -0,0 +1,54 @@
component Thread(thread *arn.Thread)
.thread
h2.thread-title= thread.Title
.posts
Post(thread.ToPostable(), nil, "Threads", "Thread", thread.AuthorID)
//- +renderMessage(thread, user, "Threads", thread.author.ID)
//- each post in posts
//- +renderMessage(post, user, "Posts", thread.author.ID)
component Post(post arn.Postable, viewUser *arn.User, postType string, postTypeSingular string, highlightAuthorID string)
.post(class=[]string{"", "special-post"}[post.Author().ID == highlightAuthorID])
.post-author
Avatar(post.Author())
//- if post.recipient && post.recipient.ID !== post.author.ID
//- a.user.post-recipient(href="/+" + post.recipient.nick, title=post.recipient.nick)
//- img.user-image(src=post.recipient.avatar ? (post.recipient.avatar + "?s=100&r=x&d=mm") : "/images/elements/no-gravatar.svg", alt=post.recipient.nick)
.post-content
div(id="render-" + post.ID())!= aero.Markdown(post.Text())
//- if user && user.ID === post.authorId
//- textarea.post-input.hidden(id="source-" + post.ID)= post.text
//- a.post-save.hidden(id="save-" + post.ID, onclick=`$.saveEdit("${type.toLowerCase()}", "${post.ID}")`)
//- i.fa.fa-save
//- span Save
.post-toolbar(id="toolbar-" + post.ID())
.spacer
.post-likes(id="likes-" + post.ID())= len(post.Likes())
//- if user != nil
//- if user.ID !== post.authorId
//- - var liked = post.likes && post.likes.indexOf(user.ID) !== -1
//- a.post-tool.post-like(id="like-" + post.ID, onclick=`$.like("${type.toLowerCase()}", "${post.ID}")`, title="Like", class=liked ? "hidden" : ")
//- i.fa.fa-thumbs-up.fa-fw
//- a.post-tool.post-unlike(id="unlike-" + post.ID, onclick=`$.unlike("${type.toLowerCase()}", "${post.ID}")`, title="Unlike", class=!liked ? "hidden" : ")
//- i.fa.fa-thumbs-down.fa-fw
//- if type === "Posts" || type === "Threads"
//- if user.ID === post.authorId
//- a.post-tool.post-edit(onclick=`$.edit("${post.ID}")`, title="Edit")
//- i.fa.fa-pencil.fa-fw
//- if type !== "Threads"
//- a.post-tool.post-permalink.ajax(href="/" + type.toLowerCase() + "/" + post.ID, title="Permalink")
//- i.fa.fa-link.fa-fw
//- if type === "Messages" && user && (user.ID === post.authorId || user.ID === post.recipientId)
//- a.post-tool.post-delete(onclick=`if(confirm("Do you really want to delete this ${typeSingular.toLowerCase()} from ${post.author.nick}?")) $.delete${typeSingular}("${post.ID}")`, title="Delete")
//- i.fa.fa-trash.fa-fw

View File

@ -1,6 +1,8 @@
package main package main
import ( import (
"sort"
"github.com/aerogo/aero" "github.com/aerogo/aero"
"github.com/animenotifier/arn" "github.com/animenotifier/arn"
"github.com/animenotifier/notify.moe/components" "github.com/animenotifier/notify.moe/components"
@ -45,6 +47,8 @@ func init() {
tag := ctx.Get("tag") tag := ctx.Get("tag")
threads, _ := arn.GetThreadsByTag(tag) threads, _ := arn.GetThreadsByTag(tag)
sort.Sort(threads)
if len(threads) > threadsPerPage { if len(threads) > threadsPerPage {
threads = threads[:threadsPerPage] threads = threads[:threadsPerPage]
} }
@ -58,4 +62,17 @@ func init() {
app.Ajax("/forum", forumHandler) app.Ajax("/forum", forumHandler)
app.Ajax("/forum/:tag", forumHandler) app.Ajax("/forum/:tag", forumHandler)
app.Ajax("/threads/:id", func(ctx *aero.Context) string {
id := ctx.Get("id")
thread, err := arn.GetThread(id)
if err != nil {
return ctx.Text("Thread not found")
}
thread.Author, _ = arn.GetUser(thread.AuthorID)
return ctx.HTML(components.Thread(thread))
})
} }