Index: lams_tool_scratchie/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/conf/language/lams/ApplicationResources_en_AU.properties,v diff -u -r1.19 -r1.20 --- lams_tool_scratchie/conf/language/lams/ApplicationResources_en_AU.properties 7 Oct 2013 20:22:53 -0000 1.19 +++ lams_tool_scratchie/conf/language/lams/ApplicationResources_en_AU.properties 8 Oct 2013 11:46:10 -0000 1.20 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/conf/xdoclet/struts-actions.xml,v diff -u -r1.13 -r1.14 --- lams_tool_scratchie/conf/xdoclet/struts-actions.xml 24 Sep 2013 16:49:11 -0000 1.13 +++ lams_tool_scratchie/conf/xdoclet/struts-actions.xml 8 Oct 2013 11:46:09 -0000 1.14 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java,v diff -u -r1.13 -r1.14 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java 24 Sep 2013 16:49:11 -0000 1.13 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java 8 Oct 2013 11:46:09 -0000 1.14 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dbupdates/patch20131008.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dbupdates/patch20131008.sql 8 Oct 2013 11:46:09 -0000 1.1 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/Scratchie.java,v diff -u -r1.4 -r1.5 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/Scratchie.java 24 Sep 2013 16:49:12 -0000 1.4 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/Scratchie.java 8 Oct 2013 11:46:09 -0000 1.5 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java,v diff -u -r1.19 -r1.20 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java 6 Oct 2013 12:56:13 -0000 1.19 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java 8 Oct 2013 11:46:10 -0000 1.20 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java,v diff -u -r1.21 -r1.22 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java 6 Oct 2013 12:56:13 -0000 1.21 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java 8 Oct 2013 11:46:09 -0000 1.22 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java,v diff -u -r1.16 -r1.17 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java 6 Oct 2013 12:56:13 -0000 1.16 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java 8 Oct 2013 11:46:09 -0000 1.17 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/web/pages/learning/learning.jsp,v diff -u -r1.12 -r1.13 --- lams_tool_scratchie/web/pages/learning/learning.jsp 24 Sep 2013 16:49:12 -0000 1.12 +++ lams_tool_scratchie/web/pages/learning/learning.jsp 8 Oct 2013 11:46:09 -0000 1.13 @@ -106,6 +106,14 @@

${scratchie.instructions}

+ + +
+ + + +
+
<%@ include file="/common/messages.jsp"%> Index: lams_tool_scratchie/web/pages/learning/results.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/web/pages/learning/results.jsp,v diff -u -r1.7 -r1.8 --- lams_tool_scratchie/web/pages/learning/results.jsp 6 Oct 2013 12:56:13 -0000 1.7 +++ lams_tool_scratchie/web/pages/learning/results.jsp 8 Oct 2013 11:46:09 -0000 1.8 @@ -35,6 +35,14 @@

${scratchie.title}

+ + +
+ + + +
+
<%@ include file="/common/messages.jsp"%> Index: lams_tool_scratchie/web/pages/learning/runoffline.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/web/pages/learning/Attic/runoffline.jsp,v diff -u -r1.2 -r1.3 --- lams_tool_scratchie/web/pages/learning/runoffline.jsp 9 Apr 2013 12:47:36 -0000 1.2 +++ lams_tool_scratchie/web/pages/learning/runoffline.jsp 8 Oct 2013 11:46:09 -0000 1.3 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/web/pages/monitoring/monitoring.jsp,v diff -u -r1.3 -r1.4 --- lams_tool_scratchie/web/pages/monitoring/monitoring.jsp 11 Dec 2012 11:29:54 -0000 1.3 +++ lams_tool_scratchie/web/pages/monitoring/monitoring.jsp 8 Oct 2013 11:46:09 -0000 1.4 @@ -12,9 +12,12 @@ + + + Index: lams_tool_scratchie/web/pages/monitoring/summary.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/web/pages/monitoring/summary.jsp,v diff -u -r1.10 -r1.11 --- lams_tool_scratchie/web/pages/monitoring/summary.jsp 7 Oct 2013 20:22:53 -0000 1.10 +++ lams_tool_scratchie/web/pages/monitoring/summary.jsp 8 Oct 2013 11:46:09 -0000 1.11 @@ -17,7 +17,6 @@ + <%@ include file="parts/advanceOptions.jsp"%> +<%@ include file="parts/dateRestriction.jsp"%> +
Index: lams_tool_scratchie/web/pages/monitoring/parts/dateRestriction.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/web/pages/monitoring/parts/dateRestriction.jsp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_scratchie/web/pages/monitoring/parts/dateRestriction.jsp 8 Oct 2013 11:46:09 -0000 1.1 @@ -0,0 +1,43 @@ +<%@include file="/common/taglibs.jsp"%> + +

+ + + + + +

+
+ + \ No newline at end of file