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

CL-232: allow creation of course with title, shortTitle and RepositoryEntry...

CL-232: allow creation of course with title, shortTitle and RepositoryEntry displayName as parameters
parent 32775806
No related branches found
No related tags found
No related merge requests found
...@@ -324,6 +324,9 @@ public class ICalFileCalendarManager extends BasicManager implements CalendarMan ...@@ -324,6 +324,9 @@ public class ICalFileCalendarManager extends BasicManager implements CalendarMan
*/ */
public KalendarConfig findKalendarConfigForIdentity(Kalendar kalendar, UserRequest ureq) { public KalendarConfig findKalendarConfigForIdentity(Kalendar kalendar, UserRequest ureq) {
Preferences guiPreferences = ureq.getUserSession().getGuiPreferences(); Preferences guiPreferences = ureq.getUserSession().getGuiPreferences();
if(guiPreferences == null) {
return null;
}
return (KalendarConfig)guiPreferences.get(KalendarConfig.class, kalendar.getCalendarID()); return (KalendarConfig)guiPreferences.get(KalendarConfig.class, kalendar.getCalendarID());
} }
......
...@@ -210,7 +210,8 @@ public class CoursesWebService { ...@@ -210,7 +210,8 @@ public class CoursesWebService {
@PUT @PUT
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response createEmptyCourse(@QueryParam("shortTitle") String shortTitle, @QueryParam("title") String title, public Response createEmptyCourse(@QueryParam("shortTitle") String shortTitle, @QueryParam("title") String title,
@QueryParam("softKey") String softKey, @QueryParam("access") Integer access, @QueryParam("membersOnly") Boolean membersOnly, @QueryParam("displayName") String displayName, @QueryParam("softKey") String softKey,
@QueryParam("access") Integer access, @QueryParam("membersOnly") Boolean membersOnly,
@QueryParam("externalId") String externalId, @QueryParam("externalRef") String externalRef, @QueryParam("externalId") String externalId, @QueryParam("externalRef") String externalRef,
@QueryParam("managedFlags") String managedFlags, @QueryParam("sharedFolderSoftKey") String sharedFolderSoftKey, @QueryParam("managedFlags") String managedFlags, @QueryParam("sharedFolderSoftKey") String sharedFolderSoftKey,
@QueryParam("copyFrom") Long copyFrom, @QueryParam("copyFrom") Long copyFrom,
...@@ -223,13 +224,16 @@ public class CoursesWebService { ...@@ -223,13 +224,16 @@ public class CoursesWebService {
int accessInt = (access == null ? RepositoryEntry.ACC_OWNERS : access.intValue()); int accessInt = (access == null ? RepositoryEntry.ACC_OWNERS : access.intValue());
boolean membersOnlyBool = (membersOnly == null ? false : membersOnly.booleanValue()); boolean membersOnlyBool = (membersOnly == null ? false : membersOnly.booleanValue());
if(!StringHelper.containsNonWhitespace(displayName)) {
displayName = shortTitle;
}
ICourse course; ICourse course;
UserRequest ureq = getUserRequest(request); UserRequest ureq = getUserRequest(request);
if(copyFrom != null) { if(copyFrom != null) {
course = copyCourse(copyFrom, ureq, shortTitle, title, softKey, accessInt, membersOnlyBool, externalId, externalRef, managedFlags, configVO); course = copyCourse(copyFrom, ureq, shortTitle, title, displayName, softKey, accessInt, membersOnlyBool, externalId, externalRef, managedFlags, configVO);
} else { } else {
course = createEmptyCourse(ureq.getIdentity(), shortTitle, title, softKey, accessInt, membersOnlyBool, externalId, externalRef, managedFlags, configVO); course = createEmptyCourse(ureq.getIdentity(), shortTitle, title, displayName, softKey, accessInt, membersOnlyBool, externalId, externalRef, managedFlags, configVO);
} }
CourseVO vo = ObjectFactory.get(course); CourseVO vo = ObjectFactory.get(course);
return Response.ok(vo).build(); return Response.ok(vo).build();
...@@ -257,8 +261,9 @@ public class CoursesWebService { ...@@ -257,8 +261,9 @@ public class CoursesWebService {
UserRequest ureq = getUserRequest(request); UserRequest ureq = getUserRequest(request);
CourseConfigVO configVO = new CourseConfigVO(); CourseConfigVO configVO = new CourseConfigVO();
ICourse course = createEmptyCourse(ureq.getIdentity(), courseVo.getTitle(), ICourse course = createEmptyCourse(ureq.getIdentity(),
courseVo.getTitle(), courseVo.getSoftKey(), RepositoryEntry.ACC_OWNERS, false, courseVo.getTitle(), courseVo.getTitle(), courseVo.getTitle(),
courseVo.getSoftKey(), RepositoryEntry.ACC_OWNERS, false,
courseVo.getExternalId(), courseVo.getExternalRef(), courseVo.getManagedFlags(), courseVo.getExternalId(), courseVo.getExternalRef(), courseVo.getManagedFlags(),
configVO); configVO);
CourseVO vo = ObjectFactory.get(course); CourseVO vo = ObjectFactory.get(course);
...@@ -423,10 +428,10 @@ public class CoursesWebService { ...@@ -423,10 +428,10 @@ public class CoursesWebService {
} }
} }
public static ICourse copyCourse(Long copyFrom, UserRequest ureq, String name, String longTitle, private static ICourse copyCourse(Long copyFrom, UserRequest ureq, String shortTitle, String longTitle, String displayName,
String softKey, int access, boolean membersOnly, String externalId, String externalRef, String managedFlags, String softKey, int access, boolean membersOnly, String externalId, String externalRef, String managedFlags,
CourseConfigVO courseConfigVO) { CourseConfigVO courseConfigVO) {
String shortTitle = name;
//String learningObjectives = name + " (Example of creating a new course)"; //String learningObjectives = name + " (Example of creating a new course)";
OLATResourceable originalOresTrans = OresHelper.createOLATResourceableInstance(CourseModule.class, copyFrom); OLATResourceable originalOresTrans = OresHelper.createOLATResourceableInstance(CourseModule.class, copyFrom);
...@@ -450,8 +455,8 @@ public class CoursesWebService { ...@@ -450,8 +455,8 @@ public class CoursesWebService {
preparedEntry.setCanDownload(src.getCanDownload()); preparedEntry.setCanDownload(src.getCanDownload());
preparedEntry.setCanLaunch(src.getCanLaunch()); preparedEntry.setCanLaunch(src.getCanLaunch());
if (courseConfigVO != null && StringHelper.containsNonWhitespace(shortTitle)) { if (courseConfigVO != null && StringHelper.containsNonWhitespace(displayName)) {
preparedEntry.setDisplayname(shortTitle); preparedEntry.setDisplayname(displayName);
} else { } else {
preparedEntry.setDisplayname("Copy of " + src.getDisplayname()); preparedEntry.setDisplayname("Copy of " + src.getDisplayname());
} }
...@@ -488,7 +493,7 @@ public class CoursesWebService { ...@@ -488,7 +493,7 @@ public class CoursesWebService {
// copy image if available // copy image if available
RepositoryManager.getInstance().copyImage(src, preparedEntry); RepositoryManager.getInstance().copyImage(src, preparedEntry);
ICourse course = prepareCourse(preparedEntry, courseConfigVO); ICourse course = prepareCourse(preparedEntry,shortTitle, longTitle, courseConfigVO);
RepositoryHandlerFactory.getInstance().getRepositoryHandler(src).releaseLock(lockResult); RepositoryHandlerFactory.getInstance().getRepositoryHandler(src).releaseLock(lockResult);
return course; return course;
} }
...@@ -505,7 +510,7 @@ public class CoursesWebService { ...@@ -505,7 +510,7 @@ public class CoursesWebService {
* @return * @return
*/ */
public static ICourse createEmptyCourse(Identity initialAuthor, String shortTitle, String longTitle, CourseConfigVO courseConfigVO) { public static ICourse createEmptyCourse(Identity initialAuthor, String shortTitle, String longTitle, CourseConfigVO courseConfigVO) {
return createEmptyCourse(initialAuthor, shortTitle, longTitle, null, RepositoryEntry.ACC_OWNERS, false, null, null, null, courseConfigVO); return createEmptyCourse(initialAuthor, shortTitle, longTitle, shortTitle, null, RepositoryEntry.ACC_OWNERS, false, null, null, null, courseConfigVO);
} }
/** /**
...@@ -520,18 +525,22 @@ public class CoursesWebService { ...@@ -520,18 +525,22 @@ public class CoursesWebService {
* @param courseConfigVO * @param courseConfigVO
* @return * @return
*/ */
public static ICourse createEmptyCourse(Identity initialAuthor, String shortTitle, String longTitle, public static ICourse createEmptyCourse(Identity initialAuthor, String shortTitle, String longTitle, String reDisplayName,
String softKey, int access, boolean membersOnly, 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)"; String learningObjectives = shortTitle + " (Example of creating a new course)";
if(!StringHelper.containsNonWhitespace(reDisplayName)) {
reDisplayName = shortTitle;
}
try { try {
OLATResourceable oresable = OLATResourceManager.getInstance().createOLATResourceInstance(CourseModule.class); OLATResourceable oresable = OLATResourceManager.getInstance().createOLATResourceInstance(CourseModule.class);
// create a repository entry // create a repository entry
RepositoryEntry addedEntry = createCourseRepositoryEntry(initialAuthor, shortTitle, softKey, externalId, externalRef, managedFlags, oresable); RepositoryEntry addedEntry = createCourseRepositoryEntry(initialAuthor, reDisplayName, softKey, externalId, externalRef, managedFlags, oresable);
// create an empty course // create an empty course
CourseFactory.createEmptyCourse(oresable, shortTitle, longTitle, learningObjectives); CourseFactory.createEmptyCourse(oresable, shortTitle, longTitle, learningObjectives);
prepareSecurityGroup(initialAuthor, addedEntry, access, membersOnly); prepareSecurityGroup(initialAuthor, addedEntry, access, membersOnly);
return prepareCourse(addedEntry, courseConfigVO); return prepareCourse(addedEntry, shortTitle, longTitle, courseConfigVO);
} catch (Exception e) { } catch (Exception e) {
throw new WebApplicationException(e); throw new WebApplicationException(e);
} }
...@@ -605,19 +614,27 @@ public class CoursesWebService { ...@@ -605,19 +614,27 @@ public class CoursesWebService {
RepositoryManager.getInstance().saveRepositoryEntry(addedEntry); RepositoryManager.getInstance().saveRepositoryEntry(addedEntry);
} }
private static ICourse prepareCourse(RepositoryEntry addedEntry, CourseConfigVO courseConfigVO) { private static ICourse prepareCourse(RepositoryEntry addedEntry, String shortTitle, String longTitle, CourseConfigVO courseConfigVO) {
BaseSecurity securityManager = BaseSecurityManager.getInstance(); BaseSecurity securityManager = BaseSecurityManager.getInstance();
securityManager.createAndPersistPolicy(addedEntry.getOwnerGroup(), Constants.PERMISSION_ADMIN, addedEntry.getOlatResource()); securityManager.createAndPersistPolicy(addedEntry.getOwnerGroup(), Constants.PERMISSION_ADMIN, addedEntry.getOlatResource());
// set root node title // set root node title
String courseShortTitle = addedEntry.getDisplayname();
if(StringHelper.containsNonWhitespace(shortTitle)) {
courseShortTitle = shortTitle;
}
String courseLongTitle = addedEntry.getDisplayname();
if(StringHelper.containsNonWhitespace(longTitle)) {
courseLongTitle = longTitle;
}
ICourse course = CourseFactory.openCourseEditSession(addedEntry.getOlatResource().getResourceableId()); ICourse course = CourseFactory.openCourseEditSession(addedEntry.getOlatResource().getResourceableId());
String displayName = addedEntry.getDisplayname(); course.getRunStructure().getRootNode().setShortTitle(Formatter.truncate(courseShortTitle, 25));
course.getRunStructure().getRootNode().setShortTitle(Formatter.truncate(displayName, 25)); course.getRunStructure().getRootNode().setLongTitle(courseLongTitle);
course.getRunStructure().getRootNode().setLongTitle(displayName);
CourseNode rootNode = ((CourseEditorTreeNode) course.getEditorTreeModel().getRootNode()).getCourseNode(); CourseNode rootNode = ((CourseEditorTreeNode) course.getEditorTreeModel().getRootNode()).getCourseNode();
rootNode.setShortTitle(Formatter.truncate(displayName, 25)); rootNode.setShortTitle(Formatter.truncate(courseShortTitle, 25));
rootNode.setLongTitle(displayName); rootNode.setLongTitle(courseLongTitle);
if(courseConfigVO != null) { if(courseConfigVO != null) {
CourseConfig courseConfig = course.getCourseEnvironment().getCourseConfig(); CourseConfig courseConfig = course.getCourseEnvironment().getCourseConfig();
...@@ -625,7 +642,6 @@ public class CoursesWebService { ...@@ -625,7 +642,6 @@ public class CoursesWebService {
courseConfig.setSharedFolderSoftkey(courseConfigVO.getSharedFolderSoftKey()); courseConfig.setSharedFolderSoftkey(courseConfigVO.getSharedFolderSoftKey());
} }
} }
//RepositoryManager.getInstance().updateRepositoryEntry(addedEntry);
CourseFactory.saveCourse(course.getResourceableId()); CourseFactory.saveCourse(course.getResourceableId());
CourseFactory.closeCourseEditSession(course.getResourceableId(), true); CourseFactory.closeCourseEditSession(course.getResourceableId(), true);
......
...@@ -103,16 +103,16 @@ public class CoursesTest extends OlatJerseyTestCase { ...@@ -103,16 +103,16 @@ public class CoursesTest extends OlatJerseyTestCase {
try { try {
// create course and persist as OLATResourceImpl // create course and persist as OLATResourceImpl
admin = BaseSecurityManager.getInstance().findIdentityByName("administrator"); admin = BaseSecurityManager.getInstance().findIdentityByName("administrator");
course1 = CoursesWebService.createEmptyCourse(admin, "courses1", "courses1 long name", null, RepositoryEntry.ACC_OWNERS, false, null, null, null, null); course1 = CoursesWebService.createEmptyCourse(admin, "courses1", "courses1 long name", null, null, RepositoryEntry.ACC_OWNERS, false, null, null, null, null);
externalId = UUID.randomUUID().toString(); externalId = UUID.randomUUID().toString();
externalRef = UUID.randomUUID().toString(); externalRef = UUID.randomUUID().toString();
course2 = CoursesWebService.createEmptyCourse(admin, "courses2", "courses2 long name", null, RepositoryEntry.ACC_OWNERS, false, externalId, externalRef, "all", null); course2 = CoursesWebService.createEmptyCourse(admin, "courses2", "courses2 long name", null, null, RepositoryEntry.ACC_OWNERS, false, externalId, externalRef, "all", null);
dbInstance.commitAndCloseSession(); dbInstance.commitAndCloseSession();
externalId3 = UUID.randomUUID().toString(); externalId3 = UUID.randomUUID().toString();
course3 = CoursesWebService.createEmptyCourse(admin, "courses3", "courses3 long name", null, RepositoryEntry.ACC_OWNERS, false, externalId3, null, "all", null); course3 = CoursesWebService.createEmptyCourse(admin, "courses3", "courses3 long name", null, null, RepositoryEntry.ACC_OWNERS, false, externalId3, null, "all", null);
RepositoryEntry re3 = repositoryManager.lookupRepositoryEntry(course3, false); RepositoryEntry re3 = repositoryManager.lookupRepositoryEntry(course3, false);
RepositoryEntryLifecycle lifecycle3 = reLifecycleDao.create("course3 lifecycle", UUID.randomUUID().toString(), true, new Date(), new Date()); RepositoryEntryLifecycle lifecycle3 = reLifecycleDao.create("course3 lifecycle", UUID.randomUUID().toString(), true, new Date(), new Date());
dbInstance.commit(); dbInstance.commit();
......
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