Index: lams_build/lib/lams/lams-learning.jar =================================================================== diff -u -r83005805dfe5847c8578b56911f7e9f8ce08ff9f -re3ce54ff7b473269e6148ad285f0148c61ae20af Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/web/DisplayGroupAction.java =================================================================== diff -u -ree2713a23c1a795eec5f782795da09918cbdf006 -re3ce54ff7b473269e6148ad285f0148c61ae20af --- lams_central/src/java/org/lamsfoundation/lams/web/DisplayGroupAction.java (.../DisplayGroupAction.java) (revision ee2713a23c1a795eec5f782795da09918cbdf006) +++ lams_central/src/java/org/lamsfoundation/lams/web/DisplayGroupAction.java (.../DisplayGroupAction.java) (revision e3ce54ff7b473269e6148ad285f0148c61ae20af) @@ -43,6 +43,8 @@ import org.lamsfoundation.lams.index.IndexLessonBean; import org.lamsfoundation.lams.index.IndexLinkBean; import org.lamsfoundation.lams.index.IndexOrgBean; +import org.lamsfoundation.lams.learning.kumalive.model.Kumalive; +import org.lamsfoundation.lams.learning.kumalive.service.IKumaliveService; import org.lamsfoundation.lams.learningdesign.service.ILearningDesignService; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.service.LessonService; @@ -69,6 +71,7 @@ private static LessonService lessonService; private static ILearningDesignService learningDesignService; private static ISecurityService securityService; + private static IKumaliveService kumaliveService; @Override @SuppressWarnings({ "unchecked" }) @@ -79,7 +82,7 @@ Organisation org = null; if (orgId != null) { - org = (Organisation) getService().findById(Organisation.class, orgId); + org = (Organisation) getUserManagementService().findById(Organisation.class, orgId); } if (org != null) { @@ -92,8 +95,8 @@ } List roles = new ArrayList(); - List userOrganisationRoles = getService().getUserOrganisationRoles(orgId, - request.getRemoteUser()); + List userOrganisationRoles = getUserManagementService() + .getUserOrganisationRoles(orgId, request.getRemoteUser()); for (UserOrganisationRole userOrganisationRole : userOrganisationRoles) { Integer roleId = userOrganisationRole.getRole().getRoleId(); roles.add(roleId); @@ -119,7 +122,8 @@ private IndexOrgBean createOrgBean(Organisation org, List roles, String username, boolean isSysAdmin) throws SQLException, NamingException { - IndexOrgBean orgBean = new IndexOrgBean(org.getOrganisationId(), org.getName(), + Integer organisationId = org.getOrganisationId(); + IndexOrgBean orgBean = new IndexOrgBean(organisationId, org.getName(), org.getOrganisationType().getOrganisationTypeId()); // populate group contents @@ -131,12 +135,12 @@ if (isSysAdmin) { if (orgBean.getType().equals(OrganisationType.COURSE_TYPE)) { moreLinks.add(new IndexLinkBean("index.classman", - "javascript:openOrgManagement(" + org.getOrganisationId() + ")", "fa fa-fw fa-users", null)); + "javascript:openOrgManagement(" + organisationId + ")", "fa fa-fw fa-users", null)); } } if (org.getEnableGradebookForLearners() && roles.contains(Role.ROLE_LEARNER)) { - String link = "javascript:showGradebookLearnerDialog(" + org.getOrganisationId() + ")"; + String link = "javascript:showGradebookLearnerDialog(" + organisationId + ")"; links.add(new IndexLinkBean("index.coursegradebook.learner", link, "fa fa-fw fa-list-ol", null)); } @@ -146,31 +150,29 @@ if ((!isSysAdmin) && (roles.contains(Role.ROLE_GROUP_ADMIN) || roles.contains(Role.ROLE_GROUP_MANAGER))) { moreLinks.add(new IndexLinkBean("index.classman", - "javascript:openOrgManagement(" + org.getOrganisationId() + ")", "fa fa-fw fa-ellipsis-v", - null)); + "javascript:openOrgManagement(" + organisationId + ")", "fa fa-fw fa-ellipsis-v", null)); } if ((roles.contains(Role.ROLE_GROUP_ADMIN) || roles.contains(Role.ROLE_GROUP_MANAGER) || roles.contains(Role.ROLE_AUTHOR) || roles.contains(Role.ROLE_MONITOR))) { moreLinks.add(new IndexLinkBean("index.orggroup", - "javascript:showOrgGroupingDialog(" + org.getOrganisationId() + ")", "fa fa-fw fa-users", - null)); + "javascript:showOrgGroupingDialog(" + organisationId + ")", "fa fa-fw fa-users", null)); } if (roles.contains(Role.ROLE_GROUP_MANAGER) || roles.contains(Role.ROLE_MONITOR)) { String name = org.getEnableSingleActivityLessons() ? "index.addlesson.single" : "index.addlesson"; - links.add(new IndexLinkBean(name, "javascript:showAddLessonDialog(" + org.getOrganisationId() + ")", + links.add(new IndexLinkBean(name, "javascript:showAddLessonDialog(" + organisationId + ")", "fa fa-fw fa-plus", null)); } moreLinks.add(new IndexLinkBean("index.searchlesson", - "javascript:showSearchLessonDialog(" + org.getOrganisationId() + ")", "fa fa-fw fa-search", + "javascript:showSearchLessonDialog(" + organisationId + ")", "fa fa-fw fa-search", "index.searchlesson.tooltip")); // Adding course notifications links if enabled if (org.getEnableCourseNotifications() && (roles.contains(Role.ROLE_GROUP_MANAGER) || roles.contains(Role.ROLE_MONITOR))) { moreLinks.add(new IndexLinkBean("index.emailnotifications", - "javascript:showNotificationsDialog(" + org.getOrganisationId() + ",null)", - "fa fa-fw fa-bullhorn", "index.emailnotifications.tooltip")); + "javascript:showNotificationsDialog(" + organisationId + ",null)", "fa fa-fw fa-bullhorn", + "index.emailnotifications.tooltip")); } // Adding lesson sorting link @@ -190,7 +192,7 @@ // Adding gradebook course monitor links if enabled if (roles.contains(Role.ROLE_GROUP_MANAGER) || roles.contains(Role.ROLE_GROUP_ADMIN)) { - String link = "javascript:showGradebookCourseDialog(" + org.getOrganisationId() + ")"; + String link = "javascript:showGradebookCourseDialog(" + organisationId + ")"; moreLinks.add(new IndexLinkBean("index.coursegradebook", link, "fa fa-fw fa-list-ol", "index.coursegradebook.tooltip")); } @@ -200,13 +202,13 @@ String name = org.getParentOrganisation().getEnableSingleActivityLessons() ? "index.addlesson.single" : "index.addlesson"; - links.add(new IndexLinkBean(name, "javascript:showAddLessonDialog(" + org.getOrganisationId() + ")", + links.add(new IndexLinkBean(name, "javascript:showAddLessonDialog(" + organisationId + ")", "fa fa-fw fa-plus", null)); } // Adding gradebook course monitor links if enabled if (roles.contains(Role.ROLE_GROUP_MANAGER) || roles.contains(Role.ROLE_GROUP_ADMIN)) { - String link = "javascript:showGradebookCourseDialog(" + org.getOrganisationId() + ")"; + String link = "javascript:showGradebookCourseDialog(" + organisationId + ")"; moreLinks.add( new IndexLinkBean("index.coursegradebook.subgroup", link, "fa fa-fw fa-list-ol", null)); } @@ -216,12 +218,12 @@ if (Configuration.getAsBoolean(ConfigurationKeys.ALLOW_KUMALIVE) && org.getEnableKumalive() && (roles.contains(Role.ROLE_GROUP_MANAGER) || roles.contains(Role.ROLE_MONITOR) || roles.contains(Role.ROLE_LEARNER))) { - links.add(new IndexLinkBean( - roles.contains(Role.ROLE_GROUP_MANAGER) || roles.contains(Role.ROLE_MONITOR) - ? "index.kumalive.teacher" - : "index.kumalive", - "javascript:openKumalive(" + org.getOrganisationId() + ")", "fa fa-fw fa-bolt", - "index.kumalive.tooltip")); + Kumalive kumalive = getKumaliveService().getKumaliveByOrganisation(organisationId); + boolean isMonitor = roles.contains(Role.ROLE_GROUP_MANAGER) || roles.contains(Role.ROLE_MONITOR); + boolean disabled = !isMonitor && (kumalive == null || kumalive.getFinished()); + links.add(new IndexLinkBean(isMonitor ? "index.kumalive.teacher" : "index.kumalive", + "javascript:openKumalive(" + organisationId + ")", + "fa fa-fw fa-bolt" + (disabled ? " disabled" : ""), "index.kumalive.tooltip")); } orgBean.setLinks(links); @@ -247,7 +249,7 @@ for (Organisation organisation : children) { if (OrganisationState.ACTIVE.equals(organisation.getOrganisationState().getOrganisationStateId())) { List classRoles = new ArrayList(); - List userOrganisationRoles = getService() + List userOrganisationRoles = getUserManagementService() .getUserOrganisationRoles(organisation.getOrganisationId(), username); // don't list the subgroup if user is not a member, and not a group admin/manager if (((userOrganisationRoles == null) || userOrganisationRoles.isEmpty()) && !isSysAdmin @@ -354,10 +356,10 @@ } private User getUser(String login) { - return (User) getService().findByProperty(User.class, "login", login).get(0); + return (User) getUserManagementService().findByProperty(User.class, "login", login).get(0); } - private IUserManagementService getService() { + private IUserManagementService getUserManagementService() { if (DisplayGroupAction.service == null) { WebApplicationContext ctx = WebApplicationContextUtils .getRequiredWebApplicationContext(getServlet().getServletContext()); @@ -392,4 +394,13 @@ } return DisplayGroupAction.securityService; } + + private IKumaliveService getKumaliveService() { + if (DisplayGroupAction.kumaliveService == null) { + WebApplicationContext ctx = WebApplicationContextUtils + .getRequiredWebApplicationContext(getServlet().getServletContext()); + DisplayGroupAction.kumaliveService = (IKumaliveService) ctx.getBean("kumaliveService"); + } + return DisplayGroupAction.kumaliveService; + } } Index: lams_central/web/groupHeader.jsp =================================================================== diff -u -r3cccb9ba98efd5722b7365ffec582e2889143166 -re3ce54ff7b473269e6148ad285f0148c61ae20af --- lams_central/web/groupHeader.jsp (.../groupHeader.jsp) (revision 3cccb9ba98efd5722b7365ffec582e2889143166) +++ lams_central/web/groupHeader.jsp (.../groupHeader.jsp) (revision e3ce54ff7b473269e6148ad285f0148c61ae20af) @@ -2,6 +2,7 @@ <%@ taglib uri="tags-fmt" prefix="fmt"%> <%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-function" prefix="fn"%> @@ -76,12 +77,33 @@ + + +
- title="" - > + + title="" + + > "> Index: lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/service/IKumaliveService.java =================================================================== diff -u -r5b60c76a61d420733e2c4c96513249cb9a65a484 -re3ce54ff7b473269e6148ad285f0148c61ae20af --- lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/service/IKumaliveService.java (.../IKumaliveService.java) (revision 5b60c76a61d420733e2c4c96513249cb9a65a484) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/service/IKumaliveService.java (.../IKumaliveService.java) (revision e3ce54ff7b473269e6148ad285f0148c61ae20af) @@ -36,6 +36,8 @@ public interface IKumaliveService { Kumalive getKumalive(Long id); + Kumalive getKumaliveByOrganisation(Integer organisationId); + Kumalive startKumalive(Integer organisationId, Integer userId, String name, JSONArray rubrics, boolean isTeacher) throws JSONException; Index: lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/service/KumaliveService.java =================================================================== diff -u -ra5a1078bc390357a119161f65fac513b5244298e -re3ce54ff7b473269e6148ad285f0148c61ae20af --- lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/service/KumaliveService.java (.../KumaliveService.java) (revision a5a1078bc390357a119161f65fac513b5244298e) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/service/KumaliveService.java (.../KumaliveService.java) (revision e3ce54ff7b473269e6148ad285f0148c61ae20af) @@ -78,6 +78,11 @@ return (Kumalive) kumaliveDAO.find(Kumalive.class, id); } + @Override + public Kumalive getKumaliveByOrganisation(Integer organisationId) { + return kumaliveDAO.findKumalive(organisationId); + } + /** * Fetches or creates a Kumalive * @@ -89,7 +94,7 @@ if (isTeacher) { securityService.isGroupMonitor(organisationId, userId, "start kumalive", true); } - Kumalive kumalive = kumaliveDAO.findKumalive(organisationId); + Kumalive kumalive = getKumaliveByOrganisation(organisationId); if (kumalive == null) { if (!isTeacher) { return null;