Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/LearningAction.java =================================================================== diff -u -r23b5b0a587e3c4dc659729270eb0d608fb4dd982 -r43642b8c0a3103bb12afd9d98d5966c97deac8c0 --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/LearningAction.java (.../LearningAction.java) (revision 23b5b0a587e3c4dc659729270eb0d608fb4dd982) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/LearningAction.java (.../LearningAction.java) (revision 43642b8c0a3103bb12afd9d98d5966c97deac8c0) @@ -176,8 +176,7 @@ } String code; - if (spreadsheet.isLearnerAllowedToSave() && !mode.isTeacher() - && (spreadsheetUser.getUserModifiedSpreadsheet() != null)) { + if (spreadsheet.isLearnerAllowedToSave() && (spreadsheetUser.getUserModifiedSpreadsheet() != null)) { code = spreadsheetUser.getUserModifiedSpreadsheet().getUserModifiedSpreadsheet(); } else { code = spreadsheet.getCode(); @@ -228,7 +227,10 @@ && !(spreadsheet.getLockWhenFinished() && userFinished)) { SpreadsheetUser spreadsheetUser = getCurrentUser(service, sessionId); - UserModifiedSpreadsheet userModifiedSpreadsheet = new UserModifiedSpreadsheet(); + UserModifiedSpreadsheet userModifiedSpreadsheet = spreadsheetUser.getUserModifiedSpreadsheet(); + if ( userModifiedSpreadsheet == null ) { + userModifiedSpreadsheet = new UserModifiedSpreadsheet(); + } String code = WebUtil.readStrParam(request, SpreadsheetConstants.ATTR_CODE); userModifiedSpreadsheet.setUserModifiedSpreadsheet(code); spreadsheetUser.setUserModifiedSpreadsheet(userModifiedSpreadsheet);