Index: lams_tool_chat/build.properties =================================================================== diff -u -r05db875c7974d705f89231416ff6dfe91a5e70f1 -r9f7df51118e418eead64378c028572b0baf39196 --- lams_tool_chat/build.properties (.../build.properties) (revision 05db875c7974d705f89231416ff6dfe91a5e70f1) +++ lams_tool_chat/build.properties (.../build.properties) (revision 9f7df51118e418eead64378c028572b0baf39196) @@ -11,7 +11,7 @@ package=org/lamsfoundation/lams/tool/chat package.name=org.lamsfoundation.lams.tool.chat weblib=lib -tool.version=20081125 +tool.version=20110416 # Minimum compatible version min.server.version.number=2.0.3 Index: lams_tool_chat/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r0246b1520c8a24678789f5dc5900b1a9c8c552bf -r9f7df51118e418eead64378c028572b0baf39196 --- lams_tool_chat/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 0246b1520c8a24678789f5dc5900b1a9c8c552bf) +++ lams_tool_chat/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 9f7df51118e418eead64378c028572b0baf39196) @@ -122,7 +122,16 @@ textsearch.phrase =have this exact wording or phrase: textsearch.any.words =have one or more of these words: message.contentInUseSet =Modification of content is not allowed since one or more learners has attempted the activity. -message.alertContentEdit =Warning: One of more learners have accessed this activity. Changing this content will result in learners getting different information. +message.alertContentEdit monitor.summary.date.restriction =Date restriction +monitor.summary.when.date.restriction.is.set =Learners will not be able to use the chat after the set date and time. +monitor.summary.after.date =Date/time: +monitor.summary.set.restriction =Set restriction +monitor.summary.unset.restriction =Remove restriction +authoring.info.teacher.set.restriction =The instructor has set a date/time restriction for this activity from {0}. After this time this activity will not be available. +monitor.summary.notification =Notification +monitor.summary.date.restriction.set =Date restriction has been set +monitor.summary.date.restriction.removed =Date restriction has been removed + #======= End labels: Exported 117 labels for en AU ===== Index: lams_tool_chat/db/sql/create_lams_tool_chat.sql =================================================================== diff -u -rcd0d0b28a7c27711a74ce2b41821f3ccf5c80df9 -r9f7df51118e418eead64378c028572b0baf39196 --- lams_tool_chat/db/sql/create_lams_tool_chat.sql (.../create_lams_tool_chat.sql) (revision cd0d0b28a7c27711a74ce2b41821f3ccf5c80df9) +++ lams_tool_chat/db/sql/create_lams_tool_chat.sql (.../create_lams_tool_chat.sql) (revision 9f7df51118e418eead64378c028572b0baf39196) @@ -10,7 +10,7 @@ drop table if exists tl_lachat11_conditions; create table tl_lachat11_attachment (uid bigint not null auto_increment, file_version_id bigint, file_type varchar(255), file_name varchar(255), file_uuid bigint, create_date datetime, chat_uid bigint, primary key (uid))type=innodb; -create table tl_lachat11_chat (uid bigint not null auto_increment, create_date datetime, update_date datetime, create_by bigint, title varchar(255), instructions text, run_offline bit, lock_on_finished bit, reflect_on_activity bit, reflect_instructions text, online_instructions text, offline_instructions text, content_in_use bit, define_later bit, tool_content_id bigint, filtering_enabled bit, filter_keywords text, primary key (uid))type=innodb; +create table tl_lachat11_chat (uid bigint not null auto_increment, create_date datetime, update_date datetime, create_by bigint, title varchar(255), instructions text, run_offline bit, lock_on_finished bit, reflect_on_activity bit, reflect_instructions text, online_instructions text, offline_instructions text, content_in_use bit, define_later bit, tool_content_id bigint, filtering_enabled bit, filter_keywords text, submission_deadline datetime default null, primary key (uid))type=innodb; create table tl_lachat11_message (uid bigint not null auto_increment, chat_session_uid bigint not null, from_user_uid bigint, to_user_uid bigint, type varchar(255), body text, send_date datetime, hidden bit, primary key (uid))type=innodb; create table tl_lachat11_session (uid bigint not null auto_increment, session_end_date datetime, session_start_date datetime, status integer, session_id bigint, session_name varchar(250), chat_uid bigint, jabber_room varchar(250), room_created bit, primary key (uid))type=innodb; create table tl_lachat11_user (uid bigint not null auto_increment, user_id bigint, last_name varchar(255), login_name varchar(255), first_name varchar(255), jabber_id varchar(255), finishedActivity bit, jabber_nickname varchar(255), chat_session_uid bigint, primary key (uid))type=innodb; Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dbupdates/patch20110416_updateFrom235.sql =================================================================== diff -u --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dbupdates/patch20110416_updateFrom235.sql (revision 0) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dbupdates/patch20110416_updateFrom235.sql (revision 9f7df51118e418eead64378c028572b0baf39196) @@ -0,0 +1,16 @@ +-- SQL statements to update from LAMS 2.3.5 + +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; + +----------------------Put all sql statements below here------------------------- + +alter table tl_lachat11_chat add column submission_deadline datetime default null; +UPDATE lams_tool SET tool_version = "20110416" WHERE tool_signature = "lachat11"; + + +----------------------Put all sql statements above here------------------------- + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; \ No newline at end of file Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dto/ChatDTO.java =================================================================== diff -u -r41a8f54fc41167091b0031f6bc8998298745f6d8 -r9f7df51118e418eead64378c028572b0baf39196 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dto/ChatDTO.java (.../ChatDTO.java) (revision 41a8f54fc41167091b0031f6bc8998298745f6d8) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dto/ChatDTO.java (.../ChatDTO.java) (revision 9f7df51118e418eead64378c028572b0baf39196) @@ -28,6 +28,7 @@ import java.util.Iterator; import java.util.Set; import java.util.TreeSet; +import java.util.Date; import org.apache.log4j.Logger; import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; @@ -62,6 +63,8 @@ public String reflectInstructions; + public Date submissionDeadline; + public Set onlineInstructionsFiles = new TreeSet(); public Set offlineInstructionsFiles = new TreeSet(); @@ -82,6 +85,7 @@ lockOnFinish = chat.isLockOnFinished(); filteringEnabled = chat.isFilteringEnabled(); filteredKeyWords = chat.getFilterKeywords(); + submissionDeadline = chat.getSubmissionDeadline(); for (Iterator i = chat.getChatAttachments().iterator(); i.hasNext();) { ChatAttachment att = (ChatAttachment) i.next(); @@ -229,4 +233,12 @@ public void setFilteredKeyWords(String filteredKeyWords) { this.filteredKeyWords = filteredKeyWords; } + + public Date getSubmissionDeadline() { + return submissionDeadline; + } + + public void setSubmissionDeadline(Date submissionDeadline) { + this.submissionDeadline = submissionDeadline; + } } \ No newline at end of file Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/model/Chat.java =================================================================== diff -u -rcd0d0b28a7c27711a74ce2b41821f3ccf5c80df9 -r9f7df51118e418eead64378c028572b0baf39196 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/model/Chat.java (.../Chat.java) (revision cd0d0b28a7c27711a74ce2b41821f3ccf5c80df9) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/model/Chat.java (.../Chat.java) (revision 9f7df51118e418eead64378c028572b0baf39196) @@ -85,6 +85,8 @@ private boolean defineLater; private Long toolContentId; + + private Date submissionDeadline; private Set chatAttachments; @@ -367,6 +369,19 @@ this.filterKeywords = filterKeywords; } + /** + * @hibernate.property column="submission_deadline" + * @return + */ + public Date getSubmissionDeadline() { + return submissionDeadline; + } + + public void setSubmissionDeadline(Date submissionDeadline) { + this.submissionDeadline = submissionDeadline; + } + + /** * toString * Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/util/ChatConstants.java =================================================================== diff -u -r37b49e5e78d2b57936d98e68f6057539472b7725 -r9f7df51118e418eead64378c028572b0baf39196 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/util/ChatConstants.java (.../ChatConstants.java) (revision 37b49e5e78d2b57936d98e68f6057539472b7725) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/util/ChatConstants.java (.../ChatConstants.java) (revision 9f7df51118e418eead64378c028572b0baf39196) @@ -57,10 +57,18 @@ public static final String USER_MESSAGES_DEFINITION_NAME = "user.messages.output.definition.chat"; public static final String USER_MESSAGES_DEFAULT_CONDITION_DISPLAY_NAME_KEY = "user.messages.output.definition.chat.default.condition"; public static final String ALL_USERS_MESSAGES_DEFINITION_NAME = "all.users.messages.output.definition.chat"; + public static final String TEXT_SEARCH_DEFINITION_NAME = "text.search.output.definition.chat"; + public static final String TEXT_SEARCH_DEFAULT_CONDITION_DISPLAY_NAME_KEY = "text.search.output.definition.chat.default.condition"; + public static final String SUCCESS = "success"; public static final String ERROR_MSG_CONDITION = "error.condition"; public static final String ERROR_MSG_NAME_BLANK = "error.condition.name.blank"; public static final String ERROR_MSG_NAME_DUPLICATED = "error.condition.duplicated.name"; - - public static final String MESSAGE_SEPARATOR = "

