diff options
Diffstat (limited to 'views/nodes.templ')
-rw-r--r-- | views/nodes.templ | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/views/nodes.templ b/views/nodes.templ new file mode 100644 index 0000000..c9baf2e --- /dev/null +++ b/views/nodes.templ @@ -0,0 +1,82 @@ +package views + +import ( + "fmt" + "gitrepo.ru/neonxp/gorum/models" + "gitrepo.ru/neonxp/gorum/utils" +) + +templ Node(node *models.Node, nodes []*models.Node, count int) { + @Layout() { + <h1>{ node.Text }</h1> + <table> + <thead> + <tr> + <th>Тема</th> + <th>Дата</th> + <th>Автор</th> + </tr> + </thead> + <tbody> + for _, n := range nodes { + if n.Type == models.TopicType { + @Topic(n) + } + } + if len(nodes) == 0 { + <tr> + <td colspan="3"> + <strong>Тем нет</strong> + </td> + </tr> + } + </tbody> + </table> + if len(nodes) == 0 { + <strong>Постов нет</strong> + } + for _, n := range nodes { + if n.Type == models.PostType { + @Post(n) + } + } + if isAuthorized(ctx) { + @NewNode(node) + } else { + <a href="/login">Войдите</a> чтобы ответить в тему. + } + } +} + +templ Topic(n *models.Node) { + <tr> + <td> + <a href={ templ.URL(fmt.Sprintf("/n/%d", n.ID)) }>{ n.Text }</a> + </td> + <td> + { utils.FormatDate(n.CreatedAt) } + </td> + <td> + { n.Author.Username } + </td> + </tr> +} + +templ Post(n *models.Node) { + <article id={ fmt.Sprintf("post%d", n.ID) }> + <header class="post-header"> + <span>Пост</span> + <span> + { n.Author.Username } + в + { utils.FormatDate(n.CreatedAt) } + <a + href={ templ.URL(fmt.Sprintf("/n/%d#post%d", n.ParentID, n.ID)) } + > + # + </a> + </span> + </header> + @templ.Raw(utils.MarkdownToHTML(n.Text)) + </article> +} |