Index: lams_central/web/author2.jsp =================================================================== diff -u -r88e98be30293b57a81d4a8a6e5cdaf5c62e97883 -rdec21a402fc7b42adcf84c15b644228d46a140c7 --- lams_central/web/author2.jsp (.../author2.jsp) (revision 88e98be30293b57a81d4a8a6e5cdaf5c62e97883) +++ lams_central/web/author2.jsp (.../author2.jsp) (revision dec21a402fc7b42adcf84c15b644228d46a140c7) @@ -108,64 +108,55 @@
Arrange
+
+ Preview +
-
- -
- -
- - - + + +
-
- -
- - - -
-
-
+ + + - - -
+
+ +
+ + + +
-
-
-
-
- -
- - - - - - - - - -
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 @@