Deletes obsolete question/answer/vote persistence and the compatibility answer endpoint. Existing databases drop the legacy tables through migration 009. Plumber replies now notify the root homeowner even when nested beneath another plumber reply. Post and reply forms prevent duplicate submissions and show progress while posting. Reviewed-on: #7 Co-authored-by: codegirl-007 <s.raide@gmail.com>
69 lines
2.7 KiB
HTML
69 lines
2.7 KiB
HTML
{{define "postActions"}}
|
|
<div class="post-actions">
|
|
{{if canReply .User .Root}}
|
|
<details class="post-composer">
|
|
<summary>Reply</summary>
|
|
<form class="post-form" method="post" action="/posts"
|
|
data-submit-once data-submitting-label="Posting…">
|
|
<input type="hidden" name="_csrf" value="{{.CSRF}}">
|
|
<input type="hidden" name="parent_id" value="{{.Post.ID}}">
|
|
<label for="reply-{{.Post.ID}}">Reply to {{.Post.AuthorName}}</label>
|
|
<textarea id="reply-{{.Post.ID}}" name="body" rows="5" required maxlength="12000"></textarea>
|
|
<div class="post-form-actions">
|
|
<button type="submit" class="btn btn-primary" data-submit-button>Post reply</button>
|
|
<button type="reset" class="btn btn-ghost"
|
|
onclick="this.closest('details').removeAttribute('open')">Cancel</button>
|
|
</div>
|
|
</form>
|
|
</details>
|
|
{{end}}
|
|
{{if canEditPost .User .Post}}
|
|
<details class="post-composer">
|
|
<summary>Edit</summary>
|
|
<form class="post-form" method="post" action="/posts/{{.Post.ID}}/edit">
|
|
<input type="hidden" name="_csrf" value="{{.CSRF}}">
|
|
<label for="edit-{{.Post.ID}}">Edit post</label>
|
|
<textarea id="edit-{{.Post.ID}}" name="body" rows="5" required
|
|
maxlength="12000">{{.Post.Body}}</textarea>
|
|
<div class="post-form-actions">
|
|
<button type="submit" class="btn btn-primary">Save changes</button>
|
|
<button type="reset" class="btn btn-ghost"
|
|
onclick="this.closest('details').removeAttribute('open')">Cancel</button>
|
|
</div>
|
|
</form>
|
|
</details>
|
|
{{end}}
|
|
{{if and (not .Post.ParentID) (isAdmin .User)}}
|
|
<form class="post-hide" method="post" action="/questions/{{.Post.ID}}/hide">
|
|
<input type="hidden" name="_csrf" value="{{.CSRF}}">
|
|
<button type="submit" class="linkish">Hide</button>
|
|
</form>
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{define "threadReply"}}
|
|
{{$ctx := .}}
|
|
<article id="post-{{.Post.ID}}"
|
|
class="thread-post thread-post-{{postDepth .Depth}}{{if eq .Post.AuthorRole "admin"}} is-shop{{end}}">
|
|
<header class="post-head">
|
|
<p class="post-kicker">{{postLabel .Post}}</p>
|
|
<p class="post-meta">
|
|
<span>{{.Post.AuthorName}}</span>
|
|
<span class="dot" aria-hidden="true">·</span>
|
|
<time datetime="{{.Post.CreatedAt}}">{{postTime .Post.CreatedAt}}</time>
|
|
{{if isEdited .Post}}<span class="edited">Edited</span>{{end}}
|
|
</p>
|
|
</header>
|
|
<p class="post-body">{{.Post.Body}}</p>
|
|
{{template "postActions" .}}
|
|
{{if .Post.Replies}}
|
|
<div class="post-replies">
|
|
{{range .Post.Replies}}
|
|
{{template "threadReply" (postCtx $ctx.User $ctx.CSRF $ctx.Root . (add $ctx.Depth 1))}}
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
</article>
|
|
{{end}}
|