Index: lams_build/lib/lams/lams.jar
===================================================================
diff -u -rbb726a241f9e92f7eb88ff9c9a844a294446a141 -r287e1d4f1242a8d584f71cab96bfd0365b6855c8
Binary files differ
Index: lams_central/conf/language/lams/ApplicationResources.properties
===================================================================
diff -u -r8f516ec9481b6ab34a5cd5e16fc3effc3115104e -r287e1d4f1242a8d584f71cab96bfd0365b6855c8
--- lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 8f516ec9481b6ab34a5cd5e16fc3effc3115104e)
+++ lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 287e1d4f1242a8d584f71cab96bfd0365b6855c8)
@@ -412,6 +412,7 @@
authoring.fla.course.groups.to.branches.match.dialog.title =Match Course Groups to Branching Groups
authoring.fla.branch.mapping.course.groups.header =Course groups
authoring.fla.branch.mapping.branching.groups.header =Branching groups
+authoring.fla.branch.mapping.ordered.asc =Start with branches mapped to highest ordered answers
label.tab.advanced.field.force.restart =Learners always start from the first activity
label.tab.advanced.field.allow.restart =Learners can restart the lesson
label.verification.code =Verification code
Index: lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java
===================================================================
diff -u -r146c434b9071ee5a83366cc892327193aa8b18b9 -r287e1d4f1242a8d584f71cab96bfd0365b6855c8
--- lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java (.../ObjectExtractor.java) (revision 146c434b9071ee5a83366cc892327193aa8b18b9)
+++ lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java (.../ObjectExtractor.java) (revision 287e1d4f1242a8d584f71cab96bfd0365b6855c8)
@@ -69,6 +69,7 @@
import org.lamsfoundation.lams.learningdesign.SynchGateActivity;
import org.lamsfoundation.lams.learningdesign.SystemGateActivity;
import org.lamsfoundation.lams.learningdesign.ToolActivity;
+import org.lamsfoundation.lams.learningdesign.ToolBranchingActivity;
import org.lamsfoundation.lams.learningdesign.Transition;
import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO;
import org.lamsfoundation.lams.learningdesign.dao.IBranchActivityEntryDAO;
@@ -1151,6 +1152,8 @@
branchingActivity.setSystemTool(getSystemTool(SystemTool.GROUP_BASED_BRANCHING));
} else if (branchingActivity.isToolBranchingActivity()) {
branchingActivity.setSystemTool(getSystemTool(SystemTool.TOOL_BASED_BRANCHING));
+ ((ToolBranchingActivity) branchingActivity).setBranchingOrderedAsc(
+ (Boolean) JsonUtil.opt(activityDetails, AuthoringJsonTags.BRANCHING_ORDERED_ASC));
}
branchingActivity.setStartXcoord(getCoord(activityDetails, AuthoringJsonTags.START_XCOORD));
Index: lams_central/web/authoring/authoring.jsp
===================================================================
diff -u -r8f516ec9481b6ab34a5cd5e16fc3effc3115104e -r287e1d4f1242a8d584f71cab96bfd0365b6855c8
--- lams_central/web/authoring/authoring.jsp (.../authoring.jsp) (revision 8f516ec9481b6ab34a5cd5e16fc3effc3115104e)
+++ lams_central/web/authoring/authoring.jsp (.../authoring.jsp) (revision 287e1d4f1242a8d584f71cab96bfd0365b6855c8)
@@ -616,6 +616,12 @@
Index: lams_central/web/css/_authoring_base.scss
===================================================================
diff -u -r18448ae0a8003d82f840fc3f20af8a0b5d197ba1 -r287e1d4f1242a8d584f71cab96bfd0365b6855c8
--- lams_central/web/css/_authoring_base.scss (.../_authoring_base.scss) (revision 18448ae0a8003d82f840fc3f20af8a0b5d197ba1)
+++ lams_central/web/css/_authoring_base.scss (.../_authoring_base.scss) (revision 287e1d4f1242a8d584f71cab96bfd0365b6855c8)
@@ -344,6 +344,11 @@
cursor: pointer;
}
+div.branchMappingDialog #branchMappingOrderedRow td {
+ text-align: left;
+ padding-top: 5px;
+}
+
div#outputConditionsDialogContents div#complexConditions > div {
font-weight: bold;
margin: 10px 0 0 2px;
Index: lams_central/web/includes/javascript/authoring/authoringActivity.js
===================================================================
diff -u -r5be40944bddd2480de5d58417669a56c4d051680 -r287e1d4f1242a8d584f71cab96bfd0365b6855c8
--- lams_central/web/includes/javascript/authoring/authoringActivity.js (.../authoringActivity.js) (revision 5be40944bddd2480de5d58417669a56c4d051680)
+++ lams_central/web/includes/javascript/authoring/authoringActivity.js (.../authoringActivity.js) (revision 287e1d4f1242a8d584f71cab96bfd0365b6855c8)
@@ -77,11 +77,12 @@
/**
* Represents a set of branches. It is not displayed on canvas, but holds all the vital data.
*/
- BranchingActivity : function(id, uiid, branchingEdgeStart, readOnly) {
+ BranchingActivity : function(id, uiid, branchingEdgeStart, readOnly, orderedAsc) {
this.id = +id || null;
this.uiid = +uiid || ++layout.ld.maxUIID;
this.start = branchingEdgeStart;
this.readOnly = readOnly;
+ this.orderedAsc = orderedAsc;
this.branches = [];
// mapping between groups and branches, if applicable
this.groupsToBranches = [];
Index: lams_central/web/includes/javascript/authoring/authoringGeneral.js
===================================================================
diff -u -r8f28a31b3105724e7edfa8dd2df58cf5a0473d77 -r287e1d4f1242a8d584f71cab96bfd0365b6855c8
--- lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision 8f28a31b3105724e7edfa8dd2df58cf5a0473d77)
+++ lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision 287e1d4f1242a8d584f71cab96bfd0365b6855c8)
@@ -1886,6 +1886,7 @@
// for later reference
activityData.activity = branchingEdge;
activity = branchingEdge.branchingActivity;
+ activity.orderedAsc = activityData.branchingOrderedAsc;
branchingEdge = new ActivityDefs.BranchingEdgeActivity(
null, null,
@@ -2578,6 +2579,7 @@
'minOptions' : activity.minOptions || null,
'maxOptions' : activity.maxOptions || null,
'stopAfterActivity' : activity.stopAfterActivity ? true : false,
+ 'branchingOrderedAsc' : activity.orderedAsc,
'toolActivityUIID' : activity.input ? activity.input.uiid : null,
'gradebookToolOutputDefinitionName' : activity.gradebookToolOutputDefinitionName == ' ' ?
null : activity.gradebookToolOutputDefinitionName,
Index: lams_central/web/includes/javascript/authoring/authoringProperty.js
===================================================================
diff -u -r78f8dc6b716a04f673bb80bc8023436f409be139 -r287e1d4f1242a8d584f71cab96bfd0365b6855c8
--- lams_central/web/includes/javascript/authoring/authoringProperty.js (.../authoringProperty.js) (revision 78f8dc6b716a04f673bb80bc8023436f409be139)
+++ lams_central/web/includes/javascript/authoring/authoringProperty.js (.../authoringProperty.js) (revision 287e1d4f1242a8d584f71cab96bfd0365b6855c8)
@@ -104,6 +104,7 @@
inputDefinitionRows.hide();
}
} else {
+ branchingActivity.orderedAsc = null;
inputRow.hide();
inputDefinitionRows.hide();
}
@@ -1148,7 +1149,7 @@
// build list using conditions from Tool activity output definitions
$.each(output.conditions, function(){
// use an existing mapping or build a new one
- var mappingEntry = mappingEntries[this.conditionId] || {};
+ var mappingEntry = this.conditionId ? (mappingEntries[this.conditionId] || {}) : {};
mappingEntry.condition = {
'name' : this.name,
@@ -1159,8 +1160,8 @@
};
$('').text(this.displayName)
- .data('mappingEntry', mappingEntry)
- .appendTo(list);
+ .appendTo(list)
+ .data('mappingEntry', mappingEntry);
});
}
} else {
@@ -1355,7 +1356,7 @@
assignedToDefault = false,
defaultBranch = isGate ? 'closed' : null,
close = true;
-
+
// see what was mapped
$.each(mappingCopy, function(){
var mappingEntry = this;
@@ -1410,6 +1411,8 @@
if (close) {
activity.conditionsToBranches = mappingCopy;
+ activity.orderedAsc = $('#branchMappingOrderedRow', dialog).is(':visible') ?
+ $('#branchMappingOrderedAscCheckbox', dialog).prop('checked') : null;
GeneralLib.setModified(true);
}
@@ -1638,12 +1641,17 @@
activity.branches, 'title', LABELS.DEFAULT_BRANCH_PREFIX);
}
+ var orderedAsc = null;
$.each(activity.conditionsToBranches, function(){
// see what conditions are already mapped to branches/gate states and which are free
var entry = this,
condition = entry.condition,
conditionElem = $('').click(PropertyLib.selectBranchMappingListItem)
.text(condition.displayName).attr('uiid', entry.uiid);
+ // there are special conditions that tell that this is an ordered branching
+ if (orderedAsc === null && condition.name.startsWith('ordered.answer')){
+ orderedAsc = activity.orderedAsc === null ? true : activity.orderedAsc;
+ }
// is it mapped already?
if (entry.branch && (isGate || activity.branches.indexOf(entry.branch) != -1)) {
@@ -1662,6 +1670,12 @@
}
});
+ if (orderedAsc === null) {
+ $('#branchMappingOrderedRow', dialog).hide();
+ } else {
+ $('#branchMappingOrderedRow', dialog).show().prop('checked', orderedAsc);
+ }
+
// find the default branch
var defaultBranch = isGate ? 'closed' : null;
if (!defaultBranch) {
Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml
===================================================================
diff -u -r664113e5a7f816094b983d8c601e0de4a4b2d19d -r287e1d4f1242a8d584f71cab96bfd0365b6855c8
--- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml (.../Activity.hbm.xml) (revision 664113e5a7f816094b983d8c601e0de4a4b2d19d)
+++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml (.../Activity.hbm.xml) (revision 287e1d4f1242a8d584f71cab96bfd0365b6855c8)
@@ -365,6 +365,7 @@
@hibernate.class
+
Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20180522.sql
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20180522.sql (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20180522.sql (revision 287e1d4f1242a8d584f71cab96bfd0365b6855c8)
@@ -0,0 +1,15 @@
+-- Turn off autocommit, so nothing is committed if there is an error
+SET AUTOCOMMIT = 0;
+SET FOREIGN_KEY_CHECKS=0;
+----------------------Put all sql statements below here-------------------------
+
+-- LDEV-4587 Direction (asc/desc) of ordered branching. NULL means it is non-ordered tool-based branching
+ALTER TABLE lams_learning_activity
+ADD COLUMN branching_ordered_asc TINYINT(1);
+
+----------------------Put all sql statements above here-------------------------
+
+-- If there were no errors, commit and restore autocommit to on
+COMMIT;
+SET AUTOCOMMIT = 1;
+SET FOREIGN_KEY_CHECKS=1;
\ No newline at end of file
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java
===================================================================
diff -u -r51fb2a37254f24bb2a805d4ffd54482c779f43fa -r287e1d4f1242a8d584f71cab96bfd0365b6855c8
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java (.../ToolBranchingActivity.java) (revision 51fb2a37254f24bb2a805d4ffd54482c779f43fa)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java (.../ToolBranchingActivity.java) (revision 287e1d4f1242a8d584f71cab96bfd0365b6855c8)
@@ -35,26 +35,27 @@
/**
* @author Mitchell Seaton
- * @version 2.1
*
- *
*/
public class ToolBranchingActivity extends BranchingActivity implements Serializable {
private static final long serialVersionUID = 8343443197068061495L;
+ private Boolean branchingOrderedAsc;
+
/** full constructor */
public ToolBranchingActivity(Long activityId, Integer id, String description, String title, Integer xcoord,
Integer ycoord, Integer orderId, java.util.Date createDateTime, LearningLibrary learningLibrary,
Activity parentActivity, Activity libraryActivity, Integer parentUIID, LearningDesign learningDesign,
Grouping grouping, Integer activityTypeId, Transition transitionTo, Transition transitionFrom,
String languageFile, Integer startXcoord, Integer startYcoord, Integer endXcoord, Integer endYcoord,
- Boolean stopAfterActivity, Set inputActivities, Set activities, Activity defaultActivity,
- SystemTool systemTool, Set branchActivityEntries) {
+ Boolean stopAfterActivity, Boolean branchingOrderedAsc, Set inputActivities, Set activities,
+ Activity defaultActivity, SystemTool systemTool, Set branchActivityEntries) {
super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary,
parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo,
transitionFrom, languageFile, startXcoord, startYcoord, endXcoord, endYcoord, stopAfterActivity,
inputActivities, activities, defaultActivity, systemTool, branchActivityEntries);
+ this.branchingOrderedAsc = branchingOrderedAsc;
}
/** default constructor */
@@ -83,6 +84,7 @@
ToolBranchingActivity newBranchingActivity = new ToolBranchingActivity();
copyBranchingFields(newBranchingActivity);
+ newBranchingActivity.branchingOrderedAsc = this.branchingOrderedAsc;
copyToNewComplexActivity(newBranchingActivity, uiidOffset);
// Any grouping attached to a teacher chosen branching was either a runtime grouping
@@ -167,4 +169,12 @@
return listOfValidationErrors;
}
+ public Boolean getBranchingOrderedAsc() {
+ return branchingOrderedAsc;
+ }
+
+ public void setBranchingOrderedAsc(Boolean branchingOrderedAsc) {
+ this.branchingOrderedAsc = branchingOrderedAsc;
+ }
+
}
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java
===================================================================
diff -u -r64e6623bc68b11257c7f5d71f3953154f80b6fde -r287e1d4f1242a8d584f71cab96bfd0365b6855c8
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java (.../AuthoringActivityDTO.java) (revision 64e6623bc68b11257c7f5d71f3953154f80b6fde)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java (.../AuthoringActivityDTO.java) (revision 287e1d4f1242a8d584f71cab96bfd0365b6855c8)
@@ -49,6 +49,7 @@
import org.lamsfoundation.lams.learningdesign.SynchGateActivity;
import org.lamsfoundation.lams.learningdesign.SystemGateActivity;
import org.lamsfoundation.lams.learningdesign.ToolActivity;
+import org.lamsfoundation.lams.learningdesign.ToolBranchingActivity;
import org.lamsfoundation.lams.util.HelpUtil;
/**
@@ -258,6 +259,8 @@
private Integer endXCoord;
private Integer endYCoord;
+ private Boolean branchingOrderedAsc;
+
/** Used for I18N the URLS. Does not need to be sent to clients, so no getter exists. */
private String languageCode;
@@ -379,6 +382,9 @@
startYCoord = activity.getStartYcoord();
endXCoord = activity.getEndXcoord();
endYCoord = activity.getEndYcoord();
+ if (activity.isToolBranchingActivity()) {
+ branchingOrderedAsc = ((ToolBranchingActivity) activity).getBranchingOrderedAsc();
+ }
}
private void addFloatingActivityAttributes(FloatingActivity floatingActivity) {
@@ -1204,6 +1210,14 @@
this.startYCoord = startYCoord;
}
+ public Boolean getBranchingOrderedAsc() {
+ return branchingOrderedAsc;
+ }
+
+ public void setBranchingOrderedAsc(Boolean branchingOrderedAsc) {
+ this.branchingOrderedAsc = branchingOrderedAsc;
+ }
+
public String getAdminURL() {
return adminURL;
}
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/BranchingActivityStrategy.java
===================================================================
diff -u -rbb726a241f9e92f7eb88ff9c9a844a294446a141 -r287e1d4f1242a8d584f71cab96bfd0365b6855c8
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/BranchingActivityStrategy.java (.../BranchingActivityStrategy.java) (revision bb726a241f9e92f7eb88ff9c9a844a294446a141)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/BranchingActivityStrategy.java (.../BranchingActivityStrategy.java) (revision 287e1d4f1242a8d584f71cab96bfd0365b6855c8)
@@ -31,6 +31,7 @@
import org.lamsfoundation.lams.learningdesign.ComplexActivity;
import org.lamsfoundation.lams.learningdesign.ContributionTypes;
import org.lamsfoundation.lams.learningdesign.SequenceActivity;
+import org.lamsfoundation.lams.learningdesign.ToolBranchingActivity;
import org.lamsfoundation.lams.lesson.LearnerProgress;
/**
@@ -82,12 +83,14 @@
*/
@Override
public boolean areChildrenCompleted(LearnerProgress learnerProgress) {
- ComplexActivity complexActivity = getComplexActivity();
+ BranchingActivity branchingActivity = (BranchingActivity) getComplexActivity();
boolean isPreview = learnerProgress.getLesson().isPreviewLesson();
- Boolean isOrderedAsc = false;
+ Boolean isOrderedAsc = branchingActivity.isToolBranchingActivity()
+ ? ((ToolBranchingActivity) branchingActivity).getBranchingOrderedAsc()
+ : null;
- if (complexActivity != null && complexActivity.getActivities().size() > 0) {
- for (Iterator i = complexActivity.getActivities().iterator(); i.hasNext();) {
+ if (branchingActivity != null && branchingActivity.getActivities().size() > 0) {
+ for (Iterator i = branchingActivity.getActivities().iterator(); i.hasNext();) {
// we need the real activity, not proxy
SequenceActivity sequenceActivity = (SequenceActivity) activityDAO
.getActivityByActivityId(((Activity) i.next()).getActivityId());
Index: lams_common/src/java/org/lamsfoundation/lams/util/AuthoringJsonTags.java
===================================================================
diff -u -rb9563ea5d850eb1d41d17c9fbbe5d633aafc796c -r287e1d4f1242a8d584f71cab96bfd0365b6855c8
--- lams_common/src/java/org/lamsfoundation/lams/util/AuthoringJsonTags.java (.../AuthoringJsonTags.java) (revision b9563ea5d850eb1d41d17c9fbbe5d633aafc796c)
+++ lams_common/src/java/org/lamsfoundation/lams/util/AuthoringJsonTags.java (.../AuthoringJsonTags.java) (revision 287e1d4f1242a8d584f71cab96bfd0365b6855c8)
@@ -142,6 +142,7 @@
public static final String USER_ID = "userID";
public static final String ORIGINAL_USER_ID = "originalUserID";
public static final String EDIT_OVERRIDE_USER_ID = "editOverrideUserID";
+ public static final String BRANCHING_ORDERED_ASC = "branchingOrderedAsc";
public static final String COPY_TYPE = "copyTypeID";
public static final String CREATION_DATE = "createDateTime";
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java
===================================================================
diff -u -rbb726a241f9e92f7eb88ff9c9a844a294446a141 -r287e1d4f1242a8d584f71cab96bfd0365b6855c8
--- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision bb726a241f9e92f7eb88ff9c9a844a294446a141)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 287e1d4f1242a8d584f71cab96bfd0365b6855c8)
@@ -997,7 +997,7 @@
// Cache the tool output so that we aren't calling it over an over again.
Map toolOutputMap = new HashMap();
Iterator conditionIterator = conditionsMap.keySet().iterator();
- Boolean isOrderedAsc = false;
+ Boolean isOrderedAsc = branchingActivity.getBranchingOrderedAsc();
// map of order chosen by learner -> condition with question and answer uid encoded
Map conditionOrder = isOrderedAsc == null ? null
: isOrderedAsc ? new TreeMap<>() : new TreeMap<>(Collections.reverseOrder());
@@ -1017,7 +1017,7 @@
}
if (toolOutput != null) {
if (isOrderedAsc != null) {
- // put this option's order ID chosen by the learner
+ // put this option's order ID chosen by the learner
conditionOrder.put(toolOutput.getValue().getLong(), condition);
} else if (condition.isMet(toolOutput)) {
matchedBranch = conditionsMap.get(condition);
|