From 1dd4e2fb691594c2dd225e6ce55383c35f9ad0f7 Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Wed, 18 Sep 2019 19:46:18 +0200 Subject: [PATCH] OO-4251: add organisation to the curriculum list --- .../org/olat/basesecurity/OrganisationService.java | 6 ++++++ .../olat/basesecurity/manager/OrganisationDAO.java | 10 ++++++++++ .../basesecurity/manager/OrganisationServiceImpl.java | 6 ++++++ .../ui/CurriculumListManagerController.java | 11 +++++++++++ .../curriculum/ui/CurriculumManagerDataModel.java | 4 +++- .../org/olat/modules/curriculum/ui/CurriculumRow.java | 7 +++++++ .../curriculum/ui/_i18n/LocalStrings_de.properties | 1 + .../curriculum/ui/_i18n/LocalStrings_en.properties | 1 + 8 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/olat/basesecurity/OrganisationService.java b/src/main/java/org/olat/basesecurity/OrganisationService.java index 6eda45de1d3..065edd64e7d 100644 --- a/src/main/java/org/olat/basesecurity/OrganisationService.java +++ b/src/main/java/org/olat/basesecurity/OrganisationService.java @@ -93,6 +93,12 @@ public interface OrganisationService { */ public List<Organisation> getOrganisations(); + /** + * + * @return true if an other organisation as the default is available + */ + public boolean isMultiOrganisations(); + /** * Search the organisations by status. * diff --git a/src/main/java/org/olat/basesecurity/manager/OrganisationDAO.java b/src/main/java/org/olat/basesecurity/manager/OrganisationDAO.java index 45b9539a2ed..bd1354f3f5b 100644 --- a/src/main/java/org/olat/basesecurity/manager/OrganisationDAO.java +++ b/src/main/java/org/olat/basesecurity/manager/OrganisationDAO.java @@ -183,6 +183,16 @@ public class OrganisationDAO { .getResultList(); } + public long count(OrganisationStatus[] status) { + QueryBuilder sb = new QueryBuilder(256); + sb.append("select count(org.key) from organisation org") + .append(" where org.status ").in(status); + List<Long> count = dbInstance.getCurrentEntityManager() + .createQuery(sb.toString(), Long.class) + .getResultList(); + return count == null || count.isEmpty() || count.get(0) == null ? 0 : count.get(0).longValue(); + } + public List<OrganisationMember> getMembers(OrganisationRef organisation, SearchMemberParameters params) { QueryBuilder sb = new QueryBuilder(256); sb.append("select ident, membership.role, membership.inheritanceModeString from organisation org") diff --git a/src/main/java/org/olat/basesecurity/manager/OrganisationServiceImpl.java b/src/main/java/org/olat/basesecurity/manager/OrganisationServiceImpl.java index dafcd20fc89..30ccb725ae2 100644 --- a/src/main/java/org/olat/basesecurity/manager/OrganisationServiceImpl.java +++ b/src/main/java/org/olat/basesecurity/manager/OrganisationServiceImpl.java @@ -292,6 +292,12 @@ public class OrganisationServiceImpl implements OrganisationService, Initializin return organisationDao.find(OrganisationStatus.notDelete()); } + @Override + public boolean isMultiOrganisations() { + // TODO Auto-generated method stub + return organisationDao.count(OrganisationStatus.notDelete()) > 1; + } + @Override public List<Organisation> getOrganisations(OrganisationStatus[] status) { return organisationDao.find(status); diff --git a/src/main/java/org/olat/modules/curriculum/ui/CurriculumListManagerController.java b/src/main/java/org/olat/modules/curriculum/ui/CurriculumListManagerController.java index de294f91f37..f4c4416bdc6 100644 --- a/src/main/java/org/olat/modules/curriculum/ui/CurriculumListManagerController.java +++ b/src/main/java/org/olat/modules/curriculum/ui/CurriculumListManagerController.java @@ -25,6 +25,8 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; +import org.olat.basesecurity.OrganisationModule; +import org.olat.basesecurity.OrganisationService; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.form.flexible.FormItem; @@ -99,10 +101,15 @@ public class CurriculumListManagerController extends FormBasicController impleme private int counter = 0; private final Roles roles; + private final boolean isMultiOrganisations; private final CurriculumSecurityCallback secCallback; @Autowired private CurriculumService curriculumService; + @Autowired + private OrganisationModule organisationModule; + @Autowired + private OrganisationService organisationService; public CurriculumListManagerController(UserRequest ureq, WindowControl wControl, TooledStackedPanel toolbarPanel, CurriculumSecurityCallback secCallback) { @@ -111,6 +118,7 @@ public class CurriculumListManagerController extends FormBasicController impleme this.secCallback = secCallback; roles = ureq.getUserSession().getRoles(); toolbarPanel.addListener(this); + isMultiOrganisations = organisationService.isMultiOrganisations(); initForm(ureq); loadModel(null, true); @@ -136,6 +144,9 @@ public class CurriculumListManagerController extends FormBasicController impleme columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(CurriculumCols.displayName, "select")); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(CurriculumCols.identifier, "select")); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, CurriculumCols.externalId, "select")); + if(organisationModule.isEnabled()) { + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(isMultiOrganisations, CurriculumCols.organisation)); + } columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(CurriculumCols.numOfElements)); DefaultFlexiColumnModel editCol = new DefaultFlexiColumnModel("edit.icon", CurriculumCols.edit.ordinal(), "edit", new BooleanCellRenderer(new StaticFlexiCellRenderer(translate("edit"), "edit"), diff --git a/src/main/java/org/olat/modules/curriculum/ui/CurriculumManagerDataModel.java b/src/main/java/org/olat/modules/curriculum/ui/CurriculumManagerDataModel.java index 4c73aab75dd..f37ade085d2 100644 --- a/src/main/java/org/olat/modules/curriculum/ui/CurriculumManagerDataModel.java +++ b/src/main/java/org/olat/modules/curriculum/ui/CurriculumManagerDataModel.java @@ -93,6 +93,7 @@ implements SortableFlexiTableDataModel<CurriculumRow>, FilterableFlexiTableModel case displayName: return row.getDisplayName(); case identifier: return row.getIdentifier(); case externalId: return row.getExternalId(); + case organisation: return row.getOrganisation(); case numOfElements: return row.getNumOfElements(); case edit: return row.canManage(); case tools: return row.getTools(); @@ -119,7 +120,8 @@ implements SortableFlexiTableDataModel<CurriculumRow>, FilterableFlexiTableModel externalId("table.header.external.id"), numOfElements("table.header.num.elements"), edit("edit.icon"), - tools("table.header.tools"); + tools("table.header.tools"), + organisation("table.header.organisation"); private final String i18nHeaderKey; diff --git a/src/main/java/org/olat/modules/curriculum/ui/CurriculumRow.java b/src/main/java/org/olat/modules/curriculum/ui/CurriculumRow.java index 7ed28e85b59..c3e4334882a 100644 --- a/src/main/java/org/olat/modules/curriculum/ui/CurriculumRow.java +++ b/src/main/java/org/olat/modules/curriculum/ui/CurriculumRow.java @@ -80,6 +80,13 @@ public class CurriculumRow implements CurriculumRef { return curriculum.getExternalId(); } + public String getOrganisation() { + if(curriculum.getOrganisation() != null) { + return curriculum.getOrganisation().getDisplayName(); + } + return null; + } + public long getNumOfElements() { return numOfElements; } diff --git a/src/main/java/org/olat/modules/curriculum/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/curriculum/ui/_i18n/LocalStrings_de.properties index b7b74cedc0f..126d05a73cf 100644 --- a/src/main/java/org/olat/modules/curriculum/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/curriculum/ui/_i18n/LocalStrings_de.properties @@ -120,6 +120,7 @@ table.header.num.of.members=Mitglieder table.header.num.of.participants=Teilnehmer table.header.num.of.coaches=Betreuer table.header.num.of.owners=Besitzer +table.header.organisation=Organisation table.header.repository.entry.displayName=Titel der Lernressource table.header.repository.entry.externalRef=Identifier table.header.resources=Ref. diff --git a/src/main/java/org/olat/modules/curriculum/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/curriculum/ui/_i18n/LocalStrings_en.properties index 9c105987a2d..6ac44019df7 100644 --- a/src/main/java/org/olat/modules/curriculum/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/curriculum/ui/_i18n/LocalStrings_en.properties @@ -120,6 +120,7 @@ table.header.num.of.coaches=Coaches table.header.num.of.members=Members table.header.num.of.owners=Owners table.header.num.of.participants=Participants +table.header.organisation=Organisation table.header.repository.entry.displayName=Title of learning resource table.header.repository.entry.externalRef=Reference table.header.resources=Ref. -- GitLab