Index: lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/Wiki.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/Attic/Wiki.hbm.xml,v diff -u -r1.3.2.2 -r1.3.2.3 --- lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/Wiki.hbm.xml 27 Apr 2016 13:22:24 -0000 1.3.2.2 +++ lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/Wiki.hbm.xml 21 Sep 2016 08:05:52 -0000 1.3.2.3 @@ -213,6 +213,14 @@ /> + + sessionDTOs = new TreeSet(); + + public Set sessionDTOs = new TreeSet(); + public Long currentTab; /* Constructors */ @@ -85,8 +90,10 @@ notifyUpdates = wiki.isNotifyUpdates(); reflectOnActivity = wiki.isReflectOnActivity(); reflectInstructions = wiki.getReflectInstructions(); + submissionDeadline = wiki.getSubmissionDeadline(); minimumEdits = wiki.getMinimumEdits(); maximumEdits = wiki.getMaximumEdits(); + for (Iterator iter = wiki.getWikiSessions().iterator(); iter.hasNext();) { WikiSession session = iter.next(); @@ -228,4 +235,12 @@ public void setCurrentTab(Long currentTab) { this.currentTab = currentTab; } + + public Date getSubmissionDeadline() { + return submissionDeadline; + } + + public void setSubmissionDeadline(Date submissionDeadline) { + this.submissionDeadline = submissionDeadline; + } } Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/Wiki.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/Wiki.java,v diff -u -r1.4.2.3 -r1.4.2.4 --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/Wiki.java 11 May 2016 07:37:40 -0000 1.4.2.3 +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/Wiki.java 21 Sep 2016 08:12:21 -0000 1.4.2.4 @@ -95,6 +95,8 @@ private boolean defineLater; private Long toolContentId; + + private Date submissionDeadline; private Set wikiSessions; @@ -368,7 +370,21 @@ public void setMainPage(WikiPage mainPage) { this.mainPage = mainPage; } + + + /** + * + * @return + */ + public Date getSubmissionDeadline() { + return submissionDeadline; + } + + public void setSubmissionDeadline(Date submissionDeadline) { + this.submissionDeadline = submissionDeadline; + } + /** * toString * Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiConstants.java,v diff -u -r1.9.2.2 -r1.9.2.3 --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiConstants.java 11 May 2016 07:37:40 -0000 1.9.2.2 +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiConstants.java 21 Sep 2016 08:13:57 -0000 1.9.2.3 @@ -74,4 +74,13 @@ public static final String JAVASCRIPT_TOKEN = "javascript"; public static final String JAVASCRIPT_REPLACE_TOKEN = "JAVASCRIPTREPLACE"; + + public static final String MESSAGE_SEPARATOR = " "; + 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"; + + /* Date time restriction */ + public static final String ATTR_SUBMISSION_DEADLINE = "submissionDeadline"; + public static final String ATTR_IS_SUBMISSION_DEADLINE_PASSED = "isSubmissionDeadlinePassed"; + } Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/LearningAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/LearningAction.java,v diff -u -r1.11.2.4 -r1.11.2.5 --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/LearningAction.java 5 Aug 2016 12:40:32 -0000 1.11.2.4 +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/LearningAction.java 21 Sep 2016 08:15:15 -0000 1.11.2.5 @@ -26,11 +26,13 @@ import java.io.IOException; import java.util.Date; +import java.util.TimeZone; import java.util.SortedSet; import java.util.TreeSet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import org.apache.struts.action.ActionForm; @@ -41,6 +43,7 @@ import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.ToolSessionManager; + import org.lamsfoundation.lams.tool.exception.DataMissingException; import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.wiki.dto.WikiDTO; @@ -59,6 +62,7 @@ import org.lamsfoundation.lams.tool.wiki.web.forms.LearningForm; 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; @@ -165,10 +169,12 @@ if (wikiService.getEventNotificationService().eventExists(WikiConstants.TOOL_SIGNATURE, WikiConstants.EVENT_NOTIFY_LEARNERS, toolSessionID) && wikiService.getEventNotificationService().isSubscribed(WikiConstants.TOOL_SIGNATURE, - WikiConstants.EVENT_NOTIFY_LEARNERS, toolSessionID, wikiUser.getUserId().longValue())) { - + WikiConstants.EVENT_NOTIFY_LEARNERS, toolSessionID, wikiUser.getUserId())) { wikiUserDTO.setNotificationEnabled(true); } + + + // add the userDTO to attributes request.setAttribute(WikiConstants.ATTR_USER_DTO, wikiUserDTO); @@ -222,7 +228,30 @@ request.setAttribute(WikiConstants.ATTR_CONTENT_EDITAVLE, true); } request.setAttribute(WikiConstants.ATTR_FINISHED_ACTIVITY, wikiUser.isFinishedActivity()); + + + /* Check if submission deadline is null */ + + Date submissionDeadline = wikiDTO.getSubmissionDeadline(); + request.setAttribute("wikiDTO", wikiDTO); + + 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 "submissionDeadline" + if (currentLearnerDate.after(tzSubmissionDeadline)) { + return mapping.findForward("submissionDeadline"); + } + + } + return mapping.findForward("wiki"); } Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/MonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/MonitoringAction.java,v diff -u -r1.10.2.4 -r1.10.2.5 --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/MonitoringAction.java 11 May 2016 07:37:40 -0000 1.10.2.4 +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/MonitoringAction.java 21 Sep 2016 08:15:50 -0000 1.10.2.5 @@ -29,6 +29,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import org.apache.struts.action.ActionForm; @@ -55,6 +56,9 @@ import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; +import java.util.Date; +import org.lamsfoundation.lams.util.DateUtil; +import java.util.TimeZone; /** * This action handles all the monitoring actions, which include opening @@ -117,7 +121,21 @@ Long currentTab = WebUtil.readLongParam(request, AttributeNames.PARAM_CURRENT_TAB, true); wikiDT0.setCurrentTab(currentTab); + + /* Check if submission deadline is null */ + Date submissionDeadline = wikiDT0.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()); + + } + request.setAttribute(WikiConstants.ATTR_WIKI_DTO, wikiDT0); request.setAttribute(WikiConstants.ATTR_CONTENT_FOLDER_ID, contentFolderID); request.setAttribute(WikiConstants.ATTR_IS_GROUPED_ACTIVITY, wikiService.isGroupedActivity(toolContentID)); @@ -156,7 +174,44 @@ return wikiUser; } + + + /** + * 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 wikiService + if (wikiService == null) { + wikiService = WikiServiceProxy.getWikiService(this.getServlet().getServletContext()); + } + + Long contentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); + Wiki wiki = wikiService.getWikiByContentId(contentID); + + Long dateParameter = WebUtil.readLongParam(request,WikiConstants.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); + } + wiki.setSubmissionDeadline(tzSubmissionDeadline); + System.out.println("datasetbefore"+wiki); + wikiService.saveOrUpdateWiki(wiki); + System.out.println("datasetafter"+wiki); + return null; + } + /** * Shows a specific wiki based on the session id *