Index: lams_tool_forum/build.properties =================================================================== diff -u -r2dbea686e81e6a5843328d8c0bd814b63e64d36f -r1ef4b877aea0883709c641351e07595c6be84361 --- lams_tool_forum/build.properties (.../build.properties) (revision 2dbea686e81e6a5843328d8c0bd814b63e64d36f) +++ lams_tool_forum/build.properties (.../build.properties) (revision 1ef4b877aea0883709c641351e07595c6be84361) @@ -9,7 +9,7 @@ ### project properties ### signature=lafrum11 project.displayname = lams forum tool -tool.version=20100303 +tool.version=20101025 # hide tool option hideTool=false Index: lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Forum.hbm.xml =================================================================== diff -u -rc081e2b0c9c82fc97d2d39fb7109c9c2f10ff224 -r1ef4b877aea0883709c641351e07595c6be84361 --- lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Forum.hbm.xml (.../Forum.hbm.xml) (revision c081e2b0c9c82fc97d2d39fb7109c9c2f10ff224) +++ lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Forum.hbm.xml (.../Forum.hbm.xml) (revision 1ef4b877aea0883709c641351e07595c6be84361) @@ -253,6 +253,22 @@ /> + + + + + + + + + + conditions = new TreeSet(new TextSearchConditionComparator()); @@ -593,8 +597,32 @@ public void setReflectOnActivity(boolean reflectOnActivity) { this.reflectOnActivity = reflectOnActivity; } + + /** + * @hibernate.property column="notify_learners_on_forum_posting" + * @return + */ + public boolean isNotifyLearnersOnForumPosting() { + return notifyLearnersOnForumPosting; + } + public void setNotifyLearnersOnForumPosting(boolean notifyLearnersOnForumPosting) { + this.notifyLearnersOnForumPosting = notifyLearnersOnForumPosting; + } + /** + * @hibernate.property column="notify_teachers_on_forum_posting" + * @return + */ + public boolean isNotifyTeachersOnForumPosting() { + return notifyTeachersOnForumPosting; + } + + public void setNotifyTeachersOnForumPosting(boolean notifyTeachersOnForumPosting) { + this.notifyTeachersOnForumPosting = notifyTeachersOnForumPosting; + } + + /** * @hibernate.property column="mark_release_notify" * @return */ Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== diff -u -r2dbea686e81e6a5843328d8c0bd814b63e64d36f -r1ef4b877aea0883709c641351e07595c6be84361 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 2dbea686e81e6a5843328d8c0bd814b63e64d36f) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 1ef4b877aea0883709c641351e07595c6be84361) @@ -56,18 +56,23 @@ import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; import org.lamsfoundation.lams.contentrepository.service.IRepositoryService; import org.lamsfoundation.lams.contentrepository.service.SimpleCredentials; +import org.lamsfoundation.lams.events.DeliveryMethodMail; import org.lamsfoundation.lams.events.IEventNotificationService; import org.lamsfoundation.lams.gradebook.service.IGradebookService; import org.lamsfoundation.lams.learning.service.ILearnerService; +import org.lamsfoundation.lams.learningdesign.ToolActivity; +import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException; import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; +import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputDefinition; +import org.lamsfoundation.lams.tool.ToolSession; import org.lamsfoundation.lams.tool.ToolSessionExportOutputData; import org.lamsfoundation.lams.tool.ToolSessionManager; import org.lamsfoundation.lams.tool.exception.DataMissingException; @@ -158,6 +163,11 @@ private IGradebookService gradebookService; private IEventNotificationService eventNotificationService; + + private ILessonService lessonService; + + private IActivityDAO activityDAO; + private Random generator = new Random(); // --------------------------------------------------------------------- @@ -1295,6 +1305,14 @@ this.gradebookService = gradebookService; } + public void setLessonService(ILessonService lessonService) { + this.lessonService = lessonService; + } + + public void setActivityDAO(IActivityDAO activityDAO) { + this.activityDAO = activityDAO; + } + /** * {@inheritDoc} */ @@ -1353,7 +1371,44 @@ public void saveTimestamp(Timestamp timestamp) { timestampDao.saveOrUpdate(timestamp); } + + public void sendNotificationsOnNewPosting(Long forumId, Long sessionId, Message message) { + Forum forum = getForum(forumId); + ForumUser postAuthor = message.getCreatedBy(); + String fullName = postAuthor.getLastName() + " " + postAuthor.getFirstName(); + ToolSession toolSession = toolService.getToolSession(sessionId); + Long activityId = toolSession.getToolActivity().getActivityId(); + ToolActivity activity = (ToolActivity) activityDAO.getActivityByActivityId(activityId, ToolActivity.class); + + if (forum.isNotifyLearnersOnForumPosting()) { + List learners = lessonService.getLearnersHaveAttemptedActivity(activity); + if (learners != null && !learners.isEmpty()) { + ArrayList learnerIds = new ArrayList(); + for (User learner : learners) { + learnerIds.add(learner.getUserId().longValue()); + } + + getEventNotificationService().sendMessage(learnerIds.toArray(new Long[0]), DeliveryMethodMail.getInstance(), + getLocalisedMessage("event.newposting.subject", new Object[] { forum.getTitle() }), + getLocalisedMessage("event.newposting.body", new Object[] { fullName, message.getBody() })); + } + } + + if (forum.isNotifyTeachersOnForumPosting()) { + List monitoringUsers = lessonService.getMonitorsByToolSessionId(sessionId); + if (monitoringUsers != null && !monitoringUsers.isEmpty()) { + ArrayList monitoringUsersIds = new ArrayList(); + for (User monitoringUser : monitoringUsers) { + monitoringUsersIds.add(monitoringUser.getUserId().longValue()); + } + getEventNotificationService().sendMessage(monitoringUsersIds.toArray(new Long[0]), DeliveryMethodMail.getInstance(), + getLocalisedMessage("event.newposting.subject", new Object[] { forum.getTitle() }), + getLocalisedMessage("event.newposting.body", new Object[] { fullName, message.getBody() })); + } + } + } + public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { return getForumOutputFactory().getSupportedDefinitionClasses(definitionType); } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java =================================================================== diff -u -r2dbea686e81e6a5843328d8c0bd814b63e64d36f -r1ef4b877aea0883709c641351e07595c6be84361 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java (.../IForumService.java) (revision 2dbea686e81e6a5843328d8c0bd814b63e64d36f) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java (.../IForumService.java) (revision 1ef4b877aea0883709c641351e07595c6be84361) @@ -431,4 +431,6 @@ public String createTextSearchConditionName(Collection existingConditions); public void deleteCondition(ForumCondition condition) throws PersistenceException; + + void sendNotificationsOnNewPosting(Long forumId, Long sessionId, Message message); } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java =================================================================== diff -u -r2dbea686e81e6a5843328d8c0bd814b63e64d36f -r1ef4b877aea0883709c641351e07595c6be84361 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision 2dbea686e81e6a5843328d8c0bd814b63e64d36f) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision 1ef4b877aea0883709c641351e07595c6be84361) @@ -586,7 +586,10 @@ messageDTO.setLastTopicDate(forumService.getLastTopicDate(messageDTO.getMessage().getUid())); } - + + // notify learners and teachers + forumService.sendNotificationsOnNewPosting(forumId, sessionId, message); + return mapping.findForward("success"); } @@ -693,6 +696,10 @@ // Saving or updating user timestamp saveUserTimestamp(rootTopicId, forumUser); + + // notify learners and teachers + Long forumId = (Long) sessionMap.get(ForumConstants.FORUM_ID); + forumService.sendNotificationsOnNewPosting(forumId, sessionId, message); return mapping.findForward("success"); } Index: lams_tool_forum/web/jsps/authoring/advance.jsp =================================================================== diff -u -rce3e782fd6844641f7298e09104f8d7554f073ff -r1ef4b877aea0883709c641351e07595c6be84361 --- lams_tool_forum/web/jsps/authoring/advance.jsp (.../advance.jsp) (revision ce3e782fd6844641f7298e09104f8d7554f073ff) +++ lams_tool_forum/web/jsps/authoring/advance.jsp (.../advance.jsp) (revision 1ef4b877aea0883709c641351e07595c6be84361) @@ -50,6 +50,22 @@

+

+

+ + + +

+

+ + + +

+