Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java =================================================================== diff -u -r8f4ede3494f8c087de161a50616e511dd22d1605 -r4a1085fc82d8e6273b9b800fb6852bcbd2c7baea --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision 8f4ede3494f8c087de161a50616e511dd22d1605) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision 4a1085fc82d8e6273b9b800fb6852bcbd2c7baea) @@ -116,6 +116,7 @@ public static final String MAP_QUE_ATTEMPTS ="mapQueAttempts"; public static final String MAP_QUE_CORRECT_ATTEMPTS ="mapQueCorrectAttempts"; public static final String MAP_QUE_INCORRECT_ATTEMPTS ="mapQueIncorrectAttempts"; + public static final String MAP_RESPONSES ="mapResponses"; public static final String MAP_WEIGHTS ="mapWeights"; @@ -209,6 +210,7 @@ public static final String MAP_QUESTION_CONTENT_LEARNER ="mapQuestionContentLearner"; public static final String CURRENT_QUESTION_INDEX ="currentQuestionIndex"; public static final String TOTAL_QUESTION_COUNT ="totalQuestionCount"; + public static final String HR_COLUMN_COUNT ="hrColumnCount"; public static final String LEARNER_MARK ="learnerMark"; public static final String LEARNER_BEST_MARK ="learnerBestMark"; public static final String LEARNER_LAST_ATTEMPT_ORDER ="learnerLastAttemptOrder"; @@ -246,13 +248,16 @@ public static final String MONITORING_ERROR ="monitoringError"; public static final String MAP_MONITORING_QUESTIONS ="mapMonitoringQuestions"; public static final String SUMMARY_TOOL_SESSIONS ="summaryToolSessions"; + public static final String CURRENT_SESSION_NAME ="currentSessionName"; public static final String SUMMARY_TOOL_SESSIONS_ID ="summaryToolSessionsId"; public static final String MONITORED_CONTENT_ID ="monitoredContentId"; public static final String EDITACTIVITY_EDITMODE ="editActivityEditMode"; public static final String FORM_INDEX ="formIndex"; public static final String CURRENT_MONITORED_TOOL_SESSION ="currentMonitoredToolSession"; + public static final String CURRENT_MONITORED_TOOL_SESSION_NAME ="currentMonitoredToolSessionName"; public static final String SELECTION_CASE ="selectionCase"; public static final String LIST_MONITORED_ANSWERS_CONTAINER_DTO ="listMonitoredAnswersContainerDto"; + public static final String LIST_GROUPING_DATA ="listGroupingData"; public static final String LEARNER_NAME ="learnerName"; public static final String LIST_MONITORED_MARKS_CONTAINER_DTO ="listMonitoredMarksContainerDto"; public static final String TIMEZONE ="timeZone"; Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McUserMarkDTO.java =================================================================== diff -u -rd802954e23b530b46c710e9816f710eab0156acf -r4a1085fc82d8e6273b9b800fb6852bcbd2c7baea --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McUserMarkDTO.java (.../McUserMarkDTO.java) (revision d802954e23b530b46c710e9816f710eab0156acf) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McUserMarkDTO.java (.../McUserMarkDTO.java) (revision 4a1085fc82d8e6273b9b800fb6852bcbd2c7baea) @@ -36,6 +36,7 @@ public class McUserMarkDTO implements Comparable { private String sessionId; + private String sessionName; private String queUsrId; private String userName; private LinkedList marks; @@ -125,4 +126,16 @@ public void setTotalMark(String totalMark) { this.totalMark = totalMark; } + /** + * @return Returns the sessionName. + */ + public String getSessionName() { + return sessionName; + } + /** + * @param sessionName The sessionName to set. + */ + public void setSessionName(String sessionName) { + this.sessionName = sessionName; + } } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/ExportServlet.java =================================================================== diff -u -rc7b86fe9003c3c7cf376ffd0a03419a6aba6e6a3 -r4a1085fc82d8e6273b9b800fb6852bcbd2c7baea --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/ExportServlet.java (.../ExportServlet.java) (revision c7b86fe9003c3c7cf376ffd0a03419a6aba6e6a3) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/ExportServlet.java (.../ExportServlet.java) (revision 4a1085fc82d8e6273b9b800fb6852bcbd2c7baea) @@ -152,8 +152,11 @@ Long queUsrId=mcQueUsr.getUid(); logger.debug("queUsrId: " + queUsrId); + Map mapResponses= new TreeMap(new McComparator()); Map mapQueAttempts= new TreeMap(new McComparator()); - + Map mapQueCorrectAttempts= new TreeMap(new McComparator()); + Map mapQueIncorrectAttempts= new TreeMap(new McComparator()); + for (int i=1; i<= new Integer(totalQuestionCount).intValue(); i++) { logger.debug("doing question with display order: " + i); @@ -206,6 +209,7 @@ { currentMark= "0"; } + mapResponses.put(new Integer(i).toString(), currentMark); intCurrentMark=new Integer(currentMark).intValue(); logger.debug("intCurrentMark: " + intCurrentMark); @@ -245,20 +249,22 @@ { currentMark= "0"; } - + mapResponses.put(new Integer(i).toString(), currentMark); intCurrentMark=new Integer(currentMark).intValue(); logger.debug("intCurrentMark: " + intCurrentMark); } } else { intCurrentMark=0; + mapResponses.put(new Integer(i).toString(), "0"); } intTotalMark=intTotalMark + intCurrentMark; logger.debug("intTotalMark: " + intTotalMark); - + Map mapAttemptOrderCorrectAttempts= new TreeMap(new McComparator()); + Map mapAttemptOrderIncorrectAttempts= new TreeMap(new McComparator()); Map mapAttemptOrderAttempts= new TreeMap(new McComparator()); for (int j=1; j <= MAX_ATTEMPT_HISTORY ; j++ ) { @@ -267,6 +273,9 @@ logger.debug("attemptsByAttemptOrder: " + j + " is: " + attemptsByAttemptOrder); Map mapAttempts= new TreeMap(new McComparator()); + Map mapAttemptsIncorrect= new TreeMap(new McComparator()); + Map mapAttemptsCorrect= new TreeMap(new McComparator()); + Iterator attemptIterator=attemptsByAttemptOrder.iterator(); Long mapIndex=new Long(1); while (attemptIterator.hasNext()) @@ -284,19 +293,39 @@ { mapAttemptOrderAttempts.put(new Integer(j).toString(), mapAttempts); } + if (mapAttemptsCorrect.size() > 0) + { + mapAttemptOrderCorrectAttempts.put(new Integer(j).toString(), mapAttemptsCorrect); + } + if (mapAttemptsIncorrect.size() > 0) + { + mapAttemptOrderIncorrectAttempts.put(new Integer(j).toString(), mapAttemptsIncorrect); + } + } logger.debug("final mapAttemptOrderAttempts is: " + mapAttemptOrderAttempts); if (mapAttemptOrderAttempts.size() > 0) { mapQueAttempts.put(new Integer(i).toString(), mapAttemptOrderAttempts); } + if (mapAttemptOrderCorrectAttempts.size() > 0) + { + mapQueCorrectAttempts.put(new Integer(i).toString(), mapAttemptOrderCorrectAttempts); + } + if (mapAttemptOrderIncorrectAttempts.size() > 0) + { + mapQueIncorrectAttempts.put(new Integer(i).toString(), mapAttemptOrderIncorrectAttempts); + } + } request.getSession().setAttribute(MAP_QUE_ATTEMPTS, mapQueAttempts); logger.debug("final mapQueAttempts is: " + mapQueAttempts); + request.getSession().setAttribute(MAP_QUE_CORRECT_ATTEMPTS, mapQueCorrectAttempts); + request.getSession().setAttribute(MAP_QUE_INCORRECT_ATTEMPTS, mapQueIncorrectAttempts); + request.getSession().setAttribute(MAP_RESPONSES, mapResponses); - - + logger.debug("final MAP_RESPONSES is: " + mapResponses); logger.debug("final intTotalMark is: " + intTotalMark); return new Integer(intTotalMark).toString(); } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringAction.java =================================================================== diff -u -r66bdcbf0aa30e2806a09754ffb940f2b53126a01 -r4a1085fc82d8e6273b9b800fb6852bcbd2c7baea --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringAction.java (.../McMonitoringAction.java) (revision 66bdcbf0aa30e2806a09754ffb940f2b53126a01) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringAction.java (.../McMonitoringAction.java) (revision 4a1085fc82d8e6273b9b800fb6852bcbd2c7baea) @@ -41,6 +41,7 @@ import org.lamsfoundation.lams.tool.mc.McApplicationException; import org.lamsfoundation.lams.tool.mc.McUtils; import org.lamsfoundation.lams.tool.mc.pojos.McContent; +import org.lamsfoundation.lams.tool.mc.pojos.McSession; import org.lamsfoundation.lams.tool.mc.service.IMcService; import org.lamsfoundation.lams.tool.mc.service.McServiceProxy; import org.lamsfoundation.lams.web.action.LamsDispatchAction; @@ -205,13 +206,17 @@ { /* SELECTION_CASE == 1 indicates a selected group other than "All" */ request.getSession().setAttribute(SELECTION_CASE, new Long(1)); + McSession mcSession=mcService.retrieveMcSession(new Long(currentMonitoredToolSession)); + request.getSession().setAttribute(CURRENT_MONITORED_TOOL_SESSION_NAME, mcSession.getSession_name()); } logger.debug("SELECTION_CASE: " + request.getSession().getAttribute(SELECTION_CASE)); request.getSession().setAttribute(CURRENT_MONITORED_TOOL_SESSION, currentMonitoredToolSession); logger.debug("CURRENT_MONITORED_TOOL_SESSION: " + request.getSession().getAttribute(CURRENT_MONITORED_TOOL_SESSION)); + logger.debug("CURRENT_MONITORED_TOOL_SESSION_NAME: " + request.getSession().getAttribute(CURRENT_MONITORED_TOOL_SESSION_NAME)); + return (mapping.findForward(LOAD_MONITORING_CONTENT)); } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringStarterAction.java =================================================================== diff -u -rc7b86fe9003c3c7cf376ffd0a03419a6aba6e6a3 -r4a1085fc82d8e6273b9b800fb6852bcbd2c7baea --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringStarterAction.java (.../McMonitoringStarterAction.java) (revision c7b86fe9003c3c7cf376ffd0a03419a6aba6e6a3) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringStarterAction.java (.../McMonitoringStarterAction.java) (revision 4a1085fc82d8e6273b9b800fb6852bcbd2c7baea) @@ -147,13 +147,16 @@ McContent mcContent=mcService.retrieveMc(toolContentId); logger.debug("mcContent:" + mcContent); - + logger.debug("TOTAL QUESTION COUNT: " + mcContent.getMcQueContents().size()); + request.getSession().setAttribute(TOTAL_QUESTION_COUNT, new Integer(mcContent.getMcQueContents().size()).toString()); + request.getSession().setAttribute(HR_COLUMN_COUNT, new Integer(mcContent.getMcQueContents().size()+2).toString()); + + /* it is possible that no users has ever logged in for the activity yet*/ int countAllUsers=mcService.getTotalNumberOfUsers(); logger.debug("countAllUsers: " + countAllUsers); - - + request.getSession().setAttribute(USER_EXCEPTION_NO_STUDENT_ACTIVITY, new Boolean(false)); if (countAllUsers == 0) { @@ -343,7 +346,7 @@ /* Default to All for tool Sessions so that all tool sessions' summary information gets displayed when the module starts up */ request.getSession().setAttribute(CURRENT_MONITORED_TOOL_SESSION, "All"); logger.debug("CURRENT_MONITORED_TOOL_SESSION: " + request.getSession().getAttribute(CURRENT_MONITORED_TOOL_SESSION)); - + List listMonitoredAnswersContainerDTO=MonitoringUtil.buildGroupsQuestionData(request, mcContent, mcService); request.getSession().setAttribute(LIST_MONITORED_ANSWERS_CONTAINER_DTO, listMonitoredAnswersContainerDTO); logger.debug("LIST_MONITORED_ANSWERS_CONTAINER_DTO: " + request.getSession().getAttribute(LIST_MONITORED_ANSWERS_CONTAINER_DTO)); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java =================================================================== diff -u -rc7b86fe9003c3c7cf376ffd0a03419a6aba6e6a3 -r4a1085fc82d8e6273b9b800fb6852bcbd2c7baea --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java (.../MonitoringUtil.java) (revision c7b86fe9003c3c7cf376ffd0a03419a6aba6e6a3) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java (.../MonitoringUtil.java) (revision 4a1085fc82d8e6273b9b800fb6852bcbd2c7baea) @@ -91,7 +91,6 @@ - /** * ends up populating the attempt history for all the users of all the tool sessions for a content * buildGroupsQuestionData(HttpServletRequest request, McContent mcContent) @@ -248,8 +247,8 @@ logger.debug("final listMonitoredMarksContainerDTO:..." + listMonitoredMarksContainerDTO); return listMonitoredMarksContainerDTO; } - + public static List buildGroupsMarkData(HttpServletRequest request, McContent mcContent, IMcService mcService) { logger.debug("will be building groups mark data for content:..." + mcContent); @@ -278,6 +277,7 @@ McUserMarkDTO mcUserMarkDTO= new McUserMarkDTO(); mcUserMarkDTO.setSessionId(mcSession.getMcSessionId().toString()); + mcUserMarkDTO.setSessionName(mcSession.getSession_name().toString()); mcUserMarkDTO.setUserName(mcQueUsr.getFullname()); mcUserMarkDTO.setQueUsrId(mcQueUsr.getQueUsrId().toString()); @@ -324,6 +324,80 @@ } + public static List buildGroupingBasedResponsesData(HttpServletRequest request, McContent mcContent, IMcService mcService) + { + logger.debug("will be building grouping data for content:..." + mcContent); + List listMonitoredMarksContainerDTO= new LinkedList(); + Set sessions=mcContent.getMcSessions(); + Iterator sessionsIterator=sessions.iterator(); + + while (sessionsIterator.hasNext()) + { + McSession mcSession=(McSession) sessionsIterator.next(); + logger.debug("iterating mcSession:..." + mcSession); + + McSessionMarkDTO mcSessionMarkDTO= new McSessionMarkDTO(); + mcSessionMarkDTO.setSessionId(mcSession.getMcSessionId().toString()); + mcSessionMarkDTO.setSessionName(mcSession.getSession_name().toString()); + + Set sessionUsers=mcSession.getMcQueUsers(); + Iterator usersIterator=sessionUsers.iterator(); + + LinkedList sessionUsersData= new LinkedList(); + Map mapSessionUsersData= new TreeMap(new McStringComparator()); + while (usersIterator.hasNext()) + { + McQueUsr mcQueUsr=(McQueUsr) usersIterator.next(); + logger.debug("iterating mcQueUsr:..." + mcQueUsr); + + McUserMarkDTO mcUserMarkDTO= new McUserMarkDTO(); + mcUserMarkDTO.setSessionId(mcSession.getMcSessionId().toString()); + mcUserMarkDTO.setUserName(mcQueUsr.getFullname()); + mcUserMarkDTO.setQueUsrId(mcQueUsr.getQueUsrId().toString()); + + + List listQuestions=mcService.getAllQuestionEntries(mcContent.getUid()); + logger.debug("listQuestions:..." + listQuestions); + + Iterator itListQuestions = listQuestions.iterator(); + LinkedList userMarks= new LinkedList(); + + while (itListQuestions.hasNext()) + { + McQueContent mcQueContent =(McQueContent)itListQuestions.next(); + logger.debug("mcQueContent:..." + mcQueContent); + if (mcQueContent != null) + { + String learnerMark=getLearnerMarkForQuestionInSession(mcQueContent.getUid(), mcSession.getUid(), mcQueUsr.getUid(), mcSession, mcService); + logger.debug("learnerMark for queContent uid, mcSession uid, mcUser uid:..." + mcQueContent.getUid() + "--" + mcSession.getUid() + + "--" + mcQueUsr.getUid() + "is: " + learnerMark); + + userMarks.add(learnerMark); + } + } + + logger.debug("final userMarks:..." + userMarks); + mcUserMarkDTO.setMarks(userMarks); + + String totalMark=getTotalUserMarkForQuestions(userMarks); + logger.debug("totalMark: " + totalMark); + mcUserMarkDTO.setTotalMark(totalMark); + + logger.debug("final mcUserMarkDTO:..." + mcUserMarkDTO); + sessionUsersData.add(mcUserMarkDTO); + } + logger.debug("final sessionUsersData: " + sessionUsersData); + mapSessionUsersData=convertToMcUserMarkDTOMap(sessionUsersData); + logger.debug("final mapSessionUsersData: " + mapSessionUsersData); + mcSessionMarkDTO.setUserMarks(mapSessionUsersData); + listMonitoredMarksContainerDTO.add(mcSessionMarkDTO); + } + + logger.debug("final listMonitoredMarksContainerDTO:..." + listMonitoredMarksContainerDTO); + return listMonitoredMarksContainerDTO; + } + + public static String getLearnerMarkForQuestionInSession(Long mcQueContentUid, Long mcSessionUid, Long mcQueUsrUid, McSession mcSession, IMcService mcService) { logger.debug("starting getLearnerMarkForQuestionInSession: mcQueContentUid" + mcQueContentUid); Index: lams_tool_lamc/web/export/ExportContent.jsp =================================================================== diff -u -rc7b86fe9003c3c7cf376ffd0a03419a6aba6e6a3 -r4a1085fc82d8e6273b9b800fb6852bcbd2c7baea --- lams_tool_lamc/web/export/ExportContent.jsp (.../ExportContent.jsp) (revision c7b86fe9003c3c7cf376ffd0a03419a6aba6e6a3) +++ lams_tool_lamc/web/export/ExportContent.jsp (.../ExportContent.jsp) (revision 4a1085fc82d8e6273b9b800fb6852bcbd2c7baea) @@ -99,187 +99,110 @@

- - - - - - - + + + + +
+ - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - +
-   ( - ) - -
   
: + +   ( + ) +
+ + + + + + +
+         + + + +   () + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + +
+ +         + + +
+
+ + + + ( ) + + +
+ +
- - - - - - - -
- - - - - - - -
    + +
: - -   ( - ) -
- - - - - - -
-         - - - -   () - - -
-
- - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - - -
- -         - - -
-
-
- -
- -
- Index: lams_tool_lamc/web/monitoring/Summary.jsp =================================================================== diff -u -rae7f0d44518e7b49d09bd544cc12bf7bce242cb3 -r4a1085fc82d8e6273b9b800fb6852bcbd2c7baea --- lams_tool_lamc/web/monitoring/Summary.jsp (.../Summary.jsp) (revision ae7f0d44518e7b49d09bd544cc12bf7bce242cb3) +++ lams_tool_lamc/web/monitoring/Summary.jsp (.../Summary.jsp) (revision 4a1085fc82d8e6273b9b800fb6852bcbd2c7baea) @@ -85,13 +85,9 @@ + + - - - - - - @@ -136,87 +132,13 @@

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-   ( - ) - -
- - - - - - - -
- - - - - - - -
+ + + + + + Index: lams_tool_lamc/web/monitoring/SummaryAllSessions.jsp =================================================================== diff -u --- lams_tool_lamc/web/monitoring/SummaryAllSessions.jsp (revision 0) +++ lams_tool_lamc/web/monitoring/SummaryAllSessions.jsp (revision 4a1085fc82d8e6273b9b800fb6852bcbd2c7baea) @@ -0,0 +1,126 @@ +<%-- +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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA + + 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" %> +<%@ taglib uri="tags-logic-el" prefix="logic-el" %> +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-fmt" prefix="fmt" %> +<%@ taglib uri="fck-editor" prefix="FCK" %> +<%@ taglib uri="tags-lams" prefix="lams" %> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+   ( + ) + +
+ + + + + + + +
+ + + + + + + +

+ + \ No newline at end of file Index: lams_tool_lamc/web/monitoring/SummaryIndividualSession.jsp =================================================================== diff -u --- lams_tool_lamc/web/monitoring/SummaryIndividualSession.jsp (revision 0) +++ lams_tool_lamc/web/monitoring/SummaryIndividualSession.jsp (revision 4a1085fc82d8e6273b9b800fb6852bcbd2c7baea) @@ -0,0 +1,118 @@ +<%-- +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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA + + 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" %> +<%@ taglib uri="tags-logic-el" prefix="logic-el" %> +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-fmt" prefix="fmt" %> +<%@ taglib uri="fck-editor" prefix="FCK" %> +<%@ taglib uri="tags-lams" prefix="lams" %> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+   ( + ) + +
+ + + + + + + +
+ + + + + + + +
+ + \ No newline at end of file