Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java =================================================================== diff -u -r3e5c3c37a42949365e77ee650335790f6b43c718 -rc82a07c323413bc81bf2c072b7dbeafa6d9e3776 --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision 3e5c3c37a42949365e77ee650335790f6b43c718) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision c82a07c323413bc81bf2c072b7dbeafa6d9e3776) @@ -474,7 +474,7 @@ /** * @see org.lamsfoundation.lams.authoring.service.IAuthoringService#finishEditOnFly(java.lang.Long, java.lang.Integer) */ - public String finishEditOnFly(Long learningDesignID, Integer userID) throws IOException { + public String finishEditOnFly(Long learningDesignID, Integer userID, boolean cancelled) throws IOException { FlashMessage flashMessage = null; Lesson lesson = null; @@ -515,7 +515,10 @@ design = removeTempSystemGate(gate, design); /* remove inputted system gate */ } - lessonService.performMarkLessonUncompleted(lesson.getLessonId()); /* the lesson may now have additional activities on the end, so clear any completed flags */ + // LDEV-1899 only mark learners uncompleted if a change was saved + if (!cancelled) { + lessonService.performMarkLessonUncompleted(lesson.getLessonId()); /* the lesson may now have additional activities on the end, so clear any completed flags */ + } initialiseToolActivityForRuntime(design, lesson); learningDesignDAO.insertOrUpdate(design); Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java =================================================================== diff -u -rb82c7d5b3659b3eaaba97fac70acc57c6aef720a -rc82a07c323413bc81bf2c072b7dbeafa6d9e3776 --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java (.../IAuthoringService.java) (revision b82c7d5b3659b3eaaba97fac70acc57c6aef720a) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java (.../IAuthoringService.java) (revision c82a07c323413bc81bf2c072b7dbeafa6d9e3776) @@ -303,10 +303,11 @@ * * @param learningDesignID The learning_design_id of the design for which editing has finished. * @param userID user_id of the User who has finished editing the design. + * @param cancelled flag specifying whether user cancelled or saved the edit * @return wddx packet. * @throws IOException */ - public String finishEditOnFly(Long learningDesignID, Integer userID) throws IOException; + public String finishEditOnFly(Long learningDesignID, Integer userID, boolean cancelled) throws IOException; /** * Index: lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java =================================================================== diff -u -rfdbf7a3cfb10831b1ac581efa42807d3207a71ff -rc82a07c323413bc81bf2c072b7dbeafa6d9e3776 --- lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java (.../AuthoringAction.java) (revision fdbf7a3cfb10831b1ac581efa42807d3207a71ff) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java (.../AuthoringAction.java) (revision c82a07c323413bc81bf2c072b7dbeafa6d9e3776) @@ -143,8 +143,9 @@ IAuthoringService authoringService = getAuthoringService(); try { Long learningDesignID = WebUtil.readLongParam(request,"learningDesignID",false); + boolean cancelled = WebUtil.readBooleanParam(request, "cancelled", false); - wddxPacket = authoringService.finishEditOnFly(learningDesignID, getUserId()); + wddxPacket = authoringService.finishEditOnFly(learningDesignID, getUserId(), cancelled); } catch (Exception e) { wddxPacket = handleException(e, "getLearningDesignDetails", authoringService, true).serializeMessage();