Index: lams_central/src/java/org/lamsfoundation/lams/web/IndexAction.java =================================================================== diff -u -r326b2d0e156ffeaa745cbd52e1fbc696a7c36dac -r085c036bf6ccd97b08e12f5f25368fb932c606db --- lams_central/src/java/org/lamsfoundation/lams/web/IndexAction.java (.../IndexAction.java) (revision 326b2d0e156ffeaa745cbd52e1fbc696a7c36dac) +++ lams_central/src/java/org/lamsfoundation/lams/web/IndexAction.java (.../IndexAction.java) (revision 085c036bf6ccd97b08e12f5f25368fb932c606db) @@ -44,6 +44,7 @@ import org.lamsfoundation.lams.usermanagement.UserOrganisation; import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; +import org.lamsfoundation.lams.util.WebUtil; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -71,29 +72,36 @@ private static IUserManagementService service; + private Integer state; + @SuppressWarnings("unchecked") public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { + String stateParam = WebUtil.readStrParam(request, "state"); + state = (stateParam.equals("active")?OrganisationState.ACTIVE:OrganisationState.ARCHIVED); log.debug("User:"+request.getRemoteUser()); - List headerLinks = new ArrayList(); - //headerLinks.add(new IndexLinkBean("index.dummymonitor","javascript:openDummyMonitor()")); - headerLinks.add(new IndexLinkBean("index.myprofile", "javascript:openProfile('" + request.getRemoteUser()+"')")); - if (request.isUserInRole(Role.SYSADMIN)) { - log.debug("user is sysadmin"); - headerLinks.add(new IndexLinkBean("index.sysadmin", "javascript:openSysadmin()")); - headerLinks.add(new IndexLinkBean("index.courseman", "javascript:openOrgManagement(" + getService().getRootOrganisation().getOrganisationId()+")")); + // only set header links if we are displaying 'active' organisations; i.e., on the index page + if(state.equals(OrganisationState.ACTIVE)){ + List headerLinks = new ArrayList(); + //headerLinks.add(new IndexLinkBean("index.dummymonitor","javascript:openDummyMonitor()")); + headerLinks.add(new IndexLinkBean("index.myprofile", "javascript:openProfile('" + request.getRemoteUser()+"')")); + if (request.isUserInRole(Role.SYSADMIN)) { + log.debug("user is sysadmin"); + headerLinks.add(new IndexLinkBean("index.sysadmin", "javascript:openSysadmin()")); + headerLinks.add(new IndexLinkBean("index.courseman", "javascript:openOrgManagement(" + getService().getRootOrganisation().getOrganisationId()+")")); + } + if (request.isUserInRole(Role.AUTHOR)) { + log.debug("user is author"); + headerLinks.add(new IndexLinkBean("index.author", "javascript:openAuthor()")); + } + log.debug("set headerLinks in request"); + request.setAttribute("headerLinks", headerLinks); } - if (request.isUserInRole(Role.AUTHOR)) { - log.debug("user is author"); - headerLinks.add(new IndexLinkBean("index.author", "javascript:openAuthor()")); - } - log.debug("set headerLinks in request"); - request.setAttribute("headerLinks", headerLinks); - + List orgBeans = new ArrayList(); if (request.isUserInRole(Role.SYSADMIN)) { List roles = new ArrayList(); - List organisations = getService().getOrganisationsByTypeAndStatus(OrganisationType.COURSE_TYPE, OrganisationState.ACTIVE); - log.debug("we got "+organisations.size()+" organisations whose type is "+OrganisationType.COURSE_DESCRIPTION+" and whose state is "+OrganisationState.ACTIVE); + List organisations = getService().getOrganisationsByTypeAndStatus(OrganisationType.COURSE_TYPE,state); + log.debug("we got "+organisations.size()+" organisations whose type is "+OrganisationType.COURSE_DESCRIPTION+" and whose state is "+state); roles.add(Role.ROLE_SYSADMIN); for (Organisation org:organisations) { List userOrganisationRoles = getService().getUserOrganisationRoles(org.getOrganisationId(),request.getRemoteUser()); @@ -103,8 +111,8 @@ orgBeans.add(createOrgBean(org, roles, request.getRemoteUser(),true)); } } else { - List userOrganisations = getService().getUserOrganisationsForUserByTypeAndStatus(request.getRemoteUser(),OrganisationType.COURSE_TYPE,OrganisationState.ACTIVE); - log.debug("we got "+userOrganisations.size()+" organisations whose type is "+OrganisationType.COURSE_DESCRIPTION+" and whose state is "+OrganisationState.ACTIVE); + List userOrganisations = getService().getUserOrganisationsForUserByTypeAndStatus(request.getRemoteUser(),OrganisationType.COURSE_TYPE,state); + log.debug("we got "+userOrganisations.size()+" organisations whose type is "+OrganisationType.COURSE_DESCRIPTION+" and whose state is "+state); for (UserOrganisation userOrganisation: userOrganisations) { List roles = new ArrayList(); for(Object userOrganisationRole:userOrganisation.getUserOrganisationRoles()){ @@ -127,12 +135,13 @@ 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){ + if(isSysAdmin && state.equals(OrganisationState.ACTIVE)){ if (orgBean.getType().equals(OrganisationType.COURSE_TYPE)) { links.add(new IndexLinkBean("index.classman", "javascript:openOrgManagement(" + org.getOrganisationId()+")")); } } - if (contains(roles, Role.ROLE_COURSE_ADMIN) || contains(roles, Role.ROLE_COURSE_MANAGER) || contains(roles,Role.ROLE_STAFF)) { + if ((contains(roles, Role.ROLE_COURSE_ADMIN) || contains(roles, Role.ROLE_COURSE_MANAGER) || contains(roles,Role.ROLE_STAFF)) + && state.equals(OrganisationState.ACTIVE)) { if (orgBean.getType().equals(OrganisationType.COURSE_TYPE)) { if((!isSysAdmin)&&(contains(roles, Role.ROLE_COURSE_ADMIN) || contains(roles, Role.ROLE_COURSE_MANAGER))){ links.add(new IndexLinkBean("index.classman", "javascript:openOrgManagement(" + org.getOrganisationId()+")")); @@ -151,16 +160,30 @@ 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(state.equals(OrganisationState.ACTIVE)){ + 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()+")")); + } } + }else if(state.equals(OrganisationState.ARCHIVED)){ + if(contains(roles,Role.ROLE_COURSE_MANAGER)){ + 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("label.export.portfolio","javascript:openExportPortfolio("+lesson.getLessonId()+")")); + } + } } if(lessonLinks.size()>0){ IndexLessonBean lessonBean = new IndexLessonBean(lesson.getLessonName(), lessonLinks); @@ -176,12 +199,13 @@ Set children = org.getChildOrganisations(); List childOrgBeans = new ArrayList(); for(Organisation organisation:children){ - if(organisation.getOrganisationState().getOrganisationStateId().equals(OrganisationState.ACTIVE)){ + if(organisation.getOrganisationState().getOrganisationStateId().equals(state)){ List classRoles = new ArrayList(); List userOrganisationRoles = getService().getUserOrganisationRoles(organisation.getOrganisationId(),username); for(UserOrganisationRole userOrganisationRole:userOrganisationRoles){ classRoles.add(userOrganisationRole.getRole().getRoleId()); } + if(contains(roles,Role.ROLE_COURSE_MANAGER)) classRoles.add(Role.ROLE_COURSE_MANAGER); childOrgBeans.add(createOrgBean(organisation,classRoles,username,isSysAdmin)); } } Index: lams_central/web/index.jsp =================================================================== diff -u -rc0ca604bcb9aac78f9658cc87f123f267695a16a -r085c036bf6ccd97b08e12f5f25368fb932c606db --- lams_central/web/index.jsp (.../index.jsp) (revision c0ca604bcb9aac78f9658cc87f123f267695a16a) +++ lams_central/web/index.jsp (.../index.jsp) (revision 085c036bf6ccd97b08e12f5f25368fb932c606db) @@ -25,7 +25,7 @@ var i = Math.round(1000*Math.random()); function getContent(){ i++; - var url = "index.do?unique="+i; + var url = "index.do?unique="+i+"&state=active"; var params = ""; var myAjax = new Ajax.Updater( "courselist", Index: lams_central/web/indexContent.jsp =================================================================== diff -u -r127a91c16ad6072120ed00196bc9d736e5abdef5 -r085c036bf6ccd97b08e12f5f25368fb932c606db --- lams_central/web/indexContent.jsp (.../indexContent.jsp) (revision 127a91c16ad6072120ed00196bc9d736e5abdef5) +++ lams_central/web/indexContent.jsp (.../indexContent.jsp) (revision 085c036bf6ccd97b08e12f5f25368fb932c606db) @@ -88,3 +88,10 @@ + +

+ + + +

+