diff --git a/app/assets/javascripts/editor.js b/app/assets/javascripts/editor.js index 3b7d42d6..e0468936 100644 --- a/app/assets/javascripts/editor.js +++ b/app/assets/javascripts/editor.js @@ -1,4 +1,4 @@ -$(document).on('turbolinks:load', function() { +$(document).on('turbolinks:load', function(event) { //Merge all editor components. $.extend( @@ -14,9 +14,12 @@ $(document).on('turbolinks:load', function() { CodeOceanEditorRequestForComments ); - if ($('#editor').isPresent() && CodeOceanEditor) { + if ($('#editor').isPresent() && CodeOceanEditor && event.originalEvent.data.url.endsWith("/implement")) { if (CodeOceanEditor.isBrowserSupported()) { $('#alert').hide(); + // This call will (amon other things) initializeEditors and load the content except for the last line + // It must not be called during page navigation. Otherwise, content will be duplicated! + // Search for insertLines and Turbolinks reload / cache control CodeOceanEditor.initializeEverything(); } } diff --git a/app/assets/javascripts/editor/editor.js.erb b/app/assets/javascripts/editor/editor.js.erb index 2e64ab8e..c3e7ad44 100644 --- a/app/assets/javascripts/editor/editor.js.erb +++ b/app/assets/javascripts/editor/editor.js.erb @@ -879,7 +879,7 @@ var CodeOceanEditor = { this.initializeDeadlines(); CodeOceanEditorTips.initializeEventHandlers(); - window.addEventListener("turbolinks:request-start", this.unloadAutoSave.bind(this)); + window.addEventListener("beforeunload", this.unloadAutoSave.bind(this)); // create autosave when the editor is opened the first time this.autosave(); }