68 lines
2.6 KiB
HTML
68 lines
2.6 KiB
HTML
{{define "admin/posts.html"}}{{template "admin/layout" .}}{{end}}
|
|
{{define "admin_content_posts"}}
|
|
<div class="admin-page-head">
|
|
<div>
|
|
<h1>帖子管理</h1>
|
|
<p>置顶、删除帖子,共 {{.Total}} 篇</p>
|
|
</div>
|
|
<form class="admin-search-bar" method="get">
|
|
<input name="keyword" class="form-control form-control-sm" placeholder="搜索标题/内容..." value="{{.Keyword}}">
|
|
<button class="btn btn-sm btn-success">搜索</button>
|
|
{{if .Keyword}}<a href="/admin/posts" class="btn btn-sm btn-outline-secondary">清除</a>{{end}}
|
|
</form>
|
|
</div>
|
|
|
|
<div class="admin-card">
|
|
<div class="table-responsive">
|
|
<table class="table admin-table mb-0">
|
|
<thead>
|
|
<tr>
|
|
<th>ID</th><th>标题</th><th>板块</th><th>作者</th>
|
|
<th>置顶</th><th>点赞</th><th>浏览</th><th>时间</th><th width="180">操作</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{{range .Posts}}
|
|
<tr id="post-row-{{.ID}}">
|
|
<td>{{.ID}}</td>
|
|
<td class="text-truncate-cell">{{.Title}}</td>
|
|
<td>{{if .Board}}{{.Board.Name}}{{else}}-{{end}}</td>
|
|
<td>{{if .User}}{{.User.Nickname}}{{else}}-{{end}}</td>
|
|
<td>{{if .Pinned}}<span class="badge badge-pin">是</span>{{else}}<span class="text-muted">否</span>{{end}}</td>
|
|
<td>{{.LikeCount}}</td>
|
|
<td>{{.ViewCount}}</td>
|
|
<td>{{.CreatedAt.Format "01-02 15:04"}}</td>
|
|
<td>
|
|
<a href="/post/{{.ID}}" target="_blank" class="btn btn-sm btn-link">查看</a>
|
|
<button class="btn btn-sm btn-outline-warning" onclick="togglePin({{.ID}}, {{.Pinned}})">{{if .Pinned}}取消置顶{{else}}置顶{{end}}</button>
|
|
<button class="btn btn-sm btn-outline-danger" onclick="deletePost({{.ID}})">删除</button>
|
|
</td>
|
|
</tr>
|
|
{{else}}
|
|
<tr><td colspan="9" class="admin-empty">没有找到帖子</td></tr>
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{{template "admin_pagination" .}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{define "admin_scripts_posts"}}
|
|
<script>
|
|
function togglePin(id, pinned) {
|
|
postForm('/admin/api/posts/' + id + '/pin', 'POST', { pinned: pinned ? 'false' : 'true' })
|
|
.then(function(d) { showToast(d.message); reloadSoon(); })
|
|
.catch(function(e) { showToast(e.message, 'danger'); });
|
|
}
|
|
|
|
function deletePost(id) {
|
|
adminConfirm('确定删除该帖子?相关评论也将一并删除。', function() {
|
|
adminFetch('/admin/api/posts/' + id, { method: 'DELETE' })
|
|
.then(function(d) { showToast(d.message); reloadSoon(); })
|
|
.catch(function(e) { showToast(e.message, 'danger'); });
|
|
});
|
|
}
|
|
</script>
|
|
{{end}}
|