Index: lams_tool_forum/build.properties =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/build.properties,v diff -u -r1.24.8.1 -r1.24.8.2 --- lams_tool_forum/build.properties 1 Apr 2010 17:08:31 -0000 1.24.8.1 +++ lams_tool_forum/build.properties 27 Oct 2010 15:18:44 -0000 1.24.8.2 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Attic/Forum.hbm.xml,v diff -u -r1.19 -r1.19.10.1 --- lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Forum.hbm.xml 27 Oct 2008 00:53:02 -0000 1.19 +++ lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Forum.hbm.xml 27 Oct 2010 15:18:44 -0000 1.19.10.1 @@ -253,6 +253,22 @@ /> + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
-
-
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + + + + + + + + + + +
Index: lams_tool_forum/db/sql/create_lams_tool_forum.sql =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/db/sql/create_lams_tool_forum.sql,v diff -u -r1.33.8.1 -r1.33.8.2 --- lams_tool_forum/db/sql/create_lams_tool_forum.sql 1 Apr 2010 17:08:31 -0000 1.33.8.1 +++ lams_tool_forum/db/sql/create_lams_tool_forum.sql 27 Oct 2010 15:18:44 -0000 1.33.8.2 @@ -45,6 +45,8 @@ limited_input_flag smallint, reflect_instructions varchar(255), reflect_on_activity smallint, + notify_learners_on_forum_posting tinyint DEFAULT 0, + notify_teachers_on_forum_posting tinyint DEFAULT 0, mark_release_notify tinyint DEFAULT 0, primary key (uid) )TYPE=InnoDB; @@ -153,8 +155,8 @@ alter table tl_lafrum11_timestamp add index MessageFK (message_uid), add constraint MessageFK foreign key (message_uid) references tl_lafrum11_message (uid); INSERT INTO tl_lafrum11_forum (uid,title,instructions,online_instructions,offline_instructions,content_id,allow_anonym,run_offline,lock_on_finished,content_in_use,define_later,allow_edit,allow_rich_editor, - allow_new_topic,allow_upload,maximum_reply, minimum_reply,limited_input_flag,limited_of_chars,reflect_on_activity) -VALUES(1,"Forum","Instructions",null,null,${default_content_id},0,0,0,0,0,1,0,1,0,1,0,1,5000,0); + allow_new_topic,allow_upload,maximum_reply, minimum_reply,limited_input_flag,limited_of_chars,notify_learners_on_forum_posting,notify_teachers_on_forum_posting,reflect_on_activity) +VALUES(1,"Forum","Instructions",null,null,${default_content_id},0,0,0,0,0,1,0,1,0,1,0,1,5000,0,0,0); INSERT INTO `tl_lafrum11_message` (`uid`, `create_date`, `last_reply_date`, `update_date`, `create_by`, `modified_by`, `subject`, `body`, `sequence_id`, `is_authored`, `is_anonymous`, `forum_session_uid`, `parent_uid`, `forum_uid`, `reply_number`, `hide_flag`, `report_id`) VALUES (1,NOW(),NOW(),NOW(),null,null,'Topic Heading','Topic message',1,1,0,NULL,NULL,1,0,0,NULL); Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml,v diff -u -r1.22.2.1 -r1.22.2.1.4.1 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml 22 Apr 2009 08:41:38 -0000 1.22.2.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml 27 Oct 2010 15:18:44 -0000 1.22.2.1.4.1 @@ -133,6 +133,12 @@ + + + + + + + + + + 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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java,v diff -u -r1.99.4.3.4.1 -r1.99.4.3.4.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 1 Apr 2010 17:08:31 -0000 1.99.4.3.4.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 27 Oct 2010 15:18:43 -0000 1.99.4.3.4.2 @@ -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(); // --------------------------------------------------------------------- @@ -1299,6 +1309,14 @@ this.gradebookService = gradebookService; } + public void setLessonService(ILessonService lessonService) { + this.lessonService = lessonService; + } + + public void setActivityDAO(IActivityDAO activityDAO) { + this.activityDAO = activityDAO; + } + /** * {@inheritDoc} */ @@ -1357,5 +1375,42 @@ 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() })); + } + } + } + } \ No newline at end of file Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java,v diff -u -r1.44.4.2.4.1 -r1.44.4.2.4.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java 1 Apr 2010 17:08:31 -0000 1.44.4.2.4.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java 27 Oct 2010 15:18:44 -0000 1.44.4.2.4.2 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java,v diff -u -r1.65.8.1 -r1.65.8.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java 1 Apr 2010 17:08:31 -0000 1.65.8.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java 27 Oct 2010 15:18:43 -0000 1.65.8.2 @@ -599,6 +599,9 @@ messageDTO.setLastTopicDate(forumService.getLastTopicDate(messageDTO.getMessage().getUid())); } + // notify learners and teachers + forumService.sendNotificationsOnNewPosting(forumId, sessionId, message); + return mapping.findForward("success"); } @@ -705,6 +708,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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/jsps/authoring/advance.jsp,v diff -u -r1.24.10.1 -r1.24.10.2 --- lams_tool_forum/web/jsps/authoring/advance.jsp 16 Nov 2009 02:25:12 -0000 1.24.10.1 +++ lams_tool_forum/web/jsps/authoring/advance.jsp 27 Oct 2010 15:18:44 -0000 1.24.10.2 @@ -50,6 +50,22 @@

+

+

+ + + +

+

+ + + +

+