Index: lams_central/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -rb9c68da61a40efc2425fb80c0c1e7b06f8fcfe78 -r4c44f72d085bca8627b2858fd30b99bc5c2056a4 --- lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision b9c68da61a40efc2425fb80c0c1e7b06f8fcfe78) +++ lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 4c44f72d085bca8627b2858fd30b99bc5c2056a4) @@ -251,6 +251,9 @@ label.planner.grouping.equal.group.size=Equal group sizes msg.planner.not.saved =Are you sure you want to close? If you have not saved the design, changes you have made will be lost. label.planner.editing.advice=Editing advice +label.planner.branch.empty =This branch is empty. +label.planner.branch=Branch +label.planner.branch.default=(default) public.folder=Public Folder #======= End labels: Exported 222 labels for en AU ===== Index: lams_central/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -rb9c68da61a40efc2425fb80c0c1e7b06f8fcfe78 -r4c44f72d085bca8627b2858fd30b99bc5c2056a4 --- lams_central/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision b9c68da61a40efc2425fb80c0c1e7b06f8fcfe78) +++ lams_central/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 4c44f72d085bca8627b2858fd30b99bc5c2056a4) @@ -251,6 +251,9 @@ label.planner.grouping.equal.group.size=Equal group sizes msg.planner.not.saved =Are you sure you want to close? If you have not saved the design, changes you have made will be lost. label.planner.editing.advice=Editing advice +label.planner.branch.empty =This branch is empty. +label.planner.branch=Branch +label.planner.branch.default=(default) public.folder=Public Folder #======= End labels: Exported 222 labels for en AU ===== Index: lams_central/src/java/org/lamsfoundation/lams/authoring/dto/PedagogicalPlannerActivityDTO.java =================================================================== diff -u -re66bdae723516ab13d4a6f81e5f598018f6dbe58 -r4c44f72d085bca8627b2858fd30b99bc5c2056a4 --- lams_central/src/java/org/lamsfoundation/lams/authoring/dto/PedagogicalPlannerActivityDTO.java (.../PedagogicalPlannerActivityDTO.java) (revision e66bdae723516ab13d4a6f81e5f598018f6dbe58) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/dto/PedagogicalPlannerActivityDTO.java (.../PedagogicalPlannerActivityDTO.java) (revision 4c44f72d085bca8627b2858fd30b99bc5c2056a4) @@ -30,7 +30,24 @@ private String type; private String editingAdviceUrl; private String checkEditingAdviceUrl; + private Boolean supportsPlanner; + private Short branch; + private String parentActivityTitle; + private Boolean lastNestedActivity = false; + private Boolean defaultBranch = false; + public static final short TYPE_PLAIN_ACTIVITY = 1; + public static final short TYPE_BRANCHING_ACTIVITY = 2; + public static final short TYPE_OPTIONAL_ACTIVITY = 3; + + public Boolean getSupportsPlanner() { + return supportsPlanner; + } + + public void setSupportsPlanner(Boolean supportsPlanner) { + this.supportsPlanner = supportsPlanner; + } + public String getPedagogicalPlannerUrl() { return pedagogicalPlannerUrl; } @@ -39,14 +56,16 @@ pedagogicalPlannerUrl = toolSignature; } - public PedagogicalPlannerActivityDTO(String type, String title, String pedagogicalPlannerUrl, String toolIconUrl, - String checkEditingAdviceUrl, String editingAdviceUrl) { + public PedagogicalPlannerActivityDTO(String type, String title, Boolean supportsPlanner, + String pedagogicalPlannerUrl, String toolIconUrl, String checkEditingAdviceUrl, String editingAdviceUrl) { + this.supportsPlanner = supportsPlanner; this.pedagogicalPlannerUrl = pedagogicalPlannerUrl; this.toolIconUrl = toolIconUrl; this.checkEditingAdviceUrl = checkEditingAdviceUrl; this.editingAdviceUrl = editingAdviceUrl; this.title = title; this.type = type; + } public String getToolIconUrl() { @@ -88,4 +107,36 @@ public void setCheckEditingAdviceUrl(String checkEditingAdviceUrl) { this.checkEditingAdviceUrl = checkEditingAdviceUrl; } + + public Short getBranch() { + return branch; + } + + public void setBranch(Short branch) { + this.branch = branch; + } + + public String getParentActivityTitle() { + return parentActivityTitle; + } + + public void setParentActivityTitle(String branchingActivityTitle) { + parentActivityTitle = branchingActivityTitle; + } + + public Boolean getLastNestedActivity() { + return lastNestedActivity; + } + + public void setLastNestedActivity(Boolean lastNestedActivity) { + this.lastNestedActivity = lastNestedActivity; + } + + public Boolean getDefaultBranch() { + return defaultBranch; + } + + public void setDefaultBranch(Boolean defaultBranch) { + this.defaultBranch = defaultBranch; + } } \ No newline at end of file Index: lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java =================================================================== diff -u -r05db875c7974d705f89231416ff6dfe91a5e70f1 -r4c44f72d085bca8627b2858fd30b99bc5c2056a4 --- lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java (.../CentralConstants.java) (revision 05db875c7974d705f89231416ff6dfe91a5e70f1) +++ lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java (.../CentralConstants.java) (revision 4c44f72d085bca8627b2858fd30b99bc5c2056a4) @@ -135,6 +135,8 @@ public static final String PARAM_SEQUENCE_TITLE = "sequenceTitle"; + public static final String PARAM_FORM_MESSAGE = "formMessage"; + public static final String ERROR_PLANNER_TITLE_BLANK = "error.planner.title.blank"; public static final String PATH_ACTIVITY_NO_PLANNER_SUPPORT = "/pedagogical_planner/defaultForm.jsp"; @@ -143,5 +145,7 @@ public static final String IMAGE_PATH_GATE = "images/stop.gif"; + public static final String RESOURCE_KEY_BRANCH_EMPTY = "label.planner.branch.empty"; + public static final String IMAGE_PATH_GROUPING = "images/grouping.gif"; } \ No newline at end of file Index: lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java =================================================================== diff -u -re66bdae723516ab13d4a6f81e5f598018f6dbe58 -r4c44f72d085bca8627b2858fd30b99bc5c2056a4 --- lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java (.../PedagogicalPlannerAction.java) (revision e66bdae723516ab13d4a6f81e5f598018f6dbe58) +++ lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java (.../PedagogicalPlannerAction.java) (revision 4c44f72d085bca8627b2858fd30b99bc5c2056a4) @@ -27,6 +27,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Set; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -42,11 +43,13 @@ import org.lamsfoundation.lams.authoring.dto.PedagogicalPlannerDTO; import org.lamsfoundation.lams.authoring.service.IAuthoringService; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.BranchingActivity; import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.learningdesign.LearnerChoiceGrouping; import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.RandomGrouping; +import org.lamsfoundation.lams.learningdesign.SequenceActivity; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.learningdesign.Transition; import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; @@ -136,86 +139,30 @@ if (toolsErrorMsgs.size() > 0) { throw new ServletException("There were tool errors."); } - List activitites = new ArrayList(); + List activities = new ArrayList(); // create DTO that holds all the necessary information of the activities - int activitySupportingPlannerCount = 0; + Activity activity = learningDesign.getFirstActivity(); - int activityIndex = 1; while (activity != null) { - boolean activitySupportsPlanner = false; - boolean activityAdded = false; - if (activity.isToolActivity()) { - ToolActivity toolActivity = (ToolActivity) activity; - String pedagogicalPlannerUrl = toolActivity.getTool().getPedagogicalPlannerUrl(); - if (pedagogicalPlannerUrl == null) { - activitites.add(new PedagogicalPlannerActivityDTO(toolActivity.getTool().getToolDisplayName(), - activity.getTitle(), CentralConstants.PATH_ACTIVITY_NO_PLANNER_SUPPORT, activity - .getLibraryActivityUiImage(), null, null)); - - } else { - pedagogicalPlannerUrl += pedagogicalPlannerUrl - .contains(PedagogicalPlannerAction.CHAR_QUESTION_MARK) ? PedagogicalPlannerAction.CHAR_AMPERSAND - : PedagogicalPlannerAction.CHAR_QUESTION_MARK; - pedagogicalPlannerUrl += AttributeNames.PARAM_TOOL_CONTENT_ID - + PedagogicalPlannerAction.CHAR_EQUALS + toolActivity.getToolContentId(); - activitites - .add(new PedagogicalPlannerActivityDTO(toolActivity.getTool().getToolDisplayName(), - activity.getTitle(), pedagogicalPlannerUrl - + PedagogicalPlannerAction.CHAR_AMPERSAND - + AttributeNames.PARAM_CONTENT_FOLDER_ID - + PedagogicalPlannerAction.CHAR_EQUALS - + learningDesign.getContentFolderID(), - activity.getLibraryActivityUiImage(), pedagogicalPlannerUrl - + PedagogicalPlannerAction.CHAR_AMPERSAND + AttributeNames.PARAM_COMMAND - + PedagogicalPlannerAction.CHAR_EQUALS - + AttributeNames.COMMAND_CHECK_EDITING_ADVICE - + PedagogicalPlannerAction.CHAR_AMPERSAND - + AttributeNames.PARAM_ACTIVITY_INDEX - + PedagogicalPlannerAction.CHAR_EQUALS + activityIndex, - pedagogicalPlannerUrl + PedagogicalPlannerAction.CHAR_AMPERSAND - + AttributeNames.PARAM_COMMAND + PedagogicalPlannerAction.CHAR_EQUALS - + AttributeNames.COMMAND_GET_EDITING_ADVICE)); - activitySupportsPlanner = true; - } - activityAdded = true; - } else if (activity.isGroupingActivity()) { - GroupingActivity groupingActivity = (GroupingActivity) activity; - activitites.add(new PedagogicalPlannerActivityDTO(null, activity.getTitle(), groupingActivity - .getSystemTool().getPedagogicalPlannerUrl() - + PedagogicalPlannerAction.CHAR_AMPERSAND - + AttributeNames.PARAM_TOOL_CONTENT_ID - + PedagogicalPlannerAction.CHAR_EQUALS + groupingActivity.getCreateGrouping().getGroupingId(), - CentralConstants.IMAGE_PATH_GROUPING, null, null)); - activitySupportsPlanner = true; - activityAdded = true; - } else if (activity.isGateActivity()) { - activitites - .add(new PedagogicalPlannerActivityDTO(null, activity.getTitle(), - CentralConstants.PATH_ACTIVITY_NO_PLANNER_SUPPORT, CentralConstants.IMAGE_PATH_GATE, - null, null)); - activityAdded = true; - } - if (activitySupportsPlanner) { - activitySupportingPlannerCount++; - } - if (!activityAdded) { - activitites.add(new PedagogicalPlannerActivityDTO(null, activity.getTitle(), - CentralConstants.PATH_ACTIVITY_NO_PLANNER_SUPPORT, activity.getLibraryActivityUiImage(), null, - null)); - } + addActivityToPlanner(learningDesign, activities, activity); Transition transitionTo = activity.getTransitionTo(); if (transitionTo == null) { activity = null; } else { activity = transitionTo.getToActivity(); } - activityIndex++; } + int activitySupportingPlannerCount = 0; + for (PedagogicalPlannerActivityDTO activityDTO : activities) { + if (activityDTO.getSupportsPlanner()) { + activitySupportingPlannerCount++; + } + } // Set other properties PedagogicalPlannerDTO planner = new PedagogicalPlannerDTO(); planner.setActivitySupportingPlannerCount(activitySupportingPlannerCount); planner.setSequenceTitle(learningDesign.getTitle()); - planner.setActivities(activitites); + planner.setActivities(activities); planner.setSendInPortions(false); planner.setSubmitDelay(5000L); planner.setActivitiesInPortion(2); @@ -351,4 +298,98 @@ + PedagogicalPlannerAction.CHAR_EQUALS + lesson.getLessonId(); return new ActionForward(newPath, true); } + + private PedagogicalPlannerActivityDTO addActivityToPlanner(LearningDesign learningDesign, + List activities, Activity activity) throws ServletException { + boolean isNested = activity.getParentActivity() != null + && (activity.getParentActivity().isBranchingActivity() || activity.isOptionsActivity()); + + PedagogicalPlannerActivityDTO addedDTO = null; + if (activity.isToolActivity()) { + ToolActivity toolActivity = (ToolActivity) activity; + String pedagogicalPlannerUrl = toolActivity.getTool().getPedagogicalPlannerUrl(); + if (pedagogicalPlannerUrl == null) { + addedDTO = new PedagogicalPlannerActivityDTO(toolActivity.getTool().getToolDisplayName(), activity + .getTitle(), false, CentralConstants.PATH_ACTIVITY_NO_PLANNER_SUPPORT, activity + .getLibraryActivityUiImage(), null, null); + } else { + pedagogicalPlannerUrl += pedagogicalPlannerUrl.contains(PedagogicalPlannerAction.CHAR_QUESTION_MARK) ? PedagogicalPlannerAction.CHAR_AMPERSAND + : PedagogicalPlannerAction.CHAR_QUESTION_MARK; + pedagogicalPlannerUrl += AttributeNames.PARAM_TOOL_CONTENT_ID + PedagogicalPlannerAction.CHAR_EQUALS + + toolActivity.getToolContentId(); + addedDTO = new PedagogicalPlannerActivityDTO(toolActivity.getTool().getToolDisplayName(), activity + .getTitle(), true, pedagogicalPlannerUrl + PedagogicalPlannerAction.CHAR_AMPERSAND + + AttributeNames.PARAM_CONTENT_FOLDER_ID + PedagogicalPlannerAction.CHAR_EQUALS + + learningDesign.getContentFolderID(), activity.getLibraryActivityUiImage(), + pedagogicalPlannerUrl + PedagogicalPlannerAction.CHAR_AMPERSAND + AttributeNames.PARAM_COMMAND + + PedagogicalPlannerAction.CHAR_EQUALS + AttributeNames.COMMAND_CHECK_EDITING_ADVICE + + PedagogicalPlannerAction.CHAR_AMPERSAND + AttributeNames.PARAM_ACTIVITY_INDEX + + PedagogicalPlannerAction.CHAR_EQUALS + (activities.size() + 1), pedagogicalPlannerUrl + + PedagogicalPlannerAction.CHAR_AMPERSAND + AttributeNames.PARAM_COMMAND + + PedagogicalPlannerAction.CHAR_EQUALS + AttributeNames.COMMAND_GET_EDITING_ADVICE); + } + activities.add(addedDTO); + } else if (activity.isGroupingActivity()) { + GroupingActivity groupingActivity = (GroupingActivity) activity; + addedDTO = new PedagogicalPlannerActivityDTO(null, activity.getTitle(), true, groupingActivity + .getSystemTool().getPedagogicalPlannerUrl() + + PedagogicalPlannerAction.CHAR_AMPERSAND + + AttributeNames.PARAM_TOOL_CONTENT_ID + + PedagogicalPlannerAction.CHAR_EQUALS + groupingActivity.getCreateGrouping().getGroupingId(), + CentralConstants.IMAGE_PATH_GROUPING, null, null); + activities.add(addedDTO); + } else if (activity.isGateActivity()) { + addedDTO = new PedagogicalPlannerActivityDTO(null, activity.getTitle(), false, + CentralConstants.PATH_ACTIVITY_NO_PLANNER_SUPPORT, CentralConstants.IMAGE_PATH_GATE, null, null); + activities.add(addedDTO); + } else if (activity.isBranchingActivity()) { + if (isNested) { + throw new ServletException( + "Nested branching or optional activities are not allowed in Pedagogical Planner."); + } + BranchingActivity branchingActivity = (BranchingActivity) activity; + SequenceActivity defaultSequence = (SequenceActivity) branchingActivity.getDefaultActivity(); + Set sequenceActivities = branchingActivity.getActivities(); + short branch = 1; + for (SequenceActivity sequenceActivity : sequenceActivities) { + if (branch > 4) { + throw new ServletException( + "Number of branches in branching activity is limited to 4 in Pedagogical Planner."); + } + Activity nestedActivity = sequenceActivity.getDefaultActivity(); + boolean defaultBranch = sequenceActivity.equals(defaultSequence); + if (nestedActivity == null) { + String path = CentralConstants.PATH_ACTIVITY_NO_PLANNER_SUPPORT + + PedagogicalPlannerAction.CHAR_QUESTION_MARK + CentralConstants.PARAM_FORM_MESSAGE + + PedagogicalPlannerAction.CHAR_EQUALS + + getMessageService().getMessage(CentralConstants.RESOURCE_KEY_BRANCH_EMPTY); + addedDTO = new PedagogicalPlannerActivityDTO(null, null, false, path, null, null, null); + addedDTO.setParentActivityTitle(activity.getTitle()); + addedDTO.setBranch(branch); + addedDTO.setDefaultBranch(defaultBranch); + activities.add(addedDTO); + } else { + do { + addedDTO = addActivityToPlanner(learningDesign, activities, nestedActivity); + Transition transitionTo = nestedActivity.getTransitionTo(); + if (transitionTo == null) { + nestedActivity = null; + } else { + nestedActivity = transitionTo.getToActivity(); + } + addedDTO.setParentActivityTitle(activity.getTitle()); + addedDTO.setBranch(branch); + addedDTO.setDefaultBranch(defaultBranch); + } while (nestedActivity != null); + } + branch++; + } + addedDTO.setLastNestedActivity(true); + } else { + addedDTO = new PedagogicalPlannerActivityDTO(null, activity.getTitle(), false, + CentralConstants.PATH_ACTIVITY_NO_PLANNER_SUPPORT, activity.getLibraryActivityUiImage(), null, null); + activities.add(addedDTO); + } + return addedDTO; + } } \ No newline at end of file Index: lams_central/web/css/pedagogicalPlanner.css =================================================================== diff -u -re66bdae723516ab13d4a6f81e5f598018f6dbe58 -r4c44f72d085bca8627b2858fd30b99bc5c2056a4 --- lams_central/web/css/pedagogicalPlanner.css (.../pedagogicalPlanner.css) (revision e66bdae723516ab13d4a6f81e5f598018f6dbe58) +++ lams_central/web/css/pedagogicalPlanner.css (.../pedagogicalPlanner.css) (revision 4c44f72d085bca8627b2858fd30b99bc5c2056a4) @@ -65,4 +65,53 @@ display: none; font-size: smaller; margin: 0px 0px 0px 500px; +} + +td.branchingFirstActivity{ + border-bottom: thick blue solid; + text-align: center; +} + +td.branchingLastActivity{ + border-bottom: thick blue solid; +} + +td.branch1{ + border-right: thick yellow solid; + border-left: thick blue solid; +} + +td.branch2{ + border-right: thick orange solid; + border-left: thick blue solid; +} + +td.branch3{ + border-right: thick red solid; + border-left: thick blue solid; +} + +td.branch4{ + border-right: thick purple solid; + border-left: thick blue solid; +} + +h3.branch1{ + color: #F1CD03; + text-decoration: underline; +} + +h3.branch2{ + color: orange; + text-decoration: underline; +} + +h3.branch3{ + color: red; + text-decoration: underline; +} + +h3.branch4{ + color: purple; + text-decoration: underline; } \ No newline at end of file Index: lams_central/web/pedagogical_planner/base.jsp =================================================================== diff -u -re66bdae723516ab13d4a6f81e5f598018f6dbe58 -r4c44f72d085bca8627b2858fd30b99bc5c2056a4 --- lams_central/web/pedagogical_planner/base.jsp (.../base.jsp) (revision e66bdae723516ab13d4a6f81e5f598018f6dbe58) +++ lams_central/web/pedagogical_planner/base.jsp (.../base.jsp) (revision 4c44f72d085bca8627b2858fd30b99bc5c2056a4) @@ -96,11 +96,40 @@ + + + + + + + + - - -
+

