Skip to content
Snippets Groups Projects
Commit 897db367 authored by srosse's avatar srosse
Browse files

OO-4384: only show the curriculums tab if at least one available to user

parent 9599a440
No related branches found
No related tags found
No related merge requests found
...@@ -84,6 +84,8 @@ public interface CurriculumService { ...@@ -84,6 +84,8 @@ public interface CurriculumService {
*/ */
public List<Curriculum> getMyCurriculums(Identity identity); public List<Curriculum> getMyCurriculums(Identity identity);
public boolean hasCurriculums(IdentityRef identity);
/** /**
* The list of curriculums the identity participates. * The list of curriculums the identity participates.
* *
......
...@@ -137,6 +137,24 @@ public class CurriculumDAO { ...@@ -137,6 +137,24 @@ public class CurriculumDAO {
.getResultList(); .getResultList();
} }
public boolean hasMyCurriculums(IdentityRef identity) {
QueryBuilder sb = new QueryBuilder(256);
sb.append("select curElement.key from curriculumelement curElement")
.append(" inner join curElement.curriculum as cur")
.append(" inner join curElement.group as bGroup")
.append(" inner join bGroup.members membership")
.append(" where membership.identity.key=:memberKey and membership.role ").in(CurriculumRoles.participant, CurriculumRoles.coach, CurriculumRoles.owner)
.append(" and (cur.status is null or cur.status ").in(CurriculumStatus.active.name()).append(")");
List<Long> curriculumKeys = dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), Long.class)
.setParameter("memberKey", identity.getKey())
.setFirstResult(0)
.setMaxResults(1)
.getResultList();
return curriculumKeys != null && !curriculumKeys.isEmpty() && curriculumKeys.get(0) != null;
}
public List<Long> getMyActiveCurriculumKeys(IdentityRef identity) { public List<Long> getMyActiveCurriculumKeys(IdentityRef identity) {
QueryBuilder sb = new QueryBuilder(256); QueryBuilder sb = new QueryBuilder(256);
sb.append("select curElement.curriculum.key from curriculumelement curElement") sb.append("select curElement.curriculum.key from curriculumelement curElement")
......
...@@ -286,6 +286,11 @@ public class CurriculumServiceImpl implements CurriculumService, OrganisationDat ...@@ -286,6 +286,11 @@ public class CurriculumServiceImpl implements CurriculumService, OrganisationDat
return curriculumDao.getMyCurriculums(identity); return curriculumDao.getMyCurriculums(identity);
} }
@Override
public boolean hasCurriculums(IdentityRef identity) {
return curriculumDao.hasMyCurriculums(identity);
}
@Override @Override
public List<CurriculumRef> getMyActiveCurriculumRefs(Identity identity) { public List<CurriculumRef> getMyActiveCurriculumRefs(Identity identity) {
List<Long> curriculumKeys = curriculumDao.getMyActiveCurriculumKeys(identity); List<Long> curriculumKeys = curriculumDao.getMyActiveCurriculumKeys(identity);
......
...@@ -46,6 +46,7 @@ import org.olat.core.util.event.EventBus; ...@@ -46,6 +46,7 @@ import org.olat.core.util.event.EventBus;
import org.olat.core.util.event.GenericEventListener; import org.olat.core.util.event.GenericEventListener;
import org.olat.core.util.resource.OresHelper; import org.olat.core.util.resource.OresHelper;
import org.olat.modules.curriculum.CurriculumModule; import org.olat.modules.curriculum.CurriculumModule;
import org.olat.modules.curriculum.CurriculumService;
import org.olat.modules.curriculum.ui.CurriculumListController; import org.olat.modules.curriculum.ui.CurriculumListController;
import org.olat.repository.CatalogEntry; import org.olat.repository.CatalogEntry;
import org.olat.repository.RepositoryManager; import org.olat.repository.RepositoryManager;
...@@ -90,7 +91,9 @@ public class OverviewRepositoryListController extends BasicController implements ...@@ -90,7 +91,9 @@ public class OverviewRepositoryListController extends BasicController implements
private BreadcrumbedStackedPanel searchCoursesStackPanel; private BreadcrumbedStackedPanel searchCoursesStackPanel;
private final boolean isGuestOnly; private final boolean isGuestOnly;
private boolean favoritDirty, myDirty; private boolean myDirty;
private boolean favoritDirty;
private final boolean withCurriculums;
private final EventBus eventBus; private final EventBus eventBus;
...@@ -100,6 +103,8 @@ public class OverviewRepositoryListController extends BasicController implements ...@@ -100,6 +103,8 @@ public class OverviewRepositoryListController extends BasicController implements
private RepositoryModule repositoryModule; private RepositoryModule repositoryModule;
@Autowired @Autowired
private CurriculumModule curriculumModule; private CurriculumModule curriculumModule;
@Autowired
private CurriculumService curriculumService;
public OverviewRepositoryListController(UserRequest ureq, WindowControl wControl) { public OverviewRepositoryListController(UserRequest ureq, WindowControl wControl) {
super(ureq, wControl); super(ureq, wControl);
...@@ -123,7 +128,8 @@ public class OverviewRepositoryListController extends BasicController implements ...@@ -123,7 +128,8 @@ public class OverviewRepositoryListController extends BasicController implements
myCourseLink.setElementCssClass("o_sel_mycourses_my"); myCourseLink.setElementCssClass("o_sel_mycourses_my");
segmentView.addSegment(myCourseLink, false); segmentView.addSegment(myCourseLink, false);
if(curriculumModule.isEnabled() && curriculumModule.isCurriculumInMyCourses()) { withCurriculums = withCurriculumTab();
if(withCurriculums) {
curriculumLink = LinkFactory.createLink("search.curriculums", mainVC, this); curriculumLink = LinkFactory.createLink("search.curriculums", mainVC, this);
curriculumLink.setElementCssClass("o_sel_mycurriculums"); curriculumLink.setElementCssClass("o_sel_mycurriculums");
segmentView.addSegment(curriculumLink, false); segmentView.addSegment(curriculumLink, false);
...@@ -150,6 +156,11 @@ public class OverviewRepositoryListController extends BasicController implements ...@@ -150,6 +156,11 @@ public class OverviewRepositoryListController extends BasicController implements
putInitialPanel(mainPanel); putInitialPanel(mainPanel);
} }
private boolean withCurriculumTab() {
return curriculumModule.isEnabled() && curriculumModule.isCurriculumInMyCourses()
&& curriculumService.hasCurriculums(getIdentity());
}
@Override @Override
public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
if(entries == null || entries.isEmpty()) { if(entries == null || entries.isEmpty()) {
...@@ -347,7 +358,7 @@ public class OverviewRepositoryListController extends BasicController implements ...@@ -347,7 +358,7 @@ public class OverviewRepositoryListController extends BasicController implements
} }
private CurriculumListController doOpenCurriculum(UserRequest ureq) { private CurriculumListController doOpenCurriculum(UserRequest ureq) {
if(!curriculumModule.isEnabled() || !curriculumModule.isCurriculumInMyCourses()) { if(!withCurriculums) {
return null; return null;
} }
cleanUp(); cleanUp();
......
...@@ -313,6 +313,25 @@ public class CurriculumDAOTest extends OlatTestCase { ...@@ -313,6 +313,25 @@ public class CurriculumDAOTest extends OlatTestCase {
Assert.assertEquals(curriculum, myCurriculums.get(0)); Assert.assertEquals(curriculum, myCurriculums.get(0));
} }
@Test
public void hasMyCurriculums() {
// add a curriculum with a coach in an element
Identity idWithCurriculum = JunitTestHelper.createAndPersistIdentityAsRndUser("cur-for-fun-1");
Identity idWithout = JunitTestHelper.createAndPersistIdentityAsRndUser("cur-for-fun-2");
Curriculum curriculum = curriculumService.createCurriculum("CUR-FUN-1", "My funny curriculum 1", "Short desc.", null);
CurriculumElement element = curriculumService.createCurriculumElement("Element-1", "1. Element", CurriculumElementStatus.active,
new Date(), new Date(), null, null, CurriculumCalendars.disabled, CurriculumLectures.disabled, curriculum);
dbInstance.commitAndCloseSession();
curriculumService.addMember(element, idWithCurriculum, CurriculumRoles.participant);
dbInstance.commitAndCloseSession();
// has curriculums?
boolean hasCurriculums = curriculumDao.hasMyCurriculums(idWithCurriculum);
Assert.assertTrue(hasCurriculums);
boolean hasNotCurriculums = curriculumDao.hasMyCurriculums(idWithout);
Assert.assertFalse(hasNotCurriculums);
}
@Test @Test
public void hasCurriculumRole() { public void hasCurriculumRole() {
// add a curriculum manager // add a curriculum manager
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment