Index: lams_tool_forum/build.properties =================================================================== diff -u -r8a8c14627918cc58fa845c2369937bc482d2f6b9 -r0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea --- lams_tool_forum/build.properties (.../build.properties) (revision 8a8c14627918cc58fa845c2369937bc482d2f6b9) +++ lams_tool_forum/build.properties (.../build.properties) (revision 0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea) @@ -9,7 +9,7 @@ ### project properties ### signature=lafrum11 project.displayname = lams forum tool -tool.version=20110228 +tool.version=20110408 # hide tool option hideTool=false Index: lams_tool_forum/conf/xdoclet/struts-actions.xml =================================================================== diff -u -r8a8c14627918cc58fa845c2369937bc482d2f6b9 -r0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea --- lams_tool_forum/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision 8a8c14627918cc58fa845c2369937bc482d2f6b9) +++ lams_tool_forum/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision 0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea) @@ -395,6 +395,11 @@ parameter="viewReflection"> + + + Index: lams_tool_forum/db/sql/create_lams_tool_forum.sql =================================================================== diff -u -r8a8c14627918cc58fa845c2369937bc482d2f6b9 -r0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea --- lams_tool_forum/db/sql/create_lams_tool_forum.sql (.../create_lams_tool_forum.sql) (revision 8a8c14627918cc58fa845c2369937bc482d2f6b9) +++ lams_tool_forum/db/sql/create_lams_tool_forum.sql (.../create_lams_tool_forum.sql) (revision 0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea) @@ -50,6 +50,7 @@ notify_learners_on_forum_posting tinyint DEFAULT 0, notify_teachers_on_forum_posting tinyint DEFAULT 0, mark_release_notify tinyint DEFAULT 0, + submission_deadline datetime, primary key (uid) )TYPE=InnoDB; create table tl_lafrum11_forum_user ( Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Forum.java =================================================================== diff -u -r8a8c14627918cc58fa845c2369937bc482d2f6b9 -r0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Forum.java (.../Forum.java) (revision 8a8c14627918cc58fa845c2369937bc482d2f6b9) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Forum.java (.../Forum.java) (revision 0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea) @@ -109,6 +109,8 @@ private boolean notifyLearnersOnForumPosting; private boolean notifyTeachersOnForumPosting; + + private Date submissionDeadline; // conditions private Set conditions = new TreeSet(new TextSearchConditionComparator()); @@ -663,4 +665,16 @@ public void setConditions(Set conditions) { this.conditions = conditions; } + + /** + * @hibernate.property column="submission_deadline" + * @return date submissionDeadline + */ + public Date getSubmissionDeadline() { + return submissionDeadline; + } + + public void setSubmissionDeadline(Date submissionDeadline) { + this.submissionDeadline = submissionDeadline; + } } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java =================================================================== diff -u -r8a8c14627918cc58fa845c2369937bc482d2f6b9 -r0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java (.../ForumConstants.java) (revision 8a8c14627918cc58fa845c2369937bc482d2f6b9) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java (.../ForumConstants.java) (revision 0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea) @@ -101,6 +101,12 @@ public static final String ATTR_USER_FINISHED = "userFinished"; + // for submission deadline LDEV-2657 + + public static final String ATTR_SUBMISSION_DEADLINE = "submissionDeadline"; + + public static final String ATTR_IS_SUBMISSION_DEADLINE_PASSED = "isSubmissionDeadlinePassed"; + // used in monitoring public static final String TITLE = "title"; Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java =================================================================== diff -u -r901372af1b71238311d32a55f25ec8ba637bf5ca -r0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision 901372af1b71238311d32a55f25ec8ba637bf5ca) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision 0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea) @@ -33,6 +33,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; @@ -73,6 +74,7 @@ import org.lamsfoundation.lams.tool.forum.web.forms.ReflectionForm; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.util.DateUtil; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.lamsfoundation.lams.web.util.SessionMap; @@ -192,6 +194,9 @@ throw new Exception("Failed on getting session by given sessionID:" + sessionId); } + // get session from shared session. + HttpSession ss = SessionManager.getSession(); + Forum forum = session.getForum(); // lock on finish ForumUser forumUser = getCurrentUser(request, sessionId); @@ -285,6 +290,21 @@ forumUser.getUserId().longValue(), IEventNotificationService.DELIVERY_METHOD_MAIL, IEventNotificationService.PERIODICITY_SINGLE); } + + // check if there is submission deadline + Date submissionDeadline = forum.getSubmissionDeadline(); + if (submissionDeadline != null) { + sessionMap.put(ForumConstants.ATTR_SUBMISSION_DEADLINE, forum.getSubmissionDeadline()); + 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"); + } + } return mapping.findForward("success"); } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java =================================================================== diff -u -r901372af1b71238311d32a55f25ec8ba637bf5ca -r0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision 901372af1b71238311d32a55f25ec8ba637bf5ca) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision 0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea) @@ -32,6 +32,7 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.Date; +import java.util.TimeZone; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -40,6 +41,7 @@ import java.util.TreeMap; import java.util.TreeSet; +import javax.servlet.http.HttpSession; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -71,11 +73,13 @@ import org.lamsfoundation.lams.tool.forum.util.ForumWebUtils; import org.lamsfoundation.lams.tool.forum.web.forms.ForumForm; import org.lamsfoundation.lams.tool.forum.web.forms.MarkForm; +import org.lamsfoundation.lams.util.DateUtil; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.NumberUtil; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.util.AttributeNames; import org.lamsfoundation.lams.web.util.SessionMap; +import org.lamsfoundation.lams.web.session.SessionManager; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -168,6 +172,11 @@ if (param.equals("viewReflection")) { return viewReflection(mapping, form, request, response); } + + // **************** Date restriction ***************** + if (param.equals("setSubmissionDeadline")) { + return setSubmissionDeadline(mapping, form, request, response); + } return mapping.findForward("error"); } @@ -210,13 +219,28 @@ Long toolContentID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); forumService = getForumService(); + + // get session from shared session. + HttpSession ss = SessionManager.getSession(); + List sessionsList = forumService.getSessionsByContentId(toolContentID); // A forum clone required for listing the advanced options LDEV-1662 Forum forumClone = null; + // check if there is submission deadline + Date submissionDeadline = forumService.getForumByContentId(toolContentID).getSubmissionDeadline(); + + if (submissionDeadline != null) { + org.lamsfoundation.lams.usermanagement.dto.UserDTO learnerDto = (org.lamsfoundation.lams.usermanagement.dto.UserDTO) ss.getAttribute(AttributeNames.USER); + TimeZone learnerTimeZone = learnerDto.getTimeZone(); + Date tzSubmissionDeadline = DateUtil.convertToTimeZoneFromDefault(learnerTimeZone, submissionDeadline); + request.setAttribute(ForumConstants.ATTR_SUBMISSION_DEADLINE, tzSubmissionDeadline.getTime()); + } + + Map sessionUsersMap = new TreeMap(this.new SessionDTOComparator()); - // build a map with all users in the submitFilesSessionList + // build a map with all users in the forumSessionList Iterator it = sessionsList.iterator(); while (it.hasNext()) { SessionDTO sessionDto = new SessionDTO(); @@ -795,7 +819,40 @@ } } + + /** + * Set Submission Deadline + * + * @param mapping + * @param form + * @param request + * @param response + * @return + */ + public ActionForward setSubmissionDeadline(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + forumService = getForumService(); + + Long contentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); + Forum forum = forumService.getForumByContentId(contentID); + + Long dateParameter = WebUtil.readLongParam(request, ForumConstants.ATTR_SUBMISSION_DEADLINE, true); + Date tzSubmissionDeadline = null; + if (dateParameter != null) { + Date submissionDeadline = new Date(dateParameter); + HttpSession ss = SessionManager.getSession(); + org.lamsfoundation.lams.usermanagement.dto.UserDTO teacher = (org.lamsfoundation.lams.usermanagement.dto.UserDTO) ss.getAttribute(AttributeNames.USER); + TimeZone teacherTimeZone = teacher.getTimeZone(); + tzSubmissionDeadline = DateUtil.convertFromTimeZoneToDefault(teacherTimeZone, submissionDeadline); + } + forum.setSubmissionDeadline(tzSubmissionDeadline); + forumService.updateForum(forum); + return null; + } + + + // ========================================================================================== // Utility methods // ========================================================================================== Index: lams_tool_forum/web/common/tabbedheader.jsp =================================================================== diff -u -r00ae80d4791f903bcb3661537fc7e129c72ad195 -r0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea --- lams_tool_forum/web/common/tabbedheader.jsp (.../tabbedheader.jsp) (revision 00ae80d4791f903bcb3661537fc7e129c72ad195) +++ lams_tool_forum/web/common/tabbedheader.jsp (.../tabbedheader.jsp) (revision 0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea) @@ -30,6 +30,5 @@ - Index: lams_tool_forum/web/jsps/learning/runoffline.jsp =================================================================== diff -u -r6e293d865aafc645f6e115b32d0e3111d2beff49 -r0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea --- lams_tool_forum/web/jsps/learning/runoffline.jsp (.../runoffline.jsp) (revision 6e293d865aafc645f6e115b32d0e3111d2beff49) +++ lams_tool_forum/web/jsps/learning/runoffline.jsp (.../runoffline.jsp) (revision 0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea) @@ -7,9 +7,20 @@ -

