Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml
===================================================================
diff -u -r57c6309187d8c559f1b273202c6b3a99e559edae -re9144c94e842e1e1609999a71cca9e6ea30dd054
--- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml (.../gradebookApplicationContext.xml) (revision 57c6309187d8c559f1b273202c6b3a99e559edae)
+++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml (.../gradebookApplicationContext.xml) (revision e9144c94e842e1e1609999a71cca9e6ea30dd054)
@@ -22,6 +22,7 @@
+
@@ -30,6 +31,7 @@
PROPAGATION_REQUIRED
+ PROPAGATION_REQUIRED
PROPAGATION_REQUIRED,readOnly
PROPAGATION_REQUIRED,readOnly
Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java
===================================================================
diff -u -rcda0a3d272f76d413f458d02ebeb068b937a026c -re9144c94e842e1e1609999a71cca9e6ea30dd054
--- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision cda0a3d272f76d413f458d02ebeb068b937a026c)
+++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision e9144c94e842e1e1609999a71cca9e6ea30dd054)
@@ -41,9 +41,15 @@
import java.util.TimeZone;
import java.util.TreeSet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
import org.lamsfoundation.lams.dao.IBaseDAO;
import org.lamsfoundation.lams.gradebook.GradebookUserActivity;
import org.lamsfoundation.lams.gradebook.GradebookUserLesson;
@@ -53,6 +59,7 @@
import org.lamsfoundation.lams.gradebook.dto.GBUserGridRowDTO;
import org.lamsfoundation.lams.gradebook.dto.GradebookGridRowDTO;
import org.lamsfoundation.lams.gradebook.util.GBGridView;
+import org.lamsfoundation.lams.gradebook.util.GradebookConstants;
import org.lamsfoundation.lams.gradebook.util.LessonComparator;
import org.lamsfoundation.lams.learningdesign.Activity;
import org.lamsfoundation.lams.learningdesign.ActivityEvaluation;
@@ -73,12 +80,16 @@
import org.lamsfoundation.lams.usermanagement.OrganisationType;
import org.lamsfoundation.lams.usermanagement.Role;
import org.lamsfoundation.lams.usermanagement.User;
+import org.lamsfoundation.lams.usermanagement.dto.UserDTO;
import org.lamsfoundation.lams.usermanagement.service.IUserManagementService;
import org.lamsfoundation.lams.util.Configuration;
import org.lamsfoundation.lams.util.ConfigurationKeys;
import org.lamsfoundation.lams.util.DateUtil;
import org.lamsfoundation.lams.util.ExcelCell;
import org.lamsfoundation.lams.util.MessageService;
+import org.lamsfoundation.lams.util.WebUtil;
+import org.lamsfoundation.lams.util.audit.IAuditService;
+import org.lamsfoundation.lams.web.session.SessionManager;
import org.lamsfoundation.lams.web.util.AttributeNames;
/**
@@ -102,6 +113,7 @@
private IBaseDAO baseDAO;
private IActivityDAO activityDAO;
private MessageService messageService;
+ private IAuditService auditService;
@SuppressWarnings("unchecked")
public List getGBActivityRowsForLearner(Lesson lesson, User learner) {
@@ -360,13 +372,22 @@
if (gradebookUserLesson == null) {
gradebookUserLesson = new GradebookUserLesson(lesson, learner);
}
+ String oldMark = (gradebookUserLesson.getMark() == null) ? "-" : gradebookUserLesson.getMark().toString();
+
gradebookUserLesson.setMark(mark);
gradebookDAO.insertOrUpdate(gradebookUserLesson);
+
+ // audit log changed gradebook mark
+ UserDTO monitorUser = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER);
+ String[] args = new String[] { learner.getLogin() + "(" + learner.getUserId() + ")",
+ lesson.getLessonId().toString(), oldMark, mark.toString() };
+ String message = messageService.getMessage("audit.lesson.change.mark", args);
+ auditService.log(monitorUser, GradebookConstants.MODULE_NAME, message);
}
}
public void updateUserActivityGradebookMark(Lesson lesson, User learner, Activity activity, Double mark,
- Boolean markedInGradebook) {
+ Boolean markedInGradebook, boolean isAuditLogRequired) {
if (lesson != null && activity != null && learner != null && activity.isToolActivity()) {
// First, update the mark for the activity
@@ -376,6 +397,8 @@
if (gradebookUserActivity == null) {
gradebookUserActivity = new GradebookUserActivity((ToolActivity) activity, learner);
}
+ String oldMark = (gradebookUserActivity.getMark() == null) ? "-" : gradebookUserActivity.getMark()
+ .toString();
gradebookUserActivity.setMark(mark);
gradebookUserActivity.setMarkedInGradebook(markedInGradebook);
@@ -392,6 +415,16 @@
}
aggregateTotalMarkForLesson(gradebookUserLesson);
+
+ // audit log changed gradebook mark
+ if (isAuditLogRequired) {
+ UserDTO monitorUser = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER);
+ String[] args = new String[] { learner.getLogin() + "(" + learner.getUserId() + ")",
+ activity.getActivityId().toString(), lesson.getLessonId().toString(), oldMark.toString(),
+ mark.toString() };
+ String message = messageService.getMessage("audit.activity.change.mark", args);
+ auditService.log(monitorUser, GradebookConstants.MODULE_NAME, message);
+ }
}
}
@@ -420,7 +453,23 @@
gradebookUserActivity.setFeedback(feedback);
gradebookDAO.insertOrUpdate(gradebookUserActivity);
}
+
+ @Override
+ public void toggleMarksReleased(Long lessonId) {
+ Lesson lesson = lessonService.getLesson(lessonId);
+
+ boolean isMarksReleased = (lesson.getMarksReleased() != null) && lesson.getMarksReleased();
+ lesson.setMarksReleased(!isMarksReleased);
+ userService.save(lesson);
+
+ // audit log marks released
+ UserDTO monitor = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER);
+ String messageKey = (isMarksReleased) ? "audit.marks.released.off" : "audit.marks.released.on";
+ String message = messageService.getMessage(messageKey, new String[] {lessonId.toString()});
+ auditService.log(monitor, GradebookConstants.MODULE_NAME, message);
+ }
+
@SuppressWarnings("unchecked")
public List getGBLessonRows(Organisation organisation, User user, User viewer, GBGridView view) {
List lessonRows = new ArrayList();
@@ -1042,7 +1091,7 @@
// If gradebook user activity is null or the mark is set by teacher or was set previously by user - save the
// mark and feedback
if (gradebookUserActivity == null || markedInGradebook || !gradebookUserActivity.getMarkedInGradebook()) {
- updateUserActivityGradebookMark(toolSession.getLesson(), learner, activity, mark, markedInGradebook);
+ updateUserActivityGradebookMark(toolSession.getLesson(), learner, activity, mark, markedInGradebook, false);
updateUserActivityGradebookFeedback(activity, learner, feedback);
}
}
@@ -1544,6 +1593,11 @@
}
// Getter and setter methods -----------------------------------------------
+
+ public void setAuditService(IAuditService auditService) {
+ this.auditService = auditService;
+ }
+
public ILamsCoreToolService getToolService() {
return toolService;
}
Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java
===================================================================
diff -u -rfc2765358dd2ee073be452d5c1e265a3b7e404a1 -re9144c94e842e1e1609999a71cca9e6ea30dd054
--- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision fc2765358dd2ee073be452d5c1e265a3b7e404a1)
+++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision e9144c94e842e1e1609999a71cca9e6ea30dd054)
@@ -89,8 +89,7 @@
ArrayList getGBUserRowsForOrganisation(Organisation organisation);
/**
- * Updates a user's lesson mark, this will make it desynchronised with the
- * aggregated marks from the activities
+ * Updates a user's lesson mark, this will make it desynchronised with the aggregated marks from the activities
*
* @param lesson
* @param learner
@@ -99,16 +98,19 @@
void updateUserLessonGradebookMark(Lesson lesson, User learner, Double mark);
/**
- * Updates a user's activity mark, this will automatically add up all the
- * user's activity marks for a lesson and set the lesson mark too
+ * Updates a user's activity mark, this will automatically add up all the user's activity marks for a lesson and set
+ * the lesson mark too
*
* @param lesson
* @param learner
* @param activity
* @param mark
+ * @param markedInGradebook
+ * @param isAuditLogRequired should this event be logged with audit service
*/
- void updateUserActivityGradebookMark(Lesson lesson, User learner, Activity activity, Double mark, Boolean markedInGradebook);
-
+ void updateUserActivityGradebookMark(Lesson lesson, User learner, Activity activity, Double mark,
+ Boolean markedInGradebook, boolean isAuditLogRequired);
+
/**
* Updates the user's feedback for an activity
*
@@ -128,6 +130,13 @@
void updateUserLessonGradebookFeedback(Lesson lesson, User learner, String feedback);
/**
+ * Toggle on/off marks released option
+ *
+ * @param lessonId
+ */
+ void toggleMarksReleased(Long lessonId);
+
+ /**
* Gets the lesson row dtos for a given organisation
*
* @param organisation
Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookConstants.java
===================================================================
diff -u -rea79f29aed5c764a223234e456442bc1e49fcf85 -re9144c94e842e1e1609999a71cca9e6ea30dd054
--- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookConstants.java (.../GradebookConstants.java) (revision ea79f29aed5c764a223234e456442bc1e49fcf85)
+++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookConstants.java (.../GradebookConstants.java) (revision e9144c94e842e1e1609999a71cca9e6ea30dd054)
@@ -31,6 +31,8 @@
*/
public class GradebookConstants {
+ public static final String MODULE_NAME = "gradebook";
+
// Parameters
public static final String PARAM_PAGE = "page";
public static final String PARAM_ROWS = "rows";
Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java
===================================================================
diff -u -rfc2765358dd2ee073be452d5c1e265a3b7e404a1 -re9144c94e842e1e1609999a71cca9e6ea30dd054
--- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java (.../GradebookMonitoringAction.java) (revision fc2765358dd2ee073be452d5c1e265a3b7e404a1)
+++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java (.../GradebookMonitoringAction.java) (revision e9144c94e842e1e1609999a71cca9e6ea30dd054)
@@ -252,7 +252,7 @@
if (markStr != null && !markStr.equals("")) {
Double mark = Double.parseDouble(markStr);
- gradebookService.updateUserActivityGradebookMark(lesson, learner, activity, mark, true);
+ gradebookService.updateUserActivityGradebookMark(lesson, learner, activity, mark, true, true);
}
if (feedback != null) {
@@ -265,33 +265,27 @@
return null;
}
- /**
- * Toggles the release mark flag for a lesson
- *
- * @param mapping
- * @param form
- * @param request
- * @param response
- * @return
- * @throws Exception
- */
- public ActionForward toggleReleaseMarks(ActionMapping mapping, ActionForm form, HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- initServices();
- Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID);
+ /**
+ * Toggles the release mark flag for a lesson
+ *
+ * @param mapping
+ * @param form
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ public ActionForward toggleReleaseMarks(ActionMapping mapping, ActionForm form, HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+ initServices();
+ Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID);
+
+ gradebookService.toggleMarksReleased(lessonID);
- Lesson lesson = lessonService.getLesson(lessonID);
+ writeResponse(response, CONTENT_TYPE_TEXT_PLAIN, ENCODING_UTF8, "success");
+ return null;
+ }
- boolean marksReleased = lesson.getMarksReleased() != null && lesson.getMarksReleased();
-
- lesson.setMarksReleased(!marksReleased);
-
- userService.save(lesson);
-
- writeResponse(response, CONTENT_TYPE_TEXT_PLAIN, ENCODING_UTF8, "success");
- return null;
- }
-
/**
* Exports Lesson Gradebook into excel.
*/
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java
===================================================================
diff -u -r4a197b8d9fc40820ac1069f737aefc26babb315b -re9144c94e842e1e1609999a71cca9e6ea30dd054
--- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 4a197b8d9fc40820ac1069f737aefc26babb315b)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision e9144c94e842e1e1609999a71cca9e6ea30dd054)
@@ -702,7 +702,7 @@
// Only set the mark if it hasnt previously been set by a teacher
if ((gradebookUserActivity == null) || !gradebookUserActivity.getMarkedInGradebook()) {
gradebookService.updateUserActivityGradebookMark(lesson, learner, toolActivity,
- outputDouble, false);
+ outputDouble, false, false);
}
}
}