-
+
comments/newReplyTopic.do?sessionMapID=${sessionMapID}&parentUid=${commentDto.comment.uid}
·
@@ -82,6 +95,13 @@
·
+
+ comments/makeSticky.do?sessionMapID=${sessionMapID}&commentUid=${commentDto.comment.uid}&create=${commentDto.comment.created.time}&sticky=${!commentDto.comment.sticky}
+
+
+ ·
+
+
-
+
/comments/viewTopic.do?pageLastId=${maxThreadUid}&likeCount=${minThreadLike}&pageSize=${sessionMap.pageSize}&sessionMapID=${sessionMapID}
" class="button">
Index: lams_central/web/css/defaultHTML_learner.css
===================================================================
diff -u -rd8be0fc2c13bfb38ac7239cf7185895a31845e2b -r16eafe54d28edddfe0bdb558a18c68e1962cb536
--- lams_central/web/css/defaultHTML_learner.css (.../defaultHTML_learner.css) (revision d8be0fc2c13bfb38ac7239cf7185895a31845e2b)
+++ lams_central/web/css/defaultHTML_learner.css (.../defaultHTML_learner.css) (revision 16eafe54d28edddfe0bdb558a18c68e1962cb536)
@@ -626,10 +626,13 @@
overflow: hidden;
}
+.comment-sticky {
+ color:#0087e5;
+}
.comment-author {
- color:#0087e5;
font-size:11px;
+ font-weight: bold;
margin-bottom:2px;
}
Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/comments/Comment.hbm.xml
===================================================================
diff -u -r46bcb6ea758a272250071d1a571d008c6745e593 -r16eafe54d28edddfe0bdb558a18c68e1962cb536
--- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/comments/Comment.hbm.xml (.../Comment.hbm.xml) (revision 46bcb6ea758a272250071d1a571d008c6745e593)
+++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/comments/Comment.hbm.xml (.../Comment.hbm.xml) (revision 16eafe54d28edddfe0bdb558a18c68e1962cb536)
@@ -137,6 +137,13 @@
column="comment_level"
/>
+
Index: lams_common/src/java/org/lamsfoundation/lams/comments/Comment.java
===================================================================
diff -u -r46bcb6ea758a272250071d1a571d008c6745e593 -r16eafe54d28edddfe0bdb558a18c68e1962cb536
--- lams_common/src/java/org/lamsfoundation/lams/comments/Comment.java (.../Comment.java) (revision 46bcb6ea758a272250071d1a571d008c6745e593)
+++ lams_common/src/java/org/lamsfoundation/lams/comments/Comment.java (.../Comment.java) (revision 16eafe54d28edddfe0bdb558a18c68e1962cb536)
@@ -52,7 +52,8 @@
private Date lastReplyDate;
private int replyNumber;
private boolean hideFlag;
-
+ private boolean sticky;
+
private Comment rootComment;
private Comment threadComment;
private short commentLevel;
@@ -177,6 +178,13 @@
this.hideFlag = hideFlag;
}
+ public boolean isSticky() {
+ return sticky;
+ }
+
+ public void setSticky(boolean sticky) {
+ this.sticky = sticky;
+ }
public Comment getParent() {
return parent;
}
Index: lams_common/src/java/org/lamsfoundation/lams/comments/dao/ICommentDAO.java
===================================================================
diff -u -r54921c2609f8b6eed36ab972d246bc9094489ebf -r16eafe54d28edddfe0bdb558a18c68e1962cb536
--- lams_common/src/java/org/lamsfoundation/lams/comments/dao/ICommentDAO.java (.../ICommentDAO.java) (revision 54921c2609f8b6eed36ab972d246bc9094489ebf)
+++ lams_common/src/java/org/lamsfoundation/lams/comments/dao/ICommentDAO.java (.../ICommentDAO.java) (revision 16eafe54d28edddfe0bdb558a18c68e1962cb536)
@@ -7,11 +7,8 @@
public interface ICommentDAO {
- /* Standard DAO call */
public abstract void saveOrUpdate(Comment comment);
- public abstract void update(Comment comment);
-
public abstract Comment getById(Long commentId);
/**
@@ -26,5 +23,7 @@
public abstract SortedSet getNextThreadByThreadId(final Long rootTopicId, final Long previousThreadMessageId,
Integer numberOfThreads, Integer sortBy, String extraSortParam, Integer userId);
+
+ public abstract SortedSet getStickyThreads(final Long rootTopicId, Integer sortBy, String extraSortParam, Integer userId);
}
\ No newline at end of file
Index: lams_common/src/java/org/lamsfoundation/lams/comments/dao/hibernate/CommentDAO.java
===================================================================
diff -u -r54921c2609f8b6eed36ab972d246bc9094489ebf -r16eafe54d28edddfe0bdb558a18c68e1962cb536
--- lams_common/src/java/org/lamsfoundation/lams/comments/dao/hibernate/CommentDAO.java (.../CommentDAO.java) (revision 54921c2609f8b6eed36ab972d246bc9094489ebf)
+++ lams_common/src/java/org/lamsfoundation/lams/comments/dao/hibernate/CommentDAO.java (.../CommentDAO.java) (revision 16eafe54d28edddfe0bdb558a18c68e1962cb536)
@@ -53,11 +53,6 @@
}
@Override
- public void update(Comment comment) {
- this.getHibernateTemplate().saveOrUpdate(comment);
- }
-
- @Override
public Comment getById(Long commentId) {
return (Comment) getHibernateTemplate().get(Comment.class, commentId);
}
@@ -128,10 +123,9 @@
}
private static final String SQL_QUERY_FIND_FIRST_THREAD_TOP_BY_UID = "SELECT uid FROM lams_comment"
- + " WHERE root_comment_uid = :rootUid AND comment_level = 1 ORDER BY uid DESC";
-
+ + " WHERE root_comment_uid = :rootUid AND comment_level = 1 AND sticky = 0 ORDER BY uid DESC";
private static final String SQL_QUERY_FIND_NEXT_THREAD_TOP = "SELECT uid FROM lams_comment"
- + " WHERE root_comment_uid = :rootUid AND uid < :lastUid AND comment_level = 1 ORDER BY uid DESC";
+ + " WHERE root_comment_uid = :rootUid AND uid < :lastUid AND comment_level = 1 AND sticky = 0 ORDER BY uid DESC";
private static final String SQL_QUERY_FIND_NEXT_THREAD_MESSAGES =
"SELECT c.*, SUM(l.vote) likes_total, l2.vote user_vote FROM lams_comment c "
@@ -180,7 +174,7 @@
+ " FROM lams_comment c "
+ " LEFT JOIN lams_comment_likes l ON c.uid = l.comment_uid "
+ " LEFT JOIN lams_comment_likes l2 ON c.uid = l2.comment_uid AND l2.user_id=:userId "
- + " WHERE root_comment_uid = :rootUid AND comment_level = 1 "
+ + " WHERE root_comment_uid = :rootUid AND comment_level = 1 AND sticky = 0 "
+ " GROUP BY c.uid "
+ " ORDER BY likes_total DESC, c.uid DESC";
@@ -189,7 +183,7 @@
+ " FROM lams_comment c "
+ " LEFT JOIN lams_comment_likes l ON c.uid = l.comment_uid "
+ " LEFT JOIN lams_comment_likes l2 ON c.uid = l2.comment_uid AND l2.user_id=:userId "
- + " WHERE root_comment_uid = :rootUid AND comment_level = 1 "
+ + " WHERE root_comment_uid = :rootUid AND comment_level = 1 AND sticky = 0 "
+ " GROUP BY c.uid "
+ " ORDER BY likes_total DESC, c.uid DESC) cl "
+ " WHERE (cl.likes_total = :like AND cl.uid < :lastUid ) "
@@ -250,4 +244,81 @@
}
return new TreeSet();
}
+
+ @Override
+ public SortedSet getStickyThreads(final Long rootTopicId, Integer sortBy, String extraSortParam, Integer userId) {
+
+ if (ICommentService.SORT_BY_LIKE.equals(sortBy)) {
+ return getStickyByThreadIdLikes(rootTopicId, sortBy, extraSortParam, userId);
+ } else {
+ return getStickyByThreadIdNewestFirst(rootTopicId, sortBy, userId);
+ }
+
+ }
+
+ private static final String SQL_QUERY_FIND_STICKY_BY_UID = "SELECT uid FROM lams_comment"
+ + " WHERE root_comment_uid = :rootUid AND comment_level = 1 AND sticky = 1 ORDER BY uid DESC";
+
+ @SuppressWarnings({"unchecked" })
+ private SortedSet getStickyByThreadIdNewestFirst(final Long rootTopicId, Integer sortBy, Integer userId) {
+
+ // the search to get to the top level is quite light, so get just the uids
+ // then build a complete set.
+ List threadUidList = (List) getSession().
+ createSQLQuery(SQL_QUERY_FIND_STICKY_BY_UID)
+ .setLong("rootUid", rootTopicId)
+ .list();
+
+ if (threadUidList != null && threadUidList.size() > 0) {
+ SQLQuery query = getSession().createSQLQuery(SQL_QUERY_FIND_NEXT_THREAD_MESSAGES);
+ query.addEntity("comment", Comment.class)
+ .addScalar("likes_total", Hibernate.INTEGER)
+ .addScalar("user_vote", Hibernate.INTEGER)
+ .setLong("userId", userId != null ? userId : 0)
+ .setParameterList("threadIds", threadUidList);
+ List |