a mini social media app for small communities
1@include 'partial/header.html'
2
3<script src="/static/js/post.js"></script>
4<script src="/static/js/render_body.js"></script>
5
6<div class="post post-full">
7 <h2>
8 <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>
9 -
10 @if replying_to_post.id == 0
11 @post.title
12 @else
13 replied to <a href="/user/@{replying_to_user.username}">@{replying_to_user.get_name()}</a>
14 @end
15 </h2>
16 <pre id="post-@{post.id}">@post.body</pre>
17 <p><em>likes: @{app.get_net_likes_for_post(post.id)}</em></p>
18 <p><em>posted at: @post.posted_at</em></p>
19
20 @if ctx.is_logged_in()
21 <p><a href="/post/@{post.id}/reply">reply</a></p>
22 @end
23
24 @if ctx.is_logged_in() && post.author_id == user.id
25 <p><a href="/post/@{post.id}/edit">edit post</a></p>
26 @end
27
28 @if ctx.is_logged_in()
29 <br>
30 <div>
31 <button onclick="like(@post.id)">
32 @if app.does_user_like_post(user.id, post.id)
33 liked :D
34 @else
35 like
36 @end
37 </button>
38 <button onclick="dislike(@post.id)">
39 @if app.does_user_dislike_post(user.id, post.id)
40 disliked D:
41 @else
42 dislike
43 @end
44 </button>
45 </div>
46 @end
47
48 @if ctx.is_logged_in() && (post.author_id == user.id || user.admin)
49 <br>
50 <div>
51
52 @if post.author_id == user.id
53 <h4>manage post:</h4>
54 @else if user.admin
55 <h4>admin powers:</h4>
56 @end
57
58 <form action="/api/post/delete" method="post">
59 <input
60 type="number"
61 name="id"
62 id="id"
63 placeholder="post id"
64 value="@post.id"
65 required
66 readonly
67 hidden
68 aria-hidden
69 >
70 <input type="submit" value="delete">
71 </form>
72
73 @if user.admin
74 <form action="/api/post/pin" method="post">
75 <input
76 type="number"
77 name="id"
78 id="id"
79 placeholder="post id"
80 value="@post.id"
81 required
82 readonly
83 hidden
84 aria-hidden
85 >
86 <input type="submit" value="pin">
87 </form>
88 @end
89
90 </div>
91 @end
92</div>
93
94<script type="module">
95 await render_body('post-@{post.id}')
96</script>
97
98@include 'partial/footer.html'