Browse Source

Merge remote-tracking branch 'origin/uuhelper' into uuhelper/01

hangb 8 years ago
parent
commit
6492a8ae05

+ 6 - 2
jpress-model/src/main/java/io/jpress/model/Comment.java

@@ -15,14 +15,14 @@
  */
 package io.jpress.model;
 
-import java.math.BigInteger;
-
 import io.jpress.model.base.BaseComment;
 import io.jpress.model.core.Table;
 import io.jpress.model.query.CommentQuery;
 import io.jpress.model.query.ContentQuery;
 import io.jpress.model.query.UserQuery;
 
+import java.math.BigInteger;
+
 @Table(tableName = "comment", primaryKey = "id")
 public class Comment extends BaseComment<Comment> {
 	private static final long serialVersionUID = 1L;
@@ -49,6 +49,10 @@ public class Comment extends BaseComment<Comment> {
 		return content;
 	}
 
+	public Content getContentById(BigInteger id) {
+		return ContentQuery.me().findById(id);
+	}
+
 	public void setContent(Content content) {
 		this.content = content;
 	}

+ 73 - 4
jpress-model/src/main/java/io/jpress/model/query/CommentQuery.java

@@ -15,14 +15,13 @@
  */
 package io.jpress.model.query;
 
-import java.math.BigInteger;
-import java.util.LinkedList;
-
 import com.jfinal.plugin.activerecord.Page;
 import com.jfinal.plugin.ehcache.IDataLoader;
-
 import io.jpress.model.Comment;
 
+import java.math.BigInteger;
+import java.util.LinkedList;
+
 public class CommentQuery extends JBaseQuery {
 
 	protected static final Comment DAO = new Comment();
@@ -90,6 +89,42 @@ public class CommentQuery extends JBaseQuery {
 		return DAO.paginate(pageNumber, pageSize, select, fromBuilder.toString(), params.toArray());
 	}
 
+	public Page<Comment> paginateWithContentAndSon(int pageNumber, int pageSize, String module, String type,
+														BigInteger contentId, BigInteger parentCommentId, Boolean hasSon) {
+
+		String select = " select c.*,content.title content_title,u.username,u.nickname,u.avatar, "
+				+ "quote_comment.text qc_content,quote_comment.author qc_author,"
+				+ "quote_user.username qc_username,quote_user.nickname qc_nickname,quote_user.avatar qc_avatar ";
+
+		StringBuilder fromBuilder = new StringBuilder("  from comment c");
+		fromBuilder.append(" left join content on c.content_id = content.id");
+		fromBuilder.append(" left join user u on c.user_id = u.id ");
+		fromBuilder.append(" left join comment quote_comment on c.parent_id = quote_comment.id");
+		fromBuilder.append(" left join user quote_user on quote_comment.user_id = quote_user.id ");
+
+		fromBuilder.append(" WHERE c.status <> '" + Comment.STATUS_DELETE + "' ");
+
+		if (hasSon == true) {
+			fromBuilder.append("and c.parent_id is not null ");
+		} else {
+			//不找作者本身的回复(需再思考  数量和实际显示)
+			fromBuilder.append("and c.parent_id is null and c.user_id != content.user_id ");
+		}
+
+		LinkedList<Object> params = new LinkedList<Object>();
+		appendIfNotEmpty(fromBuilder, " c.`type`", type, params, false);
+		appendIfNotEmpty(fromBuilder, " c.content_module", module, params, false);
+		appendIfNotEmpty(fromBuilder, " c.parent_id", parentCommentId, params, false);
+		appendIfNotEmpty(fromBuilder, " content.id", contentId, params, false);
+
+		fromBuilder.append("order by c.created desc");
+
+		if (params.isEmpty()) {
+			return DAO.paginate(pageNumber, pageSize, select, fromBuilder.toString());
+		}
+		return DAO.paginate(pageNumber, pageSize, select, fromBuilder.toString(), params.toArray());
+	}
+
 	public Page<Comment> paginateByContentId(int pageNumber, int pageSize, BigInteger contentId) {
 		return paginateWithContent(pageNumber, pageSize, null, null, contentId, null, Comment.STATUS_NORMAL);
 	}
@@ -139,4 +174,38 @@ public class CommentQuery extends JBaseQuery {
 		return DAO.doFindCount("content_module = ? and status=?", module, status);
 	}
 
+	public long findCountByModuleAndSonAndContentId(BigInteger contentId, String module, boolean hasSon) {
+		io.jpress.model.Content content = DAO.getContentById(contentId);
+		BigInteger authorUserId = null;
+		if (content != null) {
+			authorUserId = content.getUserId();
+		}
+		Long count = new Long(0);
+		if (hasSon == true) {
+			count = DAO.doFindCount("content_module = ? and parent_id is not null and content_id = ?", module ,contentId);
+		} else {
+			if (authorUserId == null) {
+				count = DAO.doFindCount("content_module = ? and parent_id is null and content_id = ? ", module ,contentId);
+			} else {
+				count = DAO.doFindCount("content_module = ? and parent_id is null and content_id = ? and user_id != ?", module ,contentId ,authorUserId);
+			}
+		}
+
+		return count;
+	}
+
+	public long findCountByModuleAndStatusAndContentId(BigInteger contentId, String module, String status) {
+		return DAO.doFindCount(" content_id = ? and content_module = ? and status=?",contentId, module, status);
+	}
+
+	public long findCountByModuleAndStatusAndContentId(BigInteger contentId, String module, boolean parent) {
+		Long count = new Long(0);
+		if (parent == true) {
+			count = DAO.doFindCount("content_module = ? and parent_id is not null and content_id = " + contentId, module);
+		} else {
+			count = DAO.doFindCount("content_module = ? and parent_id is null and content_id = " + contentId, module);
+		}
+
+		return count;
+	}
 }

+ 23 - 8
jpress-web-admin/src/main/java/io/jpress/admin/controller/_CommentController.java

@@ -15,12 +15,8 @@
  */
 package io.jpress.admin.controller;
 
-import java.math.BigInteger;
-import java.util.Date;
-
 import com.jfinal.aop.Before;
 import com.jfinal.plugin.activerecord.Page;
-
 import io.jpress.core.JBaseCRUDController;
 import io.jpress.core.interceptor.ActionCacheClearInterceptor;
 import io.jpress.interceptor.UCodeInterceptor;
@@ -35,6 +31,9 @@ import io.jpress.template.TemplateManager;
 import io.jpress.utils.JsoupUtils;
 import io.jpress.utils.StringUtils;
 
+import java.math.BigInteger;
+import java.util.Date;
+
 @RouterMapping(url = "/admin/comment", viewPath = "/WEB-INF/admin/comment")
 @Before(ActionCacheClearInterceptor.class)
 @RouterNotAllowConvert
@@ -48,16 +47,29 @@ public class _CommentController extends JBaseCRUDController<Comment> {
 		return getPara("t");
 	}
 
+	private boolean getSon() {
+		return Boolean.parseBoolean(getPara("son"));
+	}
+
 	@Override
 	public void index() {
 
 		keepPara();
 
 		setAttr("module", TemplateManager.me().currentTemplateModule(getModule()));
-		setAttr("delete_count", CommentQuery.me().findCountByModuleAndStatus(getModule(), Comment.STATUS_DELETE));
-		setAttr("draft_count", CommentQuery.me().findCountByModuleAndStatus(getModule(), Comment.STATUS_DRAFT));
-		setAttr("normal_count", CommentQuery.me().findCountByModuleAndStatus(getModule(), Comment.STATUS_NORMAL));
-		setAttr("count", CommentQuery.me().findCountInNormalByModule(getModule()));
+
+		if ("uuhelper".equals(getModule())) {
+			setAttr("answered_count", CommentQuery.me().findCountByModuleAndSonAndContentId(getParaToBigInteger("cid"), getModule(), true));
+			setAttr("unanswered_count", CommentQuery.me().findCountByModuleAndSonAndContentId(getParaToBigInteger("cid"), getModule(), false));
+			setAttr("draft_count", CommentQuery.me().findCountByModuleAndStatusAndContentId(getParaToBigInteger("cid"), getModule(), Comment.STATUS_DRAFT));
+			setAttr("normal_count", CommentQuery.me().findCountByModuleAndStatusAndContentId(getParaToBigInteger("cid"), getModule(), Comment.STATUS_NORMAL));
+			setAttr("delete_count", CommentQuery.me().findCountByModuleAndStatusAndContentId(getParaToBigInteger("cid"), getModule(), Comment.STATUS_DELETE));
+		} else {
+			setAttr("delete_count", CommentQuery.me().findCountByModuleAndStatus(getModule(), Comment.STATUS_DELETE));
+			setAttr("draft_count", CommentQuery.me().findCountByModuleAndStatus(getModule(), Comment.STATUS_DRAFT));
+			setAttr("normal_count", CommentQuery.me().findCountByModuleAndStatus(getModule(), Comment.STATUS_NORMAL));
+			setAttr("count", CommentQuery.me().findCountInNormalByModule(getModule()));
+		}
 
 		super.index();
 	}
@@ -71,6 +83,9 @@ public class _CommentController extends JBaseCRUDController<Comment> {
 		if (StringUtils.isNotBlank(getPara("s"))) {
 			return CommentQuery.me().paginateWithContent(pageNumber, pageSize, getModule(), getType(), contentId,
 					parentCommentId, getPara("s"));
+		} else if (StringUtils.isNotBlank(getPara("son"))) {
+			return CommentQuery.me().paginateWithContentAndSon(pageNumber, pageSize, getModule(), getType(), contentId,
+					parentCommentId,getSon());
 		}
 		return CommentQuery.me().paginateWithContentNotInDelete(pageNumber, pageSize, getModule(), getType(), contentId,
 				parentCommentId);

+ 14 - 0
jpress-web-admin/src/main/java/io/jpress/admin/controller/_ContentController.java

@@ -476,4 +476,18 @@ public class _ContentController extends JBaseCRUDController<Content> {
 		return content;
 	}
 
+	//切换开启评论状态(uuhelper)
+	@Before(UCodeInterceptor.class)
+	public void changeCommentSataus() {
+		Content c = ContentQuery.me().findById(getParaToBigInteger("id"));
+		String commentStatus = getPara("commentStatus");
+		if (c != null) {
+			c.setCommentStatus(commentStatus);
+			c.saveOrUpdate();
+			renderAjaxResultForSuccess("success");
+		} else {
+			renderAjaxResultForError("change comment status error!");
+		}
+	}
+
 }

+ 50 - 173
jpress-web-admin/src/main/webapp/WEB-INF/admin/comment/index.html

@@ -1,5 +1,42 @@
 <#include "../_inc/_layout.html"/> 
 <#macro script>
+function changeCommentSataus(id) {
+	var commentStatusObj = $("#commentStatus"+id);
+	var commentStatus = commentStatusObj.find("option:selected").val();
+
+	$.get("${CPATH}/admin/content/changeCommentSataus?ucode=${ucode}&id="+id+"&commentStatus="+commentStatus, function(result){
+		if(result.errorCode > 0){
+			alert(result.message);
+		}else{
+			location.reload();
+		}
+	});
+}
+
+function changePage(flag) {
+	var comment = $('.commentManage');
+	var group = $('.groupManage');
+	var pageChange = $('.pageChange');
+	if (flag == 0 && !comment.hasClass("active")) {
+		comment.addClass("active");
+		group.removeClass("active");
+	} else if (flag == 1 && !group.hasClass("active")) {
+		group.addClass("active");
+		comment.removeClass("active");
+	}
+}
+
+function showMessageSelect(id) {
+	var isShowMessageSelect = $("#isShowMessageSelect"+id);
+	var showStatus = isShowMessageSelect.find("option:selected").val();
+	if (showStatus == "normal") {
+		pub(id);
+	} else if (showStatus == "draft") {
+        draft(id);
+	}
+}
+
+
 function trash(id){
 	$.get("${CPATH}/admin/comment/trash?ucode=${ucode}&id="+id, function(result){
 		if(result.errorCode > 0){
@@ -86,99 +123,7 @@ function reply(id){
 	.navUas a.active,.navUas a:hover{
 		border-bottom: 3px solid #1ba047;
 	}
-	/*table表格*/
-	.box-content .box-message{
-		border-top: none;
-		margin-top: 40px;
-	}
-	.box-content .box-message table thead tr{
-		background: #f1f1f1;
-	}
-	.box-content .box-message table thead tr th.chooseCount span{
-		color: #9d9d9d;
-	}
-	.bodyUas .messageContent{
-		overflow: hidden;
-		width: 240px;
-	}
-	.bodyUas .messageContent .leftImg{
-		width: 65px;
-		height: 50px;
-		float: left;
-	}
-	.bodyUas .messageContent .leftImg img{
-		max-width: 65px;
-		max-height: 50px;
-	}
-	.bodyUas .messageContent .rightContent{
-		float: left;
-		margin-left: 10px;
-	}
-	.bodyUas .messageContent .rightContent p{
-		font-size: 16px;
-		color: #333;
-	}
-	.bodyUas .messageContent .rightContent span{
-		font-size: 16px;
-		color: #9d9d9d;
-	}
-	.bodyUas .messageTime{
-		font-size: 16px;
-		color: #333;
-	}
-	.bodyUas .handleMessage a{
-		margin-right: 20px;
-		font-size: 14px;
-		color: #0a44ff;
-        width: 50px;
-        display: inline-block;
-	}
-	.bodyUas .handleMessage a.showInfo{
-		background:  url('${CPATH}/static/jpress/admin/image/xiala.png') no-repeat 35px 8px;
-        color: #0a44ff;
-    }
-	.box-content .box-message .table tbody.bodyUas tr {
-		background-color: #fff;
-	}
-	.box-content .box-message .table tbody.bodyUas tr td{
-		vertical-align: middle;
-		height: 70px;
-	}
-	.box-content .box-message .table tbody.bodyUas tr:last-child{
-		border-bottom: 3px solid #000;
-	}
-	.box-content .box-message .messageNav{
-		margin-bottom: 15px;
-	}
-	.box-content .box-message .messageNav ul{
-		overflow: hidden;
-		height: 40px;
-	}
-	.box-content .box-message .messageNav ul li{
-		float: left;
-		width: 140px;
-		height: 40px;
-		line-height: 40px;
-		text-align: center;
 
-		list-style: none;
-	}
-	.box-content .box-message .messageNav ul li a{
-		display: inline-block;
-		width: 140px;
-		height: 40px;
-		color: #333;
-		border-radius: 5px;
-		border: 1px solid #797979;
-	}
-	.box-content .box-message .messageNav ul li:hover a,.box-content .box-message .messageNav ul li.active a{
-		border: none;
-		background: #379bd5;
-		color: #fff;
-	}
-	.content-wrapper{
-		background-color: #fff!important;
-	}
 </style>
 <@layout active_id=p child_active_id=c>
 
@@ -189,90 +134,22 @@ function reply(id){
 	</section>
 	<section class="content-header">
 		<div class="navUas">
-			<a class="active">留言管理</a><a>群发消息管理</a>
+			<a class="commentManage <#if !way?? || (way?? && way == 'comment')>active</#if>" onclick="changePage(0)" href="${CPATH}/admin/comment?t=comment&m=uuhelper&p=uuhelper&c=comment&way=comment">留言管理</a>
+            <a class="groupManage <#if way?? && (way == 'group' || way == 'detail')>active</#if>" onclick="changePage(1)" href="${CPATH}/admin/comment?t=comment&m=uuhelper&p=uuhelper&c=comment&way=group">群发消息管理</a>
 		</div>
 	</section>
 	<!-- Main content -->
-	<section class="content box-content">
-		<div class="box box-message">
-			<div class="messageNav">
-				<ul>
-					<li><a>已显示</a></li>
-					<li><a>未显示</a></li>
-					<li><a>已回复</a></li>
-					<li><a>未回复</a></li>
-				</ul>
-			</div>
-			<!-- /.box-header -->
-			<div class="box-body">
-				<form action="" method="POST" id="form">
-					<input type="hidden" name="ucode" value="${ucode}">
-					<table class="table table-striped" style="word-break:break-all">
-						<thead>
-						<tr>
-							<th style="padding-left: 40px;" width="25"><input type="checkbox"></th>
-							<th width="500" class="chooseCount">留言 <span>(已选中 <span>0</span>条)</span></th>
-							<th width="400">留言时间</th>
-							<th width="400">操作</th>
-						</tr>
-						</thead>
-						<tbody class="bodyUas">
-						<tr>
-							<td style="padding-left: 40px;"><input type="checkbox"></td>
-							<td>
-								<div class="messageContent">
-									<div class="leftImg">
-										<img src="${CPATH}/static/jpress/admin/image/nothumbnail.jpg" alt="">
-									</div>
-									<div class="rightContent">
-										<p>电量十足</p>
-										<span>赞</span>
-									</div>
-								</div>
-							</td>
-							<td class="messageTime">
-								2017-08-26 17:24:23
-							</td>
-							<td class="handleMessage">
-								<a class="showInfo">显示</a><a>置顶</a><a>回复</a><a>删除</a>
-							</td>
-						</tr>
-						<tr>
-							<td style="padding-left: 40px;"><input type="checkbox"></td>
-							<td>
-								<div class="messageContent">
-									<div class="leftImg">
-										<img src="${CPATH}/static/jpress/admin/image/nothumbnail.jpg" alt="">
-									</div>
-									<div class="rightContent">
-										<p>电量十足</p>
-										<span>赞</span>
-									</div>
-								</div>
-							</td>
-							<td class="messageTime">
-								2017-08-26 17:24:23
-							</td>
-							<td class="handleMessage">
-								<a class="showInfo">显示</a><a>置顶</a><a>回复</a><a>删除</a>
-							</td>
-						</tr>
-						</tbody>
-					</table>
-				</form>
-			</div>
-			<!-- /.box-body -->
-		</div>
-		<div class="cf">
-			<div class="pull-right " >
-				<#if page??>
-					<#include "../_inc/_paginate.html" />
-					<@paginate currentPage=page.pageNumber totalPage=page.totalPage actionUrl="?p="+(p!)+"&c="+(c!)+"&m="+(m!)+"&t="+(t!)+"&s="+(s!)+"&k="+(k!)+"&tids="+(tids!)+"&page="/>
-				</#if>
-			</div>
-		</div>
-		<!-- /.row -->
-	</section>
+	<#if way?? && way == "comment">
+		<#include "uuHelperCommentList.html" />
+	<#elseif way?? && way == "group">
+		<#include "uuHelperGroupList.html" />
+	<#elseif way?? && way == "detail">
+		<#include "uuHelperGroupDetail.html" />
+	<#else>
+		<#include "uuHelperCommentList.html" />
+	</#if>
+
+
 <#else>
 	<section class="content-header">
 		<h1>所有内容</h1>

+ 1 - 1
jpress-web-admin/src/main/webapp/WEB-INF/admin/comment/reply_layer.html

@@ -93,7 +93,7 @@ function save(){
 			<!-- /.col -->
 			<div class="col-md-12">
 				<div class="form-group">
-					您准备回复 ${comment.author!}在文章《<a href="${comment.contentUrl!}" target="_blank">${comment.content_title!}</a>》评论的如下内容:<br />
+					您准备回复 ${comment.author!}在文章《<a href="${comment.getContent().url!}" target="_blank">${comment.getContent().title!}</a>》评论的如下内容:<br />
 					${(comment.text)!}
 				</div>
 				<div class="box box-solid">

+ 51 - 46
jpress-web-admin/src/main/webapp/WEB-INF/admin/comment/uuHelperCommentList.html

@@ -83,52 +83,57 @@
                     </tr>
                     </thead>
                     <tbody class="bodyUas">
-                    <tr>
-                        <td>
-                            <div class="messageContent">
-                                <div class="leftImg">
-                                    <img src="${CPATH}/static/jpress/admin/image/nothumbnail.jpg" alt="">
-                                </div>
-                                <div class="rightContent">
-                                    <p>电量十足</p>
-                                    <span>赞</span>
-                                </div>
-                            </div>
-                        </td>
-                        <td class="messageTitle">UU助手上线啦</td>
-                        <td class="messageTime">
-                            2017-08-26 17:24:23
-                        </td>
-                        <td class="isShowMessage">
-                            不显示
-                        </td>
-                        <td class="handleMessage">
-                            <a>回复</a><a>删除</a>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td>
-                            <div class="messageContent">
-                                <div class="leftImg">
-                                    <img src="${CPATH}/static/jpress/admin/image/nothumbnail.jpg" alt="">
-                                </div>
-                                <div class="rightContent">
-                                    <p>电量十足</p>
-                                    <span>赞</span>
-                                </div>
-                            </div>
-                        </td>
-                        <td class="messageTitle">UU助手上线啦</td>
-                        <td class="messageTime">
-                            2017-08-26 17:24:23
-                        </td>
-                        <td class="isShowMessage">
-                            不显示
-                        </td>
-                        <td class="handleMessage">
-                            <a class="replay">已回复</a><a>删除</a>
-                        </td>
-                    </tr>
+                    <#if page??>
+                        <#list page.getList() as bean>
+                            <tr class="jp-onmouse">
+                                <td>
+                                    <div class="messageContent">
+                                        <div class="leftImg">
+                                            <img src="${(bean.user.avatar)!CPATH+'/static/jpress/admin/image/nothumbnail.jpg'}" alt="头像">
+                                        </div>
+                                        <div class="rightContent">
+                                            <p><a href="${CPATH}/admin/user/edit?id=${bean.user_id!}&c=list&p=user"><#if bean.user?? >${(bean.user.username)!}<#else>${(comment.author)!}</#if> </a></p>
+                                            <span>
+                                                ${bean.text!}<#if "draft" == bean.status!>(待审核)</#if>
+                                            </span>
+                                        </div>
+                                    </div>
+                                    <!--<div class="jp-flash-comment">-->
+                                        <!--<p class="row-actions jp-cancel-pad">-->
+                                            <!--<#if "normal" == bean.status!>-->
+                                                <!--<span class="approve"><a class="vim-a" href="javascript:reply(${bean.id})">回复</a></span>-->
+                                                <!--<span class="approve">|<a class="vim-a" href="${CPATH}/admin/comment/edit?id=${bean.id!}&p=${(p)!}&c=${(c)!}">编辑</a></span>-->
+                                                <!--<span class="spam">|<a class="vim-s vim-destructive" href="javascript:draft(${bean.id})">待审核</a></span>-->
+                                                <!--<span class="spam">|<a class="vim-s vim-destructive" href="javascript:trash(${bean.id})">垃圾箱</a></span>-->
+                                                <!--<#elseif "draft" == bean.status!>-->
+                                                    <!--<span class="approve"><a class="vim-a" href="javascript:reply(${bean.id})">回复</a></span>-->
+                                                    <!--<span class="approve">|<a class="vim-a" href="${CPATH}/admin/comment/edit?id=${bean.id!}&p=${(p)!}&c=${(c)!}">编辑</a></span>-->
+                                                    <!--<span class="spam">|<a class="vim-s vim-destructive" href="javascript:pub(${bean.id})">允许发布</a></span>-->
+                                                    <!--<span class="spam">|<a class="vim-s vim-destructive" href="javascript:trash(${bean.id})">垃圾箱</a></span>-->
+                                                    <!--<#else>-->
+                                                        <!--<span class="approve"> <a class="vim-a" href="javascript:restore(${bean.id})">放回草稿</a></span>-->
+                                                        <!--<span class="spam">|<a class="vim-s vim-destructive" href="javascript:del(${bean.id})">永久删除</a></span>-->
+                                            <!--</#if>-->
+                                        <!--</p>-->
+                                    <!--</div>-->
+                                </td>
+                                <td class="messageTitle">${bean.content_title!}</td>
+                                <td class="messageTime">
+                                    ${bean.created!}
+                                </td>
+                                <td class="isShowMessage">
+                                    <select id="isShowMessageSelect${bean.id}" onchange="showMessageSelect(${bean.id})">
+                                        <option value="draft" <#if bean?? && bean.status?? && bean.status=="draft"> selected="selected" </#if>>不显示</option>
+                                        <option value="normal" <#if bean?? && bean.status?? && bean.status=="normal"> selected="selected" </#if>>显示</option>
+                                    </select>
+                                </td>
+                                <td class="handleMessage">
+                                    <a href="javascript:reply(${bean.id})">回复</a><a href="javascript:trash(${bean.id})">删除</a>
+                                </td>
+                            </tr>
+                        </#list>
+                    </#if>
+
                     </tbody>
                 </table>
             </form>

+ 59 - 45
jpress-web-admin/src/main/webapp/WEB-INF/admin/comment/uuHelperGroupDetail.html

@@ -92,10 +92,27 @@
     <div class="box box-message">
         <div class="messageNav">
             <ul>
-                <li><a>已显示</a></li>
-                <li><a>未显示</a></li>
-                <li><a>已回复</a></li>
-                <li><a>未回复</a></li>
+                <li><a href="${CPATH}/admin/comment?t=${t!}&m=${m!}&p=${p!}&c=${c!}&s=normal&cid=${cid!}&way=${way!}">
+                        已显示 <span class="count">(${normal_count!"0"})</span>
+                    </a>
+                </li>
+
+                <li><a href="${CPATH}/admin/comment?t=${t!}&m=${m!}&p=${p!}&c=${c!}&s=draft&cid=${cid!}&way=${way!}">
+                        未显示 <span class="count">(${draft_count!"0"})</span>
+                    </a>
+                </li>
+                <li><a href="${CPATH}/admin/comment?t=${t!}&m=${m!}&p=${p!}&c=${c!}&son=true&cid=${cid!}&way=${way!}">
+                        已回复<span class="count">(${answered_count!"0"})</span>
+                    </a>
+                </li>
+                <li><a href="${CPATH}/admin/comment?t=${t!}&m=${m!}&p=${p!}&c=${c!}&son=false&cid=${cid!}&way=${way!}">
+                        未回复<span class="count">(${unanswered_count!"0"})</span>
+                    </a>
+                </li>
+                <li><a href="${CPATH}/admin/comment?t=${t!}&m=${m!}&p=${p!}&c=${c!}&s=delete&cid=${cid!}&way=${way!}">
+                        垃圾箱 <span class="count">(${delete_count!"0"})</span>
+                    </a>
+                </li>
             </ul>
         </div>
         <!-- /.box-header -->
@@ -105,53 +122,50 @@
                 <table class="table table-striped" style="word-break:break-all">
                     <thead>
                     <tr>
-                        <th style="padding-left: 40px;" width="25"><input type="checkbox"></th>
+                        <th style="padding-left: 40px;" width="25"><input name="dataItem" onclick="checkAll(this)" type="checkbox"></th>
                         <th width="500" class="chooseCount">留言 <span>(已选中 <span>0</span>条)</span></th>
                         <th width="400">留言时间</th>
                         <th width="400">操作</th>
                     </tr>
                     </thead>
                     <tbody class="bodyUas">
-                    <tr>
-                        <td style="padding-left: 40px;"><input type="checkbox"></td>
-                        <td>
-                            <div class="messageContent">
-                                <div class="leftImg">
-                                    <img src="${CPATH}/static/jpress/admin/image/nothumbnail.jpg" alt="">
-                                </div>
-                                <div class="rightContent">
-                                    <p>电量十足</p>
-                                    <span>赞</span>
-                                </div>
-                            </div>
-                        </td>
-                        <td class="messageTime">
-                            2017-08-26 17:24:23
-                        </td>
-                        <td class="handleMessage">
-                            <a>显示</a><a>置顶</a><a>回复</a><a>删除</a>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td style="padding-left: 40px;"><input type="checkbox"></td>
-                        <td>
-                            <div class="messageContent">
-                                <div class="leftImg">
-                                    <img src="${CPATH}/static/jpress/admin/image/nothumbnail.jpg" alt="">
-                                </div>
-                                <div class="rightContent">
-                                    <p>电量十足</p>
-                                    <span>赞</span>
-                                </div>
-                            </div>
-                        </td>
-                        <td class="messageTime">
-                            2017-08-26 17:24:23
-                        </td>
-                        <td class="handleMessage">
-                            <a>显示</a><a>置顶</a><a>回复</a><a>删除</a>
-                        </td>
-                    </tr>
+
+                    <#if page??>
+                        <#list page.getList() as bean>
+                            <tr>
+                                <td style="padding-left: 40px;"><input name="dataItem" type="checkbox"></td>
+                                <td>
+                                    <div class="messageContent">
+                                        <div class="leftImg">
+                                            <img src="${(bean.user.avatar)!CPATH+'/static/jpress/admin/image/nothumbnail.jpg'}" alt="头像">
+                                        </div>
+                                        <div class="rightContent">
+                                            <p><a href="${CPATH}/admin/user/edit?id=${bean.user_id!}&c=list&p=user"> ${(bean.user.username)!comment.author!} </a></p>
+                                            ${bean.text!}<#if "draft" == bean.status!>(待审核)<#elseif "delete" == bean.status!>(垃圾箱)</#if>
+                                        </div>
+                                    </div>
+                                </td>
+                                <td class="messageTime">
+                                    ${bean.created!}
+                                </td>
+                                <td class="handleMessage">
+                                    <#if "delete" == bean.status!>
+                                        <a href="javascript:restore(${bean.id})">放回草稿</a>
+                                        <a href="javascript:del(${bean.id})">永久删除</a>
+                                    <#else>
+                                        <a><select id="isShowMessageSelect${bean.id}" onchange="showMessageSelect(${bean.id})">
+                                            <option value="draft" <#if bean?? && bean.status?? && bean.status=="draft"> selected="selected" </#if>>不显示</option>
+                                            <option value="normal" <#if bean?? && bean.status?? && bean.status=="normal"> selected="selected" </#if>>显示</option>
+                                        </select>
+                                        </a>
+                                        <a>置顶</a>
+                                        <a href="javascript:reply(${bean.id})">回复</a>
+                                        <a href="javascript:trash(${bean.id})">删除</a>
+                                    </#if>
+                                </td>
+                            </tr>
+                        </#list>
+                    </#if>
                     </tbody>
                 </table>
             </form>

+ 29 - 24
jpress-web-admin/src/main/webapp/WEB-INF/admin/comment/uuHelperGroupList.html

@@ -53,30 +53,35 @@
                     </tr>
                     </thead>
                     <tbody class="bodyUas">
-                    <tr>
-                        <td class="messageTitle">UU助手上线啦</td>
-                        <td class="messageTime">
-                            2017-08-26 17:24:23
-                        </td>
-                        <td class="isOpenMessage">
-                            开启
-                        </td>
-                        <td class="handleMessage">
-                            <a class="replay">查看</a>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="messageTitle">UU助手上线啦</td>
-                        <td class="messageTime">
-                            2017-08-26 17:24:23
-                        </td>
-                        <td class="isOpenMessage">
-                            开启
-                        </td>
-                        <td class="handleMessage">
-                            <a class="replay">查看</a>
-                        </td>
-                    </tr>
+
+                        <@jp.contents module="uuhelper" orderBy="meta:push_time desc">
+                        <#list contents as content>
+                            <tr>
+                                <td class="messageTitle">${content.title!}</td>
+                                <td class="messageTime">
+                                    ${(content.getMetadataByKey("push_time"))!}
+                                </td>
+                                <td class="isOpenMessage">
+                                    <select id="commentStatus${content.id!}" onchange="changeCommentSataus(${content.id!})">
+                                        <#if (content.comment_status)?? && "close" == content.comment_status >
+                                            <option value="close" selected="selected">关闭</option>
+                                        <#else>
+                                            <option value="close">关闭</option>
+                                        </#if>
+                                        <#if (content.comment_status)?? && "open" == content.comment_status >
+                                            <option value="open" selected="selected">开启</option>
+                                        <#else>
+                                            <option value="open">开启</option>
+                                        </#if>
+                                    </select>
+                                </td>
+                                <td class="handleMessage">
+                                    <a class="replay" href="${CPATH}/admin/comment?t=comment&m=uuhelper&p=uuhelper&c=comment&cid=${content.id!}&way=detail">查看</a>
+                                </td>
+                            </tr>
+                        </#list>
+                        </@jp.contents>
+
                     </tbody>
                 </table>
             </form>

+ 49 - 18
jpress-web-template-usoftchina/src/main/webapp/templates/usoftchina/content_uuhelper.html

@@ -186,34 +186,65 @@
             <!--</div>-->
             <!--文本-->
             <p>${content.text!}</p>
-            <div class="readCount"><div><span>阅读 <em>${content.view_count!'0'}</em></span><span><i class="fa fa-thumbs-up"></i><em>${content.comment_count!'0'}</em></span></div><p>${(content.getMetadataByKey("copy_right"))!}</p></div>
+            <div class="readCount"><div><span>阅读 <em>${content.view_count!'0'}</em></span><span><i class="fa fa-thumbs-up"></i><em>${content.vote_up!'0'}</em></span></div><p>${(content.getMetadataByKey("copy_right"))!}</p></div>
         </div>
         <div class="footer">
             <div class="footer-header">
                 <div><span>写留言</span><i class="fa fa-pencil" aria-hidden="true"></i></div>
             </div>
             <div class="footer-section">
-                <div class="message">
-                    <div class="left">
-                        <div class="img" >
-                            <img src="/jpress/static/jpress/admin/image/dot.png" alt="">
+
+
+
+                <#if content.isCommentEnable() >
+                    <form action="${CPATH}/comment/submit" method="post"  id="comment">
+                        <input type="hidden" name="cid" value="${(content.id)!}" >
+                        <input type="hidden" name="anchor" value="comment" >
+                        <input type="hidden" id="parent_id" name="parent_id" >
+                        <div class="x-white-box">
+                            <h3 class="x-box-title">
+                                发表评论
+                            </h3>
+                            <div class="x-layout-100 clearfix">
+                                <textarea name="text" class="x-layout-100 x-border-grey x-box-border x-padding-5 x-item-space-8 body-bacground" placeholder="说点什么吧..."></textarea>
+                            </div>
+                            <div class="x-layout-100 clearfix">
+                                <button type="submit" class="x-button-primary x-border-none pull-right x-margin-top-5">发表评论</button>
+                            </div>
                         </div>
-                    </div>
-                    <div class="right">
-                        <div class="detail">
-                            <div class="title">
-                                <span>钟总 <em>昨天</em></span>
-                                <span><i class="fa fa-thumbs-up"></i><em>30</em></span>
+                    </form>
+                </#if>
+                <!-- -->
+                <@jp.commentPage pageSize="2">
+                <#if page ??>
+                    <#list page.getList() as comment>
+                        <div class="message">
+                            <div class="left">
+                                <div class="img" >
+                                    <img src="/jpress/static/jpress/admin/image/dot.png" alt="用户头像">
+                                </div>
                             </div>
-                            <p>优软科技拥有一支由优秀优软科技拥有一支由优秀优软科技拥有一支由优优软科技拥有一支由优秀优软科技拥有一支由优秀优软科技拥有一支由优秀优软科技拥有一支由优秀优软科技拥有一支由优秀优软科技拥有一支由优秀秀</p>
-                            <div class="title reply">
-                                <span>作者回复 <em>今天</em></span>
-                                <span><i class="fa fa-thumbs-up"></i><em>1</em></span>
+                            <div class="right">
+                                <div class="detail">
+                                    <div class="title">
+                                        <span>${comment.author!} <em>${(comment.created?string("yyyy-MM-dd"))!}</em></span>
+                                        <span><i class="fa fa-thumbs-up"></i><em>${(comment.vote_up)!'0'}</em></span>
+                                    </div>
+                                    <p>${comment.text!}</p>
+                                    <#if comment.qc_content ??>
+                                        <div class="title reply">
+                                            <span>作者回复: <em>${(comment.qc_created?string("yyyy-MM-dd"))!}</em></span>
+                                            <span><i class="fa fa-thumbs-up"></i><em>${(comment.vote_up)!'0'}</em></span>
+                                        </div>
+                                        <p>${comment.qc_content!}</p>
+                                    </#if>
+                                </div>
                             </div>
-                            <p>谢谢!</p>
                         </div>
-                    </div>
-                </div>
+                    </#list>
+
+                </#if>
+            </@jp.commentPage>
                 <div class="pull"><a href="">上拉加载更多</a></div>
             </div>
         </div>