-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
- |
-
-
- |
-
-
-
-
-
-
-
- Title |
- |
-
-
- Description |
-
-
- |
-
-
-
-
-
-
+
+
+ |
+
+
+
+ Untitled
+
+
+
+ Description:
+ (click to hide)
+
+
+
+
+
+
+
+ |
+
+
Index: lams_central/web/css/authoring.css
===================================================================
diff -u -r88e98be30293b57a81d4a8a6e5cdaf5c62e97883 -rdec21a402fc7b42adcf84c15b644228d46a140c7
--- lams_central/web/css/authoring.css (.../authoring.css) (revision 88e98be30293b57a81d4a8a6e5cdaf5c62e97883)
+++ lams_central/web/css/authoring.css (.../authoring.css) (revision dec21a402fc7b42adcf84c15b644228d46a140c7)
@@ -168,43 +168,8 @@
/**** Main authoring styles ****/
-#tabs {
- padding: 0;
- border: none;
- font-size: 12px;
-}
-
-#tabs .ui-tabs-panel {
- padding: 0;
- height: 718px;
-}
-
-#tabs .tabs-spacer {
- float: left;
- height: 200px;
-}
-
-#tabs .ui-tabs-nav {
- clear: left;
- padding: 0 .2em .2em .2em;
- background: none;
- border: none;
-}
-
-#tabs .ui-tabs-nav li {
- top: auto;
- bottom: 0;
- border: 1px solid #C5DBEC;
- border-top: 0;
-}
-
-#tabs .ui-tabs-nav li.ui-tabs-active {
- margin-top: 0;
- padding-top: 0;
-}
-
-
div#toolbar {
+ width: 1003px;
padding: 3px;
height: 27px;
}
@@ -233,7 +198,7 @@
}
table#authoringTable {
- table-layout: fixed;
+ table-layout: fixedf;
width: 100%;
}
@@ -250,7 +215,7 @@
}
div#templateContainer {
- height: 711px;
+ height: 720px;
overflow: auto;
}
@@ -272,23 +237,42 @@
font-family: serif;
}
-#canvas {
- overflow: auto;
- width: 844px;
- height: 711px;
- vertical-align: top;
+#ldDescriptionDiv {
+ background-color: rgb(219, 230, 252);
+ text-align: center;
+ z-index: 1099;
}
+#ldDescriptionDiv #ldDescriptionTitleContainer {
+ font-size: 10pt;
+ font-family: serif;
+ cursor: pointer;
+}
-#tabDescription > table {
- margin: auto;
- padding-top: 180px;
+#ldDescriptionDiv #ldDescriptionHideTip {
+ display: none;
+ float: right;
+ margin-right: 10px;
+ cursor: pointer;
}
-.ldDescriptionCell {
- padding: 0 0 30px 20px;
+#ldDescriptionDiv #ldDescriptionDetails {
+ display: none;
}
-td.ldDescriptionLabel {
- font-weight: bold;
+#ldDescriptionDiv #ldDescriptionLabelDescription {
+ text-align: left;
+ font-size: 10pt;
+ font-family: serif;
+}
+
+#ldDescriptionDiv #ldDescriptionEditorContainer {
+ margin-top: -15px;
+}
+
+#canvas {
+ overflow: auto;
+ width: 844px;
+ height: 720px;
+ vertical-align: top;
}
\ No newline at end of file
Index: lams_central/web/includes/javascript/authoring/authoringActivity.js
===================================================================
diff -u -r88e98be30293b57a81d4a8a6e5cdaf5c62e97883 -rdec21a402fc7b42adcf84c15b644228d46a140c7
--- lams_central/web/includes/javascript/authoring/authoringActivity.js (.../authoringActivity.js) (revision 88e98be30293b57a81d4a8a6e5cdaf5c62e97883)
+++ lams_central/web/includes/javascript/authoring/authoringActivity.js (.../authoringActivity.js) (revision dec21a402fc7b42adcf84c15b644228d46a140c7)
@@ -673,6 +673,7 @@
fromActivity.branchingActivity.branches.push(branch);
}
+ setModified(true);
return transition;
},
@@ -694,6 +695,7 @@
}
transition.items.remove();
+ setModified(true);
},
@@ -748,6 +750,7 @@
ActivityLib.addTransition(branchingEdgeStart, toActivity1);
ActivityLib.addTransition(convergeActivity1, branchingEdgeEnd);
+ setModified(true);
},
@@ -935,6 +938,8 @@
// redraw all annotation regions so they are pushed to back
this.draw();
});
+
+ setModified(true);
},
@@ -982,6 +987,7 @@
window.open(activity.authorURL, 'activityAuthoring' + activity.id,
"HEIGHT=800,WIDTH=1024,resizable=yes,scrollbars=yes,status=false," +
"menubar=no,toolbar=no");
+ setModified(true);
}
},
Index: lams_central/web/includes/javascript/authoring/authoringDecoration.js
===================================================================
diff -u -r0144e9d0f7fc574a887933024183a8a9049bc414 -rdec21a402fc7b42adcf84c15b644228d46a140c7
--- lams_central/web/includes/javascript/authoring/authoringDecoration.js (.../authoringDecoration.js) (revision 0144e9d0f7fc574a887933024183a8a9049bc414)
+++ lams_central/web/includes/javascript/authoring/authoringDecoration.js (.../authoringDecoration.js) (revision dec21a402fc7b42adcf84c15b644228d46a140c7)
@@ -191,13 +191,15 @@
var region = new DecorationLib.Region(null, null,
x, y, x2, y2, title, color ? color : layout.colors.annotation);
layout.regions.push(region);
+ setModified(true);
return region;
},
removeRegion : function(region) {
layout.regions.splice(layout.regions.indexOf(region), 1);
region.items.remove();
+ setModified(true);
},
@@ -228,13 +230,15 @@
addLabel : function(x, y, title) {
var label = new DecorationLib.Label(null, null, x, y, title);
layout.labels.push(label);
+ setModified(true);
return label;
},
removeLabel : function(label) {
layout.labels.splice(layout.labels.indexOf(label), 1);
label.items.remove();
+ setModified(true);
}
};
Index: lams_central/web/includes/javascript/authoring/authoringGeneral.js
===================================================================
diff -u -r1ab5b0aabad85e5cee0203bd43e0da1c83f69fb9 -rdec21a402fc7b42adcf84c15b644228d46a140c7
--- lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision 1ab5b0aabad85e5cee0203bd43e0da1c83f69fb9)
+++ lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision dec21a402fc7b42adcf84c15b644228d46a140c7)
@@ -9,6 +9,7 @@
// configuration and storage of various elements
layout = {
'drawMode' : false,
+ 'modified' : false,
// 'isZoomed' : false,
'activities' : null,
'floatingActivity' : null,
@@ -80,19 +81,21 @@
*/
$(document).ready(function() {
canvas = $('#canvas');
- MenuLib.newLearningDesign(true, true);
- layout.ld.contentFolderID = initContentFolderID;
initLayout();
initTemplates();
PropertyLib.init();
MenuLib.init();
+ MenuLib.newLearningDesign(true, true);
+ layout.ld.contentFolderID = initContentFolderID;
+
window.onbeforeunload = function(){
- if (layout.activities.length > 0
+ if (layout.modified &&
+ (layout.activities.length > 0
|| layout.regions.length > 0
|| layout.labels.length > 0
- || layout.floatingActivity) {
+ || layout.floatingActivity)) {
return 'Your design is not saved.\nAny changes you made since you last saved will be lost.';
}
};
@@ -205,7 +208,7 @@
activity = new ActivityLib.ToolActivity(null, null, null, learningLibraryID, x, y, label);
}
- layout.activities.push(activity);
+ layout.activities.push(activity);
ActivityLib.dropActivity(activity, eventX, eventY);
}
});
@@ -829,6 +832,8 @@
HandlerLib.resetCanvasMode(true);
}
}
+
+ setModified(false);
}
});
}
@@ -1209,6 +1214,7 @@
});
});
+ setModified(false);
alert('Congratulations! Your design is valid and has been saved.');
result = true;
} else {
@@ -1251,4 +1257,17 @@
layout.items.bin = paper.path(binPath);
HandlerLib.resetCanvasMode(true);
+}
+
+function setModified(modified) {
+ layout.modified = modified;
+ if (modified) {
+ $('#previewButton').attr('disabled', 'disabled')
+ .button('option', 'disabled', true);
+ $('#ldDescriptionFieldModified').text('*');
+ } else {
+ $('#previewButton').attr('disabled', null)
+ .button('option', 'disabled', false);
+ $('#ldDescriptionFieldModified').text('');
+ }
}
\ No newline at end of file
Index: lams_central/web/includes/javascript/authoring/authoringHandler.js
===================================================================
diff -u -r9fb16007bc803d29180994effaed30ebb0a2e561 -rdec21a402fc7b42adcf84c15b644228d46a140c7
--- lams_central/web/includes/javascript/authoring/authoringHandler.js (.../authoringHandler.js) (revision 9fb16007bc803d29180994effaed30ebb0a2e561)
+++ lams_central/web/includes/javascript/authoring/authoringHandler.js (.../authoringHandler.js) (revision dec21a402fc7b42adcf84c15b644228d46a140c7)
@@ -17,7 +17,7 @@
.off('click')
.off('mousedown')
.off('mouseup')
- .off('mousemove')
+ .off('mousemove');
if (init) {
// if clicked anywhere, activity selection is gone
@@ -134,6 +134,8 @@
// for canvas, not the dragged elements
canvas.mouseup(mouseup);
items.mouseup(mouseup);
+
+ setModified(true);
}, layout.conf.dragStartThreshold);
},
@@ -331,6 +333,8 @@
HandlerLib.resetCanvasMode(true);
ActivityLib.addSelectEffect(region, true);
});
+
+ setModified(true);
},
Index: lams_central/web/includes/javascript/authoring/authoringMenu.js
===================================================================
diff -u -r1ab5b0aabad85e5cee0203bd43e0da1c83f69fb9 -rdec21a402fc7b42adcf84c15b644228d46a140c7
--- lams_central/web/includes/javascript/authoring/authoringMenu.js (.../authoringMenu.js) (revision 1ab5b0aabad85e5cee0203bd43e0da1c83f69fb9)
+++ lams_central/web/includes/javascript/authoring/authoringMenu.js (.../authoringMenu.js) (revision dec21a402fc7b42adcf84c15b644228d46a140c7)
@@ -67,6 +67,8 @@
dialog.text('');
dialog.dialog('close');
+
+ setModified(true);
} else {
// extract main branchingActivity structure from created start point
branchingActivity = branchingEdge.branchingActivity;
@@ -92,6 +94,7 @@
layout.activities.push(new ActivityLib.GroupingActivity(null, null, x, y));
+ setModified(true);
HandlerLib.resetCanvasMode(true);
});
},
@@ -165,6 +168,7 @@
x = translatedEvent[0],
y = translatedEvent[1];
+ setModified(true);
HandlerLib.resetCanvasMode(true);
layout.activities.push(new ActivityLib.OptionalActivity(null, null, x, y));
@@ -194,6 +198,7 @@
x = translatedEvent[0],
y = translatedEvent[1];
+ setModified(true);
HandlerLib.resetCanvasMode(true);
// do not add it to layout.activities as it behaves differently
@@ -247,6 +252,7 @@
layout.activities.push(new ActivityLib.GateActivity(null, null, x, y));
+ setModified(true);
HandlerLib.resetCanvasMode(true);
});
},
@@ -650,6 +656,8 @@
ActivityLib.addTransition(this.fromActivity, this.toActivity, true);
});
});
+
+ setModified(true);
},
@@ -660,14 +668,17 @@
// force means that user should not be asked for confirmation.
if (!force && (layout.activities.length > 0
|| layout.regions.length > 0
- || layout.labels.length > 0)
+ || layout.labels.length > 0
+ || layout.floatingActivity)
&& !confirm('Are you sure you want to remove all existing elements?')){
return;
}
+ $('#ldDescriptionDetails').slideUp();
+
// soft means that data is manually reset, instead of simply reloading the page.
if (soft) {
- $('#ldDescriptionFieldTitle').text('');
+ $('#ldDescriptionFieldTitle').text('Untitled');
CKEDITOR.instances['ldDescriptionFieldDescription'].setData(null);
layout.ld = {
@@ -677,6 +688,7 @@
layout.regions = [];
layout.labels = [];
layout.floatingActivity = null;
+ setModified(true);
if (paper) {
paper.clear();
@@ -753,6 +765,59 @@
newActivity.grouping = activity.grouping;
newActivity.draw();
}
+
+ setModified(true);
+ },
+
+
+ openPreview : function(){
+ if (layout.modified) {
+ // disabling the button does not do the trick, so we have to check it here
+ return;
+ }
+
+ // initialize, create and enter the preview lesson
+ $.ajax({
+ url : LAMS_URL + 'monitoring/monitoring.do',
+ data : {
+ 'method' : 'initializeLesson',
+ 'learningDesignID' : layout.ld.learningDesignID,
+ 'copyType' : 3,
+ 'lessonName' : 'Preview'
+ },
+ cache : false,
+ dataType : 'text',
+ success : function(lessonID) {
+ if (!lessonID) {
+ alert('Error while initialising lesson for preview');
+ return;
+ }
+
+ $.ajax({
+ url : LAMS_URL + 'monitoring/monitoring.do',
+ data : {
+ 'method' : 'startPreviewLesson',
+ 'lessonID' : lessonID
+ },
+ cache : false,
+ dataType : 'text',
+ success : function() {
+ // open preview pop up window
+ window.open(LAMS_URL + 'home.do?method=learner&mode=preview&lessonID='+lessonID,'Preview',
+ 'width=920,height=700,resizable,status=yes');
+ }
+ });
+
+ }
+ });
+ },
+
+
+ toggleDescriptionDiv: function() {
+ $('#ldDescriptionDetails').slideToggle(function(){
+ ldDescriptionHideTip
+ });
+ $('#ldDescriptionHideTip').toggle();
}
/*
Index: lams_central/web/includes/javascript/authoring/authoringProperty.js
===================================================================
diff -u -r88e98be30293b57a81d4a8a6e5cdaf5c62e97883 -rdec21a402fc7b42adcf84c15b644228d46a140c7
--- lams_central/web/includes/javascript/authoring/authoringProperty.js (.../authoringProperty.js) (revision 88e98be30293b57a81d4a8a6e5cdaf5c62e97883)
+++ lams_central/web/includes/javascript/authoring/authoringProperty.js (.../authoringProperty.js) (revision dec21a402fc7b42adcf84c15b644228d46a140c7)
@@ -114,6 +114,8 @@
});
dialog.dialog('close');
+
+ setModified(true);
}
},
{
@@ -171,6 +173,7 @@
if (redrawNeeded) {
transition.draw();
ActivityLib.addSelectEffect(activity, true);
+ setModified(true);
}
});
}
@@ -216,6 +219,7 @@
if (redrawNeeded) {
activity.draw();
ActivityLib.addSelectEffect(activity, true);
+ setModified(true);
}
});
}
@@ -274,6 +278,8 @@
activity.draw();
ActivityLib.addSelectEffect(activity, true);
}
+
+ setModified(true);
};
// first run, create the content
@@ -353,6 +359,8 @@
activity.draw();
ActivityLib.addSelectEffect(activity, true);
}
+
+ setModified(true);
};
// create groups/learners spinners
@@ -452,6 +460,8 @@
branchingActivity.end.draw();
ActivityLib.addSelectEffect(layout.items.selectedObject, true);
}
+
+ setModified(true);
}
$('input, select', content).change(changeFunction);
@@ -496,6 +506,7 @@
if (redrawNeeded) {
activity.draw();
ActivityLib.addSelectEffect(activity, true);
+ setModified(true);
}
});
}
@@ -529,6 +540,7 @@
activity.title = newTitle;
activity.draw();
ActivityLib.addSelectEffect(activity, true);
+ setModified(true);
}
});
@@ -606,6 +618,7 @@
if (redrawNeeded) {
region.draw(null, null, null, null, newColor);
ActivityLib.addSelectEffect(region, true);
+ setModified(true);
}
});
}
@@ -640,6 +653,7 @@
if (redrawNeeded) {
label.draw();
ActivityLib.addSelectEffect(label, true);
+ setModified(true);
}
});
}
Index: lams_central/web/main.jsp
===================================================================
diff -u -r738c1ec90176394b826038af57ed7afeab3c76d5 -rdec21a402fc7b42adcf84c15b644228d46a140c7
--- lams_central/web/main.jsp (.../main.jsp) (revision 738c1ec90176394b826038af57ed7afeab3c76d5)
+++ lams_central/web/main.jsp (.../main.jsp) (revision dec21a402fc7b42adcf84c15b644228d46a140c7)
@@ -246,7 +246,7 @@