Index: lams_tool_spreadsheet/.classpath =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/.classpath (.../.classpath) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/.classpath (.../.classpath) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -2,7 +2,7 @@ - + Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/AuthoringAction.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/ClearSessionAction.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/LearningAction.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/MonitoringAction.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/ViewItemAction.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/controller/AuthoringController.java =================================================================== diff -u --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/controller/AuthoringController.java (revision 0) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/controller/AuthoringController.java (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -0,0 +1,188 @@ +/**************************************************************** + * 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 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 + * **************************************************************** + */ + +package org.lamsfoundation.lams.tool.spreadsheet.web.controller; + +import java.sql.Timestamp; +import java.util.Date; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.apache.commons.beanutils.PropertyUtils; +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.authoring.web.AuthoringConstants; +import org.lamsfoundation.lams.tool.ToolAccessMode; +import org.lamsfoundation.lams.tool.spreadsheet.SpreadsheetConstants; +import org.lamsfoundation.lams.tool.spreadsheet.model.Spreadsheet; +import org.lamsfoundation.lams.tool.spreadsheet.model.SpreadsheetUser; +import org.lamsfoundation.lams.tool.spreadsheet.service.ISpreadsheetService; +import org.lamsfoundation.lams.tool.spreadsheet.web.form.SpreadsheetForm; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; +import org.lamsfoundation.lams.web.util.SessionMap; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +/** + */ +@Controller +@RequestMapping("/authoring") +public class AuthoringController { + + private static Logger log = Logger.getLogger(AuthoringController.class); + + @Autowired + @Qualifier("spreadsheetService") + private ISpreadsheetService service; + + /** + * Read spreadsheet data from database and put them into HttpSession. It will redirect to init.do directly after + * this method run successfully. + * + * This method will avoid read database again and lost un-saved resouce item lost when user "refresh page", + */ + @RequestMapping("/start") + public String start(@ModelAttribute SpreadsheetForm spreadsheetForm, HttpServletRequest request) + throws ServletException { + + // save toolContentID into HTTPSession + Long contentId = new Long(WebUtil.readLongParam(request, SpreadsheetConstants.PARAM_TOOL_CONTENT_ID)); + + Spreadsheet spreadsheet = null; + + // Get contentFolderID and save to form. + String contentFolderID = WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID); + spreadsheetForm.setContentFolderID(contentFolderID); + + // initial Session Map + SessionMap sessionMap = new SessionMap<>(); + request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); + spreadsheetForm.setSessionMapID(sessionMap.getSessionID()); + + try { + spreadsheet = service.getSpreadsheetByContentId(contentId); + // if spreadsheet does not exist, try to use default content instead. + if (spreadsheet == null) { + spreadsheet = service.getDefaultContent(contentId); + } + spreadsheetForm.setSpreadsheet(spreadsheet); + } catch (Exception e) { + log.error(e); + throw new ServletException(e); + } + + sessionMap.put(SpreadsheetConstants.ATTR_RESOURCE_FORM, spreadsheetForm); + request.getSession().setAttribute(AttributeNames.PARAM_NOTIFY_CLOSE_URL, + request.getParameter(AttributeNames.PARAM_NOTIFY_CLOSE_URL)); + return "pages/authoring/start"; + } + + /** + * Display same entire authoring page content from HttpSession variable. + */ + @RequestMapping("/init") + public String initPage(@ModelAttribute SpreadsheetForm spreadsheetForm, HttpServletRequest request) + throws ServletException { + + String sessionMapID = WebUtil.readStrParam(request, SpreadsheetConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession() + .getAttribute(sessionMapID); + SpreadsheetForm existForm = (SpreadsheetForm) sessionMap.get(SpreadsheetConstants.ATTR_RESOURCE_FORM); + + try { + PropertyUtils.copyProperties(spreadsheetForm, existForm); + } catch (Exception e) { + throw new ServletException(e); + } + + ToolAccessMode mode = WebUtil.readToolAccessModeAuthorDefaulted(request); + request.setAttribute(AttributeNames.ATTR_MODE, mode.toString()); + + return "pages/authoring/authoring"; + } + + /** + * This method will persist all information in this authoring page, include all spreadsheet item, information etc. + */ + @RequestMapping(path = "/updateContent", method = RequestMethod.POST) + public String updateContent(@ModelAttribute SpreadsheetForm spreadsheetForm, HttpServletRequest request) + throws Exception { + + ToolAccessMode mode = WebUtil.readToolAccessModeAuthorDefaulted(request); + request.setAttribute(AttributeNames.ATTR_MODE, mode.toString()); + + Spreadsheet spreadsheet = spreadsheetForm.getSpreadsheet(); + + // **********************************Get Spreadsheet PO********************* + Spreadsheet spreadsheetPO = service.getSpreadsheetByContentId(spreadsheetForm.getSpreadsheet().getContentId()); + if (spreadsheetPO == null) { + // new Spreadsheet, create it. + spreadsheetPO = spreadsheet; + spreadsheetPO.setCreated(new Timestamp(new Date().getTime())); + spreadsheetPO.setUpdated(new Timestamp(new Date().getTime())); + + } else { + Long uid = spreadsheetPO.getUid(); + PropertyUtils.copyProperties(spreadsheetPO, spreadsheet); + // get back UID + spreadsheetPO.setUid(uid); + + // if it's a teacher - change define later status + if (mode.isTeacher()) { + spreadsheetPO.setDefineLater(false); + } + + spreadsheetPO.setUpdated(new Timestamp(new Date().getTime())); + } + + // *******************************Handle user******************* + // try to get form system session + HttpSession ss = SessionManager.getSession(); + // get back login user DTO + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + SpreadsheetUser spreadsheetUser = service.getUserByIDAndContent(new Long(user.getUserID().intValue()), + spreadsheetForm.getSpreadsheet().getContentId()); + if (spreadsheetUser == null) { + spreadsheetUser = new SpreadsheetUser(user, spreadsheetPO); + } + + spreadsheetPO.setCreatedBy(spreadsheetUser); + + // finally persist spreadsheetPO again + service.saveOrUpdateSpreadsheet(spreadsheetPO); + + spreadsheetForm.setSpreadsheet(spreadsheetPO); + + request.setAttribute(AuthoringConstants.LAMS_AUTHORING_SUCCESS_FLAG, Boolean.TRUE); + return "pages/authoring/authoring"; + } + +} Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/controller/ClearSessionController.java =================================================================== diff -u --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/controller/ClearSessionController.java (revision 0) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/controller/ClearSessionController.java (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -0,0 +1,69 @@ +/**************************************************************** + * 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 + * **************************************************************** + */ + +package org.lamsfoundation.lams.tool.spreadsheet.web.controller; + +import java.io.IOException; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.authoring.web.AuthoringConstants; +import org.lamsfoundation.lams.authoring.web.LamsAuthoringFinishController; +import org.lamsfoundation.lams.tool.ToolAccessMode; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.context.WebApplicationContext; + +/** + * This class give a chance to clear HttpSession when user save/close authoring page. + * + * @author Steve.Ni + * + * @version $Revision$ + */ +@Controller +public class ClearSessionController extends LamsAuthoringFinishController { + private static Logger logger = Logger.getLogger(ClearSessionController.class.getName()); + + @Autowired + private WebApplicationContext applicationContext; + + @RequestMapping("/clearsession") + public void execute(HttpServletRequest request, HttpServletResponse response) throws IOException { + super.execute(request, response, applicationContext); + } + + @Override + public void clearSession(String customiseSessionID, HttpSession session, ToolAccessMode mode) { + session.removeAttribute(AuthoringConstants.LAMS_AUTHORING_SUCCESS_FLAG); + if (mode.isAuthor()) { + ClearSessionController.logger.debug("In Author mode"); + session.removeAttribute(customiseSessionID); + } + } + +} Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/controller/LearningController.java =================================================================== diff -u --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/controller/LearningController.java (revision 0) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/controller/LearningController.java (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -0,0 +1,350 @@ +/**************************************************************** + * 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 + * **************************************************************** + */ + +package org.lamsfoundation.lams.tool.spreadsheet.web.controller; + +import java.util.Date; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.learning.web.bean.ActivityPositionDTO; +import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; +import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; +import org.lamsfoundation.lams.tool.ToolAccessMode; +import org.lamsfoundation.lams.tool.spreadsheet.SpreadsheetConstants; +import org.lamsfoundation.lams.tool.spreadsheet.model.Spreadsheet; +import org.lamsfoundation.lams.tool.spreadsheet.model.SpreadsheetSession; +import org.lamsfoundation.lams.tool.spreadsheet.model.SpreadsheetUser; +import org.lamsfoundation.lams.tool.spreadsheet.model.UserModifiedSpreadsheet; +import org.lamsfoundation.lams.tool.spreadsheet.service.ISpreadsheetService; +import org.lamsfoundation.lams.tool.spreadsheet.service.SpreadsheetApplicationException; +import org.lamsfoundation.lams.tool.spreadsheet.web.form.ReflectionForm; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; +import org.lamsfoundation.lams.web.util.SessionMap; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.util.HtmlUtils; + +/** + * + * @author Andrey Balan + */ +@Controller +@RequestMapping("/learning") +public class LearningController { + + private static Logger log = Logger.getLogger(LearningController.class); + + @Autowired + @Qualifier("spreadsheetService") + private ISpreadsheetService service; + + @Autowired + private WebApplicationContext applicationContext; + + /** + * Read spreadsheet data from database and put them into HttpSession. It will redirect to init.do directly after + * this method run successfully. + * + * This method will avoid read database again and lost un-saved resouce item lost when user "refresh page", + */ + @RequestMapping("/start") + public String start(@ModelAttribute ReflectionForm reflectionForm, HttpServletRequest request) { + + //initial Session Map + SessionMap sessionMap = new SessionMap<>(); + request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); + + //save toolContentID into HTTPSession + ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, AttributeNames.PARAM_MODE, true); + + Long sessionId = new Long(request.getParameter(SpreadsheetConstants.PARAM_TOOL_SESSION_ID)); + + request.setAttribute(SpreadsheetConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + request.setAttribute(AttributeNames.ATTR_MODE, mode); + request.setAttribute(AttributeNames.PARAM_TOOL_SESSION_ID, sessionId); + + //get back the spreadsheet and item list and display them on page + SpreadsheetUser spreadsheetUser = null; + if (mode != null && mode.isTeacher()) { + // monitoring mode - user is specified in URL + // spreadsheetUser may be null if the user was force completed. + spreadsheetUser = getSpecifiedUser(service, sessionId, + WebUtil.readIntParam(request, AttributeNames.PARAM_USER_ID, false)); + } else { + spreadsheetUser = getCurrentUser(service, sessionId); + } + + Spreadsheet spreadsheet; + spreadsheet = service.getSpreadsheetBySessionId(sessionId); + + //check whehter finish lock is on/off + boolean lock = spreadsheet.getLockWhenFinished() && spreadsheetUser != null + && spreadsheetUser.isSessionFinished(); + + // get notebook entry + String entryText = new String(); + if (spreadsheetUser != null) { + NotebookEntry notebookEntry = service.getEntry(sessionId, CoreNotebookConstants.NOTEBOOK_TOOL, + SpreadsheetConstants.TOOL_SIGNATURE, spreadsheetUser.getUserId().intValue()); + if (notebookEntry != null) { + entryText = notebookEntry.getEntry(); + } + } + + //basic information + sessionMap.put(SpreadsheetConstants.ATTR_TITLE, spreadsheet.getTitle()); + sessionMap.put(SpreadsheetConstants.ATTR_RESOURCE_INSTRUCTION, spreadsheet.getInstructions()); + sessionMap.put(SpreadsheetConstants.ATTR_FINISH_LOCK, lock); + sessionMap.put(SpreadsheetConstants.ATTR_LOCK_ON_FINISH, spreadsheet.getLockWhenFinished()); + sessionMap.put(SpreadsheetConstants.ATTR_USER_FINISHED, + spreadsheetUser != null && spreadsheetUser.isSessionFinished()); + + sessionMap.put(AttributeNames.PARAM_TOOL_SESSION_ID, sessionId); + sessionMap.put(AttributeNames.ATTR_MODE, mode); + //reflection information + sessionMap.put(SpreadsheetConstants.ATTR_REFLECTION_ON, spreadsheet.isReflectOnActivity()); + sessionMap.put(SpreadsheetConstants.ATTR_REFLECTION_INSTRUCTION, spreadsheet.getReflectInstructions()); + sessionMap.put(SpreadsheetConstants.ATTR_REFLECTION_ENTRY, entryText); + + //add define later support + if (spreadsheet.isDefineLater()) { + return "pages/learning/definelater"; + } + + //set contentInUse flag to true + if (!spreadsheet.isContentInUse()) { + spreadsheet.setContentInUse(true); + service.saveOrUpdateSpreadsheet(spreadsheet); + } + + String code; + if (spreadsheet.isLearnerAllowedToSave() && (spreadsheetUser.getUserModifiedSpreadsheet() != null)) { + code = spreadsheetUser.getUserModifiedSpreadsheet().getUserModifiedSpreadsheet(); + } else { + code = spreadsheet.getCode(); + } + sessionMap.put(SpreadsheetConstants.ATTR_CODE, HtmlUtils.htmlEscape(code)); + sessionMap.put(SpreadsheetConstants.ATTR_RESOURCE, spreadsheet); + + if ((spreadsheetUser != null) && (spreadsheetUser.getUserModifiedSpreadsheet() != null) + && (spreadsheetUser.getUserModifiedSpreadsheet().getMark() != null)) { + request.setAttribute(SpreadsheetConstants.ATTR_USER_IS_MARKED, true); + if ((spreadsheetUser.getUserModifiedSpreadsheet().getMark().getDateMarksReleased() != null)) { + request.setAttribute(SpreadsheetConstants.ATTR_USER_MARK, + spreadsheetUser.getUserModifiedSpreadsheet().getMark()); + } + } else { + request.setAttribute(SpreadsheetConstants.ATTR_USER_IS_MARKED, false); + } + + ActivityPositionDTO activityPosition = LearningWebUtil.putActivityPositionInRequestByToolSessionId(sessionId, + request, applicationContext.getServletContext()); + sessionMap.put(AttributeNames.ATTR_ACTIVITY_POSITION, activityPosition); + + return "pages/learning/learning"; + } + + /** + * Finish learning session. + */ + @RequestMapping("/saveUserSpreadsheet") + public String saveUserSpreadsheet(@ModelAttribute ReflectionForm reflectionForm, HttpServletRequest request) { + + //get back SessionMap + String sessionMapID = request.getParameter(SpreadsheetConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession() + .getAttribute(sessionMapID); + + //get mode and ToolSessionID from sessionMAP + ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE); + Long sessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); + boolean userFinished = (Boolean) sessionMap.get(SpreadsheetConstants.ATTR_USER_FINISHED); + + //save learner changes in spreadsheet if such option is activated in spreadsheet + Spreadsheet spreadsheet = (Spreadsheet) sessionMap.get(SpreadsheetConstants.ATTR_RESOURCE); + Spreadsheet spreadsheetPO = service.getSpreadsheetByContentId(spreadsheet.getContentId()); + if (spreadsheetPO.isLearnerAllowedToSave() && !mode.isTeacher() + && !(spreadsheet.getLockWhenFinished() && userFinished)) { + + SpreadsheetUser spreadsheetUser = getCurrentUser(service, sessionId); + UserModifiedSpreadsheet userModifiedSpreadsheet = spreadsheetUser.getUserModifiedSpreadsheet(); + + if (spreadsheetUser.getUserModifiedSpreadsheet() == null + || spreadsheetUser.getUserModifiedSpreadsheet().getMark() == null) { + if (userModifiedSpreadsheet == null) { + userModifiedSpreadsheet = new UserModifiedSpreadsheet(); + } + String code = WebUtil.readStrParam(request, SpreadsheetConstants.ATTR_CODE); + userModifiedSpreadsheet.setUserModifiedSpreadsheet(code); + spreadsheetUser.setUserModifiedSpreadsheet(userModifiedSpreadsheet); + service.saveOrUpdateUser(spreadsheetUser); + } + } + + String typeOfAction = WebUtil.readStrParam(request, "typeOfAction"); + String conf; + if ("finishSession".equals(typeOfAction)) { + conf = "finishSession.do"; + } else if ("continueReflect".equals(typeOfAction)) { + conf = "newReflection.do"; + } else { + conf = "start.do"; + } + + String redirect = "redirect:/learning/" + conf; + redirect = WebUtil.appendParameterToURL(redirect, SpreadsheetConstants.ATTR_SESSION_MAP_ID, sessionMapID); + redirect = WebUtil.appendParameterToURL(redirect, AttributeNames.PARAM_TOOL_SESSION_ID, sessionId.toString()); + redirect = WebUtil.appendParameterToURL(redirect, AttributeNames.ATTR_MODE, mode.toString()); + return redirect; + } + + /** + * Finish learning session. + */ + @RequestMapping("/finish") + public String finish(@ModelAttribute ReflectionForm reflectionForm, HttpServletRequest request) { + + //get back SessionMap + String sessionMapID = request.getParameter(SpreadsheetConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession() + .getAttribute(sessionMapID); + + //get mode and ToolSessionID from sessionMAP + Long sessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); + + // get sessionId from HttpServletRequest + String nextActivityUrl = null; + try { + HttpSession ss = SessionManager.getSession(); + UserDTO userDTO = (UserDTO) ss.getAttribute(AttributeNames.USER); + Long userID = new Long(userDTO.getUserID().longValue()); + + nextActivityUrl = service.finishToolSession(sessionId, userID); + request.setAttribute(SpreadsheetConstants.ATTR_NEXT_ACTIVITY_URL, nextActivityUrl); + } catch (SpreadsheetApplicationException e) { + log.error("Failed get next activity url:" + e.getMessage()); + } + + return "pages/learning/finish"; + } + + /** + * Display empty reflection form. + */ + @RequestMapping("/newReflection") + public String newReflection(@ModelAttribute ReflectionForm reflectionForm, HttpServletRequest request) { + + //get session value + String sessionMapID = WebUtil.readStrParam(request, SpreadsheetConstants.ATTR_SESSION_MAP_ID); + + HttpSession ss = SessionManager.getSession(); + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + + reflectionForm.setUserID(user.getUserID()); + reflectionForm.setSessionMapID(sessionMapID); + + SessionMap sessionMap = (SessionMap) request.getSession() + .getAttribute(sessionMapID); + Long toolSessionID = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); + NotebookEntry entry = service.getEntry(toolSessionID, CoreNotebookConstants.NOTEBOOK_TOOL, + SpreadsheetConstants.TOOL_SIGNATURE, user.getUserID()); + + if (entry != null) { + reflectionForm.setEntryText(entry.getEntry()); + } + + return "pages/learning/notebook"; + } + + /** + * Submit reflection form input database. + */ + @RequestMapping(path = "/submitReflection", method = RequestMethod.POST) + public String submitReflection(@ModelAttribute ReflectionForm reflectionForm, HttpServletRequest request) { + + Integer userId = reflectionForm.getUserID(); + + String sessionMapID = WebUtil.readStrParam(request, SpreadsheetConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession() + .getAttribute(sessionMapID); + Long sessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); + + // check for existing notebook entry + NotebookEntry entry = service.getEntry(sessionId, CoreNotebookConstants.NOTEBOOK_TOOL, + SpreadsheetConstants.TOOL_SIGNATURE, userId); + + if (entry == null) { + // create new entry + service.createNotebookEntry(sessionId, CoreNotebookConstants.NOTEBOOK_TOOL, + SpreadsheetConstants.TOOL_SIGNATURE, userId, reflectionForm.getEntryText()); + } else { + // update existing entry + entry.setEntry(reflectionForm.getEntryText()); + entry.setLastModified(new Date()); + service.updateEntry(entry); + } + + return finish(reflectionForm, request); + } + + //************************************************************************************* + // Private methods + //************************************************************************************* + + private SpreadsheetUser getCurrentUser(ISpreadsheetService service, Long sessionId) { + //try to get form system session + HttpSession ss = SessionManager.getSession(); + //get back login user DTO + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + SpreadsheetUser spreadsheetUser = service.getUserByIDAndSession(new Long(user.getUserID().intValue()), + sessionId); + + if (spreadsheetUser == null) { + SpreadsheetSession session = service.getSessionBySessionId(sessionId); + spreadsheetUser = new SpreadsheetUser(user, session); + service.saveOrUpdateUser(spreadsheetUser); + } + return spreadsheetUser; + } + + private SpreadsheetUser getSpecifiedUser(ISpreadsheetService service, Long sessionId, Integer userId) { + SpreadsheetUser spreadsheetUser = service.getUserByIDAndSession(new Long(userId.intValue()), sessionId); + if (spreadsheetUser == null) { + log.error("Unable to find specified user for spreadsheet activity. Screens are likely to fail. SessionId=" + + sessionId + " UserId=" + userId); + } + return spreadsheetUser; + } +} Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/controller/MonitoringController.java =================================================================== diff -u --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/controller/MonitoringController.java (revision 0) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/controller/MonitoringController.java (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -0,0 +1,425 @@ +/**************************************************************** + * 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 + * **************************************************************** + */ + +package org.lamsfoundation.lams.tool.spreadsheet.web.controller; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.lamsfoundation.lams.tool.spreadsheet.SpreadsheetConstants; +import org.lamsfoundation.lams.tool.spreadsheet.dto.StatisticDTO; +import org.lamsfoundation.lams.tool.spreadsheet.dto.Summary; +import org.lamsfoundation.lams.tool.spreadsheet.model.Spreadsheet; +import org.lamsfoundation.lams.tool.spreadsheet.model.SpreadsheetMark; +import org.lamsfoundation.lams.tool.spreadsheet.model.SpreadsheetSession; +import org.lamsfoundation.lams.tool.spreadsheet.model.SpreadsheetUser; +import org.lamsfoundation.lams.tool.spreadsheet.service.ISpreadsheetService; +import org.lamsfoundation.lams.tool.spreadsheet.web.form.MarkForm; +import org.lamsfoundation.lams.util.MessageService; +import org.lamsfoundation.lams.util.NumberUtil; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.util.AttributeNames; +import org.lamsfoundation.lams.web.util.SessionMap; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Controller; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.util.HtmlUtils; + +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.JsonNodeFactory; +import com.fasterxml.jackson.databind.node.ObjectNode; + +@Controller +@RequestMapping("/monitoring") +public class MonitoringController { + + public static Logger log = Logger.getLogger(MonitoringController.class); + + @Autowired + @Qualifier("spreadsheetService") + private ISpreadsheetService service; + + @Autowired + @Qualifier("spreadsheetMessageService") + private MessageService messageService; + + @RequestMapping("/summary") + public String summary(HttpServletRequest request, HttpServletResponse response) { + //initial Session Map + SessionMap sessionMap = new SessionMap(); + request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); + request.setAttribute(SpreadsheetConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + + Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); + List summaryList = service.getSummary(contentId); + + List statisticList = service.getStatistics(contentId); + request.setAttribute(SpreadsheetConstants.ATTR_STATISTIC_LIST, statisticList); + + Spreadsheet spreadsheet = service.getSpreadsheetByContentId(contentId); + + //cache into sessionMap + sessionMap.put(SpreadsheetConstants.ATTR_SUMMARY_LIST, summaryList); + sessionMap.put(SpreadsheetConstants.PAGE_EDITABLE, spreadsheet.isContentInUse()); + sessionMap.put(SpreadsheetConstants.ATTR_RESOURCE, spreadsheet); + sessionMap.put(SpreadsheetConstants.ATTR_TOOL_CONTENT_ID, contentId); + sessionMap.put(AttributeNames.PARAM_CONTENT_FOLDER_ID, + WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID)); + sessionMap.put(SpreadsheetConstants.ATTR_IS_GROUPED_ACTIVITY, service.isGroupedActivity(contentId)); + + return "pages/monitoring/monitoring"; + } + + @RequestMapping(path = "/getUsers", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + @ResponseBody + public String getUsers(HttpServletRequest request, HttpServletResponse response) throws IOException { + + Long sessionID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID)); + Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); + + // paging parameters of tablesorter + int size = WebUtil.readIntParam(request, "size"); + int page = WebUtil.readIntParam(request, "page"); + Integer sortByName = WebUtil.readIntParam(request, "column[0]", true); + Integer sortByMarked = WebUtil.readIntParam(request, "column[1]", true); + String searchString = request.getParameter("fcol[0]"); + + int sorting = SpreadsheetConstants.SORT_BY_NO; + if (sortByName != null) { + sorting = sortByName.equals(0) ? SpreadsheetConstants.SORT_BY_USERNAME_ASC + : SpreadsheetConstants.SORT_BY_USERNAME_DESC; + } else if (sortByMarked != null) { + sorting = sortByMarked.equals(0) ? SpreadsheetConstants.SORT_BY_MARKED_ASC + : SpreadsheetConstants.SORT_BY_MARKED_DESC; + } + + //return user list according to the given sessionID + Spreadsheet spreadsheet = service.getSpreadsheetByContentId(contentId); + List users = service.getUsersForTablesorter(sessionID, page, size, sorting, searchString, + spreadsheet.isReflectOnActivity()); + + ArrayNode rows = JsonNodeFactory.instance.arrayNode(); + ObjectNode responsedata = JsonNodeFactory.instance.objectNode(); + responsedata.put("total_rows", service.getCountUsersBySession(sessionID, searchString)); + + for (Object[] userAndReflection : users) { + + ObjectNode responseRow = JsonNodeFactory.instance.objectNode(); + + SpreadsheetUser user = (SpreadsheetUser) userAndReflection[0]; + responseRow.put(SpreadsheetConstants.ATTR_USER_UID, user.getUid()); + responseRow.put(SpreadsheetConstants.ATTR_USER_ID, user.getUserId()); + responseRow.put(SpreadsheetConstants.ATTR_USER_NAME, HtmlUtils.htmlEscape(user.getFullUsername())); + if (user.getUserModifiedSpreadsheet() != null) { + responseRow.put("userModifiedSpreadsheet", "true"); + if (user.getUserModifiedSpreadsheet().getMark() != null) { + responseRow.put("mark", + NumberUtil.formatLocalisedNumber(user.getUserModifiedSpreadsheet().getMark().getMarks(), + request.getLocale(), SpreadsheetConstants.MARK_NUM_DEC_PLACES)); + } + } + + if (userAndReflection.length > 1 && userAndReflection[1] != null) { + responseRow.put("reflection", HtmlUtils.htmlEscape((String) userAndReflection[1])); + } + + rows.add(responseRow); + } + responsedata.set("rows", rows); + + return responsedata.toString(); + } + + /** + * AJAX call to refresh statistic page. + */ + @RequestMapping("/doStatistic") + public String doStatistic(HttpServletRequest request) { + Long contentId = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); + + List statisticList = service.getStatistics(contentId); + request.setAttribute(SpreadsheetConstants.ATTR_STATISTIC_LIST, statisticList); + request.setAttribute(SpreadsheetConstants.ATTR_IS_GROUPED_ACTIVITY, service.isGroupedActivity(contentId)); + + return "pages/monitoring/parts/statisticspart"; + } + + /** + * View mark of all learner from same tool content ID. + */ + @RequestMapping("/viewAllMarks") + public String viewAllMarks(HttpServletRequest request) { + + Long sessionId = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID)); + + //return FileDetailsDTO list according to the given sessionID + List userList = service.getUserListBySessionId(sessionId); + request.setAttribute(AttributeNames.PARAM_TOOL_SESSION_ID, sessionId); + request.setAttribute(SpreadsheetConstants.ATTR_USER_LIST, userList); + request.setAttribute(SpreadsheetConstants.ATTR_SESSION_MAP_ID, + WebUtil.readStrParam(request, SpreadsheetConstants.ATTR_SESSION_MAP_ID)); + + return "pages/monitoring/parts/viewallmarks"; + } + + /** + * Release mark + */ + @RequestMapping("/releaseMarks") + @ResponseBody + public String releaseMarks(HttpServletRequest request, HttpServletResponse response) { + + //get service then update report table + Long sessionID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID)); + + service.releaseMarksForSession(sessionID); + try { + response.setContentType("text/html;charset=utf-8"); + PrintWriter out = response.getWriter(); + SpreadsheetSession session = service.getSessionBySessionId(sessionID); + String sessionName = ""; + if (session != null) { + sessionName = session.getSessionName(); + } + out.write(messageService.getMessage("msg.mark.released", new String[] { sessionName })); + out.flush(); + } catch (IOException e) { + } + + return null; + } + + /** + * Download Spreadsheet marks by MS Excel file format. + */ + @RequestMapping("/downloadMarks") + public String downloadMarks(HttpServletRequest request, HttpServletResponse response) { + + Long sessionID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID)); + //return user list according to the given sessionID + List userList = service.getUserListBySessionId(sessionID); + + //construct Excel file format and download + String errors = null; + try { + //create an empty excel file + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet sheet = wb.createSheet("Marks"); + sheet.setColumnWidth(0, 5000); + sheet.setColumnWidth(2, 8000); + HSSFRow row; + HSSFCell cell; + + int idx = 0; + + row = sheet.createRow(idx++); + cell = row.createCell(0); + cell.setCellValue(messageService.getMessage("label.monitoring.downloadmarks.learner.name")); + + cell = row.createCell(1); + cell.setCellValue(messageService.getMessage("label.monitoring.downloadmarks.marks")); + + cell = row.createCell(2); + cell.setCellValue(messageService.getMessage("label.monitoring.downloadmarks.comments")); + + for (SpreadsheetUser user : userList) { + if (user.getUserModifiedSpreadsheet() != null && user.getUserModifiedSpreadsheet().getMark() != null) { + SpreadsheetMark mark = user.getUserModifiedSpreadsheet().getMark(); + row = sheet.createRow(idx++); + + int count = 0; + + cell = row.createCell(count++); + cell.setCellValue(user.getLoginName()); + + //sheet.setColumnWidth(count,8000); + + cell = row.createCell(count++); + if (mark.getMarks() != null) { + cell.setCellValue(NumberUtil.formatLocalisedNumber(mark.getMarks(), request.getLocale(), + SpreadsheetConstants.MARK_NUM_DEC_PLACES)); + } else { + cell.setCellValue(""); + } + + cell = row.createCell(count++); + cell.setCellValue(mark.getComments()); + } + } + + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + wb.write(bos); + + //construct download file response header + String fileName = "marks" + sessionID + ".xls"; + String mineType = "application/vnd.ms-excel"; + String header = "attachment; filename=\"" + fileName + "\";"; + response.setContentType(mineType); + response.setHeader("Content-Disposition", header); + + byte[] data = bos.toByteArray(); + response.getOutputStream().write(data, 0, data.length); + response.getOutputStream().flush(); + } catch (Exception e) { + MonitoringController.log.error(e); + errors = "monitoring.download.error"; + } + + if (errors != null) { + try { + PrintWriter out = response.getWriter(); + out.write(errors); + out.flush(); + } catch (IOException e) { + } + } + + return null; + } + + @RequestMapping("/editMark") + public String editMark(@ModelAttribute MarkForm markForm, HttpServletRequest request, + HttpServletResponse response) { + String sessionMapID = WebUtil.readStrParam(request, SpreadsheetConstants.ATTR_SESSION_MAP_ID); + Long userUid = WebUtil.readLongParam(request, SpreadsheetConstants.ATTR_USER_UID); + SpreadsheetUser user = service.getUser(userUid); + + // if((user == null) || (user.getUserModifiedSpreadsheet() == null)){ + // ActionErrors errors = new ActionErrors(); + // errors.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage(SpreadsheetConstants.ERROR_MSG_MARKS_BLANK)); + // this.addErrors(request,errors); + // return mapping.findForward("error"); + // } + + markForm.setSessionMapID(sessionMapID); + markForm.setUserUid(user.getUid()); + markForm.setUserName(user.getFullUsername()); + + String code = null; + if (user.getUserModifiedSpreadsheet() != null) { + markForm.setCode(user.getUserModifiedSpreadsheet().getUserModifiedSpreadsheet()); + + if (user.getUserModifiedSpreadsheet().getMark() != null) { + SpreadsheetMark mark = user.getUserModifiedSpreadsheet().getMark(); + markForm.setMarks(NumberUtil.formatLocalisedNumber(mark.getMarks(), request.getLocale(), + SpreadsheetConstants.MARK_NUM_DEC_PLACES)); + markForm.setComments(mark.getComments()); + } + + } + request.setAttribute(SpreadsheetConstants.ATTR_CODE, code); + + return "pages/monitoring/parts/editmark"; + } + + @RequestMapping(path = "/saveMark", method = RequestMethod.POST) + public String saveMark(@ModelAttribute MarkForm markForm, HttpServletRequest request, + HttpServletResponse response) { + + Float markFloat = null; + String markComment = null; + + // get the mark details, validating as we go. + MultiValueMap errorMap = new LinkedMultiValueMap<>(); + String markStr = markForm.getMarks(); + if (StringUtils.isBlank(markStr)) { + errorMap.add("GLOBAL", messageService.getMessage("error.summary.marks.blank")); + } else { + try { + markFloat = NumberUtil.getLocalisedFloat(markStr, request.getLocale()); + } catch (Exception e) { + errorMap.add("GLOBAL", messageService.getMessage("error.summary.marks.invalid.number")); + } + } + + markComment = markForm.getComments(); + if (StringUtils.isBlank(markComment)) { + errorMap.add("GLOBAL", messageService.getMessage("error.summary.comments.blank")); + } + + if (!errorMap.isEmpty()) { + request.setAttribute("errorMap", errorMap); + return "pages/monitoring/parts/editmark"; + } + + // passed validation so proceed to save + Long userUid = markForm.getUserUid(); + SpreadsheetUser user = service.getUser(userUid); + if (user != null && user.getUserModifiedSpreadsheet() != null) { + //check whether it is "edit(old item)" or "add(new item)" + SpreadsheetMark mark; + if (user.getUserModifiedSpreadsheet().getMark() == null) { //new mark + mark = new SpreadsheetMark(); + user.getUserModifiedSpreadsheet().setMark(mark); + } else { //edit + mark = user.getUserModifiedSpreadsheet().getMark(); + } + + mark.setMarks(markFloat); + mark.setComments(markComment); + + service.saveOrUpdateUserModifiedSpreadsheet(user.getUserModifiedSpreadsheet()); + } + + request.setAttribute("mark", NumberUtil.formatLocalisedNumber(markFloat, request.getLocale(), + SpreadsheetConstants.MARK_NUM_DEC_PLACES)); // reduce it to the standard number of decimal places for redisplay + request.setAttribute("userUid", userUid); + + //set session map ID so that itemlist.jsp can get sessionMAP + request.setAttribute(SpreadsheetConstants.ATTR_SESSION_MAP_ID, markForm.getSessionMapID()); + + return "pages/monitoring/parts/updatemarkaftersave"; + } + + // ************************************************************************************* + // Private method + // ************************************************************************************* + + /** + * Save statistic information into request + */ + private void statistic(HttpServletRequest request, List submitFilesSessionList) { + Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); + List statisticList = service.getStatistics(contentId); + + } + +} Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/controller/ViewItemController.java =================================================================== diff -u --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/controller/ViewItemController.java (revision 0) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/controller/ViewItemController.java (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -0,0 +1,65 @@ +/**************************************************************** + * 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 + * **************************************************************** + */ + +package org.lamsfoundation.lams.tool.spreadsheet.web.controller; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.tool.spreadsheet.SpreadsheetConstants; +import org.lamsfoundation.lams.tool.spreadsheet.model.SpreadsheetUser; +import org.lamsfoundation.lams.tool.spreadsheet.service.ISpreadsheetService; +import org.lamsfoundation.lams.util.WebUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class ViewItemController { + + private static final Logger log = Logger.getLogger(ViewItemController.class); + + @Autowired + @Qualifier("spreadsheetService") + private ISpreadsheetService service; + + /** + * Display main frame to display instrcution and item content. + */ + @RequestMapping("/reviewItem") + public String reviewItem(HttpServletRequest request) { + + Long userId = WebUtil.readLongParam(request, SpreadsheetConstants.ATTR_USER_UID); + SpreadsheetUser user = service.getUser(userId); + request.setAttribute(SpreadsheetConstants.ATTR_USER_NAME, user.getFullUsername()); + String code = null; + if (user.getUserModifiedSpreadsheet() != null) { + code = user.getUserModifiedSpreadsheet().getUserModifiedSpreadsheet(); + } + request.setAttribute("code", code); + + return "pages/reviewitem/reviewitem"; + } + +} Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/form/MarkForm.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/form/MarkForm.java (.../MarkForm.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/form/MarkForm.java (.../MarkForm.java) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -20,18 +20,15 @@ * **************************************************************** */ - package org.lamsfoundation.lams.tool.spreadsheet.web.form; -import org.apache.struts.action.ActionForm; - /** * Mark Form. * * * User: Andrey Balan */ -public class MarkForm extends ActionForm { +public class MarkForm { private static final long serialVersionUID = -6028705988278223361L; @@ -76,19 +73,19 @@ } public String getCode() { - return code; + return code; } public void setCode(String code) { - this.code = code; + this.code = code; } public String getUserName() { - return userName; + return userName; } public void setUserName(String userName) { - this.userName = userName; + this.userName = userName; } } Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/form/ReflectionForm.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/form/ReflectionForm.java (.../ReflectionForm.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/form/ReflectionForm.java (.../ReflectionForm.java) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -21,19 +21,17 @@ * **************************************************************** */ - package org.lamsfoundation.lams.tool.spreadsheet.web.form; import org.apache.log4j.Logger; -import org.apache.struts.validator.ValidatorForm; /** * * Reflection Form. * * */ -public class ReflectionForm extends ValidatorForm { +public class ReflectionForm { private static final long serialVersionUID = -9054365604649146735L; private static Logger logger = Logger.getLogger(ReflectionForm.class.getName()); Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/form/SpreadsheetForm.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/form/SpreadsheetForm.java (.../SpreadsheetForm.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/form/SpreadsheetForm.java (.../SpreadsheetForm.java) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -27,10 +27,8 @@ import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; -import org.apache.struts.action.ActionForm; -import org.apache.struts.action.ActionMapping; -import org.apache.struts.upload.FormFile; import org.lamsfoundation.lams.tool.spreadsheet.model.Spreadsheet; +import org.springframework.web.multipart.MultipartFile; /** * @@ -39,7 +37,7 @@ * * User: Andrey Balan */ -public class SpreadsheetForm extends ActionForm { +public class SpreadsheetForm { private static final long serialVersionUID = 3599879328307492312L; private static Logger logger = Logger.getLogger(SpreadsheetForm.class.getName()); @@ -48,8 +46,8 @@ private String sessionMapID; private String contentFolderID; private int currentTab; - private FormFile offlineFile; - private FormFile onlineFile; + private MultipartFile offlineFile; + private MultipartFile onlineFile; private Spreadsheet spreadsheet; @@ -67,12 +65,11 @@ } } - @Override - public void reset(ActionMapping mapping, HttpServletRequest request) { - String param = mapping.getParameter(); + public void reset(HttpServletRequest request) { + String param = (String) request.getAttribute("action"); //if it is start page, all data read out from database or current session //so need not reset checkbox to refresh value! - if (!StringUtils.equals(param, "start") && !StringUtils.equals(param, "initPage")) { + if (!StringUtils.equals(param, "start.do") && !StringUtils.equals(param, "initPage.do")) { spreadsheet.setLockWhenFinished(false); spreadsheet.setDefineLater(false); spreadsheet.setLearnerAllowedToSave(true); @@ -89,19 +86,19 @@ this.currentTab = currentTab; } - public FormFile getOfflineFile() { + public MultipartFile getOfflineFile() { return offlineFile; } - public void setOfflineFile(FormFile offlineFile) { + public void setOfflineFile(MultipartFile offlineFile) { this.offlineFile = offlineFile; } - public FormFile getOnlineFile() { + public MultipartFile getOnlineFile() { return onlineFile; } - public void setOnlineFile(FormFile onlineFile) { + public void setOnlineFile(MultipartFile onlineFile) { this.onlineFile = onlineFile; } Index: lams_tool_spreadsheet/web/WEB-INF/spring-servlet.xml =================================================================== diff -u --- lams_tool_spreadsheet/web/WEB-INF/spring-servlet.xml (revision 0) +++ lams_tool_spreadsheet/web/WEB-INF/spring-servlet.xml (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -0,0 +1,17 @@ + + + + + + + + + + + \ No newline at end of file Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/WEB-INF/struts-config.xml'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_spreadsheet/web/WEB-INF/tags/AuthoringButton.tag =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/WEB-INF/tags/AuthoringButton.tag (.../AuthoringButton.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/WEB-INF/tags/AuthoringButton.tag (.../AuthoringButton.tag) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -32,7 +32,6 @@ <%@ tag body-content="scriptless" %> <%@ taglib uri="tags-core" prefix="c" %> <%@ taglib uri="tags-fmt" prefix="fmt" %> -<%@ taglib uri="tags-html" prefix="html" %> <%@ taglib uri="tags-lams" prefix="lams"%> <%@ attribute name="formID" required="true" rtexprvalue="true" %> @@ -123,11 +122,11 @@ } \ No newline at end of file Index: lams_tool_spreadsheet/web/WEB-INF/tags/AuthoringRatingAllStyleCriteria.tag =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/WEB-INF/tags/AuthoringRatingAllStyleCriteria.tag (.../AuthoringRatingAllStyleCriteria.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/WEB-INF/tags/AuthoringRatingAllStyleCriteria.tag (.../AuthoringRatingAllStyleCriteria.tag) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -8,7 +8,6 @@ <%@ tag body-content="scriptless" %> <%@ taglib uri="tags-core" prefix="c" %> <%@ taglib uri="tags-fmt" prefix="fmt" %> -<%@ taglib uri="tags-html" prefix="html" %> <%@ taglib uri="tags-lams" prefix="lams"%> <%@ taglib uri="tags-function" prefix="fn" %> Index: lams_tool_spreadsheet/web/WEB-INF/tags/AuthoringRatingCriteria.tag =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/WEB-INF/tags/AuthoringRatingCriteria.tag (.../AuthoringRatingCriteria.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/WEB-INF/tags/AuthoringRatingCriteria.tag (.../AuthoringRatingCriteria.tag) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -8,9 +8,9 @@ <%@ tag body-content="scriptless" %> <%@ taglib uri="tags-core" prefix="c" %> <%@ taglib uri="tags-fmt" prefix="fmt" %> -<%@ taglib uri="tags-html" prefix="html" %> <%@ taglib uri="tags-lams" prefix="lams"%> <%@ taglib uri="tags-function" prefix="fn" %> +<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> <%@ attribute name="criterias" required="true" rtexprvalue="true" type="java.util.Collection" %> @@ -284,42 +284,38 @@ - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - + + + 1 + + + + + + + + + + - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - + + + + + + + + + + + + + Index: lams_tool_spreadsheet/web/WEB-INF/tags/CommentsAuthor.tag =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/WEB-INF/tags/CommentsAuthor.tag (.../CommentsAuthor.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/WEB-INF/tags/CommentsAuthor.tag (.../CommentsAuthor.tag) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -42,23 +42,21 @@
-     -   +     +  
Index: lams_tool_spreadsheet/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -4,6 +4,7 @@ <%@ taglib uri="tags-lams" prefix="lams"%> <%@ attribute name="type" required="true" rtexprvalue="true"%> +<%@ attribute name="formID" required="false" rtexprvalue="true"%> <%@ attribute name="style" required="false" rtexprvalue="true"%> <%@ attribute name="title" required="false" rtexprvalue="true"%> <%@ attribute name="titleHelpURL" required="false" rtexprvalue="true"%> @@ -88,8 +89,8 @@ - - + + ${toolForm.toolSessionID} @@ -434,4 +435,4 @@
- + \ No newline at end of file Index: lams_tool_spreadsheet/web/WEB-INF/tags/Rating.tag =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/WEB-INF/tags/Rating.tag (.../Rating.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/WEB-INF/tags/Rating.tag (.../Rating.tag) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -8,7 +8,6 @@ <%@ tag body-content="scriptless" %> <%@ taglib uri="tags-core" prefix="c" %> <%@ taglib uri="tags-fmt" prefix="fmt" %> -<%@ taglib uri="tags-html" prefix="html" %> <%@ taglib uri="tags-lams" prefix="lams"%> <%@ taglib uri="tags-function" prefix="fn" %> Index: lams_tool_spreadsheet/web/WEB-INF/tags/StyledRating.tag =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/WEB-INF/tags/StyledRating.tag (.../StyledRating.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/WEB-INF/tags/StyledRating.tag (.../StyledRating.tag) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -8,7 +8,6 @@ <%@ tag body-content="scriptless" %> <%@ taglib uri="tags-core" prefix="c" %> <%@ taglib uri="tags-fmt" prefix="fmt" %> -<%@ taglib uri="tags-html" prefix="html" %> <%@ taglib uri="tags-lams" prefix="lams"%> <%@ taglib uri="tags-function" prefix="fn" %> Index: lams_tool_spreadsheet/web/WEB-INF/tags/TabBody.tag =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/WEB-INF/tags/TabBody.tag (.../TabBody.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/WEB-INF/tags/TabBody.tag (.../TabBody.tag) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -34,7 +34,6 @@ <%@ attribute name="titleKey" required="false" rtexprvalue="true"%> <%@ attribute name="page" required="false" rtexprvalue="true"%> <%@ taglib uri="tags-core" prefix="c"%> -<%@ taglib uri="tags-bean" prefix="bean"%> Index: lams_tool_spreadsheet/web/WEB-INF/tags/TabBodyArea.tag =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/WEB-INF/tags/TabBodyArea.tag (.../TabBodyArea.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/WEB-INF/tags/TabBodyArea.tag (.../TabBodyArea.tag) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -30,7 +30,6 @@ %> <%@ taglib uri="tags-core" prefix="c"%> -<%@ taglib uri="tags-bean" prefix="bean"%>
Index: lams_tool_spreadsheet/web/WEB-INF/tags/TextSearch.tag =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/WEB-INF/tags/TextSearch.tag (.../TextSearch.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/WEB-INF/tags/TextSearch.tag (.../TextSearch.tag) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -32,12 +32,11 @@ <%@ tag body-content="scriptless" %> <%@ taglib uri="tags-core" prefix="c" %> <%@ taglib uri="tags-fmt" prefix="fmt" %> -<%@ taglib uri="tags-html" prefix="html" %> +<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> <%@ taglib uri="tags-lams" prefix="lams" %> <%-- Required attributes --%> <%@ attribute name="sessionMapID" required="true" rtexprvalue="true" %> -<%@ attribute name="wrapInFormTag" required="true" rtexprvalue="true" %> <%-- Optional attributes --%> <%@ attribute name="action" required="false" rtexprvalue="true" %> @@ -53,10 +52,10 @@ <%-- Default value for message key --%> - + - + @@ -85,52 +84,40 @@ - -
- - -

- - - - - - - - - - - - - - - - - -
- - - -
- - - -
- - - -
- - - -
- - - - - - - - - + +

+ + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
\ No newline at end of file Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/WEB-INF/tlds/struts/struts-bean-el.tld'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/WEB-INF/tlds/struts/struts-bean.tld'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/WEB-INF/tlds/struts/struts-html-el.tld'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/WEB-INF/tlds/struts/struts-html.tld'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/WEB-INF/tlds/struts/struts-logic-el.tld'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/WEB-INF/tlds/struts/struts-logic.tld'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/WEB-INF/tlds/struts/struts-nested.tld'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/WEB-INF/tlds/struts/struts-tiles-el.tld'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/WEB-INF/tlds/struts/struts-tiles.tld'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 977c1d91def623ad1c8d5adffb4b32c810ef1dc6 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/WEB-INF/validation.xml'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_spreadsheet/web/WEB-INF/web.xml =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/WEB-INF/web.xml (.../web.xml) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/WEB-INF/web.xml (.../web.xml) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -74,27 +74,14 @@ - action - org.apache.struts.action.ActionServlet - - config - /WEB-INF/struts-config.xml - - - debug - 999 - - - detail - 1 - - - validate - true - - 2 + spring + + org.springframework.web.servlet.DispatcherServlet + + 1 + Connector net.fckeditor.connector.ConnectorServlet @@ -123,7 +110,7 @@ - action + spring *.do @@ -140,42 +127,6 @@ - - - - tags-bean - /WEB-INF/tlds/struts/struts-bean.tld - - - tags-html - /WEB-INF/tlds/struts/struts-html.tld - - - tags-logic - /WEB-INF/tlds/struts/struts-logic.tld - - - tags-tiles - /WEB-INF/tlds/struts/struts-tiles.tld - - - - tags-bean-el - /WEB-INF/tlds/struts/struts-bean-el.tld - - - tags-html-el - /WEB-INF/tlds/struts/struts-html-el.tld - - - tags-logic-el - /WEB-INF/tlds/struts/struts-logic-el.tld - - - tags-tiles-el - /WEB-INF/tlds/struts/struts-tiles-el.tld - - Index: lams_tool_spreadsheet/web/common/header.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/common/header.jsp (.../header.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/common/header.jsp (.../header.jsp) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -2,14 +2,14 @@ -?lang=${pageContext.response.locale.language} +includes/javascript/simple_spreadsheet/spreadsheet_offline.html?lang=${pageContext.response.locale.language} - + Index: lams_tool_spreadsheet/web/common/messages.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/common/messages.jsp (.../messages.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/common/messages.jsp (.../messages.jsp) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -1,8 +1,11 @@ -<%-- Error Messages --%> - - - - - - - + <%@include file="/common/taglibs.jsp"%> + + + + + + + + + + Index: lams_tool_spreadsheet/web/common/tabbedheader.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/common/tabbedheader.jsp (.../tabbedheader.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/common/tabbedheader.jsp (.../tabbedheader.jsp) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -8,7 +8,7 @@ - + Index: lams_tool_spreadsheet/web/common/taglibs.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/common/taglibs.jsp (.../taglibs.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/common/taglibs.jsp (.../taglibs.jsp) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -1,11 +1,9 @@ <%@ page language="java" errorPage="/error.jsp" pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="tags-bean" prefix="bean" %> -<%@ taglib uri="tags-html" prefix="html" %> -<%@ taglib uri="tags-logic" prefix="logic" %> <%@ taglib uri="tags-function" prefix="fn" %> <%@ taglib uri="tags-core" prefix="c" %> <%@ taglib uri="tags-fmt" prefix="fmt" %> <%@ taglib uri="tags-xml" prefix="x" %> <%@ taglib uri="tags-lams" prefix="lams" %> +<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> Index: lams_tool_spreadsheet/web/pages/authoring/advance.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/pages/authoring/advance.jsp (.../advance.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/pages/authoring/advance.jsp (.../advance.jsp) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -1,36 +1,34 @@ <%@ include file="/common/taglibs.jsp"%> -
@@ -40,17 +38,17 @@
-
-
- +
Index: lams_tool_spreadsheet/web/pages/authoring/authoring.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/pages/authoring/authoring.jsp (.../authoring.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/pages/authoring/authoring.jsp (.../authoring.jsp) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -2,7 +2,7 @@ <%@ include file="/common/taglibs.jsp"%> <%@ page import="org.lamsfoundation.lams.tool.spreadsheet.SpreadsheetConstants"%> -?lang=${pageContext.response.locale.language} +includes/javascript/simple_spreadsheet/spreadsheet_offline.html?lang=${pageContext.response.locale.language} @@ -37,13 +37,11 @@ - - - - - - - + + + + + ${lang} @@ -68,14 +66,14 @@ - + - + Index: lams_tool_spreadsheet/web/pages/authoring/basic.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/pages/authoring/basic.jsp (.../basic.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/pages/authoring/basic.jsp (.../basic.jsp) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -1,19 +1,18 @@ <%@ include file="/common/taglibs.jsp"%> - - +
- +
- +
-
Index: lams_tool_spreadsheet/web/pages/authoring/start.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/pages/authoring/start.jsp (.../start.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/pages/authoring/start.jsp (.../start.jsp) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -4,13 +4,13 @@ <%@ include file="/common/taglibs.jsp" %> - - - - + + + + Index: lams_tool_spreadsheet/web/pages/learning/learning.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/pages/learning/learning.jsp (.../learning.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/pages/learning/learning.jsp (.../learning.jsp) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -110,16 +110,16 @@
- +
@@ -144,10 +144,10 @@
- - + @@ -160,9 +160,9 @@ - +
@@ -175,12 +175,12 @@ Index: lams_tool_spreadsheet/web/pages/learning/notebook.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r977c1d91def623ad1c8d5adffb4b32c810ef1dc6 --- lams_tool_spreadsheet/web/pages/learning/notebook.jsp (.../notebook.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_spreadsheet/web/pages/learning/notebook.jsp (.../notebook.jsp) (revision 977c1d91def623ad1c8d5adffb4b32c810ef1dc6) @@ -12,7 +12,7 @@ } function submitForm(methodName){ - var f = document.getElementById('messageForm'); + var f = document.getElementById('reflectionForm'); f.submit(); } @@ -22,21 +22,21 @@ - + - - - + + + <%@ include file="/common/messages.jsp"%>

- + - + @@ -45,9 +45,9 @@ - + -
+