Index: lams_tool_laqa/conf/hibernate/mappings/org/lamsfoundation/lams/tool/qa/QaContent.hbm.xml =================================================================== diff -u -r501ddb69e1c739b90388262f41b4927356cb0449 -rcd0b7b82232971e95d54348b03049beb1dfe0ecb --- lams_tool_laqa/conf/hibernate/mappings/org/lamsfoundation/lams/tool/qa/QaContent.hbm.xml (.../QaContent.hbm.xml) (revision 501ddb69e1c739b90388262f41b4927356cb0449) +++ lams_tool_laqa/conf/hibernate/mappings/org/lamsfoundation/lams/tool/qa/QaContent.hbm.xml (.../QaContent.hbm.xml) (revision cd0b7b82232971e95d54348b03049beb1dfe0ecb) @@ -86,6 +86,13 @@ length="10" /> + qaQueContents; @@ -440,6 +442,21 @@ } /** + * @return Returns the submissionDeadline. + */ + public Date getSubmissionDeadline() { + return submissionDeadline; + } + + /** + * @param submissionDeadline + * The submissionDeadline to set. + */ + public void setSubmissionDeadline(Date submissionDeadline) { + this.submissionDeadline = submissionDeadline; + } + + /** * @return Returns the usernameVisible. */ public boolean isUsernameVisible() { Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dbupdates/patch20110217_updateTo236.sql =================================================================== diff -u -rb9c465dcb22dba078a5bf43c7cbda85f9b5f6000 -rcd0b7b82232971e95d54348b03049beb1dfe0ecb --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dbupdates/patch20110217_updateTo236.sql (.../patch20110217_updateTo236.sql) (revision b9c465dcb22dba078a5bf43c7cbda85f9b5f6000) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dbupdates/patch20110217_updateTo236.sql (.../patch20110217_updateTo236.sql) (revision cd0b7b82232971e95d54348b03049beb1dfe0ecb) @@ -25,6 +25,9 @@ -- LDEV-2653 autosave feature ALTER TABLE tl_laqa11_usr_resp DROP COLUMN hidden; +-- LDEV-2657 Date and time restriction +ALTER TABLE tl_laqa11_content ADD COLUMN submission_deadline DATETIME DEFAULT null; + UPDATE lams_tool SET tool_version = "20110217" WHERE tool_signature = "laqa11"; ----------------------Put all sql statements above here------------------------- Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/MonitoringUtil.java =================================================================== diff -u -r501ddb69e1c739b90388262f41b4927356cb0449 -rcd0b7b82232971e95d54348b03049beb1dfe0ecb --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/MonitoringUtil.java (.../MonitoringUtil.java) (revision 501ddb69e1c739b90388262f41b4927356cb0449) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/MonitoringUtil.java (.../MonitoringUtil.java) (revision cd0b7b82232971e95d54348b03049beb1dfe0ecb) @@ -24,13 +24,17 @@ package org.lamsfoundation.lams.tool.qa.web; import java.util.ArrayList; +import java.util.Date; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.TimeZone; import java.util.TreeMap; + import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import org.lamsfoundation.lams.notebook.model.NotebookEntry; @@ -49,6 +53,10 @@ import org.lamsfoundation.lams.tool.qa.service.IQaService; import org.lamsfoundation.lams.tool.qa.util.QaStringComparator; import org.lamsfoundation.lams.tool.qa.util.QaUtils; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.DateUtil; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; /** * @@ -373,8 +381,18 @@ //generateGroupsSessionData List listAllGroupsDTO = buildGroupBasedSessionData(request, qaContent, qaService); request.setAttribute(LIST_ALL_GROUPS_DTO, listAllGroupsDTO); + + //set SubmissionDeadline, if any + if (qaContent.getSubmissionDeadline() != null) { + Date submissionDeadline = qaContent.getSubmissionDeadline(); + HttpSession ss = SessionManager.getSession(); + UserDTO teacher = (UserDTO) ss.getAttribute(AttributeNames.USER); + TimeZone teacherTimeZone = teacher.getTimeZone(); + Date tzSubmissionDeadline = DateUtil.convertToTimeZoneFromDefault(teacherTimeZone, submissionDeadline); + request.setAttribute(QaAppConstants.ATTR_SUBMISSION_DEADLINE, tzSubmissionDeadline.getTime()); } - + } + public static List buildGroupBasedSessionData(HttpServletRequest request, QaContent qaContent, IQaService qaService) { List listQuestions = qaService.getAllQuestionEntries(qaContent.getUid()); Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningStarterAction.java =================================================================== diff -u -r501ddb69e1c739b90388262f41b4927356cb0449 -rcd0b7b82232971e95d54348b03049beb1dfe0ecb --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningStarterAction.java (.../QaLearningStarterAction.java) (revision 501ddb69e1c739b90388262f41b4927356cb0449) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningStarterAction.java (.../QaLearningStarterAction.java) (revision cd0b7b82232971e95d54348b03049beb1dfe0ecb) @@ -25,9 +25,11 @@ package org.lamsfoundation.lams.tool.qa.web; import java.io.IOException; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.TimeZone; import java.util.TreeMap; import javax.servlet.ServletException; @@ -60,6 +62,7 @@ import org.lamsfoundation.lams.tool.qa.util.QaUtils; import org.lamsfoundation.lams.tool.qa.web.form.QaLearningForm; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.DateUtil; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -303,6 +306,24 @@ return (mapping.findForward(RUN_OFFLINE)); } + //check if there is submission deadline + Date submissionDeadline = qaContent.getSubmissionDeadline(); + if (submissionDeadline != null) { + //store submission deadline to sessionMap + sessionMap.put(QaAppConstants.ATTR_SUBMISSION_DEADLINE, submissionDeadline); + + 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()); + + //calculate whether submission deadline has passed, and if so forward to "runOffline" + if (currentLearnerDate.after(tzSubmissionDeadline)) { + return mapping.findForward("runOffline"); + } + } + /* * Verify that userId does not already exist in the db. * If it does exist and the passed tool session id exists in the db, that means the user already responded to the content and Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaMonitoringAction.java =================================================================== diff -u -r501ddb69e1c739b90388262f41b4927356cb0449 -rcd0b7b82232971e95d54348b03049beb1dfe0ecb --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaMonitoringAction.java (.../QaMonitoringAction.java) (revision 501ddb69e1c739b90388262f41b4927356cb0449) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaMonitoringAction.java (.../QaMonitoringAction.java) (revision cd0b7b82232971e95d54348b03049beb1dfe0ecb) @@ -96,15 +96,18 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.Date; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TimeZone; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import org.apache.struts.Globals; @@ -134,8 +137,11 @@ import org.lamsfoundation.lams.tool.qa.util.QaUtils; import org.lamsfoundation.lams.tool.qa.web.form.QaAuthoringForm; import org.lamsfoundation.lams.tool.qa.web.form.QaMonitoringForm; +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; import org.lamsfoundation.lams.web.util.AttributeNames; import org.lamsfoundation.lams.web.util.SessionMap; @@ -3338,7 +3344,39 @@ return mapping.findForward(QaAppConstants.LOAD_MONITORING); } + + /** + * Set Submission Deadline + * + * @param mapping + * @param form + * @param request + * @param response + * @return + */ + public ActionForward setSubmissionDeadline(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + IQaService qaService = getQAService(); + + Long contentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); + QaContent content = qaService.getQa(contentID); + + Long dateParameter = WebUtil.readLongParam(request, QaAppConstants.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); + } + content.setSubmissionDeadline(tzSubmissionDeadline); + qaService.saveOrUpdateQa(content); + return null; + } + + public void prepareReflectionData(HttpServletRequest request, QaContent qaContent, IQaService qaService, String userID, boolean exportMode, String currentSessionId) { @@ -3529,4 +3567,8 @@ return reflectionsContainerDTO; } + private IQaService getQAService() { + return QaServiceProxy.getQaService(getServlet().getServletContext()); + } + } \ No newline at end of file Index: lams_tool_laqa/web/common/header.jsp =================================================================== diff -u -r00ae80d4791f903bcb3661537fc7e129c72ad195 -rcd0b7b82232971e95d54348b03049beb1dfe0ecb --- lams_tool_laqa/web/common/header.jsp (.../header.jsp) (revision 00ae80d4791f903bcb3661537fc7e129c72ad195) +++ lams_tool_laqa/web/common/header.jsp (.../header.jsp) (revision cd0b7b82232971e95d54348b03049beb1dfe0ecb) @@ -19,7 +19,6 @@ - Index: lams_tool_laqa/web/common/tabbedheader.jsp =================================================================== diff -u -r00ae80d4791f903bcb3661537fc7e129c72ad195 -rcd0b7b82232971e95d54348b03049beb1dfe0ecb --- lams_tool_laqa/web/common/tabbedheader.jsp (.../tabbedheader.jsp) (revision 00ae80d4791f903bcb3661537fc7e129c72ad195) +++ lams_tool_laqa/web/common/tabbedheader.jsp (.../tabbedheader.jsp) (revision cd0b7b82232971e95d54348b03049beb1dfe0ecb) @@ -19,7 +19,6 @@ - Index: lams_tool_laqa/web/learning/AnswersContent.jsp =================================================================== diff -u -r91f0740e75daa643981b757e49d1ed2ed7f0a528 -rcd0b7b82232971e95d54348b03049beb1dfe0ecb --- lams_tool_laqa/web/learning/AnswersContent.jsp (.../AnswersContent.jsp) (revision 91f0740e75daa643981b757e49d1ed2ed7f0a528) +++ lams_tool_laqa/web/learning/AnswersContent.jsp (.../AnswersContent.jsp) (revision cd0b7b82232971e95d54348b03049beb1dfe0ecb) @@ -30,6 +30,7 @@ + @@ -102,6 +103,14 @@ escapeXml="false" /> + +
+ + + +
+
+ Index: lams_tool_laqa/web/learning/IndividualLearnerResults.jsp =================================================================== diff -u -r4c9365155a19f048af7f0465ced0b965141292d5 -rcd0b7b82232971e95d54348b03049beb1dfe0ecb --- lams_tool_laqa/web/learning/IndividualLearnerResults.jsp (.../IndividualLearnerResults.jsp) (revision 4c9365155a19f048af7f0465ced0b965141292d5) +++ lams_tool_laqa/web/learning/IndividualLearnerResults.jsp (.../IndividualLearnerResults.jsp) (revision cd0b7b82232971e95d54348b03049beb1dfe0ecb) @@ -29,6 +29,7 @@ + @@ -63,6 +64,14 @@ + + +
+ + + +
+
Index: lams_tool_laqa/web/learning/LearnerRep.jsp =================================================================== diff -u -rb866c51b8fc29aa4e36e281ec30a8046a0797738 -rcd0b7b82232971e95d54348b03049beb1dfe0ecb --- lams_tool_laqa/web/learning/LearnerRep.jsp (.../LearnerRep.jsp) (revision b866c51b8fc29aa4e36e281ec30a8046a0797738) +++ lams_tool_laqa/web/learning/LearnerRep.jsp (.../LearnerRep.jsp) (revision cd0b7b82232971e95d54348b03049beb1dfe0ecb) @@ -29,6 +29,7 @@ + @@ -87,6 +88,13 @@ + +
+ + + +
+
Index: lams_tool_laqa/web/learning/RevisitedLearnerRep.jsp =================================================================== diff -u -r91f0740e75daa643981b757e49d1ed2ed7f0a528 -rcd0b7b82232971e95d54348b03049beb1dfe0ecb --- lams_tool_laqa/web/learning/RevisitedLearnerRep.jsp (.../RevisitedLearnerRep.jsp) (revision 91f0740e75daa643981b757e49d1ed2ed7f0a528) +++ lams_tool_laqa/web/learning/RevisitedLearnerRep.jsp (.../RevisitedLearnerRep.jsp) (revision cd0b7b82232971e95d54348b03049beb1dfe0ecb) @@ -29,6 +29,7 @@ + @@ -88,6 +89,14 @@ + + +
+ + + +
+
Index: lams_tool_laqa/web/learning/RunOffline.jsp =================================================================== diff -u -r80b7ea061db3811a79da84e1adbf688a26d6b43f -rcd0b7b82232971e95d54348b03049beb1dfe0ecb --- lams_tool_laqa/web/learning/RunOffline.jsp (.../RunOffline.jsp) (revision 80b7ea061db3811a79da84e1adbf688a26d6b43f) +++ lams_tool_laqa/web/learning/RunOffline.jsp (.../RunOffline.jsp) (revision cd0b7b82232971e95d54348b03049beb1dfe0ecb) @@ -22,6 +22,7 @@ "http://www.w3.org/TR/html4/strict.dtd"> <%@ include file="/common/taglibs.jsp"%> + @@ -72,6 +73,20 @@

