diff --git a/src/main/java/de/bps/course/nodes/den/DENManager.java b/src/main/java/de/bps/course/nodes/den/DENManager.java index 2e2ed6fbf885daceab38916529521d81058e2a5c..32cdfd033332339b9a5c9dbfbaa6d66c06561b11 100644 --- a/src/main/java/de/bps/course/nodes/den/DENManager.java +++ b/src/main/java/de/bps/course/nodes/den/DENManager.java @@ -38,6 +38,7 @@ import org.olat.commons.calendar.model.KalendarEvent; import org.olat.commons.calendar.model.KalendarEventLink; import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.EscapeMode; import org.olat.core.gui.components.table.BooleanColumnDescriptor; import org.olat.core.gui.components.table.DefaultColumnDescriptor; import org.olat.core.gui.components.table.TableController; @@ -608,11 +609,15 @@ public class DENManager { tableCntrl.addColumnDescriptor(new StrongColumnDescriptor("dates.table.location", 3, null, ureq.getLocale())); tableCntrl.addColumnDescriptor(new DefaultColumnDescriptor("dates.table.duration", 2, null, ureq.getLocale())); tableCntrl.addColumnDescriptor(new DefaultColumnDescriptor("dates.table.comment", 4, null, ureq.getLocale())); - tableCntrl.addColumnDescriptor(new DefaultColumnDescriptor("dates.table.participant.name", 5, null, ureq.getLocale())); + DefaultColumnDescriptor dcd = new DefaultColumnDescriptor("dates.table.participant.name", 5, null, ureq.getLocale()); + dcd.setEscapeHtml(EscapeMode.none); + tableCntrl.addColumnDescriptor(dcd); boolean isAdministrativeUser = CoreSpringFactory.getImpl(BaseSecurityModule.class).isUserAllowedAdminProps(ureq.getUserSession().getRoles()); if(isAdministrativeUser) { - tableCntrl.addColumnDescriptor(new DefaultColumnDescriptor("dates.table.participant.username", 6, null, ureq.getLocale())); + DefaultColumnDescriptor ucd = new DefaultColumnDescriptor("dates.table.participant.username", 6, null, ureq.getLocale()); + ucd.setEscapeHtml(EscapeMode.none); + tableCntrl.addColumnDescriptor(ucd); } tableCntrl.addColumnDescriptor(new BooleanColumnDescriptor("participants", 7, DENListTableDataModel.CHANGE_ACTION, diff --git a/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeStep02.java b/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeStep02.java index c8aa8a7f5827dc5c6b35931a77cc331fb7e6e423..94bb648a27bd55f59e25bb4b6b0bf5f8187613e7 100644 --- a/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeStep02.java +++ b/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeStep02.java @@ -37,14 +37,17 @@ import org.olat.basesecurity.Constants; import org.olat.basesecurity.SecurityGroup; import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.EscapeMode; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.impl.Form; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiColumnModel; +import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModelFactory; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModelImpl; +import org.olat.core.gui.components.form.flexible.impl.elements.table.TextFlexiCellRenderer; import org.olat.core.gui.components.table.TableDataModel; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; @@ -246,22 +249,23 @@ class UserBulkChangeStep02 extends BasicStep { // add each user: mergedDataChanges.add(userDataArray); } - + + TextFlexiCellRenderer textRenderer = new TextFlexiCellRenderer(EscapeMode.none); FlexiTableColumnModel tableColumnModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); // fixed fields: int colPos = 0; tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.user.login", colPos++)); tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("form.name.pwd", colPos++)); - tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("form.name.language", colPos++)); + tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, "form.name.language", colPos++, false, null, FlexiColumnModel.ALIGNMENT_LEFT, textRenderer)); for (int j = 0; j < userPropertyHandlers.size(); j++) { UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(j); - tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(userPropertyHandler.i18nColumnDescriptorLabelKey(), colPos++)); + tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, userPropertyHandler.i18nColumnDescriptorLabelKey(), colPos++, false, null, FlexiColumnModel.ALIGNMENT_LEFT, textRenderer)); } - tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.role.useradmin", colPos++)); - tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.role.groupadmin", colPos++)); - tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.role.author", colPos++)); - tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.role.admin", colPos++)); - tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.role.status", colPos++)); + tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, "table.role.useradmin", colPos++, false, null, FlexiColumnModel.ALIGNMENT_LEFT, textRenderer)); + tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, "table.role.groupadmin", colPos++, false, null, FlexiColumnModel.ALIGNMENT_LEFT, textRenderer)); + tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, "table.role.author", colPos++, false, null, FlexiColumnModel.ALIGNMENT_LEFT, textRenderer)); + tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, "table.role.admin", colPos++, false, null, FlexiColumnModel.ALIGNMENT_LEFT, textRenderer)); + tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, "table.role.status", colPos++, false, null, FlexiColumnModel.ALIGNMENT_LEFT, textRenderer)); FlexiTableDataModel<List<String>> tableDataModel = new FlexiTableDataModelImpl<List<String>>(new OverviewModel(mergedDataChanges, colPos), tableColumnModel); uifactory.addTableElement(ureq, getWindowControl(), "newUsers", tableDataModel, formLayoutVertical); diff --git a/src/main/java/org/olat/core/util/mail/MailBoxExtension.java b/src/main/java/org/olat/core/util/mail/MailBoxExtension.java index 816e04167459bc98c83bb63b292aa71fa3e4f443..8458a6bf2dec2e49d6ab4f068cf1f08de9f9df42 100644 --- a/src/main/java/org/olat/core/util/mail/MailBoxExtension.java +++ b/src/main/java/org/olat/core/util/mail/MailBoxExtension.java @@ -126,7 +126,7 @@ public class MailBoxExtension extends BasicManager implements MailContextResolve mailManager.delete(inMail, identity, true); } - Collection<DBMailLight> outbox = new HashSet<DBMailLight>(mailManager.getOutbox(identity, 0, 0)); + Collection<DBMailLight> outbox = new HashSet<DBMailLight>(mailManager.getOutbox(identity, 0, 0, false)); for(DBMailLight outMail:outbox) { mailManager.delete(outMail, identity, true); } diff --git a/src/main/java/org/olat/core/util/mail/MailManager.java b/src/main/java/org/olat/core/util/mail/MailManager.java index 3e66f60f61ef29483c36387fae1a7b0a770da778..95766d2ba10f484f92c1ddfb6c91155a4931f68f 100644 --- a/src/main/java/org/olat/core/util/mail/MailManager.java +++ b/src/main/java/org/olat/core/util/mail/MailManager.java @@ -113,7 +113,7 @@ public interface MailManager { * @param maxResults * @return */ - public List<DBMailLight> getOutbox(Identity from, int firstResult, int maxResults); + public List<DBMailLight> getOutbox(Identity from, int firstResult, int maxResults, boolean fetchRecipients); public List<DBMailLight> getEmailsByMetaId(String metaId); diff --git a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java index 3a7952f128dbdadacb400e78eb21902736c3bfb7..39824cb575ca0da5874b86312b978498d7ac6009 100644 --- a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java +++ b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java @@ -507,13 +507,13 @@ public class MailManagerImpl extends BasicManager implements MailManager { * @return */ @Override - public List<DBMailLight> getOutbox(Identity from, int firstResult, int maxResults) { + public List<DBMailLight> getOutbox(Identity from, int firstResult, int maxResults, boolean fetchRecipients) { StringBuilder sb = new StringBuilder(); sb.append("select distinct(mail) from ").append(DBMailLightImpl.class.getName()).append(" mail") .append(" inner join fetch mail.from fromRecipient") .append(" inner join fromRecipient.recipient fromRecipientIdentity") - .append(" inner join mail.recipients recipient") - .append(" inner join recipient.recipient recipientIdentity") + .append(" inner join ").append(fetchRecipients ? "fetch" : "").append(" mail.recipients recipient") + .append(" inner join ").append(fetchRecipients ? "fetch" : "").append(" recipient.recipient recipientIdentity") .append(" where fromRecipientIdentity.key=:fromKey and fromRecipient.deleted=false and recipientIdentity.key!=:fromKey") .append(" order by mail.creationDate desc"); diff --git a/src/main/java/org/olat/core/util/mail/ui/MailListController.java b/src/main/java/org/olat/core/util/mail/ui/MailListController.java index c8b4068a1bd2b2226c1cdf0ecd33d75c9cd77032..fa3dd38abc9b22d21245fe6b0542b52056d0bd95 100644 --- a/src/main/java/org/olat/core/util/mail/ui/MailListController.java +++ b/src/main/java/org/olat/core/util/mail/ui/MailListController.java @@ -234,7 +234,7 @@ public class MailListController extends BasicController implements Activateable2 if(StringHelper.containsNonWhitespace(metaId)) { mails = mailManager.getEmailsByMetaId(metaId); } else { - mails = mailManager.getOutbox(getIdentity(), 0, -1); + mails = mailManager.getOutbox(getIdentity(), 0, -1, true); } //strip meta emails diff --git a/src/main/java/org/olat/course/nodes/en/ENRunController.java b/src/main/java/org/olat/course/nodes/en/ENRunController.java index 8bbee772a671b05ed2f076e898bfa2bb5db5a60d..e1e38b9aa2c4f4ddca6933f0fdf1eb8043dbd12a 100644 --- a/src/main/java/org/olat/course/nodes/en/ENRunController.java +++ b/src/main/java/org/olat/course/nodes/en/ENRunController.java @@ -30,6 +30,7 @@ import java.util.List; import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; +import org.olat.core.gui.components.EscapeMode; import org.olat.core.gui.components.table.BooleanColumnDescriptor; import org.olat.core.gui.components.table.DefaultColumnDescriptor; import org.olat.core.gui.components.table.Table; @@ -277,7 +278,9 @@ public class ENRunController extends BasicController implements GenericEventList tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("grouplist.table.desc", 1, null, ureq.getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("grouplist.table.partipiciant", 2, null, ureq.getLocale())); tableCtr.addColumnDescriptor(hasAnyWaitingList,new DefaultColumnDescriptor("grouplist.table.waitingList", 3, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("grouplist.table.state", 4, null, ureq.getLocale())); + DefaultColumnDescriptor stateColdEsc = new DefaultColumnDescriptor("grouplist.table.state", 4, null, ureq.getLocale()); + stateColdEsc.setEscapeHtml(EscapeMode.none); + tableCtr.addColumnDescriptor(stateColdEsc); BooleanColumnDescriptor columnDesc = new BooleanColumnDescriptor("grouplist.table.enroll", 5, CMD_ENROLL_IN_GROUP, translate(CMD_ENROLL_IN_GROUP), translate("grouplist.table.no_action")); columnDesc.setSortingAllowed(false); diff --git a/src/main/java/org/olat/repository/ui/RepositoryEntryAccessColumnDescriptor.java b/src/main/java/org/olat/repository/ui/RepositoryEntryAccessColumnDescriptor.java index f86ea8094f856fb35f1cab9cb86392cfdba5f7f7..7c59346826d82440b837acf2ccff51aa8a3ad5ce 100644 --- a/src/main/java/org/olat/repository/ui/RepositoryEntryAccessColumnDescriptor.java +++ b/src/main/java/org/olat/repository/ui/RepositoryEntryAccessColumnDescriptor.java @@ -52,29 +52,30 @@ public class RepositoryEntryAccessColumnDescriptor implements CustomCellRenderer //fxdiff VCRP-1,2: access control of resources if(re.isMembersOnly()) { sb.append(translator.translate("table.header.access.membersonly")); - } - switch (re.getAccess()) { - case RepositoryEntry.ACC_OWNERS: - sb.append(translator.translate("table.header.access.owner")); - break; - case RepositoryEntry.ACC_OWNERS_AUTHORS: - sb.append(translator.translate("table.header.access.author")); - break; - case RepositoryEntry.ACC_USERS: - sb.append(translator.translate("table.header.access.user")); - break; - case RepositoryEntry.ACC_USERS_GUESTS: { - if(!guestLoginEnabled) { + } else { + switch (re.getAccess()) { + case RepositoryEntry.ACC_OWNERS: + sb.append(translator.translate("table.header.access.owner")); + break; + case RepositoryEntry.ACC_OWNERS_AUTHORS: + sb.append(translator.translate("table.header.access.author")); + break; + case RepositoryEntry.ACC_USERS: sb.append(translator.translate("table.header.access.user")); - } else { - sb.append(translator.translate("table.header.access.guest")); + break; + case RepositoryEntry.ACC_USERS_GUESTS: { + if(!guestLoginEnabled) { + sb.append(translator.translate("table.header.access.user")); + } else { + sb.append(translator.translate("table.header.access.guest")); + } + break; } - break; + default: + // OLAT-6272 in case of broken repo entries with no access code + // return error instead of nothing + sb.append("ERROR"); } - default: - // OLAT-6272 in case of broken repo entries with no access code - // return error instead of nothing - sb.append("ERROR"); } } } diff --git a/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java b/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java index e9d3379b5d8d21bf6ead14fbb253f9e8dae0d420..7d01b6feb7e2238de682bf8e1a82db53c86d3bd3 100644 --- a/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java +++ b/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java @@ -210,9 +210,9 @@ public class CoursesWebService { @PUT @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Response createEmptyCourse(@QueryParam("shortTitle") String shortTitle, @QueryParam("title") String title, - @QueryParam("softKey") String softKey, @QueryParam("externalId") String externalId, - @QueryParam("externalRef") String externalRef, @QueryParam("managedFlags") String managedFlags, - @QueryParam("sharedFolderSoftKey") String sharedFolderSoftKey, + @QueryParam("softKey") String softKey, @QueryParam("access") Integer access, @QueryParam("membersOnly") Boolean membersOnly, + @QueryParam("externalId") String externalId, @QueryParam("externalRef") String externalRef, + @QueryParam("managedFlags") String managedFlags, @QueryParam("sharedFolderSoftKey") String sharedFolderSoftKey, @QueryParam("copyFrom") Long copyFrom, @Context HttpServletRequest request) { if(!isAuthor(request)) { @@ -221,12 +221,15 @@ public class CoursesWebService { CourseConfigVO configVO = new CourseConfigVO(); configVO.setSharedFolderSoftKey(sharedFolderSoftKey); + int accessInt = (access == null ? RepositoryEntry.ACC_OWNERS : access.intValue()); + boolean membersOnlyBool = (membersOnly == null ? false : membersOnly.booleanValue()); + ICourse course; UserRequest ureq = getUserRequest(request); if(copyFrom != null) { - course = copyCourse(copyFrom, ureq, shortTitle, title, softKey, externalId, externalRef, managedFlags, configVO); + course = copyCourse(copyFrom, ureq, shortTitle, title, softKey, accessInt, membersOnlyBool, externalId, externalRef, managedFlags, configVO); } else { - course = createEmptyCourse(ureq.getIdentity(), shortTitle, title, softKey, externalId, externalRef, managedFlags, configVO); + course = createEmptyCourse(ureq.getIdentity(), shortTitle, title, softKey, accessInt, membersOnlyBool, externalId, externalRef, managedFlags, configVO); } CourseVO vo = ObjectFactory.get(course); return Response.ok(vo).build(); @@ -255,8 +258,9 @@ public class CoursesWebService { CourseConfigVO configVO = new CourseConfigVO(); ICourse course = createEmptyCourse(ureq.getIdentity(), courseVo.getTitle(), - courseVo.getTitle(), courseVo.getSoftKey(), courseVo.getExternalId(), - courseVo.getExternalRef(), courseVo.getManagedFlags(), configVO); + courseVo.getTitle(), courseVo.getSoftKey(), RepositoryEntry.ACC_OWNERS, false, + courseVo.getExternalId(), courseVo.getExternalRef(), courseVo.getManagedFlags(), + configVO); CourseVO vo = ObjectFactory.get(course); return Response.ok(vo).build(); } @@ -287,9 +291,11 @@ public class CoursesWebService { if(length > 0) { Long accessRaw = partsReader.getLongValue("access"); int access = accessRaw != null ? accessRaw.intValue() : RepositoryEntry.ACC_OWNERS; + String membersOnlyRaw = partsReader.getValue("membersOnly"); + boolean membersonly = "true".equals(membersOnlyRaw); String softKey = partsReader.getValue("softkey"); String displayName = partsReader.getValue("displayname"); - ICourse course = importCourse(ureq, identity, tmpFile, displayName, softKey, access); + ICourse course = importCourse(ureq, identity, tmpFile, displayName, softKey, access, membersonly); CourseVO vo = ObjectFactory.get(course); return Response.ok(vo).build(); } @@ -305,7 +311,7 @@ public class CoursesWebService { } public static ICourse importCourse(UserRequest ureq, Identity identity, File fCourseImportZIP, - String displayName, String softKey, int access) { + String displayName, String softKey, int access, boolean membersOnly) { log.info("REST Import course " + displayName + " START"); @@ -344,7 +350,7 @@ public class CoursesWebService { //make the repository RepositoryEntry re = createCourseRepositoryEntry(identity, displayName, softKey, null, null, null, newCourseResource); - prepareSecurityGroup(identity, re, access); + prepareSecurityGroup(identity, re, access, membersOnly); //update tree course.getRunStructure().getRootNode().setShortTitle(Formatter.truncateOnly(course.getCourseTitle(), 25)); //do not use truncate! @@ -418,16 +424,25 @@ public class CoursesWebService { } public static ICourse copyCourse(Long copyFrom, UserRequest ureq, String name, String longTitle, - String softKey, String externalId, String externalRef, String managedFlags, CourseConfigVO courseConfigVO) { + String softKey, int access, boolean membersOnly, String externalId, String externalRef, String managedFlags, + CourseConfigVO courseConfigVO) { String shortTitle = name; //String learningObjectives = name + " (Example of creating a new course)"; OLATResourceable originalOresTrans = OresHelper.createOLATResourceableInstance(CourseModule.class, copyFrom); RepositoryEntry src = RepositoryManager.getInstance().lookupRepositoryEntry(originalOresTrans, false); + if(src == null) { + src = RepositoryManager.getInstance().lookupRepositoryEntry(copyFrom, false); + } OLATResource originalOres = OLATResourceManager.getInstance().findResourceable(src.getOlatResource()); boolean isAlreadyLocked = RepositoryHandlerFactory.getInstance().getRepositoryHandler(src).isLocked(originalOres); LockResult lockResult = RepositoryHandlerFactory.getInstance().getRepositoryHandler(src).acquireLock(originalOres, ureq.getIdentity()); + //check range of access + if(access < 1 || access > RepositoryEntry.ACC_USERS_GUESTS) { + access = RepositoryEntry.ACC_OWNERS; + } + if(lockResult == null || (lockResult != null && lockResult.isSuccess()) && !isAlreadyLocked) { //create new repo entry @@ -469,7 +484,7 @@ public class CoursesWebService { OLATResource ores = OLATResourceManager.getInstance().findOrPersistResourceable(newResourceable); preparedEntry.setOlatResource(ores); // create security group - prepareSecurityGroup(ureq.getIdentity(), preparedEntry, RepositoryEntry.ACC_OWNERS); + prepareSecurityGroup(ureq.getIdentity(), preparedEntry, access, membersOnly); // copy image if available RepositoryManager.getInstance().copyImage(src, preparedEntry); @@ -490,7 +505,7 @@ public class CoursesWebService { * @return */ public static ICourse createEmptyCourse(Identity initialAuthor, String shortTitle, String longTitle, CourseConfigVO courseConfigVO) { - return createEmptyCourse(initialAuthor, shortTitle, longTitle, null, null, null, null, courseConfigVO); + return createEmptyCourse(initialAuthor, shortTitle, longTitle, null, RepositoryEntry.ACC_OWNERS, false, null, null, null, courseConfigVO); } /** @@ -506,7 +521,7 @@ public class CoursesWebService { * @return */ public static ICourse createEmptyCourse(Identity initialAuthor, String shortTitle, String longTitle, - String softKey, String externalId, String externalRef, String managedFlags, CourseConfigVO courseConfigVO) { + String softKey, int access, boolean membersOnly, String externalId, String externalRef, String managedFlags, CourseConfigVO courseConfigVO) { String learningObjectives = shortTitle + " (Example of creating a new course)"; try { @@ -515,7 +530,7 @@ public class CoursesWebService { RepositoryEntry addedEntry = createCourseRepositoryEntry(initialAuthor, shortTitle, softKey, externalId, externalRef, managedFlags, oresable); // create an empty course CourseFactory.createEmptyCourse(oresable, shortTitle, longTitle, learningObjectives); - prepareSecurityGroup(initialAuthor, addedEntry, RepositoryEntry.ACC_OWNERS); + prepareSecurityGroup(initialAuthor, addedEntry, access, membersOnly); return prepareCourse(addedEntry, courseConfigVO); } catch (Exception e) { throw new WebApplicationException(e); @@ -550,7 +565,7 @@ public class CoursesWebService { return addedEntry;//!!!no update at this point } - private static void prepareSecurityGroup(Identity identity, RepositoryEntry addedEntry, int access) { + private static void prepareSecurityGroup(Identity identity, RepositoryEntry addedEntry, int access, boolean membersOnly) { // create security group BaseSecurity securityManager = BaseSecurityManager.getInstance(); SecurityGroup newGroup = securityManager.createAndPersistSecurityGroup(); @@ -579,7 +594,14 @@ public class CoursesWebService { securityManager.createAndPersistPolicy(participantGroup, Constants.PERMISSION_HASROLE, Constants.ORESOURCE_PARTICIPANT); addedEntry.setParticipantGroup(participantGroup); // Do set access for owner at the end, because unfinished course should be invisible - addedEntry.setAccess(access); + + if(membersOnly) { + addedEntry.setMembersOnly(true); + addedEntry.setAccess(RepositoryEntry.ACC_OWNERS); + } else { + addedEntry.setAccess(access); + } + RepositoryManager.getInstance().saveRepositoryEntry(addedEntry); } diff --git a/src/test/java/org/olat/core/util/mail/manager/MailManagerTest.java b/src/test/java/org/olat/core/util/mail/manager/MailManagerTest.java index ed76cc82270cbe8cb893003f0ed73188969ac1be..c95348ae332d2c7952e6e702b5de3046c89aab4b 100644 --- a/src/test/java/org/olat/core/util/mail/manager/MailManagerTest.java +++ b/src/test/java/org/olat/core/util/mail/manager/MailManagerTest.java @@ -133,14 +133,21 @@ public class MailManagerTest extends OlatTestCase { Assert.assertEquals(MailerResult.OK, result.getReturnCode()); dbInstance.commitAndCloseSession(); - //retrieve the inbox of toId - List<DBMailLight> sendedMails = mailManager.getOutbox(fromId, 0, -1); + //retrieve the outbox of toId (with lazy loading) + List<DBMailLight> sendedMails = mailManager.getOutbox(fromId, 0, -1, false); Assert.assertNotNull(sendedMails); Assert.assertEquals(1, sendedMails.size()); DBMailLight sendedMail = sendedMails.get(0); Assert.assertNotNull(sendedMail); Assert.assertEquals("Hello outbox", sendedMail.getSubject()); + + dbInstance.commitAndCloseSession(); + + //retrieve the outbox of toId (with fetch) + List<DBMailLight> sendedMailsWithFetch = mailManager.getOutbox(fromId, 0, -1, true); + Assert.assertNotNull(sendedMailsWithFetch); + Assert.assertEquals(1, sendedMailsWithFetch.size()); } @Test @@ -260,7 +267,7 @@ public class MailManagerTest extends OlatTestCase { List<DBMailLight> deletedMails_3 = mailManager.getInbox(toId_3, null, null, null, 0, -1); Assert.assertNotNull(deletedMails_3); Assert.assertTrue(deletedMails_3.isEmpty()); - List<DBMailLight> deletedMails_4 = mailManager.getOutbox(fromId, 0, -1); + List<DBMailLight> deletedMails_4 = mailManager.getOutbox(fromId, 0, -1, true); Assert.assertNotNull(deletedMails_4); Assert.assertTrue(deletedMails_4.isEmpty()); //check mail by meta id diff --git a/src/test/java/org/olat/restapi/CoursesTest.java b/src/test/java/org/olat/restapi/CoursesTest.java index 4a9c6bfadf17f0b700743e5a998c29cc58f7737c..da25c3396196590a9f0b7ecf9b5dc14358f50a0f 100644 --- a/src/test/java/org/olat/restapi/CoursesTest.java +++ b/src/test/java/org/olat/restapi/CoursesTest.java @@ -103,16 +103,16 @@ public class CoursesTest extends OlatJerseyTestCase { try { // create course and persist as OLATResourceImpl admin = BaseSecurityManager.getInstance().findIdentityByName("administrator"); - course1 = CoursesWebService.createEmptyCourse(admin, "courses1", "courses1 long name", null, null, null, null, null); + course1 = CoursesWebService.createEmptyCourse(admin, "courses1", "courses1 long name", null, RepositoryEntry.ACC_OWNERS, false, null, null, null, null); externalId = UUID.randomUUID().toString(); externalRef = UUID.randomUUID().toString(); - course2 = CoursesWebService.createEmptyCourse(admin, "courses2", "courses2 long name", null, externalId, externalRef, "all", null); + course2 = CoursesWebService.createEmptyCourse(admin, "courses2", "courses2 long name", null, RepositoryEntry.ACC_OWNERS, false, externalId, externalRef, "all", null); dbInstance.commitAndCloseSession(); externalId3 = UUID.randomUUID().toString(); - course3 = CoursesWebService.createEmptyCourse(admin, "courses3", "courses3 long name", null, externalId3, null, "all", null); + course3 = CoursesWebService.createEmptyCourse(admin, "courses3", "courses3 long name", null, RepositoryEntry.ACC_OWNERS, false, externalId3, null, "all", null); RepositoryEntry re3 = repositoryManager.lookupRepositoryEntry(course3, false); RepositoryEntryLifecycle lifecycle3 = reLifecycleDao.create("course3 lifecycle", UUID.randomUUID().toString(), true, new Date(), new Date()); dbInstance.commit();