diff --git a/src/main/java/org/olat/modules/lecture/ui/LectureRepositoryAdminController.java b/src/main/java/org/olat/modules/lecture/ui/LectureRepositoryAdminController.java index a799cd566d55e049624ef8106aa6a74e75c67ac4..eeb2b83291da2fab648a648ef9a7a031a19dc9f7 100644 --- a/src/main/java/org/olat/modules/lecture/ui/LectureRepositoryAdminController.java +++ b/src/main/java/org/olat/modules/lecture/ui/LectureRepositoryAdminController.java @@ -21,6 +21,7 @@ package org.olat.modules.lecture.ui; import java.util.List; +import org.olat.basesecurity.BaseSecurityModule; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.link.Link; @@ -38,6 +39,7 @@ import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; import org.olat.core.gui.control.generic.dtabs.Activateable2; import org.olat.core.id.OLATResourceable; +import org.olat.core.id.Roles; import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.StateEntry; import org.olat.core.util.resource.OresHelper; @@ -69,11 +71,15 @@ public class LectureRepositoryAdminController extends BasicController implements private RepositoryEntry entry; private boolean configurationChanges = false; + private final boolean isAdministrativeUser; + private final boolean authorizedAbsenceEnabled; @Autowired private LectureModule lectureModule; @Autowired private LectureService lectureService; + @Autowired + private BaseSecurityModule securityModule; public LectureRepositoryAdminController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel, RepositoryEntry entry) { @@ -81,6 +87,10 @@ public class LectureRepositoryAdminController extends BasicController implements this.entry = entry; this.stackPanel = stackPanel; + Roles roles = ureq.getUserSession().getRoles(); + isAdministrativeUser = securityModule.isUserAllowedAdminProps(roles); + authorizedAbsenceEnabled = lectureModule.isAuthorizedAbsenceEnabled(); + mainVC = createVelocityContainer("admin_repository"); segmentView = SegmentViewFactory.createSegmentView("segments", mainVC, this); @@ -227,7 +237,8 @@ public class LectureRepositoryAdminController extends BasicController implements } private void doExportArchive(UserRequest ureq) { - LecturesBlocksEntryExport archive = new LecturesBlocksEntryExport(entry, getTranslator()); + + LecturesBlocksEntryExport archive = new LecturesBlocksEntryExport(entry, isAdministrativeUser, authorizedAbsenceEnabled, getTranslator()); ureq.getDispatchResult().setResultingMediaResource(archive); } diff --git a/src/main/java/org/olat/modules/lecture/ui/TeacherLecturesTableController.java b/src/main/java/org/olat/modules/lecture/ui/TeacherLecturesTableController.java index 3ee5fd46f08829bff919c9fb1e619fcd5146713c..a3e52548ab1d4323e88ef90f748dd9cbae25444a 100644 --- a/src/main/java/org/olat/modules/lecture/ui/TeacherLecturesTableController.java +++ b/src/main/java/org/olat/modules/lecture/ui/TeacherLecturesTableController.java @@ -26,6 +26,7 @@ import javax.xml.transform.TransformerException; import org.apache.pdfbox.exceptions.COSVisitorException; import org.olat.NewControllerFactory; +import org.olat.basesecurity.BaseSecurityModule; import org.olat.core.commons.persistence.SortKey; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; @@ -57,6 +58,7 @@ import org.olat.core.gui.control.generic.closablewrapper.CloseableCalloutWindowC import org.olat.core.gui.control.generic.dtabs.Activateable2; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; +import org.olat.core.id.Roles; import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.StateEntry; import org.olat.core.util.resource.OresHelper; @@ -99,12 +101,17 @@ public class TeacherLecturesTableController extends FormBasicController implemen private final String emptyI18nKey; private final boolean withRepositoryEntry, withTeachers; + private final boolean isAdministrativeUser; + private final boolean authorizedAbsenceEnabled; + @Autowired private UserManager userManager; @Autowired private LectureModule lectureModule; @Autowired private LectureService lectureService; + @Autowired + private BaseSecurityModule securityModule; public TeacherLecturesTableController(UserRequest ureq, WindowControl wControl, boolean admin, String emptyI18nKey, boolean sortAsc, String id, @@ -116,6 +123,10 @@ public class TeacherLecturesTableController extends FormBasicController implemen this.emptyI18nKey = emptyI18nKey; this.withTeachers = withTeachers; this.withRepositoryEntry = withRepositoryEntry; + + Roles roles = ureq.getUserSession().getRoles(); + isAdministrativeUser = securityModule.isUserAllowedAdminProps(roles); + authorizedAbsenceEnabled = lectureModule.isAuthorizedAbsenceEnabled(); initForm(ureq); } @@ -278,7 +289,7 @@ public class TeacherLecturesTableController extends FormBasicController implemen private void doExportLectureBlock(UserRequest ureq, LectureBlock row) { LectureBlock lectureBlock = lectureService.getLectureBlock(row); List<Identity> teachers = lectureService.getTeachers(lectureBlock); - LectureBlockExport export = new LectureBlockExport(lectureBlock, teachers, true, getTranslator()); + LectureBlockExport export = new LectureBlockExport(lectureBlock, teachers, isAdministrativeUser, authorizedAbsenceEnabled, getTranslator()); ureq.getDispatchResult().setResultingMediaResource(export); } diff --git a/src/main/java/org/olat/modules/lecture/ui/export/LectureBlockExport.java b/src/main/java/org/olat/modules/lecture/ui/export/LectureBlockExport.java index b9e6492f5b3d38c8401a59123e80353f36d46f2c..8127fafd32dc06256e86a4c4ddd4f142ce4fc6d7 100644 --- a/src/main/java/org/olat/modules/lecture/ui/export/LectureBlockExport.java +++ b/src/main/java/org/olat/modules/lecture/ui/export/LectureBlockExport.java @@ -59,19 +59,19 @@ public class LectureBlockExport extends OpenXMLWorkbookResource { private final LectureService lectureService; private final List<Identity> teachers; - private final boolean authorizedAbsence; + private final boolean authorizedAbsenceEnabled; private final boolean isAdministrativeUser; private List<UserPropertyHandler> userPropertyHandlers; private final UserManager userManager; - public LectureBlockExport(LectureBlock lectureBlock, List<Identity> teachers, boolean isAdministrativeUser, Translator translator) { + public LectureBlockExport(LectureBlock lectureBlock, List<Identity> teachers, boolean isAdministrativeUser, boolean authorizedAbsenceEnabled, Translator translator) { super(label(lectureBlock)); this.teachers = teachers; this.lectureBlock = lectureBlock; lectureService = CoreSpringFactory.getImpl(LectureService.class); this.isAdministrativeUser = isAdministrativeUser; - this.authorizedAbsence = true; + this.authorizedAbsenceEnabled = authorizedAbsenceEnabled; userManager = CoreSpringFactory.getImpl(UserManager.class); userPropertyHandlers = userManager.getUserPropertyHandlersFor(ParticipantListRepositoryController.USER_PROPS_ID, isAdministrativeUser); this.translator = userManager.getPropertyHandlerTranslator(translator); @@ -188,7 +188,7 @@ public class LectureBlockExport extends OpenXMLWorkbookResource { headerRow.addCell(pos++, Integer.toString(i + 1)); } - if(authorizedAbsence) { + if(authorizedAbsenceEnabled) { //authorized absence headerRow.addCell(pos++, translator.translate("table.header.authorized.absence")); //authorized absence reason @@ -227,7 +227,7 @@ public class LectureBlockExport extends OpenXMLWorkbookResource { row.addCell(pos++, val); } - if(authorizedAbsence && rollCall.getAbsenceAuthorized() != null + if(authorizedAbsenceEnabled && rollCall.getAbsenceAuthorized() != null && rollCall.getAbsenceAuthorized().booleanValue()) { row.addCell(pos++, "x"); row.addCell(pos++, rollCall.getAbsenceReason()); diff --git a/src/main/java/org/olat/modules/lecture/ui/export/LecturesBlocksEntryExport.java b/src/main/java/org/olat/modules/lecture/ui/export/LecturesBlocksEntryExport.java index 6376f113e2f31bd5fc9e8c021e75f2258c9d261f..76d96a044e01720d210db5d1e9ab2c31df01ca2a 100644 --- a/src/main/java/org/olat/modules/lecture/ui/export/LecturesBlocksEntryExport.java +++ b/src/main/java/org/olat/modules/lecture/ui/export/LecturesBlocksEntryExport.java @@ -59,14 +59,19 @@ public class LecturesBlocksEntryExport extends OpenXMLWorkbookResource { private final RepositoryEntry entry; private final Translator translator; private List<LectureBlockWithTeachers> blocks; + private final boolean authorizedAbsenceEnabled; + private final boolean isAdministrativeUser; private final UserManager userManager; private final LectureService lectureService; - public LecturesBlocksEntryExport(RepositoryEntry entry, Translator translator) { + public LecturesBlocksEntryExport(RepositoryEntry entry, boolean isAdministrativeUser, boolean authorizedAbsenceEnabled, Translator translator) { super(label(entry)); this.entry = entry; this.translator = translator; + this.isAdministrativeUser = isAdministrativeUser; + this.authorizedAbsenceEnabled = authorizedAbsenceEnabled; + userManager = CoreSpringFactory.getImpl(UserManager.class); lectureService = CoreSpringFactory.getImpl(LectureService.class); formatter = Formatter.getInstance(translator.getLocale()); @@ -92,7 +97,8 @@ public class LecturesBlocksEntryExport extends OpenXMLWorkbookResource { for(LectureBlockWithTeachers block:blocks) { OpenXMLWorksheet exportBlockSheet = workbook.nextWorksheet(); - LectureBlockExport lectureBlockExport = new LectureBlockExport(block.getLectureBlock(), block.getTeachers(), true, translator); + LectureBlockExport lectureBlockExport = new LectureBlockExport(block.getLectureBlock(), block.getTeachers(), + isAdministrativeUser, authorizedAbsenceEnabled, translator); lectureBlockExport.generate(exportBlockSheet); } } catch (IOException e) {