${lastParentActivityTitle}

+
- ${activity.type}
+
+ branch${activity.branch} + + + branchingLastActivity + + "> + + +

${lastBranch} + +
+
+

+
+ + ${activity.type}
+
+ + @@ -112,10 +141,15 @@ - -

${activity.title}

+ +

${activity.title}

+
+ + branchingLastActivity + + "> @@ -128,7 +162,16 @@
+ + branch${activity.branch} + + " + + style="padding-top: 5px;" + + > + Index: lams_central/web/pedagogical_planner/defaultForm.jsp =================================================================== diff -u -r05db875c7974d705f89231416ff6dfe91a5e70f1 -r4c44f72d085bca8627b2858fd30b99bc5c2056a4 --- lams_central/web/pedagogical_planner/defaultForm.jsp (.../defaultForm.jsp) (revision 05db875c7974d705f89231416ff6dfe91a5e70f1) +++ lams_central/web/pedagogical_planner/defaultForm.jsp (.../defaultForm.jsp) (revision 4c44f72d085bca8627b2858fd30b99bc5c2056a4) @@ -5,13 +5,23 @@ <%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %> <%@ taglib uri="tags-lams" prefix="lams" %> <%@ taglib uri="tags-fmt" prefix="fmt" %> +<%@ taglib uri="tags-core" prefix="c" %> - +
-

+

+ + + + + + ${param.formMessage} + + +

\ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java =================================================================== diff -u -re66bdae723516ab13d4a6f81e5f598018f6dbe58 -r4c44f72d085bca8627b2858fd30b99bc5c2056a4 --- lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java (.../AttributeNames.java) (revision e66bdae723516ab13d4a6f81e5f598018f6dbe58) +++ lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java (.../AttributeNames.java) (revision 4c44f72d085bca8627b2858fd30b99bc5c2056a4) @@ -86,5 +86,5 @@ public static final String PARAM_COMMAND = "command"; public static final String COMMAND_GET_EDITING_ADVICE = "getEditingAdvice"; public static final String COMMAND_CHECK_EDITING_ADVICE = "checkEditingAdvice"; - public static final String PARAM_ACTIVITY_INDEX = "activityNumber"; + public static final String PARAM_ACTIVITY_INDEX = "activityIndex"; }