a mini social media app for small communities
1@include 'partial/header.html'
2
3<script src="/static/js/post.js"></script>
4
5<div class="post post-full">
6 <h2><a href="/user/@{(app.get_user_by_id(post.author_id) or { app.get_unknown_user() }).username}"><strong>@{(app.get_user_by_id(post.author_id) or { app.get_unknown_user() }).get_name()}</strong></a> - @post.title</h2>
7 <pre id="post-@{post.id}">@post.body</pre>
8 <p><em>likes: @{app.get_net_likes_for_post(post.id)}</em></p>
9 <p><em>posted at: @post.posted_at</em></p>
10
11 @if ctx.is_logged_in()
12 <br>
13 <div>
14 <button onclick="like(@post.id)">
15 @if app.does_user_like_post(user.id, post.id)
16 liked :D
17 @else
18 like
19 @end
20 </button>
21 <button onclick="dislike(@post.id)">
22 @if app.does_user_dislike_post(user.id, post.id)
23 disliked D:
24 @else
25 dislike
26 @end
27 </button>
28 </div>
29 @end
30
31 @if (ctx.is_logged_in() && user.admin) || (ctx.is_logged_in() && post.author_id == user.id)
32 <hr>
33 @if user.admin
34 <h4>admin powers:</h4>
35 @else if post.author_id == user.id
36 <h4>manage post:</h4>
37 @end
38 <form action="/api/post/delete" method="post">
39 <input
40 type="number"
41 name="id"
42 id="id"
43 placeholder="post id"
44 value="@post.id"
45 required
46 readonly
47 hidden
48 aria-hidden
49 >
50 <input type="submit" value="delete">
51 </form>
52 @end
53</div>
54
55<script type="module">
56 await render_post_body(@{post.id}, '@@\\(@{app.config.user.username_pattern}\\)')
57</script>
58
59@include 'partial/footer.html'