Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/service/GradeBookService.java =================================================================== diff -u -rafc316b2f5873df7ad8c5c2fc50b6a8802a02c81 -r7895606feec6effedc08860e4e1bb7f5157109c5 --- lams_central/src/java/org/lamsfoundation/lams/gradebook/service/GradeBookService.java (.../GradeBookService.java) (revision afc316b2f5873df7ad8c5c2fc50b6a8802a02c81) +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/service/GradeBookService.java (.../GradeBookService.java) (revision 7895606feec6effedc08860e4e1bb7f5157109c5) @@ -132,6 +132,7 @@ activity.getActivityId(), learner.getUserId()); if (gradeBookActivity != null) { gactivityDTO.setMark(gradeBookActivity.getMark()); + gactivityDTO.setFeedback(gradeBookActivity.getFeedback()); } if (learnerProgress != null) { byte progressState = learnerProgress.getProgressState(activity); @@ -243,11 +244,10 @@ GradeBookUserLesson gradeBookUserLesson = gradeBookDAO.getGradeBookUserDataForLesson(lesson .getLessonId(), learner.getUserId()); - if (gradeBookUserLesson != null && gradeBookUserLesson.getMark() != null) { + if (gradeBookUserLesson != null) { gradeBookUserDTO.setTotalLessonMark(gradeBookUserLesson.getMark()); - } else { - gradeBookUserDTO.setTotalLessonMark(0.0); - } + gradeBookUserDTO.setFeedback(gradeBookUserLesson.getFeedback()); + } gradeBookUserDTOs.add(gradeBookUserDTO); } } @@ -264,15 +264,13 @@ * @param learner * @param mark */ - public void updateUserLessonGradeBookData(Lesson lesson, User learner, Double mark) { + public void updateUserLessonGradeBookMark(Lesson lesson, User learner, Double mark) { if (lesson != null && learner != null) { GradeBookUserLesson gradeBookUserLesson = gradeBookDAO.getGradeBookUserDataForLesson(lesson.getLessonId(), learner.getUserId()); if (gradeBookUserLesson == null) { - gradeBookUserLesson = new GradeBookUserLesson(); - gradeBookUserLesson.setLearner(learner); - gradeBookUserLesson.setLesson(lesson); + gradeBookUserLesson = new GradeBookUserLesson(lesson, learner); } gradeBookUserLesson.setMark(mark); gradeBookDAO.insertOrUpdate(gradeBookUserLesson); @@ -288,17 +286,15 @@ * @param activity * @param mark */ - public void updateUserActivityGradeBookData(Lesson lesson, User learner, Activity activity, Double mark) { + public void updateUserActivityGradeBookMark(Lesson lesson, User learner, Activity activity, Double mark) { if (lesson != null && activity != null && learner != null && activity.isToolActivity()) { - + // First, update the mark for the activity GradeBookUserActivity gradeBookUserActivity = gradeBookDAO.getGradeBookUserDataForActivity(activity .getActivityId(), learner.getUserId()); if (gradeBookUserActivity == null) { - gradeBookUserActivity = new GradeBookUserActivity(); - gradeBookUserActivity.setLearner(learner); - gradeBookUserActivity.setActivity((ToolActivity) activity); + gradeBookUserActivity = new GradeBookUserActivity((ToolActivity) activity, learner); } gradeBookUserActivity.setMark(mark); @@ -312,19 +308,64 @@ gradeBookUserLesson = new GradeBookUserLesson(); gradeBookUserLesson.setLearner(learner); gradeBookUserLesson.setLesson(lesson); - } - + } + aggregateTotalMarkForLesson(gradeBookUserLesson); } } + /** + * Adds up the total mark for a lesson based on the activity marks + * + * @param gradeBookUserLesson + */ private void aggregateTotalMarkForLesson(GradeBookUserLesson gradeBookUserLesson) { Double totalMark = gradeBookDAO.getGradeBookUserActivityMarkSum(gradeBookUserLesson.getLesson().getLessonId(), gradeBookUserLesson.getLearner().getUserId()); gradeBookUserLesson.setMark(totalMark); gradeBookDAO.insertOrUpdate(gradeBookUserLesson); } + /** + * Updates the feedback for a learners performance in a lesson + * + * @param lesson + * @param learner + * @param feedback + */ + public void updateUserLessonGradeBookFeedback(Lesson lesson, User learner, String feedback) { + + GradeBookUserLesson gradeBookUserLesson = gradeBookDAO.getGradeBookUserDataForLesson(lesson.getLessonId(), + learner.getUserId()); + + if (gradeBookUserLesson == null) { + gradeBookUserLesson = new GradeBookUserLesson(lesson, learner); + } + + gradeBookUserLesson.setFeedback(feedback); + gradeBookDAO.insertOrUpdate(gradeBookUserLesson); + } + + /** + * Updates the feedback for a learner's performance in an Activity + * + * @param activity + * @param learner + * @param feedback + */ + public void updateUserActivityGradeBookFeedback(Activity activity, User learner, String feedback) { + + GradeBookUserActivity gradeBookUserActivity = gradeBookDAO.getGradeBookUserDataForActivity(activity + .getActivityId(), learner.getUserId()); + + if (gradeBookUserActivity == null) { + gradeBookUserActivity = new GradeBookUserActivity((ToolActivity) activity, learner); + } + + gradeBookUserActivity.setFeedback(feedback); + gradeBookDAO.insertOrUpdate(gradeBookUserActivity); + } + public IMonitoringService getMonitoringService() { return monitoringService; } Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/service/IGradeBookService.java =================================================================== diff -u -ra8e4961c9f59aedf7bbc548462f658ecc539d0ca -r7895606feec6effedc08860e4e1bb7f5157109c5 --- lams_central/src/java/org/lamsfoundation/lams/gradebook/service/IGradeBookService.java (.../IGradeBookService.java) (revision a8e4961c9f59aedf7bbc548462f658ecc539d0ca) +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/service/IGradeBookService.java (.../IGradeBookService.java) (revision 7895606feec6effedc08860e4e1bb7f5157109c5) @@ -44,9 +44,13 @@ public ArrayList getGradeBookLessonData(Lesson lesson); - public void updateUserLessonGradeBookData(Lesson lesson, User learner, Double mark); + public void updateUserLessonGradeBookMark(Lesson lesson, User learner, Double mark); - public void updateUserActivityGradeBookData(Lesson lesson, User learner, Activity activity, Double mark); + public void updateUserActivityGradeBookMark(Lesson lesson, User learner, Activity activity, Double mark); + public void updateUserActivityGradeBookFeedback(Activity activity, User learner, String feedback); + + public void updateUserLessonGradeBookFeedback(Lesson lesson, User learner, String feedback); + } \ No newline at end of file Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/util/GradeBookUtil.java =================================================================== diff -u -ra8e4961c9f59aedf7bbc548462f658ecc539d0ca -r7895606feec6effedc08860e4e1bb7f5157109c5 --- lams_central/src/java/org/lamsfoundation/lams/gradebook/util/GradeBookUtil.java (.../GradeBookUtil.java) (revision a8e4961c9f59aedf7bbc548462f658ecc539d0ca) +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/util/GradeBookUtil.java (.../GradeBookUtil.java) (revision 7895606feec6effedc08860e4e1bb7f5157109c5) @@ -71,6 +71,7 @@ for (String gradeBookItem : gactivityDTO.toStringArray()) { Element cellElement = document.createElement("cell"); + gradeBookItem = (gradeBookItem != null) ? gradeBookItem : ""; cellElement.appendChild(document.createTextNode(gradeBookItem)); rowElement.appendChild(cellElement); } @@ -121,6 +122,7 @@ for (String gradeBookItem : gridRow.toStringArray()) { Element cellElement = document.createElement("cell"); + gradeBookItem = (gradeBookItem != null) ? gradeBookItem : ""; cellElement.appendChild(document.createTextNode(gradeBookItem)); rowElement.appendChild(cellElement); } Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookMonitoringAction.java =================================================================== diff -u -rafc316b2f5873df7ad8c5c2fc50b6a8802a02c81 -r7895606feec6effedc08860e4e1bb7f5157109c5 --- lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookMonitoringAction.java (.../GradeBookMonitoringAction.java) (revision afc316b2f5873df7ad8c5c2fc50b6a8802a02c81) +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookMonitoringAction.java (.../GradeBookMonitoringAction.java) (revision 7895606feec6effedc08860e4e1bb7f5157109c5) @@ -62,7 +62,7 @@ * * Handles the monitor interface for gradebook * - * This is where marking for an activity takes place + * This is where marking for an activity/lesson takes place * * * @struts.action path="/gradebook/gradebookMonitoring" parameter="dispatch" @@ -186,7 +186,7 @@ } } - + String ret = GradeBookUtil.toGridXML(gradeBookUserDTOs, page, totalPages); response.setContentType("text/xml"); PrintWriter out = response.getWriter(); @@ -211,14 +211,22 @@ initServices(); Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); String login = WebUtil.readStrParam(request, "id"); - Double mark = Double.parseDouble(WebUtil.readStrParam(request, "totalMark")); - + String markStr = WebUtil.readStrParam(request, "mark", true); + String feedback = WebUtil.readStrParam(request, "feedback", true); Lesson lesson = lessonService.getLesson(lessonID); User learner = userService.getUserByLogin(login); if (lesson != null && learner != null) { - gradeBookService.updateUserLessonGradeBookData(lesson, learner, mark); - + + if (markStr != null && !markStr.equals("")) { + Double mark = Double.parseDouble(markStr); + gradeBookService.updateUserLessonGradeBookMark(lesson, learner, mark); + } + + if (feedback != null && !feedback.equals("")) { + gradeBookService.updateUserLessonGradeBookFeedback(lesson, learner, feedback); + } + } else { // TODO: handle error } @@ -242,16 +250,25 @@ Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); Long activityID = WebUtil.readLongParam(request, "id"); String login = WebUtil.readStrParam(request, GradeBookConstants.PARAM_LOGIN); - Double mark = Double.parseDouble(WebUtil.readStrParam(request, "mark")); + String markStr = WebUtil.readStrParam(request, "mark", true); + String feedback = WebUtil.readStrParam(request, "feedback", true); + Activity activity = monitoringService.getActivityById(activityID); User learner = userService.getUserByLogin(login); Lesson lesson = lessonService.getLesson(lessonID); if (lesson != null && activity != null && learner != null && activity.isToolActivity()) { - gradeBookService.updateUserActivityGradeBookData(lesson, learner, activity, mark); - + if (markStr != null && !markStr.equals("")) { + Double mark = Double.parseDouble(markStr); + gradeBookService.updateUserActivityGradeBookMark(lesson, learner, activity, mark); + } + + if (feedback != null && !feedback.equals("")) { + gradeBookService.updateUserActivityGradeBookFeedback(activity, learner, feedback); + } + } else { // TODO: handle error } Index: lams_central/web/gradebook/gradeBookMonitor.jsp =================================================================== diff -u -rafc316b2f5873df7ad8c5c2fc50b6a8802a02c81 -r7895606feec6effedc08860e4e1bb7f5157109c5 --- lams_central/web/gradebook/gradeBookMonitor.jsp (.../gradeBookMonitor.jsp) (revision afc316b2f5873df7ad8c5c2fc50b6a8802a02c81) +++ lams_central/web/gradebook/gradeBookMonitor.jsp (.../gradeBookMonitor.jsp) (revision 7895606feec6effedc08860e4e1bb7f5157109c5) @@ -31,15 +31,16 @@ sortorder: "asc", sortname: "lastName", pager: 'pager', - rowList:[5,20,30], - rowNum:5, + rowList:[5,10,20,30], + rowNum:10, cellurl: "/gradebook/gradebookMonitoring.do?dispatch=updateUserLessonGradeBookData&lessonID=${lessonDetails.lessonID}&login=test1", - colNames:["", 'Last Name','First Name', 'Progress', 'Total Mark'], + colNames:["", 'Last Name','First Name', 'Progress', 'Lesson FeedBack', 'Total Mark'], colModel:[ {name:'login', index:'login', sortable:false, editable:false, hidden:true}, {name:'lastName',index:'lastName', sortable:true, editable:false}, {name:'firstName',index:'firstName', sortable:true, editable:false}, {name:'status',index:'status', sortable:false, editable:false}, + {name:'feedback',index:'feedback', sortable:false, editable:true, edittype:'textarea', editoptions:{rows:'4',cols:'20'} }, {name:'totalMark',index:'totalMark', sortable:true, editable:true, editrules:{number:true}} ], imgpath: 'themes/basic/images', @@ -58,13 +59,14 @@ cellEdit:true, cellurl: "/gradebook/gradebookMonitoring.do?dispatch=updateUserActivityGradeBookData&lessonID=${lessonDetails.lessonID}&login=" + userName, ExpandColumn: "Outputs", - colNames: ['Id','Activity','Status','Outputs', 'Competences', 'Mark'], + colNames: ['Id','Activity','Status','Outputs', 'Competences', 'Activity FeedBack', 'Mark'], colModel: [ {name:'activityId', width:10, index:'activityId', sortable:false, hidden:true}, {name:'activityTitle', width:60, index:'activityTitle', sortable:false, editable: false}, {name:'status', width:100, index:'status', sortable:false, editable:false}, {name:'output', width:250, index:'output', sortable:false, editable: false}, - {name:'competences', width:250, index:'output', sortable:false, editable: false}, + {name:'competences', width:250, index:'competences', sortable:false, editable: false}, + {name:'feedback', width:250, index:'feedback', sortable:false, editable: true, edittype:'textarea', editoptions:{rows:'4',cols:'20'}}, {name:'mark', width:100, index:'mark', sortable:false, editable: true, editrules:{number:true} } ], editurl: "server.php", @@ -83,8 +85,6 @@ }, imgpath: 'themes/basic/images' }) - - } }) }); Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/gradebook/GradeBookUserActivity.hbm.xml =================================================================== diff -u -ra8e4961c9f59aedf7bbc548462f658ecc539d0ca -r7895606feec6effedc08860e4e1bb7f5157109c5 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/gradebook/GradeBookUserActivity.hbm.xml (.../GradeBookUserActivity.hbm.xml) (revision a8e4961c9f59aedf7bbc548462f658ecc539d0ca) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/gradebook/GradeBookUserActivity.hbm.xml (.../GradeBookUserActivity.hbm.xml) (revision 7895606feec6effedc08860e4e1bb7f5157109c5) @@ -59,6 +59,15 @@ column="mark" /> + +