Index: lams_central/conf/language/lams/ApplicationResources.properties
===================================================================
RCS file: /usr/local/cvsroot/lams_central/conf/language/lams/ApplicationResources.properties,v
diff -u -r1.138.2.4 -r1.138.2.5
--- lams_central/conf/language/lams/ApplicationResources.properties 31 Oct 2014 12:54:32 -0000 1.138.2.4
+++ lams_central/conf/language/lams/ApplicationResources.properties 31 Oct 2014 13:46:17 -0000 1.138.2.5
@@ -512,6 +512,7 @@
authoring.fla.paste.error =Sorry, you can not paste this type of activity
authoring.fla.preview.error =Error while initialising lesson for preview
authoring.fla.cross.branching.error =Cross-branching transitions are not allowed
+authoring.fla.end.match.error =: a branch that ends in this branching does not start in it
authoring.fla.ok.button =OK
authoring.fla.cancel.button =Cancel
authoring.fla.clear.all.button =Clear all
Index: lams_central/web/authoring/authoring.jsp
===================================================================
RCS file: /usr/local/cvsroot/lams_central/web/authoring/authoring.jsp,v
diff -u -r1.6.2.5 -r1.6.2.6
--- lams_central/web/authoring/authoring.jsp 31 Oct 2014 12:54:32 -0000 1.6.2.5
+++ lams_central/web/authoring/authoring.jsp 31 Oct 2014 13:46:17 -0000 1.6.2.6
@@ -112,7 +112,9 @@
PASTE_ERROR : '',
PREVIEW_ERROR : '',
CROSS_BRANCHING_ERROR : '',
+ END_MATCH_ERROR : '',
+
// PropertyLib
OK_BUTTON : '',
CANCEL_BUTTON : '',
Index: lams_central/web/includes/javascript/authoring/authoringGeneral.js
===================================================================
RCS file: /usr/local/cvsroot/lams_central/web/includes/javascript/authoring/authoringGeneral.js,v
diff -u -r1.51.2.6 -r1.51.2.7
--- lams_central/web/includes/javascript/authoring/authoringGeneral.js 25 Oct 2014 17:16:52 -0000 1.51.2.6
+++ lams_central/web/includes/javascript/authoring/authoringGeneral.js 31 Oct 2014 13:46:17 -0000 1.51.2.7
@@ -2030,8 +2030,8 @@
$.each(layout.activities, function(){
// add all branch activities for iteration and saving
if (this instanceof ActivityDefs.BranchingEdgeActivity){
+ var branchingActivity = this.branchingActivity;
if (this.isStart){
- var branchingActivity = this.branchingActivity;
branchingActivity.defaultActivityUIID = null;
layoutActivityDefs.push(branchingActivity);
@@ -2078,12 +2078,55 @@
branchingActivity.defaultActivityUIID = branchingActivity.branches[0].uiid;
branchingActivity.branches[0].defaultBranch = true;
}
+ } else {
+ // validate if all branches start and end in the same branching
+ $.each(this.transitions.to, function(){
+ error = true;
+ var activity = this.fromActivity;
+ do {
+ if (activity instanceof ActivityDefs.BranchingEdgeActivity) {
+ if (activity.isStart) {
+ if (branchingActivity == activity.branchingActivity) {
+ // found out that the branch starts in the proper point
+ error = false;
+ break;
+ }
+ // the branch is shared between two branchings
+ // it should have been detected when adding a transition
+ alert(LABELS.CROSS_BRANCHING_ERROR);
+ return false;
+ }
+ // a nested branching encountered when crawling, just jump over it
+ activity = activity.branchingActivity.start;
+ }
+
+ // keep crawling
+ if (activity.transitions && activity.transitions.to.length > 0) {
+ activity = activity.transitions.to[0].fromActivity;
+ } else {
+ activity = null;
+ }
+ } while (activity);
+
+ if (error) {
+ alert(branchingActivity.title + LABELS.END_MATCH_ERROR);
+ return false;
+ }
+ });
+
+ if (error) {
+ return false;
+ }
}
} else {
layoutActivityDefs.push(this);
}
});
+ if (error) {
+ return false;
+ }
+
if (layout.floatingActivity){
layoutActivityDefs.push(layout.floatingActivity);
}