website/web/templates/forum/new_post.html
Noah ab33b8124d Forums: Basic Support WIP
Adds initial code for basically functional forums:

* Forums landing page shows hard-coded list of Categories along with any
  forums in the DB that use those categories.
* Admin: Create, Edit forums and view forums you own or have admin rights
  to modify.
* Landing page forums list shows the title/description and dynamic count of
  number of Topics and total number of Posts in each forum. TODO: distinct
  count of Users who posted in each forum.
* Board Index page shows list of Threads (posts) with a Replies count and
  Views count on each thread.
* Thread view is basically an array of Comments. Users can post, edit and
  delete (their own) comments. Deleting the first comment removes the
  entire Thread - the thread points to a first Comment to provide its body.
* Reply and Quote-Reply options working.
2022-08-23 22:55:19 -07:00

148 lines
6.0 KiB
HTML

{{define "title"}}
{{if .EditCommentID}}
Edit Comment
{{else if .Thread}}
Reply to Thread
{{else}}
New Forum Post
{{end}}
{{end}}
{{define "content"}}
<div class="container">
<section class="hero is-info is-bold">
<div class="hero-body">
<div class="container">
<h1 class="title">
{{if .EditCommentID}}
Edit comment on: {{or .Thread.Title "Untitled Thread"}}
{{else if .Thread}}
Reply to: {{or .Thread.Title "Untitled Thread"}}
{{else}}
Post to: {{.Forum.Title}}
{{end}}
</h1>
<h2 class="subtitle">
/f/{{.Forum.Fragment}}
</h2>
</div>
</div>
</section>
<div class="block p-4">
<div class="columns is-centered">
<div class="column is-half">
<div class="card" style="width: 100%; max-width: 640px">
<header class="card-header has-background-link">
<p class="card-header-title has-text-light">
<span class="icon"><i class="fa fa-message"></i></span>
{{if .EditCommentID}}
Edit Comment
{{else if .Thread}}
Reply to Thread
{{else}}
New Thread
{{end}}
</p>
</header>
<div class="card-content">
{{if and (eq .Request.Method "POST") (ne .Message "")}}
<label class="label">Preview:</label>
<div class="box content has-background-warning-light">
{{ToMarkdown .Message}}
</div>
{{end}}
<form action="/forum/post?to={{.Forum.Fragment}}{{if .Thread}}&thread={{.Thread.ID}}{{end}}{{if .EditCommentID}}&edit={{.EditCommentID}}{{end}}" method="POST">
{{InputCSRF}}
{{if not .Thread}}
<div class="field block">
<label for="title" class="label">Title</label>
<input type="text" class="input"
name="title" id="title"
placeholder="A title for your post"
value="{{.PostTitle}}"
required>
<p class="help">Required.</p>
</div>
{{end}}
<div class="field block">
<label for="message" class="label">Message</label>
<textarea class="textarea" cols="80" rows="8"
name="message"
id="message"
required
placeholder="Message">{{.Message}}</textarea>
<p class="help">
Markdown formatting supported.
</p>
</div>
{{if not .Thread}}
<div class="field block">
<div class="label">Options</div>
<div class="mb-1">
<label class="checkbox">
<input type="checkbox"
name="explicit"
value="true"
{{if .Explicit}}checked{{end}}>
Mark as Explicit (NSFW)
</label>
</div>
{{if .CurrentUser.IsAdmin}}
<div>
<label class="checkbox has-text-danger">
<input type="checkbox"
name="noreply"
value="true"
{{if .Explicit}}checked{{end}}>
No replies allowed <i class="fa fa-gavel ml-1"></i>
</label>
</div>
{{end}}
</div>
{{end}}
<div class="field has-text-centered">
<button type="submit"
name="intent"
value="preview"
class="button is-link">
Preview
</button>
<button type="submit"
name="intent"
value="submit"
class="button is-success">
Post Message
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
window.addEventListener("DOMContentLoaded", (event) => {
let $file = document.querySelector("#file"),
$fileName = document.querySelector("#fileName");
$file.addEventListener("change", function() {
let file = this.files[0];
$fileName.innerHTML = file.name;
});
});
</script>
{{end}}