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'