"; + public static final String MESSAGE_SEPARATOR = " "; + + /* Date time restriction LDEV-2657 */ + public static final String ATTR_SUBMISSION_DEADLINE = "submissionDeadline"; + public static final String ATTR_IS_SUBMISSION_DEADLINE_PASSED = "isSubmissionDeadlinePassed"; + + } \ No newline at end of file Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/LearningAction.java =================================================================== diff -u -r67552f37eb7b21ad6be4ef51ef0d3cc2999d7c1a -r9f7df51118e418eead64378c028572b0baf39196 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/LearningAction.java (.../LearningAction.java) (revision 67552f37eb7b21ad6be4ef51ef0d3cc2999d7c1a) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/LearningAction.java (.../LearningAction.java) (revision 9f7df51118e418eead64378c028572b0baf39196) @@ -26,6 +26,7 @@ import java.io.IOException; import java.util.Date; +import java.util.TimeZone; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -54,6 +55,7 @@ import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; +import org.lamsfoundation.lams.util.DateUtil; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.util.XMPPUtil; import org.lamsfoundation.lams.web.action.LamsDispatchAction; @@ -147,6 +149,30 @@ return mapping.findForward("runOffline"); } + /* Check if submission deadline is null */ + + Date submissionDeadline = chatDTO.getSubmissionDeadline(); + request.setAttribute("chatDTO", chatDTO); + + if (submissionDeadline != null) { + + HttpSession ss = SessionManager.getSession(); + UserDTO learnerDto = (UserDTO) ss.getAttribute(AttributeNames.USER); + TimeZone learnerTimeZone = learnerDto.getTimeZone(); + Date tzSubmissionDeadline = DateUtil.convertToTimeZoneFromDefault(learnerTimeZone, submissionDeadline); + Date currentLearnerDate = DateUtil.convertToTimeZoneFromDefault(learnerTimeZone, new Date()); + request.setAttribute("submissionDeadline", submissionDeadline); + + //calculate whether submission deadline has passed, and if so forward to "runOffline" + if (currentLearnerDate.after(tzSubmissionDeadline)) { + return mapping.findForward("runOffline"); + + } + + } + + + return mapping.findForward("learning"); } Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/MonitoringAction.java =================================================================== diff -u -rc20b8bc20f56ae4d510bc5c4f2bf101a6ce7261b -r9f7df51118e418eead64378c028572b0baf39196 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision c20b8bc20f56ae4d510bc5c4f2bf101a6ce7261b) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision 9f7df51118e418eead64378c028572b0baf39196) @@ -24,10 +24,13 @@ package org.lamsfoundation.lams.tool.chat.web.actions; +import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.TimeZone; +import javax.servlet.http.HttpSession; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -49,6 +52,7 @@ import org.lamsfoundation.lams.tool.chat.util.ChatConstants; import org.lamsfoundation.lams.tool.chat.web.forms.MonitoringForm; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.DateUtil; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.action.LamsDispatchAction; import org.lamsfoundation.lams.web.session.SessionManager; @@ -96,7 +100,23 @@ Long currentTab = WebUtil.readLongParam(request, AttributeNames.PARAM_CURRENT_TAB,true); chatDTO.setCurrentTab(currentTab); + + /* Check if submission deadline is null */ + Date submissionDeadline = chatDTO.getSubmissionDeadline(); + + if (submissionDeadline != null) { + + HttpSession ss = SessionManager.getSession(); + UserDTO learnerDto = (UserDTO) ss.getAttribute(AttributeNames.USER); + TimeZone learnerTimeZone = learnerDto.getTimeZone(); + Date tzSubmissionDeadline = DateUtil.convertToTimeZoneFromDefault(learnerTimeZone, submissionDeadline); + request.setAttribute("submissionDeadline", tzSubmissionDeadline.getTime()); + + } + + + Map sessCountMap = chatService .getMessageCountBySession(chat.getUid()); @@ -214,6 +234,43 @@ return openChatHistory(mapping, form, request, response); } + /** + * Set Submission Deadline + * + * @param mapping + * @param form + * @param request + * @param response + * @return + */ + public ActionForward setSubmissionDeadline(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + + // set up chatService + if (chatService == null) { + chatService = ChatServiceProxy.getChatService(this.getServlet() + .getServletContext()); + } + + Long contentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); + Chat chat = chatService.getChatByContentId(contentID); + + Long dateParameter = WebUtil.readLongParam(request, ChatConstants.ATTR_SUBMISSION_DEADLINE, true); + Date tzSubmissionDeadline = null; + if (dateParameter != null) { + Date submissionDeadline = new Date(dateParameter); + HttpSession ss = SessionManager.getSession(); + UserDTO teacher = (UserDTO) ss.getAttribute(AttributeNames.USER); + TimeZone teacherTimeZone = teacher.getTimeZone(); + tzSubmissionDeadline = DateUtil.convertFromTimeZoneToDefault(teacherTimeZone, submissionDeadline); + } + chat.setSubmissionDeadline(tzSubmissionDeadline); + chatService.saveOrUpdateChat(chat); + + return null; + } + + /* Private Methods */ private ChatUser getCurrentUser(Long toolSessionId) { Index: lams_tool_chat/web/pages/learning/learning.jsp =================================================================== diff -u -rce3e782fd6844641f7298e09104f8d7554f073ff -r9f7df51118e418eead64378c028572b0baf39196 --- lams_tool_chat/web/pages/learning/learning.jsp (.../learning.jsp) (revision ce3e782fd6844641f7298e09104f8d7554f073ff) +++ lams_tool_chat/web/pages/learning/learning.jsp (.../learning.jsp) (revision 9f7df51118e418eead64378c028572b0baf39196) @@ -51,6 +51,13 @@ + +
+ + + +
+
  Index: lams_tool_chat/web/pages/learning/runOffline.jsp =================================================================== diff -u -r896248d87ee3eb2da93ba7a9f11ca2de11eb4040 -r9f7df51118e418eead64378c028572b0baf39196 --- lams_tool_chat/web/pages/learning/runOffline.jsp (.../runOffline.jsp) (revision 896248d87ee3eb2da93ba7a9f11ca2de11eb4040) +++ lams_tool_chat/web/pages/learning/runOffline.jsp (.../runOffline.jsp) (revision 9f7df51118e418eead64378c028572b0baf39196) @@ -5,10 +5,21 @@ -

