Index: lams_tool_scratchie/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -rf1d4f06b23f8eb2a17555157d1b4e59624d4c73c -r537b1cb3333b17ffb5b53577dc3b610a2ab0f085 --- lams_tool_scratchie/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision f1d4f06b23f8eb2a17555157d1b4e59624d4c73c) +++ lams_tool_scratchie/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 537b1cb3333b17ffb5b53577dc3b610a2ab0f085) @@ -180,3 +180,14 @@ label.your.answer =Your answer: label.other.groups =Other groups: label.all =All +monitor.summary.date.restriction =Date and time restriction +monitor.summary.when.date.restriction.is.set =If a date and time restriction is set, learners will not be able to submit assignments after this date. +monitor.summary.after.date =Date and time: +monitor.summary.set.restriction =Set restriction +monitor.summary.unset.restriction =Remove restriction +authoring.info.teacher.set.restriction =The teacher has set a restriction for submission from {0}. +label.sorry.the.deadline.has.passed =Sorry, the deadline to participate in this activity has passed. Please contact your teacher for further details. +monitor.summary.notification =Notification +monitor.summary.date.restriction.set =Date restriction has been set +monitor.summary.date.restriction.removed =Date restriction has been removed + Index: lams_tool_scratchie/conf/xdoclet/struts-actions.xml =================================================================== diff -u -r94be37497fa57d778f02fbb3e13436e673b12e30 -r537b1cb3333b17ffb5b53577dc3b610a2ab0f085 --- lams_tool_scratchie/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision 94be37497fa57d778f02fbb3e13436e673b12e30) +++ lams_tool_scratchie/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision 537b1cb3333b17ffb5b53577dc3b610a2ab0f085) @@ -251,6 +251,10 @@ type="org.lamsfoundation.lams.tool.scratchie.web.action.MonitoringAction" parameter="saveUserMark" > + + Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java =================================================================== diff -u -r94be37497fa57d778f02fbb3e13436e673b12e30 -r537b1cb3333b17ffb5b53577dc3b610a2ab0f085 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java (.../ScratchieConstants.java) (revision 94be37497fa57d778f02fbb3e13436e673b12e30) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java (.../ScratchieConstants.java) (revision 537b1cb3333b17ffb5b53577dc3b610a2ab0f085) @@ -61,6 +61,10 @@ public static final String PARAM_ANSWER_INDEX = "answerIndex"; public static final String PARAM_RUN_OFFLINE = "runOffline"; + + public static final String PARAM_NOT_A_NUMBER = "nan"; + + public static final String PARAM_MARK = "mark"; // for request attribute name public static final String ATTR_TOOL_CONTENT_ID = "toolContentID"; @@ -155,9 +159,9 @@ public static final String ATTR_IS_USER_LEADER = "isUserLeader"; - public static final String PARAM_NOT_A_NUMBER = "nan"; + public static final String ATTR_SUBMISSION_DEADLINE = "submissionDeadline"; - public static final String PARAM_MARK = "mark"; + public static final String ATTR_IS_SUBMISSION_DEADLINE_PASSED = "isSubmissionDeadlinePassed"; public static final String LEARNER_MARK = "learner.mark"; Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dbupdates/patch20131008.sql =================================================================== diff -u --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dbupdates/patch20131008.sql (revision 0) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dbupdates/patch20131008.sql (revision 537b1cb3333b17ffb5b53577dc3b610a2ab0f085) @@ -0,0 +1,13 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; + +----------------------Put all sql statements below here------------------------- + +-- LKC-34 Scratchie to have a time limitation in monitor +ALTER TABLE tl_lascrt11_scratchie ADD COLUMN submission_deadline DATETIME DEFAULT null; + +----------------------Put all sql statements above here------------------------- + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/Scratchie.java =================================================================== diff -u -r94be37497fa57d778f02fbb3e13436e673b12e30 -r537b1cb3333b17ffb5b53577dc3b610a2ab0f085 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/Scratchie.java (.../Scratchie.java) (revision 94be37497fa57d778f02fbb3e13436e673b12e30) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/Scratchie.java (.../Scratchie.java) (revision 537b1cb3333b17ffb5b53577dc3b610a2ab0f085) @@ -77,6 +77,8 @@ private Date created; private Date updated; + + private Date submissionDeadline; private ScratchieUser createdBy; @@ -259,8 +261,27 @@ public void setUpdated(Date updated) { this.updated = updated; } + + /** + * Returns deadline for learner's submission + * + * @return submissionDeadline + * @hibernate.property column="submission_deadline" + */ + public Date getSubmissionDeadline() { + return submissionDeadline; + } /** + * Sets deadline for learner's submission + * + * @param submissionDeadline + */ + public void setSubmissionDeadline(Date submissionDeadline) { + this.submissionDeadline = submissionDeadline; + } + + /** * @return Returns the userid of the user who created the Share scratchie. * * @hibernate.many-to-one cascade="save-update" column="create_by" Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java =================================================================== diff -u -r816a745f347376916ebbc95e093dddc1b60fef4b -r537b1cb3333b17ffb5b53577dc3b610a2ab0f085 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java (.../IScratchieService.java) (revision 816a745f347376916ebbc95e093dddc1b60fef4b) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java (.../IScratchieService.java) (revision 537b1cb3333b17ffb5b53577dc3b610a2ab0f085) @@ -161,7 +161,7 @@ * * @param Scratchie */ - void saveOrUpdateScratchie(Scratchie Scratchie); + void saveOrUpdateScratchie(Scratchie scratchie); /** * Delete reource attachment(i.e., offline/online instruction file) from database. This method does not delete the Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java =================================================================== diff -u -r816a745f347376916ebbc95e093dddc1b60fef4b -r537b1cb3333b17ffb5b53577dc3b610a2ab0f085 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java (.../LearningAction.java) (revision 816a745f347376916ebbc95e093dddc1b60fef4b) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java (.../LearningAction.java) (revision 537b1cb3333b17ffb5b53577dc3b610a2ab0f085) @@ -30,6 +30,7 @@ import java.util.Iterator; import java.util.List; import java.util.Set; +import java.util.TimeZone; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -61,6 +62,7 @@ import org.lamsfoundation.lams.tool.scratchie.service.ScratchieApplicationException; import org.lamsfoundation.lams.tool.scratchie.web.form.ReflectionForm; 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; @@ -187,6 +189,7 @@ sessionMap.put(ScratchieConstants.ATTR_IS_USER_LEADER, isUserLeader); boolean isUserFinished = user != null && user.isSessionFinished(); sessionMap.put(ScratchieConstants.ATTR_USER_FINISHED, isUserFinished); + sessionMap.put(ScratchieConstants.PARAM_RUN_OFFLINE, scratchie.getRunOffline()); sessionMap.put(AttributeNames.PARAM_TOOL_SESSION_ID, toolSessionId); sessionMap.put(AttributeNames.ATTR_MODE, mode); // reflection information @@ -208,13 +211,28 @@ toolSessionId, request, getServlet().getServletContext()); sessionMap.put(AttributeNames.ATTR_ACTIVITY_POSITION, activityPosition); - // add run offline support + // run offline support if (scratchie.getRunOffline()) { - sessionMap.put(ScratchieConstants.PARAM_RUN_OFFLINE, true); return mapping.findForward("runOffline"); - } else { - sessionMap.put(ScratchieConstants.PARAM_RUN_OFFLINE, false); } + + //check if there is submission deadline + Date submissionDeadline = scratchie.getSubmissionDeadline(); + if (submissionDeadline != null) { + //store submission deadline to sessionMap + sessionMap.put(ScratchieConstants.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"); + } + } // set scratched flag for display purpose Collection items = service.getItemsWithIndicatedScratches(toolSessionId, user); Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java =================================================================== diff -u -r816a745f347376916ebbc95e093dddc1b60fef4b -r537b1cb3333b17ffb5b53577dc3b610a2ab0f085 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 816a745f347376916ebbc95e093dddc1b60fef4b) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 537b1cb3333b17ffb5b53577dc3b610a2ab0f085) @@ -25,14 +25,17 @@ package org.lamsfoundation.lams.tool.scratchie.web.action; import java.io.IOException; +import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Set; +import java.util.TimeZone; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; @@ -49,10 +52,13 @@ import org.lamsfoundation.lams.tool.scratchie.model.ScratchieItem; import org.lamsfoundation.lams.tool.scratchie.model.ScratchieUser; import org.lamsfoundation.lams.tool.scratchie.service.IScratchieService; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.DateUtil; import org.lamsfoundation.lams.util.ExcelCell; import org.lamsfoundation.lams.util.ExcelUtil; import org.lamsfoundation.lams.util.FileUtil; import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.lamsfoundation.lams.web.util.SessionMap; import org.springframework.web.context.WebApplicationContext; @@ -79,6 +85,9 @@ if (param.equals("saveUserMark")) { return saveUserMark(mapping, form, request, response); } + if (param.equals("setSubmissionDeadline")) { + return setSubmissionDeadline(mapping, form, request, response); + } if (param.equals("exportExcel")) { return exportExcel(mapping, form, request, response); } @@ -101,6 +110,16 @@ Scratchie scratchie = service.getScratchieByContentId(contentId); scratchie.toDTO(); Set learners = service.getAllLearners(contentId); + + //set SubmissionDeadline, if any + if (scratchie.getSubmissionDeadline() != null) { + Date submissionDeadline = scratchie.getSubmissionDeadline(); + HttpSession ss = SessionManager.getSession(); + UserDTO teacher = (UserDTO) ss.getAttribute(AttributeNames.USER); + TimeZone teacherTimeZone = teacher.getTimeZone(); + Date tzSubmissionDeadline = DateUtil.convertToTimeZoneFromDefault(teacherTimeZone, submissionDeadline); + request.setAttribute(ScratchieConstants.ATTR_SUBMISSION_DEADLINE, tzSubmissionDeadline.getTime()); + } // cache into sessionMap boolean isGroupedActivity = service.isGroupedActivity(contentId); @@ -169,7 +188,38 @@ return null; } + + /** + * Set Submission Deadline + * + * @param mapping + * @param form + * @param request + * @param response + * @return + */ + private ActionForward setSubmissionDeadline(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + initializeScratchieService(); + + Long contentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); + Scratchie scratchie = service.getScratchieByContentId(contentID); + + Long dateParameter = WebUtil.readLongParam(request, ScratchieConstants.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); + } + scratchie.setSubmissionDeadline(tzSubmissionDeadline); + service.saveOrUpdateScratchie(scratchie); + return null; + } + /** * Exports tool results into excel. * @throws IOException Index: lams_tool_scratchie/web/pages/learning/learning.jsp =================================================================== diff -u -r94be37497fa57d778f02fbb3e13436e673b12e30 -r537b1cb3333b17ffb5b53577dc3b610a2ab0f085 --- lams_tool_scratchie/web/pages/learning/learning.jsp (.../learning.jsp) (revision 94be37497fa57d778f02fbb3e13436e673b12e30) +++ lams_tool_scratchie/web/pages/learning/learning.jsp (.../learning.jsp) (revision 537b1cb3333b17ffb5b53577dc3b610a2ab0f085) @@ -106,6 +106,14 @@

