Index: lams_central/src/java/org/lamsfoundation/lams/web/IndexAction.java =================================================================== diff -u -r5a7d8461a9600bdf21caa29b8a3253e013fec8cb -rc385a56d7c4a864108403558f3932a25d7fb786e --- lams_central/src/java/org/lamsfoundation/lams/web/IndexAction.java (.../IndexAction.java) (revision 5a7d8461a9600bdf21caa29b8a3253e013fec8cb) +++ lams_central/src/java/org/lamsfoundation/lams/web/IndexAction.java (.../IndexAction.java) (revision c385a56d7c4a864108403558f3932a25d7fb786e) @@ -40,10 +40,10 @@ import org.lamsfoundation.lams.usermanagement.OrganisationState; import org.lamsfoundation.lams.usermanagement.OrganisationType; import org.lamsfoundation.lams.usermanagement.Role; +import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.UserOrganisation; import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; -import org.lamsfoundation.lams.usermanagement.service.UserManagementService; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -122,6 +122,7 @@ private IndexOrgBean createOrgBean(Organisation org, List roles, String username, boolean isSysAdmin) { log.debug("creating orgBean for org:"+org.getName()); + User user = (User)getService().findByProperty(User.class, "login",username).get(0); IndexOrgBean orgBean = new IndexOrgBean(org.getName(), org.getOrganisationType().getOrganisationTypeId()); List links = new ArrayList(); if(isSysAdmin){ @@ -145,23 +146,25 @@ List lessonBeans = new ArrayList(); Set lessons = org.getLessons(); for(Lesson lesson:lessons) { - if(!lesson.isPreviewLesson()){ - List lessonLinks = new ArrayList(); - if(contains(roles,Role.ROLE_COURSE_MANAGER)||contains(roles,Role.ROLE_STAFF)){ - if(!lesson.getLessonStateId().equals(lesson.REMOVED_STATE)){ - lessonLinks.add(new IndexLinkBean("index.monitor", "javascript:openMonitorLesson(" + lesson.getLessonId()+")")); + if(isInLesson(user,lesson)){ + if(!lesson.isPreviewLesson()){ + List lessonLinks = new ArrayList(); + if(contains(roles,Role.ROLE_COURSE_MANAGER)||contains(roles,Role.ROLE_STAFF)){ + if(!lesson.getLessonStateId().equals(lesson.REMOVED_STATE)){ + lessonLinks.add(new IndexLinkBean("index.monitor", "javascript:openMonitorLesson(" + lesson.getLessonId()+")")); + } } - } - if(contains(roles,Role.ROLE_LEARNER)){ - log.debug("Lesson State:"+lesson.getLessonStateId()); - if(lesson.getLessonStateId().equals(lesson.STARTED_STATE)||lesson.getLessonStateId().equals(lesson.FINISHED_STATE)){ - lessonLinks.add(new IndexLinkBean("index.participate","javascript:openLearner("+lesson.getLessonId()+")")); + if(contains(roles,Role.ROLE_LEARNER)){ + log.debug("Lesson State:"+lesson.getLessonStateId()); + if(lesson.getLessonStateId().equals(lesson.STARTED_STATE)||lesson.getLessonStateId().equals(lesson.FINISHED_STATE)){ + lessonLinks.add(new IndexLinkBean("index.participate","javascript:openLearner("+lesson.getLessonId()+")")); + } } + if(lessonLinks.size()>0){ + IndexLessonBean lessonBean = new IndexLessonBean(lesson.getLessonName(), lessonLinks); + lessonBeans.add(lessonBean); + } } - if(lessonLinks.size()>0){ - IndexLessonBean lessonBean = new IndexLessonBean(lesson.getLessonName(), lessonLinks); - lessonBeans.add(lessonBean); - } } } Collections.sort(lessonBeans); @@ -185,6 +188,10 @@ return orgBean; } + private boolean isInLesson(User user, Lesson lesson) { + return lesson.getLessonClass().isStaffMember(user)||lesson.getLessonClass().getLearners().contains(user); + } + private boolean contains(List roles, Integer roleId) { log.debug("roleId:"+roleId); for (int i = 0; i < roles.size(); i++) {