- -

+ + +

+ +

+
+ +
+ + + +
+
+
Index: lams_tool_forum/web/jsps/learning/viewforum.jsp =================================================================== diff -u -r6e293d865aafc645f6e115b32d0e3111d2beff49 -r0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea --- lams_tool_forum/web/jsps/learning/viewforum.jsp (.../viewforum.jsp) (revision 6e293d865aafc645f6e115b32d0e3111d2beff49) +++ lams_tool_forum/web/jsps/learning/viewforum.jsp (.../viewforum.jsp) (revision 0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea) @@ -13,6 +13,13 @@
+ +
+ + + +
+
Index: lams_tool_forum/web/jsps/monitoring/daterestriction.jsp =================================================================== diff -u --- lams_tool_forum/web/jsps/monitoring/daterestriction.jsp (revision 0) +++ lams_tool_forum/web/jsps/monitoring/daterestriction.jsp (revision 0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea) @@ -0,0 +1,43 @@ +<%@include file="/common/taglibs.jsp"%> + +

+ + + + + +

+
+ + \ No newline at end of file Index: lams_tool_forum/web/jsps/monitoring/summary.jsp =================================================================== diff -u -r8a8c14627918cc58fa845c2369937bc482d2f6b9 -r0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea --- lams_tool_forum/web/jsps/monitoring/summary.jsp (.../summary.jsp) (revision 8a8c14627918cc58fa845c2369937bc482d2f6b9) +++ lams_tool_forum/web/jsps/monitoring/summary.jsp (.../summary.jsp) (revision 0762d2ed47bda6daf6a2ae4eca9b3409b7c3b3ea) @@ -3,7 +3,18 @@ - + + + + + + + + + + + + -

+

@@ -293,6 +371,8 @@ +<%@include file="daterestriction.jsp"%> +