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'