Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java =================================================================== diff -u -r36d9af9cb71edbbf24ae3fee278917346a8dba56 -rf5852bd3f19beebb0e143f3e23e604289d0963e4 --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision 36d9af9cb71edbbf24ae3fee278917346a8dba56) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision f5852bd3f19beebb0e143f3e23e604289d0963e4) @@ -1535,7 +1535,7 @@ */ @Override public List updateLearningDesignAccessByUser(Integer userId) { - List accessList = learningDesignDAO.getAccessByUser(userId); + List accessList = learningDesignDAO.getLearningDesignAccess(userId); List result = new LinkedList<>(); for (int accessIndex = 0; accessIndex < accessList.size(); accessIndex++) { LearningDesignAccess access = accessList.get(accessIndex); @@ -1549,7 +1549,9 @@ log.warn("When getting recent access list for Author with ID " + userId + " LD with ID " + access.getLearningDesignId() + " was found missing. Deleting access entry."); baseDAO.delete(access); - } else if (learningDesign.getWorkspaceFolder() != null) { + continue; + } + if (learningDesign.getWorkspaceFolder() != null) { access.setTitle(learningDesign.getTitle()); access.setWorkspaceFolderId(learningDesign.getWorkspaceFolder().getWorkspaceFolderId()); result.add(access); @@ -1560,8 +1562,11 @@ @Override public void storeLearningDesignAccess(Long learningDesignId, Integer userId) { - LearningDesignAccess access = new LearningDesignAccess(); - access.setId(new LearningDesignAccessPrimaryKey(learningDesignId, userId)); + LearningDesignAccess access = learningDesignDAO.getLearningDesignAccess(learningDesignId, userId); + if (access == null) { + access = new LearningDesignAccess(); + access.setId(new LearningDesignAccessPrimaryKey(learningDesignId, userId)); + } access.setAccessDate(new Date()); learningDesignDAO.insertOrUpdate(access); } Index: lams_central/web/includes/javascript/authoring/authoringGeneral.js =================================================================== diff -u -ree5e5bf5c5d3d0f71004bbde779e98b53d2f0255 -rf5852bd3f19beebb0e143f3e23e604289d0963e4 --- lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision ee5e5bf5c5d3d0f71004bbde779e98b53d2f0255) +++ lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision f5852bd3f19beebb0e143f3e23e604289d0963e4) @@ -3067,9 +3067,7 @@ $('#ldScreenshotLoading', layout.ldStoreDialog).hide(); } }); - }).attr('src', LAMS_URL - + 'authoring/generateSVG.do?selectable=false&learningDesignID=' - + learningDesignID); + }).attr('src', LAMS_URL + 'authoring/generateSVG.do?selectable=false'); } }); } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ILearningDesignDAO.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rf5852bd3f19beebb0e143f3e23e604289d0963e4 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ILearningDesignDAO.java (.../ILearningDesignDAO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ILearningDesignDAO.java (.../ILearningDesignDAO.java) (revision f5852bd3f19beebb0e143f3e23e604289d0963e4) @@ -43,7 +43,7 @@ /** * This method returns a list of all designs that are valid in * the given workspaceFolder. - * + * * @param workspaceFolderID * The workspace_folder_id of the WorkspaceFolder * from where the designs have to be fetched. @@ -54,7 +54,7 @@ /** * This method returns a list of all available designs in * the given workspaceFolder. - * + * * @param workspaceFolderID * The workspace_folder_id of the WorkspaceFolder * from where the designs have to be fetched. @@ -65,7 +65,7 @@ /** * This method returns a List of Learning Designs with given * original_learning_design_id - * + * * @param originalDesignID * The original_learning_design_id * @return List The List of all corresponding Learning designs with @@ -78,8 +78,10 @@ */ public List getLearningDesignTitlesByWorkspaceFolder(Integer workspaceFolderID, String prefix); - public List getAccessByUser(Integer userId); + public List getLearningDesignAccess(Integer userId); + public LearningDesignAccess getLearningDesignAccess(Long learningDesignID, Integer userId); + /** * Get a portion of the learning designs in the given folder. If page & size are null, the effect the same data * is returned as getAllLearningDesignsInFolder but sorted. Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java =================================================================== diff -u -r96068ffc66514c1d25e9adeb96acfa164ab29dd5 -rf5852bd3f19beebb0e143f3e23e604289d0963e4 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java (.../LearningDesignDAO.java) (revision 96068ffc66514c1d25e9adeb96acfa164ab29dd5) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java (.../LearningDesignDAO.java) (revision f5852bd3f19beebb0e143f3e23e604289d0963e4) @@ -55,6 +55,9 @@ private static final String ACCESS_BY_USER = "from " + LearningDesignAccess.class.getName() + " as a where a.id.userId = ? order by a.accessDate desc"; + private static final String ACCESS_BY_LD_AND_USER = "from " + LearningDesignAccess.class.getName() + + " as a where a.id.learningDesignId = ? and a.id.userId = ?"; + /* * @see * org.lamsfoundation.lams.learningdesign.dao.interfaces.ILearningDesignDAO#getLearningDesignById(java.lang.Long) @@ -108,11 +111,19 @@ @SuppressWarnings("unchecked") @Override - public List getAccessByUser(Integer userId) { + public List getLearningDesignAccess(Integer userId) { return (List) this.doFind(ACCESS_BY_USER, userId); } + @SuppressWarnings("unchecked") @Override + public LearningDesignAccess getLearningDesignAccess(Long learningDesignId, Integer userId) { + List list = (List) this.doFind(ACCESS_BY_LD_AND_USER, + learningDesignId, userId); + return list.isEmpty() ? null : list.get(0); + } + + @Override @SuppressWarnings("unchecked") public List getAllPagedLearningDesigns(Integer workspaceFolderID, Integer page, Integer size, String sortName, String sortDate) {