Index: lams_central/web/includes/javascript/authoring/authoringGeneral.js =================================================================== diff -u -r1c59101cfa996a1cfdf296191fa297e60b70218f -rb656ce2bbd8af424fa40fab8a178419311cffe87 --- lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision 1c59101cfa996a1cfdf296191fa297e60b70218f) +++ lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision b656ce2bbd8af424fa40fab8a178419311cffe87) @@ -461,7 +461,8 @@ switch(activityData.activityTypeID) { // Tool Activity case 1 : - activity = new ActivityLib.ToolActivity(activityData.activityID, + activity = new ActivityLib.ToolActivity( + activityData.activityID, activityData.activityUIID, activityData.toolContentID, activityData.toolID, @@ -506,7 +507,8 @@ }); }); - activity = new ActivityLib.GroupingActivity(activityData.activityID, + activity = new ActivityLib.GroupingActivity( + activityData.activityID, activityData.activityUIID, activityData.xCoord, activityData.yCoord, @@ -531,7 +533,8 @@ case 5: var gateType = gateType || 'permision'; case 14: var gateType = gateType || 'condition'; - activity = new ActivityLib.GateActivity(activityData.activityID, + activity = new ActivityLib.GateActivity( + activityData.activityID, activityData.activityUIID, activityData.xCoord, activityData.yCoord, @@ -542,7 +545,8 @@ // Parallel Activity case 6: - activity = new ActivityLib.ParallelActivity(activityData.activityID, + activity = new ActivityLib.ParallelActivity( + activityData.activityID, activityData.activityUIID, activityData.learningLibraryID, activityData.xCoord, @@ -552,7 +556,8 @@ // Optional Activity case 7: - activity = new ActivityLib.OptionalActivity(activityData.activityID, + activity = new ActivityLib.OptionalActivity( + activityData.activityID, activityData.activityUIID, activityData.xCoord, activityData.yCoord, @@ -596,7 +601,8 @@ // Support (Floating) activity case 15: - activity = new ActivityLib.FloatingActivity(activityData.activityID, + activity = new ActivityLib.FloatingActivity( + activityData.activityID, activityData.activityUIID, activityData.xCoord, activityData.yCoord); @@ -820,28 +826,7 @@ if (arrangeNeeded) { MenuLib.arrangeActivities(); } else { - // if we do arranging afterwards, paper will be resized anyway - var paperWidth = paper.width, - paperHeight = paper.height; - $.each(layout.activities, function(){ - // find new dimensions of paper - var activityBox = this.items.shape.getBBox(), - maxX = activityBox.x + activityBox.width, - maxY = activityBox.y + activityBox.height; - if (maxX > paperWidth) { - paperWidth = maxX; - } - if (maxY > paperHeight) { - paperHeight = maxY; - } - }); - - if (paperWidth > paper.width || paperHeight > paper.height) { - // add some height for rubbish bin - resizePaper(paperWidth, paperHeight + 70); - } else { - HandlerLib.resetCanvasMode(true); - } + resizePaper(); } setModified(false); @@ -931,6 +916,9 @@ activityTypeID = null, toolID = activity.toolID, learningLibraryID = toolID ? toolID : activity.learningLibraryID, + activityCategoryID = activity instanceof ActivityLib.ToolActivity ? + layout.toolMetadata[learningLibraryID].activityCategoryID : + activity instanceof ActivityLib.ParallelActivity ? 5 : 1, iconPath = null, isGrouped = activity.grouping ? true : false, parentActivityID = activity.parentActivity ? activity.parentActivity.id : null; @@ -1045,9 +1033,7 @@ 'xCoord' : x, 'yCoord' : y, 'activityTitle' : activity.title, - 'activityCategoryID' : activity instanceof ActivityLib.ToolActivity - || activity instanceof ActivityLib.ParallelActivity ? - layout.toolMetadata[learningLibraryID].activityCategoryID : 1, + 'activityCategoryID' : activityCategoryID, 'activityTypeID' : activityTypeID, 'orderID' : activity.orderID, 'defaultActivityUIID' : activity.defaultActivityUIID, @@ -1282,8 +1268,10 @@ }); } + // -20 so Chrome does not create unnecessary scrollbars when dropping a tool template to canvas + // +50 so there is space for rubbish bin width = Math.max(width, canvas.width()) - 20; - height = Math.max(height, canvas.height()) - 20; + height = Math.max(height + 50, canvas.height()) - 20; paper.setSize(width, height); $('#templateContainer').height($('#ldDescriptionDiv').height() Index: lams_central/web/includes/javascript/authoring/authoringMenu.js =================================================================== diff -u -r1c59101cfa996a1cfdf296191fa297e60b70218f -rb656ce2bbd8af424fa40fab8a178419311cffe87 --- lams_central/web/includes/javascript/authoring/authoringMenu.js (.../authoringMenu.js) (revision 1c59101cfa996a1cfdf296191fa297e60b70218f) +++ lams_central/web/includes/javascript/authoring/authoringMenu.js (.../authoringMenu.js) (revision b656ce2bbd8af424fa40fab8a178419311cffe87) @@ -638,21 +638,14 @@ layout.floatingActivity.draw(x, y); } - // are there more rows that current paper can hold? - if (row >= Math.floor((paper.height - layout.conf.arrangeVerticalPadding) - / layout.conf.arrangeVerticalSpace)) { - // some extra height for rubbish bin - resizePaper(paper.width, layout.conf.arrangeVerticalPadding + 70 - + row * layout.conf.arrangeVerticalSpace); - } - // redraw transitions one by one $.each(layout.activities, function(){ $.each(this.transitions.from.slice(), function(){ ActivityLib.addTransition(this.fromActivity, this.toActivity, true); }); }); + resizePaper(); setModified(true); }, Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java =================================================================== diff -u -raead34144651a924f76d7bca8645327e6820d226 -rb656ce2bbd8af424fa40fab8a178419311cffe87 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision aead34144651a924f76d7bca8645327e6820d226) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision b656ce2bbd8af424fa40fab8a178419311cffe87) @@ -1360,8 +1360,9 @@ Map removedActMap = new HashMap(); List activities = ldDto.getActivities(); for (AuthoringActivityDTO activity : activities) { + ExportToolContentService.fillLearningLibraryID(activity); // skip non-tool activities - if (activity.getActivityTypeID().intValue() != Activity.TOOL_ACTIVITY_TYPE) { + if (!activity.getActivityTypeID().equals(Activity.TOOL_ACTIVITY_TYPE)) { continue; } @@ -2490,6 +2491,8 @@ plannerMetadata.setActivity(((ToolActivity) act)); ((ToolActivity) act).setPlannerMetadata(plannerMetadata); } + + act.setLearningLibrary(learningLibraryDAO.getLearningLibraryById(actDto.getLearningLibraryID())); break; case Activity.GROUPING_ACTIVITY_TYPE: newGrouping = groupingList.get(actDto.getCreateGroupingID()); @@ -2528,6 +2531,7 @@ ((ConditionGateActivity) act).setSystemTool(systemToolDAO.getSystemToolByID(SystemTool.PERMISSION_GATE)); break; case Activity.PARALLEL_ACTIVITY_TYPE: + act.setLearningLibrary(learningLibraryDAO.getLearningLibraryById(actDto.getLearningLibraryID())); break; case Activity.OPTIONS_ACTIVITY_TYPE: case Activity.OPTIONS_WITH_SEQUENCES_TYPE: @@ -2571,17 +2575,6 @@ act.setStopAfterActivity(actDto.getStopAfterActivity()); } - // do not need set so far - // act.setLearningDesign(); - - // the id will be decide in LearningObject - // actDto.getLearningDesignID() - // act.setLearningLibrary(); - - // be to decided by Fiona: 08/06/2006: It is ok to left it as null - // actDto.getLibraryActivityID() - // act.setLibraryActivity(); - act.setLibraryActivityUiImage(actDto.getLibraryActivityUIImage()); act.setOrderId(actDto.getOrderID()); @@ -2616,6 +2609,27 @@ act.setStartYcoord(actDto.getStartYCoord()); act.setEndYcoord(actDto.getEndYCoord()); } + + /** + * Guess missing Learning Library ID based on activity tool ID or description. Old exported LDs may not contain this + * value. + */ + private static void fillLearningLibraryID(AuthoringActivityDTO activity) { + if (activity.getLearningLibraryID() == null) { + if (activity.getActivityTypeID().equals(Activity.TOOL_ACTIVITY_TYPE)) { + activity.setLearningLibraryID(activity.getToolID()); + } else if (activity.getActivityTypeID().equals(Activity.PARALLEL_ACTIVITY_TYPE)) { + String description = activity.getDescription(); + if (description.contains("Share") && description.contains("Forum")) { + activity.setLearningLibraryID(28L); + } else if (description.contains("Chat") && description.contains("Scribe")) { + activity.setLearningLibraryID(29L); + } else if (description.contains("Forum") && description.contains("Scribe")) { + activity.setLearningLibraryID(30L); + } + } + } + } // ****************************************************************** // Spring injection properties set/get