Index: lams_central/conf/language/lams/ApplicationResources.properties
===================================================================
diff -u -r4c51f9c8b6fab7efa4d5296f1ee60c1c3bd207e5 -rdae7eeb158338a956aaec37705b0c1efb18be6f6
--- lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 4c51f9c8b6fab7efa4d5296f1ee60c1c3bd207e5)
+++ lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision dae7eeb158338a956aaec37705b0c1efb18be6f6)
@@ -761,7 +761,7 @@
authoring.label.peerrevice.min.words.in.comments =Minimum number of words in a comment
authoring.create.criteria =Create Criteria
audit.design.created =Learning design "{0}" ({1}) created by {2} ({3})
-authoring.fla.save.successful.check.grouping =Your design is valid and has been saved.\\nYou may want to make all activities grouped, please verify.
+authoring.fla.save.successful.check.grouping =Your design is valid and has been saved.\\nIf this is a TBL sequence, you may want to make following activities grouped:
authoring.fla.weights.none =No activities with weightable gradebook output
#====== Templates
Index: lams_central/web/includes/javascript/authoring/authoringGeneral.js
===================================================================
diff -u -r51c6e431368c11396aafddf0e3b37c92da2f5edc -rdae7eeb158338a956aaec37705b0c1efb18be6f6
--- lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision 51c6e431368c11396aafddf0e3b37c92da2f5edc)
+++ lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision dae7eeb158338a956aaec37705b0c1efb18be6f6)
@@ -1530,45 +1530,75 @@
* there is a good chance this is a TBL sequence and all activities must be grouped.
*/
checkTBLGrouping : function(){
- var firstGroupingActivity = null;
+ var firstActivity = null,
+ activities = [];
+ // find first activity in the sequence
+ // it can be wrong if not all activities are connected
$.each(layout.activities, function(){
- if (this instanceof ActivityDefs.GroupingActivity && this.transitions
- && this.transitions.to.length === 0 && this.transitions.from.length > 0){
- firstGroupingActivity = this;
+ if (this.transitions && this.transitions.to.length === 0 && this.transitions.from.length > 0){
+ firstActivity = this;
return false;
}
});
+ if (!firstActivity) {
+ return null;
+ }
+ // the first activity can be grouping or the second one
+ var firstGroupingActivity = firstActivity instanceof ActivityDefs.GroupingActivity ? firstActivity : null;
if (!firstGroupingActivity) {
- return true;
+ firstGroupingActivity = firstActivity.transitions.from[0].toActivity;
+ if (!(firstGroupingActivity instanceof ActivityDefs.GroupingActivity)){
+ return null;
+ }
}
- var secondActivity = firstGroupingActivity.transitions.from.length > 0 ? firstGroupingActivity.transitions.from[0].toActivity : null;
- var templateContainer = $('#templateContainerCell');
- var isTBL = secondActivity instanceof ActivityDefs.ToolActivity
+
+ // then it is Assessment or MCQ
+ var secondActivity = firstGroupingActivity.transitions.from.length > 0 ? firstGroupingActivity.transitions.from[0].toActivity : null,
+ templateContainer = $('#templateContainerCell'),
+ isTBL = secondActivity instanceof ActivityDefs.ToolActivity
&& (secondActivity.learningLibraryID == $('.template[learningLibraryTitle="Assessment"]', templateContainer).attr('learningLibraryId')
|| secondActivity.learningLibraryID == $('.template[learningLibraryTitle="MCQ"]', templateContainer).attr('learningLibraryId'));
if (!isTBL){
- return true;
+ return null;
}
+ activities.push(secondActivity);
+ // then leader selection
var thirdActivity = secondActivity.transitions.from.length > 0 ? secondActivity.transitions.from[0].toActivity : null;
isTBL = thirdActivity instanceof ActivityDefs.ToolActivity
&& thirdActivity.learningLibraryID == $('.template[learningLibraryTitle="Leaderselection"]', templateContainer).attr('learningLibraryId');
if (!isTBL){
- return true;
+ return null;
}
+ activities.push(thirdActivity);
+ // then scratchie
var fourthActivity = thirdActivity.transitions.from.length > 0 ? thirdActivity.transitions.from[0].toActivity : null;
isTBL = fourthActivity instanceof ActivityDefs.ToolActivity
&& fourthActivity.learningLibraryID == $('.template[learningLibraryTitle="Scratchie"]', templateContainer).attr('learningLibraryId');
if (!isTBL){
- return true;
+ return null;
}
- var result = true;
- $.each(layout.activities, function(){
- if (this != firstGroupingActivity && this instanceof ActivityDefs.ToolActivity && !this.grouping){
- result = false;
- return false;
+ activities.push(fourthActivity);
+
+ // then optional assessments
+ var nextActivity = fourthActivity;
+ do {
+ nextActivity = nextActivity.transitions.from.length > 0 ? nextActivity.transitions.from[0].toActivity : null;
+ if (nextActivity instanceof ActivityDefs.ToolActivity
+ && nextActivity.learningLibraryID == $('.template[learningLibraryTitle="Assessment"]', templateContainer).attr('learningLibraryId')) {
+ activities.push(nextActivity);
+ } else {
+ nextActivity = null;
}
- });
- return result;
+ } while (nextActivity);
+
+ // check which ones are not grouped
+ var activitiesToGroup = [];
+ for (var activity of activities) {
+ if (!activity.grouping){
+ activitiesToGroup.push(activity);
+ }
+ }
+ return activitiesToGroup.length === 0 ? null : activitiesToGroup;
},
/**
@@ -2783,13 +2813,19 @@
GeneralLib.setModified(false);
// close the Live Edit dialog
- if (GeneralLib.checkTBLGrouping()) {
+ var missingGroupingOnActivities = GeneralLib.checkTBLGrouping();
+ if (missingGroupingOnActivities) {
+ var info = LABELS.SAVE_SUCCESSFUL_CHECK_GROUPING;
+ for (var activity of missingGroupingOnActivities){
+ info += '
* ' + activity.title;
+ }
+ layout.infoDialog.data('show')(info);
+
+ } else {
layout.infoDialog.data('show')(LABELS.LIVEEDIT_SAVE_SUCCESSFUL, true);
setTimeout(function(){
window.parent.closeDialog('dialogAuthoring');
}, 5000);
- } else {
- layout.infoDialog.data('show')(LABELS.SAVE_SUCCESSFUL_CHECK_GROUPING);
}
}
});
@@ -2804,10 +2840,16 @@
}
if (!layout.ld.invalid) {
- if (GeneralLib.checkTBLGrouping()) {
- layout.infoDialog.data('show')(LABELS.SAVE_SUCCESSFUL, true);
+ var missingGroupingOnActivities = GeneralLib.checkTBLGrouping();
+ if (missingGroupingOnActivities) {
+ var info = LABELS.SAVE_SUCCESSFUL_CHECK_GROUPING;
+ for (var activity of missingGroupingOnActivities){
+ info += '
* ' + activity.title;
+ }
+ layout.infoDialog.data('show')(info);
+
} else {
- layout.infoDialog.data('show')(LABELS.SAVE_SUCCESSFUL_CHECK_GROUPING);
+ layout.infoDialog.data('show')(LABELS.SAVE_SUCCESSFUL, true);
}
}