blob: f1c2deb3cdf62c8cf4b0217254628e2e920d97ad (
plain) (
tree)
|
|
package views
import (
"context"
"fmt"
"gitrepo.ru/neonxp/gorum/contextlib"
"gitrepo.ru/neonxp/gorum/models"
)
templ Layout(parent *models.Node) {
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="color-scheme" content="light dark"/>
<link rel="stylesheet" href={ "/assets/css/pico." + ctx.Value(contextlib.ThemeKey).(string) + ".min.css" }/>
<link rel="stylesheet" href="/assets/css/style.css"/>
<title>Gorum</title>
</head>
<body>
<nav class="container-fluid">
<ul>
<li>
<strong>Gorum BBS</strong>
</li>
if parent != nil {
<li>
<a href="/">Список тем</a>
</li>
<li>
switch parent.Type {
case models.PostType:
<a href={ templ.URL(fmt.Sprintf("/p/%d", parent.ID)) }>На уровень выше</a>
case models.TopicType:
<a href={ templ.URL(fmt.Sprintf("/t/%d", parent.ID)) }>К предыдущей теме</a>
}
</li>
} else {
<li>
<a href="/">Список тем</a>
</li>
}
</ul>
<ul>
if isAuthorized(ctx) {
// <li><a href="/topic/new">Новая тема</a></li>
<li>{ getUser(ctx).Username }</li>
<li><form action="/logout" method="POST"><input type="submit" value="Выход"/></form></li>
} else {
<li><a href="/login">Вход</a></li>
<li><a href="/register">Регистрация</a></li>
}
</ul>
</nav>
<main class="container">
{ children... }
</main>
<footer class="container-fluid">
<small>Работает на <a href="https://neonxp.ru/gorum">Gorum</a>.</small>
</footer>
</body>
</html>
}
func isAuthorized(ctx context.Context) bool {
_, authorized := ctx.Value(contextlib.UserKey).(models.User)
return authorized
}
func getUser(ctx context.Context) models.User {
return ctx.Value(contextlib.UserKey).(models.User)
}
|