${scratchie.instructions}

+ + +
+ + + +
+
<%@ include file="/common/messages.jsp"%> Index: lams_tool_scratchie/web/pages/learning/results.jsp =================================================================== diff -u -r816a745f347376916ebbc95e093dddc1b60fef4b -r537b1cb3333b17ffb5b53577dc3b610a2ab0f085 --- lams_tool_scratchie/web/pages/learning/results.jsp (.../results.jsp) (revision 816a745f347376916ebbc95e093dddc1b60fef4b) +++ lams_tool_scratchie/web/pages/learning/results.jsp (.../results.jsp) (revision 537b1cb3333b17ffb5b53577dc3b610a2ab0f085) @@ -35,6 +35,14 @@

${scratchie.title}

+ + +
+ + + +
+
<%@ include file="/common/messages.jsp"%> Index: lams_tool_scratchie/web/pages/learning/runoffline.jsp =================================================================== diff -u -r8aded0b18a5a7712622ae56f38923fa297449977 -r537b1cb3333b17ffb5b53577dc3b610a2ab0f085 --- lams_tool_scratchie/web/pages/learning/runoffline.jsp (.../runoffline.jsp) (revision 8aded0b18a5a7712622ae56f38923fa297449977) +++ lams_tool_scratchie/web/pages/learning/runoffline.jsp (.../runoffline.jsp) (revision 537b1cb3333b17ffb5b53577dc3b610a2ab0f085) @@ -8,7 +8,7 @@ <%@ include file="/common/header.jsp"%> @@ -28,11 +27,20 @@ ${sessionMap.title} -

