Index: lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Timestamp.hbm.xml
===================================================================
diff -u
--- lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Timestamp.hbm.xml (revision 0)
+++ lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Timestamp.hbm.xml (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: lams_tool_forum/conf/language/lams/ApplicationResources.properties
===================================================================
diff -u -rafae3c86d50dcfd6c351daafc198184d2b3f20d9 -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision afae3c86d50dcfd6c351daafc198184d2b3f20d9)
+++ lams_tool_forum/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -32,6 +32,7 @@
lable.topic.title.update =Last post
lable.topic.title.author =Author
lable.topic.title.replies =Replies
+lable.topic.title.repliesnew =New
lable.topic.title.mark =Mark
lable.topic.subject.by =By
lable.topic.title.message.number =# of Msg
Index: lams_tool_forum/conf/language/lams/ApplicationResources_en_AU.properties
===================================================================
diff -u -rafae3c86d50dcfd6c351daafc198184d2b3f20d9 -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision afae3c86d50dcfd6c351daafc198184d2b3f20d9)
+++ lams_tool_forum/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -32,6 +32,7 @@
lable.topic.title.update =Last post
lable.topic.title.author =Author
lable.topic.title.replies =Replies
+lable.topic.title.repliesnew =New
lable.topic.title.mark =Mark
lable.topic.subject.by =By
lable.topic.title.message.number =# of Msg
Index: lams_tool_forum/conf/xdoclet/filters.xml
===================================================================
diff -u -r4526bc668178760326017e561b75a0358e10b4fb -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/conf/xdoclet/filters.xml (.../filters.xml) (revision 4526bc668178760326017e561b75a0358e10b4fb)
+++ lams_tool_forum/conf/xdoclet/filters.xml (.../filters.xml) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -1,7 +1,7 @@
hibernateFilter
- org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
+ org.lamsfoundation.lams.util.CustomizedOpenSessionInViewFilter
sessionFactoryBeanName
Index: lams_tool_forum/db/model/forum.clay
===================================================================
diff -u -rc081e2b0c9c82fc97d2d39fb7109c9c2f10ff224 -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/db/model/forum.clay (.../forum.clay) (revision c081e2b0c9c82fc97d2d39fb7109c9c2f10ff224)
+++ lams_tool_forum/db/model/forum.clay (.../forum.clay) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -9,7 +9,7 @@
-
+
Index: lams_tool_forum/db/sql/cleanup_lams_tool_forum.sql
===================================================================
diff -u -rac0c4f506511cfd628fc56582b17c934425db055 -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/db/sql/cleanup_lams_tool_forum.sql (.../cleanup_lams_tool_forum.sql) (revision ac0c4f506511cfd628fc56582b17c934425db055)
+++ lams_tool_forum/db/sql/cleanup_lams_tool_forum.sql (.../cleanup_lams_tool_forum.sql) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -6,3 +6,4 @@
delete from tl_lafrum11_message;
delete from tl_lafrum11_message_seq;
delete from tl_lafrum11_tool_session;
+delete from tl_lafrum11_timestamp;
\ No newline at end of file
Index: lams_tool_forum/db/sql/create_lams_tool_forum.sql
===================================================================
diff -u -rc081e2b0c9c82fc97d2d39fb7109c9c2f10ff224 -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/db/sql/create_lams_tool_forum.sql (.../create_lams_tool_forum.sql) (revision c081e2b0c9c82fc97d2d39fb7109c9c2f10ff224)
+++ lams_tool_forum/db/sql/create_lams_tool_forum.sql (.../create_lams_tool_forum.sql) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -8,6 +8,7 @@
drop table if exists tl_lafrum11_message_seq;
drop table if exists tl_lafrum11_report;
drop table if exists tl_lafrum11_tool_session;
+drop table if exists tl_lafrum11_timestamp;
create table tl_lafrum11_attachment (
uid bigint not null auto_increment,
file_version_id bigint,
@@ -103,7 +104,6 @@
session_name varchar(250),
primary key (uid)
)TYPE=InnoDB;
-
CREATE TABLE tl_lafrum11_conditions (
condition_id BIGINT(20) NOT NULL
, content_uid BIGINT(20)
@@ -123,6 +123,16 @@
, CONSTRAINT ForumConditionQuestionToForumQuestion FOREIGN KEY (topic_uid)
REFERENCES tl_lafrum11_message(uid) ON DELETE CASCADE ON UPDATE CASCADE
)TYPE=InnoDB;
+create table tl_lafrum11_timestamp (
+ uid BIGINT(20) not null auto_increment,
+ message_uid BIGINT(20) not null,
+ timestamp_date DATETIME not null,
+ forum_user_uid BIGINT(20) not null,
+ primary key (`uid`),
+ unique key `uid` (`uid`),
+ key `message_uid` (`message_uid`),
+ key `forum_user_uid` (`forum_user_uid`)
+)TYPE=InnoDB;
alter table tl_lafrum11_attachment add index FK389AD9A2FE939F2A (message_uid), add constraint FK389AD9A2FE939F2A foreign key (message_uid) references tl_lafrum11_message (uid);
alter table tl_lafrum11_attachment add index FK389AD9A2131CE31E (forum_uid), add constraint FK389AD9A2131CE31E foreign key (forum_uid) references tl_lafrum11_forum (uid);
@@ -138,13 +148,14 @@
alter table tl_lafrum11_message_seq add index FKD2C71F88FE939F2A (message_uid), add constraint FKD2C71F88FE939F2A foreign key (message_uid) references tl_lafrum11_message (uid);
alter table tl_lafrum11_message_seq add index FKD2C71F8845213B4D (root_message_uid), add constraint FKD2C71F8845213B4D foreign key (root_message_uid) references tl_lafrum11_message (uid);
alter table tl_lafrum11_tool_session add index FK5A04D7AE131CE31E (forum_uid), add constraint FK5A04D7AE131CE31E foreign key (forum_uid) references tl_lafrum11_forum (uid);
+alter table tl_lafrum11_timestamp add index ForumUserFK (forum_user_uid), add constraint ForumUserFK foreign key (forum_user_uid) references tl_lafrum11_forum_user (uid);
+alter table tl_lafrum11_timestamp add index MessageFK (message_uid), add constraint MessageFK foreign key (message_uid) references tl_lafrum11_message (uid);
-
INSERT INTO tl_lafrum11_forum (uid,title,instructions,online_instructions,offline_instructions,content_id,allow_anonym,run_offline,lock_on_finished,content_in_use,define_later,allow_edit,allow_rich_editor,
allow_new_topic,allow_upload,maximum_reply, minimum_reply,limited_input_flag,limited_of_chars,reflect_on_activity)
VALUES(1,"Forum","Instructions",null,null,${default_content_id},0,0,0,0,0,1,0,1,0,1,0,1,5000,0);
INSERT INTO `tl_lafrum11_message` (`uid`, `create_date`, `last_reply_date`, `update_date`, `create_by`, `modified_by`, `subject`, `body`, `is_authored`, `is_anonymous`, `forum_session_uid`, `parent_uid`, `forum_uid`, `reply_number`, `hide_flag`, `report_id`) VALUES
(1,NOW(),NOW(),NOW(),null,null,'Topic Heading','Topic message',1,0,NULL,NULL,1,0,0,NULL);
-
+
SET FOREIGN_KEY_CHECKS=1;
\ No newline at end of file
Index: lams_tool_forum/db/sql/drop_lams_tool_forum.sql
===================================================================
diff -u -rc081e2b0c9c82fc97d2d39fb7109c9c2f10ff224 -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/db/sql/drop_lams_tool_forum.sql (.../drop_lams_tool_forum.sql) (revision c081e2b0c9c82fc97d2d39fb7109c9c2f10ff224)
+++ lams_tool_forum/db/sql/drop_lams_tool_forum.sql (.../drop_lams_tool_forum.sql) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -10,6 +10,7 @@
drop table if exists tl_lafrum11_report;
drop table if exists tl_lafrum11_condition_topics;
drop table if exists tl_lafrum11_conditions;
+drop table if exists tl_lafrum11_timestamp;
SET FOREIGN_KEY_CHECKS=1;
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dbupdates/autopatchContext.xml
===================================================================
diff -u -r558ead6c7d0ae923be08b6e6cd60ea44839ecfdc -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dbupdates/autopatchContext.xml (.../autopatchContext.xml) (revision 558ead6c7d0ae923be08b6e6cd60ea44839ecfdc)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dbupdates/autopatchContext.xml (.../autopatchContext.xml) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -2,10 +2,11 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java
===================================================================
diff -u -r86ef0c92b6e5b8a3915fcc960b918ab95b629503 -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java (.../MessageDTO.java) (revision 86ef0c92b6e5b8a3915fcc960b918ab95b629503)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java (.../MessageDTO.java) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -26,6 +26,7 @@
package org.lamsfoundation.lams.tool.forum.dto;
import java.util.ArrayList;
+import java.util.Date;
import java.util.Iterator;
import java.util.List;
@@ -52,7 +53,10 @@
//2 fields use for export portfolio function
private String attachmentName;
private String attachmentLocalUrl;
-
+
+ private int newPostingsNum;
+ private Date lastTopicDate;
+
/**
* Get a MessageDTO
instance from a given Message
.
*
@@ -202,4 +206,19 @@
this.numOfPosts = numOfPosts;
}
+ public void setNewPostingsNum(int newPostingsNum) {
+ this.newPostingsNum = newPostingsNum;
+ }
+
+ public int getNewPostingsNum() {
+ return newPostingsNum;
+ }
+
+ public void setLastTopicDate(Date lastTopicDate) {
+ this.lastTopicDate = lastTopicDate;
+ }
+
+ public Date getLastTopicDate() {
+ return lastTopicDate;
+ }
}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml
===================================================================
diff -u -rc081e2b0c9c82fc97d2d39fb7109c9c2f10ff224 -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml (.../forumApplicationContext.xml) (revision c081e2b0c9c82fc97d2d39fb7109c9c2f10ff224)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml (.../forumApplicationContext.xml) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -1,155 +1,199 @@
-
+
-
- org.lamsfoundation.lams.tool.forum.ApplicationResources
+
+
+ org.lamsfoundation.lams.tool.forum.ApplicationResources
+
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
- org/lamsfoundation/lams/learningdesign/BranchCondition.hbm.xml
- org/lamsfoundation/lams/tool/forum/persistence/Forum.hbm.xml
- org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml
- org/lamsfoundation/lams/tool/forum/persistence/Attachment.hbm.xml
- org/lamsfoundation/lams/tool/forum/persistence/ForumUser.hbm.xml
- org/lamsfoundation/lams/tool/forum/persistence/ForumReport.hbm.xml
- org/lamsfoundation/lams/tool/forum/persistence/ForumToolSession.hbm.xml
- org/lamsfoundation/lams/tool/forum/persistence/MessageSeq.hbm.xml
- org/lamsfoundation/lams/tool/forum/persistence/ForumCondition.hbm.xml
-
-
-
+
+
+
+ org/lamsfoundation/lams/learningdesign/BranchCondition.hbm.xml
+ org/lamsfoundation/lams/tool/forum/persistence/Forum.hbm.xml
+ org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml
+ org/lamsfoundation/lams/tool/forum/persistence/Attachment.hbm.xml
+ org/lamsfoundation/lams/tool/forum/persistence/ForumUser.hbm.xml
+ org/lamsfoundation/lams/tool/forum/persistence/ForumReport.hbm.xml
+ org/lamsfoundation/lams/tool/forum/persistence/ForumToolSession.hbm.xml
+ org/lamsfoundation/lams/tool/forum/persistence/MessageSeq.hbm.xml
+ org/lamsfoundation/lams/tool/forum/persistence/ForumCondition.hbm.xml
+ org/lamsfoundation/lams/tool/forum/persistence/Timestamp.hbm.xml
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
- false
-
-
-
- PROPAGATION_REQUIRED,-java.lang.Exception
- PROPAGATION_REQUIRED,-java.lang.Exception
- PROPAGATION_REQUIRED,-java.lang.Exception
-
- PROPAGATION_REQUIRED,-java.lang.Exception
- PROPAGATION_REQUIRED,-java.lang.Exception
- PROPAGATION_REQUIRED,-java.lang.Exception
-
- PROPAGATION_REQUIRED,-java.lang.Exception
- PROPAGATION_REQUIRED,-java.lang.Exception
- PROPAGATION_REQUIRED,-java.lang.Exception
- PROPAGATION_REQUIRED,-java.lang.Exception
- PROPAGATION_REQUIRED,-java.lang.Exception
- PROPAGATION_REQUIRED,-java.lang.Exception
- PROPAGATION_REQUIRED,-java.lang.Exception
- PROPAGATION_REQUIRED,-java.lang.Exception
-
- PROPAGATION_REQUIRED,-java.lang.Exception
- PROPAGATION_REQUIRED,-java.lang.Exception
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+ PROPAGATION_REQUIRED,-java.lang.Exception
+ PROPAGATION_REQUIRED,-java.lang.Exception
+ PROPAGATION_REQUIRED,-java.lang.Exception
+
+ PROPAGATION_REQUIRED,-java.lang.Exception
+ PROPAGATION_REQUIRED,-java.lang.Exception
+ PROPAGATION_REQUIRED,-java.lang.Exception
+
+ PROPAGATION_REQUIRED,-java.lang.Exception
+ PROPAGATION_REQUIRED,-java.lang.Exception
+ PROPAGATION_REQUIRED,-java.lang.Exception
+ PROPAGATION_REQUIRED,-java.lang.Exception
+ PROPAGATION_REQUIRED,-java.lang.Exception
+ PROPAGATION_REQUIRED,-java.lang.Exception
+ PROPAGATION_REQUIRED,-java.lang.Exception
+ PROPAGATION_REQUIRED,-java.lang.Exception
+
+ PROPAGATION_REQUIRED,-java.lang.Exception
+ PROPAGATION_REQUIRED,-java.lang.Exception
PROPAGATION_REQUIRED,-java.lang.Exception
PROPAGATION_REQUIRED,-java.lang.Exception
-
-
-
+
+
+
\ No newline at end of file
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java
===================================================================
diff -u -r5cf94a873af22670c1bcfb832c7e868ef168333a -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java (.../Message.java) (revision 5cf94a873af22670c1bcfb832c7e868ef168333a)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java (.../Message.java) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -52,7 +52,6 @@
private boolean isAuthored;
private boolean isAnonymous;
-
private Date created;
private Date updated;
private Date lastReplyDate;
@@ -66,7 +65,6 @@
private ForumUser modifiedBy;
private Set attachments;
private ForumReport report;
-
private Set sessionClones;
private ForumToolContentHandler toolContentHandler;
@@ -168,6 +166,7 @@
}
this.setUpdated(new Date(now));
}
+
public boolean equals(Object o) {
if (this == o)
return true;
@@ -409,7 +408,8 @@
public Message getParent() {
return parent;
}
- /**
+
+ /**
* @return a set of Attachments to this Message.
*
* @hibernate.set table="ATTACHMENT"
@@ -512,4 +512,5 @@
public void setToolContentHandler(ForumToolContentHandler toolContentHandler) {
this.toolContentHandler = toolContentHandler;
}
+
}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageDao.java
===================================================================
diff -u -r4526bc668178760326017e561b75a0358e10b4fb -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageDao.java (.../MessageDao.java) (revision 4526bc668178760326017e561b75a0358e10b4fb)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageDao.java (.../MessageDao.java) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -25,6 +25,10 @@
package org.lamsfoundation.lams.tool.forum.persistence;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
@@ -49,8 +53,11 @@
+ " where m.toolSession.sessionId=?";
private static final String SQL_QUERY_TOPICS_NUMBER_BY_USER_SESSION = "select count(*) from " + Message.class.getName() + " m "
- + " where m.createdBy.userId=? and m.toolSession.sessionId=? and m.isAuthored = false";
+ + " where m.createdBy.userId=? and m.toolSession.sessionId=? and m.isAuthored = false";
+ private static final String SQL_QUERY_LAST_TOPIC_DATE_BY_MESSAGE = " select m.updated from " + Message.class.getName() + " m "
+ + " where m.uid IN (select seq.message.uid FROM " + MessageSeq.class.getName()
+ + " seq WHERE seq.rootMessage.uid = ?) order by m.updated desc ";
public void saveOrUpdate(Message message) {
message.updateModificationData();
@@ -126,5 +133,16 @@
else
return 0;
}
-
+ /**
+ * Return date of the last posting in a thread
+ * @param messageID
+ * @return
+ */
+ public Date getLastTopicDate(Long messageID) {
+ List list = this.getHibernateTemplate().find(SQL_QUERY_LAST_TOPIC_DATE_BY_MESSAGE, new Object[]{messageID});
+ if(list != null && list.size() > 0)
+ return ((Date) list.get(0));
+ else
+ return new Date();
+ }
}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Timestamp.hbm.xml
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Timestamp.hbm.xml (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Timestamp.hbm.xml (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Timestamp.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Timestamp.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Timestamp.java (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -0,0 +1,113 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+/* $$Id$$ */
+package org.lamsfoundation.lams.tool.forum.persistence;
+
+import java.util.Date;
+
+/**
+ * Forum
+ *
+ * @author ruslan
+ *
+ * @hibernate.class table="tl_lafrum11_timestamp"
+ *
+ */
+public class Timestamp implements Cloneable {
+ private Long uid; // key
+ private ForumUser forumUser;
+ private Message message;
+ private Date timestamp;
+
+ /**
+ * Default contruction method.
+ *
+ */
+ public Timestamp() {
+ }
+
+ // **********************************************************
+ // get/set methods
+ // **********************************************************
+ /**
+ * @hibernate.id column="uid" generator-class="native"
+ */
+ public Long getUid() {
+ return uid;
+ }
+
+ public void setUid(Long uid) {
+ this.uid = uid;
+ }
+
+ /**
+ * Returns the user's timestamp
+ *
+ * @return timestamp
+ * @hibernate.property column="timestamp_date"
+ */
+ public Date getTimestamp() {
+ return timestamp;
+ }
+
+ /**
+ * Sets the user's timestamp
+ *
+ * @param timestamp
+ */
+ public void setTimestamp(Date timestamp) {
+ this.timestamp = timestamp;
+ }
+
+ /**
+ * @return Returns the user of the user who saved the timestamp
+ *
+ * @hibernate.many-to-one cascade="none" column="forum_user_uid"
+ *
+ */
+ public ForumUser getForumUser() {
+ return forumUser;
+ }
+
+ /**
+ * @param userid
+ * The userid of the user who saved the timestamp
+ */
+ public void setForumUser(ForumUser forumUser) {
+ this.forumUser = forumUser;
+ }
+
+ /**
+ * @hibernate.many-to-one column="message_uid"
+ * cascade="none"
+ */
+ public Message getMessage() {
+ return message;
+ }
+
+ public void setMessage(Message message) {
+ this.message = message;
+ }
+
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/TimestampDao.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/TimestampDao.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/TimestampDao.java (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -0,0 +1,164 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+/* $$Id$$ */
+package org.lamsfoundation.lams.tool.forum.persistence;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
+
+/**
+ * TimestampDao
+ * @author ruslan
+ */
+public class TimestampDao extends HibernateDaoSupport {
+
+ /* 0 if user opens forum first time; otherwise >0 */
+ private static final String SQL_QUERY_FIRST_TIME_BY_MESSAGE_USER =
+ " SELECT count(*) FROM " + Timestamp.class.getName() + " ts WHERE ts.message.uid = ? AND ts.forumUser.uid = ? ";
+
+ private static final String SQL_QUERY_TIMESTAMP_BY_MESSAGE_USER =
+ " FROM " + Timestamp.class.getName() + " ts WHERE ts.message.uid = ? AND ts.forumUser.uid = ? ";
+
+ /*private static final String SQL_QUERY_ROOT_MESSAGE_NUMBER_BY_SESSION_MESSAGE_USER =
+ "SELECT count(*) FROM " + Message.class.getName() + " AS p3 WHERE p3.uid = ? " +
+ "AND p3.updated > ( SELECT ts.timestamp FROM " + Timestamp.class.getName() + " ts WHERE ts.message.uid = ? AND ts.forumUser.uid = ?)";
+ */
+
+ private static final String SQL_QUERY_MESSAGE_NUMBER_BY_MESSAGE_USER =
+ "SELECT count(*) FROM " + Message.class.getName() + " mes WHERE mes.uid IN (SELECT seq.message.uid FROM " +
+ MessageSeq.class.getName() + " seq WHERE seq.rootMessage.uid = ?) " + " AND mes.updated > (SELECT ts.timestamp FROM " +
+ Timestamp.class.getName() + " ts WHERE ts.message.uid = ? AND ts.forumUser.uid = ?)";
+
+ /*private static final String SQL_QUERY_ROOT_MESSAGE_CHANGED =
+ " SELECT count(*) FROM " + Message.class.getName() + " mes1, " + Message.class.getName() + " mes2" +
+ " WHERE mes1.updated = mes2.updated AND mes1.uid = ? AND mes1.parent.uid IS NULL " +
+ " AND mes1.updated > (SELECT ts.timestamp FROM " + Timestamp.class.getName() +
+ " ts WHERE ts.message.uid = ? AND ts.forumUser.uid = ?)";
+ */
+ /*private static final String SQL_QUERY_ROOT_MESSAGE_CHANGED =
+ "SELECT count(*) FROM " + Message.class.getName() + " AS mes LEFT JOIN mes.parent " +
+ " WHERE ";
+ /*" WHERE p1.uid = p2.parent AND (p1.uid = ? OR p1.parent = ?) " +
+ " AND p2.toolSession.sessionId = ? AND p2.updated > ( SELECT ts.timestamp FROM " + Timestamp.class.getName() +
+ " ts WHERE ts.message.uid = ? AND ts.forumUser.uid = ?)";
+ */
+ /* Recursive query for 10 levels down
+ private static final String SQL_QUERY_MESSAGE_NUMBER_BY_SESSION_MESSAGE_USER =
+ "SELECT count(*) FROM " + Message.class.getName() + " AS p1 LEFT JOIN p1.parent " +
+ " WHERE p1.toolSession.sessionId = ? " +
+ " AND p1.updated > (SELECT ts.timestamp FROM " + Timestamp.class.getName() + " ts WHERE ts.message.uid = ? AND ts.forumUser.uid = ?)";
+ */
+ /*private static final String SQL_QUERY_MESSAGE_NUMBER_BY_SESSION_MESSAGE_USER =
+ "SELECT count(*) FROM " + Message.class.getName() + " as p1 LEFT JOIN " +
+ " p1.parent as p2 LEFT JOIN p2.parent as p3 LEFT JOIN p3.parent as p4 LEFT JOIN p4.parent as p5 " +
+ " WHERE p1.uid = ? OR p2.uid = ? OR p3.uid = ? OR p4.uid = ? OR p5.uid = ? AND p1.toolSession.sessionId = ? " +
+ " AND p1.updated > (SELECT ts.timestamp FROM " + Timestamp.class.getName() + " ts WHERE ts.message.uid = ? AND ts.forumUser.uid = ?)";
+ */
+ /*private static final String SQL_QUERY_MESSAGE_NUMBER_BY_SESSION_MESSAGE_USER =
+ "SELECT count(*) FROM " + Message.class.getName() + " AS p1, " + Message.class.getName() + " AS p2 " +
+ " WHERE p1.uid = p2.parent AND (p1.uid = ? OR p1.parent = ?) " +
+ " AND p2.toolSession.sessionId = ? AND p2.updated > ( SELECT ts.timestamp FROM " + Timestamp.class.getName() +
+ " ts WHERE ts.message.uid = ? AND ts.forumUser.uid = ?)";*/
+
+ public void delete(Timestamp timestamp) {
+ this.getHibernateTemplate().delete(timestamp);
+ }
+
+ /**
+ * Save timestamp.
+ *
+ * @param timestamp
+ * @return
+ */
+ public void saveOrUpdate(Timestamp timestamp) {
+ this.getHibernateTemplate().saveOrUpdate(timestamp);
+ }
+
+ /**
+ * Get timestamp.
+ *
+ * @param messageId
+ * @param forumUserId
+ * @return
+ */
+ public Timestamp getTimestamp(Long messageId, Long forumUserId) {
+ List timestampList = this.getHibernateTemplate().find(SQL_QUERY_TIMESTAMP_BY_MESSAGE_USER, new Object[]{messageId, forumUserId});
+ if (timestampList != null && timestampList.size() > 0)
+ return (Timestamp) (timestampList.get(0));
+ else
+ return null;
+ }
+
+ /**
+ * Get number of new postings.
+ *
+ * @param sessionId
+ * @param messageId
+ * @param userId
+ * @return
+ */
+ public int getNewMessagesNum(Long messageId, Long userId) {
+ List firstTimeList = this.getHibernateTemplate().find(SQL_QUERY_FIRST_TIME_BY_MESSAGE_USER, new Object[]{messageId, userId});
+ if (firstTimeList != null && firstTimeList.size() > 0)
+ {
+ if (((Number)firstTimeList.get(0)).intValue() > 0) // if not first time
+ {
+ //List rootPostingsList = this.getHibernateTemplate().find(SQL_QUERY_ROOT_MESSAGE_NUMBER_BY_SESSION_MESSAGE_USER,
+ // new Object[]{messageId, messageId, userId});
+ List postingsList = this.getHibernateTemplate().find(SQL_QUERY_MESSAGE_NUMBER_BY_MESSAGE_USER,
+ new Object[]{messageId, messageId, userId});
+ //List rootUpdatedList = this.getHibernateTemplate().find(SQL_QUERY_ROOT_MESSAGE_CHANGED,
+ // new Object[]{messageId, messageId, userId});
+
+ if(postingsList != null && postingsList.size() > 0)
+ {
+ //int rootMesNum = ((Number)rootPostingsList.get(0)).intValue();
+ //int postingsNum = ((Number)postingsList.get(0)).intValue();
+ //int rootUpdated = ((Number)rootUpdatedList.get(0)).intValue();
+
+ /*if (mesNum > 0) // if there are new messages
+ {
+ if (rootUpdated == 1) // if root posting was updated
+ return mesNum + 1;
+ else
+ return mesNum;
+ }
+ else if (mesNum == 0) // if there are no messages
+ return rootMesNum;*/
+
+ return ((Number)postingsList.get(0)).intValue();
+ }
+ else
+ return 0;
+ }
+ else
+ return -1; // user views forum for the first time
+ }
+ else
+ return 0;
+ }
+
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java
===================================================================
diff -u -rc4dfe712e2f4adc4d448e5653df6430eb2949002 -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision c4dfe712e2f4adc4d448e5653df6430eb2949002)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -89,6 +89,8 @@
import org.lamsfoundation.lams.tool.forum.persistence.MessageSeq;
import org.lamsfoundation.lams.tool.forum.persistence.MessageSeqDao;
import org.lamsfoundation.lams.tool.forum.persistence.PersistenceException;
+import org.lamsfoundation.lams.tool.forum.persistence.Timestamp;
+import org.lamsfoundation.lams.tool.forum.persistence.TimestampDao;
import org.lamsfoundation.lams.tool.forum.util.DateComparator;
import org.lamsfoundation.lams.tool.forum.util.ForumConstants;
import org.lamsfoundation.lams.tool.forum.util.ForumToolContentHandler;
@@ -118,6 +120,8 @@
private AttachmentDao attachmentDao;
private MessageDao messageDao;
+
+ private TimestampDao timestampDao;
private MessageSeqDao messageSeqDao;
@@ -243,7 +247,7 @@
MessageSeq msgSeq = messageSeqDao.getByTopicId(message.getUid());
Message root = msgSeq.getRootMessage();
// update reply date
- messageDao.saveOrUpdate(root);
+ //messageDao.saveOrUpdate(root); // do not update date of root posting
return message;
}
@@ -321,11 +325,11 @@
msgSeq.setRootMessage(root);
messageSeqDao.save(msgSeq);
- // update last reply date for root message
+ // update last reply date for root messagegetlas
root.setLastReplyDate(new Date());
// update reply message number for root
root.setReplyNumber(root.getReplyNumber() + 1);
- messageDao.saveOrUpdate(root);
+ //messageDao.saveOrUpdate(root); // do not update the date of root posting
return replyMessage;
}
@@ -1138,7 +1142,15 @@
public void setForumDao(ForumDao forumDao) {
this.forumDao = forumDao;
}
+
+ public TimestampDao getTimestampDao() {
+ return timestampDao;
+ }
+ public void setTimestampDao(TimestampDao timestampDao) {
+ this.timestampDao = timestampDao;
+ }
+
public MessageDao getMessageDao() {
return messageDao;
}
@@ -1255,4 +1267,48 @@
} while (uniqueNumber == null);
return getForumOutputFactory().buildTextSearchConditionName(uniqueNumber);
}
+
+ /**
+ * Get number of new postings.
+ *
+ * @param sessionId
+ * @param messageId
+ * @param userId
+ * @return
+ */
+ public int getNewMessagesNum(Long messageId, Long userId) {
+ return timestampDao.getNewMessagesNum(messageId, userId);
+ }
+
+ /**
+ * Get last topic date.
+ *
+ * @param messageId
+ * @return
+ */
+ public Date getLastTopicDate(Long messageId) {
+ return messageDao.getLastTopicDate(messageId);
+ }
+
+ /**
+ * Get timestamp.
+ *
+ * @param messageId
+ * @param forumUserId
+ * @return
+ */
+ public Timestamp getTimestamp(Long MessageId, Long forumUserId) throws PersistenceException {
+ return timestampDao.getTimestamp(MessageId, forumUserId);
+ }
+
+ /**
+ * Save timestamp.
+ *
+ * @param timestamp
+ * @return
+ */
+ public void saveTimestamp(Timestamp timestamp) {
+ timestampDao.saveOrUpdate(timestamp);
+ }
+
}
\ No newline at end of file
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java
===================================================================
diff -u -rc081e2b0c9c82fc97d2d39fb7109c9c2f10ff224 -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java (.../IForumService.java) (revision c081e2b0c9c82fc97d2d39fb7109c9c2f10ff224)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java (.../IForumService.java) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -25,6 +25,7 @@
package org.lamsfoundation.lams.tool.forum.service;
import java.util.Collection;
+import java.util.Date;
import java.util.List;
import org.apache.struts.upload.FormFile;
@@ -39,6 +40,7 @@
import org.lamsfoundation.lams.tool.forum.persistence.ForumUser;
import org.lamsfoundation.lams.tool.forum.persistence.Message;
import org.lamsfoundation.lams.tool.forum.persistence.PersistenceException;
+import org.lamsfoundation.lams.tool.forum.persistence.Timestamp;
import org.lamsfoundation.lams.util.audit.IAuditService;
/**
@@ -50,7 +52,7 @@
// ************************************************************************************
/**
* Create a Forum instance according to the default content.
- * Note, this new insstance won't save into database until called persist method.
+ * Note, this new instance won't save into database until called persist method.
*
* @param contentID
* @return
@@ -105,7 +107,43 @@
// ************************************************************************************
// Topic Method
// ************************************************************************************
+
/**
+ * Get number of new postings.
+ *
+ * @param sessionId
+ * @param messageId
+ * @param userId
+ * @return
+ */
+ public int getNewMessagesNum(Long messageId, Long userId);
+
+ /**
+ * Get last topic date.
+ *
+ * @param messageId
+ * @return
+ */
+ public Date getLastTopicDate(Long messageId);
+
+ /**
+ * Get timestamp.
+ *
+ * @param messageId
+ * @param forumUserId
+ * @return
+ */
+ public Timestamp getTimestamp(Long MessageId, Long forumUserId);
+
+ /**
+ * Save timestamp.
+ *
+ * @param timestamp
+ * @return
+ */
+ public void saveTimestamp(Timestamp timestamp);
+
+ /**
* Create a root topic.
*
* @param forumId
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java
===================================================================
diff -u -rc081e2b0c9c82fc97d2d39fb7109c9c2f10ff224 -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java (.../ForumConstants.java) (revision c081e2b0c9c82fc97d2d39fb7109c9c2f10ff224)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java (.../ForumConstants.java) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -140,7 +140,7 @@
public static final String ATTR_REFLECTION_INSTRUCTION = "reflectInstructions";
public static final String ATTR_REFLECTION_ENTRY = "reflectEntry";
-
+
public static final String ATTR_MINIMUM_REPLY = "minimumReply";
public static final String ATTR_MAXIMUM_REPLY = "maximumReply";
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java
===================================================================
diff -u -ra01292ae06e058ffcc16aaeec6d61959a7b69273 -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision a01292ae06e058ffcc16aaeec6d61959a7b69273)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -25,6 +25,9 @@
package org.lamsfoundation.lams.tool.forum.web.actions;
import java.io.IOException;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
@@ -44,6 +47,7 @@
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
+import org.hibernate.Session;
import org.lamsfoundation.lams.events.IEventNotificationService;
import org.lamsfoundation.lams.notebook.model.NotebookEntry;
import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants;
@@ -59,6 +63,8 @@
import org.lamsfoundation.lams.tool.forum.persistence.ForumUser;
import org.lamsfoundation.lams.tool.forum.persistence.Message;
import org.lamsfoundation.lams.tool.forum.persistence.PersistenceException;
+import org.lamsfoundation.lams.tool.forum.persistence.Timestamp;
+import org.lamsfoundation.lams.tool.forum.service.ForumService;
import org.lamsfoundation.lams.tool.forum.service.ForumServiceProxy;
import org.lamsfoundation.lams.tool.forum.service.IForumService;
import org.lamsfoundation.lams.tool.forum.util.ForumConstants;
@@ -268,6 +274,19 @@
forumUser.getUserId().longValue(), IEventNotificationService.DELIVERY_METHOD_MAIL,
IEventNotificationService.PERIODICITY_SINGLE);
}
+
+ // displaying new postings
+ for (Iterator iterator = rootTopics.iterator(); iterator.hasNext();) {
+ MessageDTO messageDTO = (MessageDTO) iterator.next();
+ int numOfNewPosts = forumService.getNewMessagesNum(
+ messageDTO.getMessage().getUid(), forumUser.getUid());
+ if (numOfNewPosts == -1) // first time; show all postings as new, including root message
+ messageDTO.setNewPostingsNum(messageDTO.getMessage().getReplyNumber() + 1);
+ else
+ messageDTO.setNewPostingsNum(numOfNewPosts);
+
+ messageDTO.setLastTopicDate(forumService.getLastTopicDate(messageDTO.getMessage().getUid()));
+ }
return mapping.findForward("success");
}
@@ -462,10 +481,45 @@
// as it has a link from the view topic screen back to View Forum screen.
boolean hideReflection = WebUtil.readBooleanParam(request, ForumConstants.ATTR_HIDE_REFLECTION, false);
sessionMap.put(ForumConstants.ATTR_HIDE_REFLECTION, hideReflection);
-
+
+ // Saving or updating user timestamp
+ saveUserTimestamp(rootTopicId, forumUser);
+
return mapping.findForward("success");
-
}
+
+ /**
+ * Saving user timestamp
+ *
+ * @param toorTopicId
+ * @param forumUser
+ * @return
+ */
+ private void saveUserTimestamp(Long rootTopicId, ForumUser forumUser)
+ {
+ Date curDate = new Date();
+ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ try {
+ curDate = dateFormat.parse(dateFormat.format(new Date()));
+ } catch(ParseException pe) {
+ pe.printStackTrace();
+ }
+
+ Timestamp timestamp = forumService.getTimestamp(rootTopicId, forumUser.getUid());
+ if (timestamp != null)
+ {
+ timestamp.setTimestamp(curDate);
+ forumService.saveTimestamp(timestamp);
+ }
+ else
+ {
+ timestamp = new Timestamp();
+ timestamp.setMessage(forumService.getMessage(rootTopicId));
+ timestamp.setTimestamp(curDate);
+ timestamp.setForumUser(forumUser);
+ forumService.saveTimestamp(timestamp);
+ }
+ }
/**
* Display empty page for a new topic in forum
@@ -518,11 +572,25 @@
forumService = getForumManager();
forumService.createRootTopic(forumId, sessionId, message);
- // echo back current root topic to fourm init page
+ // echo back current root topic to forum init page
List rootTopics = forumService.getRootTopics(sessionId);
request.setAttribute(ForumConstants.AUTHORING_TOPICS_LIST, rootTopics);
request.setAttribute(ForumConstants.ATTR_SESSION_MAP_ID, messageForm.getSessionMapID());
-
+
+ saveUserTimestamp(message.getUid(), forumUser);
+
+ for (Iterator iterator = rootTopics.iterator(); iterator.hasNext();) {
+ MessageDTO messageDTO = (MessageDTO) iterator.next();
+ int numOfNewPosts = forumService.getNewMessagesNum(
+ messageDTO.getMessage().getUid(), forumUser.getUid());
+ if (numOfNewPosts == -1) // first time; show all postings as new, including root message
+ messageDTO.setNewPostingsNum(messageDTO.getMessage().getReplyNumber() + 1);
+ else
+ messageDTO.setNewPostingsNum(numOfNewPosts);
+
+ messageDTO.setLastTopicDate(forumService.getLastTopicDate(messageDTO.getMessage().getUid()));
+ }
+
return mapping.findForward("success");
}
@@ -626,6 +694,9 @@
request.setAttribute(ForumConstants.ATTR_NUM_OF_POSTS, numOfPosts);
sessionMap.remove(ForumConstants.ATTR_ORIGINAL_MESSAGE);
+
+ // Saving or updating user timestamp
+ saveUserTimestamp(rootTopicId, forumUser);
return mapping.findForward("success");
}
@@ -759,7 +830,10 @@
request.setAttribute(ForumConstants.AUTHORING_TOPIC_THREAD, msgDtoList);
request.setAttribute(ForumConstants.ATTR_SESSION_MAP_ID, messageForm.getSessionMapID());
-
+
+ // Saving or updating user timestamp
+ saveUserTimestamp(rootTopicId, forumUser);
+
return mapping.findForward("success");
}
@@ -804,7 +878,7 @@
request.setAttribute(ForumConstants.AUTHORING_TOPIC_THREAD, msgDtoList);
request.setAttribute(ForumConstants.ATTR_SESSION_MAP_ID, WebUtil
.readStrParam(request, ForumConstants.ATTR_SESSION_MAP_ID));
-
+
return mapping.findForward("success");
}
Index: lams_tool_forum/web/WEB-INF/lams.tld
===================================================================
diff -u -rc081e2b0c9c82fc97d2d39fb7109c9c2f10ff224 -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/web/WEB-INF/lams.tld (.../lams.tld) (revision c081e2b0c9c82fc97d2d39fb7109c9c2f10ff224)
+++ lams_tool_forum/web/WEB-INF/lams.tld (.../lams.tld) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -123,6 +123,26 @@
+ Converts role name into form usable as message resources key
+ Converts role name into form usable as message resources key
+
+
+ role
+ org.lamsfoundation.lams.web.tag.RoleTag
+ empty
+
+
+ Converts role name into form usable as message resources key
+ role
+ true
+
+ true
+
+
+
+
+
+
Help tag
Help tag
@@ -167,26 +187,6 @@
- Converts role name into form usable as message resources key
- Converts role name into form usable as message resources key
-
-
- role
- org.lamsfoundation.lams.web.tag.RoleTag
- empty
-
-
- Converts role name into form usable as message resources key
- role
- true
-
- true
-
-
-
-
-
-
Output stylesheet based on the user preferences.
User's chosen stylesheet
@@ -289,11 +289,6 @@
true
- index
- false
- true
-
-
indexed
false
true
Index: lams_tool_forum/web/WEB-INF/struts-config.xml
===================================================================
diff -u -r05db875c7974d705f89231416ff6dfe91a5e70f1 -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision 05db875c7974d705f89231416ff6dfe91a5e70f1)
+++ lams_tool_forum/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -18,25 +18,25 @@
type="org.lamsfoundation.lams.tool.forum.web.forms.ForumForm"
/>
-
+
Index: lams_tool_forum/web/WEB-INF/tags/Head.tag
===================================================================
diff -u -r18e5e690d2e1a7c3d918759f7a2827c8205feaac -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/web/WEB-INF/tags/Head.tag (.../Head.tag) (revision 18e5e690d2e1a7c3d918759f7a2827c8205feaac)
+++ lams_tool_forum/web/WEB-INF/tags/Head.tag (.../Head.tag) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -1,41 +1,41 @@
-<%/****************************************************************
- * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
- * =============================================================
- * License Information: http://lamsfoundation.org/licensing/lams/2.0/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2.0
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- *
- * http://www.gnu.org/licenses/gpl.txt
- * ****************************************************************
- */
-
-/**
- * Head.tag
- * Author: Fiona Malikoff
+<%/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+/**
+ * Head.tag
+ * Author: Fiona Malikoff
* Description: Sets up the non-cache pragma statements and the UTF-8
- * encoding. Use in place of the normal head tag.
- */
+ * encoding. Use in place of the normal head tag.
+ */
%>
-
-<%@ tag body-content="scriptless"%>
+<%@ tag body-content="scriptless"%>
+
-
+
Index: lams_tool_forum/web/WEB-INF/tags/Passon.tag
===================================================================
diff -u -r9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6 -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/web/WEB-INF/tags/Passon.tag (.../Passon.tag) (revision 9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6)
+++ lams_tool_forum/web/WEB-INF/tags/Passon.tag (.../Passon.tag) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -1,86 +1,86 @@
-<%
-/****************************************************************
- * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
- * =============================================================
- * License Information: http://lamsfoundation.org/licensing/lams/2.0/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2.0
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- *
- * http://www.gnu.org/licenses/gpl.txt
- * ****************************************************************
- */
-
- /**
- * Passon
- * Author: Mitchell Seaton
- * Description: Passes on progress data to the Flash Learner to update the progress bar.
- *
- */
-
- %>
-<%@ tag body-content="empty" %>
-<%@ attribute name="progress" required="true" rtexprvalue="true" type="java.lang.String" %>
-<%@ attribute name="version" required="false" rtexprvalue="true" %>
-<%@ attribute name="id" required="true" rtexprvalue="true" %>
-<%@ attribute name="redirect" required="false" rtexprvalue="true" %>
-<%@ taglib uri="tags-core" prefix="c" %>
-<%@ taglib uri="tags-lams" prefix="lams" %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+<%
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+ /**
+ * Passon
+ * Author: Mitchell Seaton
+ * Description: Passes on progress data to the Flash Learner to update the progress bar.
+ *
+ */
+
+ %>
+<%@ tag body-content="empty" %>
+<%@ attribute name="progress" required="true" rtexprvalue="true" type="java.lang.String" %>
+<%@ attribute name="version" required="false" rtexprvalue="true" %>
+<%@ attribute name="id" required="true" rtexprvalue="true" %>
+<%@ attribute name="redirect" required="false" rtexprvalue="true" %>
+<%@ taglib uri="tags-core" prefix="c" %>
+<%@ taglib uri="tags-lams" prefix="lams" %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: lams_tool_forum/web/WEB-INF/web.xml
===================================================================
diff -u -re851ecbb7a28dba597688df7f4466b2ab603405c -r59e4b8d442ec5f40e2e7a5bef1bda2059953b59a
--- lams_tool_forum/web/WEB-INF/web.xml (.../web.xml) (revision e851ecbb7a28dba597688df7f4466b2ab603405c)
+++ lams_tool_forum/web/WEB-INF/web.xml (.../web.xml) (revision 59e4b8d442ec5f40e2e7a5bef1bda2059953b59a)
@@ -18,19 +18,14 @@
classpath:/org/lamsfoundation/lams/lesson/lessonApplicationContext.xml
classpath:/org/lamsfoundation/lams/learning/learningApplicationContext.xml
classpath:/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml
+ classpath:/org/lamsfoundation/lams/tool/forum/dbupdates/autopatchContext.xml
-
-
- org.springframework.web.context.ContextLoaderListener
-
-
-
hibernateFilter
- org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
+ org.lamsfoundation.lams.util.CustomizedOpenSessionInViewFilter
sessionFactoryBeanName
@@ -73,6 +68,11 @@
org.springframework.web.context.ContextLoaderListener
+
+
+ org.lamsfoundation.lams.web.session.SetMaxTimeoutListener
+
+
exportPortfolio
@@ -148,6 +148,10 @@
/exportPortfolio
+
+ 120
+
+