- -

- + + +

+ +

+
+ +
+ + + +
+
+
+ <%@ include file="parts/finishButton.jsp"%> Index: lams_tool_chat/web/pages/monitoring/daterestriction.jsp =================================================================== diff -u --- lams_tool_chat/web/pages/monitoring/daterestriction.jsp (revision 0) +++ lams_tool_chat/web/pages/monitoring/daterestriction.jsp (revision 9f7df51118e418eead64378c028572b0baf39196) @@ -0,0 +1,43 @@ +<%@include file="/common/taglibs.jsp"%> + +

+ + + + + +

+
+ + \ No newline at end of file Index: lams_tool_chat/web/pages/monitoring/summary.jsp =================================================================== diff -u -rc20b8bc20f56ae4d510bc5c4f2bf101a6ce7261b -r9f7df51118e418eead64378c028572b0baf39196 --- lams_tool_chat/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision c20b8bc20f56ae4d510bc5c4f2bf101a6ce7261b) +++ lams_tool_chat/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 9f7df51118e418eead64378c028572b0baf39196) @@ -1,7 +1,91 @@ <%@ include file="/common/taglibs.jsp"%> - + + + -

+ + + + + + + + + + + +

@@ -92,8 +176,8 @@ +<%@include file="daterestriction.jsp"%> -