Index: lams_monitoring/build.xml
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/build.xml,v
diff -u -r1.29.6.1 -r1.29.6.2
--- lams_monitoring/build.xml 4 Sep 2011 10:04:41 -0000 1.29.6.1
+++ lams_monitoring/build.xml 14 Oct 2011 17:55:12 -0000 1.29.6.2
@@ -289,6 +289,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Fisheye: Tag 1.1.10.1 refers to a dead (removed) revision in file `lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/BranchDTO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1.3.10.1 refers to a dead (removed) revision in file `lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/BranchingDTO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1.3.10.1 refers to a dead (removed) revision in file `lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/ContributeActivityDTO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/ContributeDTOFactory.java
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/ContributeDTOFactory.java,v
diff -u -r1.4 -r1.4.10.1
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/ContributeDTOFactory.java 4 Jul 2007 03:31:10 -0000 1.4
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/ContributeDTOFactory.java 14 Oct 2011 17:55:09 -0000 1.4.10.1
@@ -34,6 +34,7 @@
import org.lamsfoundation.lams.learningdesign.strategy.ComplexActivityStrategy;
import org.lamsfoundation.lams.learningdesign.strategy.IContributionTypeStrategy;
import org.lamsfoundation.lams.learningdesign.strategy.SimpleActivityStrategy;
+import org.lamsfoundation.lams.monitoring.dto.ContributeActivityDTO;
import org.lamsfoundation.lams.tool.exception.LamsToolServiceException;
import org.lamsfoundation.lams.tool.service.ILamsCoreToolService;
import org.lamsfoundation.lams.util.WebUtil;
Fisheye: Tag 1.1.10.1 refers to a dead (removed) revision in file `lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/LearnerProgressBatchDTO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/MonitoringConstants.java
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/MonitoringConstants.java,v
diff -u -r1.13.10.1.4.1 -r1.13.10.1.4.2
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/MonitoringConstants.java 26 Aug 2011 20:05:27 -0000 1.13.10.1.4.1
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/MonitoringConstants.java 14 Oct 2011 17:55:09 -0000 1.13.10.1.4.2
@@ -39,6 +39,7 @@
public static final String KEY_LEARNER = "learners";
public static final String JOB_START_LESSON = "startScheduleLessonJob";
public static final String JOB_FINISH_LESSON = "finishScheduleLessonJob";
+ public static final String JOB_EMAIL_MESSAGE = "emailScheduleMessageJob";
public static final String PARAM_LESSON_START_DATE = "lessonStartDate";
public static final String PARAM_SCHEDULED_NUMBER_DAYS_TO_LESSON_FINISH = "scheduledNumberDaysToLessonFinish";
public static final String PARAM_LEARNER_ID = "learnerID";
Fisheye: Tag 1.2.16.1 refers to a dead (removed) revision in file `lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/URLFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml,v
diff -u -r1.30.6.1 -r1.30.6.2
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml 9 Apr 2010 18:02:08 -0000 1.30.6.1
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml 14 Oct 2011 17:55:09 -0000 1.30.6.2
@@ -97,5 +97,10 @@
org.lamsfoundation.lams.monitoring.quartz.job.FinishScheduleLessonJob
+
+
+ org.lamsfoundation.lams.monitoring.quartz.job.EmailScheduleMessageJob
+
+
\ No newline at end of file
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/dto/BranchDTO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/dto/BranchingDTO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/dto/ContributeActivityDTO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/dto/EmailScheduleMessageJobDTO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/dto/LearnerProgressBatchDTO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/EmailScheduleMessageJob.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/ContributeActivitiesProcessor.java
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/ContributeActivitiesProcessor.java,v
diff -u -r1.5 -r1.5.10.1
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/ContributeActivitiesProcessor.java 7 Mar 2008 00:34:34 -0000 1.5
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/ContributeActivitiesProcessor.java 14 Oct 2011 17:55:12 -0000 1.5.10.1
@@ -33,8 +33,8 @@
import org.lamsfoundation.lams.learningdesign.SimpleActivity;
import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO;
import org.lamsfoundation.lams.learningdesign.exception.LearningDesignProcessorException;
-import org.lamsfoundation.lams.monitoring.ContributeActivityDTO;
import org.lamsfoundation.lams.monitoring.ContributeDTOFactory;
+import org.lamsfoundation.lams.monitoring.dto.ContributeActivityDTO;
import org.lamsfoundation.lams.tool.exception.LamsToolServiceException;
import org.lamsfoundation.lams.tool.service.ILamsCoreToolService;
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java,v
diff -u -r1.149.2.7.2.14 -r1.149.2.7.2.15
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 8 Sep 2011 10:23:09 -0000 1.149.2.7.2.14
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 14 Oct 2011 17:55:12 -0000 1.149.2.7.2.15
@@ -81,8 +81,8 @@
import org.lamsfoundation.lams.lesson.service.LessonServiceException;
import org.lamsfoundation.lams.logevent.LogEvent;
import org.lamsfoundation.lams.logevent.service.ILogEventService;
-import org.lamsfoundation.lams.monitoring.LearnerProgressBatchDTO;
import org.lamsfoundation.lams.monitoring.MonitoringConstants;
+import org.lamsfoundation.lams.monitoring.dto.LearnerProgressBatchDTO;
import org.lamsfoundation.lams.tool.ToolSession;
import org.lamsfoundation.lams.tool.exception.LamsToolServiceException;
import org.lamsfoundation.lams.tool.exception.ToolException;
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/BranchingAction.java
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/BranchingAction.java,v
diff -u -r1.3 -r1.3.10.1
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/BranchingAction.java 7 Nov 2008 01:41:24 -0000 1.3
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/BranchingAction.java 14 Oct 2011 17:55:11 -0000 1.3.10.1
@@ -45,8 +45,8 @@
import org.lamsfoundation.lams.learningdesign.Group;
import org.lamsfoundation.lams.learningdesign.BranchActivityEntry;
import org.lamsfoundation.lams.learningdesign.SequenceActivity;
-import org.lamsfoundation.lams.monitoring.BranchDTO;
-import org.lamsfoundation.lams.monitoring.BranchingDTO;
+import org.lamsfoundation.lams.monitoring.dto.BranchDTO;
+import org.lamsfoundation.lams.monitoring.dto.BranchingDTO;
import org.lamsfoundation.lams.monitoring.service.IMonitoringService;
import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy;
import org.lamsfoundation.lams.usermanagement.User;
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ComplexLearnerProgressAction.java
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ComplexLearnerProgressAction.java,v
diff -u -r1.5 -r1.5.10.1
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ComplexLearnerProgressAction.java 4 Jun 2008 04:29:46 -0000 1.5
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ComplexLearnerProgressAction.java 14 Oct 2011 17:55:11 -0000 1.5.10.1
@@ -50,7 +50,7 @@
import org.lamsfoundation.lams.learningdesign.ParallelActivity;
import org.lamsfoundation.lams.learningdesign.SequenceActivity;
import org.lamsfoundation.lams.lesson.LearnerProgress;
-import org.lamsfoundation.lams.monitoring.ContributeActivityDTO;
+import org.lamsfoundation.lams.monitoring.dto.ContributeActivityDTO;
import org.lamsfoundation.lams.monitoring.service.IMonitoringService;
import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy;
import org.lamsfoundation.lams.usermanagement.User;
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java,v
diff -u -r1.1.2.3 -r1.1.2.4
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java 5 Sep 2011 19:14:47 -0000 1.1.2.3
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java 14 Oct 2011 17:55:11 -0000 1.1.2.4
@@ -32,6 +32,7 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
+import java.util.TimeZone;
import java.util.TreeSet;
import javax.servlet.ServletException;
@@ -55,34 +56,45 @@
import org.lamsfoundation.lams.lesson.Lesson;
import org.lamsfoundation.lams.lesson.dao.ILearnerProgressDAO;
import org.lamsfoundation.lams.lesson.service.ILessonService;
+import org.lamsfoundation.lams.monitoring.MonitoringConstants;
+import org.lamsfoundation.lams.monitoring.dto.EmailScheduleMessageJobDTO;
import org.lamsfoundation.lams.monitoring.service.IMonitoringService;
+import org.lamsfoundation.lams.monitoring.service.MonitoringService;
+import org.lamsfoundation.lams.monitoring.service.MonitoringServiceException;
import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy;
import org.lamsfoundation.lams.usermanagement.Organisation;
import org.lamsfoundation.lams.usermanagement.User;
import org.lamsfoundation.lams.usermanagement.dto.UserDTO;
+import org.lamsfoundation.lams.util.DateUtil;
import org.lamsfoundation.lams.util.WebUtil;
import org.lamsfoundation.lams.web.action.LamsDispatchAction;
import org.lamsfoundation.lams.web.session.SessionManager;
import org.lamsfoundation.lams.web.util.AttributeNames;
+import org.quartz.JobDataMap;
+import org.quartz.JobDetail;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.SimpleTrigger;
+import org.quartz.Trigger;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
/**
*
- * The action servlet that provide all the monitoring functionalities. It interact with the teacher via flash and JSP
- * monitoring interface.
+ * Responsible for "Email notification" functionality.
*
*
* @author Andrey Balan
*
- * ----------------XDoclet Tags--------------------
+ * ----------------XDoclet Tags--------------------
*
* @struts:action path="/emailNotifications" parameter="method" validate="false"
* @struts.action-forward name = "lessonView" path = "/emailnotifications/lessonNotifications.jsp"
* @struts.action-forward name = "courseView" path = "/emailnotifications/courseNotifications.jsp"
* @struts.action-forward name = "userList" path = "/emailnotifications/userList.jsp"
+ * @struts.action-forward name = "scheduledEmailList" path = "/emailnotifications/scheduledEmailList.jsp"
*
- * ----------------XDoclet Tags--------------------
+ * ----------------XDoclet Tags--------------------
*/
public class EmailNotificationsAction extends LamsDispatchAction {
@@ -101,8 +113,9 @@
private static final int COURSE_TYPE_HAVENT_STARTED_PARTICULAR_LESSON = 8;
private static final int COURSE_TYPE_HAVENT_STARTED_ANY_LESSONS = 9;
private static final int COURSE_TYPE_HAVE_FINISHED_THESE_LESSONS = 10;
-
+ private static final String TRIGGER_PREFIX_NAME = "emailMessageOnScheduleTrigger:";
+
private static ILessonService lessonService;
private static IGroupUserDAO groupUserDAO;
private static ILearnerProgressDAO learnerProgressDAO;
@@ -111,26 +124,9 @@
// ---------------------------------------------------------------------
// Struts Dispatch Method
// ---------------------------------------------------------------------
+
/**
- * This STRUTS action method will initialize a lesson for specific learning design with the given lesson title and
- * lesson description.
- *
- * If initialization is successed, this method will return a WDDX message which includes the ID of new lesson.
- *
- * @param mapping
- * An ActionMapping class that will be used by the Action class to tell the ActionServlet where to send
- * the end-user.
- *
- * @param form
- * The ActionForm class that will contain any data submitted by the end-user via a form.
- * @param request
- * A standard Servlet HttpServletRequest class.
- * @param response
- * A standard Servlet HttpServletResponse class.
- * @return An ActionForward class that will be returned to the ActionServlet indicating where the user is to go
- * next.
- * @throws IOException
- * @throws ServletException
+ * Shows "Email notification" page for particular lesson.
*/
public ActionForward getLessonView(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
@@ -148,6 +144,9 @@
return mapping.findForward("lessonView");
}
+ /**
+ * Shows "Email notification" page for particular course.
+ */
public ActionForward getCourseView(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
@@ -172,28 +171,42 @@
return mapping.findForward("courseView");
}
+
+ /**
+ * Renders a page listing all scheduled emails.
+ */
+ public ActionForward showScheduledEmails(ActionMapping mapping, ActionForm form, HttpServletRequest request,
+ HttpServletResponse response) throws IOException, ServletException, SchedulerException {
+ Scheduler scheduler = getScheduler();
+ TreeSet scheduleList = new TreeSet();
+
+ String[] triggerNames = scheduler.getTriggerNames(Scheduler.DEFAULT_GROUP);
+ for (String triggerName : triggerNames) {
+ if (triggerName.startsWith(TRIGGER_PREFIX_NAME)) {
+ Trigger trigger = scheduler.getTrigger(triggerName, Scheduler.DEFAULT_GROUP);
+ JobDetail jobDetail = scheduler.getJobDetail(trigger.getJobName(), Scheduler.DEFAULT_GROUP);
+ JobDataMap jobDataMap = jobDetail.getJobDataMap();
+ Date triggerDate = trigger.getNextFireTime();
+ String emailBody = (String) jobDataMap.get("emailBody");
+ String[] userIdStrs = (String[]) jobDataMap.get(MonitoringConstants.KEY_USER_ID);
+
+ EmailScheduleMessageJobDTO emailScheduleJobDTO = new EmailScheduleMessageJobDTO();
+ emailScheduleJobDTO.setTriggerDate(triggerDate);
+ emailScheduleJobDTO.setEmailBody(emailBody);
+ emailScheduleJobDTO.setUserIdStrs(userIdStrs);
+ scheduleList.add(emailScheduleJobDTO);
+ }
+ }
+
+ request.setAttribute("scheduleList", scheduleList);
+ request.setAttribute(AttributeNames.PARAM_LESSON_ID, request.getParameter(AttributeNames.PARAM_LESSON_ID));
+ request.setAttribute(AttributeNames.PARAM_ORGANISATION_ID, request.getParameter(AttributeNames.PARAM_ORGANISATION_ID));
+ return mapping.findForward("scheduledEmailList");
+ }
+
/**
- * The Struts dispatch method that starts a lesson that has been created beforehand. Most likely, the request to
- * start lesson should be triggered by the flash component. This method will delegate to the Spring service bean to
- * complete all the steps for starting a lesson. Finally, a wddx acknowledgement message will be serialized and sent
- * back to the flash component.
- *
- * @param mapping
- * An ActionMapping class that will be used by the Action class to tell the ActionServlet where to send
- * the end-user.
- *
- * @param form
- * The ActionForm class that will contain any data submitted by the end-user via a form.
- * @param request
- * A standard Servlet HttpServletRequest class.
- * @param response
- * A standard Servlet HttpServletResponse class.
- * @return An ActionForward class that will be returned to the ActionServlet indicating where the user is to go
- * next.
- * @throws IOException
- * @throws ServletException
- * @throws JSONException
+ * Method called via Ajax. It either emails selected users or schedules these emails to be sent on specified date.
*/
public ActionForward emailUsers(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException, JSONException {
@@ -204,23 +217,74 @@
getEventNotificationService();
String[] userIdStrs = request.getParameterValues("userId");
String emailBody = WebUtil.readStrParam(request, "emailBody");
+ Long scheduleDateParameter = WebUtil.readLongParam(request, "scheduleDate", true);
+
+ boolean isScheduledForToday = false;
+ Calendar now = Calendar.getInstance();
+
+ //calculate scheduleDate
+ Date scheduleDate = null;
+ if (scheduleDateParameter != null) {
+ Date scheduleDateTeacherTimezone = new Date(scheduleDateParameter);
+ HttpSession ss = SessionManager.getSession();
+ UserDTO teacher = (UserDTO) ss.getAttribute(AttributeNames.USER);
+ TimeZone teacherTimeZone = teacher.getTimeZone();
+ scheduleDate = DateUtil.convertFromTimeZoneToDefault(teacherTimeZone, scheduleDateTeacherTimezone);
+
+ // check whether email sending is scheduled for today
+
+ Calendar scheduleDateCalendar = Calendar.getInstance();
+ scheduleDateCalendar.setTime(scheduleDate);
+ isScheduledForToday = (now.get(Calendar.DATE) == scheduleDateCalendar.get(Calendar.DATE)
+ && now.get(Calendar.MONTH) == scheduleDateCalendar.get(Calendar.MONTH)
+ && now.get(Calendar.YEAR) == scheduleDateCalendar.get(Calendar.YEAR));
+ }
- boolean isSuccessfullySent = true;
- for (String userIdStr : userIdStrs) {
- long userId = Long.parseLong(userIdStr);
- isSuccessfullySent &= eventNotificationService.sendMessage(
- userId,
- DeliveryMethodMail.getInstance(),
- monitoringService.getMessageService().getMessage("event.emailnotifications.email.subject", new Object[] {}),
- emailBody);
+ //check if we send email instantly
+ if ((scheduleDate == null) || isScheduledForToday) {
+ boolean isSuccessfullySent = true;
+ for (String userIdStr : userIdStrs) {
+ long userId = Long.parseLong(userIdStr);
+ isSuccessfullySent &= eventNotificationService.sendMessage(
+ userId,
+ DeliveryMethodMail.getInstance(),
+ monitoringService.getMessageService().getMessage("event.emailnotifications.email.subject",
+ new Object[] {}), emailBody);
+ }
+
+ JSONObject.put("isSuccessfullySent", isSuccessfullySent);
+ } else {
+ // schedule email to be sent
+ try {
+ JobDetail emailScheduleMessageJob = getEmailScheduleMessageJob();
+ // setup the message for scheduling job
+ emailScheduleMessageJob.setName("emailScheduleMessageJob:" + now.getTimeInMillis());
+
+ emailScheduleMessageJob.setDescription("schedule email message to user(s)");
+ emailScheduleMessageJob.getJobDataMap().put("emailBody", emailBody);
+ emailScheduleMessageJob.getJobDataMap().put(MonitoringConstants.KEY_USER_ID, userIdStrs);
+
+ // create customized triggers
+ Trigger startLessonTrigger = new SimpleTrigger(TRIGGER_PREFIX_NAME + now.getTimeInMillis(),
+ Scheduler.DEFAULT_GROUP, scheduleDate);
+ // start the scheduling job
+ Scheduler scheduler = getScheduler();
+ scheduler.scheduleJob(emailScheduleMessageJob, startLessonTrigger);
+ JSONObject.put("isSuccessfullyScheduled", true);
+ log.debug("Email message to users [" + userIdStrs + "] on schedule is configured");
+ } catch (SchedulerException e) {
+ log.error("Error occurred at " + "[emailScheduleMessage]- fail to email scheduling", e);
+ }
}
- JSONObject.put("isSuccessfullySent", isSuccessfullySent);
response.setContentType("application/x-json");
response.getWriter().print(JSONObject);
return null;
}
+ /**
+ * Refreshes user list.
+ */
public ActionForward getUsers(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException, JSONException {
ICoreLearnerService learnerService = MonitoringServiceProxy.getLearnerService(getServlet()
@@ -302,7 +366,7 @@
return null;
}
- public Collection getUsers(int searchType, Lesson lesson, String[] lessonIds, Long activityId, int xDaystoFinish, Organisation org) throws IOException, ServletException {
+ private Collection getUsers(int searchType, Lesson lesson, String[] lessonIds, Long activityId, int xDaystoFinish, Organisation org) {
getLessonService();
ICoreLearnerService learnerService = MonitoringServiceProxy.getLearnerService(getServlet()
.getServletContext());
@@ -450,4 +514,24 @@
}
return eventNotificationService;
}
+
+ /**
+ *
+ * @return the bean that defines emailScheduleMessageJob.
+ */
+ private JobDetail getEmailScheduleMessageJob() {
+ WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet()
+ .getServletContext());
+ return (JobDetail) ctx.getBean(MonitoringConstants.JOB_EMAIL_MESSAGE);
+ }
+
+ /**
+ *
+ * @return the bean that defines Scheduler.
+ */
+ private Scheduler getScheduler() {
+ WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet()
+ .getServletContext());
+ return (Scheduler) ctx.getBean("scheduler");
+ }
}
Index: lams_monitoring/web/emailnotifications/courseNotifications.jsp
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/web/emailnotifications/courseNotifications.jsp,v
diff -u -r1.1.2.4 -r1.1.2.5
--- lams_monitoring/web/emailnotifications/courseNotifications.jsp 6 Sep 2011 12:25:48 -0000 1.1.2.4
+++ lams_monitoring/web/emailnotifications/courseNotifications.jsp 14 Oct 2011 17:55:11 -0000 1.1.2.5
@@ -17,15 +17,20 @@
+
+
@@ -91,22 +96,30 @@
}
var emailBody = escape(document.getElementById("emailBody").value);
+ var scheduleDate = $("#datePicker").datepicker( "getDate" );
+ scheduleDate = (scheduleDate == null) ? "" : scheduleDate.getTime();
$.ajax({
async: false,
url: '',
- data: 'method=emailUsers&' + params+ "&emailBody=" + emailBody,
+ data: 'method=emailUsers&' + params+ "&emailBody=" + emailBody + "&scheduleDate=" + scheduleDate,
dataType: 'json',
type: 'post',
success: function (json) {
if (json.isSuccessfullySent) {
alert('');
+ } else if (json.isSuccessfullyScheduled) {
+ alert('');
} else {
alert('');
}
}
});
});
-
+
+ $( "#datePicker" ).datepicker({
+ dateFormat: 'dd/mm/yy',
+ minDate: 0
+ });
});
@@ -170,6 +183,13 @@
?method=emailUsers" method="post" id="emailNotificationsForm" >