Index: lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java =================================================================== diff -u -r242af895b7cc36e5f825a4b99862b92a5faa87ed -racf8b8aad096f0fdc9b5beada47f7cb646b59aca --- lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java (.../PedagogicalPlannerAction.java) (revision 242af895b7cc36e5f825a4b99862b92a5faa87ed) +++ lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java (.../PedagogicalPlannerAction.java) (revision acf8b8aad096f0fdc9b5beada47f7cb646b59aca) @@ -1468,8 +1468,10 @@ HttpSession session = SessionManager.getSession(); UserDTO userDto = (UserDTO) session.getAttribute(AttributeNames.USER); User user = (User) getUserManagementService().findById(User.class, userDto.getUserID()); + // the list is sorted most-recently-edited-on-top (so by the timestamp descending) Set recentLDs = user.getRecentlyModifiedLearningDesigns(); List recentNodes = new LinkedList(); + // create "dummy", almost empty nodes for (Long learningDesignId : recentLDs) { LearningDesign learningDesign = getAuthoringService().getLearningDesign(learningDesignId); @@ -1482,12 +1484,20 @@ return recentNodes; } + /** + * Adds the Learning Design to the list of recenlty edited sequences. It puts the selected LD on the top of the + * list. + * + * @param learningDesignId + */ private void updateRecentLearningDesignList(Long learningDesignId) { HttpSession session = SessionManager.getSession(); UserDTO userDto = (UserDTO) session.getAttribute(AttributeNames.USER); User user = (User) getUserManagementService().findById(User.class, userDto.getUserID()); + // the list is sorted most-recently-edited-on-top (so by the timestamp descending) Set recentLDs = user.getRecentlyModifiedLearningDesigns(); boolean ldFound = false; + // if LD is already in the list, remove it and add it again - it a way to refresh the timestamp in DB Iterator iter = recentLDs.iterator(); while (iter.hasNext()) { Long recentLD = iter.next(); @@ -1498,7 +1508,7 @@ break; } } - + // if LD was not in the list, but the list is full, remove the last entry if (!ldFound && recentLDs.size() >= CentralConstants.PLANNER_RECENT_LD_MAX_COUNT) { iter.remove(); } Index: lams_common/src/java/org/lamsfoundation/lams/planner/dto/PedagogicalPlannerSequenceNodeDTO.java =================================================================== diff -u -r242af895b7cc36e5f825a4b99862b92a5faa87ed -racf8b8aad096f0fdc9b5beada47f7cb646b59aca --- lams_common/src/java/org/lamsfoundation/lams/planner/dto/PedagogicalPlannerSequenceNodeDTO.java (.../PedagogicalPlannerSequenceNodeDTO.java) (revision 242af895b7cc36e5f825a4b99862b92a5faa87ed) +++ lams_common/src/java/org/lamsfoundation/lams/planner/dto/PedagogicalPlannerSequenceNodeDTO.java (.../PedagogicalPlannerSequenceNodeDTO.java) (revision acf8b8aad096f0fdc9b5beada47f7cb646b59aca) @@ -40,12 +40,15 @@ private Boolean locked; private List subnodes; private Long parentUid; + // which existing LD to open private Long learningDesignId; + // Not node-bound variables, but simply attributes used in JSP page private Boolean edit = false; private Boolean createSubnode = false; private Boolean isSysAdmin = true; private Boolean importNode = false; + // for the list on the main screen private List recentlyModifiedNodes; private static final String FULL_DESCRIPTION_NOT_EMPTY = "FULL"; Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/User.java =================================================================== diff -u -r242af895b7cc36e5f825a4b99862b92a5faa87ed -racf8b8aad096f0fdc9b5beada47f7cb646b59aca --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/User.java (.../User.java) (revision 242af895b7cc36e5f825a4b99862b92a5faa87ed) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/User.java (.../User.java) (revision acf8b8aad096f0fdc9b5beada47f7cb646b59aca) @@ -172,6 +172,7 @@ /** persistent field - latch */ private Boolean firstLogin; + /** persistent field - for Pedagogical Planner */ private Set recentlyModifiedLearningDesigns = new LinkedHashSet(); // ------- TIMEZONES (hardcoded, there is no need to put them into database --------------