diff --git a/src/main/java/org/olat/commons/memberlist/ui/MembersAvatarDisplayRunController.java b/src/main/java/org/olat/commons/memberlist/ui/MembersAvatarDisplayRunController.java index a885f67e64e0071efee07e436b51f8f420e6b77c..c91be0cd2cb84ab9777014540e1c035d7a872145 100644 --- a/src/main/java/org/olat/commons/memberlist/ui/MembersAvatarDisplayRunController.java +++ b/src/main/java/org/olat/commons/memberlist/ui/MembersAvatarDisplayRunController.java @@ -113,6 +113,7 @@ public class MembersAvatarDisplayRunController extends FormBasicController { private List<Identity> waiting; private final boolean canEmail; + private final boolean canDownload; private final boolean showOwners; private final boolean showCoaches; private final boolean showParticipants; @@ -146,8 +147,8 @@ public class MembersAvatarDisplayRunController extends FormBasicController { public MembersAvatarDisplayRunController(UserRequest ureq, WindowControl wControl, Translator translator, CourseEnvironment courseEnv, BusinessGroup businessGroup, - List<Identity> owners, List<Identity> coaches, List<Identity> participants, List<Identity> waiting, boolean canEmail, boolean deduplicateList, - boolean showOwners, boolean showCoaches, boolean showParticipants, boolean showWaiting, boolean editable) { + List<Identity> owners, List<Identity> coaches, List<Identity> participants, List<Identity> waiting, boolean canEmail, boolean canDownload, + boolean deduplicateList, boolean showOwners, boolean showCoaches, boolean showParticipants, boolean showWaiting, boolean editable) { super(ureq, wControl, "members", translator); setTranslator(translator); @@ -166,6 +167,7 @@ public class MembersAvatarDisplayRunController extends FormBasicController { this.waiting = waiting; // flags this.canEmail = canEmail; + this.canDownload = canDownload; this.showOwners = showOwners; this.showCoaches = showCoaches; this.showParticipants = showParticipants; @@ -192,8 +194,8 @@ public class MembersAvatarDisplayRunController extends FormBasicController { IdentityEnvironment idEnv = ureq.getUserSession().getIdentityEnvironment(); Identity ownId = idEnv.getIdentity(); Roles roles = idEnv.getRoles(); - boolean memberXlsEnabled = businessGroup != null ? businessGroup.isDownloadMembersLists() && !waiting.contains(ownId) : false; - if (editable && (roles.isOLATAdmin() || roles.isGroupManager() || owners.contains(ownId) || coaches.contains(ownId) || memberXlsEnabled)) { + if (editable && (roles.isOLATAdmin() || roles.isGroupManager() || owners.contains(ownId) || coaches.contains(ownId) + || (canDownload && !waiting.contains(ownId)))) { downloadLink = uifactory.addFormLink("download", "members.download", null, formLayout, Link.BUTTON); downloadLink.setIconLeftCSS("o_icon o_icon_download"); if(formLayout instanceof FormLayoutContainer) { @@ -463,12 +465,12 @@ public class MembersAvatarDisplayRunController extends FormBasicController { private String createBodyTemplate() { if (courseEnv == null) { - String courseName = businessGroup.getName(); - // Build REST URL to business group, use hack via group manager to access - StringBuilder courseLink = new StringBuilder(); - courseLink.append(Settings.getServerContextPathURI()) + String groupName = businessGroup.getName(); + // Build REST URL to business group, + StringBuilder groupLink = new StringBuilder(); + groupLink.append(Settings.getServerContextPathURI()) .append("/auth/BusinessGroup/").append(businessGroup.getKey()); - return translate("email.body.template", new String[]{courseName, courseLink.toString()}); + return translate("email.body.template", new String[]{groupName, groupLink.toString()}); } else { String courseName = courseEnv.getCourseTitle(); // Build REST URL to course element, use hack via group manager to access repo entry diff --git a/src/main/java/org/olat/commons/memberlist/ui/MembersDisplayRunController.java b/src/main/java/org/olat/commons/memberlist/ui/MembersDisplayRunController.java index 81847dd9960eaf31b08cdb4cb6536551dece922e..38772303107badb949f7128cc3b53332c6abf4f5 100644 --- a/src/main/java/org/olat/commons/memberlist/ui/MembersDisplayRunController.java +++ b/src/main/java/org/olat/commons/memberlist/ui/MembersDisplayRunController.java @@ -63,6 +63,7 @@ public class MembersDisplayRunController extends BasicController { private List<Identity> waiting; private final boolean canEmail; + private final boolean canDownload; private final boolean showOwners; private final boolean showCoaches; private final boolean showParticipants; @@ -72,8 +73,8 @@ public class MembersDisplayRunController extends BasicController { public MembersDisplayRunController(UserRequest ureq, WindowControl wControl, Translator translator, CourseEnvironment courseEnv, BusinessGroup businessGroup, - List<Identity> owners, List<Identity> coaches, List<Identity> participants, List<Identity> waiting, boolean canEmail, boolean deduplicateList, - boolean showOwners, boolean showCoaches, boolean showParticipants, boolean showWaiting, boolean editable) { + List<Identity> owners, List<Identity> coaches, List<Identity> participants, List<Identity> waiting, boolean canEmail, boolean canDownload, + boolean deduplicateList, boolean showOwners, boolean showCoaches, boolean showParticipants, boolean showWaiting, boolean editable) { super(ureq, wControl); setTranslator(translator); this.courseOrGroupIdentifier = courseEnv == null ? GUIPREF_KEY_GROUPMEMBER + businessGroup.getKey() @@ -87,6 +88,7 @@ public class MembersDisplayRunController extends BasicController { this.waiting = waiting; // flags this.canEmail = canEmail; + this.canDownload = canDownload; this.showOwners = showOwners; this.showCoaches = showCoaches; this.showParticipants = showParticipants; @@ -135,7 +137,7 @@ public class MembersDisplayRunController extends BasicController { private void doOpenPortraitView(UserRequest ureq) { if (membersAvatarController == null) { membersAvatarController = new MembersAvatarDisplayRunController(ureq, getWindowControl(), getTranslator(), - courseEnv, businessGroup, owners, coaches, participants, waiting, canEmail, deduplicateList, + courseEnv, businessGroup, owners, coaches, participants, waiting, canEmail, canDownload, deduplicateList, showOwners, showCoaches, showParticipants, showWaiting, editable); listenTo(membersAvatarController); } @@ -149,7 +151,7 @@ public class MembersDisplayRunController extends BasicController { private void doOpenListView(UserRequest ureq, boolean onClick) { if (membersListController == null) { membersListController = new MembersListDisplayRunController(ureq, getWindowControl(), getTranslator(), - courseEnv, businessGroup, owners, coaches, participants, waiting, canEmail, deduplicateList, + courseEnv, businessGroup, owners, coaches, participants, waiting, canEmail, canDownload, deduplicateList, showOwners, showCoaches, showParticipants, showWaiting, editable); listenTo(membersListController); } diff --git a/src/main/java/org/olat/commons/memberlist/ui/MembersListDisplayRunController.java b/src/main/java/org/olat/commons/memberlist/ui/MembersListDisplayRunController.java index 78c9887e565a627ce547e5b0ff1e211a41ce54ae..1ed295021d74437e8ab5a3d817aeeb23b31f4ba3 100644 --- a/src/main/java/org/olat/commons/memberlist/ui/MembersListDisplayRunController.java +++ b/src/main/java/org/olat/commons/memberlist/ui/MembersListDisplayRunController.java @@ -131,8 +131,8 @@ public class MembersListDisplayRunController extends BasicController { public MembersListDisplayRunController(UserRequest ureq, WindowControl wControl, Translator translator, CourseEnvironment courseEnv, BusinessGroup businessGroup, - List<Identity> owners, List<Identity> coaches, List<Identity> participants, List<Identity> waiting, boolean canEmail, boolean deduplicateList, - boolean showOwners, boolean showCoaches, boolean showParticipants, boolean showWaiting, boolean editable) { + List<Identity> owners, List<Identity> coaches, List<Identity> participants, List<Identity> waiting, boolean canEmail, boolean canDownload, + boolean deduplicateList, boolean showOwners, boolean showCoaches, boolean showParticipants, boolean showWaiting, boolean editable) { super(ureq, wControl); Translator fallback = userManager.getPropertyHandlerTranslator(getTranslator()); setTranslator(Util.createPackageTranslator(translator, fallback, getLocale())); @@ -163,8 +163,8 @@ public class MembersListDisplayRunController extends BasicController { IdentityEnvironment idEnv = ureq.getUserSession().getIdentityEnvironment(); Identity ownId = idEnv.getIdentity(); Roles roles = idEnv.getRoles(); - boolean memberXlsEnabled = businessGroup != null ? businessGroup.isDownloadMembersLists() && !waiting.contains(ownId) : false; - if (editable && (roles.isOLATAdmin() || roles.isGroupManager() || owners.contains(ownId) || coaches.contains(ownId) || memberXlsEnabled)) { + if (editable && (roles.isOLATAdmin() || roles.isGroupManager() || owners.contains(ownId) || coaches.contains(ownId) + || (canDownload && !waiting.contains(ownId)))) { downloadLink = LinkFactory.createLink(null, "download", "download", "members.download", getTranslator(), mainVC, this, Link.BUTTON); downloadLink.setIconLeftCSS("o_icon o_icon_download"); printLink = LinkFactory.createButton("print", mainVC, this); @@ -296,12 +296,12 @@ public class MembersListDisplayRunController extends BasicController { private String createBodyTemplate() { if (courseEnv == null) { - String courseName = businessGroup.getName(); + String groupName = businessGroup.getName(); // Build REST URL to business group, use hack via group manager to access - StringBuilder courseLink = new StringBuilder(); - courseLink.append(Settings.getServerContextPathURI()) + StringBuilder groupLink = new StringBuilder(); + groupLink.append(Settings.getServerContextPathURI()) .append("/auth/BusinessGroup/").append(businessGroup.getKey()); - return translate("email.body.template", new String[]{courseName, courseLink.toString()}); + return translate("email.body.template", new String[]{groupName, groupLink.toString()}); } else { String courseName = courseEnv.getCourseTitle(); // Build REST URL to course element, use hack via group manager to access repo entry diff --git a/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java b/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java index 0a5b6146794f8f6ee8fba82bac4e09935cba4256..31ff0ef6ddeab72884286d12e160ae72631a06d1 100644 --- a/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java +++ b/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java @@ -113,9 +113,8 @@ public class MembersMailController extends FormBasicController { public MembersMailController(UserRequest ureq, WindowControl wControl, Translator translator, CourseEnvironment courseEnv, List<Member> ownerList, List<Member> coachList, List<Member> participantList, List<Member> waitingList, String bodyTemplate) { - super(ureq, wControl, Util.createPackageTranslator(MailHelper.class, ureq.getLocale())); + super(ureq, wControl); setTranslator(Util.createPackageTranslator(translator, MailHelper.class, ureq.getLocale())); -// setTranslator(translator); this.courseEnv = courseEnv; this.ownerList = ownerList; @@ -417,7 +416,7 @@ public class MembersMailController extends FormBasicController { showError("FileMoveCopyFailed",""); } else { attachmentSize += size; - FormLink removeFile = uifactory.addFormLink("delete_" + (++counter), "delete", "", null, uploadCont, Link.LINK); + FormLink removeFile = uifactory.addFormLink("delete_" + (++counter), "delete", "delete", null, uploadCont, Link.LINK); removeFile.setIconLeftCSS("o_icon o_icon-fw o_icon_delete"); String css = CSSHelper.createFiletypeIconCssClassFor(filename); Attachment wrapper = new Attachment(attachment, attachment.getName(), css, removeFile); diff --git a/src/main/java/org/olat/course/nodes/members/_content/attachments.html b/src/main/java/org/olat/commons/memberlist/ui/_content/attachments.html similarity index 100% rename from src/main/java/org/olat/course/nodes/members/_content/attachments.html rename to src/main/java/org/olat/commons/memberlist/ui/_content/attachments.html diff --git a/src/main/java/org/olat/course/nodes/MembersCourseNode.java b/src/main/java/org/olat/course/nodes/MembersCourseNode.java index c52146bec76d65408787b222563f9760516e3af1..b6e1cd71fadbe1ac044cd28a5dadc32bb90d65bd 100644 --- a/src/main/java/org/olat/course/nodes/MembersCourseNode.java +++ b/src/main/java/org/olat/course/nodes/MembersCourseNode.java @@ -71,6 +71,7 @@ public class MembersCourseNode extends AbstractAccessableCourseNode { public static final String CONFIG_KEY_EMAIL_FUNCTION = "emailFunction"; + public static final String CONFIG_KEY_DOWNLOAD_FUNCTION = "downloadFunction"; public static final String EMAIL_FUNCTION_ALL = "all"; public static final String EMAIL_FUNCTION_COACH_ADMIN = "coachAndAdmin"; @@ -175,6 +176,7 @@ public class MembersCourseNode extends AbstractAccessableCourseNode { config.setBooleanEntry(CONFIG_KEY_SHOWCOACHES, true); config.setBooleanEntry(CONFIG_KEY_SHOWPARTICIPANTS, true); config.setStringValue(CONFIG_KEY_EMAIL_FUNCTION, EMAIL_FUNCTION_COACH_ADMIN); + config.setStringValue(CONFIG_KEY_DOWNLOAD_FUNCTION, EMAIL_FUNCTION_COACH_ADMIN); config.setConfigurationVersion(3); } diff --git a/src/main/java/org/olat/course/nodes/members/MembersConfigForm.java b/src/main/java/org/olat/course/nodes/members/MembersConfigForm.java index 78108d66c8aa669132ca6e744f6cd92be51aebfa..a55b3d082eba6267bac9620b08f9874e926057db 100755 --- a/src/main/java/org/olat/course/nodes/members/MembersConfigForm.java +++ b/src/main/java/org/olat/course/nodes/members/MembersConfigForm.java @@ -58,6 +58,7 @@ public class MembersConfigForm extends FormBasicController { private final ModuleConfiguration config; private MultipleSelectionElement showOwners; private SingleSelection emailFunctionEl; + private SingleSelection downloadFunctionEl; private final MembersSelectorFormFragment membersFragment; @@ -130,6 +131,17 @@ public class MembersConfigForm extends FormBasicController { } else if(MembersCourseNode.EMAIL_FUNCTION_ALL.equals(emailFct)) { emailFunctionEl.select(MembersCourseNode.EMAIL_FUNCTION_ALL, true); } + String[] downloadFctValues = new String[]{ + translate("download.function.all"), translate("download.function.coachAndAdmin") + }; + downloadFunctionEl = uifactory.addRadiosVertical("download", "download.function", formLayout, emailFctKeys, downloadFctValues); + downloadFunctionEl.addActionListener(FormEvent.ONCLICK); + String downloadFct = config.getStringValue(MembersCourseNode.CONFIG_KEY_DOWNLOAD_FUNCTION, MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN); + if(MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN.equals(downloadFct)) { + downloadFunctionEl.select(MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN, true); + } else if(MembersCourseNode.EMAIL_FUNCTION_ALL.equals(downloadFct)) { + downloadFunctionEl.select(MembersCourseNode.EMAIL_FUNCTION_ALL, true); + } subm = uifactory.addFormSubmitButton("save", formLayout); @@ -192,6 +204,14 @@ public class MembersConfigForm extends FormBasicController { } fireEvent(ureq, Event.CHANGED_EVENT); } + } else if (downloadFunctionEl == source) { + if (downloadFunctionEl.isOneSelected()) { + if (downloadFunctionEl.isSelected(0)) { + config.setStringValue(MembersCourseNode.CONFIG_KEY_DOWNLOAD_FUNCTION, MembersCourseNode.EMAIL_FUNCTION_ALL); + } else { + config.setStringValue(MembersCourseNode.CONFIG_KEY_DOWNLOAD_FUNCTION, MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN); + } + } } update(); diff --git a/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java b/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java index 2e9e07277f41bb1736d89e45fc4f9967385da877..e4eafac8c86332c1756733a6784d9742a0803f9f 100644 --- a/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java +++ b/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java @@ -57,8 +57,6 @@ public class MembersCourseNodeRunController extends BasicController { public static final String USER_PROPS_ID = MembersCourseNodeRunController.class.getName(); - private CourseEnvironment courseEnv; - private boolean canEmail, deduplicateList, showOwners, showCoaches = false, showParticipants = false; private List<Identity> owners, coaches, participants; private MembersDisplayRunController membersDisplayRunController; @@ -73,18 +71,21 @@ public class MembersCourseNodeRunController extends BasicController { public MembersCourseNodeRunController(UserRequest ureq, WindowControl wControl, UserCourseEnvironment userCourseEnv, ModuleConfiguration config) { super(ureq, wControl); - courseEnv = userCourseEnv.getCourseEnvironment(); + CourseEnvironment courseEnv = userCourseEnv.getCourseEnvironment(); this.coaches = new ArrayList<>(); this.participants = new ArrayList<>(); - showOwners = config.getBooleanSafe(MembersCourseNode.CONFIG_KEY_SHOWOWNER); + boolean showOwners = config.getBooleanSafe(MembersCourseNode.CONFIG_KEY_SHOWOWNER); MembersCourseNodeConfiguration nodeConfig = (MembersCourseNodeConfiguration)CourseNodeFactory.getInstance().getCourseNodeConfiguration("cmembers"); - deduplicateList = nodeConfig.isDeduplicateList(); + boolean deduplicateList = nodeConfig.isDeduplicateList(); String emailFct = config.getStringValue(MembersCourseNode.CONFIG_KEY_EMAIL_FUNCTION, MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN); - canEmail = MembersCourseNode.EMAIL_FUNCTION_ALL.equals(emailFct) || userCourseEnv.isAdmin() || userCourseEnv.isCoach(); + boolean canEmail = MembersCourseNode.EMAIL_FUNCTION_ALL.equals(emailFct) || userCourseEnv.isAdmin() || userCourseEnv.isCoach(); + + String downloadFct = config.getStringValue(MembersCourseNode.CONFIG_KEY_DOWNLOAD_FUNCTION, MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN); + boolean canDownload = MembersCourseNode.EMAIL_FUNCTION_ALL.equals(downloadFct) || userCourseEnv.isAdmin() || userCourseEnv.isCoach(); IModuleConfiguration membersFrag = IModuleConfiguration.fragment("members", config); @@ -95,6 +96,7 @@ public class MembersCourseNodeRunController extends BasicController { owners = Collections.emptyList(); } + boolean showCoaches = false; if(membersFrag.anyTrue(MembersCourseNode.CONFIG_KEY_COACHES_ALL, MembersCourseNode.CONFIG_KEY_COACHES_COURSE) || membersFrag.hasAnyOf(MembersCourseNode.CONFIG_KEY_COACHES_GROUP, MembersCourseNode.CONFIG_KEY_COACHES_AREA)) { @@ -104,6 +106,7 @@ public class MembersCourseNodeRunController extends BasicController { showCoaches = true; } + boolean showParticipants = false; if(membersFrag.anyTrue(MembersCourseNode.CONFIG_KEY_PARTICIPANTS_ALL, MembersCourseNode.CONFIG_KEY_PARTICIPANTS_COURSE) || membersFrag.hasAnyOf(MembersCourseNode.CONFIG_KEY_PARTICIPANTS_GROUP, MembersCourseNode.CONFIG_KEY_PARTICIPANTS_AREA)) { @@ -114,7 +117,7 @@ public class MembersCourseNodeRunController extends BasicController { } membersDisplayRunController = new MembersDisplayRunController(ureq, wControl, getTranslator(), courseEnv, null, - owners, coaches, participants, new ArrayList<>(), canEmail, deduplicateList, showOwners, showCoaches, + owners, coaches, participants, new ArrayList<>(), canEmail, canDownload, deduplicateList, showOwners, showCoaches, showParticipants, false, true); listenTo(membersDisplayRunController); diff --git a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties index 3bcdfa30079327a8865a13daa2d429c1a4257520..31b49b9afb9567dcc489e06ef62b9a125cda8222 100644 --- a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties @@ -19,6 +19,9 @@ email.send=Schicken email.function=Emailfunktion email.function.all=Emailfunktion f\u00FCr alle Benutzer freischalten email.function.coachAndAdmin=Emailfunktion nur f\u00FCr Betreuer and Administratoren freischalten +download.function=Downloadfunktion +download.function.all=Downloadfunktion f\u00FCr alle Benutzer freischalten +download.function.coachAndAdmin=Downloadfunktion nur f\u00FCr Betreuer and Administratoren freischalten msg.send.ok=$org.olat.modules.co\:msg.send.ok error.msg.send.partially.nok=$org.olat.modules.co\:error.msg.send.partially.nok error.msg.send.invalid.rcps=$org.olat.modules.co\:error.msg.send.invalid.rcps @@ -36,7 +39,7 @@ owners.to=Aministratoren von Kurs "{0}" pane.tab.accessibility=Zugang pane.tab.membersconfig=Konfiguration participants.to=Teilnehmer von Kurs "{0}" -print.title=Fotobuch +print.title=Mitgliederliste select.members=Benutzer ausw\u00E4hlen title_info=Teilnehmerliste message.want.coaches=Betreuer diff --git a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties index 8a4f3a68ac47f91d5d96a83108f1e4b19c7b94dc..f6bbfe7b264d2157e90833f56b8089f016ab2083 100644 --- a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties @@ -19,6 +19,9 @@ email.send=Send email.function=E-mail function email.function.all=Unlock e-mail function for all users email.function.coachAndAdmin=Unlock e-mail function only for coach and administrators +download.function=Download function +download.function.all=Unlock download function for all users +download.function.coachAndAdmin=Unlock download function only for coach and administrators members.coaches=Coach members.email.title=Send e-mail members.info=Select which user group should be shown in the participant list. diff --git a/src/main/java/org/olat/group/ui/homepage/GroupMembersDisplayController.java b/src/main/java/org/olat/group/ui/homepage/GroupMembersDisplayController.java index 78dd158e5b90699d6d92035220bb8b3cee40204c..cbe77b130c2d81b2d54e296350a651abc4d16f46 100644 --- a/src/main/java/org/olat/group/ui/homepage/GroupMembersDisplayController.java +++ b/src/main/java/org/olat/group/ui/homepage/GroupMembersDisplayController.java @@ -78,8 +78,8 @@ public class GroupMembersDisplayController extends BasicController { waiting = Collections.emptyList(); } - membersDisplayRunController = new MembersDisplayRunController(ureq, wControl, getTranslator(), null, businessGroup, - new ArrayList<>(), coaches, participants, waiting, false, true, false, showCoaches, showParticipants, showWaiting, false); + membersDisplayRunController = new MembersDisplayRunController(ureq, wControl, getTranslator(), null, businessGroup, new ArrayList<>(), + coaches, participants, waiting, false, false, true, false, showCoaches, showParticipants, showWaiting, false); listenTo(membersDisplayRunController); putInitialPanel(membersDisplayRunController.getInitialComponent()); diff --git a/src/main/java/org/olat/group/ui/run/GroupMembersRunController.java b/src/main/java/org/olat/group/ui/run/GroupMembersRunController.java index 33f35ee9e3fed0bf60dd9e035e077619a4f4afc2..c0f6a22a7cd787165f21dc240dfade54903836ac 100644 --- a/src/main/java/org/olat/group/ui/run/GroupMembersRunController.java +++ b/src/main/java/org/olat/group/ui/run/GroupMembersRunController.java @@ -68,9 +68,10 @@ public class GroupMembersRunController extends BasicController { waiting = businessGroupService.getMembers(businessGroup, GroupRoles.waiting.name()); } else { waiting = Collections.emptyList(); - } - membersDisplayRunController = new MembersDisplayRunController(ureq, wControl, getTranslator(), null, businessGroup, - new ArrayList<>(), coaches, participants, waiting, canEmail, true, false, showCoaches, showParticipants, showWaiting, true); + } + boolean canDownload = businessGroup.isDownloadMembersLists(); + membersDisplayRunController = new MembersDisplayRunController(ureq, wControl, getTranslator(), null, businessGroup, new ArrayList<>(), + coaches, participants, waiting, canEmail, canDownload, true, false, showCoaches, showParticipants, showWaiting, true); listenTo(membersDisplayRunController); putInitialPanel(membersDisplayRunController.getInitialComponent()); diff --git a/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_de.properties index b0d9f668220115b0b416143b58dbd53b14397bb0..45ea8a8961e5c1c1d12af5cc1f79227bbbc022bc 100644 --- a/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_de.properties @@ -106,4 +106,4 @@ members.toggle=Portrait members.download=Herunterladen select.members=Benutzer ausw\u00E4hlen contact.external.list.example=xyz@olat.com, abc@frentix.com<br/>user@yourcompany.ch -print.title=Fotobuch +print.title=Mitgliederliste