+ + +

+ +

+
+ +
+ + + +
+
+
Index: lams_tool_laqa/web/monitoring/MonitoringMaincontent.jsp =================================================================== diff -u -r91f0740e75daa643981b757e49d1ed2ed7f0a528 -rcd0b7b82232971e95d54348b03049beb1dfe0ecb --- lams_tool_laqa/web/monitoring/MonitoringMaincontent.jsp (.../MonitoringMaincontent.jsp) (revision 91f0740e75daa643981b757e49d1ed2ed7f0a528) +++ lams_tool_laqa/web/monitoring/MonitoringMaincontent.jsp (.../MonitoringMaincontent.jsp) (revision cd0b7b82232971e95d54348b03049beb1dfe0ecb) @@ -46,7 +46,7 @@ - + @@ -56,21 +56,27 @@ + + + + + - - - + + + + - + @@ -81,7 +87,70 @@ rateMax : 5, isDisabled : true }); + + + $("#datetime").datetimepicker(); + + var submissionDeadline = "${submissionDeadline}"; + if (submissionDeadline != "") { + var date = new Date(eval(submissionDeadline)); + $("#dateInfo").html( formatDate(date) ); + + //open up date restriction area + toggleAdvancedOptionsVisibility(document.getElementById('restrictUsageDiv'), document.getElementById('restrictUsageTreeIcon'),'${lams}'); + } }); + + function formatDate(date) { + var currHour = "" + date.getHours(); + if (currHour.length == 1) { + currHour = "0" + currHour; + } + var currMin = "" + date.getMinutes(); + if (currMin.length == 1) { + currMin = "0" + currMin; + } + return $.datepicker.formatDate( 'mm/dd/yy', date ) + " " + currHour + ":" + currMin; + } + + function setSubmissionDeadline() { + //get the timestamp in milliseconds since midnight Jan 1, 1970 + var date = $("#datetime").datetimepicker('getDate'); + if (date == null) { + return; + } + + var reqIDVar = new Date(); + var url = "?dispatch=setSubmissionDeadline&toolContentID=${param.toolContentID}&submissionDeadline=" + + date.getTime() + "&reqID=" + reqIDVar.getTime(); + + $.ajax({ + url : url, + success : function() { + $.growlUI('', ''); + $("#datetimeDiv").hide(); + $("#dateInfo").html(formatDate(date) ); + $("#dateInfoDiv").show(); + } + }); + } + function removeSubmissionDeadline() { + var reqIDVar = new Date(); + var url = "?dispatch=setSubmissionDeadline&toolContentID=${param.toolContentID}&submissionDeadline=" + + "&reqID=" + reqIDVar.getTime(); + + $.ajax({ + url : url, + success : function() { + $.growlUI('', ''); + $("#dateInfoDiv").hide(); + + $("#datetimeDiv").show(); + $("#datetime").val(""); + } + }); + } + function submitMonitoringMethod(actionMethod) { Index: lams_tool_laqa/web/monitoring/SummaryContent.jsp =================================================================== diff -u -r6578a27494e05e43b274023060899ede28b17e59 -rcd0b7b82232971e95d54348b03049beb1dfe0ecb --- lams_tool_laqa/web/monitoring/SummaryContent.jsp (.../SummaryContent.jsp) (revision 6578a27494e05e43b274023060899ede28b17e59) +++ lams_tool_laqa/web/monitoring/SummaryContent.jsp (.../SummaryContent.jsp) (revision cd0b7b82232971e95d54348b03049beb1dfe0ecb) @@ -21,7 +21,7 @@ <%@ include file="/common/taglibs.jsp"%> -

+

@@ -162,7 +162,9 @@

- + + <%@include file="dateRestriction.jsp"%> + Index: lams_tool_laqa/web/monitoring/dateRestriction.jsp =================================================================== diff -u --- lams_tool_laqa/web/monitoring/dateRestriction.jsp (revision 0) +++ lams_tool_laqa/web/monitoring/dateRestriction.jsp (revision cd0b7b82232971e95d54348b03049beb1dfe0ecb) @@ -0,0 +1,43 @@ +<%@include file="/common/taglibs.jsp"%> + +

+ + + + + +

+
+ + \ No newline at end of file