compose 支持 poll 类型与选项,详情可投票/查看结果/结束。 Co-authored-by: Cursor <cursoragent@cursor.com>
79 lines
3.6 KiB
Cheetah
79 lines
3.6 KiB
Cheetah
{{define "compose"}}
|
||
{{template "base/head" .}}
|
||
{{template "base/navbar" .}}
|
||
{{if .Flash}}<div class="j13-flash" role="status">{{.Flash}}</div>{{end}}
|
||
<main class="j13-main j13-main--solo j13-compose">
|
||
<h1>{{if .IsEdit}}编辑帖子{{else}}发帖{{end}}</h1>
|
||
{{template "base/alert" .}}
|
||
<form method="post" action="{{.FormAction}}" class="j13-form" id="compose-form" data-csrf="{{.CSRF}}" data-upload="/compose/upload">
|
||
<input type="hidden" name="_csrf" value="{{.CSRF}}"/>
|
||
<label>板块
|
||
<select name="board_id" required>
|
||
<option value="">请选择</option>
|
||
{{range .Boards}}
|
||
<option value="{{.ID}}" {{if eq $.BoardID .ID}}selected{{end}}>{{.Name}}</option>
|
||
{{end}}
|
||
</select>
|
||
</label>
|
||
{{if .IsEdit}}
|
||
<p class="j13-muted">类型:{{if eq .PostType "poll"}}投票{{else}}普通讨论{{end}}(不可更改)</p>
|
||
<input type="hidden" name="post_type" value="{{.PostType}}"/>
|
||
{{else}}
|
||
<label>类型
|
||
<select name="post_type" id="compose-post-type">
|
||
<option value="normal"{{if ne .PostType "poll"}} selected{{end}}>普通讨论</option>
|
||
<option value="poll"{{if eq .PostType "poll"}} selected{{end}}>投票</option>
|
||
</select>
|
||
</label>
|
||
<fieldset class="j13-poll-fields" id="compose-poll-fields"{{if ne .PostType "poll"}} hidden{{end}}>
|
||
<legend>投票设置</legend>
|
||
<label class="j13-check"><input type="checkbox" name="poll_multi" value="1"{{if .PollMulti}} checked{{end}}/> 允许多选</label>
|
||
<label>最多可选
|
||
<input name="poll_max_choices" type="number" min="1" max="10" value="{{.PollMaxChoices}}"/>
|
||
</label>
|
||
<label>截止时间(可选)
|
||
<input name="poll_ends_at" type="datetime-local" value="{{.PollEndsAt}}"/>
|
||
</label>
|
||
<label>选项(每行一项,2–10 个)
|
||
<textarea name="poll_options" rows="6" placeholder="选项 A 选项 B 选项 C">{{.PollOptions}}</textarea>
|
||
</label>
|
||
</fieldset>
|
||
{{end}}
|
||
<label>标题
|
||
<input name="title" required maxlength="{{.TitleMax}}" value="{{.Title}}"/>
|
||
</label>
|
||
<label>标签
|
||
<input name="tags" maxlength="{{.TagsMax}}" value="{{.Tags}}" placeholder="逗号分隔,可选"/>
|
||
</label>
|
||
<label>正文
|
||
<textarea name="content" id="compose-content" rows="16" required maxlength="{{.ContentMax}}" placeholder="支持纯文本;图片上传后插入 Markdown 图片语法">{{.Content}}</textarea>
|
||
</label>
|
||
<div class="j13-compose__tools">
|
||
<label class="j13-btn-secondary j13-filebtn">
|
||
插入图片
|
||
<input type="file" id="compose-image" accept="image/*" hidden/>
|
||
</label>
|
||
<button type="button" class="j13-btn-secondary" id="compose-gate-login" data-gate="login">登录可见</button>
|
||
<button type="button" class="j13-btn-secondary" id="compose-gate-reply" data-gate="reply">回复可见</button>
|
||
<button type="button" class="j13-btn-secondary" id="compose-gate-points" data-gate="points">积分可见</button>
|
||
<span class="j13-muted" id="compose-upload-status"></span>
|
||
</div>
|
||
<p class="j13-muted">门控:选中正文后点按钮包裹;积分可见会询问价格(1–9999)。含门控时正文以 HTML 提交。</p>
|
||
<button type="submit">{{if .IsEdit}}保存{{else}}发布{{end}}</button>
|
||
</form>
|
||
</main>
|
||
{{template "base/footer" .}}
|
||
{{if not .IsEdit}}
|
||
<script>
|
||
(function () {
|
||
var sel = document.getElementById('compose-post-type');
|
||
var box = document.getElementById('compose-poll-fields');
|
||
if (!sel || !box) return;
|
||
function sync() { box.hidden = sel.value !== 'poll'; }
|
||
sel.addEventListener('change', sync);
|
||
sync();
|
||
})();
|
||
</script>
|
||
{{end}}
|
||
{{end}}
|