Index: lams_tool_vote/conf/language/ApplicationResources.properties =================================================================== diff -u -r865d01f017c6e40ee98ae2e61d5bbbe49b2a5851 -r277d8412bc03b9c73992a0e6f3ad845cd0a4eba6 --- lams_tool_vote/conf/language/ApplicationResources.properties (.../ApplicationResources.properties) (revision 865d01f017c6e40ee98ae2e61d5bbbe49b2a5851) +++ lams_tool_vote/conf/language/ApplicationResources.properties (.../ApplicationResources.properties) (revision 277d8412bc03b9c73992a0e6f3ad845cd0a4eba6) @@ -59,6 +59,7 @@ label.attempts =Attempts label.you.answered =You answered: label.learner.answered =Learner answered: +label.learning.report =Learning Report label.retake =Redo Vote label.view.summary =View Summary label.view.answers =View Answers Index: lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/VoteAppConstants.java =================================================================== diff -u -re8bdd364f7372b39f60efbd8cdbb114e7955e9a2 -r277d8412bc03b9c73992a0e6f3ad845cd0a4eba6 --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/VoteAppConstants.java (.../VoteAppConstants.java) (revision e8bdd364f7372b39f60efbd8cdbb114e7955e9a2) +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/VoteAppConstants.java (.../VoteAppConstants.java) (revision 277d8412bc03b9c73992a0e6f3ad845cd0a4eba6) @@ -67,6 +67,8 @@ public static final String ACTIVE_MODULE ="activeModule"; public static final String DEFINE_LATER_IN_EDIT_MODE ="defineLaterInEditMode"; public static final String SUBMIT_SUCCESS ="sbmtSuccess"; + public static final String REQUEST_LEARNING_REPORT ="requestLearningReport"; + public static final String REQUEST_LEARNING_REPORT_PROGRESS ="requestLearningReportProgress"; /* * authoring mode controllers Index: lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/MonitoringUtil.java =================================================================== diff -u -re8bdd364f7372b39f60efbd8cdbb114e7955e9a2 -r277d8412bc03b9c73992a0e6f3ad845cd0a4eba6 --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/MonitoringUtil.java (.../MonitoringUtil.java) (revision e8bdd364f7372b39f60efbd8cdbb114e7955e9a2) +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/MonitoringUtil.java (.../MonitoringUtil.java) (revision 277d8412bc03b9c73992a0e6f3ad845cd0a4eba6) @@ -249,40 +249,14 @@ VoteMonitoredUserDTO voteMonitoredUserDTO = new VoteMonitoredUserDTO(); voteMonitoredUserDTO.setAttemptTime(voteUsrResp.getAttemptTime().toString()); voteMonitoredUserDTO.setTimeZone(voteUsrResp.getTimeZone()); - //voteMonitoredUserDTO.setUid(voteUsrResp.getResponseId().toString()); voteMonitoredUserDTO.setUserName(voteQueUsr.getUsername()); voteMonitoredUserDTO.setQueUsrId(voteQueUsr.getUid().toString()); voteMonitoredUserDTO.setSessionId(sessionId.toString()); voteMonitoredUserDTO.setUserEntry(voteUsrResp.getUserEntry()); logger.debug("attempt: " + voteUsrResp); - //VoteQueContent localVoteQueContent=voteUsrResp.getVoteQueContent(); - //logger.debug("localVoteQueContent: " + localVoteQueContent); - //logger.debug("localVoteQueContent question : " + localVoteQueContent.getQuestion()); - //voteMonitoredUserDTO.setResponse(localVoteQueContent.getQuestion()); voteMonitoredUserDTO.setQuestionUid(questionUid); - /* - boolean isSingleUserEntry=voteUsrResp.isSingleUserEntry(); - logger.debug("isSingleUserEntry: " + isSingleUserEntry); - logger.debug("userEntry: " + voteUsrResp.getUserEntry()); - if ((isSingleUserEntry == false) && (voteUsrResp.getUserEntry().length() > 0)) - { - logger.debug("userEntry available and must be added " + voteUsrResp.getUserEntry()); - VoteMonitoredUserDTO userEntryVoteMonitoredUserDTO = new VoteMonitoredUserDTO(); - - userEntryVoteMonitoredUserDTO.setAttemptTime(voteUsrResp.getAttemptTime().toString()); - userEntryVoteMonitoredUserDTO.setTimeZone(voteUsrResp.getTimeZone()); - userEntryVoteMonitoredUserDTO.setUserName(voteQueUsr.getUsername()); - userEntryVoteMonitoredUserDTO.setQueUsrId(voteQueUsr.getUid().toString()); - userEntryVoteMonitoredUserDTO.setSessionId(sessionId.toString()); - voteMonitoredUserDTO.setUserEntry(voteUsrResp.getUserEntry()); - - userEntryVoteMonitoredUserDTO.setResponse(voteUsrResp.getUserEntry()); - listMonitoredUserContainerDTO.add(userEntryVoteMonitoredUserDTO); - } - */ - VoteQueContent voteQueContent=voteUsrResp.getVoteQueContent(); logger.debug("voteQueContent: " + voteQueContent); String entry=voteQueContent.getQuestion(); @@ -343,35 +317,8 @@ voteMonitoredUserDTO.setQueUsrId(voteQueUsr.getUid().toString()); voteMonitoredUserDTO.setSessionId(sessionId.toString()); voteMonitoredUserDTO.setUserEntry(voteUsrResp.getUserEntry()); - //voteMonitoredUserDTO.setResponse(voteUsrResp.getUserEntry()); - logger.debug("attempt: " + voteUsrResp); - //VoteQueContent localVoteQueContent=voteUsrResp.getVoteQueContent(); - //logger.debug("localVoteQueContent: " + localVoteQueContent); - //logger.debug("localVoteQueContent question : " + localVoteQueContent.getQuestion()); - //voteMonitoredUserDTO.setResponse(localVoteQueContent.getQuestion()); voteMonitoredUserDTO.setQuestionUid(questionUid); - - /* - boolean isSingleUserEntry=voteUsrResp.isSingleUserEntry(); - logger.debug("isSingleUserEntry: " + isSingleUserEntry); - logger.debug("userEntry: " + voteUsrResp.getUserEntry()); - if ((isSingleUserEntry == false) && (voteUsrResp.getUserEntry().length() > 0)) - { - logger.debug("userEntry available and must be added " + voteUsrResp.getUserEntry()); - VoteMonitoredUserDTO userEntryVoteMonitoredUserDTO = new VoteMonitoredUserDTO(); - - userEntryVoteMonitoredUserDTO.setAttemptTime(voteUsrResp.getAttemptTime().toString()); - userEntryVoteMonitoredUserDTO.setTimeZone(voteUsrResp.getTimeZone()); - userEntryVoteMonitoredUserDTO.setUserName(voteQueUsr.getUsername()); - userEntryVoteMonitoredUserDTO.setQueUsrId(voteQueUsr.getUid().toString()); - userEntryVoteMonitoredUserDTO.setSessionId(sessionId.toString()); - voteMonitoredUserDTO.setUserEntry(voteUsrResp.getUserEntry()); - - userEntryVoteMonitoredUserDTO.setResponse(voteUsrResp.getUserEntry()); - listMonitoredUserContainerDTO.add(userEntryVoteMonitoredUserDTO); - } - */ VoteQueContent voteQueContent=voteUsrResp.getVoteQueContent(); logger.debug("voteQueContent: " + voteQueContent); @@ -443,37 +390,11 @@ voteMonitoredUserDTO.setQueUsrId(voteQueUsr.getUid().toString()); voteMonitoredUserDTO.setSessionId(sessionId.toString()); - //voteMonitoredUserDTO.setResponse(voteUsrResp.getUserEntry()); logger.debug("attempt: " + voteUsrResp); - //VoteQueContent localVoteQueContent=voteUsrResp.getVoteQueContent(); - //logger.debug("localVoteQueContent: " + localVoteQueContent); - //logger.debug("localVoteQueContent question : " + localVoteQueContent.getQuestion()); - //voteMonitoredUserDTO.setResponse(localVoteQueContent.getQuestion()); voteMonitoredUserDTO.setQuestionUid(questionUid); voteMonitoredUserDTO.setUserEntry(voteUsrResp.getUserEntry()); - /* - boolean isSingleUserEntry=voteUsrResp.isSingleUserEntry(); - logger.debug("isSingleUserEntry: " + isSingleUserEntry); - logger.debug("userEntry: " + voteUsrResp.getUserEntry()); - if ((isSingleUserEntry == false) && (voteUsrResp.getUserEntry().length() > 0)) - { - logger.debug("userEntry available and must be added " + voteUsrResp.getUserEntry()); - VoteMonitoredUserDTO userEntryVoteMonitoredUserDTO = new VoteMonitoredUserDTO(); - - userEntryVoteMonitoredUserDTO.setAttemptTime(voteUsrResp.getAttemptTime().toString()); - userEntryVoteMonitoredUserDTO.setTimeZone(voteUsrResp.getTimeZone()); - userEntryVoteMonitoredUserDTO.setUserName(voteQueUsr.getUsername()); - userEntryVoteMonitoredUserDTO.setQueUsrId(voteQueUsr.getUid().toString()); - userEntryVoteMonitoredUserDTO.setSessionId(sessionId.toString()); - voteMonitoredUserDTO.setUserEntry(voteUsrResp.getUserEntry()); - - userEntryVoteMonitoredUserDTO.setResponse(voteUsrResp.getUserEntry()); - listMonitoredUserContainerDTO.add(userEntryVoteMonitoredUserDTO); - } - */ - VoteQueContent voteQueContent=voteUsrResp.getVoteQueContent(); logger.debug("voteQueContent: " + voteQueContent); String entry=voteQueContent.getQuestion(); @@ -534,35 +455,9 @@ voteMonitoredUserDTO.setQueUsrId(voteQueUsr.getUid().toString()); voteMonitoredUserDTO.setSessionId(sessionId.toString()); voteMonitoredUserDTO.setUserEntry(voteUsrResp.getUserEntry()); - //voteMonitoredUserDTO.setResponse(voteUsrResp.getUserEntry()); - logger.debug("attempt: " + voteUsrResp); - //VoteQueContent localVoteQueContent=voteUsrResp.getVoteQueContent(); - //logger.debug("localVoteQueContent: " + localVoteQueContent); - //logger.debug("localVoteQueContent question : " + localVoteQueContent.getQuestion()); - //voteMonitoredUserDTO.setResponse(localVoteQueContent.getQuestion()); voteMonitoredUserDTO.setQuestionUid(questionUid); - /* - boolean isSingleUserEntry=voteUsrResp.isSingleUserEntry(); - logger.debug("isSingleUserEntry: " + isSingleUserEntry); - logger.debug("userEntry: " + voteUsrResp.getUserEntry()); - if ((isSingleUserEntry == false) && (voteUsrResp.getUserEntry().length() > 0)) - { - logger.debug("userEntry available and must be added " + voteUsrResp.getUserEntry()); - VoteMonitoredUserDTO userEntryVoteMonitoredUserDTO = new VoteMonitoredUserDTO(); - - userEntryVoteMonitoredUserDTO.setAttemptTime(voteUsrResp.getAttemptTime().toString()); - userEntryVoteMonitoredUserDTO.setTimeZone(voteUsrResp.getTimeZone()); - userEntryVoteMonitoredUserDTO.setUserName(voteQueUsr.getUsername()); - userEntryVoteMonitoredUserDTO.setQueUsrId(voteQueUsr.getUid().toString()); - userEntryVoteMonitoredUserDTO.setSessionId(sessionId.toString()); - voteMonitoredUserDTO.setUserEntry(voteUsrResp.getUserEntry()); - - userEntryVoteMonitoredUserDTO.setResponse(voteUsrResp.getUserEntry()); - listMonitoredUserContainerDTO.add(userEntryVoteMonitoredUserDTO); - } - */ VoteQueContent voteQueContent=voteUsrResp.getVoteQueContent(); logger.debug("voteQueContent: " + voteQueContent); Index: lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/VoteLearningStarterAction.java =================================================================== diff -u -r865d01f017c6e40ee98ae2e61d5bbbe49b2a5851 -r277d8412bc03b9c73992a0e6f3ad845cd0a4eba6 --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/VoteLearningStarterAction.java (.../VoteLearningStarterAction.java) (revision 865d01f017c6e40ee98ae2e61d5bbbe49b2a5851) +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/VoteLearningStarterAction.java (.../VoteLearningStarterAction.java) (revision 277d8412bc03b9c73992a0e6f3ad845cd0a4eba6) @@ -274,46 +274,25 @@ /* by now, we know that the mode is either teacher or learner * check if the mode is teacher and request is for Learner Progress */ - String userId=request.getParameter(USER_ID); - logger.debug("userId: " + userId); - if ((userId != null) && (mode.equals("teacher"))) + + String learnerProgressUserId=request.getParameter(USER_ID); + logger.debug("learnerProgressUserId: " + learnerProgressUserId); + + if ((learnerProgressUserId != null) && (mode.equals("teacher"))) { - logger.debug("request is for learner progress"); - commonContentSetup(request, voteContent); + logger.debug("start generating learner progress report."); + Long currentToolSessionId=(Long)request.getSession().getAttribute(TOOL_SESSION_ID); + logger.debug("currentToolSessionId: " + currentToolSessionId); - /* LEARNER_PROGRESS for jsp*/ - request.getSession().setAttribute(LEARNER_PROGRESS_USERID, userId); - request.getSession().setAttribute(LEARNER_PROGRESS, new Boolean(true).toString()); - VoteLearningAction voteLearningAction= new VoteLearningAction(); - /* pay attention that this userId is the learner's userId passed by the request parameter. - * It is differerent than USER_ID kept in the session of the current system user*/ - VoteQueUsr voteQueUsr=voteService.retrieveVoteQueUsr(new Long(userId)); - logger.debug("voteQueUsr:" + voteQueUsr); - if (voteQueUsr == null) - { - VoteUtils.cleanUpSessionAbsolute(request); - persistError(request, "error.learner.required"); - request.getSession().setAttribute(USER_EXCEPTION_LEARNER_REQUIRED, new Boolean(true).toString()); - return (mapping.findForward(ERROR_LIST)); - } - - /* check whether the user's session really referrs to the session id passed to the url*/ - Long sessionUid=voteQueUsr.getVoteSessionId(); - logger.debug("sessionUid" + sessionUid); - VoteSession voteSessionLocal=voteService.getVoteSessionByUID(sessionUid); - logger.debug("checking voteSessionLocal" + voteSessionLocal); - Long toolSessionId=(Long)request.getSession().getAttribute(TOOL_SESSION_ID); - logger.debug("toolSessionId: " + toolSessionId + " versus" + voteSessionLocal); - if ((voteSessionLocal == null) || - (voteSessionLocal.getVoteSessionId().longValue() != toolSessionId.longValue())) - { - VoteUtils.cleanUpSessionAbsolute(request); - request.getSession().setAttribute(USER_EXCEPTION_TOOLSESSIONID_INCONSISTENT, new Boolean(true).toString()); - persistError(request, "error.learner.sessionId.inconsistent"); - return (mapping.findForward(ERROR_LIST)); - } - //return voteLearningAction.viewAnswers(mapping, form, request, response); - return null; + /* the report should have only this user's entries(with userId)*/ + VoteMonitoringAction voteMonitoringAction= new VoteMonitoringAction(); + voteMonitoringAction.refreshSummaryData(request, voteContent, voteService, true, true, currentToolSessionId.toString(), learnerProgressUserId, true); + + request.getSession().setAttribute(REQUEST_LEARNING_REPORT, new Boolean(true).toString()); + request.getSession().setAttribute(REQUEST_LEARNING_REPORT_PROGRESS, new Boolean(true).toString()); + logger.debug("fwd'ing to for learner progress" + LEARNER_REPORT); + return (mapping.findForward(LEARNER_REPORT)); + } /* by now, we know that the mode is learner*/ Index: lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/VoteMonitoringAction.java =================================================================== diff -u -re6d4c9ba0ba0e2b42b4ff2f997618bfedc28dd7c -r277d8412bc03b9c73992a0e6f3ad845cd0a4eba6 --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/VoteMonitoringAction.java (.../VoteMonitoringAction.java) (revision e6d4c9ba0ba0e2b42b4ff2f997618bfedc28dd7c) +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/VoteMonitoringAction.java (.../VoteMonitoringAction.java) (revision 277d8412bc03b9c73992a0e6f3ad845cd0a4eba6) @@ -114,7 +114,7 @@ } public void refreshSummaryData(HttpServletRequest request, VoteContent voteContent, IVoteService voteService, - boolean isUserNamesVisible, boolean isLearnerRequest, String currentSessionId, String userId) + boolean isUserNamesVisible, boolean isLearnerRequest, String currentSessionId, String userId, boolean showUserEntriesBySession) { if (voteService == null) { @@ -171,15 +171,17 @@ logger.debug("LIST_MONITORED_ANSWERS_CONTAINER_DTO: " + request.getSession().getAttribute(LIST_MONITORED_ANSWERS_CONTAINER_DTO)); /* ends here. */ - List listUserEntries=processUserEnteredNominations(voteService); + List listUserEntries=processUserEnteredNominations(voteService, currentSessionId, showUserEntriesBySession); logger.debug("listUserEntries: " + listUserEntries); request.getSession().setAttribute(LIST_USER_ENTRIES, listUserEntries); } - public List processUserEnteredNominations(IVoteService voteService) + public List processUserEnteredNominations(IVoteService voteService, String currentSessionId, boolean showUserEntriesBySession) { - logger.debug("start getting user entries: "); + logger.debug("start getting user entries, showUserEntriesBySession: " + showUserEntriesBySession); + logger.debug("start getting user entries, currentSessionId: " + currentSessionId); + List userEntries=voteService.getUserEntries(); logger.debug("userEntries: " + userEntries); @@ -211,13 +213,30 @@ logger.debug("new DTO created"); VoteUsrAttempt voteUsrAttempt =(VoteUsrAttempt)itUserRecords.next(); logger.debug("voteUsrAttempt: " + voteUsrAttempt); - voteMonitoredUserDTO.setAttemptTime(voteUsrAttempt.getAttemptTime().toString()); - voteMonitoredUserDTO.setTimeZone(voteUsrAttempt.getTimeZone()); - voteMonitoredUserDTO.setUserName(voteUsrAttempt.getVoteQueUsr().getUsername()); - voteMonitoredUserDTO.setQueUsrId(voteUsrAttempt.getVoteQueUsr().getUid().toString()); - voteMonitoredUserDTO.setUserEntry(voteUsrAttempt.getUserEntry()); - - logger.debug("adding user entry: " + voteUsrAttempt.getUserEntry()); + + if (showUserEntriesBySession == false) + { + voteMonitoredUserDTO.setAttemptTime(voteUsrAttempt.getAttemptTime().toString()); + voteMonitoredUserDTO.setTimeZone(voteUsrAttempt.getTimeZone()); + voteMonitoredUserDTO.setUserName(voteUsrAttempt.getVoteQueUsr().getUsername()); + voteMonitoredUserDTO.setQueUsrId(voteUsrAttempt.getVoteQueUsr().getUid().toString()); + voteMonitoredUserDTO.setUserEntry(voteUsrAttempt.getUserEntry()); + } + else + { + logger.debug("showUserEntriesBySession is true"); + String userSessionId=voteUsrAttempt.getVoteQueUsr().getVoteSession().getVoteSessionId().toString() ; + logger.debug("userSessionId versus currentSessionId: " + userSessionId + " versus " + currentSessionId); + if (userSessionId.equals(currentSessionId)) + { + logger.debug("this is a requested session id: " + currentSessionId); + voteMonitoredUserDTO.setAttemptTime(voteUsrAttempt.getAttemptTime().toString()); + voteMonitoredUserDTO.setTimeZone(voteUsrAttempt.getTimeZone()); + voteMonitoredUserDTO.setUserName(voteUsrAttempt.getVoteQueUsr().getUsername()); + voteMonitoredUserDTO.setQueUsrId(voteUsrAttempt.getVoteQueUsr().getUid().toString()); + voteMonitoredUserDTO.setUserEntry(voteUsrAttempt.getUserEntry()); + } + } listMonitoredUserContainerDTO.add(voteMonitoredUserDTO); } @@ -491,7 +510,45 @@ return voteAction.moveOptionUp(mapping, form, request, response); } + /** + * calls learning action endLearning functionality + * ActionForward endLearning(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) throws IOException, + ServletException, ToolException + * + * @param mapping + * @param form + * @param request + * @param response + * @return + * @throws IOException + * @throws ServletException + * @throws ToolException + */ + public ActionForward endLearning(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) throws IOException, + ServletException, ToolException + { + logger.debug("dispatching proxy endLearning to learning module..."); + IVoteService voteService = (IVoteService)request.getSession().getAttribute(TOOL_SERVICE); + logger.debug("voteService: " + voteService); + if (voteService == null) + { + logger.debug("will retrieve voteService"); + voteService = VoteServiceProxy.getVoteService(getServlet().getServletContext()); + logger.debug("retrieving voteService from session: " + voteService); + } + + VoteLearningAction voteLearningAction= new VoteLearningAction(); + return null; + } + + /** * persists error messages to request scope * @param request Index: lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/VoteMonitoringStarterAction.java =================================================================== diff -u -rf92fcda740b6473979111a76d36f0b9180c06a86 -r277d8412bc03b9c73992a0e6f3ad845cd0a4eba6 --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/VoteMonitoringStarterAction.java (.../VoteMonitoringStarterAction.java) (revision f92fcda740b6473979111a76d36f0b9180c06a86) +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/VoteMonitoringStarterAction.java (.../VoteMonitoringStarterAction.java) (revision 277d8412bc03b9c73992a0e6f3ad845cd0a4eba6) @@ -218,7 +218,7 @@ VoteMonitoringAction voteMonitoringAction= new VoteMonitoringAction(); logger.debug("refreshing summary data..."); - voteMonitoringAction.refreshSummaryData(request, voteContent, voteService, true, false, null, null); + voteMonitoringAction.refreshSummaryData(request, voteContent, voteService, true, false, null, null, false); logger.debug("refreshing stats data..."); voteMonitoringAction.refreshStatsData(request); Index: lams_tool_vote/web/WEB-INF/struts-config.xml =================================================================== diff -u -r261d9a36d11a99322125fa55faaddffc16a041b3 -r277d8412bc03b9c73992a0e6f3ad845cd0a4eba6 --- lams_tool_vote/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision 261d9a36d11a99322125fa55faaddffc16a041b3) +++ lams_tool_vote/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision 277d8412bc03b9c73992a0e6f3ad845cd0a4eba6) @@ -217,7 +217,13 @@ path="/learning/AnswersContent.jsp" redirect="false" /> - + + + - + - + @@ -67,7 +67,7 @@ -> - + Index: lams_tool_vote/web/monitoring/LearnerRep.jsp =================================================================== diff -u -rbc445cd305b92a8737e721c1ab90ed6138dc1715 -r277d8412bc03b9c73992a0e6f3ad845cd0a4eba6 --- lams_tool_vote/web/monitoring/LearnerRep.jsp (.../LearnerRep.jsp) (revision bc445cd305b92a8737e721c1ab90ed6138dc1715) +++ lams_tool_vote/web/monitoring/LearnerRep.jsp (.../LearnerRep.jsp) (revision 277d8412bc03b9c73992a0e6f3ad845cd0a4eba6) @@ -19,6 +19,7 @@ http://www.gnu.org/licenses/gpl.txt --%> + <%@ taglib uri="tags-bean" prefix="bean"%> <%@ taglib uri="tags-html" prefix="html"%> <%@ taglib uri="tags-logic" prefix="logic" %> @@ -30,43 +31,37 @@ - - - + + + - <bean:message key="label.learning.report"/> - + <bean:message key="label.learning.report"/> - - + - - css/tool_custom.css" rel="stylesheet" type="text/css"> - + + + + + + + + @@ -93,10 +88,6 @@ - -
- -