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 @@
+
+
+
+
+
+
+
+
+
+
+
+