Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -rac1774a2e7f4b8ce9b79e6447b1b4748f719bc32 -rd966398218b421b81531d394d52526cffb8d1e3a Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java =================================================================== diff -u -r509cebe97fca335b7d517abc7e8d9af03d6eab2e -rd966398218b421b81531d394d52526cffb8d1e3a --- lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java (.../AuthoringAction.java) (revision 509cebe97fca335b7d517abc7e8d9af03d6eab2e) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java (.../AuthoringAction.java) (revision d966398218b421b81531d394d52526cffb8d1e3a) @@ -48,6 +48,10 @@ import org.apache.tomcat.util.json.JSONObject; import org.lamsfoundation.lams.authoring.ObjectExtractorException; import org.lamsfoundation.lams.authoring.service.IAuthoringService; +import org.lamsfoundation.lams.integration.ExtCourseClassMap; +import org.lamsfoundation.lams.integration.ExtServerOrgMap; +import org.lamsfoundation.lams.integration.service.IIntegrationService; +import org.lamsfoundation.lams.integration.util.LoginRequestDispatcher; import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.LearningDesignAccess; import org.lamsfoundation.lams.learningdesign.LearningLibrary; @@ -99,6 +103,7 @@ private static IAuthoringService authoringService; private static ILearningDesignService learningDesignService; private static ISecurityService securityService; + private static IIntegrationService integrationService; private static int LEARNING_DESIGN_ACCESS_ENTRIES_LIMIT = 7; @@ -260,9 +265,17 @@ IAuthoringService authoringService = getAuthoringService(); Long toolID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_ID); Long toolContentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); - Long learningLibraryID = WebUtil.readLongParam(request, AttributeNames.PARAM_LEARNING_LIBRARY_ID); + Long learningLibraryID = WebUtil.readLongParam(request, AttributeNames.PARAM_LEARNING_LIBRARY_ID, true); String contentFolderID = request.getParameter(AttributeNames.PARAM_CONTENT_FOLDER_ID); - Integer organisationID = WebUtil.readIntParam(request, AttributeNames.PARAM_ORGANISATION_ID); + Integer organisationID = WebUtil.readIntParam(request, AttributeNames.PARAM_ORGANISATION_ID, true); + if (organisationID == null) { + // if organisation ID is not set explicitly, derived it from external course + String serverID = request.getParameter(LoginRequestDispatcher.PARAM_SERVER_ID); + String courseID = request.getParameter(LoginRequestDispatcher.PARAM_COURSE_ID); + ExtServerOrgMap serverMap = getIntegrationService().getExtServerOrgMap(serverID); + ExtCourseClassMap orgMap = getIntegrationService().getExtCourseClassMap(serverMap.getSid(), courseID); + organisationID = orgMap.getOrganisation().getOrganisationId(); + } Integer userID = getUserId(); if (!getSecurityService().isGroupMonitor(organisationID, userID, "create single activity lesson", false)) { @@ -272,6 +285,10 @@ // get title from tool content IToolVO tool = getToolService().getToolByID(toolID); + if (learningLibraryID == null) { + // if learning library ID is not set explicitly, derive it from tool + learningLibraryID = tool.getLearningLibraryId(); + } WebApplicationContext wac = WebApplicationContextUtils .getRequiredWebApplicationContext(getServlet().getServletContext()); ToolContentManager toolManager = (ToolContentManager) wac.getBean(tool.getServiceName()); @@ -449,6 +466,15 @@ return AuthoringAction.learningDesignService; } + private IIntegrationService getIntegrationService() { + if (AuthoringAction.integrationService == null) { + WebApplicationContext ctx = WebApplicationContextUtils + .getRequiredWebApplicationContext(getServlet().getServletContext()); + AuthoringAction.integrationService = (IIntegrationService) ctx.getBean("integrationService"); + } + return AuthoringAction.integrationService; + } + private ISecurityService getSecurityService() { if (AuthoringAction.securityService == null) { WebApplicationContext ctx = WebApplicationContextUtils Index: lams_common/src/java/org/lamsfoundation/lams/tool/BasicToolVO.java =================================================================== diff -u -r51fb2a37254f24bb2a805d4ffd54482c779f43fa -rd966398218b421b81531d394d52526cffb8d1e3a --- lams_common/src/java/org/lamsfoundation/lams/tool/BasicToolVO.java (.../BasicToolVO.java) (revision 51fb2a37254f24bb2a805d4ffd54482c779f43fa) +++ lams_common/src/java/org/lamsfoundation/lams/tool/BasicToolVO.java (.../BasicToolVO.java) (revision d966398218b421b81531d394d52526cffb8d1e3a) @@ -68,6 +68,8 @@ /** nullable persistent field */ private long defaultToolContentId; + private Long learningLibraryId; + /** persistent field */ private String toolSignature; @@ -104,9 +106,9 @@ /** full constructor */ public BasicToolVO(Long toolId, boolean supportsGrouping, String learnerUrl, String learnerPreviewUrl, String learnerProgressUrl, String authorUrl, String monitorUrl, String helpUrl, long defaultToolContentId, - String toolSignature, String toolDisplayName, String description, String serviceName, Date createDateTime, - Integer groupingSupportTypeId, String toolIdentifier, String toolVersion, String languageFile, - String extLmsId) { + Long learningLibraryId, String toolSignature, String toolDisplayName, String description, + String serviceName, Date createDateTime, Integer groupingSupportTypeId, String toolIdentifier, + String toolVersion, String languageFile, String extLmsId) { this.supportsGrouping = supportsGrouping; this.learnerUrl = learnerUrl; this.learnerPreviewUrl = learnerPreviewUrl; @@ -115,6 +117,7 @@ this.monitorUrl = monitorUrl; this.helpUrl = helpUrl; this.defaultToolContentId = defaultToolContentId; + this.learningLibraryId = learningLibraryId; this.toolSignature = toolSignature; this.toolDisplayName = toolDisplayName; this.description = description; @@ -131,22 +134,6 @@ public BasicToolVO() { } - /** minimal constructor */ - public BasicToolVO(Long toolId, boolean supportsGrouping, String learnerUrl, String authorUrl, String toolSignature, - String toolDisplayName, String serviceName, Date createDateTime, Integer groupingSupportTypeId, - String toolIdentifier, String toolVersion) { - this.supportsGrouping = supportsGrouping; - this.learnerUrl = learnerUrl; - this.authorUrl = authorUrl; - this.toolSignature = toolSignature; - this.toolDisplayName = toolDisplayName; - this.serviceName = serviceName; - this.createDateTime = createDateTime; - this.groupingSupportTypeId = groupingSupportTypeId; - this.toolIdentifier = toolIdentifier; - this.toolVersion = toolVersion; - } - /* * (non-Javadoc) * @@ -227,6 +214,11 @@ this.defaultToolContentId = defaultToolContentId; } + @Override + public Long getLearningLibraryId() { + return learningLibraryId; + } + /* * (non-Javadoc) * Index: lams_common/src/java/org/lamsfoundation/lams/tool/IToolVO.java =================================================================== diff -u -r51fb2a37254f24bb2a805d4ffd54482c779f43fa -rd966398218b421b81531d394d52526cffb8d1e3a --- lams_common/src/java/org/lamsfoundation/lams/tool/IToolVO.java (.../IToolVO.java) (revision 51fb2a37254f24bb2a805d4ffd54482c779f43fa) +++ lams_common/src/java/org/lamsfoundation/lams/tool/IToolVO.java (.../IToolVO.java) (revision d966398218b421b81531d394d52526cffb8d1e3a) @@ -40,6 +40,8 @@ void setCreateDateTime(Date createDateTime); long getDefaultToolContentId(); + + Long getLearningLibraryId(); void setDefaultToolContentId(long defaultToolContentId); Index: lams_common/src/java/org/lamsfoundation/lams/tool/Tool.java =================================================================== diff -u -r51fb2a37254f24bb2a805d4ffd54482c779f43fa -rd966398218b421b81531d394d52526cffb8d1e3a --- lams_common/src/java/org/lamsfoundation/lams/tool/Tool.java (.../Tool.java) (revision 51fb2a37254f24bb2a805d4ffd54482c779f43fa) +++ lams_common/src/java/org/lamsfoundation/lams/tool/Tool.java (.../Tool.java) (revision d966398218b421b81531d394d52526cffb8d1e3a) @@ -436,7 +436,7 @@ public IToolVO createBasicToolVO() { IToolVO vo = new BasicToolVO(toolId, supportsGrouping, learnerUrl, learnerPreviewUrl, learnerProgressUrl, - authorUrl, monitorUrl, helpUrl, defaultToolContentId, toolSignature, toolDisplayName, description, + authorUrl, monitorUrl, helpUrl, defaultToolContentId, learningLibraryId, toolSignature, toolDisplayName, description, serviceName, createDateTime, groupingSupportTypeId, toolIdentifier, toolVersion, languageFile, extLmsId); return vo;