Index: lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -rb9e5cf0180e43a0827078d30cc1176b16dae66ee -r56d960690e7e4d738f1a2200c383a05e4f786ab6 --- lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision b9e5cf0180e43a0827078d30cc1176b16dae66ee) +++ lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 56d960690e7e4d738f1a2200c383a05e4f786ab6) @@ -220,6 +220,14 @@ label.monitoring.user.summary.title =Title: label.monitoring.user.summary.question =Question: label.monitoring.user.summary.ok =Ok +label.monitoring.question.summary.history.responses =Responses for the question +label.monitoring.question.summary.title =Title +label.monitoring.question.summary.question =Question +label.monitoring.question.summary.default.mark =Default mark +label.monitoring.question.summary.penalty =Penalty +label.monitoring.question.summary.average.mark =Average mark +label.monitoring.question.summary.group =Group: +label.monitoring.question.summary.ok =Ok label.resoruce.to.review =Resources to view message.monitoring.edit.activity.not.editable =This Activity is no longer editable export.label.resource =Resource Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java =================================================================== diff -u -r7f0968bf243209b9fc78a0f8f4d4b3bdbc3b7649 -r56d960690e7e4d738f1a2200c383a05e4f786ab6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java (.../AssessmentResultDAO.java) (revision 7f0968bf243209b9fc78a0f8f4d4b3bdbc3b7649) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java (.../AssessmentResultDAO.java) (revision 56d960690e7e4d738f1a2200c383a05e4f786ab6) @@ -31,9 +31,13 @@ List getAssessmentResults(Long assessmentUid, Long userId); + List getAssessmentResultsBySession(Long sessionId, Long userId); + AssessmentResult getLastAssessmentResult(Long assessmentUid, Long userId); AssessmentResult getLastFinishedAssessmentResult(Long assessmentUid, Long userId); + + AssessmentResult getLastFinishedAssessmentResultBySessionId(Long sessionId, Long userId); int getAssessmentResultCount(Long assessmentUid, Long userId); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java =================================================================== diff -u -r7f0968bf243209b9fc78a0f8f4d4b3bdbc3b7649 -r56d960690e7e4d738f1a2200c383a05e4f786ab6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision 7f0968bf243209b9fc78a0f8f4d4b3bdbc3b7649) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision 56d960690e7e4d738f1a2200c383a05e4f786ab6) @@ -31,23 +31,31 @@ public class AssessmentResultDAOHibernate extends BaseDAOHibernate implements AssessmentResultDAO { - private static final String FIND_BY_UID = "from " + AssessmentResult.class.getName() - + " as r where r.uid = ?"; - private static final String FIND_BY_ASSESSMENT_AND_USER = "from " + AssessmentResult.class.getName() + " as r where r.user.userId = ? and r.assessment.uid=? order by r.startDate asc"; private static final String FIND_BY_ASSESSMENT_AND_USER_AND_FINISHED = "from " + AssessmentResult.class.getName() + " as r where r.user.userId = ? and r.assessment.uid=? and (r.finishDate != null) order by r.startDate asc"; + private static final String FIND_BY_SESSION_AND_USER_AND_FINISHED = "from " + + AssessmentResult.class.getName() + + " as r where r.user.userId = ? and r.sessionId=? and (r.finishDate != null) order by r.startDate asc"; + private static final String FIND_ASSESSMENT_RESULT_COUNT_BY_ASSESSMENT_AND_USER = "select count(*) from " - + AssessmentResult.class.getName() + " as r where r.user.userId=? and r.assessment.uid=? and (r.finishDate != null)"; + + AssessmentResult.class.getName() + + " as r where r.user.userId=? and r.assessment.uid=? and (r.finishDate != null)"; + private static final String FIND_BY_UID = "from " + AssessmentResult.class.getName() + " as r where r.uid = ?"; + public List getAssessmentResults(Long assessmentUid, Long userId) { return getHibernateTemplate().find(FIND_BY_ASSESSMENT_AND_USER_AND_FINISHED, new Object[] { userId, assessmentUid }); } + public List getAssessmentResultsBySession(Long sessionId, Long userId) { + return getHibernateTemplate().find(FIND_BY_SESSION_AND_USER_AND_FINISHED, new Object[] { userId, sessionId }); + } + public AssessmentResult getLastAssessmentResult(Long assessmentUid, Long userId) { List list = getHibernateTemplate().find(FIND_BY_ASSESSMENT_AND_USER, new Object[] { userId, assessmentUid }); if (list == null || list.size() == 0) { @@ -65,6 +73,15 @@ return (AssessmentResult) list.get(list.size()-1); } } + + public AssessmentResult getLastFinishedAssessmentResultBySessionId(Long sessionId, Long userId) { + List list = getHibernateTemplate().find(FIND_BY_SESSION_AND_USER_AND_FINISHED, new Object[] { userId, sessionId }); + if (list == null || list.size() == 0) { + return null; + } else { + return (AssessmentResult) list.get(list.size()-1); + } + } public int getAssessmentResultCount(Long assessmentUid, Long userId) { List list = getHibernateTemplate().find(FIND_ASSESSMENT_RESULT_COUNT_BY_ASSESSMENT_AND_USER, new Object[] { userId, assessmentUid }); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r7f0968bf243209b9fc78a0f8f4d4b3bdbc3b7649 -r56d960690e7e4d738f1a2200c383a05e4f786ab6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 7f0968bf243209b9fc78a0f8f4d4b3bdbc3b7649) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 56d960690e7e4d738f1a2200c383a05e4f786ab6) @@ -89,6 +89,7 @@ import org.lamsfoundation.lams.tool.assessment.model.AssessmentUnit; import org.lamsfoundation.lams.tool.assessment.model.AssessmentUser; import org.lamsfoundation.lams.tool.assessment.util.AssessmentQuestionResultComparator; +import org.lamsfoundation.lams.tool.assessment.util.AssessmentSessionComparator; import org.lamsfoundation.lams.tool.assessment.util.AssessmentToolContentHandler; import org.lamsfoundation.lams.tool.assessment.util.SequencableComparator; import org.lamsfoundation.lams.tool.exception.DataMissingException; @@ -399,10 +400,6 @@ assessmentSessionDao.saveObject(resSession); } - public void saveOrUpdateAssessmentResult(AssessmentResult assessmentResult) { - assessmentResultDao.saveObject(assessmentResult); - } - public void setAttemptStarted(Assessment assessment, AssessmentUser assessmentUser, Long toolSessionId) { AssessmentResult result = new AssessmentResult(); result.setAssessment(assessment); @@ -608,7 +605,7 @@ List users = assessmentUserDao.getBySessionID(sessionId); ArrayList assessmentResults = new ArrayList(); for (AssessmentUser user : users) { - AssessmentResult assessmentResult = assessmentResultDao.getLastFinishedAssessmentResult(contentId, user.getUserId()); + AssessmentResult assessmentResult = assessmentResultDao.getLastFinishedAssessmentResultBySessionId(sessionId, user.getUserId()); if (assessmentResult == null) { assessmentResult = new AssessmentResult(); assessmentResult.setUser(user); @@ -631,10 +628,10 @@ UserSummary userSummary = new UserSummary(); AssessmentUser user = assessmentUserDao.getUserByUserIDAndSessionID(userId, sessionId); userSummary.setUser(user); - List results = assessmentResultDao.getAssessmentResults(contentId, userId); + List results = assessmentResultDao.getAssessmentResultsBySession(sessionId, userId); userSummary.setNumberOfAttempts(results.size()); - AssessmentResult lastFinishedResult = assessmentResultDao.getLastFinishedAssessmentResult(contentId, userId); + AssessmentResult lastFinishedResult = assessmentResultDao.getLastFinishedAssessmentResult(sessionId, userId); long timeTaken = (lastFinishedResult == null) ? 0 : (lastFinishedResult.getFinishDate().getTime() - lastFinishedResult.getStartDate().getTime()); userSummary.setTimeOfLastAttempt(new Date(timeTaken)); if (lastFinishedResult != null) { @@ -672,17 +669,20 @@ questionSummary.setQuestion(question); List> questionResults = new ArrayList>(); - List sessionList = assessmentSessionDao.getByContentId(contentId); + SortedSet sessionList = new TreeSet(new AssessmentSessionComparator()); + sessionList.addAll(assessmentSessionDao.getByContentId(contentId)); for (AssessmentSession session : sessionList) { - List users = assessmentUserDao.getBySessionID(session.getSessionId()); + Long sessionId = session.getSessionId(); + List users = assessmentUserDao.getBySessionID(sessionId); // Set sessionQuestionResults = new TreeSet( // new AssessmentQuestionResultComparator()); ArrayList sessionQuestionResults = new ArrayList(); for (AssessmentUser user : users) { - AssessmentResult assessmentResult = assessmentResultDao.getLastFinishedAssessmentResult(contentId, user.getUserId()); + AssessmentResult assessmentResult = assessmentResultDao.getLastFinishedAssessmentResultBySessionId(sessionId, user.getUserId()); AssessmentQuestionResult questionResult = null; if (assessmentResult == null) { questionResult = new AssessmentQuestionResult(); + questionResult.setAssessmentQuestion(question); } else { for (AssessmentQuestionResult dbQuestionResult : assessmentResult.getQuestionResults()) { if (dbQuestionResult.getAssessmentQuestion().getUid().equals(questionUid)) { @@ -702,8 +702,10 @@ float total = 0; for(List sessionQuestionResults : questionResults) { for (AssessmentQuestionResult questionResult : sessionQuestionResults) { - count++; - total+=questionResult.getMark(); + if (questionResult.getUid() != null) { + count++; + total += questionResult.getMark(); + } } } float averageMark = (count == 0) ? 0 : total/count; @@ -829,17 +831,9 @@ this.toolService = toolService; } -// public AssessmentQuestionResultDAO getAssessmentQuestionResultDao() { -// return assessmentQuestionResultDao; -// } - public void setAssessmentQuestionResultDao(AssessmentQuestionResultDAO assessmentQuestionResultDao) { this.assessmentQuestionResultDao = assessmentQuestionResultDao; } - -// public AssessmentResultDAO getAssessmentResultDao() { -// return assessmentResultDao; -// } public void setAssessmentResultDao(AssessmentResultDAO assessmentResultDao) { this.assessmentResultDao = assessmentResultDao; Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/util/AssessmentSessionComparator.java =================================================================== diff -u --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/util/AssessmentSessionComparator.java (revision 0) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/util/AssessmentSessionComparator.java (revision 56d960690e7e4d738f1a2200c383a05e4f786ab6) @@ -0,0 +1,48 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.tool.assessment.util; + +import java.util.Comparator; + +import org.lamsfoundation.lams.tool.assessment.model.AssessmentSession; + +/** + * AssessmentSessionComparator. + * + * @author Andrey Balan + * + */ +public class AssessmentSessionComparator implements Comparator { + + public int compare(AssessmentSession o1, AssessmentSession o2) { + if ((o1 != null) && (o2 != null) & (o1.getSessionStartDate() != null) && (o2.getSessionStartDate() != null)) { + return (o1.getSessionStartDate().getTime() - o2.getSessionStartDate().getTime()) > 0 ? 1 : -1; + } else if (o1 != null) { + return 1; + } else { + return -1; + } + } + +} Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java =================================================================== diff -u -r7f0968bf243209b9fc78a0f8f4d4b3bdbc3b7649 -r56d960690e7e4d738f1a2200c383a05e4f786ab6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 7f0968bf243209b9fc78a0f8f4d4b3bdbc3b7649) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 56d960690e7e4d738f1a2200c383a05e4f786ab6) @@ -31,6 +31,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; @@ -117,6 +118,9 @@ request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); Long questionUid = WebUtil.readLongParam(request, AssessmentConstants.PARAM_QUESTION_UID); + if (questionUid.equals(-1)) { + return null; + } Long contentId = (Long) sessionMap.get(AssessmentConstants.ATTR_TOOL_CONTENT_ID); IAssessmentService service = getAssessmentService(); QuestionSummary questionSummary = service.getQuestionSummary(contentId, questionUid); @@ -155,7 +159,9 @@ private ActionForward saveUserGrade(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - if (request.getParameter(AssessmentConstants.PARAM_NOT_A_NUMBER) == null) { + + if ((request.getParameter(AssessmentConstants.PARAM_NOT_A_NUMBER) == null) && + !StringUtils.isEmpty(request.getParameter(AssessmentConstants.PARAM_QUESTION_RESULT_UID))) { Long questionResultUid = WebUtil.readLongParam(request, AssessmentConstants.PARAM_QUESTION_RESULT_UID); float newGrade = Float.valueOf(request.getParameter(AssessmentConstants.PARAM_GRADE)); IAssessmentService service = getAssessmentService(); Index: lams_tool_assessment/web/pages/monitoring/parts/questionsummary.jsp =================================================================== diff -u -r7f0968bf243209b9fc78a0f8f4d4b3bdbc3b7649 -r56d960690e7e4d738f1a2200c383a05e4f786ab6 --- lams_tool_assessment/web/pages/monitoring/parts/questionsummary.jsp (.../questionsummary.jsp) (revision 7f0968bf243209b9fc78a0f8f4d4b3bdbc3b7649) +++ lams_tool_assessment/web/pages/monitoring/parts/questionsummary.jsp (.../questionsummary.jsp) (revision 56d960690e7e4d738f1a2200c383a05e4f786ab6) @@ -19,11 +19,13 @@ @@ -100,80 +121,74 @@

- +



<%@ include file="/common/messages.jsp"%> + + + + +
- + - ${userSummary.user.firstName} ${userSummary.user.lastName} + ${questionSummary.question.title}
- + - ${userSummary.numberOfAttempts} + ${questionSummary.question.question}
- + - - + ${questionSummary.question.defaultGrade}
- + - ${userSummary.lastAttemptGrade} + ${questionSummary.question.penaltyFactor}
+ + +
${questionSummary.averageMark}
+


- + +
- - - - - - - - - -
- - - ${userSummaryItem.question.title} -
- - - ${userSummaryItem.question.question} -
+
+ ${session.sessionName} +
-
+
- - + + Index: lams_tool_assessment/web/pages/monitoring/parts/usersummary.jsp =================================================================== diff -u -r7f0968bf243209b9fc78a0f8f4d4b3bdbc3b7649 -r56d960690e7e4d738f1a2200c383a05e4f786ab6 --- lams_tool_assessment/web/pages/monitoring/parts/usersummary.jsp (.../usersummary.jsp) (revision 7f0968bf243209b9fc78a0f8f4d4b3bdbc3b7649) +++ lams_tool_assessment/web/pages/monitoring/parts/usersummary.jsp (.../usersummary.jsp) (revision 56d960690e7e4d738f1a2200c383a05e4f786ab6) @@ -88,11 +88,9 @@
}); - // post-submit callback - function afterRatingSubmit(responseText, statusText) { - self.parent.refreshThickbox() - self.parent.tb_remove(); - } + function refreshSummaryPage() { + self.parent.window.parent.location.href = "?toolContentID=${sessionMap.toolContentID}&contentFolderID=${sessionMap.contentFolderID}"; + } --> @@ -175,7 +173,7 @@ - + Index: lams_tool_assessment/web/pages/monitoring/statistic.jsp =================================================================== diff -u -rd4022a5f15973e49528bcc3872b6ef4038dc4181 -r56d960690e7e4d738f1a2200c383a05e4f786ab6 --- lams_tool_assessment/web/pages/monitoring/statistic.jsp (.../statistic.jsp) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) +++ lams_tool_assessment/web/pages/monitoring/statistic.jsp (.../statistic.jsp) (revision 56d960690e7e4d738f1a2200c383a05e4f786ab6) @@ -3,90 +3,44 @@ - +
- <%-- - - - - + + - - + - - - - - - + + + + - - - - - + ${status.index} + - - - --%>
- ${item.sessionName} - - + + ${summary.sessionName}
- + + # + + - - - - - -
+ +
-
- -
-
- - - - - - - - - - - - - - - - ${item.itemTitle} + ${assessmentResult.user.firstName} ${assessmentResult.user.lastName} - - ${item.username} - + - - - - - - ${item.viewNumber} - - - 0 - - -
+ Index: lams_tool_assessment/web/pages/monitoring/summary.jsp =================================================================== diff -u -r7f0968bf243209b9fc78a0f8f4d4b3bdbc3b7649 -r56d960690e7e4d738f1a2200c383a05e4f786ab6 --- lams_tool_assessment/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 7f0968bf243209b9fc78a0f8f4d4b3bdbc3b7649) +++ lams_tool_assessment/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 56d960690e7e4d738f1a2200c383a05e4f786ab6) @@ -73,14 +73,23 @@ - }); + $("#questionUid").change(function() { + var questionUid = $("#questionUid").val(); + var questionSummaryUrl = ''; + var questionSummaryHref = questionSummaryUrl + "&questionUid=" + questionUid + "&KeepThis=true&TB_iframe=true&height=400&width=650&modal=true"; + $("#questionSummaryHref").attr("href", questionSummaryHref); + $("#questionSummaryHref").click(); + }); + }); +/* function createQuestionSummaryHref() { - var questionUid = $("#questionUid").val(); - var questionSummaryUrl = ''; - var questionSummaryHref = "${questionSummaryUrl}&questionUid=" + questionUid + "&KeepThis=true&TB_iframe=true&height=540&width=850&modal=true"; - $("#questionSummaryHref").attr("href", questionSummaryHref) + }; +*/ + function updateRowData(rowid){ + jQuery("#list").setRowData( rowid, { tax:"5", total:"205" }) + }; function refreshThickbox(){ tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox @@ -141,21 +150,24 @@ -
+
- + +