Index: lams_tool_scratchie/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -red23aef88626fa70acd34abbd3d044bec1b4a998 -r99545d1824fcf0b2ea23a6bdce46aab3b288bff5 --- lams_tool_scratchie/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision ed23aef88626fa70acd34abbd3d044bec1b4a998) +++ lams_tool_scratchie/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 99545d1824fcf0b2ea23a6bdce46aab3b288bff5) @@ -106,3 +106,4 @@ label.correct.answer =Correct answer label.mark =Mark label.attempts =Attempts +label.choice.number =Choice #{0} Index: lams_tool_scratchie/conf/xdoclet/struts-actions.xml =================================================================== diff -u -red23aef88626fa70acd34abbd3d044bec1b4a998 -r99545d1824fcf0b2ea23a6bdce46aab3b288bff5 --- lams_tool_scratchie/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision ed23aef88626fa70acd34abbd3d044bec1b4a998) +++ lams_tool_scratchie/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision 99545d1824fcf0b2ea23a6bdce46aab3b288bff5) @@ -227,12 +227,7 @@ type="org.lamsfoundation.lams.tool.scratchie.web.action.MonitoringAction" parameter="summary" > - - - - + Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/ScratchieAnswerVisitDAO.java =================================================================== diff -u -red23aef88626fa70acd34abbd3d044bec1b4a998 -r99545d1824fcf0b2ea23a6bdce46aab3b288bff5 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/ScratchieAnswerVisitDAO.java (.../ScratchieAnswerVisitDAO.java) (revision ed23aef88626fa70acd34abbd3d044bec1b4a998) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/ScratchieAnswerVisitDAO.java (.../ScratchieAnswerVisitDAO.java) (revision 99545d1824fcf0b2ea23a6bdce46aab3b288bff5) @@ -30,12 +30,12 @@ public interface ScratchieAnswerVisitDAO extends DAO { - public ScratchieAnswerVisitLog getScratchieAnswerLog(Long itemUid, Long userId); + ScratchieAnswerVisitLog getScratchieAnswerLog(Long answerUid, Long userId); - public int getLogCountTotal(Long sessionId, Long userId); + int getLogCountTotal(Long sessionId, Long userId); int getLogCountPerItem(Long toolSessionId, Long userId, Long itemUid); + + List getLogsByScratchieUserAndItem(Long userUid, Long itemUid); - public List getLogsBySessionAndUser(Long sessionId, Long userId); - } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/hibernate/ScratchieAnswerVisitDAOHibernate.java =================================================================== diff -u -red23aef88626fa70acd34abbd3d044bec1b4a998 -r99545d1824fcf0b2ea23a6bdce46aab3b288bff5 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/hibernate/ScratchieAnswerVisitDAOHibernate.java (.../ScratchieAnswerVisitDAOHibernate.java) (revision ed23aef88626fa70acd34abbd3d044bec1b4a998) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/hibernate/ScratchieAnswerVisitDAOHibernate.java (.../ScratchieAnswerVisitDAOHibernate.java) (revision 99545d1824fcf0b2ea23a6bdce46aab3b288bff5) @@ -37,10 +37,10 @@ private static final String FIND_BY_ANSWER_AND_USER = "from " + ScratchieAnswerVisitLog.class.getName() + " as r where r.user.userId = ? and r.scratchieAnswer.uid=?"; + + private static final String FIND_BY_SCRATCHIE_USER_AND_ITEM = "from " + ScratchieAnswerVisitLog.class.getName() + + " as r where r.user.uid=? and r.scratchieAnswer.scratchieItem.uid = ? order by r.accessDate asc"; - private static final String FIND_BY_SESSION_AND_USER = "from " + ScratchieAnswerVisitLog.class.getName() - + " as r where r.sessionId = ? and r.user.userId=? order by r.accessDate asc"; - private static final String FIND_VIEW_COUNT_BY_USER = "select count(*) from " + ScratchieAnswerVisitLog.class.getName() + " as r where r.sessionId=? and r.user.userId =?"; @@ -67,9 +67,9 @@ return 0; return ((Number) list.get(0)).intValue(); } - - public List getLogsBySessionAndUser(Long sessionId, Long userId) { - return getHibernateTemplate().find(FIND_BY_SESSION_AND_USER, new Object[] { sessionId, userId }); + + public List getLogsByScratchieUserAndItem(Long userUid, Long itemUid) { + return getHibernateTemplate().find(FIND_BY_SCRATCHIE_USER_AND_ITEM, new Object[] { userUid, itemUid }); } } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/ScratchieAnswer.java =================================================================== diff -u -red23aef88626fa70acd34abbd3d044bec1b4a998 -r99545d1824fcf0b2ea23a6bdce46aab3b288bff5 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/ScratchieAnswer.java (.../ScratchieAnswer.java) (revision ed23aef88626fa70acd34abbd3d044bec1b4a998) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/ScratchieAnswer.java (.../ScratchieAnswer.java) (revision 99545d1824fcf0b2ea23a6bdce46aab3b288bff5) @@ -51,7 +51,7 @@ // *********************************************** // DTO fields: private boolean scratched; - private Date scratchedDate; + private int attemptOrder; private int[] attempts; // ********************************************************** @@ -128,14 +128,22 @@ return scratched; } - public Date getScratchedDate() { - return scratchedDate; + /** + * @return in which order the student selected it + */ + public int getAttemptOrder() { + return attemptOrder; } - public void setScratchedDate(Date scratchedDate) { - this.scratchedDate = scratchedDate; + public void setAttemptOrder(int attemptOrder) { + this.attemptOrder = attemptOrder; } + /** + * Used for item summary page in monitor + * + * @return + */ public int[] getAttempts() { return attempts; } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java =================================================================== diff -u -red23aef88626fa70acd34abbd3d044bec1b4a998 -r99545d1824fcf0b2ea23a6bdce46aab3b288bff5 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java (.../IScratchieService.java) (revision ed23aef88626fa70acd34abbd3d044bec1b4a998) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java (.../IScratchieService.java) (revision 99545d1824fcf0b2ea23a6bdce46aab3b288bff5) @@ -161,6 +161,14 @@ * @param resSession */ void saveOrUpdateScratchieSession(ScratchieSession resSession); + + /** + * Fills in which order the student selects answers + * + * @param items + * @param user + */ + void retrieveScratchesOrder(Collection items, ScratchieUser user); /** * Fill in scratchieItems with information about whether they were unraveled; and answers with information on their scratched. Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java =================================================================== diff -u -red23aef88626fa70acd34abbd3d044bec1b4a998 -r99545d1824fcf0b2ea23a6bdce46aab3b288bff5 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision ed23aef88626fa70acd34abbd3d044bec1b4a998) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision 99545d1824fcf0b2ea23a6bdce46aab3b288bff5) @@ -479,6 +479,29 @@ return groupSummaryList; } + public void retrieveScratchesOrder(Collection items, ScratchieUser user) { + + for (ScratchieItem item : items) { + List itemLogs = scratchieAnswerVisitDao.getLogsByScratchieUserAndItem(user.getUid(), item.getUid()); + + for (ScratchieAnswer answer : (Set) item.getAnswers()) { + + int attemptNumber; + ScratchieAnswerVisitLog log = scratchieAnswerVisitDao.getScratchieAnswerLog(answer.getUid(), user.getUserId()); + if (log == null) { + // -1 if there is no log + attemptNumber = -1; + } else { + //adding 1 to start from 1. + attemptNumber = itemLogs.indexOf(log) + 1; + } + + answer.setAttemptOrder(attemptNumber); + } + } + + } + public void retrieveScratched(Collection items, ScratchieUser user) { for (ScratchieItem item : items) { @@ -490,7 +513,6 @@ answer.setScratched(false); } else { answer.setScratched(true); - answer.setScratchedDate(log.getAccessDate()); } } @@ -605,7 +627,7 @@ for (ScratchieUser user : users) { int attemptNumber = 0; - List userAttempts = scratchieAnswerVisitDao.getLogsBySessionAndUser(sessionId, user.getUserId()); + List userAttempts = scratchieAnswerVisitDao.getLogsByScratchieUserAndItem(user.getUid(), itemUid); for (ScratchieAnswerVisitLog userAttempt : userAttempts) { ScratchieAnswer answer = answerMap.get(userAttempt.getScratchieAnswer().getUid()); int[] attempts = answer.getAttempts(); Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/util/ScratchieBundler.java =================================================================== diff -u -r6aaee4b2fe2caa08b0c63a0de11f05042d5a3e18 -r99545d1824fcf0b2ea23a6bdce46aab3b288bff5 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/util/ScratchieBundler.java (.../ScratchieBundler.java) (revision 6aaee4b2fe2caa08b0c63a0de11f05042d5a3e18) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/util/ScratchieBundler.java (.../ScratchieBundler.java) (revision 99545d1824fcf0b2ea23a6bdce46aab3b288bff5) @@ -94,23 +94,23 @@ final String IMAGE_FOLDER = getServerUrl() + "tool" + URL_SEPARATOR + ScratchieConstants.TOOL_SIGNATURE + URL_SEPARATOR + "includes" + URL_SEPARATOR + "images" + URL_SEPARATOR; - String urlToConnectTo = JAVASCRIPT_FOLDER + "jquery.jqGrid.min.js"; + String urlToConnectTo = JAVASCRIPT_FOLDER + "jquery.jqGrid.js"; HttpUrlConnectionUtil - .writeResponseToFile(urlToConnectTo, FOLDER_TO_STORE_FILE, "jquery.jqGrid.min.js", cookies); + .writeResponseToFile(urlToConnectTo, FOLDER_TO_STORE_FILE, "jquery.jqGrid.js", cookies); urlToConnectTo = JAVASCRIPT_FOLDER + "jquery.jqGrid.locale-en.js"; HttpUrlConnectionUtil.writeResponseToFile(urlToConnectTo, FOLDER_TO_STORE_FILE, "jquery.jqGrid.locale-en.js", cookies); - urlToConnectTo = JAVASCRIPT_FOLDER + "jquery-1.7.1.min.js"; - HttpUrlConnectionUtil.writeResponseToFile(urlToConnectTo, FOLDER_TO_STORE_FILE, "jquery-1.7.1.min.js", cookies); - urlToConnectTo = JAVASCRIPT_FOLDER + "jquery-ui-1.8.11.custom.min.js"; + urlToConnectTo = JAVASCRIPT_FOLDER + "jquery.js"; + HttpUrlConnectionUtil.writeResponseToFile(urlToConnectTo, FOLDER_TO_STORE_FILE, "jquery.js", cookies); + urlToConnectTo = JAVASCRIPT_FOLDER + "jquery-ui.js"; HttpUrlConnectionUtil.writeResponseToFile(urlToConnectTo, FOLDER_TO_STORE_FILE, - "jquery-ui-1.8.11.custom.min.js", cookies); + "jquery-ui.js", cookies); - urlToConnectTo = CSS_FOLDER + "jquery-ui-1.8.11.redmont-theme.css"; + urlToConnectTo = CSS_FOLDER + "jquery-ui-redmond-theme.css"; HttpUrlConnectionUtil.writeResponseToFile(urlToConnectTo, FOLDER_TO_STORE_FILE, - "jquery-ui-1.8.11.redmont-theme.css", cookies); - urlToConnectTo = CSS_FOLDER + "jquery.jqGrid-4.1.2.css"; - HttpUrlConnectionUtil.writeResponseToFile(urlToConnectTo, FOLDER_TO_STORE_FILE, "jquery.jqGrid-4.1.2.css", + "jquery-ui-redmond-theme.css", cookies); + urlToConnectTo = CSS_FOLDER + "jquery.jqGrid.css"; + HttpUrlConnectionUtil.writeResponseToFile(urlToConnectTo, FOLDER_TO_STORE_FILE, "jquery.jqGrid.css", cookies); urlToConnectTo = IMAGE_FOLDER + "scratchie-correct.gif"; Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/AuthoringAction.java =================================================================== diff -u -r9465560dcbea622e2f3a01e334400f2005ce2ed3 -r99545d1824fcf0b2ea23a6bdce46aab3b288bff5 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 9465560dcbea622e2f3a01e334400f2005ce2ed3) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 99545d1824fcf0b2ea23a6bdce46aab3b288bff5) @@ -403,9 +403,9 @@ while (iter.hasNext()) { ScratchieItem item = (ScratchieItem) iter.next(); if (item != null) { - // This flushs user UID info to message if this user is a new - // user. + // This flushs user UID info to message if this user is a new user. item.setCreateBy(scratchieUser); + removeNewLineCharacters(item); itemList.add(item); } } @@ -1045,6 +1045,25 @@ } return paramMap; } + + /** + * Removes redundant new line characters from options left by CKEditor (otherwise it will break Javascript in + * monitor) + */ + private void removeNewLineCharacters(ScratchieItem item) { + Set answers = item.getAnswers(); + if (answers != null) { + for (ScratchieAnswer answer : answers) { + String answerDescription = answer.getDescription(); + if (answerDescription != null) { + answerDescription = answerDescription.replaceAll("[\n\r\f]", ""); + answerDescription = answerDescription.replaceAll("[\"]", """); + answer.setDescription(answerDescription); + } + } + + } + } /** * Get ToolAccessMode from HttpRequest parameters. Default value is AUTHOR mode. Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java =================================================================== diff -u -r72b51d91930767ea7f0478365040ab363a08d330 -r99545d1824fcf0b2ea23a6bdce46aab3b288bff5 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java (.../LearningAction.java) (revision 72b51d91930767ea7f0478365040ab363a08d330) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java (.../LearningAction.java) (revision 99545d1824fcf0b2ea23a6bdce46aab3b288bff5) @@ -125,24 +125,24 @@ // get back the scratchie and item list and display them on page IScratchieService service = getScratchieService(); - ScratchieUser scratchieUser = null; + ScratchieUser user = null; if (mode != null && mode.isTeacher()) { // monitoring mode - user is specified in URL // scratchieUser may be null if the user was force completed. - scratchieUser = getSpecifiedUser(service, toolSessionId, + user = getSpecifiedUser(service, toolSessionId, WebUtil.readIntParam(request, AttributeNames.PARAM_USER_ID, false)); } else { - scratchieUser = getCurrentUser(service, toolSessionId); + user = getCurrentUser(service, toolSessionId); } Scratchie scratchie = service.getScratchieBySessionId(toolSessionId); Set initialItems = scratchie.getScratchieItems(); // get notebook entry String entryText = new String(); - if (scratchieUser != null) { + if (user != null) { NotebookEntry notebookEntry = service.getEntry(toolSessionId, CoreNotebookConstants.NOTEBOOK_TOOL, - ScratchieConstants.TOOL_SIGNATURE, scratchieUser.getUserId().intValue()); + ScratchieConstants.TOOL_SIGNATURE, user.getUserId().intValue()); if (notebookEntry != null) { entryText = notebookEntry.getEntry(); } @@ -151,8 +151,8 @@ // basic information sessionMap.put(ScratchieConstants.ATTR_TITLE, scratchie.getTitle()); sessionMap.put(ScratchieConstants.ATTR_RESOURCE_INSTRUCTION, scratchie.getInstructions()); - sessionMap.put(ScratchieConstants.ATTR_USER_ID, scratchieUser.getUserId()); - boolean isUserFinished = scratchieUser != null && scratchieUser.isSessionFinished(); + sessionMap.put(ScratchieConstants.ATTR_USER_ID, user.getUserId()); + boolean isUserFinished = user != null && user.isSessionFinished(); sessionMap.put(ScratchieConstants.ATTR_USER_FINISHED, isUserFinished); sessionMap.put(ScratchieConstants.ATTR_IS_SHOW_RESULTS_PAGE, scratchie.isShowResultsPage()); sessionMap.put(AttributeNames.PARAM_TOOL_SESSION_ID, toolSessionId); @@ -185,11 +185,16 @@ if (item.getCreateBy() != null) { item.getCreateBy().getLoginName(); } - } + } + + // for teacher in monitoring display the number of atempt. + if (mode.isTeacher()) { + service.retrieveScratchesOrder(initialItems, user); + } // set complete flag for display purpose - if (scratchieUser != null) { - service.retrieveScratched(initialItems, scratchieUser); + if (user != null) { + service.retrieveScratched(initialItems, user); } //randomize order if needed @@ -198,7 +203,7 @@ sessionMap.put(ScratchieConstants.ATTR_ITEM_LIST, items); sessionMap.put(ScratchieConstants.ATTR_SCRATCHIE, scratchie); - boolean isScratchingFinished = scratchieUser != null && scratchieUser.isScratchingFinished(); + boolean isScratchingFinished = user != null && user.isScratchingFinished(); if (isScratchingFinished && !mode.isTeacher()) { ActionRedirect redirect = new ActionRedirect(mapping.findForwardConfig("showResults")); redirect.addParameter(ScratchieConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java =================================================================== diff -u -red23aef88626fa70acd34abbd3d044bec1b4a998 -r99545d1824fcf0b2ea23a6bdce46aab3b288bff5 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision ed23aef88626fa70acd34abbd3d044bec1b4a998) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 99545d1824fcf0b2ea23a6bdce46aab3b288bff5) @@ -67,9 +67,6 @@ if (param.equals("summary")) { return summary(mapping, form, request, response); } - if (param.equals("userSummary")) { - return userSummary(mapping, form, request, response); - } if (param.equals("itemSummary")) { return itemSummary(mapping, form, request, response); } @@ -109,31 +106,6 @@ return mapping.findForward(ScratchieConstants.SUCCESS); } - private ActionForward userSummary(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { - Long itemUid = WebUtil.readLongParam(request, ScratchieConstants.ATTR_ITEM_UID); - if (itemUid.equals(-1)) { - return null; - } - - String sessionMapID = request.getParameter(ScratchieConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - request.setAttribute(ScratchieConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); - - Long userId = WebUtil.readLongParam(request, AttributeNames.PARAM_USER_ID); - if (userId.equals(-1)) { - return null; - } - ScratchieItem item = getScratchieService().getScratchieItemByUid(itemUid); - request.setAttribute(ScratchieConstants.ATTR_ITEM, item); - - Long contentId = (Long) sessionMap.get(ScratchieConstants.ATTR_TOOL_CONTENT_ID); - List summaryList = getScratchieService().getQuestionSummary(contentId, itemUid); - - request.setAttribute(ScratchieConstants.ATTR_SUMMARY_LIST, summaryList); - return mapping.findForward(ScratchieConstants.SUCCESS); - } - private ActionForward itemSummary(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String sessionMapID = request.getParameter(ScratchieConstants.ATTR_SESSION_MAP_ID); Index: lams_tool_scratchie/web/common/header.jsp =================================================================== diff -u -r6aaee4b2fe2caa08b0c63a0de11f05042d5a3e18 -r99545d1824fcf0b2ea23a6bdce46aab3b288bff5 --- lams_tool_scratchie/web/common/header.jsp (.../header.jsp) (revision 6aaee4b2fe2caa08b0c63a0de11f05042d5a3e18) +++ lams_tool_scratchie/web/common/header.jsp (.../header.jsp) (revision 99545d1824fcf0b2ea23a6bdce46aab3b288bff5) @@ -10,7 +10,7 @@ - + Index: lams_tool_scratchie/web/pages/authoring/authoring.jsp =================================================================== diff -u -r0ef117e7eca05b962210cb3b18eab1e39a6c57d1 -r99545d1824fcf0b2ea23a6bdce46aab3b288bff5 --- lams_tool_scratchie/web/pages/authoring/authoring.jsp (.../authoring.jsp) (revision 0ef117e7eca05b962210cb3b18eab1e39a6c57d1) +++ lams_tool_scratchie/web/pages/authoring/authoring.jsp (.../authoring.jsp) (revision 99545d1824fcf0b2ea23a6bdce46aab3b288bff5) @@ -12,7 +12,7 @@ <%@ include file="/common/tabbedheader.jsp"%> - + Index: lams_tool_scratchie/web/pages/authoring/parts/additem.jsp =================================================================== diff -u -r6ade8791af29bde5c1e1b1aad674a9d23b69fb36 -r99545d1824fcf0b2ea23a6bdce46aab3b288bff5 --- lams_tool_scratchie/web/pages/authoring/parts/additem.jsp (.../additem.jsp) (revision 6ade8791af29bde5c1e1b1aad674a9d23b69fb36) +++ lams_tool_scratchie/web/pages/authoring/parts/additem.jsp (.../additem.jsp) (revision 99545d1824fcf0b2ea23a6bdce46aab3b288bff5) @@ -19,7 +19,7 @@ - + + - + + - +