- -

+ + +

+ +

+
+ +
+ +
+
+
- +

${sessionMap.reflectInstructions} @@ -61,16 +69,13 @@
- - + + - + Index: lams_tool_scratchie/web/pages/monitoring/monitoring.jsp =================================================================== diff -u -rc0ae190cb1f4081bcf86fa46b07d1cbbd43ce250 -r537b1cb3333b17ffb5b53577dc3b610a2ab0f085 --- lams_tool_scratchie/web/pages/monitoring/monitoring.jsp (.../monitoring.jsp) (revision c0ae190cb1f4081bcf86fa46b07d1cbbd43ce250) +++ lams_tool_scratchie/web/pages/monitoring/monitoring.jsp (.../monitoring.jsp) (revision 537b1cb3333b17ffb5b53577dc3b610a2ab0f085) @@ -12,9 +12,12 @@ + + + Index: lams_tool_scratchie/web/pages/monitoring/parts/dateRestriction.jsp =================================================================== diff -u --- lams_tool_scratchie/web/pages/monitoring/parts/dateRestriction.jsp (revision 0) +++ lams_tool_scratchie/web/pages/monitoring/parts/dateRestriction.jsp (revision 537b1cb3333b17ffb5b53577dc3b610a2ab0f085) @@ -0,0 +1,43 @@ +<%@include file="/common/taglibs.jsp"%> + +

+ + + + + +

+
+ + \ No newline at end of file Index: lams_tool_scratchie/web/pages/monitoring/summary.jsp =================================================================== diff -u -rf1d4f06b23f8eb2a17555157d1b4e59624d4c73c -r537b1cb3333b17ffb5b53577dc3b610a2ab0f085 --- lams_tool_scratchie/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision f1d4f06b23f8eb2a17555157d1b4e59624d4c73c) +++ lams_tool_scratchie/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 537b1cb3333b17ffb5b53577dc3b610a2ab0f085) @@ -17,7 +17,6 @@ + <%@ include file="parts/advanceOptions.jsp"%> +<%@ include file="parts/dateRestriction.jsp"%> +