123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378 |
- <?php
- include 'common.php';
- include 'header.php';
- include 'menu.php';
- $stat = \Widget\Stat::alloc();
- $comments = \Widget\Comments\Admin::alloc();
- $isAllComments = ('on' == $request->get('__typecho_all_comments') || 'on' == \Typecho\Cookie::get('__typecho_all_comments'));
- ?>
- <div class="main">
- <div class="body container">
- <?php include 'page-title.php'; ?>
- <div class="row typecho-page-main" role="main">
- <div class="col-mb-12 typecho-list">
- <div class="clearfix">
- <ul class="typecho-option-tabs right">
- <?php if($user->pass('editor', true) && !isset($request->cid)): ?>
- <li class="<?php if($isAllComments): ?> current<?php endif; ?>"><a href="<?php echo $request->makeUriByRequest('__typecho_all_comments=on'); ?>"><?php _e('所有'); ?></a></li>
- <li class="<?php if(!$isAllComments): ?> current<?php endif; ?>"><a href="<?php echo $request->makeUriByRequest('__typecho_all_comments=off'); ?>"><?php _e('我的'); ?></a></li>
- <?php endif; ?>
- </ul>
- <ul class="typecho-option-tabs">
- <li<?php if(!isset($request->status) || 'approved' == $request->get('status')): ?> class="current"<?php endif; ?>><a href="<?php $options->adminUrl('manage-comments.php'
- . (isset($request->cid) ? '?cid=' . $request->filter('encode')->cid : '')); ?>"><?php _e('已通过'); ?></a></li>
- <li<?php if('waiting' == $request->get('status')): ?> class="current"<?php endif; ?>><a href="<?php $options->adminUrl('manage-comments.php?status=waiting'
- . (isset($request->cid) ? '&cid=' . $request->filter('encode')->cid : '')); ?>"><?php _e('待审核'); ?>
- <?php if(!$isAllComments && $stat->myWaitingCommentsNum > 0 && !isset($request->cid)): ?>
- <span class="balloon"><?php $stat->myWaitingCommentsNum(); ?></span>
- <?php elseif($isAllComments && $stat->waitingCommentsNum > 0 && !isset($request->cid)): ?>
- <span class="balloon"><?php $stat->waitingCommentsNum(); ?></span>
- <?php elseif(isset($request->cid) && $stat->currentWaitingCommentsNum > 0): ?>
- <span class="balloon"><?php $stat->currentWaitingCommentsNum(); ?></span>
- <?php endif; ?>
- </a></li>
- <li<?php if('spam' == $request->get('status')): ?> class="current"<?php endif; ?>><a href="<?php $options->adminUrl('manage-comments.php?status=spam'
- . (isset($request->cid) ? '&cid=' . $request->filter('encode')->cid : '')); ?>"><?php _e('垃圾'); ?>
- <?php if(!$isAllComments && $stat->mySpamCommentsNum > 0 && !isset($request->cid)): ?>
- <span class="balloon"><?php $stat->mySpamCommentsNum(); ?></span>
- <?php elseif($isAllComments && $stat->spamCommentsNum > 0 && !isset($request->cid)): ?>
- <span class="balloon"><?php $stat->spamCommentsNum(); ?></span>
- <?php elseif(isset($request->cid) && $stat->currentSpamCommentsNum > 0): ?>
- <span class="balloon"><?php $stat->currentSpamCommentsNum(); ?></span>
- <?php endif; ?>
- </a></li>
- </ul>
- </div>
-
- <div class="typecho-list-operate clearfix">
- <form method="get">
- <div class="operate">
- <label><i class="sr-only"><?php _e('全选'); ?></i><input type="checkbox" class="typecho-table-select-all" /></label>
- <div class="btn-group btn-drop">
- <button class="btn dropdown-toggle btn-s" type="button"><i class="sr-only"><?php _e('操作'); ?></i><?php _e('选中项'); ?> <i class="i-caret-down"></i></button>
- <ul class="dropdown-menu">
- <li><a href="<?php $security->index('/action/comments-edit?do=approved'); ?>"><?php _e('通过'); ?></a></li>
- <li><a href="<?php $security->index('/action/comments-edit?do=waiting'); ?>"><?php _e('待审核'); ?></a></li>
- <li><a href="<?php $security->index('/action/comments-edit?do=spam'); ?>"><?php _e('标记垃圾'); ?></a></li>
- <li><a lang="<?php _e('你确认要删除这些评论吗?'); ?>" href="<?php $security->index('/action/comments-edit?do=delete'); ?>"><?php _e('删除'); ?></a></li>
- </ul>
- <?php if('spam' == $request->get('status')): ?>
- <button lang="<?php _e('你确认要删除所有垃圾评论吗?'); ?>" class="btn btn-s btn-warn btn-operate" href="<?php $security->index('/action/comments-edit?do=delete-spam'); ?>"><?php _e('删除所有垃圾评论'); ?></button>
- <?php endif; ?>
- </div>
- </div>
- <div class="search" role="search">
- <?php if ('' != $request->keywords || '' != $request->category): ?>
- <a href="<?php $options->adminUrl('manage-comments.php'
- . (isset($request->status) || isset($request->cid) ? '?' .
- (isset($request->status) ? 'status=' . $request->filter('encode')->status : '') .
- (isset($request->cid) ? (isset($request->status) ? '&' : '') . 'cid=' . $request->filter('encode')->cid : '') : '')); ?>"><?php _e('« 取消筛选'); ?></a>
- <?php endif; ?>
- <input type="text" class="text-s" placeholder="<?php _e('请输入关键字'); ?>" value="<?php echo $request->filter('html')->keywords; ?>"<?php if ('' == $request->keywords): ?> onclick="value='';name='keywords';" <?php else: ?> name="keywords"<?php endif; ?>/>
- <?php if(isset($request->status)): ?>
- <input type="hidden" value="<?php echo $request->filter('html')->status; ?>" name="status" />
- <?php endif; ?>
- <?php if(isset($request->cid)): ?>
- <input type="hidden" value="<?php echo $request->filter('html')->cid; ?>" name="cid" />
- <?php endif; ?>
- <button type="submit" class="btn btn-s"><?php _e('筛选'); ?></button>
- </div>
- </form>
- </div><!-- end .typecho-list-operate -->
-
- <form method="post" name="manage_comments" class="operate-form">
- <div class="typecho-table-wrap">
- <table class="typecho-list-table">
- <colgroup>
- <col width="3%" class="kit-hidden-mb"/>
- <col width="6%" class="kit-hidden-mb" />
- <col width="20%"/>
- <col width="71%"/>
- </colgroup>
- <thead>
- <tr>
- <th class="kit-hidden-mb"> </th>
- <th><?php _e('作者'); ?></th>
- <th class="kit-hidden-mb"> </th>
- <th><?php _e('内容'); ?></th>
- </tr>
- </thead>
- <tbody>
- <?php if($comments->have()): ?>
- <?php while($comments->next()): ?>
- <tr id="<?php $comments->theId(); ?>" data-comment="<?php
- $comment = array(
- 'author' => $comments->author,
- 'mail' => $comments->mail,
- 'url' => $comments->url,
- 'ip' => $comments->ip,
- 'type' => $comments->type,
- 'text' => $comments->text
- );
- echo htmlspecialchars(json_encode($comment));
- ?>">
- <td valign="top" class="kit-hidden-mb">
- <input type="checkbox" value="<?php $comments->coid(); ?>" name="coid[]"/>
- </td>
- <td valign="top" class="kit-hidden-mb">
- <div class="comment-avatar">
- <?php if ('comment' == $comments->type): ?>
- <?php $comments->gravatar(40); ?>
- <?php endif; ?>
- <?php if ('comment' != $comments->type): ?>
- <?php _e('引用'); ?>
- <?php endif; ?>
- </div>
- </td>
- <td valign="top" class="comment-head">
- <div class="comment-meta">
- <strong class="comment-author"><?php $comments->author(true); ?></strong>
- <?php if($comments->mail): ?>
- <br /><span><a href="<?php $comments->mail(true); ?>"><?php $comments->mail(); ?></a></span>
- <?php endif; ?>
- <?php if($comments->ip): ?>
- <br /><span><?php $comments->ip(); ?></span>
- <?php endif; ?>
- </div>
- </td>
- <td valign="top" class="comment-body">
- <div class="comment-date"><?php $comments->dateWord(); ?> 于 <a href="<?php $comments->permalink(); ?>"><?php $comments->title(); ?></a></div>
- <div class="comment-content">
- <?php $comments->content(); ?>
- </div>
- <div class="comment-action hidden-by-mouse">
- <?php if('approved' == $comments->status): ?>
- <span class="weak"><?php _e('通过'); ?></span>
- <?php else: ?>
- <a href="<?php $security->index('/action/comments-edit?do=approved&coid=' . $comments->coid); ?>" class="operate-approved"><?php _e('通过'); ?></a>
- <?php endif; ?>
-
- <?php if('waiting' == $comments->status): ?>
- <span class="weak"><?php _e('待审核'); ?></span>
- <?php else: ?>
- <a href="<?php $security->index('/action/comments-edit?do=waiting&coid=' . $comments->coid); ?>" class="operate-waiting"><?php _e('待审核'); ?></a>
- <?php endif; ?>
-
- <?php if('spam' == $comments->status): ?>
- <span class="weak"><?php _e('垃圾'); ?></span>
- <?php else: ?>
- <a href="<?php $security->index('/action/comments-edit?do=spam&coid=' . $comments->coid); ?>" class="operate-spam"><?php _e('垃圾'); ?></a>
- <?php endif; ?>
-
- <a href="#<?php $comments->theId(); ?>" rel="<?php $security->index('/action/comments-edit?do=edit&coid=' . $comments->coid); ?>" class="operate-edit"><?php _e('编辑'); ?></a>
- <?php if('approved' == $comments->status && 'comment' == $comments->type): ?>
- <a href="#<?php $comments->theId(); ?>" rel="<?php $security->index('/action/comments-edit?do=reply&coid=' . $comments->coid); ?>" class="operate-reply"><?php _e('回复'); ?></a>
- <?php endif; ?>
-
- <a lang="<?php _e('你确认要删除%s的评论吗?', htmlspecialchars($comments->author)); ?>" href="<?php $security->index('/action/comments-edit?do=delete&coid=' . $comments->coid); ?>" class="operate-delete"><?php _e('删除'); ?></a>
- </div>
- </td>
- </tr>
- <?php endwhile; ?>
- <?php else: ?>
- <tr>
- <td colspan="4"><h6 class="typecho-list-table-title"><?php _e('没有评论') ?></h6></td>
- </tr>
- <?php endif; ?>
- </tbody>
- </table><!-- end .typecho-list-table -->
- </div><!-- end .typecho-table-wrap -->
- <?php if(isset($request->cid)): ?>
- <input type="hidden" value="<?php echo $request->filter('html')->cid; ?>" name="cid" />
- <?php endif; ?>
- </form><!-- end .operate-form -->
- <div class="typecho-list-operate clearfix">
- <form method="get">
- <div class="operate">
- <label><i class="sr-only"><?php _e('全选'); ?></i><input type="checkbox" class="typecho-table-select-all" /></label>
- <div class="btn-group btn-drop">
- <button class="btn dropdown-toggle btn-s" type="button"><i class="sr-only"><?php _e('操作'); ?></i><?php _e('选中项'); ?> <i class="i-caret-down"></i></button>
- <ul class="dropdown-menu">
- <li><a href="<?php $security->index('/action/comments-edit?do=approved'); ?>"><?php _e('通过'); ?></a></li>
- <li><a href="<?php $security->index('/action/comments-edit?do=waiting'); ?>"><?php _e('待审核'); ?></a></li>
- <li><a href="<?php $security->index('/action/comments-edit?do=spam'); ?>"><?php _e('标记垃圾'); ?></a></li>
- <li><a lang="<?php _e('你确认要删除这些评论吗?'); ?>" href="<?php $security->index('/action/comments-edit?do=delete'); ?>"><?php _e('删除'); ?></a></li>
- </ul>
- <?php if('spam' == $request->get('status')): ?>
- <button lang="<?php _e('你确认要删除所有垃圾评论吗?'); ?>" class="btn btn-s btn-warn btn-operate" href="<?php $security->index('/action/comments-edit?do=delete-spam'); ?>"><?php _e('删除所有垃圾评论'); ?></button>
- <?php endif; ?>
- </div>
- </div>
- <?php if($comments->have()): ?>
- <ul class="typecho-pager">
- <?php $comments->pageNav(); ?>
- </ul>
- <?php endif; ?>
- </form>
- </div><!-- end .typecho-list-operate -->
- </div><!-- end .typecho-list -->
- </div><!-- end .typecho-page-main -->
- </div>
- </div>
- <?php
- include 'copyright.php';
- include 'common-js.php';
- include 'table-js.php';
- ?>
- <script type="text/javascript">
- $(document).ready(function () {
- // 记住滚动条
- function rememberScroll () {
- $(window).bind('beforeunload', function () {
- $.cookie('__typecho_comments_scroll', $('body').scrollTop());
- });
- }
- // 自动滚动
- (function () {
- var scroll = $.cookie('__typecho_comments_scroll');
- if (scroll) {
- $.cookie('__typecho_comments_scroll', null);
- $('html, body').scrollTop(scroll);
- }
- })();
- $('.operate-delete').click(function () {
- var t = $(this), href = t.attr('href'), tr = t.parents('tr');
- if (confirm(t.attr('lang'))) {
- tr.fadeOut(function () {
- rememberScroll();
- window.location.href = href;
- });
- }
- return false;
- });
- $('.operate-approved, .operate-waiting, .operate-spam').click(function () {
- rememberScroll();
- window.location.href = $(this).attr('href');
- return false;
- });
- $('.operate-reply').click(function () {
- var td = $(this).parents('td'), t = $(this);
- if ($('.comment-reply', td).length > 0) {
- $('.comment-reply').remove();
- } else {
- var form = $('<form method="post" action="'
- + t.attr('rel') + '" class="comment-reply">'
- + '<p><label for="text" class="sr-only"><?php _e('内容'); ?></label><textarea id="text" name="text" class="w-90 mono" rows="3"></textarea></p>'
- + '<p><button type="submit" class="btn btn-s primary"><?php _e('回复'); ?></button> <button type="button" class="btn btn-s cancel"><?php _e('取消'); ?></button></p>'
- + '</form>').insertBefore($('.comment-action', td));
- $('.cancel', form).click(function () {
- $(this).parents('.comment-reply').remove();
- });
- var textarea = $('textarea', form).focus();
- form.submit(function () {
- var t = $(this), tr = t.parents('tr'),
- reply = $('<div class="comment-reply-content"></div>').insertAfter($('.comment-content', tr));
- var html = DOMPurify.sanitize(textarea.val(), {USE_PROFILES: {html: true}});
- reply.html('<p>' + html + '</p>');
- $.post(t.attr('action'), t.serialize(), function (o) {
- var html = DOMPurify.sanitize(o.comment.content, {USE_PROFILES: {html: true}});
- reply.html(html)
- .effect('highlight');
- }, 'json');
- t.remove();
- return false;
- });
- }
- return false;
- });
- $('.operate-edit').click(function () {
- var tr = $(this).parents('tr'), t = $(this), id = tr.attr('id'), comment = tr.data('comment');
- tr.hide();
- var edit = $('<tr class="comment-edit"><td> </td>'
- + '<td colspan="2" valign="top"><form method="post" action="'
- + t.attr('rel') + '" class="comment-edit-info">'
- + '<p><label for="' + id + '-author"><?php _e('用户名'); ?></label><input class="text-s w-100" id="'
- + id + '-author" name="author" type="text"></p>'
- + '<p><label for="' + id + '-mail"><?php _e('电子邮箱'); ?></label>'
- + '<input class="text-s w-100" type="email" name="mail" id="' + id + '-mail"></p>'
- + '<p><label for="' + id + '-url"><?php _e('个人主页'); ?></label>'
- + '<input class="text-s w-100" type="text" name="url" id="' + id + '-url"></p></form></td>'
- + '<td valign="top"><form method="post" action="'
- + t.attr('rel') + '" class="comment-edit-content"><p><label for="' + id + '-text"><?php _e('内容'); ?></label>'
- + '<textarea name="text" id="' + id + '-text" rows="6" class="w-90 mono"></textarea></p>'
- + '<p><button type="submit" class="btn btn-s primary"><?php _e('提交'); ?></button> '
- + '<button type="button" class="btn btn-s cancel"><?php _e('取消'); ?></button></p></form></td></tr>')
- .data('id', id).data('comment', comment).insertAfter(tr);
- $('input[name=author]', edit).val(comment.author);
- $('input[name=mail]', edit).val(comment.mail);
- $('input[name=url]', edit).val(comment.url);
- $('textarea[name=text]', edit).val(comment.text).focus();
- $('.cancel', edit).click(function () {
- var tr = $(this).parents('tr');
- $('#' + tr.data('id')).show();
- tr.remove();
- });
- $('form', edit).submit(function () {
- var t = $(this), tr = t.parents('tr'),
- oldTr = $('#' + tr.data('id')),
- comment = oldTr.data('comment');
- $('form', tr).each(function () {
- var items = $(this).serializeArray();
- for (var i = 0; i < items.length; i ++) {
- var item = items[i];
- comment[item.name] = item.value;
- }
- });
- var unsafeHTML = '<strong class="comment-author">'
- + (comment.url ? '<a target="_blank" href="' + comment.url + '">'
- + comment.author + '</a>' : comment.author) + '</strong>'
- + ('comment' != comment.type ? '<small><?php _e('引用'); ?></small>' : '')
- + (comment.mail ? '<br /><span><a href="mailto:' + comment.mail + '">'
- + comment.mail + '</a></span>' : '')
- + (comment.ip ? '<br /><span>' + comment.ip + '</span>' : '');
- var html = DOMPurify.sanitize(unsafeHTML, {USE_PROFILES: {html: true}});
- var content = DOMPurify.sanitize(comment.text, {USE_PROFILES: {html: true}});
- $('.comment-meta', oldTr).html(html)
- .effect('highlight');
- $('.comment-content', oldTr).html('<p>' + content + '</p>');
- oldTr.data('comment', comment);
- $.post(t.attr('action'), comment, function (o) {
- var content = DOMPurify.sanitize(o.comment.content, {USE_PROFILES: {html: true}});
- $('.comment-content', oldTr).html('<p>' + content + '</p>')
- .effect('highlight');
- }, 'json');
-
- oldTr.show();
- tr.remove();
- return false;
- });
- return false;
- });
- });
- </script>
- <?php
- include 'footer.php';
- ?>
|